import { a as CardContainerEventContainer, S as StepsComponent, E as EventHandlerService } from './modal.component-7c440789.js';
|
import { CardDataService } from './card.data.service.js';
|
import { ManuProgService } from './manu-prog.service.js';
|
import { EquipmentListComponent } from './equipment-list.component.js';
|
import { DeferHelperClass } from './defer-helper.class.js';
|
import { C as ComponentService } from './base.component-813fc7cf.js';
|
import { CatalogService } from './catalog.service.js';
|
import './query-assigned-elements-fea1f631.js';
|
import './custom-element-30fc6381.js';
|
import './class-map-a0fb5d87.js';
|
import './event.handler.model.js';
|
import './loading.component.js';
|
import './dimmer.component.js';
|
import '@dh-software/furnview-icons';
|
import './query-1c86d710.js';
|
import './dot-flashing-loader.component.js';
|
import './rotating-dots-loader.component.js';
|
import './key-frame-effect.service.js';
|
import './toolbar.component.js';
|
import './toggle-toolbar.component.js';
|
import './style.helper.js';
|
import './image.service.js';
|
import './svg-icon.component.js';
|
import './popup.component.js';
|
import './popup-closer.component.js';
|
import './hr-item.component.js';
|
import './hr-list.component.js';
|
import './query-all-828de4b2.js';
|
import './hr-theme.model.js';
|
import './configurator.form.component.js';
|
import './configurator.form.base.element.component.js';
|
import './scene-helper.service.js';
|
import './async.base.component.js';
|
import './card-container-definitions.js';
|
import './card-container-events.js';
|
import './card-data-service-update-events.js';
|
import './card-container-settings.js';
|
import './card-container-states.js';
|
import './card-container-additional-data.js';
|
import './card-containers-shared-data.js';
|
import './input.mask.component.js';
|
import './mask.component.js';
|
import './information.mask.component.js';
|
import './open-cloud-id.mask.component.js';
|
import './share-link-per-mail.component.js';
|
import './request-appointment.component.js';
|
import './prog-property.model.js';
|
import './interface.js';
|
import './reset.mask.component.js';
|
import './configuration.service.js';
|
import './step-based.mask.component.js';
|
import './container-mask.component.js';
|
import './messageNoCalc.mask.component.js';
|
import './button.component.js';
|
import './iwoFurn.mask.component.js';
|
import './input.component.js';
|
import './base-input.js';
|
import './save-dialog.mask.component.js';
|
import './cloud-id.service.js';
|
import './send-offer-request-mask.component.js';
|
import './file-upload-mask.component.js';
|
import './label.component.js';
|
import './sass.default-1ca9b57f.js';
|
import './accordion.component.js';
|
import './accordion-item.component.js';
|
import './accordion-layer.component.js';
|
import './slider.component.js';
|
import './clock.controller.js';
|
import './state-7ee0cf4f.js';
|
import './confirming-button.component.js';
|
import './fitting-item.component.js';
|
import './proptrans-item.component.js';
|
import './shoppingcart-item.component.js';
|
import './prog-context.model.js';
|
import './step-child.component.js';
|
|
var __async = (__this, __arguments, generator) => {
|
return new Promise((resolve, reject) => {
|
var fulfilled = (value) => {
|
try {
|
step(generator.next(value));
|
} catch (e) {
|
reject(e);
|
}
|
};
|
var rejected = (value) => {
|
try {
|
step(generator.throw(value));
|
} catch (e) {
|
reject(e);
|
}
|
};
|
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
step((generator = generator.apply(__this, __arguments)).next());
|
});
|
};
|
class ProgramSelectionHelperClass {
|
constructor() {
|
this.configuredOnce = false;
|
}
|
resolveProgramSelectionDefer(state = false) {
|
var _a;
|
(_a = this.programSelectionDefer) == null ? void 0 : _a.resolve([state]);
|
}
|
get canBeCancelled() {
|
return this.configuredOnce;
|
}
|
isSceneEmpty(catConfigData) {
|
return __async(this, null, function* () {
|
let plannedArticles = yield CommunicationMessageService.getPlannedArticles();
|
if (Array.isArray(plannedArticles)) {
|
plannedArticles = plannedArticles.filter((x) => !!x.articlenumber);
|
if (catConfigData && catConfigData.length > 0) {
|
plannedArticles = plannedArticles.filter((article) => !catConfigData.some((config) => config.defaultArt.includes((article == null ? void 0 : article.catalogArticleNumber) || article.articlenumber)));
|
}
|
return plannedArticles.length == 0;
|
}
|
return true;
|
});
|
}
|
openConfirmationModal(catConfigData) {
|
return __async(this, null, function* () {
|
const programSelection = ComponentService.find("fv-program-selection");
|
this.resolveProgramSelectionDefer();
|
this.programSelectionDefer = DeferHelperClass();
|
return yield programSelection.openConfirmationModal(this.programSelectionDefer);
|
});
|
}
|
Configure(params) {
|
return __async(this, null, function* () {
|
params = Object.assign({
|
overrideInitialArticle: true,
|
clearScene: true,
|
confirmModal: true,
|
activeStepAfterSelection: 0,
|
closeModalQuery: ""
|
}, params);
|
const loadingComponent = document.querySelector("fv-loading-modal");
|
const afterLoaded = () => {
|
loadingComponent == null ? void 0 : loadingComponent.hide(false, true);
|
EventFactoryService.LastPOLoaded.unregister(afterLoaded);
|
this.resolveProgramSelectionDefer();
|
this.configuredOnce = true;
|
};
|
EventFactoryService.LastPOLoaded.register(afterLoaded);
|
const selectedManufacturer = yield ManuProgService.getManufacturer();
|
const currentSelectedProgram = yield ManuProgService.getProgram();
|
const selectedProgram_ = params.detail.level;
|
const programChanged = currentSelectedProgram != selectedProgram_ || window.g_dataInterface["selected_program"] != selectedProgram_;
|
const catConfig = yield CatalogService.retrieveCatConfig(selectedManufacturer, selectedProgram_);
|
let modalProceed = true;
|
let userDefinedArticle = params.initialArticle && params.initialArticle !== "" ? params.initialArticle : window.g_article.artno;
|
const isSceneEmpty = yield this.isSceneEmpty(catConfig);
|
let articleChanged = false;
|
if (params.overrideInitialArticle) {
|
const newArticle = yield CatalogService.getInitialArticle(userDefinedArticle);
|
if (!userDefinedArticle && newArticle && userDefinedArticle != newArticle) {
|
userDefinedArticle = newArticle;
|
articleChanged = true;
|
}
|
}
|
const placeArticle = programChanged && userDefinedArticle.length > 0;
|
if (params.confirmModal && programChanged && !isSceneEmpty) {
|
modalProceed = yield this.openConfirmationModal(catConfig);
|
}
|
if (modalProceed) {
|
if (placeArticle) {
|
loadingComponent == null ? void 0 : loadingComponent.show(false, true);
|
}
|
if (programChanged) {
|
yield ManuProgService.setManuProg(selectedManufacturer, selectedManufacturer, selectedProgram_);
|
window.selectedProgram = params.detail;
|
window.g_dataInterface["selected_program"] = selectedProgram_;
|
}
|
if (params.clearScene && (programChanged || placeArticle)) {
|
yield CommunicationMessageService.clearScene();
|
yield CommunicationMessageService.loadInitialStateDHP();
|
}
|
CardContainerEventContainer.RefreshAll(true, true, void 0, void 0, selectedProgram_);
|
yield CardDataService.WaitForAllCardContainerFetchPromises();
|
StepsComponent.activate({ "steps-component": "fv-steps", selector: "*" }, (params == null ? void 0 : params.activeStepAfterSelection) || 0);
|
yield EquipmentListComponent.Reload();
|
if (placeArticle) {
|
yield CommunicationMessageService.placePO({
|
manufacturer: selectedManufacturer,
|
program: selectedProgram_,
|
extParameter: {},
|
articleNumber: userDefinedArticle,
|
preventVPlacer: articleChanged
|
});
|
} else {
|
afterLoaded();
|
}
|
if (params.closeModalQuery) {
|
EventHandlerService.dispatch("close-modal", { query: params.closeModalQuery });
|
}
|
}
|
});
|
}
|
}
|
const ProgramSelectionHelper = new ProgramSelectionHelperClass();
|
|
export { ProgramSelectionHelper };
|