/*- * ============LICENSE_START======================================================= * SDC * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END========================================================= */ /** * Created by obarda on 2/11/2016. */ /// module Sdc.Utils { export interface IModalsHandler { openViewerModal(component:Models.Components.Component):void; openDistributionStatusModal(distribution: Models.Distribution,status:string):void; openConfirmationModal (title:string, message:string, showComment:boolean, size?: string):ng.IPromise; openAlertModal (title:string, message:string, size?: string):ng.IPromise; openStandardModal (title:string, message:string, size?: string):ng.IPromise; openErrorModal (title:string, message:string, size?: string):ng.IPromise; openEmailModal(emailModel:ViewModels.IEmailModalModel) :ng.IPromise; openServerMessageModal(data:Sdc.ViewModels.IServerMessageModalModel): ng.IPromise; openClientMessageModal(data:Sdc.ViewModels.IClientMessageModalModel): ng.IPromise; openWizardArtifactModal(artifact: Models.ArtifactModel, component:Models.Components.Component): ng.IPromise; openWizard(componentType: Utils.Constants.ComponentType, component?:Models.Components.Component, importedFile?: any): ng.IPromise; } export class ModalsHandler implements IModalsHandler{ static '$inject' = [ '$templateCache', '$modal', '$q' ]; constructor(private $templateCache:ng.ITemplateCacheService, private $modal:ng.ui.bootstrap.IModalService, private $q:ng.IQService) { } openViewerModal = (component:Models.Components.Component):void => { let modalOptions:ng.ui.bootstrap.IModalSettings = { template: this.$templateCache.get('/app/scripts/view-models/component-viewer/component-viewer.html'), controller: 'Sdc.ViewModels.ComponentViewerViewModel', size: 'lg', backdrop: 'static', resolve: { component: ():Models.Components.Component=> { return component; } } }; this.$modal.open(modalOptions); }; openDistributionStatusModal = (distribution: Models.Distribution,status:string): ng.IPromise => { let deferred = this.$q.defer(); let modalOptions:ng.ui.bootstrap.IModalSettings = { template: this.$templateCache.get('/app/scripts/view-models/workspace/tabs/distribution/disribution-status-modal/disribution-status-modal-view.html'), controller: 'Sdc.ViewModels.DistributionStatusModalViewModel', size: 'sdc-xl', backdrop: 'static', resolve: { data: ():any => { return { 'distribution': distribution, 'status': status }; } } }; let modalInstance:ng.ui.bootstrap.IModalServiceInstance = this.$modal.open(modalOptions); deferred.resolve(modalInstance.result); return deferred.promise; }; openAlertModal = (title:string, message:string, size?: string):ng.IPromise => { return this.openConfirmationModalBase(title, message, false, Utils.Constants.ModalType.ALERT, size); }; openStandardModal = (title:string, message:string, size?: string):ng.IPromise => { return this.openConfirmationModalBase(title, message, false, Utils.Constants.ModalType.STANDARD, size); }; openErrorModal = (title:string, message:string, size?: string):ng.IPromise => { return this.openConfirmationModalBase(title, message, false, Utils.Constants.ModalType.ERROR, size); }; openConfirmationModal = (title:string, message:string, showComment:boolean, size?: string):ng.IPromise => { return this.openConfirmationModalBase(title, message, showComment, Utils.Constants.ModalType.STANDARD, size); }; private openConfirmationModalBase = (title:string, message:string, showComment:boolean, type:Utils.Constants.ModalType, size?: string):ng.IPromise => { let deferred = this.$q.defer(); let modalOptions:ng.ui.bootstrap.IModalSettings = { template: this.$templateCache.get('/app/scripts/view-models/modals/confirmation-modal/confirmation-modal-view.html'), controller: 'Sdc.ViewModels.ConfirmationModalViewModel', size: size? size:'sdc-sm', backdrop: 'static', resolve: { confirmationModalModel: ():Sdc.ViewModels.IConfirmationModalModel => { let model:Sdc.ViewModels.IConfirmationModalModel = { title: title, message: message, showComment: showComment, type: type }; return model; } } }; let modalInstance:ng.ui.bootstrap.IModalServiceInstance = this.$modal.open(modalOptions); deferred.resolve(modalInstance.result); return deferred.promise; }; openEmailModal = (emailModel:ViewModels.IEmailModalModel):ng.IPromise => { let deferred = this.$q.defer(); let modalOptions:ng.ui.bootstrap.IModalSettings = { template: this.$templateCache.get('/app/scripts/view-models/modals/email-modal/email-modal-view.html'), controller: 'Sdc.ViewModels.EmailModalViewModel', size: 'sdc-sm', backdrop: 'static', resolve: { emailModalModel: ():ViewModels.IEmailModalModel => { return emailModel; } } }; let modalInstance:ng.ui.bootstrap.IModalServiceInstance = this.$modal.open(modalOptions); deferred.resolve(modalInstance.result); return deferred.promise; }; openServerMessageModal = (data:Sdc.ViewModels.IServerMessageModalModel):ng.IPromise => { let deferred = this.$q.defer(); let modalOptions:ng.ui.bootstrap.IModalSettings = { template: this.$templateCache.get('/app/scripts/view-models/modals/message-modal/message-server-modal/server-message-modal-view.html'), controller: 'Sdc.ViewModels.ServerMessageModalViewModel', size: 'sdc-sm', backdrop: 'static', resolve: { serverMessageModalModel: ():Sdc.ViewModels.IServerMessageModalModel => { return data; } } }; let modalInstance:ng.ui.bootstrap.IModalServiceInstance = this.$modal.open(modalOptions); deferred.resolve(modalInstance.result); return deferred.promise; }; openClientMessageModal = (data:Sdc.ViewModels.IClientMessageModalModel):ng.IPromise => { let deferred = this.$q.defer(); let modalOptions:ng.ui.bootstrap.IModalSettings = { template: this.$templateCache.get('/app/scripts/view-models/modals/message-modal/message-client-modal/client-message-modal-view.html'), controller: 'Sdc.ViewModels.ClientMessageModalViewModel', size: 'sdc-sm', backdrop: 'static', resolve: { clientMessageModalModel: ():Sdc.ViewModels.IClientMessageModalModel => { return data; } } }; let modalInstance:ng.ui.bootstrap.IModalServiceInstance = this.$modal.open(modalOptions); deferred.resolve(modalInstance); return deferred.promise; }; openOnboadrdingModal = (okButtonText:string,currentCsarUUID?:string): ng.IPromise => { let deferred = this.$q.defer(); let modalOptions:ng.ui.bootstrap.IModalSettings = { template: this.$templateCache.get('/app/scripts/view-models/modals/onboarding-modal/onboarding-modal-view.html'), controller: 'Sdc.ViewModels.OnboardingModalViewModel', size: 'sdc-xl', backdrop: 'static', resolve: { okButtonText:():string=>{ return okButtonText; }, currentCsarUUID:():string=>{ return currentCsarUUID||null; } } }; let modalInstance:ng.ui.bootstrap.IModalServiceInstance = this.$modal.open(modalOptions); deferred.resolve(modalInstance.result); return deferred.promise; }; openWizard = (componentType: Utils.Constants.ComponentType, component?:Models.Components.Component, importedFile?: any): ng.IPromise => { let deferred = this.$q.defer(); let template = this.$templateCache.get('/app/scripts/view-models/wizard/wizard-creation-base.html'); let controller:string; if(component){ controller = 'Sdc.ViewModels.Wizard.EditWizardViewModel'; //Edit mode } else { if (importedFile){ controller = 'Sdc.ViewModels.Wizard.ImportWizardViewModel'; // Import Mode } else { controller = 'Sdc.ViewModels.Wizard.CreateWizardViewModel'; // Create Mode } } let modalOptions:ng.ui.bootstrap.IModalSettings = { template: template, controller: controller, size: 'sdc-xl', backdrop: 'static', keyboard: false, resolve: { data: ():any => { return { 'componentType': componentType, 'component': component, 'importFile':importedFile }; } } }; let modalInstance:ng.ui.bootstrap.IModalServiceInstance = this.$modal.open(modalOptions); deferred.resolve(modalInstance.result); return deferred.promise; }; openWizardArtifactModal = (artifact: Models.ArtifactModel, component:Models.Components.Component): ng.IPromise => { let deferred = this.$q.defer(); let viewModelsHtmlBasePath:string = '/app/scripts/view-models/'; let modalOptions:ng.ui.bootstrap.IModalSettings = { template: this.$templateCache.get(viewModelsHtmlBasePath + 'wizard/artifact-form-step/artifact-form-step-view.html'), controller: 'Sdc.ViewModels.Wizard.ArtifactResourceFormStepViewModel', size: 'sdc-md', backdrop: 'static', keyboard: false, resolve: { artifact: ():Models.ArtifactModel => { return artifact; }, component: (): Models.Components.Component => { return component; } } }; let modalInstance:ng.ui.bootstrap.IModalServiceInstance = this.$modal.open(modalOptions); deferred.resolve(modalInstance.result); return deferred.promise; }; } }