CampaignManager = function() { let instance = this; instance.campaignEditor = null; instance.multiView = null; instance.campaignEditorHome = $("
"); instance.toolbarCampaignName = $("
"); instance.campaignList = new CampaignList( { campaignManager : { editCampaign : function( campaignId ) { let d = $.Deferred(); d.resolve(); instance.createEditor( { campaignId : campaignId }); instance.switchToEditor(); return d; }, deleteCampaign : function( campaignData ) { let d = $.Deferred(); if( confirm( `Delete '${campaignData.campaignName}'? All pending emails associated with '${campaignData.campaignName}' will also be deleted.` ) ) { // do the save let saveURL = Fse.Util.updateURL2( $("link#appActionURL").attr( "href" ), { object : "GTM.deleteCampaign" } ); $.ajax( { url : saveURL, method : "post", data : { campaign : JSON.stringify( campaignData ) } }) .done( function( returnData ) { d.resolve( returnData ); // instance.dataGrid.refresh(); }) .fail( function() { console.log( "failed"); }) }; return d; }, copyCampaign : function( campaignId ) { let d = $.Deferred(); // note this feature is incomplete and has been removed from the CampaignList item context menu Fse.Ajax.performAction( { object : "GTM.copyCampaign", data : { campaignId : campaignId } }).done( function( returnData ) { d.resolve( returnData ) }) return d; }, addCampaign : function( notUsed ) { let d = $.Deferred(); d.resolve(); instance.createEditor( { campaignId : 0 }); instance.switchToEditor(); return d; }, onSelectionChanged : function( selected ) { console.log( "Selected" ); console.log( selected ); if( selected && selected.length ) { if( instance.currentCampaign && instance.currentCampaign.campaignId == selected[0].campaignId ) { // this is the same as the current so do nothing return; } instance.currentCampaign = selected[0]; // instance.multiView.option( "selectedIndex", 1 ); } else { instance.currentCampaign = null; } if( instance.currentCampaign ) { instance.createEditor( instance.currentCampaign ) } } }, edit : function( rowData ) { instance.switchToEditor(); }, }); instance.campaignNavigation = $("
").dxToolbar( { items : [ { location : "before", template : function() { return instance.toolbarCampaignName }}, { location : "after", widget : "dxButton", options : { icon : "spinprev", onClick : function( e ) { instance.campaignList.selectPrevious(); } } }, { location : "after", widget : "dxButton", options : { text : "Campaign List", onClick : function( e ) { instance.multiView.option( "selectedIndex", 0 ); } } }, { location : "after", widget : "dxButton", options : { icon : "spinnext", onClick : function( e ) { instance.campaignList.selectNext(); } } } ] }).dxToolbar( "instance" ); instance.multiView = $("
").dxMultiView( { swipeEnabled : false, items : [ { template : function() { return $("
").css( { "padding-top" : "5px" }) .append( instance.campaignList.element()); } }, { template : function() { return $("
").css( { "padding-top" : "5px" }).append( instance.campaignNavigation.element().css( { "padding-bottom" : "5px" }) ).append( instance.campaignEditorHome ) } } ] }).dxMultiView( "instance" ); } CampaignManager.prototype.constructor = CampaignManager; CampaignManager.prototype.element = function() { return this.multiView.element(); } CampaignManager.prototype.newCampaign = function( campaignType ) { this.updateToolbar( { campaignId : 0 } ); this.createEditor( { campaignType : campaignType, campaignId : 0, campaignName : "" } ); this.switchToEditor(); } CampaignManager.prototype.onCampaignCreated = function( campaignData ) { this.currentCampaign = campaignData; // reload the list and select the new record this.campaignList.refresh( campaignData.campaignId ); // this.toolbarCampaignName.text( campaignData.campaignName ); this.updateToolbar( campaignData ); } CampaignManager.prototype.onCampaignUpdated = function( campaignData ) { this.currentCampaign = campaignData; // reload the list and select the record this.campaignList.refresh( campaignData.campaignId ); // this.toolbarCampaignName.text( campaignData.campaignName ); this.updateToolbar( campaignData ); } CampaignManager.prototype.updateToolbar = function( campaignData ) { this.toolbarCampaignName.empty(); if( campaignData.campaignId ) { this.toolbarCampaignName.append( $("").text( campaignData.campaignName ) ); /* if( campaignData.statusCd && campaignData.statusCd != 'PEN' ) { this.toolbarCampaignName.append( $("").addClass( "dx-icon-lock" ).attr( { title : "This email campaign is read only" } ) ); } */ } } CampaignManager.prototype.switchToEditor = function() { this.multiView.option( "selectedIndex", 1 ); } CampaignManager.prototype.createEditor = function( options) { let instance = this; /* if( !( options.campaignId || options.campaignType )) { // not enough data return; } */ let tabIndex = 0; // dispose of the existing editor if( instance.campaignEditor ) { tabIndex = instance.campaignEditor.getCurrentTabIndex(); instance.campaignEditor.dispose(); instance.campaignEditor = null; } let campaignName = "Unknown Campaign"; if( ! options.campaignId ) { // for new campaigns we start on the first tab tabIndex = 0; campaignName = `New ${options.campaignType} Campaign`; /* if( options.campaignType == "CRM" ) { campaignName = "New CRM Campaign"; } else if ( options.campaignType == "STD" ) { campaignName = "New Standard Campaign"; } else { campaignName = `New ${options.campaignType} Campaign`; } */ } else if ( options.campaignName ) { campaignName = options.campaignName } instance.campaignEditor = new CampaignEditor( options, { tabIndex : tabIndex, campaignManager : instance } ); instance.campaignEditorHome.append( instance.campaignEditor.element() ); instance.updateToolbar( options ); // instance.toolbarCampaignName.text( options.campaignName ); }