{"version":3,"file":"8841.abb19cdebcc0fa87.js","mappings":"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","names":["i0","maintenanceType_r3","$event","_r1","ctx_r1","selectedItemTypeChanged","PlanningItemSidebarComponent_Conditional_5_For_2_Template","isWide","getSelectedItemType","maintenanceTypes","PlanningItemSidebarComponent","_PlanningItemSidebarComponent","BaseComponent","PlanningItemHelper","isRunItem","this","planningItem","AssertionUtils","isNullOrUndefined","actualEndDate","constructor","planningContext","translate","navigationHelperService","super","createItemMode","MaintenanceType","MAINTENANCE","MACHINE_UNAVAILABLE","KEY_EDIT_OBJECT","ngOnInit","selectedItemChanges","pipe","takeUntil","unSubscribeOnViewDestroy","filter","item","PlanningItem","subscribe","machinesByPlanningItem","draftId","machine","getMaintenanceTypesForMachineType","equipmentKind","itemCreationPlaceholder","obj","getPartialState","Object","keys","getEmptyDataOfPlanningItemSidebarForNavigationHelper","onNavigationHelperDestroy","savePartialState","closeMachineDetail","selectItem","getFormTitle","instant","object","Maintenance","maintenanceType","name","canBeInRun","getItemName","run","toLowerCase","event","includes","value","updateItemCreatePlaceholderToMaintenance","updateItemCreatePlaceholderToRun","PlanningItemFactory","createRunForMachine","sequenceNumber","earliestStartDate","minimumDuration","type","i1","i2","i3","selectors","hostVars","hostBindings","rf","ctx","PlanningItemSidebarComponent_Conditional_5_Template","PlanningItemSidebarComponent_Conditional_6_Template","PlanningItemSidebarComponent_Conditional_7_Template","PlanningItemSidebarComponent_Conditional_8_Template","PlanningItemSidebarComponent_Conditional_9_Template","startsWith","ctx_r0","parentRun","creel","quality","placeholder","_r2","delete","FixedSchedulePlaceholderSidebarComponent_Conditional_38_Conditional_1_Template","actualStartDate","FixedSchedulePlaceholderSidebarComponent","_FixedSchedulePlaceholderSidebarComponent","parent","DURATION_FORMAT_STRING","DURATION_FORMAT_OPTIONS","trim","computed","forecast","sortedPlanningItemForecasts","toSignal","FixedSchedulePlaceholder","planningLinesByMachine","id","planningItems","find","getDuration","end","moment","duration","diff","format","decls","vars","consts","template","FixedSchedulePlaceholderSidebarComponent_p_11_Template","FixedSchedulePlaceholderSidebarComponent_p_16_Template","FixedSchedulePlaceholderSidebarComponent_p_28_Template","FixedSchedulePlaceholderSidebarComponent_ng_template_36_Template","FixedSchedulePlaceholderSidebarComponent_Conditional_38_Template","_c0","notApplicable_r3","tmp_10_0","undefined","estimatedStart","tmp_15_0","estimatedEnd","estimatedEndDate","fixedSchedule","productionOrder","schedule_r2","FixedSchedulesSidebarComponent_For_6_ng_template_0_Template","$implicit","dragTemplate_r3","ctx_r3","onDragStart","FixedSchedulesSidebarComponent","_FixedSchedulesSidebarComponent","inject","PlanningPrototypeContextService","planningDragDrop","PlanningItemDragDropService","viewContainer","ViewContainerRef","nameFilter","signal","filteredFixedSchedules","fixedSchedulesToPlan","x","schedule","set","FixedSchedulesSidebarComponent_For_6_Template","distinctUntilKeyChanged","key","compare","distinctUntilChanged","y","activeQuality","activeCreel","activeWeaveProduct","activeTuftProduct","activeTool","_r3","createProductionOrderForMachine","MachineDetailSidebarComponent_ng_container_0_ng_container_10_Template","MachineDetailSidebarComponent_ng_container_0_ng_container_11_Template","MachineDetailSidebarComponent_ng_container_0_ng_container_12_Template","MachineDetailSidebarComponent_ng_container_0_ng_container_13_Template","MachineDetailSidebarComponent_ng_container_0_footer_14_Template","getIconNameForMachineType","isMachineOfTypeCarpetLoom","isMachineOfTypeWeaving","isMachineOfTypeTufting","isMachineOfTypePlastic","canShowFooter","MachineDetailSidebarComponent","_MachineDetailSidebarComponent","_this$activeItemOnMac","activeItemOnMachine","_this$activeItemOnMac2","_this$activeItemOnMac3","weaveProduct","_this$activeItemOnMac4","tuftProduct","_this$activeItemOnMac5","tool","authentication","router","onSelectedMachineChanged","_this$planningContext","planningItemsByMachine","PlanningEquipment","currentSubscription","getCurrentSubscription","MachineType","CARPET_LOOM","CARPET_LOOM_NO_JQ","VELVET","VELVET_NO_JQ","WEAVING_MACHINE","TUFT","PLASTIC_MACHINE","_this$currentSubscrip","permission","Permission","TEXFAB_WEAVE_QUEUE","TEXFAB_TUFT_QUEUE","TEXFAB_PLASTIC_QUEUE","hasPermission","url","RouteUtils","paths","texFab","addProductionOrderForMachine","absolutePath","weaving","tufting","plastic","navigate","replace","toString","AUTHENTICATION","features","MachineDetailSidebarComponent_ng_container_0_Template","PlanningItemDateSelectComponent_ng_container_0_mat_form_field_18_mat_error_12_Template","minimumDurationControl","hasError","PlanningItemDateSelectComponent_ng_container_0_mat_form_field_18_Template","planningItemForm","startDate","endDate","PlanningItemDateSelectComponent","_PlanningItemDateSelectComponent","dateTimePipe","isCompleted","FormGroup","FormControl","earliestStartTime","setPlanningItemOnSelectedItemChanged","earliestStartDateControl","syncValueChanges","syncStatusChanges","planningItemDateSelect","isCompletedDateSelect","startDateDateSelect","endDateDateSelect","valueChanges","startWith","map","split","splitDateTime","controls","setValue","date","time","disable","emitEvent","enabled","enable","dateTime","joinDateTime","markAsDirty","statusChanges","status","formState","startOf","transform","DateTimeFormat","TIME_SIMPLE","DateTime","fromFormat","hour","minute","getTimelineStartDate","getTimelineEndDate","prevState","inputs","PlanningItemDateSelectComponent_ng_container_0_Template","maintenanceType_r1","MaintenanceSidebarComponent_mat_radio_group_2_mat_radio_button_1_Template","saveChanges","_r4","createItem","MaintenanceSidebarComponent","_MaintenanceSidebarComponent","maintenanceForm","Validators","min","resetFormWhenSelectedItemChanges","updateMaintenanceIconWhenSelectedTypeChanges","ngOnDestroy","maintenance","initialType","dirty","saveDateInfo","markAsChanged","addItemToList","_this$maintenanceForm","toJSDate","stopTrim","resetForm","reset","fromJSDate","MathUtils","round","asHours","MaintenanceSidebarComponent_mat_radio_group_2_Template","MaintenanceSidebarComponent_ng_container_5_Template","MaintenanceSidebarComponent_button_6_Template","ReportItemField","ORDER_PROGRESS","QTY_PRODUCED","PICKS_PRODUCED","QTY_REQUIRED","PICKS_REQUIRED","ProductionOrderUtilities","_ProductionOrderUtilities","productionSchedules","finishings","httpProductionOrderCustomSettings","dialogBuilder","reconfirmOrder","order","loadListOfProductionOrderCustomSettings","switchMap","getById","updateFinishing","openReconfirmDialog","getBuilder","withClass","withCloseDisabled","openDialog","ConfirmProductionScheduleDesktopComponent","productionSchedule","commercialUnit","Unit","CENTIMETER","productionOrderCustomSettings","result","finishing","of","getOverviewListFinishingById","tap","FinishingForProductionSchedule","fromOverviewListFinishing","get","customSettings","PRODUCTION_SCHEDULES","FINISHINGS","factory","ɵfac","PlanningOrderSidebarComponent_Conditional_10_Conditional_13_Conditional_5_ng_container_0_Template","notApplicable_r2","PlanningOrderSidebarComponent_Conditional_10_Conditional_13_Conditional_11_ng_container_0_Template","PlanningOrderSidebarComponent_Conditional_10_Conditional_13_Conditional_4_Template","PlanningOrderSidebarComponent_Conditional_10_Conditional_13_Conditional_5_Template","PlanningOrderSidebarComponent_Conditional_10_Conditional_13_Conditional_10_Template","PlanningOrderSidebarComponent_Conditional_10_Conditional_13_Conditional_11_Template","plasticProduct","PlanningOrderSidebarComponent_Conditional_10_Conditional_22_ng_container_0_Template","getProductionTime","PlanningOrderSidebarComponent_Conditional_10_Conditional_28_ng_container_0_Template","PlanningOrderSidebarComponent_Conditional_10_Conditional_13_Template","PlanningOrderSidebarComponent_Conditional_10_Conditional_14_Template","PlanningOrderSidebarComponent_Conditional_10_Conditional_15_Template","PlanningOrderSidebarComponent_Conditional_10_Conditional_16_Template","PlanningOrderSidebarComponent_Conditional_10_Conditional_21_Template","PlanningOrderSidebarComponent_Conditional_10_Conditional_22_Template","PlanningOrderSidebarComponent_Conditional_10_Conditional_27_Template","PlanningOrderSidebarComponent_Conditional_10_Conditional_28_Template","progress_r3","completionPercent","isCarpet","isWeaving","isTufting","isPlastic","estimatedProductionTime","quantityProduced","getQuantityUnit","quantityRequired","PlanningOrderSidebarComponent_Conditional_24_ng_container_0_Template","PlanningOrderSidebarComponent_Conditional_37_ng_container_0_Template","_r5","_r6","getIsStarted","_r7","PlanningOrderSidebarComponent_Conditional_40_Conditional_1_Template","PlanningOrderSidebarComponent_Conditional_40_Conditional_2_Template","PlanningOrderSidebarComponent_Conditional_40_Conditional_3_Template","openOrderDetails","PlanningOrderSidebarComponent","_PlanningOrderSidebarComponent","productionOrderUtilities","realTimePlanning","isReconfirming","realTimeProgress","combineLatest","planningLineChanges","selectedItem","_","isOrderItem","getRealTimeProgress","takeUntilDestroyed","getIconNameForProductionOrderStatus","ProductionScheduleStatus","getStatusIconName","getProductionOrderStatus","getIsDifferentConfiguration","productChanges","getIsPastDue","_this$order$productio","_this$order$productio2","dueDate","unitOfMeasurement","hasPermissionToGoToNewBuilder","editProductionOrderNewView","editProductionOrder","OrderCarpet","OrderWeaving","OrderTufting","OrderPlastic","getItemStatus","genericProgress","getProgress","getQuantityProduced","getQuantityRequired","isActive","requestedReportItems","push","realTimeUpdates","field","getReportItemUpdates","progress","concat","_order$productionOrde","plannedQuantityInMeters","plannedQuantity","plannedQuantityInPicks","producedQuantityInMeters","producedQuantity","producedQuantityInPicks","TEXFAB_NEW_BUILDER","ProductionOrder","finalize","confirmed","VERIFIED","i4","i5","PlanningOrderSidebarComponent_Conditional_8_Template","PlanningOrderSidebarComponent_Conditional_9_Template","PlanningOrderSidebarComponent_Conditional_10_Template","PlanningOrderSidebarComponent_Conditional_23_Template","PlanningOrderSidebarComponent_Conditional_24_Template","PlanningOrderSidebarComponent_Conditional_36_Template","PlanningOrderSidebarComponent_Conditional_37_Template","PlanningOrderSidebarComponent_ng_template_38_Template","PlanningOrderSidebarComponent_Conditional_40_Template","tmp_6_0","tmp_8_0","tmp_12_0","tmp_14_0","editCreelMapping","emit","togglePreviewMap","checked","togglePreviewType","CreelMappingDisplayComponent_div_0_div_23_Template","isPreviewMapToggled","isPreviewTypeToggled","coloredYarnSetsWithStartDent","mappingForCurrentPositionOnMachine","creelPreviewMap","creelPreviewType","canEditCreelMapping","CreelMappingDisplayComponent","_CreelMappingDisplayComponent","creelForm","navigationService","EventEmitter","PreviewMap","THEORETICAL","PreviewType","COLOR","prevData","ACTIVE","YARN_TYPE","toggled","outputs","CreelMappingDisplayComponent_div_0_Template","coloredYarnSetIndex_r2","index","ctx_r2","panel_r5","expanded","coloredYarnSetWithStartDent_r4","coloredYarnSet","overviewListColorSet","getPreviewType","CreelMappingEditComponent","_CreelMappingEditComponent","_previewTypes","_this$_previewTypes$i","CreelMappingEditComponent_mat_expansion_panel_0_Template","selectCreel","PlanningRunSidebarComponent_Conditional_0_Conditional_4_mat_error_7_Template","selectMachineQuality","PlanningRunSidebarComponent_Conditional_0_Conditional_4_mat_error_15_Template","CREEL_BASE_ROUTER_LINK","getUnknownItemPlaceholder","QUALITY_BASE_ROUTER_LINK","selectWeaveProduct","PlanningRunSidebarComponent_Conditional_0_Conditional_5_mat_error_7_Template","WEAVE_PRODUCT_BASE_ROUTER_LINK","selectTuftProduct","PlanningRunSidebarComponent_Conditional_0_Conditional_6_mat_error_7_Template","TUFT_PRODUCT_BASE_ROUTER_LINK","selectTool","TOOL_BASE_ROUTER_LINK","_r8","addOrderForRun","canCreateOrderForRun","PlanningRunSidebarComponent_Conditional_0_Conditional_10_Conditional_1_Conditional_0_Template","isStarted","runForm","invalid","_r9","PlanningRunSidebarComponent_Conditional_0_Conditional_10_Conditional_1_Template","PlanningRunSidebarComponent_Conditional_0_Conditional_10_Conditional_2_Template","PlanningRunSidebarComponent_Conditional_0_Conditional_4_Template","PlanningRunSidebarComponent_Conditional_0_Conditional_5_Template","PlanningRunSidebarComponent_Conditional_0_Conditional_6_Template","PlanningRunSidebarComponent_Conditional_0_Conditional_7_Template","editCreelMappingActive","PlanningRunSidebarComponent_Conditional_0_Conditional_10_Template","hasOrders","_r10","discardCreelMapChanges","confirmCreelMapChanges","PlanningRunSidebarComponent","_PlanningRunSidebarComponent","dialogBuilderFactoryService","toolOverviewService","crudOverviewBuilder","tools","tuftProducts","creels","qualities","weaveProducts","QUALITY_CHIP_VALUE_KEY","texStyle","editCreel","machineQuality","editMachineQuality","editWeaveProduct","editTuftProduct","utilities","editTool","UNKNOWN_VALUE_KEY","SELECT_OBJECT_KEY","creelMappingFormula","resetFormOnSelectedPlanningItemChanged","changeProductEnabledStateOnChildrenChanged","applyCreelMappingOnSelectedCreelChanged","changePlanningItemsEnabledStateOnProductChanged","initObjectSelectionConfigs","getEmptyPlanningRunSidebar","patchValue","createItemMode1","machineData","getFunctionsBasedOnDialogComponent","Map","SelectCreelComponent","loadNewItem","newItemId","setCreel","reopenDialog","SelectMachineQualityComponent","setQuality","SelectWeaveProductComponent","setWeaveProduct","SelectTuftProductComponent","setTuftProduct","setNewItemOrReopenDialogIfPresent","dialogComponent","openSelectDialog","selectedCreels","isEmpty","selectedCreel","_this$runForm$get$val","selectedQualities","selectedQuality","IdName","technicalNameWithVersion","selectedWeaveProduct","WeaveProduct","fromOverviewListWeaveProduct","selectedTuftProduct","TuftProduct","fromOverviewListTuftProduct","openObjectSelectionDialog","toolObjectSelectionConfig","isCreelSelected","_this$runForm$control","savePlanningItems","RunCarpet","saveCarpetProperties","RunWeaving","RunTufting","RunPlastic","toolValue","Tool","creelMap","coloredYarnSetId","creelPositions","position","creelPosition","currentPositionOnMachine","creelMapChanges","join","addProductionOrderNewViewForRun","addProductionOrderForRun","state","runId","machineQualityId","creelId","machineId","startRoute","planningPrototype","_run$creel","sort","compareBySequenceNumber","removeValidators","required","addValidators","getCreelMappingFromFormula","getOriginalMappingForCurrentPositionOnMachine","colorSets","colorSet","colorSetData","mapToUpdate","mapping","Number","creelPositionsData","merge","debounceTime","creelMapping","childItems","action","planningItemsForm","allowCarpetPlanning","allowWeavingPlanning","allowTuftingPlanning","component","objectKey","openSelectGridDialog","title","count","rowSelection","AgGridRowSelection","SINGLE","allowEmptySelection","control","config","selectedObjects","initObjectSelectionConfig","getColumnDefs","colDefs","GridIdentifier","TOOL_OVERVIEW","getAll","translationKey","columns","gridIdentifier","dataObservable","withEntityName","withGridOptions","gridOptions","getDefaultGridOptionsBuilder","withRowSelection","build","withRowData","getAllForMachineId","newWeaveProduct","getPossibleCreelsForMachine","newCreel","getPossibleMachineQualitiesForMachine","newQuality","showOnlyLatestVersion","newTuftProduct","i6","i7","CREELS","MACHINE_QUALITIES","WEAVE_PRODUCT","PlanningRunSidebarComponent_Conditional_0_Template","PlanningRunSidebarComponent_Conditional_1_Template","SelectFixedScheduleComponent","_SelectFixedScheduleComponent","gridOptionsBuilder","GridOptionsBuilderFactoryService","dialogRef","MatDialogRef","dialogParams","MAT_DIALOG_DATA","overviewService","FixedScheduleOverviewService","listOfGridOptions","initGridOptions","listOfFixedSchedules","filterFixedSchedules","listOfGridApis","confirmSelection","selectedRows","getSelectedRows","close","fixedSchedulesToExclude","itemsSelectedAlready","toPlan","isFixedScheduleCompatible","SELECT_FIXED_SCHEDULE","withOnGridReady","ready","api","withColumnMenu","withGetRowId","params","data","SelectUnplannedOrderComponent","_SelectUnplannedOrderComponent","colDefBuilder","listOfUnplannedOrders","setGridOptions","initListOfOrdersToPlan","canSelectProductionOrders","_this$listOfGridApis$","length","productionOrderIdsOnPlanningDraft","getListOfProductionOrderIdsAlreadyPlanned","ordersToPlan","unplannedOrderMatchesDialogParams","_flatListOfPlanningIt","_flatListOfPlanningIt2","flatListOfPlanningItems","getFlatListOfPlanningItems","planningItemsInRun","parentItemId","isCompatibleItemType","PlanningItemType","ORDER_CARPET","isOrderLiteItem","_this$dialogParams$cr","_this$dialogParams$ma","_this$dialogParams$pr","_this$dialogParams$pr2","_this$dialogParams$pr3","ProductionOrderWeaving","ORDER_WEAVING","product","ProductionOrderTuft","ORDER_TUFTING","ProductionOrderPlastic","ORDER_PLASTIC","SELECT_PRODUCTION_ORDER","withNoRowsOverlay","scale","titleKey","hideDescription","withLoadingOverlay","withField","withHeaderName","withComparator","StringUtils","stringComparator","withDate","withoutFilter","addFixedSchedules","disabled","ProductionOrdersListComponent","_ProductionOrdersListComponent","showFixedSchedules","RUN_CARPET","FIXED_SCHEDULE_EDIT","gridOptionsBuilderFactoryService","colDefBuilderFactoryService","onRowDragEnd","rows","forEachNode","node","a","b","indexOf","showActionsColumn","addProductionOrders","_ref","_this$parent$runForm$","childTypeForRunType","maxSequence","reduce","currentMax","orderToPlan","createOrderForToPlan","createPlaceholderForFixedSchedule","PRODUCTION_ORDERS_LIST","withSuppressRowClickSelection","withSuppressRowHoverHighlight","withLockPinnedColumns","sizeColumnsToFit","withRowDragManaged","withOnRowDragEnd","withSuppressMoveWhenRowDragging","withPopupParent","document","querySelector","deleteOrderFromRun","itemInList","withRowDrag","withSuppressMovable","withLockVisible","withSortable","withCellClass","withOnCellClicked","withValueGetter","withTooltipValueGetter","withCellRenderer","ProductionScheduleOverviewStatusComponent","withHeaderClass","ListOverviewActionsComponent","actionFn","ProductionOrdersListComponent_Conditional_8_Template","ProductionOrdersListComponent_Conditional_9_Template","lastValueFrom","source","hasConfig","Promise","resolve","reject","_value","_hasValue","next","error","complete","defaultValue","EmptyError","removeFilter","activeSearchFilters","getChipLabel","orderToPlan_r5","deleteUnplannedOrder","openPlannedItemSidebar","unplannedOrder_r6","ToPlanComponent_div_9_ng_template_1_Template","ToPlanComponent_div_9_mat_icon_3_Template","ToPlanComponent_div_9_ng_container_8_Template","ToPlanComponent_div_9_ng_container_9_Template","dragActive","draggedItem","isToReconfirm","getProductString","getRequiredQuantityString","ToPlanComponent","_ToPlanComponent","productionOrdersWeaving","productionOrdersTufting","productionOrdersPlastic","toastHelper","nameFilterChanged","BehaviorSubject","advancedSearchFilters","propertyName","AdvancedSearchInput","NAME","PRODUCTION_SCHEDULE_STATUS","possiblePropertyValues","TO_PLAN","TO_RECONFIRM","MACHINE_QUALITY","CREEL","TUFT_PRODUCT","PLASTIC_PRODUCT","TOOL","filterProperty","EnumUtils","getKeyFromValue","AdvancedSearchUtils","getDisplayValueForAdvancedSearchFilter","propertyValue","compareProductionOrder","orderA","orderB","_orderA$productionOrd","_orderA$productionOrd2","_orderB$productionOrd","_orderB$productionOrd2","isOrderAToReconfirm","dueDateOfOrderA","getTime","Infinity","dueDateOfOrderB","filterAdvancedSearchFields","filterOrdersToPlanByActivePlanning","subscribeToNameFilterChanges","refilterOrdersOnPLanningLineChanges","productName","plannedQuantityString","DATE_SHORT","showAdvancedSearch","withWidth","withMaxHeight","RepositionDialogComponent","AdvancedSearchDialogComponent","sourceElement","iconElement","nativeElement","positionOfDialog","PositionOfDialog","BOTTOM","filters","updateFilter","property","_this","_asyncToGenerator","message","openAlertDialog","titleText","messageText","DialogType","CONFIRM_DELETE","AlertDialogResult","CONFIRM","splice","showToastForObjectAction","ObjectActionType","DELETE","itemToSelect","getPlanningItemForOrder","plannedItem","productionOrderLiteIdsOnPlanningDraft","passesActiveFilters","every","passesActiveFilter","_filterProperty$prope","filteredOrdersToPlan","_item$productionOrder","permissionMap","TEXSTYLE_MACHINE_QUALITY_VIEW","TEXSTYLE_CREEL_VIEW","TEXSTYLE_WEAVE_PRODUCT_VIEW","TEXSTYLE_TUFT_PRODUCT_VIEW","TEXSTYLE_PLASTIC_PRODUCT_VIEW","TEXSTYLE_PLASTIC_TOOL_VIEW","PRODUCTION_ORDERS_WEAVING","viewQuery","ToPlanComponent_vdw_filter_chips_5_Template","ToPlanComponent_div_9_Template","virtualScroller_r9","viewPortItems","PlanningPrototypeModule","_PlanningPrototypeModule","PlanningFilterService","PlasticProductOverviewService","SignalRPlanningPrototypeService","ToolOverviewService","HttpPlasticProductionOrdersService","UnsavedChangesNotifierService","provide","useClass","HttpCreelsService","HttpFinishingsService","MACHINE_OVERVIEW","HttpMachineOverviewService","PRODUCTION_ORDERS","HttpProductionOrdersService","HttpProductionOrdersWeavingService","HttpProductionSchedulesService","REALTIME_PRODUCTION_ORDER","SignalrProductionOrderService","REALTIME_PRODUCTION_ORDER_LITE","SignalrProductionOrderLiteService","imports","TabsMenuCardModule","HeaderModule","SharedModule","DatePickerModule","PlanningDisplayModule","planningPrototypeRouting","PlanningDragDropModule","AgGridModule","PlanningPrototypeSidebarComponent","i8","i9","i10","i11","i12"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-item-sidebar/planning-item-sidebar.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-item-sidebar/planning-item-sidebar.component.ts","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/fixed-schedule-placeholder-sidebar/fixed-schedule-placeholder-sidebar.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/fixed-schedule-placeholder-sidebar/fixed-schedule-placeholder-sidebar.component.ts","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/fixed-schedules-sidebar/fixed-schedules-sidebar.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/fixed-schedules-sidebar/fixed-schedules-sidebar.component.ts","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilKeyChanged.js","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/machine-detail-sidebar/machine-detail-sidebar.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/machine-detail-sidebar/machine-detail-sidebar.component.ts","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-item-date-select/planning-item-date-select.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-item-date-select/planning-item-date-select.component.ts","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/maintenance-sidebar/maintenance-sidebar.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/maintenance-sidebar/maintenance-sidebar.component.ts","./apps/texconnect/src/app/domain/planning-prototype/real-time/report-item-field.enum.ts","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/utilities/production-order-utilities.service.ts","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-order-sidebar/planning-order-sidebar.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-order-sidebar/planning-order-sidebar.component.ts","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-run-sidebar/creel-mapping/creel-mapping-display/creel-mapping-display.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-run-sidebar/creel-mapping/creel-mapping-display/creel-mapping-display.component.ts","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-run-sidebar/creel-mapping/creel-mapping-edit/creel-mapping-edit.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-run-sidebar/creel-mapping/creel-mapping-edit/creel-mapping-edit.component.ts","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-run-sidebar/planning-run-sidebar.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-run-sidebar/planning-run-sidebar.component.ts","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-run-sidebar/select-fixed-schedule/select-fixed-schedule.component.ts","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-run-sidebar/select-fixed-schedule/select-fixed-schedule.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-run-sidebar/select-unplanned-order/select-unplanned-order.component.ts","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-run-sidebar/select-unplanned-order/select-unplanned-order.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-run-sidebar/production-orders-list/production-orders-list.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/planning-run-sidebar/production-orders-list/production-orders-list.component.ts","./node_modules/rxjs/dist/esm/internal/lastValueFrom.js","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/to-plan/to-plan.component.html","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/sidebars/to-plan/to-plan.component.ts","./apps/texconnect/src/app/presentation/pages/texfab/planning-prototype/planning-prototype.module.ts"],"sourcesContent":["
\n \n

\n \n
\n\n@if (createItemMode) {\n \n @for (maintenanceType of maintenanceTypes; track maintenanceType) {\n \n {{ 'PLANNING.ADD_ITEM.TYPES.' + maintenanceType | bmsTranslate }}\n \n }\n \n {{ 'PLANNING.ADD_ITEM.TYPES.RUN' | bmsTranslate }}\n \n \n}\n@if (planningItem.type === 'MAINTENANCE') {\n \n} @else if (planningItem.type.startsWith('ORDER')) {\n \n} @else if (planningItem.type.startsWith('RUN')) {\n \n} @else if (planningItem.type === 'FIXED_SCHEDULE_PLACEHOLDER') {\n \n}\n","import {Component, HostBinding, OnInit} from '@angular/core';\nimport {MatRadioChange} from '@angular/material/radio';\nimport {NavigationHelperService} from '@application/helper/navigation-helper/navigation-helper.service';\nimport {PlanningItemHelper} from '@application/helper/planning-prototype/planning-item-helper';\nimport {Maintenance} from '@domain/planning-prototype/maintenance';\nimport {MaintenanceType} from '@domain/planning-prototype/maintenance-type';\nimport {PlanningEquipment} from '@domain/planning-prototype/planning-equipment';\nimport {PlanningItem} from '@domain/planning-prototype/planning-item';\nimport {PlanningItemFactory} from '@domain/planning-prototype/planning-item-factory';\nimport {AssertionUtils, BaseComponent, TranslateService} from '@vdw/angular-component-library';\nimport {filter, takeUntil} from 'rxjs';\nimport {PlanningPrototypeContextService} from '../../utilities/planning-prototype-context.service';\nimport {NavigationPlanningItemSidebar} from './navigation-item-sidebar.interface';\n\n@Component({\n selector: 'app-planning-item-sidebar',\n templateUrl: './planning-item-sidebar.component.html',\n styleUrls: ['./planning-item-sidebar.component.scss']\n})\nexport class PlanningItemSidebarComponent extends BaseComponent implements OnInit {\n public planningItem: PlanningItem;\n public machine: PlanningEquipment;\n public createItemMode = false;\n public maintenanceTypes = [MaintenanceType.MAINTENANCE, MaintenanceType.MACHINE_UNAVAILABLE];\n\n @HostBinding('class.wide')\n public get isWide(): boolean {\n return PlanningItemHelper.isRunItem(this.planningItem) && AssertionUtils.isNullOrUndefined(this.planningItem.actualEndDate);\n }\n\n private readonly KEY_EDIT_OBJECT = 'GENERAL.ACTIONS.EDIT_OBJECT';\n\n public constructor(\n private readonly planningContext: PlanningPrototypeContextService,\n private readonly translate: TranslateService,\n private readonly navigationHelperService: NavigationHelperService\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.planningContext.selectedItemChanges\n .pipe(\n takeUntil(this.unSubscribeOnViewDestroy),\n filter((item: PlanningEquipment | PlanningItem) => item instanceof PlanningItem)\n )\n .subscribe((item: PlanningItem) => {\n this.planningItem = item;\n if (!AssertionUtils.isNullOrUndefined(this.planningContext.machinesByPlanningItem[item.draftId])) {\n this.machine = this.planningContext.machinesByPlanningItem[item.draftId];\n this.maintenanceTypes = PlanningItemHelper.getMaintenanceTypesForMachineType(this.machine.equipmentKind);\n }\n this.createItemMode = item === this.planningContext.itemCreationPlaceholder;\n });\n let obj: NavigationPlanningItemSidebar = this.navigationHelperService.getPartialState(Object.keys(this.planningContext.getEmptyDataOfPlanningItemSidebarForNavigationHelper()));\n if (!AssertionUtils.isNullOrUndefined(obj)) {\n this.planningItem = obj.planningItem;\n this.machine = obj.machine;\n this.createItemMode = obj.createItemMode;\n this.maintenanceTypes = obj.maintenanceTypes;\n }\n }\n\n public onNavigationHelperDestroy(): void {\n this.navigationHelperService.savePartialState({\n planningItem: this.planningItem,\n machine: this.machine,\n createItemMode: this.planningContext.itemCreationPlaceholder,\n maintenanceTypes: this.maintenanceTypes\n });\n }\n\n public closeMachineDetail(): void {\n this.planningContext.selectItem(null);\n }\n\n public getFormTitle(): string {\n if (this.createItemMode) {\n return this.translate.instant('GENERAL.ACTIONS.ADD_TO_OBJECT', {object: 'PLANNING.PLANNING'});\n }\n\n if (this.planningItem instanceof Maintenance) {\n return this.translate.instant(this.KEY_EDIT_OBJECT, {object: `PLANNING.ADD_ITEM.TYPES.${this.planningItem.maintenanceType}`}) + ' ' + this.machine.name;\n }\n\n if (PlanningItemHelper.canBeInRun(this.planningItem)) {\n return PlanningItemHelper.getItemName(this.planningItem);\n }\n\n if (PlanningItemHelper.isRunItem(this.planningItem)) {\n const run = this.translate.instant('PLANNING.ADD_ITEM.TYPES.RUN').toLowerCase();\n return this.translate.instant(this.KEY_EDIT_OBJECT, {object: run}) + ' ' + this.machine.name;\n }\n\n return '';\n }\n\n public getSelectedItemType(): MaintenanceType | 'RUN' {\n if (PlanningItemHelper.isRunItem(this.planningItem)) {\n return 'RUN';\n }\n return (this.planningItem as Maintenance).maintenanceType;\n }\n\n public selectedItemTypeChanged(event: MatRadioChange): void {\n if (this.maintenanceTypes.includes(event.value)) {\n if (!(this.planningItem instanceof Maintenance)) {\n this.updateItemCreatePlaceholderToMaintenance(event.value);\n } else {\n this.planningItem.maintenanceType = event.value;\n }\n return;\n }\n\n if (event.value !== 'RUN' || PlanningItemHelper.isRunItem(this.planningItem)) {\n return;\n }\n this.updateItemCreatePlaceholderToRun();\n }\n\n private updateItemCreatePlaceholderToRun(): void {\n this.planningContext.itemCreationPlaceholder = PlanningItemFactory.createRunForMachine(\n {\n draftId: this.planningItem.draftId,\n sequenceNumber: this.planningItem.sequenceNumber,\n earliestStartDate: this.planningItem.earliestStartDate,\n minimumDuration: this.planningItem.minimumDuration\n },\n this.machine\n );\n this.planningContext.selectItem(this.planningContext.itemCreationPlaceholder);\n }\n\n private updateItemCreatePlaceholderToMaintenance(type: MaintenanceType): void {\n this.planningContext.itemCreationPlaceholder = new Maintenance(\n {\n draftId: this.planningItem.draftId,\n sequenceNumber: this.planningItem.sequenceNumber,\n earliestStartDate: this.planningItem.earliestStartDate,\n minimumDuration: this.planningItem.minimumDuration\n },\n type\n );\n this.planningContext.selectItem(this.planningContext.itemCreationPlaceholder);\n }\n}\n","
\n
\n \n

\n
\n\n
\n \n

\n {{ parentRun().creel.name }}\n

\n
\n
\n \n

\n {{ parentRun().quality.name }}\n

\n
\n\n
\n \n

{{ placeholder().actualStartDate ?? forecast().estimatedStart | DateTime: 'DATETIME_MED_WITH_WEEKDAY' }}

\n
\n
\n \n

\n {{ placeholder().actualEndDate | DateTime: 'DATETIME_MED_WITH_WEEKDAY' }}\n

\n
\n
\n \n

\n {{ forecast()?.estimatedEnd ?? placeholder().estimatedEndDate ?? placeholder().actualEndDate | DateTime: 'DATETIME_MED_WITH_WEEKDAY' }}\n

\n
\n\n \n

n/a

\n
\n
\n\n@if (placeholder().fixedSchedule.productionOrder) {\n \n}\n","import {Component, computed} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {FixedSchedulePlaceholder} from '@domain/planning-prototype/carpet/fixed-schedule-placeholder';\nimport {RunCarpet} from '@domain/planning-prototype/carpet/run-carpet';\nimport {PlanningItem} from '@domain/planning-prototype/planning-item';\nimport {AssertionUtils} from '@vdw/angular-component-library';\nimport moment, {Moment, duration} from 'moment';\nimport {filter} from 'rxjs';\nimport {PlanningPrototypeContextService, SelectedItemType} from '../../utilities/planning-prototype-context.service';\nimport {PlanningItemSidebarComponent} from '../planning-item-sidebar/planning-item-sidebar.component';\n\n@Component({\n selector: 'app-fixed-schedule-placeholder-sidebar',\n templateUrl: './fixed-schedule-placeholder-sidebar.component.html',\n styleUrls: ['./fixed-schedule-placeholder-sidebar.component.scss']\n})\nexport class FixedSchedulePlaceholderSidebarComponent {\n public readonly DURATION_FORMAT_STRING = 'd[d] h[h] m[m]';\n public readonly DURATION_FORMAT_OPTIONS: moment.DurationFormatSettings = {trim: 'both'};\n\n public readonly machine = computed(() => this.planningContext.machinesByPlanningItem[this.placeholder().draftId]);\n public readonly forecast = computed(() => this.planningContext.sortedPlanningItemForecasts[this.placeholder().draftId]);\n public readonly placeholder = toSignal(this.planningContext.selectedItemChanges.pipe(filter((item: SelectedItemType): item is FixedSchedulePlaceholder => item instanceof FixedSchedulePlaceholder)));\n public readonly parentRun = computed(\n () => this.planningContext.planningLinesByMachine[this.parent.machine.id].planningItems.find((item: PlanningItem) => item.planningItems.includes(this.placeholder())) as RunCarpet\n );\n\n public constructor(\n private readonly parent: PlanningItemSidebarComponent,\n private readonly planningContext: PlanningPrototypeContextService\n ) {}\n\n public getDuration(): string {\n let end: Moment;\n if (AssertionUtils.isNullOrUndefined(this.placeholder().actualEndDate)) {\n end = moment();\n } else {\n end = moment(this.placeholder().actualEndDate);\n }\n return duration(end.diff(moment(this.placeholder().actualStartDate))).format(this.DURATION_FORMAT_STRING, this.DURATION_FORMAT_OPTIONS);\n }\n\n public delete(): void {\n this.planningContext.delete(this.placeholder(), this.parentRun().planningItems, this.parent.machine);\n }\n}\n","\n
\n \n
\n
\n @for (schedule of filteredFixedSchedules(); track $index) {\n \n \n \n\n
\n \n
\n

\n
\n
\n }\n
\n","import {Component, TemplateRef, ViewContainerRef, computed, inject, signal} from '@angular/core';\nimport {FixedScheduleToPlan} from '@domain/planning-prototype/to-plan/fixed-schedule-to-plan';\nimport {AssertionUtils} from '@vdw/angular-component-library';\nimport {PlanningItemDragDropService} from '../../utilities/planning-item-drag-drop.service';\nimport {PlanningPrototypeContextService} from '../../utilities/planning-prototype-context.service';\n\n@Component({\n selector: 'app-fixed-schedules-sidebar',\n templateUrl: './fixed-schedules-sidebar.component.html',\n styleUrls: ['./fixed-schedules-sidebar.component.scss']\n})\nexport class FixedSchedulesSidebarComponent {\n private readonly planningContext = inject(PlanningPrototypeContextService);\n private readonly planningDragDrop = inject(PlanningItemDragDropService);\n private readonly viewContainer = inject(ViewContainerRef);\n\n public readonly nameFilter = signal(null);\n public readonly filteredFixedSchedules = computed(() =>\n this.planningContext.fixedSchedulesToPlan.filter((x: FixedScheduleToPlan) => AssertionUtils.isNullOrUndefined(this.nameFilter()) || x.name.toLowerCase().includes(this.nameFilter().toLowerCase()))\n );\n\n public closeMachineDetail(): void {\n this.planningContext.selectItem(null);\n }\n\n public onDragStart(event: DragEvent, schedule: FixedScheduleToPlan, template: TemplateRef): void {\n this.planningDragDrop.onDragStart(event, schedule, template, this.viewContainer);\n }\n}\n","import { distinctUntilChanged } from './distinctUntilChanged';\nexport function distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged((x, y) => (compare ? compare(x[key], y[key]) : x[key] === y[key]));\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
\n \n
\n
\n
\n","import {Component, Inject, OnInit} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {RouteUtils} from '@application/helper/routing/route-utils';\nimport {IdName} from '@domain/id-name';\nimport {MachineType} from '@domain/machine/machine-type.enum';\nimport {RunCarpet} from '@domain/planning-prototype/carpet/run-carpet';\nimport {PlanningEquipment} from '@domain/planning-prototype/planning-equipment';\nimport {PlanningItem} from '@domain/planning-prototype/planning-item';\nimport {RunPlastic} from '@domain/planning-prototype/plastic/run-plastic';\nimport {Tool} from '@domain/planning-prototype/plastic/tool';\nimport {RunTufting} from '@domain/planning-prototype/tufting/run-tufting';\nimport {TuftProduct} from '@domain/planning-prototype/tufting/tuft-product';\nimport {RunWeaving} from '@domain/planning-prototype/weaving/run-weaving';\nimport {WeaveProduct} from '@domain/planning-prototype/weaving/weave-product';\nimport {Permission} from '@domain/profile/permission.enum';\nimport {Subscription} from '@domain/profile/subscription';\nimport {AUTHENTICATION, Authentication} from '@infrastructure/http/authentication/authentication';\nimport {BaseComponent} from '@vdw/angular-component-library';\nimport {distinctUntilKeyChanged, filter, takeUntil} from 'rxjs';\nimport {PlanningPrototypeContextService} from '../../utilities/planning-prototype-context.service';\n\n@Component({\n selector: 'app-machine-detail-sidebar',\n templateUrl: './machine-detail-sidebar.component.html',\n styleUrls: ['./machine-detail-sidebar.component.scss']\n})\nexport class MachineDetailSidebarComponent extends BaseComponent implements OnInit {\n public machine: PlanningEquipment;\n private currentSubscription: Subscription;\n private activeItemOnMachine: PlanningItem;\n\n public get activeCreel(): IdName {\n return (this.activeItemOnMachine as RunCarpet)?.creel;\n }\n\n public get activeQuality(): IdName {\n return (this.activeItemOnMachine as RunCarpet)?.quality;\n }\n\n public get activeWeaveProduct(): WeaveProduct {\n return (this.activeItemOnMachine as RunWeaving)?.weaveProduct;\n }\n\n public get activeTuftProduct(): TuftProduct {\n return (this.activeItemOnMachine as RunTufting)?.tuftProduct;\n }\n\n public get activeTool(): Tool {\n return (this.activeItemOnMachine as RunPlastic)?.tool;\n }\n\n public constructor(\n @Inject(AUTHENTICATION) private readonly authentication: Authentication,\n private readonly planningContext: PlanningPrototypeContextService,\n private readonly router: Router\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.planningContext.selectedItemChanges\n .pipe(\n takeUntil(this.unSubscribeOnViewDestroy),\n filter((item: PlanningEquipment | PlanningItem) => item instanceof PlanningEquipment),\n distinctUntilKeyChanged('id')\n )\n .subscribe(this.onSelectedMachineChanged);\n this.currentSubscription = this.authentication.getCurrentSubscription();\n }\n\n public getIconNameForMachineType(): string {\n return MachineType.getIconNameForMachineType(this.machine.equipmentKind);\n }\n\n public closeMachineDetail(): void {\n this.planningContext.selectItem(null);\n }\n\n public isMachineOfTypeCarpetLoom(): boolean {\n return [MachineType.CARPET_LOOM, MachineType.CARPET_LOOM_NO_JQ, MachineType.VELVET, MachineType.VELVET_NO_JQ].includes(this.machine.equipmentKind);\n }\n\n public isMachineOfTypeWeaving(): boolean {\n return this.machine.equipmentKind === MachineType.WEAVING_MACHINE;\n }\n\n public isMachineOfTypeTufting(): boolean {\n return this.machine.equipmentKind === MachineType.TUFT;\n }\n\n public isMachineOfTypePlastic(): boolean {\n return this.machine.equipmentKind === MachineType.PLASTIC_MACHINE;\n }\n\n public canShowFooter(): boolean {\n let permission: Permission;\n if (this.isMachineOfTypeCarpetLoom()) {\n return true;\n } else if (this.isMachineOfTypeWeaving()) {\n permission = Permission.TEXFAB_WEAVE_QUEUE;\n } else if (this.isMachineOfTypeTufting()) {\n permission = Permission.TEXFAB_TUFT_QUEUE;\n } else if (this.isMachineOfTypePlastic()) {\n permission = Permission.TEXFAB_PLASTIC_QUEUE;\n } else {\n return false;\n }\n\n return this.currentSubscription?.hasPermission(permission);\n }\n\n public createProductionOrderForMachine(): void {\n let url: string;\n if (this.isMachineOfTypeCarpetLoom()) {\n url = RouteUtils.paths.texFab.productionOrder.addProductionOrderForMachine.absolutePath;\n } else if (this.isMachineOfTypeWeaving()) {\n url = RouteUtils.paths.texFab.weaving.addProductionOrderForMachine.absolutePath;\n } else if (this.isMachineOfTypeTufting()) {\n url = RouteUtils.paths.texFab.tufting.addProductionOrderForMachine.absolutePath;\n } else if (this.isMachineOfTypePlastic()) {\n url = RouteUtils.paths.texFab.plastic.addProductionOrderForMachine.absolutePath;\n } else {\n return;\n }\n this.router.navigate([url.replace(':id', this.machine.id.toString())]);\n }\n\n private onSelectedMachineChanged = (machine: PlanningEquipment): void => {\n this.machine = machine;\n this.activeItemOnMachine = this.planningContext.planningItemsByMachine[machine.id]?.find((item: PlanningItem) => item.sequenceNumber === 0);\n };\n}\n","\n \n \n\n \n \n \n {{ 'PLANNING.PLANNING_ITEM_FIELDS.EARLIEST_START_TIME' | bmsTranslate }}\n ({{ 'GENERAL.OPTIONAL' | bmsTranslate | lowercase }})\n \n \n \n \n \n {{ 'PLANNING.PLANNING_ITEM_FIELDS.MINIMUM_DURATION' | bmsTranslate }}\n ({{ 'GENERAL.OPTIONAL' | bmsTranslate | lowercase }})\n \n \n {{ 'GENERAL.UNIT.HOURS' | bmsTranslate }}\n \n {{ 'GENERAL.ERRORS.INVALID_FORMAT.INVALID_FORMAT' | bmsTranslate }}\n \n \n\n","import {Component, Input, OnInit} from '@angular/core';\nimport {FormControl, FormControlStatus, FormGroup} from '@angular/forms';\nimport {NavigationHelperService} from '@application/helper/navigation-helper/navigation-helper.service';\nimport {PlanningItemHelper} from '@application/helper/planning-prototype/planning-item-helper';\nimport {PlanningEquipment} from '@domain/planning-prototype/planning-equipment';\nimport {PlanningItem} from '@domain/planning-prototype/planning-item';\nimport {AssertionUtils, BaseComponent, DateTimeFormat, DateTimePipe} from '@vdw/angular-component-library';\nimport {DateTime} from 'luxon';\nimport {distinctUntilKeyChanged, filter, map, startWith, takeUntil} from 'rxjs';\nimport {PlanningPrototypeContextService} from '../../utilities/planning-prototype-context.service';\nimport {NavigationPLanningItemDateSelect} from './navigation-planning-item-date-select.interface';\n\n@Component({\n selector: 'app-planning-item-date-select',\n templateUrl: './planning-item-date-select.component.html',\n styleUrls: ['./planning-item-date-select.component.scss']\n})\nexport class PlanningItemDateSelectComponent extends BaseComponent implements OnInit {\n @Input()\n public earliestStartDateControl: FormControl;\n\n @Input()\n public minimumDurationControl: FormControl;\n\n public planningItem: PlanningItem;\n public isCompleted = false;\n public planningItemForm = new FormGroup({\n earliestStartDate: new FormControl(null),\n earliestStartTime: new FormControl('')\n });\n\n public startDate: Date;\n public endDate: Date;\n\n public constructor(\n private readonly planningContext: PlanningPrototypeContextService,\n private readonly navigationHelperService: NavigationHelperService,\n private readonly dateTimePipe: DateTimePipe\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.setPlanningItemOnSelectedItemChanged();\n if (this.earliestStartDateControl) {\n this.syncValueChanges();\n this.syncStatusChanges();\n }\n }\n\n public onNavigationHelperDestroy(): void {\n this.navigationHelperService.savePartialState({\n planningItemDateSelect: this.planningItem,\n isCompletedDateSelect: this.isCompleted,\n startDateDateSelect: this.startDate,\n endDateDateSelect: this.endDate\n });\n }\n\n private syncValueChanges(): void {\n this.earliestStartDateControl.valueChanges\n .pipe(\n startWith(undefined),\n map(() => this.earliestStartDateControl.value),\n takeUntil(this.unSubscribeOnViewDestroy)\n )\n .subscribe((startDate: DateTime) => {\n const split = this.splitDateTime(startDate);\n this.planningItemForm.controls.earliestStartDate.setValue(split.date);\n this.planningItemForm.controls.earliestStartTime.setValue(split.time);\n });\n\n this.planningItemForm.valueChanges\n .pipe(\n map(() => this.planningItemForm.value),\n takeUntil(this.unSubscribeOnViewDestroy)\n )\n .subscribe(({earliestStartDate, earliestStartTime}: {earliestStartDate: DateTime; earliestStartTime: string}) => {\n if (AssertionUtils.isNullOrUndefined(earliestStartDate)) {\n this.planningItemForm.controls.earliestStartTime.disable({emitEvent: false});\n } else if (this.planningItemForm.controls.earliestStartDate.enabled) {\n this.planningItemForm.controls.earliestStartTime.enable({emitEvent: false});\n }\n const dateTime = this.joinDateTime(earliestStartDate, earliestStartTime);\n if (dateTime !== this.earliestStartDateControl.value) {\n this.earliestStartDateControl.setValue(dateTime, {emitEvent: false});\n this.earliestStartDateControl.markAsDirty();\n }\n });\n }\n\n private syncStatusChanges(): void {\n this.earliestStartDateControl.statusChanges\n .pipe(\n startWith(undefined),\n map(() => this.earliestStartDateControl.status),\n takeUntil(this.unSubscribeOnViewDestroy)\n )\n .subscribe((formState: FormControlStatus) => {\n if (formState === 'DISABLED') {\n this.planningItemForm.controls.earliestStartDate.disable();\n this.planningItemForm.controls.earliestStartTime.disable();\n } else {\n this.planningItemForm.controls.earliestStartDate.enable();\n this.planningItemForm.controls.earliestStartTime.enable();\n }\n });\n }\n\n private splitDateTime(dateTime: DateTime): {date: DateTime; time: string} {\n if (AssertionUtils.isNullOrUndefined(dateTime)) {\n return {\n date: null,\n time: '00:00'\n };\n }\n\n return {\n date: dateTime.startOf('day'),\n time: this.dateTimePipe.transform(dateTime, DateTimeFormat.TIME_SIMPLE)\n };\n }\n\n private joinDateTime(date: DateTime, time: string): DateTime {\n if (AssertionUtils.isNullOrUndefined(date) || AssertionUtils.isNullOrUndefined(time)) {\n return null;\n }\n const dateTime = DateTime.fromFormat(time, time.includes('M') ? 'h:mm a' : 'H:mm');\n\n date = date.set({hour: dateTime.hour, minute: dateTime.minute});\n\n return date;\n }\n\n private setPlanningItemOnSelectedItemChanged(): void {\n this.planningContext.selectedItemChanges\n .pipe(\n takeUntil(this.unSubscribeOnViewDestroy),\n filter((item: PlanningEquipment | PlanningItem) => item instanceof PlanningItem),\n distinctUntilKeyChanged('id')\n )\n .subscribe((item: PlanningItem) => {\n this.planningItem = item;\n this.isCompleted = !AssertionUtils.isNullOrUndefined(item.actualEndDate);\n const forecast = this.planningContext.sortedPlanningItemForecasts[item.draftId];\n this.startDate = PlanningItemHelper.getTimelineStartDate(item, forecast);\n this.endDate = PlanningItemHelper.getTimelineEndDate(item, forecast);\n });\n\n let obj = {\n planningItemDateSelect: null,\n isCompletedDateSelect: null,\n startDateDateSelect: null,\n endDateDateSelect: null\n };\n let prevState = this.navigationHelperService.getPartialState(Object.keys(obj));\n if (!AssertionUtils.isNullOrUndefined(prevState)) {\n this.planningItem = prevState.planningItemDateSelect;\n this.isCompleted = prevState.isCompletedDateSelect;\n this.startDate = prevState.startDateDateSelect;\n this.endDate = prevState.endDateDateSelect;\n }\n }\n}\n","
\n
\n \n \n {{ 'PLANNING.ADD_ITEM.TYPES.' + maintenanceType | bmsTranslate }}\n \n \n\n \n \n
\n\n
\n \n
\n \n
\n\n
\n \n
\n
\n\n \n
\n","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {PlanningItemHelper} from '@application/helper/planning-prototype/planning-item-helper';\nimport {Maintenance} from '@domain/planning-prototype/maintenance';\nimport {MaintenanceType} from '@domain/planning-prototype/maintenance-type';\nimport {PlanningItem} from '@domain/planning-prototype/planning-item';\nimport {AssertionUtils, BaseComponent, MathUtils} from '@vdw/angular-component-library';\nimport {DateTime} from 'luxon';\nimport moment from 'moment';\nimport {filter, takeUntil} from 'rxjs';\nimport {PlanningPrototypeContextService} from '../../utilities/planning-prototype-context.service';\nimport {PlanningItemSidebarComponent} from '../planning-item-sidebar/planning-item-sidebar.component';\n\n@Component({\n selector: 'app-maintenance-sidebar',\n templateUrl: './maintenance-sidebar.component.html'\n})\nexport class MaintenanceSidebarComponent extends BaseComponent implements OnInit, OnDestroy {\n public maintenanceForm = new FormGroup({\n type: new FormControl(MaintenanceType.MAINTENANCE),\n earliestStartDate: new FormControl(null),\n minimumDuration: new FormControl(null, [Validators.min(0)])\n });\n\n public maintenanceTypes = [MaintenanceType.MAINTENANCE, MaintenanceType.MACHINE_UNAVAILABLE];\n public createItemMode = false;\n public maintenance: Maintenance;\n\n private initialType: MaintenanceType;\n\n public constructor(\n private readonly parent: PlanningItemSidebarComponent,\n private readonly planningContext: PlanningPrototypeContextService\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.resetFormWhenSelectedItemChanges();\n\n this.updateMaintenanceIconWhenSelectedTypeChanges();\n }\n\n public ngOnDestroy(): void {\n super.ngOnDestroy();\n this.maintenance.maintenanceType = this.initialType;\n }\n\n public saveChanges(): void {\n this.planningContext.selectItem(null);\n if (!this.maintenanceForm.dirty) {\n return;\n }\n this.maintenance.maintenanceType = this.maintenanceForm.controls.type.value;\n this.initialType = this.maintenance.maintenanceType;\n this.saveDateInfo();\n this.planningContext.markAsChanged(this.parent.machine);\n }\n\n public delete(): void {\n this.planningContext.delete(this.maintenance, this.planningContext.planningLinesByMachine[this.parent.machine.id].planningItems, this.parent.machine);\n }\n\n public createItem(): void {\n this.planningContext.selectItem(null);\n this.planningContext.itemCreationPlaceholder = null;\n this.saveDateInfo();\n this.initialType = this.maintenance.maintenanceType;\n this.planningContext.addItemToList(\n this.maintenance,\n this.planningContext.planningLinesByMachine[this.parent.machine.id].planningItems,\n this.planningContext.sortedPlanningItemForecasts[this.maintenance.draftId].estimatedStart\n );\n this.planningContext.markAsChanged(this.parent.machine);\n }\n\n private saveDateInfo(): void {\n this.maintenance.earliestStartDate = this.maintenanceForm.controls.earliestStartDate.value?.toJSDate();\n this.maintenance.minimumDuration = moment.duration(this.maintenanceForm.controls.minimumDuration.value, 'hours').format('d.hh:mm:ss', {trim: 'both', stopTrim: 'h m s'});\n }\n\n private resetForm(maintenance: Maintenance): void {\n if (!AssertionUtils.isNullOrUndefined(this.maintenance)) {\n this.maintenance.maintenanceType = this.initialType;\n }\n this.initialType = maintenance.maintenanceType;\n this.maintenance = maintenance;\n this.createItemMode = this.planningContext.itemCreationPlaceholder === maintenance;\n this.maintenanceForm.reset({\n type: maintenance.maintenanceType,\n earliestStartDate: maintenance.earliestStartDate ? DateTime.fromJSDate(maintenance.earliestStartDate) : null,\n minimumDuration: MathUtils.round(moment.duration(maintenance.minimumDuration).asHours(), 2)\n });\n this.maintenanceTypes = PlanningItemHelper.getMaintenanceTypesForMachineType(this.parent.machine.equipmentKind);\n }\n\n private resetFormWhenSelectedItemChanges(): void {\n this.planningContext.selectedItemChanges\n .pipe(\n takeUntil(this.unSubscribeOnViewDestroy),\n filter((item: PlanningItem) => item instanceof Maintenance)\n )\n .subscribe((maintenance: Maintenance) => this.resetForm(maintenance));\n }\n\n private updateMaintenanceIconWhenSelectedTypeChanges(): void {\n this.maintenanceForm.controls.type.valueChanges.pipe(takeUntil(this.unSubscribeOnViewDestroy)).subscribe((value: MaintenanceType) => {\n this.maintenance.maintenanceType = value;\n });\n }\n}\n","export enum ReportItemField {\n ORDER_PROGRESS = 'ORDER_PROGRESS',\n QTY_PRODUCED = 'QTY_PRODUCED',\n PICKS_PRODUCED = 'PICKS_PRODUCED',\n QTY_REQUIRED = 'QTY_REQUIRED',\n PICKS_REQUIRED = 'PICKS_REQUIRED'\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {ProductionOrder} from '@domain/planning-prototype/carpet/production-order';\nimport {ProductionOrderCustomSettings} from '@domain/production-schedule/custom-settings/production-order-custom-settings';\nimport {FinishingForProductionSchedule} from '@domain/production-schedule/finishing-for-production-schedule';\nimport {ProductionSchedule} from '@domain/production-schedule/production-schedule';\nimport {FINISHINGS, Finishings} from '@infrastructure/http/finishing/finishings';\nimport {HttpProductionOrdersCustomSettingsService} from '@infrastructure/http/production-order-custom-settings/http-production-orders-custom-settings.service';\nimport {PRODUCTION_SCHEDULES, ProductionSchedules} from '@infrastructure/http/production-schedule/production-schedules';\nimport {OverviewListFinishing} from '@presentation/pages/textile-data/finishing/overview/overview-list-finishing';\nimport {AssertionUtils, DialogBuilderFactoryService, Unit} from '@vdw/angular-component-library';\nimport {map, Observable, of, switchMap, tap} from 'rxjs';\nimport {ConfirmProductionScheduleOnDesktopInput} from '../../production-schedule/confirm/confirm-desktop/confirm-production-schedule-desktop-input.interface';\nimport {ConfirmProductionScheduleDesktopComponent} from '../../production-schedule/confirm/confirm-desktop/confirm-production-schedule-desktop.component';\n\n@Injectable()\nexport class ProductionOrderUtilities {\n public productionOrderCustomSettings: ProductionOrderCustomSettings;\n\n public constructor(\n @Inject(PRODUCTION_SCHEDULES) private readonly productionSchedules: ProductionSchedules,\n @Inject(FINISHINGS) private readonly finishings: Finishings,\n private readonly httpProductionOrderCustomSettings: HttpProductionOrdersCustomSettingsService,\n private readonly dialogBuilder: DialogBuilderFactoryService\n ) {}\n\n public reconfirmOrder(order: ProductionOrder): Observable {\n return this.loadListOfProductionOrderCustomSettings().pipe(\n switchMap(() => this.productionSchedules.getById(order.id)),\n switchMap((schedule: ProductionSchedule) => this.updateFinishing(schedule)),\n switchMap((schedule: ProductionSchedule) => this.openReconfirmDialog(schedule))\n );\n }\n\n private openReconfirmDialog(schedule: ProductionSchedule): Observable {\n return this.dialogBuilder\n .getBuilder()\n .withClass('confirm-production-schedule-dialog')\n .withCloseDisabled()\n .openDialog(ConfirmProductionScheduleDesktopComponent, {\n productionSchedule: schedule,\n commercialUnit: Unit.CENTIMETER,\n productionOrderCustomSettings: this.productionOrderCustomSettings\n } as ConfirmProductionScheduleOnDesktopInput)\n .pipe(map((result: ProductionSchedule) => !AssertionUtils.isNullOrUndefined(result)));\n }\n\n private updateFinishing(schedule: ProductionSchedule): Observable {\n if (AssertionUtils.isNullOrUndefined(schedule.finishing)) {\n return of(schedule);\n }\n return this.finishings.getOverviewListFinishingById(schedule.finishing.id).pipe(\n tap((finishing: OverviewListFinishing) => schedule.updateFinishing(FinishingForProductionSchedule.fromOverviewListFinishing(finishing))),\n map(() => schedule)\n );\n }\n\n private loadListOfProductionOrderCustomSettings(): Observable {\n if (!AssertionUtils.isNullOrUndefined(this.productionOrderCustomSettings)) {\n return of(null);\n }\n return this.httpProductionOrderCustomSettings.get().pipe(\n tap((customSettings: ProductionOrderCustomSettings) => (this.productionOrderCustomSettings = customSettings)),\n map(() => null)\n );\n }\n}\n","
\n
\n \n
\n \n @if (getIsDifferentConfiguration()) {\n \n }\n @if (getIsPastDue()) {\n \n }\n
\n
\n @if (realTimeProgress | async; as progress) {\n
\n \n

\n
\n
\n \n

{{ progress.completionPercent | number: '1.0-0' }} %

\n
\n @if (isCarpet(order)) {\n
\n \n @if (order.productionOrder?.creel) {\n

{{ order.productionOrder.creel.name }}

\n } @else {\n \n }\n
\n
\n \n @if (order.productionOrder?.quality) {\n

{{ order.productionOrder.quality.name }}

\n } @else {\n \n }\n
\n }\n @if (isWeaving(order)) {\n
\n \n

{{ order.productionOrder.weaveProduct.name }}

\n
\n }\n @if (isTufting(order)) {\n
\n \n

{{ order.productionOrder.tuftProduct.name }}

\n
\n }\n @if (isPlastic(order)) {\n
\n \n

{{ order.productionOrder.plasticProduct.name }}

\n
\n }\n
\n \n @if (order.actualStartDate) {\n

{{ getDuration() }}

\n } @else {\n \n }\n
\n
\n \n @if (order.estimatedProductionTime) {\n

{{ getProductionTime() }}

\n } @else {\n \n }\n
\n
\n \n

{{ progress.quantityProduced | number: '1.0-0' }} {{ getQuantityUnit() | bmsTranslate }}

\n
\n
\n \n

{{ progress.quantityRequired | number: '1.0-0' }} {{ getQuantityUnit() | bmsTranslate }}

\n
\n }\n
\n \n

{{ order.actualStartDate ?? forecast.estimatedStart | DateTime: 'DATETIME_MED_WITH_WEEKDAY' }}

\n
\n
\n \n @if (order.actualEndDate) {\n

{{ order.actualEndDate | DateTime: 'DATETIME_MED_WITH_WEEKDAY' }}

\n } @else {\n \n }\n
\n
\n \n

\n {{ forecast?.estimatedEnd ?? order.estimatedEndDate ?? order.actualEndDate | DateTime: 'DATETIME_MED_WITH_WEEKDAY' }}\n

\n
\n
\n \n @if (order.productionOrder?.dueDate; as dueDate) {\n

{{ dueDate | DateTime: 'DATETIME_MED_WITH_WEEKDAY' }}

\n } @else {\n \n }\n
\n\n \n

n/a

\n
\n
\n\n@if (order.productionOrder) {\n
\n @if (order.productionOrder.status === 'TO_RECONFIRM') {\n \n }\n @if (!order.actualStartDate) {\n \n }\n @if (order.productionOrder.status === 'CREATED') {\n \n }\n \n
\n}\n","import {Component, Inject, OnInit} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {Router} from '@angular/router';\nimport {PlanningItemHelper} from '@application/helper/planning-prototype/planning-item-helper';\nimport {RouteUtils} from '@application/helper/routing/route-utils';\nimport {OrderCarpet} from '@domain/planning-prototype/carpet/order-carpet';\nimport {ProductionOrder} from '@domain/planning-prototype/carpet/production-order';\nimport {GenericOrder} from '@domain/planning-prototype/generic-order.interface';\nimport {PlanningEquipment} from '@domain/planning-prototype/planning-equipment';\nimport {PlanningItem} from '@domain/planning-prototype/planning-item';\nimport {PlanningItemForecast} from '@domain/planning-prototype/planning-item-forecast';\nimport {OrderPlastic} from '@domain/planning-prototype/plastic/order-plastic';\nimport {ReportItemField} from '@domain/planning-prototype/real-time/report-item-field.enum';\nimport {ReportItemUpdate} from '@domain/planning-prototype/real-time/report-item-update';\nimport {OrderTufting} from '@domain/planning-prototype/tufting/order-tufting';\nimport {OrderWeaving} from '@domain/planning-prototype/weaving/order-weaving';\nimport {ProductionScheduleStatus} from '@domain/production-schedule/production-schedule-status.enum';\nimport {Permission} from '@domain/profile/permission.enum';\nimport {Subscription} from '@domain/profile/subscription';\nimport {AUTHENTICATION, Authentication} from '@infrastructure/http/authentication/authentication';\nimport {SignalRPlanningPrototypeService} from '@infrastructure/signalr/planning-prototype/signalr-planning-prototype.service';\nimport {AssertionUtils, BaseComponent} from '@vdw/angular-component-library';\nimport moment, {Moment, duration} from 'moment';\nimport {Observable, combineLatest, concat, distinctUntilChanged, filter, finalize, map, of, startWith, switchMap, takeUntil, tap} from 'rxjs';\nimport {PlanningPrototypeContextService} from '../../utilities/planning-prototype-context.service';\nimport {ProductionOrderUtilities} from '../../utilities/production-order-utilities.service';\nimport {PlanningItemSidebarComponent} from '../planning-item-sidebar/planning-item-sidebar.component';\nimport {OrderProgress} from './order-progress';\n\n@Component({\n selector: 'app-planning-order-sidebar',\n templateUrl: './planning-order-sidebar.component.html',\n styleUrls: ['./planning-order-sidebar.component.scss']\n})\nexport class PlanningOrderSidebarComponent extends BaseComponent implements OnInit {\n public readonly DURATION_FORMAT_STRING = 'd[d] h[h] m[m]';\n public readonly DURATION_FORMAT_OPTIONS: moment.DurationFormatSettings = {trim: 'both'};\n private isReconfirming = false;\n private currentSubscription: Subscription;\n\n public readonly realTimeProgress = combineLatest([this.planningContext.selectedItemChanges, this.planningContext.planningLineChanges.pipe(startWith(of(null)))]).pipe(\n distinctUntilChanged(),\n filter(([selectedItem, _]: [PlanningItem, any]) => PlanningItemHelper.isOrderItem(selectedItem)),\n switchMap(([order, _]: [GenericOrder, any]) => this.getRealTimeProgress(order)),\n takeUntilDestroyed()\n );\n\n public get order(): GenericOrder {\n return this.parent.planningItem as any;\n }\n\n public get machine(): PlanningEquipment {\n return this.parent.machine;\n }\n\n public get forecast(): PlanningItemForecast {\n return this.planningContext.sortedPlanningItemForecasts[this.order.draftId];\n }\n\n public constructor(\n @Inject(AUTHENTICATION) private readonly authentication: Authentication,\n private readonly parent: PlanningItemSidebarComponent,\n private readonly planningContext: PlanningPrototypeContextService,\n private readonly productionOrderUtilities: ProductionOrderUtilities,\n private readonly realTimePlanning: SignalRPlanningPrototypeService,\n private readonly router: Router\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.currentSubscription = this.authentication.getCurrentSubscription();\n }\n\n public getProductionTime(): string {\n return duration(this.order.estimatedProductionTime).format(this.DURATION_FORMAT_STRING, this.DURATION_FORMAT_OPTIONS);\n }\n\n public getDuration(): string {\n let end: Moment;\n if (AssertionUtils.isNullOrUndefined(this.order.actualEndDate)) {\n end = moment();\n } else {\n end = moment(this.order.actualEndDate);\n }\n return duration(end.diff(moment(this.order.actualStartDate))).format(this.DURATION_FORMAT_STRING, this.DURATION_FORMAT_OPTIONS);\n }\n\n public getIconNameForProductionOrderStatus(): string {\n return ProductionScheduleStatus.getStatusIconName(this.getProductionOrderStatus());\n }\n\n public getIsDifferentConfiguration(): boolean {\n return this.planningContext.productChanges.includes(this.order.draftId);\n }\n\n public getIsPastDue(): boolean {\n if (AssertionUtils.isNullOrUndefined(this.order.productionOrder?.dueDate)) {\n return false;\n }\n return PlanningItemHelper.getTimelineEndDate(this.order, this.forecast) > this.order.productionOrder?.dueDate;\n }\n\n public getQuantityUnit(): string {\n if (this.isTufting(this.order) || this.isWeaving(this.order)) {\n return 'GENERAL.UNIT.METER';\n }\n if (this.isPlastic(this.order)) {\n return `GENERAL.UNIT.${this.order.productionOrder.plasticProduct.unitOfMeasurement}`;\n }\n\n return 'GENERAL.UNIT.PICKS';\n }\n\n public openOrderDetails(): void {\n let url: string;\n if (this.isCarpet(this.order)) {\n if (this.hasPermissionToGoToNewBuilder()) {\n url = RouteUtils.paths.texFab.productionOrder.editProductionOrderNewView.absolutePath;\n } else {\n url = RouteUtils.paths.texFab.productionOrder.editProductionOrder.absolutePath;\n }\n } else if (this.isWeaving(this.order)) {\n url = RouteUtils.paths.texFab.weaving.editProductionOrder.absolutePath;\n } else if (this.isTufting(this.order)) {\n url = RouteUtils.paths.texFab.tufting.editProductionOrder.absolutePath;\n } else if (this.isPlastic(this.order)) {\n url = RouteUtils.paths.texFab.plastic.editProductionOrder.absolutePath;\n }\n\n this.router.navigate([url.replace(':id', this.order.productionOrder.id.toString())]);\n }\n\n public isCarpet(order: PlanningItem): order is OrderCarpet {\n return order instanceof OrderCarpet;\n }\n\n public isWeaving(order: PlanningItem): order is OrderWeaving {\n return order instanceof OrderWeaving;\n }\n\n public isTufting(order: PlanningItem): order is OrderTufting {\n return order instanceof OrderTufting;\n }\n\n public isPlastic(order: PlanningItem): order is OrderPlastic {\n return order instanceof OrderPlastic;\n }\n\n public getProductionOrderStatus(): ProductionScheduleStatus {\n return PlanningItemHelper.getItemStatus(this.order);\n }\n\n public getIsStarted(): boolean {\n return !AssertionUtils.isNullOrUndefined(this.order.actualStartDate);\n }\n\n public delete(): void {\n const parentRun = this.planningContext.planningLinesByMachine[this.parent.machine.id].planningItems.find((item: PlanningItem) => item.planningItems.includes(this.order));\n this.planningContext.delete(this.order, parentRun.planningItems, this.parent.machine);\n }\n\n private getRealTimeProgress(order: GenericOrder): Observable {\n const genericProgress = of({\n completionPercent: this.getProgress(order),\n quantityProduced: this.getQuantityProduced(order),\n quantityRequired: this.getQuantityRequired(order)\n } as OrderProgress);\n\n if (!order.isActive) {\n return genericProgress;\n }\n\n const requestedReportItems = [ReportItemField.ORDER_PROGRESS];\n if (order instanceof OrderCarpet) {\n requestedReportItems.push(ReportItemField.PICKS_PRODUCED, ReportItemField.PICKS_REQUIRED);\n } else {\n requestedReportItems.push(ReportItemField.QTY_PRODUCED, ReportItemField.QTY_REQUIRED);\n }\n\n const machine = this.planningContext.machinesByPlanningItem[order.draftId];\n const realTimeUpdates = combineLatest(requestedReportItems.map((field: ReportItemField) => this.realTimePlanning.getReportItemUpdates(machine.id, field))).pipe(\n map(\n ([progress, quantityProduced, quantityRequired]: [ReportItemUpdate, ReportItemUpdate, ReportItemUpdate]) =>\n ({\n completionPercent: progress.value,\n quantityProduced: quantityProduced.value,\n quantityRequired: quantityRequired.value\n }) as OrderProgress\n )\n );\n\n return concat(genericProgress, realTimeUpdates);\n }\n\n private getProgress(order: GenericOrder): number {\n return (this.getQuantityProduced(order) / this.getQuantityRequired(order)) * 100;\n }\n\n private getQuantityRequired(order: GenericOrder): number {\n if (this.isTufting(order) || this.isWeaving(order)) {\n return order.productionOrder.plannedQuantityInMeters;\n }\n\n if (this.isPlastic(order)) {\n return order.productionOrder.plannedQuantity;\n }\n\n return order.productionOrder?.plannedQuantityInPicks;\n }\n\n private getQuantityProduced(order: GenericOrder): number {\n if (this.isTufting(order) || this.isWeaving(order)) {\n return order.producedQuantityInMeters;\n }\n\n if (this.isPlastic(order)) {\n return order.producedQuantity;\n }\n\n return order.producedQuantityInPicks;\n }\n\n private hasPermissionToGoToNewBuilder(): boolean {\n return this.currentSubscription?.hasPermission(Permission.TEXFAB_NEW_BUILDER);\n }\n\n public reconfirmOrder(): void {\n if (!(this.order.productionOrder instanceof ProductionOrder) || this.isReconfirming) {\n return;\n }\n this.isReconfirming = true;\n this.productionOrderUtilities\n .reconfirmOrder(this.order.productionOrder)\n .pipe(\n finalize(() => (this.isReconfirming = false)),\n takeUntil(this.unSubscribeOnViewDestroy),\n filter((confirmed: boolean) => confirmed)\n )\n .subscribe(() => {\n this.order.productionOrder.status = ProductionScheduleStatus.VERIFIED;\n });\n }\n}\n","
\n
\n

\n {{ 'TEXTILE_DATA.COLORED_YARN_SET.COLORED_YARN_SET' | bmsTranslate: {count: 2} }}\n

\n
\n {{ 'MACHINE.DETAILS.THEORETICAL' | bmsTranslate }}\n \n {{ 'MACHINE.DETAILS.ACTIVE' | bmsTranslate }}\n
\n
\n {{ 'TEXTILE_DATA.COLOR.COLOR' | bmsTranslate: {count: 2} }}\n \n {{ 'TEXTILE_DATA.YARN_TYPE.YARN_TYPE' | bmsTranslate: {count: 2} }}\n
\n
\n
\n \n \n
\n
\n \n
\n
\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {NavigationHelperService} from '@application/helper/navigation-helper/navigation-helper.service';\nimport {PreviewMap} from '@presentation/components/creel-tables/preview-map';\nimport {PreviewType} from '@presentation/pages/textile-data/creel/add/preview-type';\nimport {OverviewListCreel} from '@presentation/pages/textile-data/creel/overview/overview-list-creel';\nimport {AssertionUtils, BaseComponent} from '@vdw/angular-component-library';\nimport {NavigationCreelMappingDisplay} from './navigation-creel-mapping-display.interface';\n\n@Component({\n selector: 'app-creel-mapping-display',\n templateUrl: './creel-mapping-display.component.html',\n styleUrls: ['./creel-mapping-display.component.scss']\n})\nexport class CreelMappingDisplayComponent extends BaseComponent {\n @Input() public creelForm: FormControl;\n @Input() public canEditCreelMapping = false;\n @Output() public editCreelMapping = new EventEmitter();\n\n public creelPreviewMap = PreviewMap.THEORETICAL;\n public creelPreviewType = PreviewType.COLOR;\n\n public get creel(): OverviewListCreel {\n return this.creelForm.value;\n }\n\n public constructor(private readonly navigationService: NavigationHelperService) {\n super();\n\n let emptyObj = {creelPreviewMap: null, creelPreviewType: null};\n let prevData = this.navigationService.getPartialState(Object.keys(emptyObj));\n if (!AssertionUtils.isNullOrUndefined(prevData)) {\n this.creelPreviewMap = prevData.creelPreviewMap;\n this.creelPreviewType = prevData.creelPreviewType;\n }\n }\n\n public onNavigationHelperDestroy(): void {\n this.navigationService.savePartialState({\n creelPreviewMap: this.creelPreviewMap,\n creelPreviewType: this.creelPreviewType\n });\n }\n\n public isPreviewMapToggled(): boolean {\n return this.creelPreviewMap === PreviewMap.ACTIVE;\n }\n\n public isPreviewTypeToggled(): boolean {\n return this.creelPreviewType === PreviewType.YARN_TYPE;\n }\n\n public togglePreviewMap(toggled: boolean): void {\n this.creelPreviewMap = toggled ? PreviewMap.ACTIVE : PreviewMap.THEORETICAL;\n }\n\n public togglePreviewType(toggled: boolean): void {\n this.creelPreviewType = toggled ? PreviewType.YARN_TYPE : PreviewType.COLOR;\n }\n}\n","\n \n \n

{{ coloredYarnSetWithStartDent.coloredYarnSet.name }}

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

\n {{ 'MACHINE.DETAILS.CREEL_MAPPING.TITLE' | bmsTranslate }}\n

\n
\n {{ 'TEXTILE_DATA.COLOR.COLOR' | bmsTranslate: {count: 2} }}\n \n {{ 'TEXTILE_DATA.YARN_TYPE.YARN_TYPE' | bmsTranslate: {count: 2} }}\n
\n
\n
\n \n \n
\n
\n
\n","import {Component, Input} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {MatSlideToggleChange} from '@angular/material/slide-toggle';\nimport {PreviewType} from '@presentation/pages/textile-data/creel/add/preview-type';\nimport {OverviewListCreel} from '@presentation/pages/textile-data/creel/overview/overview-list-creel';\n\n@Component({\n selector: 'app-creel-mapping-edit',\n templateUrl: './creel-mapping-edit.component.html',\n styleUrls: ['./creel-mapping-edit.component.scss']\n})\nexport class CreelMappingEditComponent {\n @Input() public creelForm: FormControl;\n\n public get creel(): OverviewListCreel {\n return this.creelForm.value;\n }\n\n private _previewTypes: {[index: number]: PreviewType} = {};\n\n public getPreviewType(index: number): PreviewType {\n return this._previewTypes[index] ?? PreviewType.COLOR;\n }\n\n public togglePreviewType(event: MatSlideToggleChange, index: number): void {\n this._previewTypes[index] = event.checked ? PreviewType.YARN_TYPE : PreviewType.COLOR;\n }\n}\n","@if (!editCreelMappingActive) {\n
\n
\n \n\n
\n @if (isCarpet) {\n \n {{ 'TEXTILE_DATA.CREEL.CREEL' | bmsTranslate: {count: 1} }}\n \n \n \n {{ 'GENERAL.ERRORS.REQUIRED' | bmsTranslate }}\n \n \n\n \n {{ 'TEXTILE_DATA.MACHINE_QUALITY.MACHINE_QUALITY' | bmsTranslate: {count: 1} }}\n \n \n \n {{ 'GENERAL.ERRORS.REQUIRED' | bmsTranslate }}\n \n \n }\n @if (isWeaving) {\n \n {{ 'TEXTILE_DATA.WEAVE_PRODUCT.WEAVE_PRODUCT' | bmsTranslate: {count: 1} }}\n \n \n {{ 'GENERAL.ERRORS.REQUIRED' | bmsTranslate }}\n \n \n }\n @if (isTufting) {\n \n {{ 'TEXTILE_DATA.TUFT_PRODUCT.TUFT_PRODUCT' | bmsTranslate: {count: 1} }}\n \n \n {{ 'GENERAL.ERRORS.REQUIRED' | bmsTranslate }}\n \n \n }\n\n @if (isPlastic) {\n \n \n {{ 'UTILITIES.TOOL.TOOL' | bmsTranslate: {count: 1} }}\n ({{ 'GENERAL.OPTIONAL' | bmsTranslate | lowercase }})\n \n \n \n }\n
\n\n \n \n \n
\n\n @if (!isCompleted) {\n
\n @if (!createItemMode) {\n @if (isCarpet) {\n
\n \n \n \n
\n }\n\n
\n \n
\n
\n \n
\n } @else {\n \n }\n
\n }\n} @else {\n
\n \n
\n
\n \n \n
\n}\n","import {ComponentType} from '@angular/cdk/portal';\nimport {Component, Inject, OnInit} from '@angular/core';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {Router} from '@angular/router';\nimport {GridIdentifier} from '@application/grids/grid-identifier.enum';\nimport {NavigationHelperService} from '@application/helper/navigation-helper/navigation-helper.service';\nimport {NavigationNewItemData} from '@application/helper/navigation-helper/navigation-new-item-data.interface';\nimport {PlanningItemHelper} from '@application/helper/planning-prototype/planning-item-helper';\nimport {RouteUtils} from '@application/helper/routing/route-utils';\nimport {IdName} from '@domain/id-name';\nimport {OrderCarpet} from '@domain/planning-prototype/carpet/order-carpet';\nimport {RunCarpet} from '@domain/planning-prototype/carpet/run-carpet';\nimport {GenericRun} from '@domain/planning-prototype/generic-run.interface';\nimport {PlanningEquipment} from '@domain/planning-prototype/planning-equipment';\nimport {PlanningItem} from '@domain/planning-prototype/planning-item';\nimport {RunPlastic} from '@domain/planning-prototype/plastic/run-plastic';\nimport {Tool} from '@domain/planning-prototype/plastic/tool';\nimport {RunTufting} from '@domain/planning-prototype/tufting/run-tufting';\nimport {TuftProduct} from '@domain/planning-prototype/tufting/tuft-product';\nimport {RunWeaving} from '@domain/planning-prototype/weaving/run-weaving';\nimport {WeaveProduct} from '@domain/planning-prototype/weaving/weave-product';\nimport {Permission} from '@domain/profile/permission.enum';\nimport {Subscription} from '@domain/profile/subscription';\nimport {CreelMap} from '@domain/textile-data/creel/creel-map';\nimport {WeaveQuality} from '@domain/textile-data/machine-quality/weave-quality';\nimport {Tool as UtilTool} from '@domain/utilities/tool/tool';\nimport {AUTHENTICATION, Authentication} from '@infrastructure/http/authentication/authentication';\nimport {CREELS, Creels} from '@infrastructure/http/creel/creels';\nimport {MACHINE_QUALITIES, MachineQualities} from '@infrastructure/http/machine-quality/machine-qualities';\nimport {HttpToolsService} from '@infrastructure/http/tool/http-tools.service';\nimport {HttpTuftProductsService} from '@infrastructure/http/tuft-product/http-tuft-products.service';\nimport {GetAllTuftProductsParameters} from '@infrastructure/http/tuft-product/tuft-products.interface';\nimport {WEAVE_PRODUCT, WeaveProducts} from '@infrastructure/http/weave-product/weave-products.interface';\nimport {SelectCreelComponent} from '@presentation/components/select-creel/select-creel.component';\nimport {SelectMachineQualityComponent} from '@presentation/components/select-machine-quality/select-machine-quality.component';\nimport {SelectWeaveProductComponent} from '@presentation/pages/texfab/production-order-lite/add/select-weave-product/select-weave-product.component';\nimport {SelectTuftProductComponent} from '@presentation/pages/texfab/tuft-production-order/add/select-tuft-product/select-tuft-product.component';\nimport {OverviewListCreel} from '@presentation/pages/textile-data/creel/overview/overview-list-creel';\nimport {OverviewListMachineQuality} from '@presentation/pages/textile-data/machine-quality/overview/overview-list-machine-quality';\nimport {OverviewListTuftProduct} from '@presentation/pages/textile-data/tuft-product/overview/overview-list-tuft-product';\nimport {OverviewListWeaveProduct} from '@presentation/pages/textile-data/weave-product/overview/overview-list-weave-product';\nimport {ToolOverviewService} from '@presentation/pages/utilities/tool/overview/tool-overview.service';\nimport {\n AgGridRowSelection,\n AssertionUtils,\n BaseComponent,\n CrudOverviewDataBuilderFactoryService,\n CrudOverviewDataConfig,\n DialogBuilderFactoryService,\n DialogComponentData,\n GridOptionsBuilder,\n MathUtils,\n SelectGridDialog,\n TranslateService\n} from '@vdw/angular-component-library';\nimport {ColDef} from 'ag-grid-community';\nimport {DateTime} from 'luxon';\nimport {duration} from 'moment';\nimport {Observable, debounceTime, distinctUntilChanged, filter, map, merge, startWith, takeUntil} from 'rxjs';\nimport {PlanningPrototypeContextService} from '../../utilities/planning-prototype-context.service';\nimport {NavigationPlanningRunSidebar} from './navigation-planning-run-sidebar.interface';\n\ntype ObjectSelectionType = Tool | UtilTool;\n\n@Component({\n selector: 'app-planning-run-sidebar',\n templateUrl: './planning-run-sidebar.component.html',\n styleUrls: ['./planning-run-sidebar.component.scss']\n})\nexport class PlanningRunSidebarComponent extends BaseComponent implements OnInit {\n public readonly QUALITY_CHIP_VALUE_KEY = '%(technicalNameWithVersion)';\n public readonly CREEL_BASE_ROUTER_LINK = RouteUtils.paths.texStyle.creel.editCreel.absolutePath;\n public readonly QUALITY_BASE_ROUTER_LINK = RouteUtils.paths.texStyle.machineQuality.editMachineQuality.absolutePath;\n public readonly WEAVE_PRODUCT_BASE_ROUTER_LINK = RouteUtils.paths.texStyle.weaveProduct.editWeaveProduct.absolutePath;\n public readonly TUFT_PRODUCT_BASE_ROUTER_LINK = RouteUtils.paths.texStyle.tuftProduct.editTuftProduct.absolutePath;\n public readonly TOOL_BASE_ROUTER_LINK = RouteUtils.paths.utilities.tool.editTool.absolutePath;\n public readonly UNKNOWN_VALUE_KEY = 'PLANNING.UNKNOWN';\n private readonly SELECT_OBJECT_KEY = 'GENERAL.ACTIONS.SELECT_OBJECT';\n\n public readonly runForm = new FormGroup({\n creel: new FormControl(null),\n machineQuality: new FormControl(null),\n weaveProduct: new FormControl(null),\n tuftProduct: new FormControl(null),\n tool: new FormControl(null),\n planningItems: new FormControl([]),\n earliestStartDate: new FormControl(null),\n creelMappingFormula: new FormControl(null),\n minimumDuration: new FormControl(null, [Validators.min(0)])\n });\n\n public isCarpet = false;\n public isWeaving = false;\n public isTufting = false;\n public isPlastic = false;\n public isCompleted = false;\n public isStarted = false;\n public editCreelMappingActive = false;\n public createItemMode = false;\n public run: GenericRun;\n private toolObjectSelectionConfig: CrudOverviewDataConfig;\n private currentSubscription: Subscription;\n\n public get machine(): PlanningEquipment {\n return this.planningContext.machinesByPlanningItem[this.run.draftId];\n }\n\n public set machine(value: PlanningEquipment) {\n this.planningContext.machinesByPlanningItem[this.run.draftId] = value;\n }\n\n public constructor(\n private readonly planningContext: PlanningPrototypeContextService,\n private readonly translate: TranslateService,\n private readonly dialogBuilderFactoryService: DialogBuilderFactoryService,\n private readonly toolOverviewService: ToolOverviewService,\n private readonly crudOverviewBuilder: CrudOverviewDataBuilderFactoryService,\n private readonly router: Router,\n private readonly tools: HttpToolsService,\n private readonly navigationHelperService: NavigationHelperService,\n private readonly tuftProducts: HttpTuftProductsService,\n @Inject(CREELS) private readonly creels: Creels,\n @Inject(MACHINE_QUALITIES) private readonly qualities: MachineQualities,\n @Inject(AUTHENTICATION) private authentication: Authentication,\n @Inject(WEAVE_PRODUCT) private readonly weaveProducts: WeaveProducts\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.currentSubscription = this.authentication.getCurrentSubscription();\n this.resetFormOnSelectedPlanningItemChanged();\n this.changeProductEnabledStateOnChildrenChanged();\n this.applyCreelMappingOnSelectedCreelChanged();\n this.changePlanningItemsEnabledStateOnProductChanged();\n this.initObjectSelectionConfigs();\n\n let prevState = this.navigationHelperService.getPartialState(Object.keys(this.getEmptyPlanningRunSidebar()));\n if (!AssertionUtils.isNullOrUndefined(prevState)) {\n this.runForm.patchValue({\n creel: prevState.creel,\n machineQuality: prevState.machineQuality,\n weaveProduct: prevState.weaveProduct,\n tuftProduct: prevState.tuftProduct,\n tool: prevState.tool,\n planningItems: prevState.planningItems,\n earliestStartDate: prevState.earliestStartDate ? DateTime.fromJSDate(prevState.earliestStartDate) : null,\n creelMappingFormula: prevState.creelMappingFormula,\n minimumDuration: prevState.minimumDuration\n });\n this.editCreelMappingActive = prevState.editCreelMappingActive;\n this.isCarpet = prevState.isCarpet;\n this.isWeaving = prevState.isWeaving;\n this.isTufting = prevState.isTufting;\n this.isPlastic = prevState.isPlastic;\n this.isCompleted = prevState.isCompleted;\n this.isStarted = prevState.isStarted;\n this.createItemMode = prevState.createItemMode1;\n this.run = prevState.run;\n this.machine = prevState.machineData;\n this.planningContext.planningLinesByMachine[this.machine.id].planningItems = prevState.planningLinesByMachine;\n this.planningContext.sortedPlanningItemForecasts = prevState.sortedPlanningItemForecasts;\n }\n\n const getFunctionsBasedOnDialogComponent = new Map([\n [SelectCreelComponent, {loadNewItem: ({newItemId}: any): void => this.setCreel(newItemId), reopenDialog: (): void => this.selectCreel()}],\n [SelectMachineQualityComponent, {loadNewItem: ({newItemId}: NavigationNewItemData): void => this.setQuality(newItemId), reopenDialog: (): void => this.selectMachineQuality()}],\n [SelectWeaveProductComponent, {loadNewItem: ({newItemId}: NavigationNewItemData): void => this.setWeaveProduct(newItemId), reopenDialog: (): void => this.selectWeaveProduct()}],\n [SelectTuftProductComponent, {loadNewItem: ({newItemId}: NavigationNewItemData): void => this.setTuftProduct(newItemId), reopenDialog: (): void => this.selectTuftProduct()}]\n ]);\n\n this.navigationHelperService.setNewItemOrReopenDialogIfPresent(\n ({newItemId}: NavigationNewItemData, {dialogComponent}: DialogComponentData) => getFunctionsBasedOnDialogComponent.get(dialogComponent).loadNewItem({newItemId}),\n ({dialogComponent}: DialogComponentData) => getFunctionsBasedOnDialogComponent.get(dialogComponent).reopenDialog()\n );\n }\n\n public selectCreel(): void {\n this.openSelectDialog(SelectCreelComponent, 'TEXTILE_DATA.CREEL.CREEL')\n .pipe(\n takeUntil(this.unSubscribeOnViewDestroy),\n filter((selectedCreels: OverviewListCreel[]) => !AssertionUtils.isEmpty(selectedCreels))\n )\n .subscribe(([selectedCreel]: OverviewListCreel[]) => {\n this.runForm.controls.creel.setValue(selectedCreel);\n this.runForm.controls.creel.markAsDirty();\n });\n }\n\n public onNavigationHelperDestroy(): void {\n this.navigationHelperService.savePartialState({\n creel: this.runForm.get('creel').value,\n machineQuality: this.runForm.get('machineQuality').value,\n weaveProduct: this.runForm.get('weaveProduct').value,\n tuftProduct: this.runForm.get('tuftProduct').value,\n tool: this.runForm.get('tool').value,\n planningItems: this.runForm.get('planningItems').value,\n earliestStartDate: this.runForm.get('earliestStartDate').value?.toJSDate(),\n creelMappingFormula: this.runForm.get('creelMappingFormula').value,\n minimumDuration: this.runForm.get('minimumDuration').value,\n editCreelMappingActive: this.editCreelMappingActive,\n isCarpet: this.isCarpet,\n isWeaving: this.isWeaving,\n isTufting: this.isTufting,\n isPlastic: this.isPlastic,\n isCompleted: this.isCompleted,\n isStarted: this.isStarted,\n createItemMode1: this.createItemMode,\n run: this.run,\n machineData: this.machine,\n planningLinesByMachine: this.planningContext.planningLinesByMachine[this.machine.id].planningItems,\n sortedPlanningItemForecasts: this.planningContext.sortedPlanningItemForecasts\n });\n }\n\n public selectMachineQuality(): void {\n this.openSelectDialog(SelectMachineQualityComponent, 'TEXTILE_DATA.MACHINE_QUALITY.MACHINE_QUALITY')\n .pipe(\n takeUntil(this.unSubscribeOnViewDestroy),\n filter((selectedQualities: OverviewListMachineQuality[]) => !AssertionUtils.isEmpty(selectedQualities))\n )\n .subscribe(([selectedQuality]: OverviewListMachineQuality[]) => {\n this.runForm.controls.machineQuality.setValue(new IdName(selectedQuality.id, selectedQuality.technicalNameWithVersion));\n this.runForm.controls.machineQuality.markAsDirty();\n });\n }\n\n public selectWeaveProduct(): void {\n this.openSelectDialog(SelectWeaveProductComponent, 'TEXTILE_DATA.WEAVE_PRODUCT.WEAVE_PRODUCT')\n .pipe(\n takeUntil(this.unSubscribeOnViewDestroy),\n filter((selectedWeaveProduct: OverviewListWeaveProduct | '') => !AssertionUtils.isNullOrUndefined(selectedWeaveProduct) && selectedWeaveProduct !== '')\n )\n .subscribe((selectedWeaveProduct: OverviewListWeaveProduct) => {\n this.runForm.controls.weaveProduct.setValue(WeaveProduct.fromOverviewListWeaveProduct(selectedWeaveProduct));\n this.runForm.controls.weaveProduct.markAsDirty();\n });\n }\n\n public selectTuftProduct(): void {\n this.openSelectDialog(SelectTuftProductComponent, 'TEXTILE_DATA.TUFT_PRODUCT.TUFT_PRODUCT')\n .pipe(\n takeUntil(this.unSubscribeOnViewDestroy),\n filter((selectedTuftProduct: OverviewListTuftProduct | '') => !AssertionUtils.isNullOrUndefined(selectedTuftProduct) && selectedTuftProduct !== '')\n )\n .subscribe((selectedTuftProduct: OverviewListTuftProduct) => {\n this.runForm.controls.tuftProduct.setValue(TuftProduct.fromOverviewListTuftProduct(selectedTuftProduct));\n this.runForm.controls.tuftProduct.markAsDirty();\n });\n }\n\n public selectTool(): void {\n this.openObjectSelectionDialog(this.runForm.controls.tool, this.toolObjectSelectionConfig);\n }\n\n public delete(): void {\n this.planningContext.delete(this.run, this.planningContext.planningLinesByMachine[this.machine.id].planningItems, this.machine);\n }\n\n public isCreelSelected(): boolean {\n return this.isCarpet && !AssertionUtils.isNullOrUndefined(this.runForm.controls.creel.value);\n }\n\n public hasOrders(): boolean {\n return !AssertionUtils.isEmpty(this.runForm.controls.planningItems.value);\n }\n\n public getUnknownItemPlaceholder(): string {\n if (!this.hasOrders() || !this.isCompleted) {\n return null;\n }\n return this.translate.instant(this.UNKNOWN_VALUE_KEY);\n }\n\n public saveChanges(): void {\n this.planningContext.selectItem(null);\n if (!this.runForm.dirty) {\n return;\n }\n this.run.earliestStartDate = this.runForm.controls.earliestStartDate.value?.toJSDate();\n this.run.minimumDuration = duration(this.runForm.controls.minimumDuration.value, 'hours').format('d.hh:mm:ss', {trim: 'both', stopTrim: 'h m s'});\n this.savePlanningItems();\n\n if (this.run instanceof RunCarpet) {\n this.saveCarpetProperties(this.run);\n }\n\n if (this.run instanceof RunWeaving) {\n this.run.weaveProduct = this.runForm.controls.weaveProduct.value;\n }\n\n if (this.run instanceof RunTufting) {\n this.run.tuftProduct = this.runForm.controls.tuftProduct.value;\n }\n\n if (this.run instanceof RunPlastic) {\n const toolValue = this.runForm.controls.tool.value;\n this.run.tool = !AssertionUtils.isNullOrUndefined(toolValue) ? new Tool(toolValue.id, toolValue.name, null, null) : null;\n }\n\n this.planningContext.markAsChanged(this.machine);\n }\n\n public createItem(): void {\n this.planningContext.itemCreationPlaceholder = null;\n this.planningContext.addItemToList(\n this.run,\n this.planningContext.planningLinesByMachine[this.machine.id].planningItems,\n this.planningContext.sortedPlanningItemForecasts[this.run.draftId].estimatedStart\n );\n this.saveChanges();\n }\n\n public confirmCreelMapChanges(): void {\n this.editCreelMappingActive = false;\n const creel = this.runForm.controls.creel.value;\n\n const creelMapsWithOnlyChangedPositions = creel.mappingForCurrentPositionOnMachine\n .map((creelMap: CreelMap) => ({\n coloredYarnSetId: creelMap.coloredYarnSetId,\n creelPositions: creelMap.creelPositions.filter((position: {creelPosition: number; currentPositionOnMachine: number}) => position.creelPosition !== position.currentPositionOnMachine)\n }))\n .filter(({creelPositions}: CreelMap) => !AssertionUtils.isEmpty(creelPositions));\n\n const creelMappingFormula = creelMapsWithOnlyChangedPositions\n .map(\n (creelMapChanges: CreelMap) =>\n `${creelMapChanges.coloredYarnSetId}:${creelMapChanges.creelPositions\n .map((position: {creelPosition: number; currentPositionOnMachine: number}) => `${position.creelPosition}.${position.currentPositionOnMachine}`)\n .join(',')}`\n )\n .join('&');\n\n this.runForm.controls.creelMappingFormula.setValue(creelMappingFormula);\n this.runForm.controls.creelMappingFormula.markAsDirty();\n }\n\n public discardCreelMapChanges(): void {\n this.editCreelMappingActive = false;\n this.runForm.controls.creelMappingFormula.setValue(this.runForm.controls.creelMappingFormula.value);\n }\n\n public canCreateOrderForRun(): boolean {\n return !AssertionUtils.isNullOrUndefined(this.run.id) && !this.run.isCompleted;\n }\n\n public addOrderForRun(): void {\n if (this.run instanceof RunCarpet) {\n this.router.navigate(\n [\n this.hasPermissionToGoToNewBuilder()\n ? RouteUtils.paths.texFab.productionOrder.addProductionOrderNewViewForRun.absolutePath\n : RouteUtils.paths.texFab.productionOrder.addProductionOrderForRun.absolutePath\n ],\n {\n state: {\n runId: this.run.id,\n machineQualityId: this.run.quality.id,\n creelId: this.run.creel.id,\n machineId: this.machine.id,\n startRoute: RouteUtils.paths.texFab.planningPrototype.absolutePath\n }\n }\n );\n }\n }\n\n private getEmptyPlanningRunSidebar(): NavigationPlanningRunSidebar {\n return {\n creel: null,\n machineQuality: null,\n weaveProduct: null,\n tuftProduct: null,\n tool: null,\n planningItems: null,\n earliestStartDate: null,\n creelMappingFormula: null,\n minimumDuration: null,\n isCarpet: null,\n isWeaving: null,\n isTufting: null,\n isPlastic: null,\n isCompleted: null,\n isStarted: null,\n editCreelMappingActive: null,\n createItemMode1: null,\n run: null,\n machineData: null,\n planningLinesByMachine: null,\n sortedPlanningItemForecasts: null\n };\n }\n\n private resetForm(run: GenericRun): void {\n this.run = run;\n this.editCreelMappingActive = false;\n this.createItemMode = run === this.planningContext.itemCreationPlaceholder;\n this.runForm.reset();\n const planningItems = [...run.planningItems];\n planningItems.sort(PlanningItem.compareBySequenceNumber);\n this.runForm.controls.planningItems.setValue(planningItems);\n this.isCarpet = this.isWeaving = this.isTufting = this.isPlastic = false;\n this.isCompleted = !AssertionUtils.isNullOrUndefined(run.actualEndDate);\n this.isStarted = !AssertionUtils.isNullOrUndefined(run.actualStartDate);\n this.runForm.controls.earliestStartDate.setValue(run.earliestStartDate ? DateTime.fromJSDate(run.earliestStartDate) : null);\n this.runForm.controls.minimumDuration.setValue(MathUtils.round(duration(run.minimumDuration).asHours(), 2));\n\n this.runForm.controls.creel.removeValidators([Validators.required]);\n this.runForm.controls.machineQuality.removeValidators([Validators.required]);\n this.runForm.controls.weaveProduct.removeValidators([Validators.required]);\n this.runForm.controls.tuftProduct.removeValidators([Validators.required]);\n\n if (this.isStarted) {\n this.runForm.controls.earliestStartDate.disable();\n this.runForm.controls.minimumDuration.disable();\n } else {\n this.runForm.controls.earliestStartDate.enable();\n this.runForm.controls.minimumDuration.enable();\n }\n\n if (run instanceof RunCarpet) {\n this.isCarpet = true;\n this.runForm.controls.machineQuality.addValidators([Validators.required]);\n this.runForm.controls.creel.addValidators([Validators.required]);\n this.runForm.controls.creelMappingFormula.setValue(run.creelMappingFormula);\n this.runForm.controls.machineQuality.setValue(run.quality);\n if (!AssertionUtils.isNullOrUndefined(run.creel?.id)) {\n this.runForm.controls.creel.markAsDirty();\n this.creels\n .getById(run.creel.id)\n .pipe(takeUntil(this.unSubscribeOnViewDestroy))\n .subscribe((creel: OverviewListCreel) => this.runForm.controls.creel.setValue(creel));\n }\n }\n\n if (run instanceof RunWeaving) {\n this.isWeaving = true;\n this.runForm.controls.weaveProduct.addValidators([Validators.required]);\n this.runForm.controls.weaveProduct.setValue(run.weaveProduct);\n }\n\n if (run instanceof RunTufting) {\n this.isTufting = true;\n this.runForm.controls.tuftProduct.addValidators([Validators.required]);\n this.runForm.controls.tuftProduct.setValue(run.tuftProduct);\n }\n\n if (run instanceof RunPlastic) {\n this.isPlastic = true;\n this.runForm.controls.tool.setValue(run.tool);\n }\n }\n\n private getCreelMappingFromFormula(creel: OverviewListCreel, creelMappingFormula: string): void {\n creel.mappingForCurrentPositionOnMachine = creel.getOriginalMappingForCurrentPositionOnMachine();\n if (AssertionUtils.isEmpty(creelMappingFormula)) {\n return;\n }\n\n const colorSets = creelMappingFormula.split('&');\n for (const colorSet of colorSets) {\n const [coloredYarnSetId, colorSetData] = colorSet.split(':');\n const mapToUpdate = creel.mappingForCurrentPositionOnMachine.find((mapping: CreelMap) => mapping.coloredYarnSetId === Number(coloredYarnSetId));\n if (AssertionUtils.isNullOrUndefined(mapToUpdate)) {\n continue;\n }\n for (const creelPositionsData of colorSetData.split(',')) {\n const [creelPosition, currentPositionOnMachine] = creelPositionsData.split('.').map(Number);\n const positionToUpdate = mapToUpdate.creelPositions.find((position: {creelPosition: number}) => position.creelPosition === creelPosition);\n positionToUpdate.currentPositionOnMachine = currentPositionOnMachine;\n }\n }\n }\n\n private hasPermissionToGoToNewBuilder(): boolean {\n return this.currentSubscription?.hasPermission(Permission.TEXFAB_NEW_BUILDER);\n }\n\n private applyCreelMappingOnSelectedCreelChanged(): void {\n merge(this.runForm.controls.creel.valueChanges, this.runForm.controls.creelMappingFormula.valueChanges)\n .pipe(\n takeUntil(this.unSubscribeOnViewDestroy),\n debounceTime(0),\n startWith(undefined),\n map(() => [this.runForm.controls.creel.value, this.runForm.controls.creelMappingFormula.value]),\n filter(([creel, _]: [OverviewListCreel, string]) => !AssertionUtils.isNullOrUndefined(creel))\n )\n .subscribe(([creel, creelMapping]: [OverviewListCreel, string]) => this.getCreelMappingFromFormula(creel, creelMapping));\n }\n\n private changeProductEnabledStateOnChildrenChanged(): void {\n this.runForm.controls.planningItems.valueChanges\n .pipe(\n takeUntil(this.unSubscribeOnViewDestroy),\n startWith(undefined),\n map(() => this.runForm.controls.planningItems.value),\n distinctUntilChanged()\n )\n .subscribe((childItems: PlanningItem[]) => {\n const action = AssertionUtils.isEmpty(childItems) ? 'enable' : 'disable';\n this.runForm.controls.creel[action]();\n this.runForm.controls.machineQuality[action]();\n this.runForm.controls.weaveProduct[action]();\n this.runForm.controls.tuftProduct[action]();\n this.runForm.controls.tool[action]();\n });\n }\n\n private changePlanningItemsEnabledStateOnProductChanged(): void {\n merge(\n this.runForm.controls.creel.valueChanges,\n this.runForm.controls.machineQuality.valueChanges,\n this.runForm.controls.weaveProduct.valueChanges,\n this.runForm.controls.tuftProduct.valueChanges,\n this.runForm.controls.tool.valueChanges\n )\n .pipe(takeUntil(this.unSubscribeOnViewDestroy), debounceTime(0), startWith(undefined))\n .subscribe(() => {\n const planningItemsForm = this.runForm.controls.planningItems;\n\n const allowCarpetPlanning =\n this.isCarpet && !AssertionUtils.isNullOrUndefined(this.runForm.controls.creel.value) && !AssertionUtils.isNullOrUndefined(this.runForm.controls.machineQuality.value);\n const allowWeavingPlanning = this.isWeaving && !AssertionUtils.isNullOrUndefined(this.runForm.controls.weaveProduct.value);\n const allowTuftingPlanning = this.isTufting && !AssertionUtils.isNullOrUndefined(this.runForm.controls.tuftProduct.value);\n const allowPlasticPlanning = this.isPlastic;\n\n if (!this.isCompleted && (allowCarpetPlanning || allowWeavingPlanning || allowTuftingPlanning || allowPlasticPlanning)) {\n planningItemsForm.enable();\n } else {\n planningItemsForm.disable();\n }\n });\n }\n\n private resetFormOnSelectedPlanningItemChanged(): void {\n this.planningContext.selectedItemChanges.pipe(takeUntil(this.unSubscribeOnViewDestroy), filter(PlanningItemHelper.isRunItem)).subscribe((run: GenericRun) => this.resetForm(run));\n }\n\n private openSelectDialog(component: ComponentType, objectKey: string): Observable {\n return this.dialogBuilderFactoryService.getBuilder().openSelectGridDialog(component, {\n title: this.translate.instant(this.SELECT_OBJECT_KEY, {\n object: this.translate.instant(objectKey, {count: 1}).toLowerCase()\n }),\n rowSelection: AgGridRowSelection.SINGLE,\n machineId: this.machine.id,\n allowEmptySelection: false\n });\n }\n\n private openObjectSelectionDialog(control: FormControl, config: CrudOverviewDataConfig): void {\n config.selectedObjects = [control.value];\n this.crudOverviewBuilder\n .openObjectSelectionDialog(config)\n .pipe(takeUntil(this.unSubscribeOnViewDestroy))\n .subscribe((selectedObjects: T[]) => {\n if (!AssertionUtils.isEmpty(selectedObjects)) {\n control.setValue(selectedObjects[0]);\n control.markAsDirty();\n }\n });\n }\n\n private initObjectSelectionConfigs(): void {\n this.toolObjectSelectionConfig = this.initObjectSelectionConfig('UTILITIES.TOOL.TOOL', this.toolOverviewService.getColumnDefs(false).colDefs, GridIdentifier.TOOL_OVERVIEW, this.tools.getAll());\n }\n\n private initObjectSelectionConfig(\n translationKey: string,\n columns: ColDef[],\n gridIdentifier: GridIdentifier,\n dataObservable: Observable\n ): CrudOverviewDataConfig {\n return this.crudOverviewBuilder\n .getBuilder()\n .withEntityName(translationKey)\n .withGridOptions(columns, gridIdentifier, null, (gridOptions: GridOptionsBuilder) => {\n if (gridIdentifier === GridIdentifier.TOOL_OVERVIEW) {\n gridOptions = this.toolOverviewService.getDefaultGridOptionsBuilder(gridOptions);\n }\n return gridOptions.withRowSelection(false, false).build();\n })\n .withRowData(dataObservable)\n .build();\n }\n\n private saveCarpetProperties(run: RunCarpet): void {\n const creel = this.runForm.controls.creel.value;\n const quality = this.runForm.controls.machineQuality.value;\n run.creel = !AssertionUtils.isNullOrUndefined(creel) ? new IdName(creel.id, creel.name) : null;\n run.quality = !AssertionUtils.isNullOrUndefined(quality) ? new IdName(quality.id, quality.name) : null;\n run.creelMappingFormula = this.runForm.controls.creelMappingFormula.value;\n for (const order of this.run.planningItems) {\n if (order instanceof OrderCarpet) {\n order.creelMappingFormula = run.creelMappingFormula;\n }\n }\n }\n\n private savePlanningItems(): void {\n this.run.planningItems = this.runForm.controls.planningItems.value;\n let sequenceNumber = 1;\n for (const item of this.run.planningItems) {\n if (item.sequenceNumber > 0) {\n item.sequenceNumber = sequenceNumber++;\n }\n }\n }\n\n private setWeaveProduct(id: number): void {\n this.weaveProducts\n .getAllForMachineId(this.machine.id)\n .pipe(takeUntil(this.unSubscribeOnViewDestroy))\n .subscribe((weaveProducts: OverviewListWeaveProduct[]) => {\n let newWeaveProduct = weaveProducts.find((weaveProduct: OverviewListWeaveProduct) => weaveProduct.id === id);\n this.runForm.controls.machineQuality.setValue(new IdName(newWeaveProduct.id, newWeaveProduct.name));\n this.runForm.controls.machineQuality.markAsDirty();\n });\n }\n\n private setCreel(id: number): void {\n this.creels\n .getPossibleCreelsForMachine(this.machine.id)\n .pipe(takeUntil(this.unSubscribeOnViewDestroy))\n .subscribe((creels: OverviewListCreel[]) => {\n let newCreel = creels.find((creel: OverviewListCreel) => creel.id === id);\n if (!AssertionUtils.isNullOrUndefined(newCreel)) {\n this.runForm.controls.creel.setValue(newCreel);\n this.runForm.controls.creel.markAsDirty();\n }\n });\n }\n\n private setQuality(id: number): void {\n this.qualities\n .getPossibleMachineQualitiesForMachine(this.machine.id)\n .pipe(takeUntil(this.unSubscribeOnViewDestroy))\n .subscribe((qualities: WeaveQuality[]) => {\n let newQuality = qualities.find((quality: WeaveQuality) => quality.id === id);\n this.runForm.controls.machineQuality.setValue(new IdName(newQuality.id, newQuality.technicalNameWithVersion));\n this.runForm.controls.machineQuality.markAsDirty();\n });\n }\n\n private setTuftProduct(id: number): void {\n const parameters: Partial = {showOnlyLatestVersion: true};\n this.tuftProducts\n .getAllForMachineId(this.machine.id, parameters)\n .pipe(takeUntil(this.unSubscribeOnViewDestroy))\n .subscribe((tuftProducts: OverviewListTuftProduct[]) => {\n let newTuftProduct = tuftProducts.find((tuftProduct: OverviewListTuftProduct) => tuftProduct.id === id);\n this.runForm.controls.tuftProduct.setValue(TuftProduct.fromOverviewListTuftProduct(newTuftProduct));\n this.runForm.controls.tuftProduct.markAsDirty();\n });\n }\n}\n","import {Component, computed, inject} from '@angular/core';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\nimport {GridIdentifier} from '@application/grids/grid-identifier.enum';\nimport {PlanningItemHelper} from '@application/helper/planning-prototype/planning-item-helper';\nimport {FixedSchedule} from '@domain/planning-prototype/carpet/fixed-schedule';\nimport {FixedSchedulePlaceholder} from '@domain/planning-prototype/carpet/fixed-schedule-placeholder';\nimport {PlanningItem} from '@domain/planning-prototype/planning-item';\nimport {FixedScheduleToPlan} from '@domain/planning-prototype/to-plan/fixed-schedule-to-plan';\nimport {FixedScheduleOverviewService} from '@presentation/pages/textile-data/fixed-schedule/fixed-schedule-overview.service';\nimport {GridOptionsBuilderFactoryService, SelectGridDialog} from '@vdw/angular-component-library';\nimport {GetRowIdParams, GridApi, GridOptions, GridReadyEvent} from 'ag-grid-community';\nimport {PlanningPrototypeContextService} from '../../../utilities/planning-prototype-context.service';\nimport {SelectFixedScheduleParams} from './select-fixed-schedule-params';\n\n@Component({\n selector: 'app-select-fixed-schedule',\n templateUrl: './select-fixed-schedule.component.html',\n providers: [FixedScheduleOverviewService]\n})\nexport class SelectFixedScheduleComponent implements SelectGridDialog {\n private readonly gridOptionsBuilder = inject(GridOptionsBuilderFactoryService);\n private readonly planningContext = inject(PlanningPrototypeContextService);\n private readonly dialogRef = inject(MatDialogRef);\n private readonly dialogParams = inject(MAT_DIALOG_DATA);\n private readonly overviewService = inject(FixedScheduleOverviewService);\n\n public listOfGridOptions = [this.initGridOptions()];\n public listOfFixedSchedules = computed(() => this.filterFixedSchedules());\n public listOfGridApis: GridApi[] = [];\n\n public confirmSelection(): void {\n const selectedRows = this.listOfGridApis[0].getSelectedRows();\n this.dialogRef.close(selectedRows);\n }\n\n private filterFixedSchedules(): FixedSchedule[] {\n const fixedSchedulesToExclude = this.dialogParams.itemsSelectedAlready\n .filter((item: PlanningItem): item is FixedSchedulePlaceholder => item instanceof FixedSchedulePlaceholder)\n .map((placeholder: FixedSchedulePlaceholder) => placeholder.fixedSchedule.id);\n return this.planningContext.fixedSchedulesToPlan\n .filter(\n (toPlan: FixedScheduleToPlan) =>\n PlanningItemHelper.isFixedScheduleCompatible(toPlan, this.dialogParams.machine, this.dialogParams.creel, this.dialogParams.machineQuality) &&\n !fixedSchedulesToExclude.includes(toPlan.fixedSchedule.id)\n )\n .map((toPlan: FixedScheduleToPlan) => toPlan.fixedSchedule);\n }\n\n private initGridOptions(): GridOptions {\n return this.gridOptionsBuilder\n .getBuilder(this.overviewService.getColumnDefs(false), GridIdentifier.SELECT_FIXED_SCHEDULE)\n .withOnGridReady((ready: GridReadyEvent) => this.listOfGridApis.push(ready.api))\n .withColumnMenu()\n .withGetRowId((params: GetRowIdParams) => `${params.data.id}`)\n .withRowSelection(true)\n .build();\n }\n}\n","
\n \n\n
\n \n
\n\n \n
\n","import {Component, Inject, OnInit} from '@angular/core';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\nimport {GridIdentifier} from '@application/grids/grid-identifier.enum';\nimport {PlanningItemHelper} from '@application/helper/planning-prototype/planning-item-helper';\nimport {OrderCarpet} from '@domain/planning-prototype/carpet/order-carpet';\nimport {ProductionOrder} from '@domain/planning-prototype/carpet/production-order';\nimport {GenericOrder} from '@domain/planning-prototype/generic-order.interface';\nimport {PlanningItem} from '@domain/planning-prototype/planning-item';\nimport {PlanningItemType} from '@domain/planning-prototype/planning-item-type';\nimport {ProductionOrderPlastic} from '@domain/planning-prototype/plastic/production-order-plastic';\nimport {ProductionOrderToPlan} from '@domain/planning-prototype/to-plan/production-order-to-plan';\nimport {ProductionOrderTuft} from '@domain/planning-prototype/tufting/production-order-tuft';\nimport {ProductionOrderWeaving} from '@domain/planning-prototype/weaving/production-order-weaving';\nimport {\n AssertionUtils,\n BaseComponent,\n ColDefBuilderFactoryService,\n GridOptionsBuilderFactoryService,\n NoDataOverlayComponentParams,\n OverlayComponentParams,\n SelectGridDialog,\n StringUtils\n} from '@vdw/angular-component-library';\nimport {ColDef, GetRowIdParams, GridApi, GridOptions, GridReadyEvent} from 'ag-grid-community';\nimport {PlanningPrototypeContextService} from '../../../utilities/planning-prototype-context.service';\nimport {SelectUnplannedOrderParameters} from './select-unplanned-order-parameters';\n\n@Component({\n selector: 'app-select-unplanned-order',\n templateUrl: './select-unplanned-order.component.html'\n})\nexport class SelectUnplannedOrderComponent extends BaseComponent implements SelectGridDialog, OnInit {\n public listOfGridOptions: GridOptions[] = [];\n public listOfGridApis: GridApi[] = [];\n public listOfUnplannedOrders: ProductionOrderToPlan[] = [];\n\n public constructor(\n private readonly gridOptionsBuilder: GridOptionsBuilderFactoryService,\n private readonly colDefBuilder: ColDefBuilderFactoryService,\n private readonly planningContext: PlanningPrototypeContextService,\n private readonly dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) private readonly dialogParams: SelectUnplannedOrderParameters\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.setGridOptions();\n this.initListOfOrdersToPlan();\n }\n\n public confirmSelection(): void {\n const selectedRows = this.listOfGridApis[0].getSelectedRows();\n this.dialogRef.close(selectedRows);\n }\n\n public canSelectProductionOrders(): boolean {\n return this.listOfGridApis[0]?.getSelectedRows()?.length > 0;\n }\n\n private initListOfOrdersToPlan(): void {\n const productionOrderIdsOnPlanningDraft = this.getListOfProductionOrderIdsAlreadyPlanned();\n\n this.listOfUnplannedOrders = this.planningContext.ordersToPlan.filter(\n (order: ProductionOrderToPlan) => this.unplannedOrderMatchesDialogParams(order) && !productionOrderIdsOnPlanningDraft.includes(order.productionOrder.id)\n );\n }\n\n private getListOfProductionOrderIdsAlreadyPlanned(): number[] {\n const flatListOfPlanningItems = this.planningContext.getFlatListOfPlanningItems();\n const planningItemsInRun = flatListOfPlanningItems.find((item: PlanningItem) => item.draftId === this.dialogParams.parentItemId)?.planningItems ?? [];\n\n const isCompatibleItemType =\n this.dialogParams.type === PlanningItemType.ORDER_CARPET\n ? (item: PlanningItem): boolean => item instanceof OrderCarpet && !AssertionUtils.isNullOrUndefined(item.productionOrder)\n : (item: PlanningItem): boolean => PlanningItemHelper.isOrderLiteItem(item);\n\n return flatListOfPlanningItems\n .filter((item: PlanningItem) => isCompatibleItemType(item) && !planningItemsInRun.includes(item))\n .concat(this.dialogParams.itemsSelectedAlready.filter(PlanningItemHelper.isOrderItem))\n .map((order: GenericOrder) => order.productionOrder.id);\n }\n\n private unplannedOrderMatchesDialogParams(order: ProductionOrderToPlan): boolean {\n if (order.productionOrder instanceof ProductionOrder) {\n return (\n this.dialogParams.type === PlanningItemType.ORDER_CARPET &&\n this.dialogParams.creel?.id === order.productionOrder.creel.id &&\n this.dialogParams.machineQuality?.id === order.productionOrder.quality.id\n );\n }\n\n if (order.productionOrder instanceof ProductionOrderWeaving) {\n return this.dialogParams.type === PlanningItemType.ORDER_WEAVING && this.dialogParams.product?.id === order.productionOrder.weaveProduct.id;\n }\n\n if (order.productionOrder instanceof ProductionOrderTuft) {\n return this.dialogParams.type === PlanningItemType.ORDER_TUFTING && this.dialogParams.product?.id === order.productionOrder.tuftProduct.id;\n }\n\n if (order.productionOrder instanceof ProductionOrderPlastic) {\n return this.dialogParams.type === PlanningItemType.ORDER_PLASTIC && this.dialogParams.product?.id === order.productionOrder.tool?.id;\n }\n\n return false;\n }\n\n private setGridOptions(): void {\n this.listOfGridOptions = [\n this.gridOptionsBuilder\n .getBuilder(this.getColumnDefs(), GridIdentifier.SELECT_PRODUCTION_ORDER)\n .withOnGridReady((ready: GridReadyEvent) => this.listOfGridApis.push(ready.api))\n .withColumnMenu()\n .withGetRowId((params: GetRowIdParams) => params.data.productionOrder.id.toString())\n .withRowSelection(true)\n .withNoRowsOverlay({\n scale: 0.7,\n titleKey: 'PLANNING.ADD_ITEM.SELECT_PRODUCTION_ORDERS.NO_PRODUCTION_ORDERS_FOR_RUN',\n hideDescription: true\n } as Partial)\n .withLoadingOverlay({\n scale: 0.7\n } as OverlayComponentParams)\n .build()\n ];\n }\n\n private getColumnDefs(): ColDef[] {\n return [\n this.colDefBuilder.getBuilder().withField('productionOrder.name').withHeaderName('GENERAL.NAME').withComparator(StringUtils.stringComparator).build(),\n this.colDefBuilder.getBuilder().withField('productionOrder.dueDate').withHeaderName('GENERAL.DATETIME.DUE_DATE').withDate().withoutFilter().build()\n ];\n }\n}\n","
\n \n
\n \n
\n \n
\n","\n \n

{{ 'PRODUCTION_ORDER.PRODUCTION_ORDER' | bmsTranslate: {count: 2} }}

\n
\n \n @if (showFixedSchedules) {\n \n }\n
\n
\n @if (planningItems.length > 0) {\n \n \n \n }\n
\n","import {Component, Inject, OnInit} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {GridIdentifier} from '@application/grids/grid-identifier.enum';\nimport {NavigationHelperService} from '@application/helper/navigation-helper/navigation-helper.service';\nimport {PlanningItemHelper} from '@application/helper/planning-prototype/planning-item-helper';\nimport {IdName} from '@domain/id-name';\nimport {FixedSchedule} from '@domain/planning-prototype/carpet/fixed-schedule';\nimport {FixedSchedulePlaceholder} from '@domain/planning-prototype/carpet/fixed-schedule-placeholder';\nimport {GenericOrder} from '@domain/planning-prototype/generic-order.interface';\nimport {GenericRun} from '@domain/planning-prototype/generic-run.interface';\nimport {PlanningItem} from '@domain/planning-prototype/planning-item';\nimport {PlanningItemFactory} from '@domain/planning-prototype/planning-item-factory';\nimport {PlanningItemType} from '@domain/planning-prototype/planning-item-type';\nimport {ProductionOrderToPlan} from '@domain/planning-prototype/to-plan/production-order-to-plan';\nimport {Permission} from '@domain/profile/permission.enum';\nimport {Subscription} from '@domain/profile/subscription';\nimport {AUTHENTICATION, Authentication} from '@infrastructure/http/authentication/authentication';\nimport {ListOverviewActionsComponent} from '@presentation/pages/texfab/production-schedule/overview/actions/list-overview-actions.component';\nimport {ListOverviewAction} from '@presentation/pages/texfab/production-schedule/overview/list-overview-action';\nimport {ProductionScheduleOverviewStatusComponent} from '@presentation/pages/texfab/production-schedule/overview/status/production-schedule-overview-status.component';\nimport {AssertionUtils, BaseComponent, ColDefBuilderFactoryService, DialogBuilderFactoryService, GridOptionsBuilderFactoryService, TranslateService} from '@vdw/angular-component-library';\nimport {CellClickedEvent, ColDef, GetRowIdParams, GridOptions, GridReadyEvent, IRowNode, ITooltipParams, RowDragCallbackParams, RowDragEndEvent, ValueGetterParams} from 'ag-grid-community';\nimport {filter, takeUntil} from 'rxjs';\nimport {PlanningPrototypeContextService} from '../../../utilities/planning-prototype-context.service';\nimport {PlanningRunSidebarComponent} from '../planning-run-sidebar.component';\nimport {SelectFixedScheduleParams} from '../select-fixed-schedule/select-fixed-schedule-params';\nimport {SelectFixedScheduleComponent} from '../select-fixed-schedule/select-fixed-schedule.component';\nimport {SelectUnplannedOrderParameters} from '../select-unplanned-order/select-unplanned-order-parameters';\nimport {SelectUnplannedOrderComponent} from '../select-unplanned-order/select-unplanned-order.component';\nimport {NavigationProductionOrderList} from './navigation-production-order-list.interface';\n\n@Component({\n selector: 'app-production-orders-list',\n templateUrl: './production-orders-list.component.html',\n styleUrls: ['./production-orders-list.component.scss']\n})\nexport class ProductionOrdersListComponent extends BaseComponent implements OnInit {\n private currentSubscription: Subscription;\n public gridOptions: GridOptions;\n\n public get planningItemsForm(): FormControl {\n return this.parent.runForm.controls.planningItems;\n }\n\n public get planningItems(): PlanningItem[] {\n return this.planningItemsForm.value;\n }\n\n public get showFixedSchedules(): boolean {\n return (\n this.parent.run.type === PlanningItemType.RUN_CARPET &&\n !AssertionUtils.isEmpty(this.planningContext.fixedSchedulesToPlan) &&\n this.currentSubscription?.hasPermission(Permission.FIXED_SCHEDULE_EDIT)\n );\n }\n\n public constructor(\n private readonly planningContext: PlanningPrototypeContextService,\n private readonly gridOptionsBuilderFactoryService: GridOptionsBuilderFactoryService,\n private readonly colDefBuilderFactoryService: ColDefBuilderFactoryService,\n private readonly translate: TranslateService,\n private readonly parent: PlanningRunSidebarComponent,\n private readonly dialogBuilder: DialogBuilderFactoryService,\n private readonly navigationService: NavigationHelperService,\n @Inject(AUTHENTICATION) private readonly authentication: Authentication\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.currentSubscription = this.authentication.getCurrentSubscription();\n this.planningContext.selectedItemChanges.pipe(takeUntil(this.unSubscribeOnViewDestroy), filter(PlanningItemHelper.isRunItem)).subscribe((run: GenericRun) => {\n const showActionsColumn = AssertionUtils.isNullOrUndefined(run.actualEndDate);\n this.setGridOptions(showActionsColumn);\n });\n }\n\n public onNavigationHelperDestroy(): void {\n this.navigationService.savePartialState({\n gridOptions: this.gridOptions\n });\n }\n\n public addProductionOrders(): void {\n this.dialogBuilder\n .getBuilder()\n .openSelectGridDialog(SelectUnplannedOrderComponent, {\n type: PlanningItemHelper.childTypeForRunType(this.parent.run.type),\n parentItemId: this.parent.run.draftId,\n itemsSelectedAlready: this.planningItems,\n creel: this.parent.runForm.controls.creel.value,\n machineQuality: this.parent.runForm.controls.machineQuality.value,\n product: this.parent.runForm.controls.weaveProduct.value ?? this.parent.runForm.controls.tuftProduct.value ?? this.parent.runForm.controls.tool.value\n } as SelectUnplannedOrderParameters)\n .pipe(\n takeUntil(this.unSubscribeOnViewDestroy),\n filter((result: any) => !AssertionUtils.isNullOrUndefined(result))\n )\n .subscribe((result: ProductionOrderToPlan[]) => {\n let maxSequence = this.planningItems\n .map((item: PlanningItem) => item.sequenceNumber)\n .reduce((sequenceNumber: number, currentMax: number) => (sequenceNumber > currentMax ? sequenceNumber : currentMax), 0);\n this.planningItemsForm.setValue([\n ...this.planningItems,\n ...result.map((orderToPlan: ProductionOrderToPlan) => PlanningItemFactory.createOrderForToPlan(orderToPlan, this.parent.machine, ++maxSequence))\n ]);\n this.planningItemsForm.markAsDirty();\n });\n }\n\n public addFixedSchedules(): void {\n const creel = this.parent.runForm.controls.creel.value;\n const machineQuality = this.parent.runForm.controls.machineQuality.value;\n const machine = this.parent.machine;\n this.dialogBuilder\n .getBuilder()\n .openSelectGridDialog(SelectFixedScheduleComponent, {\n parentItemId: this.parent.run.draftId,\n itemsSelectedAlready: this.planningItems,\n creel: new IdName(creel.id, creel.name),\n machineQuality: machineQuality as IdName,\n machine\n } as SelectFixedScheduleParams)\n .pipe(\n takeUntil(this.unSubscribeOnViewDestroy),\n filter((result: any) => !AssertionUtils.isNullOrUndefined(result))\n )\n .subscribe((result: FixedSchedule[]) => {\n let maxSequence = this.planningItems\n .map((item: PlanningItem) => item.sequenceNumber)\n .reduce((sequenceNumber: number, currentMax: number) => (sequenceNumber > currentMax ? sequenceNumber : currentMax), 0);\n this.planningItemsForm.setValue([...this.planningItems, ...result.map((fixedSchedule: FixedSchedule) => PlanningItemFactory.createPlaceholderForFixedSchedule(fixedSchedule, ++maxSequence))]);\n this.planningItemsForm.markAsDirty();\n });\n }\n\n public onRowDragEnd = (event: RowDragEndEvent): void => {\n const rows: PlanningItem[] = [];\n event.api.forEachNode((node: IRowNode) => rows.push(node.data));\n\n this.planningItems.sort((a: PlanningItem, b: PlanningItem) => rows.indexOf(a) - rows.indexOf(b));\n this.planningItemsForm.markAsDirty();\n };\n\n private setGridOptions(showActionsColumn: boolean): void {\n let obj = {gridOptions: null};\n let prevState = this.navigationService.getPartialState(Object.keys(obj));\n if (!AssertionUtils.isNullOrUndefined(prevState)) {\n this.gridOptions = prevState.gridOptions;\n } else {\n this.gridOptions = this.gridOptionsBuilderFactoryService\n .getBuilder(this.getColumnDefs(showActionsColumn), GridIdentifier.PRODUCTION_ORDERS_LIST)\n .withSuppressRowClickSelection()\n .withSuppressRowHoverHighlight()\n .withLockPinnedColumns()\n .withOnGridReady((params: GridReadyEvent) => params.api.sizeColumnsToFit())\n .withGetRowId((params: GetRowIdParams) => params.data.draftId)\n .withRowDragManaged()\n .withOnRowDragEnd(this.onRowDragEnd)\n .withSuppressMoveWhenRowDragging()\n .withPopupParent(document.querySelector('body'))\n .build();\n }\n }\n\n private deleteOrderFromRun(item: PlanningItem): void {\n this.planningItemsForm.setValue(this.planningItems.filter((itemInList: PlanningItem) => itemInList !== item));\n this.planningItemsForm.markAsDirty();\n }\n\n private getColumnDefs(showActionsColumn: boolean): ColDef[] {\n let colDefs = [\n this.colDefBuilderFactoryService\n .getBuilder()\n .withRowDrag((params: RowDragCallbackParams) => AssertionUtils.isNullOrUndefined(params.data.actualStartDate))\n .withHeaderName('GENERAL.NAME')\n .withSuppressMovable()\n .withLockVisible()\n .withSortable(false)\n .withoutFilter()\n .withCellClass('url')\n .withOnCellClicked((params: CellClickedEvent): void => {\n if (!this.planningItemsForm.dirty) {\n this.planningContext.selectItem(params.data);\n }\n })\n .withValueGetter((params: ValueGetterParams) => PlanningItemHelper.getItemName(params.data))\n .build(),\n this.colDefBuilderFactoryService.getBuilder().withField('productionOrder.dueDate').withHeaderName('GENERAL.DATETIME.DUE_DATE').withDate().withSortable(false).withoutFilter().build(),\n this.colDefBuilderFactoryService\n .getBuilder()\n .withField('productionOrder.status')\n .withHeaderName('GENERAL.STATUS')\n .withCellClass('center')\n .withTooltipValueGetter((params: ITooltipParams): any => this.translate.instant(`PRODUCTION_ORDER.STATUS.${params.value}`))\n .withCellRenderer(ProductionScheduleOverviewStatusComponent)\n .withValueGetter((params: ValueGetterParams) => PlanningItemHelper.getItemStatus(params.data))\n .withSortable(false)\n .withoutFilter()\n .build()\n ];\n\n if (showActionsColumn) {\n colDefs.push(\n this.colDefBuilderFactoryService\n .getBuilder()\n .withHeaderName('GENERAL.ACTIONS.ACTIONS')\n .withHeaderClass('actions-header')\n .withCellRenderer(ListOverviewActionsComponent)\n .withValueGetter((params: ValueGetterParams): ListOverviewAction[] => {\n if (!AssertionUtils.isNullOrUndefined(params.data.actualStartDate)) {\n return [];\n }\n return [\n {\n name: 'GENERAL.ACTIONS.DELETE',\n actionFn: () => this.deleteOrderFromRun(params.data)\n }\n ];\n })\n .withSuppressMovable('right')\n .withLockVisible()\n .withSortable(false)\n .withoutFilter()\n .build()\n );\n }\n\n return colDefs;\n }\n}\n","import { EmptyError } from './util/EmptyError';\nexport function lastValueFrom(source, config) {\n const hasConfig = typeof config === 'object';\n return new Promise((resolve, reject) => {\n let _hasValue = false;\n let _value;\n source.subscribe({\n next: (value) => {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: () => {\n if (_hasValue) {\n resolve(_value);\n }\n else if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n });\n}\n","\n
\n \n \n\n 0\"\n [canDeleteChips]=\"true\"\n [canMoveChips]=\"false\"\n [compact]=\"true\"\n [chips]=\"activeSearchFilters\"\n [labelGetter]=\"getChipLabel\"\n (deletedEvent)=\"removeFilter($event)\"\n >\n \n
\n\n
\n \n \n \n \n \n \n\n
\n

\n

\n

\n
\n \n

\n {{ 'PLANNING.NEEDS_ATTENTION.TO_PLAN' | bmsTranslate | uppercase }}\n

\n \n
\n \n

\n {{ 'PLANNING.ACTIONS.RECONFIRM' | bmsTranslate }}\n

\n \n
\n \n
\n
\n","import {Component, Inject, OnInit, TemplateRef, ViewChild, ViewContainerRef} from '@angular/core';\nimport {AdvancedSearchUtils} from '@application/helper/advanced-search-utils';\nimport {PlanningItemHelper} from '@application/helper/planning-prototype/planning-item-helper';\nimport {OrderCarpet} from '@domain/planning-prototype/carpet/order-carpet';\nimport {ProductionOrder} from '@domain/planning-prototype/carpet/production-order';\nimport {PlanningOrderLite} from '@domain/planning-prototype/generic-order.interface';\nimport {PlanningItem} from '@domain/planning-prototype/planning-item';\nimport {ProductionOrderPlastic} from '@domain/planning-prototype/plastic/production-order-plastic';\nimport {ProductionOrderToPlan} from '@domain/planning-prototype/to-plan/production-order-to-plan';\nimport {ProductionOrderTuft} from '@domain/planning-prototype/tufting/production-order-tuft';\nimport {ProductionOrderWeaving} from '@domain/planning-prototype/weaving/production-order-weaving';\nimport {PositionOfDialog} from '@domain/position-of-dialog';\nimport {ProductionScheduleStatus} from '@domain/production-schedule/production-schedule-status.enum';\nimport {Permission} from '@domain/profile/permission.enum';\nimport {PropertyValue} from '@domain/property-value';\nimport {AUTHENTICATION, Authentication} from '@infrastructure/http/authentication/authentication';\nimport {HttpPlasticProductionOrdersService} from '@infrastructure/http/plastic-production-order/http-plastic-production-orders.service';\nimport {PRODUCTION_ORDERS_WEAVING, ProductionOrdersWeaving} from '@infrastructure/http/production-order-weaving/production-orders-weaving';\nimport {PRODUCTION_SCHEDULES, ProductionSchedules} from '@infrastructure/http/production-schedule/production-schedules';\nimport {HttpTuftProductionOrdersService} from '@infrastructure/http/tuft-production-order/http-tuft-production-orders.service';\nimport {RepositionDialogComponent} from '@presentation/components/reposition-dialog/reposition-dialog.component';\nimport {AdvancedSearchInput} from '@presentation/components/search-filters/advanced-search/advanced-search-input.enum';\nimport {AdvancedSearchDialogComponent} from '@presentation/components/search-filters/advanced-search/dialog/advanced-search-dialog.component';\nimport {\n AlertDialogResult,\n AssertionUtils,\n BaseComponent,\n DateTimeFormat,\n DateTimePipe,\n DialogBuilderFactoryService,\n DialogType,\n EnumUtils,\n FilterComponent,\n ObjectActionType,\n StringUtils,\n ToastHelperService,\n TranslateService,\n Unit\n} from '@vdw/angular-component-library';\nimport {BehaviorSubject, debounceTime, distinctUntilChanged, filter, finalize, lastValueFrom, takeUntil} from 'rxjs';\nimport {PlanningItemDragDropService} from '../../utilities/planning-item-drag-drop.service';\nimport {PlanningPrototypeContextService} from '../../utilities/planning-prototype-context.service';\nimport {ProductionOrderUtilities} from '../../utilities/production-order-utilities.service';\n\n@Component({\n selector: 'app-to-plan',\n templateUrl: './to-plan.component.html',\n styleUrls: ['./to-plan.component.scss']\n})\nexport class ToPlanComponent extends BaseComponent implements OnInit {\n @ViewChild('nameFilter') public nameFilter: FilterComponent;\n\n public filteredOrdersToPlan: ProductionOrderToPlan[];\n public ordersToPlan: ProductionOrderToPlan[];\n public productionOrderIdsOnPlanningDraft: number[] = [];\n public activeSearchFilters: PropertyValue[] = [];\n public nameFilterChanged = new BehaviorSubject(null);\n public draggedItem: ProductionOrderToPlan;\n public advancedSearchFilters: PropertyValue[] = [\n {propertyName: AdvancedSearchInput.NAME},\n {propertyName: AdvancedSearchInput.PRODUCTION_SCHEDULE_STATUS, possiblePropertyValues: [ProductionScheduleStatus.TO_PLAN, ProductionScheduleStatus.TO_RECONFIRM]},\n {propertyName: AdvancedSearchInput.MACHINE_QUALITY},\n {propertyName: AdvancedSearchInput.CREEL},\n {propertyName: AdvancedSearchInput.WEAVE_PRODUCT},\n {propertyName: AdvancedSearchInput.TUFT_PRODUCT},\n {propertyName: AdvancedSearchInput.PLASTIC_PRODUCT},\n {propertyName: AdvancedSearchInput.TOOL}\n ];\n\n public get dragActive(): boolean {\n return this.planningDragDrop.dragActive;\n }\n\n private isReconfirming = false;\n\n public constructor(\n private readonly planningContext: PlanningPrototypeContextService,\n private readonly translate: TranslateService,\n private readonly dialogBuilder: DialogBuilderFactoryService,\n @Inject(PRODUCTION_SCHEDULES) private readonly productionSchedules: ProductionSchedules,\n @Inject(PRODUCTION_ORDERS_WEAVING) private readonly productionOrdersWeaving: ProductionOrdersWeaving,\n @Inject(AUTHENTICATION) private readonly authentication: Authentication,\n private readonly productionOrdersTufting: HttpTuftProductionOrdersService,\n private readonly productionOrdersPlastic: HttpPlasticProductionOrdersService,\n private readonly productionOrderUtilities: ProductionOrderUtilities,\n private readonly planningDragDrop: PlanningItemDragDropService,\n private readonly toastHelper: ToastHelperService,\n private readonly viewContainer: ViewContainerRef,\n private readonly dateTimePipe: DateTimePipe\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.filterAdvancedSearchFields();\n this.filterOrdersToPlanByActivePlanning();\n this.ordersToPlan.sort(this.compareProductionOrder);\n this.subscribeToNameFilterChanges();\n this.refilterOrdersOnPLanningLineChanges();\n }\n\n public closeMachineDetail(): void {\n this.planningContext.selectItem(null);\n }\n\n public isToReconfirm(order: ProductionOrderToPlan): boolean {\n return (\n order.productionOrder instanceof ProductionOrder &&\n order.productionOrder.status === ProductionScheduleStatus.TO_RECONFIRM &&\n this.productionOrderIdsOnPlanningDraft.includes(order.productionOrder.id)\n );\n }\n\n public getProductString(order: ProductionOrderToPlan): string {\n if (order.productionOrder instanceof ProductionOrder) {\n return `${order.productionOrder.quality.name}/${order.productionOrder.creel.name}`;\n }\n\n if (order.productionOrder instanceof ProductionOrderWeaving) {\n return order.productionOrder.weaveProduct.name;\n }\n\n if (order.productionOrder instanceof ProductionOrderTuft) {\n return order.productionOrder.tuftProduct.name;\n }\n\n if (order.productionOrder instanceof ProductionOrderPlastic) {\n const productName = order.productionOrder.plasticProduct.name;\n return order.productionOrder.tool ? `${productName}/${order.productionOrder.tool.name}` : productName;\n }\n return '';\n }\n\n public getRequiredQuantityString(order: ProductionOrderToPlan): string {\n let plannedQuantityString: string;\n\n if (order.productionOrder instanceof ProductionOrder) {\n plannedQuantityString = order.productionOrder.plannedQuantityInPicks + ' ' + this.translate.instant('GENERAL.UNIT.PICKS');\n } else if (order.productionOrder instanceof ProductionOrderPlastic) {\n plannedQuantityString = order.productionOrder.plannedQuantity + ' ' + this.translate.instant(`GENERAL.UNIT.${order.productionOrder.plasticProduct.unitOfMeasurement}`);\n } else {\n plannedQuantityString = order.productionOrder.plannedQuantityInMeters + ' ' + this.translate.instant('GENERAL.UNIT.METER');\n }\n\n if (AssertionUtils.isNullOrUndefined(order.productionOrder.dueDate)) {\n return plannedQuantityString;\n }\n const dueDate = this.translate.instant('PLANNING.NEEDS_ATTENTION.DUE_AT', {date: this.dateTimePipe.transform(order.productionOrder.dueDate, DateTimeFormat.DATE_SHORT)});\n return `${dueDate} - ${plannedQuantityString}`;\n }\n\n public showAdvancedSearch(): void {\n this.dialogBuilder\n .getBuilder()\n .withClass(['reposition-dialog', 'needs-attention-advanced-search'])\n .withWidth('650px')\n .withMaxHeight('100%')\n .openDialog(RepositionDialogComponent, {\n advancedSearchFilters: this.advancedSearchFilters,\n component: AdvancedSearchDialogComponent,\n sourceElement: this.nameFilter.iconElement.nativeElement,\n positionOfDialog: PositionOfDialog.BOTTOM\n })\n .pipe(takeUntil(this.unSubscribeOnViewDestroy))\n .subscribe((filters: PropertyValue[]) => {\n if (AssertionUtils.isEmpty(filters)) {\n return;\n }\n this.advancedSearchFilters = filters;\n this.updateFilter();\n });\n }\n\n public getChipLabel = (filterProperty: PropertyValue): string => {\n const propertyString = this.translate.instant(`GENERAL.ADVANCED_SEARCH.${EnumUtils.getKeyFromValue(AdvancedSearchInput, filterProperty.propertyName)}`, {count: 1});\n const valueString = AdvancedSearchUtils.getDisplayValueForAdvancedSearchFilter(filterProperty.propertyName, filterProperty.propertyValue, this.translate, Unit.CENTIMETER);\n return `${propertyString} (${valueString})`;\n };\n\n public removeFilter(filterProperty: PropertyValue | string): void {\n if (typeof filterProperty === 'string') {\n filterProperty = this.activeSearchFilters.find((property: PropertyValue) => this.getChipLabel(property) === filterProperty);\n if (AssertionUtils.isNullOrUndefined(filterProperty)) {\n return;\n }\n }\n filterProperty.propertyValue = undefined;\n this.updateFilter();\n }\n\n public async deleteUnplannedOrder(order: ProductionOrderToPlan): Promise {\n const title = this.translate.instant('GENERAL.ACTIONS.DELETE_OBJECT', {object: order.productionOrder.name});\n const message = this.translate.instant('GENERAL.ACTIONS.CONFIRM_DELETE_DESCRIPTION');\n\n const dialogResult = await lastValueFrom(\n this.dialogBuilder\n .getBuilder()\n .openAlertDialog({\n titleText: title,\n messageText: message,\n type: DialogType.CONFIRM_DELETE\n })\n .pipe(takeUntil(this.unSubscribeOnViewDestroy))\n );\n if (dialogResult !== AlertDialogResult.CONFIRM) {\n return;\n }\n\n if (order.productionOrder instanceof ProductionOrder) {\n await lastValueFrom(this.productionSchedules.delete(order.productionOrder.id).pipe(takeUntil(this.unSubscribeOnViewDestroy)));\n } else if (order.productionOrder instanceof ProductionOrderWeaving) {\n await lastValueFrom(this.productionOrdersWeaving.delete(order.productionOrder.id).pipe(takeUntil(this.unSubscribeOnViewDestroy)));\n } else if (order.productionOrder instanceof ProductionOrderTuft) {\n await lastValueFrom(this.productionOrdersTufting.delete(order.productionOrder.id).pipe(takeUntil(this.unSubscribeOnViewDestroy)));\n } else if (order.productionOrder instanceof ProductionOrderPlastic) {\n await lastValueFrom(this.productionOrdersPlastic.delete(order.productionOrder.id).pipe(takeUntil(this.unSubscribeOnViewDestroy)));\n }\n\n this.planningContext.ordersToPlan.splice(this.planningContext.ordersToPlan.indexOf(order), 1);\n this.filterOrdersToPlanByActivePlanning();\n this.ordersToPlan.sort(this.compareProductionOrder);\n this.updateFilter();\n this.toastHelper.showToastForObjectAction(ObjectActionType.DELETE, 'PRODUCTION_ORDER.PRODUCTION_ORDER', order.productionOrder.name);\n }\n\n public openPlannedItemSidebar(order: ProductionOrderToPlan): void {\n const itemToSelect = this.getPlanningItemForOrder(order);\n this.planningContext.selectItem(itemToSelect);\n }\n\n public reconfirmOrder(order: ProductionOrderToPlan): void {\n if (!(order.productionOrder instanceof ProductionOrder) || this.isReconfirming) {\n return;\n }\n this.isReconfirming = true;\n this.productionOrderUtilities\n .reconfirmOrder(order.productionOrder)\n .pipe(\n finalize(() => (this.isReconfirming = false)),\n takeUntil(this.unSubscribeOnViewDestroy),\n filter((confirmed: boolean) => confirmed)\n )\n .subscribe(() => {\n order.productionOrder.status = ProductionScheduleStatus.VERIFIED;\n const plannedItem = this.getPlanningItemForOrder(order);\n if (plannedItem instanceof OrderCarpet) {\n plannedItem.productionOrder.status = ProductionScheduleStatus.VERIFIED;\n }\n\n this.filterOrdersToPlanByActivePlanning();\n this.ordersToPlan.sort(this.compareProductionOrder);\n this.updateFilter();\n });\n }\n\n public onDragStart(event: DragEvent, order: ProductionOrderToPlan, template: TemplateRef): void {\n this.draggedItem = order;\n this.planningDragDrop.onDragStart(event, order, template, this.viewContainer);\n }\n\n private filterOrdersToPlanByActivePlanning(): void {\n const flatListOfPlanningItems = this.planningContext.getFlatListOfPlanningItems();\n\n this.productionOrderIdsOnPlanningDraft = flatListOfPlanningItems\n .filter((item: PlanningItem) => item instanceof OrderCarpet && !AssertionUtils.isNullOrUndefined(item.productionOrder))\n .map((item: OrderCarpet) => item.productionOrder.id);\n\n const productionOrderLiteIdsOnPlanningDraft = flatListOfPlanningItems.filter(PlanningItemHelper.isOrderLiteItem).map((item: PlanningOrderLite) => item.productionOrder.id);\n\n this.ordersToPlan = this.planningContext.ordersToPlan.filter((order: ProductionOrderToPlan) => {\n if (order.productionOrder instanceof ProductionOrder) {\n return this.isToReconfirm(order) || !this.productionOrderIdsOnPlanningDraft.includes(order.productionOrder.id);\n } else {\n return !productionOrderLiteIdsOnPlanningDraft.includes(order.productionOrder.id);\n }\n });\n }\n\n private compareProductionOrder = (orderA: ProductionOrderToPlan, orderB: ProductionOrderToPlan): number => {\n const isOrderAToReconfirm = this.isToReconfirm(orderA);\n const isOrderBToReconfirm = this.isToReconfirm(orderB);\n\n if (isOrderAToReconfirm !== isOrderBToReconfirm) {\n return isOrderAToReconfirm ? -1 : 1;\n }\n\n const dueDateOfOrderA = orderA.productionOrder.dueDate?.getTime() ?? Infinity;\n const dueDateOfOrderB = orderB.productionOrder.dueDate?.getTime() ?? Infinity;\n\n if (dueDateOfOrderA !== dueDateOfOrderB) {\n return dueDateOfOrderA - dueDateOfOrderB;\n }\n\n return StringUtils.stringComparator(orderA.productionOrder.name, orderB.productionOrder.name);\n };\n\n private passesActiveFilters(order: ProductionOrderToPlan): boolean {\n return this.activeSearchFilters.every((filterProperty: PropertyValue) => this.passesActiveFilter(order, filterProperty));\n }\n\n private passesActiveFilter(order: ProductionOrderToPlan, filterProperty: PropertyValue): boolean {\n switch (filterProperty.propertyName) {\n case AdvancedSearchInput.NAME:\n return order.productionOrder.name.toLowerCase().includes(filterProperty.propertyValue?.toLowerCase());\n\n case AdvancedSearchInput.PRODUCTION_SCHEDULE_STATUS:\n if (filterProperty.propertyValue === ProductionScheduleStatus.TO_RECONFIRM) {\n return this.isToReconfirm(order);\n } else {\n return !this.isToReconfirm(order);\n }\n\n case AdvancedSearchInput.MACHINE_QUALITY:\n return order.productionOrder instanceof ProductionOrder && order.productionOrder.quality.id === filterProperty.propertyValue.id;\n\n case AdvancedSearchInput.CREEL:\n return order.productionOrder instanceof ProductionOrder && order.productionOrder.creel.id === filterProperty.propertyValue.id;\n\n case AdvancedSearchInput.WEAVE_PRODUCT:\n return order.productionOrder instanceof ProductionOrderWeaving && order.productionOrder.weaveProduct.id === filterProperty.propertyValue.id;\n\n case AdvancedSearchInput.TUFT_PRODUCT:\n return order.productionOrder instanceof ProductionOrderTuft && order.productionOrder.tuftProduct.id === filterProperty.propertyValue.id;\n\n case AdvancedSearchInput.PLASTIC_PRODUCT:\n return order.productionOrder instanceof ProductionOrderPlastic && order.productionOrder.plasticProduct.id === filterProperty.propertyValue.id;\n\n case AdvancedSearchInput.TOOL:\n return order.productionOrder instanceof ProductionOrderPlastic && order.productionOrder.tool?.id === filterProperty.propertyValue.id;\n }\n }\n\n private subscribeToNameFilterChanges(): void {\n this.nameFilterChanged.pipe(takeUntil(this.unSubscribeOnViewDestroy), distinctUntilChanged(), debounceTime(500)).subscribe((name: string) => {\n const filterProperty = this.advancedSearchFilters.find((property: PropertyValue) => property.propertyName === AdvancedSearchInput.NAME);\n if (!AssertionUtils.isNullOrUndefined(filterProperty)) {\n filterProperty.propertyValue = name;\n this.updateFilter();\n }\n });\n }\n\n private updateFilter(): void {\n const filterProperty = this.advancedSearchFilters.find((property: PropertyValue) => property.propertyName === AdvancedSearchInput.NAME);\n this.nameFilterChanged.next(filterProperty.propertyValue);\n this.activeSearchFilters = this.advancedSearchFilters.filter((property: PropertyValue) => !AssertionUtils.isNullOrUndefined(property.propertyValue) && property.propertyValue !== '');\n\n this.filteredOrdersToPlan = this.ordersToPlan.filter((order: ProductionOrderToPlan) => this.passesActiveFilters(order));\n }\n\n private getPlanningItemForOrder(order: ProductionOrderToPlan): PlanningItem {\n const allItemsOnBoard = this.planningContext.getFlatListOfPlanningItems();\n return allItemsOnBoard.find(\n (item: PlanningItem) => PlanningItemHelper.isOrderItem(item) && item.productionOrder?.constructor === order.productionOrder.constructor && item.productionOrder.id === order.productionOrder.id\n );\n }\n\n private refilterOrdersOnPLanningLineChanges(): void {\n this.planningContext.planningLineChanges.pipe(takeUntil(this.unSubscribeOnViewDestroy), debounceTime(10)).subscribe(() => {\n this.filterOrdersToPlanByActivePlanning();\n this.ordersToPlan.sort(this.compareProductionOrder);\n this.updateFilter();\n });\n }\n\n private filterAdvancedSearchFields(): void {\n const currentSubscription = this.authentication.getCurrentSubscription();\n const permissionMap = {\n [AdvancedSearchInput.MACHINE_QUALITY]: Permission.TEXSTYLE_MACHINE_QUALITY_VIEW,\n [AdvancedSearchInput.CREEL]: Permission.TEXSTYLE_CREEL_VIEW,\n [AdvancedSearchInput.WEAVE_PRODUCT]: Permission.TEXSTYLE_WEAVE_PRODUCT_VIEW,\n [AdvancedSearchInput.TUFT_PRODUCT]: Permission.TEXSTYLE_TUFT_PRODUCT_VIEW,\n [AdvancedSearchInput.PLASTIC_PRODUCT]: Permission.TEXSTYLE_PLASTIC_PRODUCT_VIEW,\n [AdvancedSearchInput.TOOL]: Permission.TEXSTYLE_PLASTIC_TOOL_VIEW\n };\n this.advancedSearchFilters = this.advancedSearchFilters.filter((field: PropertyValue) => {\n return AssertionUtils.isNullOrUndefined(permissionMap[field.propertyName]) || currentSubscription.hasPermission(permissionMap[field.propertyName]);\n });\n }\n}\n","import {NgModule} from '@angular/core';\nimport {UnsavedChangesNotifierService} from '@application/helper/unsaved-changes-notifier/unsaved-changes-notifier.service';\nimport {CREELS} from '@infrastructure/http/creel/creels';\nimport {HttpCreelsService} from '@infrastructure/http/creel/http-creels.service';\nimport {FINISHINGS} from '@infrastructure/http/finishing/finishings';\nimport {HttpFinishingsService} from '@infrastructure/http/finishing/http-finishings.service';\nimport {HttpMachineOverviewService} from '@infrastructure/http/machine-overview/http-machine-overview.service';\nimport {MACHINE_OVERVIEW} from '@infrastructure/http/machine-overview/machine-overview';\nimport {HttpPlasticProductionOrdersService} from '@infrastructure/http/plastic-production-order/http-plastic-production-orders.service';\nimport {HttpProductionOrdersWeavingService} from '@infrastructure/http/production-order-weaving/http-production-orders-weaving.service';\nimport {PRODUCTION_ORDERS_WEAVING} from '@infrastructure/http/production-order-weaving/production-orders-weaving';\nimport {HttpProductionOrdersService} from '@infrastructure/http/production-order/http-production-orders.service';\nimport {PRODUCTION_ORDERS} from '@infrastructure/http/production-order/production-orders';\nimport {HttpProductionSchedulesService} from '@infrastructure/http/production-schedule/http-production-schedules.service';\nimport {PRODUCTION_SCHEDULES} from '@infrastructure/http/production-schedule/production-schedules';\nimport {SignalRPlanningPrototypeService} from '@infrastructure/signalr/planning-prototype/signalr-planning-prototype.service';\nimport {REALTIME_PRODUCTION_ORDER_LITE} from '@infrastructure/signalr/production-order-lite/realtime-production-order-lite';\nimport {SignalrProductionOrderLiteService} from '@infrastructure/signalr/production-order-lite/signalr-production-order-lite.service';\nimport {REALTIME_PRODUCTION_ORDER} from '@infrastructure/signalr/production-order/realtime-production-order';\nimport {SignalrProductionOrderService} from '@infrastructure/signalr/production-order/signalr-production-order.service';\nimport {PlasticProductOverviewService} from '@presentation/pages/textile-data/plastic-product/overview/plastic-product-overview.service';\nimport {ToolOverviewService} from '@presentation/pages/utilities/tool/overview/tool-overview.service';\nimport {SharedModule} from '@shared/shared.module';\nimport {DatePickerModule, HeaderModule, PlanningDisplayModule, PlanningDragDropModule, TabsMenuCardModule} from '@vdw/angular-component-library';\nimport {AgGridModule} from 'ag-grid-angular';\nimport {MachineGroupFilterComponent} from './machine-group-filter/machine-group-filter.component';\nimport {FixedSchedulePlaceholderComponent} from './planning-items/fixed-schedule-placeholder/fixed-schedule-placeholder.component';\nimport {MaintenanceComponent} from './planning-items/maintenance/maintenance.component';\nimport {PlanningOrderComponent} from './planning-items/planning-order/planning-order.component';\nimport {PlanningPrototypeComponent} from './planning-prototype.component';\nimport {planningPrototypeRouting} from './planning-prototype.routing';\nimport {FixedSchedulePlaceholderSidebarComponent} from './sidebars/fixed-schedule-placeholder-sidebar/fixed-schedule-placeholder-sidebar.component';\nimport {FixedSchedulesSidebarComponent} from './sidebars/fixed-schedules-sidebar/fixed-schedules-sidebar.component';\nimport {MachineDetailSidebarComponent} from './sidebars/machine-detail-sidebar/machine-detail-sidebar.component';\nimport {MaintenanceSidebarComponent} from './sidebars/maintenance-sidebar/maintenance-sidebar.component';\nimport {PlanningItemDateSelectComponent} from './sidebars/planning-item-date-select/planning-item-date-select.component';\nimport {PlanningItemSidebarComponent} from './sidebars/planning-item-sidebar/planning-item-sidebar.component';\nimport {PlanningOrderSidebarComponent} from './sidebars/planning-order-sidebar/planning-order-sidebar.component';\nimport {PlanningPrototypeSidebarComponent} from './sidebars/planning-prototype-sidebar.component';\nimport {CreelMappingDisplayComponent} from './sidebars/planning-run-sidebar/creel-mapping/creel-mapping-display/creel-mapping-display.component';\nimport {CreelMappingEditComponent} from './sidebars/planning-run-sidebar/creel-mapping/creel-mapping-edit/creel-mapping-edit.component';\nimport {PlanningRunSidebarComponent} from './sidebars/planning-run-sidebar/planning-run-sidebar.component';\nimport {ProductionOrdersListComponent} from './sidebars/planning-run-sidebar/production-orders-list/production-orders-list.component';\nimport {SelectFixedScheduleComponent} from './sidebars/planning-run-sidebar/select-fixed-schedule/select-fixed-schedule.component';\nimport {SelectUnplannedOrderComponent} from './sidebars/planning-run-sidebar/select-unplanned-order/select-unplanned-order.component';\nimport {ToPlanComponent} from './sidebars/to-plan/to-plan.component';\nimport {PlanningOrderTooltipComponent} from './tooltips/planning-order-tooltip.component';\nimport {PlanningFilterService} from './utilities/planning-filter.service';\nimport {PlanningItemDragDropService} from './utilities/planning-item-drag-drop.service';\nimport {PlanningPrototypeContextService} from './utilities/planning-prototype-context.service';\nimport {ProductionOrderUtilities} from './utilities/production-order-utilities.service';\n\n@NgModule({\n declarations: [\n CreelMappingDisplayComponent,\n CreelMappingEditComponent,\n MachineDetailSidebarComponent,\n MachineGroupFilterComponent,\n MaintenanceComponent,\n MaintenanceSidebarComponent,\n PlanningItemDateSelectComponent,\n PlanningItemSidebarComponent,\n PlanningOrderComponent,\n PlanningOrderSidebarComponent,\n PlanningPrototypeComponent,\n PlanningPrototypeSidebarComponent,\n PlanningRunSidebarComponent,\n ProductionOrdersListComponent,\n SelectUnplannedOrderComponent,\n FixedSchedulesSidebarComponent,\n FixedSchedulePlaceholderComponent,\n FixedSchedulePlaceholderSidebarComponent,\n SelectFixedScheduleComponent,\n ToPlanComponent,\n PlanningOrderTooltipComponent\n ],\n imports: [TabsMenuCardModule, HeaderModule, SharedModule, DatePickerModule, PlanningDisplayModule, planningPrototypeRouting, PlanningDragDropModule, AgGridModule],\n providers: [\n PlanningFilterService,\n PlanningItemDragDropService,\n PlanningPrototypeContextService,\n PlasticProductOverviewService,\n ProductionOrderUtilities,\n SignalRPlanningPrototypeService,\n ToolOverviewService,\n PlanningFilterService,\n HttpPlasticProductionOrdersService,\n UnsavedChangesNotifierService,\n {provide: CREELS, useClass: HttpCreelsService},\n {provide: FINISHINGS, useClass: HttpFinishingsService},\n {provide: MACHINE_OVERVIEW, useClass: HttpMachineOverviewService},\n {provide: PRODUCTION_ORDERS, useClass: HttpProductionOrdersService},\n {provide: PRODUCTION_ORDERS_WEAVING, useClass: HttpProductionOrdersWeavingService},\n {provide: PRODUCTION_SCHEDULES, useClass: HttpProductionSchedulesService},\n {provide: REALTIME_PRODUCTION_ORDER, useClass: SignalrProductionOrderService},\n {provide: REALTIME_PRODUCTION_ORDER_LITE, useClass: SignalrProductionOrderLiteService}\n ]\n})\nexport class PlanningPrototypeModule {}\n"],"x_google_ignoreList":[6,29]}