{"version":3,"file":"static/js/application.initial~2a807e46.15361849.js","mappings":"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","sources":["../../../node_modules/@bingads-webui-campaign/import-center/src/constants/import-center-constants.js","../../../node_modules/@bingads-webui-campaign/import-components/src/page/continue-import/continue-import-view.js","../../../node_modules/@bingads-webui-campaign/import-components/src/page/continue-import/import-step-titles.js","../../../node_modules/@bingads-webui-campaign/import-components/src/page/base-import-view.js","../../../node_modules/@bingads-webui-campaign/import-components/src/page/pop-over-table-view.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-failure-details-table.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/base-import-step.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/account-title/account-title-step.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/error-message-view.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/custom-controls/dropdown-view.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/custom-controls/bmc-template-factory.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/custom-controls/numeric-adjustment-view.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/custom-controls/custom-text-view.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/custom-controls/other-section-factory.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/custom-controls/error-on-click-view.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/section-vm.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/parsers/edit-import-parser.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/parsers/form-model-parser.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/parsers/form-model-json-parser.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/parsers/json-option-parser.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/parsers/previous-options-parser.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/parsers/index.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/advanced-opt-view.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/advanced-select-all-opt-view.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/section-view.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/section-factory.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/update-entity-section-factory.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/url-temp-factory.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/options-url-view.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/options-factory.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/currency-convertor-temp-factory.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/fields-config/bid-fields.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/fields-config/message-mapper.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/fields-config/advanced/new-fields.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/fields-config/advanced/existing-fields.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/fields-config/entity-fields.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/uet-selector-factory.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/fields-config/other-fields.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/fields-config/index.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/flattened-schemas.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/import-options-form.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/import-options-summary-builder.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/import-options-step.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/fields-config/facebook-import-option-config.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-summary/grid/import-summary-grid.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-summary/grid/import-summary-grid-config.js","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-summary/import-summary-step.js","../../../node_modules/@bingads-webui-campaign/import-components/src/import-source/facebook.js","../../../node_modules/@bingads-webui-campaign/import-components/src/import-source/google.js","../../../node_modules/@bingads-webui-campaign/import-components/src/import-source/index.js","../../../node_modules/@bingads-webui-campaign/import-components/src/util/fac-warning-detector.js","../../../node_modules/@bingads-webui-campaign/import-components/src/util/constants.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/common-repository/entities-name-localizer.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/common-repository/blocker/ui-blocker-with-steps-viewmodel.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/common-repository/blocker/ui-blocker-with-steps-view.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/common-repository/default-options.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/common-repository/common-import-repository.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/common-repository/shared-dependencies.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/common-repository/common-permission-factory.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/import-repository-utils.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/google-import-repositories/google-import-repository.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/google-import-repositories/google-login-repository.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/smart-import-repository/smart-import-repository.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/facebook-import-repository/facebook-login-repository.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/facebook-import-repository/facebook-import-repository.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/facebook-import-repository/facebook-import-repository-utils.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/facebook-import-repository/get-facebook-config.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/facebook-import-repository/facebook-sdk-loader.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/gmc-login-repository/gmc-login-repository.js","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/gmc-login-repository/gmc-login-with-client-id-repository.js","../../../node_modules/@bingads-webui-campaign/import-shared-utils/src/notifications.js","../../../node_modules/@bingads-webui-campaign/import-shared-utils/src/odata-config.js","../../../node_modules/@bingads-webui-campaign/import-components/src/page/base-import-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/page/continue-import/continue-import-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-failure-details-table.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/custom-controls/bmc-flag-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/custom-controls/dropdown-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/custom-controls/error-on-click-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/custom-controls/numeric-adjustment.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/custom-controls/other-section-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/custom-controls/text-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/error-message-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/help-button-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/import-options-form-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/advanced-opt-temp.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/currency-convertor-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/section-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/url-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/form/options-section/warning-message-bullets-temp.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-options/import-options-template.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-summary/grid/help-pop-up.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-summary/grid/text-with-expander.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/import-summary/import-summary-step.pug","../../../node_modules/@bingads-webui-campaign/import-components/src/step/step-header.pug","../../../node_modules/@bingads-webui-campaign/import-shared-repositories/src/common-repository/blocker/ui-blocker-with-steps-template.pug"],"sourcesContent":["import { IMPORT_TYPE } from '@bingads-webui-campaign-legacy/scheduled-import/view/import-type';\r\n// import config from '@bingads-webui-component-legacy/config/index';\r\n\r\n// TODO: need to add permissions in future\r\n// API Filter\r\n// const permissions = config.get('Permissions');\r\n\r\n// const TEST_TYPE_SUFFIX = permissions && permissions.IsUseImportTestTypeForImportTaskExecutionEnabled ? 'Test' : '';\r\n\r\n// log api needed\r\nconst testTypeSuffix = '';\r\n\r\nexport const FILTER_IMPORT = `TaskItem/Type eq Enum.TaskItemType'Import${testTypeSuffix}'`;\r\nexport const FILTER_MULTIACCOUNT_IMPORT = `TaskItem/Type eq Enum.TaskItemType'MultiAccountGoogleImport${testTypeSuffix}'`;\r\nexport const FILTER_FILE_IMPORT = `TaskItem/Type eq Enum.TaskItemType'FileImport${testTypeSuffix}'`;\r\nexport const FILTER_FACEBOOK_IMPORT = `TaskItem/Type eq Enum.TaskItemType'FacebookImport${testTypeSuffix}'`;\r\nexport const FILTER_AMAZON_IMPORT = `TaskItem/Type eq Enum.TaskItemType'AmazonImport${testTypeSuffix}'`;\r\nexport const FILTER_PINTEREST_IMPORT = `TaskItem/Type eq Enum.TaskItemType'PinterestImport${testTypeSuffix}'`;\r\n\r\n\r\n// schedule api needed\r\nconst TEST_TYPE_SUFFIX = '';\r\nconst FILTER_OUT_RUNNOW = 'IsRunNow eq false';\r\nconst FILTER_IMPORT_TYPE = `Type eq Enum.TaskItemType'Import${TEST_TYPE_SUFFIX}'`;\r\nconst FILTER_FACEBOOK_IMPORT_TYPE = `Type eq Enum.TaskItemType'FacebookImport${TEST_TYPE_SUFFIX}'`;\r\nconst FILTER_MULTIACCOUNT_IMPORT_TYPE = `Type eq Enum.TaskItemType'MultiAccountGoogleImport${TEST_TYPE_SUFFIX}'`;\r\nconst FILTER_AMAZON_IMPORT_TYPE = `Type eq Enum.TaskItemType'AmazonImport${TEST_TYPE_SUFFIX}'`;\r\nconst FILTER_PINTEREST_IMPORT_TYPE = `Type eq Enum.TaskItemType'PinterestImport${TEST_TYPE_SUFFIX}'`;\r\n\r\nexport const FILTER_ALL_ITEMS = `${FILTER_IMPORT_TYPE} and ${FILTER_OUT_RUNNOW}`;\r\nexport const FILTER_ALL_BUT_DELETED = `${FILTER_IMPORT_TYPE} and State ne Enum.TaskItemState'Deleted' and ${FILTER_OUT_RUNNOW}`;\r\nexport const FILTER_ALL_ITEMS_MULTIACCOUNT = `${FILTER_MULTIACCOUNT_IMPORT_TYPE} and ${FILTER_OUT_RUNNOW}`;\r\nexport const FILTER_ALL_BUT_DELETED_MULTIACCOUNT = `${FILTER_MULTIACCOUNT_IMPORT_TYPE} and State ne Enum.TaskItemState'Deleted' and ${FILTER_OUT_RUNNOW}`;\r\n\r\nexport const FILTER_ALL_FACEBOOK_ITEMS = `${FILTER_FACEBOOK_IMPORT_TYPE} and ${FILTER_OUT_RUNNOW}`;\r\nexport const FILTER_ALL_BUT_DELETED_FACEBOOK_ITEMS = `${FILTER_FACEBOOK_IMPORT_TYPE} and State ne Enum.TaskItemState'Deleted' and ${FILTER_OUT_RUNNOW}`;\r\n\r\nexport const FILTER_ALL_AMAZON_ITEMS = `${FILTER_AMAZON_IMPORT_TYPE} and ${FILTER_OUT_RUNNOW}`;\r\nexport const FILTER_ALL_BUT_DELETED_AMAZON_ITEMS = `${FILTER_AMAZON_IMPORT_TYPE} and State ne Enum.TaskItemState'Deleted' and ${FILTER_OUT_RUNNOW}`;\r\n\r\nexport const FILTER_ALL_PINTEREST_ITEMS = `${FILTER_PINTEREST_IMPORT_TYPE} and ${FILTER_OUT_RUNNOW}`;\r\nexport const FILTER_ALL_BUT_DELETED_PINTEREST_ITEMS = `${FILTER_PINTEREST_IMPORT_TYPE} and State ne Enum.TaskItemState'Deleted' and ${FILTER_OUT_RUNNOW}`;\r\n\r\n// importChannelType to connection data type\r\nexport const IMPORT_CHANNEL_TO_CONNECTION_TYPE = {\r\n googleimport: 'Google',\r\n facebookimport: 'Facebook',\r\n amazonImport: 'Amazon',\r\n pinterestImport: 'Pinterest',\r\n fileimport: 'File',\r\n};\r\n\r\n// All supported import types api\r\nexport const IMPORT_API_TYPE = {\r\n googleimport: 'googleimport',\r\n facebookimport: 'facebookimport',\r\n amazonImport: 'amazonImport',\r\n pinterestImport: 'pinterestImport',\r\n};\r\n\r\nexport const CONNECTION_CONTEXT = {\r\n [IMPORT_API_TYPE.googleimport]: 'AdWordsImportContext',\r\n [IMPORT_API_TYPE.facebookimport]: 'FacebookImportContext',\r\n [IMPORT_API_TYPE.amazonImport]: 'AmazonImportContext',\r\n [IMPORT_API_TYPE.pinterestImport]: 'PinterestImportContext',\r\n};\r\n\r\nexport const IMPORT_CONNECTION_TYPE_MAP = {\r\n Import: 'Google',\r\n FacebookImport: 'Facebook',\r\n AmazonImport: 'Amazon',\r\n PinterestImport: 'Pinterest',\r\n};\r\n\r\nexport const IMPORT_TYPE_ROUTE = {\r\n [IMPORT_TYPE.googleimport]: '/campaign/vnext/googleimport',\r\n [IMPORT_TYPE.facebookimport]: '/campaign/vnext/facebookimport',\r\n [IMPORT_TYPE.fileimport]: '/campaign/vnext/fileimport',\r\n [IMPORT_TYPE.amazonImport]: '/campaign/vnext/amazonimport',\r\n [IMPORT_TYPE.pinterestImport]: '/campaign/vnext/pinterestimport',\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nimport ContinueImportTemplate from './continue-import-template.pug';\r\nimport { getImportStepTitles } from './import-step-titles';\r\n\r\nexport class ContinueImportView extends Backbone.View {\r\n initialize({ deps, options }) {\r\n this.deps = deps;\r\n this.i18n = deps.i18n;\r\n this.repo = deps.repository;\r\n this.permissions = deps.config.get('Permissions') || {};\r\n this.isAdGroupLevelImportEnabled = !deps.uxMode === 'signup';\r\n this.importType = options.importType;\r\n this.importId = options.importId;\r\n this.steps = getImportStepTitles(\r\n this.importType, options.importNotSubmitted,\r\n this.isAdGroupLevelImportEnabled\r\n );\r\n }\r\n\r\n events() {\r\n return {\r\n 'click .continueImport': 'continueImport',\r\n 'click .cancelImport': 'cancelImport',\r\n };\r\n }\r\n\r\n logTrace(msg) {\r\n this.repo.logTrace(msg, this.deps.logActivities.loadContinueImport);\r\n }\r\n\r\n render() {\r\n let pageTitle = this.i18n.get('FileImport_PageTitle');\r\n if (this.isGoogleImport()) {\r\n pageTitle = this.i18n.get('GoogleImport_PageTitle');\r\n } else if (this.isFacebookImport()) {\r\n pageTitle = this.i18n.get('FacebookImport_PageTitle');\r\n }\r\n\r\n this.$el.html(ContinueImportTemplate({\r\n i18n: this.i18n,\r\n steps: this.steps,\r\n pageTitle,\r\n }));\r\n\r\n this.logTrace(`render continue import with importType=${this.importType}`);\r\n return this;\r\n }\r\n\r\n isGoogleImport() {\r\n return this.importType === 'GoogleAPIImport';\r\n }\r\n\r\n isFacebookImport() {\r\n return this.importType === 'FacebookImport';\r\n }\r\n\r\n continueImport() {\r\n this.logTrace('click continue in continue import');\r\n if (this.isGoogleImport()) {\r\n this.repo.redirectToInProgressGoogleImport(this.importId);\r\n } else if (this.isFacebookImport()) {\r\n this.repo.redirectToInProgressFacebookImport(this.importId);\r\n } else {\r\n this.repo.redirectToInProgressFileImport(this.importId);\r\n }\r\n }\r\n\r\n cancelImport() {\r\n this.logTrace('click cancel in continue import');\r\n return this.repo.cancelCurrentImportAndRedirectToCampaigns(this.importId)\r\n .catch((err) => {\r\n this.repo.logException(err);\r\n this.deps.alertCenter.showError(this.repo.getLocalizedErrorMessage());\r\n })\r\n .finally(withUiBlock());\r\n }\r\n}\r\n","export function getImportStepTitles(\r\n importType, importNotSubmitted = false,\r\n isAdGroupLevelImportEnabled = false\r\n) {\r\n if (importType === 'GoogleAPIImport') {\r\n return [\r\n {\r\n title: 'GoogleImport_Login_Title',\r\n additionalClasses: '',\r\n },\r\n {\r\n title: 'GoogleImport_SelectAccount_Title',\r\n additionalClasses: '',\r\n },\r\n {\r\n title: isAdGroupLevelImportEnabled ?\r\n 'GoogleImport_SelectCampaignsAndAdGroups_Title' : 'GoogleImport_SelectCampaign_Title',\r\n additionalClasses: '',\r\n },\r\n {\r\n title: 'Import_ImportOptions_WithoutAccount_Title',\r\n additionalClasses: '',\r\n },\r\n {\r\n title: 'Scheduled_Import_Title',\r\n additionalClasses: '',\r\n },\r\n ];\r\n }\r\n if (importType === 'FacebookImport') {\r\n return [\r\n {\r\n title: 'FacebookImport_Login_Title',\r\n additionalClasses: '',\r\n },\r\n {\r\n title: 'FacebookImport_SelectAccount_Title',\r\n additionalClasses: '',\r\n },\r\n {\r\n title: 'FacebookImport_SelectCampaign_Title',\r\n additionalClasses: '',\r\n },\r\n {\r\n title: 'Import_ImportOptions_WithoutAccount_Title',\r\n additionalClasses: '',\r\n },\r\n {\r\n title: 'Scheduled_Import_Title',\r\n additionalClasses: '',\r\n },\r\n ];\r\n }\r\n return [\r\n {\r\n title: 'FileImport_UploadFile_Title',\r\n additionalClasses: '',\r\n },\r\n {\r\n title: 'FileImport_ColumnMatching_Title',\r\n additionalClasses: '',\r\n },\r\n {\r\n title: 'Import_ImportOptions_WithoutAccount_Title',\r\n additionalClasses: '',\r\n },\r\n {\r\n title: 'Import_ImportPreview_Title',\r\n additionalClasses: importNotSubmitted ? 'disabled-section' : '',\r\n },\r\n ];\r\n}\r\n","import Backbone from 'backbone';\r\nimport Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\n\r\nimport { StepsWizardBuilder } from '@bingads-webui/steps-wizard';\r\n\r\nimport { CommonImportRepository } from '@bingads-webui-campaign/import-shared-repositories';\r\nimport { ContinueImportView } from './continue-import/index';\r\nimport template from './base-import-template.pug';\r\n\r\nexport class BaseImportView extends Backbone.View {\r\n initialize({\r\n deps,\r\n steps,\r\n initialState = {},\r\n options,\r\n onSwitchFinished,\r\n }) {\r\n this.checkRequiredDeps(deps);\r\n\r\n this.deps = deps;\r\n this.steps = steps;\r\n this.initialState = initialState;\r\n this.options = options;\r\n // by default, the other steps except last step will be hidden when wizard finish.\r\n // param: wizard\r\n this.showAllStepsInLastStepFunc = this.options.showAllStepsInLastStepFunc;\r\n if (!this.showAllStepsInLastStepFunc) {\r\n this.showAllStepsInLastStepFunc = () => false;\r\n }\r\n this.onSwitchFinished = onSwitchFinished;\r\n this.repository = new CommonImportRepository({\r\n deps: this.deps,\r\n });\r\n this.logTrace = this.repository.logTrace;\r\n }\r\n\r\n checkRequiredDeps(deps) {\r\n deps.check('adGroupMedium');\r\n deps.check('config');\r\n deps.check('i18n');\r\n deps.check('i18nAmdLoader');\r\n deps.check('i18nErrors');\r\n deps.check('language');\r\n deps.check('market');\r\n deps.check('odata');\r\n deps.check('timeZoneEnumMapper');\r\n deps.check('showPayment');\r\n deps.check('paymentMethodUrl');\r\n deps.check('schema');\r\n deps.check('storeList');\r\n deps.check('alertCenter');\r\n deps.check('logActivities');\r\n deps.check('defaultLogActivity');\r\n deps.check('sharedCookieDomain');\r\n deps.check('statusOrderToBlockerTitleMap');\r\n deps.check('statusKeyToOrderMap');\r\n }\r\n\r\n checkIfNeedDisablePage() {\r\n // for read only user or inactive account, disable buttons to avoid operations.\r\n if (this.deps.config.get('Permissions').IsReadOnlyUser\r\n || this.deps.config.get('CurrentAccountInActive')) {\r\n this.$('button').attr('disabled', 'disabled');\r\n this.$('input[type=button]').attr('disabled', 'disabled');\r\n }\r\n }\r\n\r\n render() {\r\n if (this.initialState.importId) {\r\n this.initializeStepsWizard();\r\n this.checkIfNeedDisablePage();\r\n return Promise.resolve(this);\r\n }\r\n return this.renderInitialLoad().then(() => {\r\n this.checkIfNeedDisablePage();\r\n return this;\r\n });\r\n }\r\n\r\n remove() {\r\n // set remove flag to avoid extra handling\r\n if (this.deps.importSource) {\r\n // set remove flag in schedule import step for google import and facebook import\r\n const scheduleImportStepView = _.findWhere(this.steps, { stepName: 'schedule-import-step' }).stepView;\r\n if (scheduleImportStepView) {\r\n scheduleImportStepView.stepRemoved = true;\r\n }\r\n } else {\r\n // set remove flag in import options step for file import\r\n const importOptionsStepView = _.findWhere(this.steps, { stepName: 'import-options-step' }).stepView;\r\n if (importOptionsStepView) {\r\n importOptionsStepView.stepRemoved = true;\r\n }\r\n }\r\n\r\n // close the blocker if any\r\n if (this.currentStepInstance.repository.blockerView) {\r\n this.currentStepInstance.repository.blockerView.closeBlock();\r\n }\r\n\r\n // should stop send polling status api\r\n this.currentStepInstance.repository.stopPollingStatus();\r\n\r\n super.remove();\r\n }\r\n\r\n goToNextStep(importStatus = '') {\r\n if (!this.onContinueImportView) {\r\n this.view.currentStepInstance.patchState({\r\n importStatus,\r\n });\r\n this.view.currentStepInstance.wizardShouldGoNext()\r\n .then((result) => {\r\n if (result) {\r\n this.view.goTo(this.view.nextStepName);\r\n }\r\n\r\n return this;\r\n });\r\n } else {\r\n throw new Error('Should not be trying to go to next step while on Continue Import view');\r\n }\r\n }\r\n\r\n goToStep(stepName) {\r\n this.view.goTo(stepName);\r\n }\r\n\r\n get currentStepInstance() {\r\n return this.view.currentStepInstance;\r\n }\r\n\r\n renderInitialLoad() {\r\n let statusRepository;\r\n if (this.deps.isMultiAccountImport) {\r\n statusRepository = Promise.resolve();\r\n } else if (this.deps.isForVNext) {\r\n statusRepository = Promise.resolve(this.deps.importStatus);\r\n } else {\r\n statusRepository = this.repository.isAnyImportPending();\r\n }\r\n\r\n return statusRepository\r\n .then((status) => {\r\n if (status && !this.options.isSignUpMode) {\r\n const options = _.extend(\r\n {},\r\n _.pick(status, 'importType', 'importId', 'importNotSubmitted'), this.options.continueImportOptions\r\n );\r\n\r\n this.view = new ContinueImportView({\r\n deps: _.extend(this.deps, {\r\n repository: this.repository,\r\n }),\r\n options,\r\n });\r\n this.onContinueImportView = true;\r\n this.$el.html(this.view.render().el);\r\n\r\n this.logTrace('continue import will be shown');\r\n } else {\r\n this.onContinueImportView = false;\r\n this.initializeStepsWizard();\r\n }\r\n\r\n return this;\r\n })\r\n .catch((err) => {\r\n this.repository.logException(err);\r\n this.deps.alertCenter.showError(this.repository.getLocalizedErrorMessage());\r\n });\r\n }\r\n\r\n initializeStepsWizard() {\r\n let wizard = new StepsWizardBuilder();\r\n\r\n _.each(this.steps, ({\r\n stepName,\r\n stepView,\r\n }) => {\r\n wizard.withStep(stepName, stepView);\r\n });\r\n\r\n // not show edit for continue import and sign up import\r\n const isEditEnabledForWizard = !this.initialState.importId && this.options.enableEdit;\r\n\r\n wizard = wizard.startsFrom(this.options.currentStep)\r\n .setEvents({\r\n 'click .step-header-link': (e) => {\r\n this.trigger('click:step.header.link', e);\r\n },\r\n })\r\n .setInitialState(_.defaults({ isEditEnabledForWizard }, this.initialState));\r\n\r\n if (isEditEnabledForWizard) {\r\n wizard = wizard.withEditButton();\r\n }\r\n\r\n this.view = wizard.build();\r\n // The $lastVisist state in step wizard is messed up in A=>B=>C, edit B, edit A scenario.\r\n // Workaround fix is to use our customized logic.\r\n let lastVisitStepName;\r\n\r\n _.each(this.steps, ({ stepView }) => {\r\n stepView.on('next', () => {\r\n const { nextStepName } = this.view;\r\n lastVisitStepName = nextStepName;\r\n this.logTrace(`will go to ${nextStepName}`);\r\n this.view.goTo(nextStepName);\r\n });\r\n stepView.on('edit:false', () => {\r\n this.logTrace(`no edit, will go to ${lastVisitStepName}`);\r\n this.view.goTo(lastVisitStepName);\r\n });\r\n stepView.on('import:error', () => {\r\n this.logTrace('has error, hide edit icon');\r\n this.$('.edit-step').hide();\r\n });\r\n });\r\n // if we change dom on switch:end, we may break the render of import summary grid.\r\n this.view.on('switch:begin', ({ destStepName }) => {\r\n if (isEditEnabledForWizard) {\r\n this.view.currentStepInstance.patchState({\r\n [`${this.view.currentStepName}.isEdited`]: this.view.currentStepInstance.isEditedOrFirstSubmit,\r\n });\r\n }\r\n\r\n if (destStepName === this.view.lastStep.name) {\r\n if (!this.showAllStepsInLastStepFunc(this.view)) {\r\n const otherSteps = _.initial(this.steps);\r\n\r\n _.each(otherSteps, (item) => {\r\n item.stepView.remove();\r\n $(`[data-step-name='${item.stepName}']`).closest('.step-container').hide();\r\n });\r\n }\r\n\r\n if (this.options.isSignUpMode) {\r\n $('[data-step-name=\"import-summary-step\"]').closest('.step-container').show();\r\n $('.import-page-title').hide();\r\n }\r\n }\r\n });\r\n\r\n this.view.on('switch:finish', ({ stepName }) => {\r\n if (this.onSwitchFinished) {\r\n this.onSwitchFinished();\r\n }\r\n if (stepName === this.view.lastStep.name) {\r\n this.$('.edit-step').hide(); // hide edit icon when in last step\r\n }\r\n });\r\n\r\n this.$el.html(template({\r\n pageTitle: this.options.pageTitle,\r\n subTitle: this.options.subTitle,\r\n }));\r\n this.$('.import-steps').html(this.view.render().el);\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport { PopoverView, contents } from '@bingads-webui/popover';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport projectionGrid from 'projection-grid';\r\n\r\nclass PopoverTableView extends DeterministicWrapperView {\r\n viewFactory({\r\n columns,\r\n data,\r\n i18n,\r\n }) {\r\n const config = {\r\n dataSource: {\r\n type: 'memory',\r\n data,\r\n },\r\n columns,\r\n tableClasses: ['table', 'table-bordered'],\r\n plugins: {\r\n a11y: { i18n },\r\n },\r\n };\r\n\r\n this.grid = projectionGrid\r\n .factory({\r\n vnext: true,\r\n })\r\n .use(a11yPlugin)\r\n .create(config);\r\n\r\n return this.grid.gridView;\r\n }\r\n}\r\n\r\nexport function showPopoverTableView(target, containerClassName, viewTitle, columns, data, i18n) {\r\n const targetRect = target.getBoundingClientRect();\r\n new PopoverView({\r\n target: $(target),\r\n position: {\r\n isAbsolute: true,\r\n left: targetRect.right + window.scrollX,\r\n top: targetRect.top + window.scrollY,\r\n },\r\n containerClassName,\r\n }).setContent(new contents.TitledContent()\r\n .setTitle(viewTitle)\r\n .setBody(new PopoverTableView({\r\n columns,\r\n data,\r\n i18n,\r\n })));\r\n}\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport { parseSync } from '@bingads-webui/safe-json';\r\nimport template from './import-failure-details-table.pug';\r\n\r\nconst entityLocalizedKeyMapping = {\r\n Campaigns: 'Import_ImportSummary_Campaigns',\r\n Adgroups: 'Import_ImportSummary_AdGroups',\r\n 'Ad Extension': 'Import_ImportSummary_AdExtensions',\r\n Ads: 'Import_ImportSummary_Ads',\r\n Keywords: 'Import_ImportSummary_Keywords',\r\n 'Negative Keywords': 'Import_ErrorTable_NegativeKeywords',\r\n 'Shared Negative Keywords': 'Import_ImportSummary_SharedNegativeKeyword',\r\n 'Campaign Negative Keyword List Associations': 'Import_CampaignNegativeKeywordListAssociation',\r\n NegativeSites: 'Import_ErrorTable_NegativeSites',\r\n ProductScopes: 'Import_ErrorTable_ProductScopes',\r\n 'Product Partitions': 'Import_ErrorTable_ProductPartitions',\r\n Targets: 'CampaignImport_ImportSummaryTargets',\r\n Labels: 'Import_ErrorTable_Labels',\r\n CampaignLabels: 'Import_ErrorTable_CampaignLabels',\r\n AdGroupLabels: 'Import_ErrorTable_AdGroupLabels',\r\n AdLabels: 'Import_ErrorTable_AdLabels',\r\n KeywordLabels: 'Import_ErrorTable_KeywordLabels',\r\n 'Other items': 'Import_ImportSummary_Others',\r\n 'Campaign DSA Exclusion': 'Import_ImportSummary_CampaignDSACriterion',\r\n 'AdGroup DSA Auto Tartget and Exclusion': 'Import_ImportSummary_AdGroupDSACriterion',\r\n 'AdGroup DSA Auto Target and Exclusion': 'Import_ImportSummary_AdGroupDSACriterion',\r\n};\r\n\r\nexport class ImportFailureDetailsTableView extends Backbone.View {\r\n initialize(options = {}) {\r\n this.options = options;\r\n this.i18n = this.options.i18n;\r\n this.i18nAmdLoader = this.options.i18nAmdLoader;\r\n\r\n this.failureReasonsColumnsMapping = {\r\n // 17015 ImportTotalRowsExceedLimit\r\n 17015: [{\r\n columnName: '',\r\n field: 'EntityDescription',\r\n }, {\r\n columnName: this.i18n.get('Import_ErrorTable_ImportedCount'),\r\n field: 'ImportedCount',\r\n }, {\r\n columnName: this.i18n.get('Import_ErrorTable_LimitCount'),\r\n field: 'LimitCount',\r\n }],\r\n };\r\n\r\n this.entityDescriptionMapping = {};\r\n _.each(entityLocalizedKeyMapping, (val, key) => {\r\n this.entityDescriptionMapping[key] = this.i18n.get(val);\r\n });\r\n }\r\n\r\n render() {\r\n this.$el.html(template(_.extend({\r\n isForVNext: this.options.isForVNext,\r\n ariaLabel: this.i18n.get('Import_ErrorTable_DemandLimitError'),\r\n }, this.formatData())));\r\n this.$('.import-error-message').html(this.options.message);\r\n return this;\r\n }\r\n\r\n /*\r\n Sample data:\r\n {\r\n ErrorCode: 17015,\r\n ErrorDetail: [\r\n {\r\n ImportedCount: 100,\r\n LimitCount: 2000000,\r\n EntityDescription: \"Negative Keywords\",\r\n HasExceededLimit: false\r\n }\r\n ]\r\n }\r\n Sample formatted data:\r\n {\r\n columns: ['', 'How many you want to import', 'Maximum import limit'],\r\n data: [{\r\n values: ['Negative Keywords', 100, 2000000],\r\n hasError: false\r\n }]\r\n };\r\n */\r\n formatData() {\r\n const { data } = this.options;\r\n const reason = this.options.failureReason; // error code\r\n\r\n const result = {};\r\n\r\n if (!data) {\r\n return result;\r\n }\r\n\r\n const reasonColumnsMapping = this.failureReasonsColumnsMapping[reason];\r\n let failureDetailsData = parseSync(data) || []; //eslint-disable-line\r\n\r\n if (reasonColumnsMapping && reasonColumnsMapping.length > 0 &&\r\n failureDetailsData && failureDetailsData.length > 0) {\r\n result.columns = _.pluck(reasonColumnsMapping, 'columnName');\r\n result.data = _.map(failureDetailsData, (oneTypeFailureDetails) => {\r\n const values = _.chain(reasonColumnsMapping).pluck('field').map(columnField => oneTypeFailureDetails[columnField]).value();\r\n const hasError = oneTypeFailureDetails.HasExceededLimit;\r\n const formattedValues = _.map(values, (val) => {\r\n let tmp = val;\r\n\r\n if (_.isNumber(val)) {\r\n tmp = this.i18nAmdLoader.formatDecimal(val);\r\n } else if (_.isString(val)) {\r\n tmp = this.entityDescriptionMapping[tmp] || tmp;\r\n }\r\n\r\n return tmp || this.i18n.get('Import_LastImport_Dash');\r\n });\r\n\r\n return { values, hasError, formattedValues };\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport $ from 'jquery';\r\n\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { BaseStepView } from '@bingads-webui/steps-wizard';\r\nimport headerTemplate from './step-header.pug';\r\nimport { ImportFailureDetailsTableView } from './import-failure-details-table';\r\n\r\nexport class BaseImportStep extends BaseStepView {\r\n initialize({\r\n deps,\r\n }) {\r\n this.deps = deps;\r\n this.i18n = this.deps.i18n;\r\n this.i18nAmdLoader = this.deps.i18nAmdLoader;\r\n this.repository = this.deps.repository;\r\n this.isEdited = true;\r\n this.alreadySubmitted = false;\r\n this.previousStepName = this.deps.previousStepName;\r\n this.linkTextForTitle = this.deps.linkTextForTitle;\r\n this.isForVNext = this.deps.isForVNext;\r\n }\r\n\r\n logTrace(...args) {\r\n this.repository.logTrace(...args);\r\n }\r\n\r\n logError(...args) {\r\n this.repository.logError(...args);\r\n }\r\n\r\n // usually in continue import, only show active title as summary info is not available.\r\n // but for accout title step, this step will be already shown as summarry.\r\n buildTitle(options, ignoreContinueCheck = false) {\r\n let activeTitle;\r\n let summaryTitle;\r\n\r\n if (_.isString(options)) {\r\n activeTitle = options;\r\n } else if (!ignoreContinueCheck && this.deps.isContinueImport) {\r\n ({ activeTitle } = options);\r\n } else {\r\n ({ activeTitle } = options);\r\n ({ summaryTitle } = options);\r\n }\r\n\r\n if (summaryTitle) {\r\n return {\r\n done: {\r\n html: headerTemplate({\r\n title: summaryTitle,\r\n subTitle: this.getSummaryInfo(),\r\n link: this.linkTextForTitle,\r\n }),\r\n },\r\n active: {\r\n html: headerTemplate({\r\n title: activeTitle,\r\n }),\r\n },\r\n pending: {\r\n html: headerTemplate({\r\n title: activeTitle,\r\n }),\r\n },\r\n };\r\n }\r\n\r\n return {\r\n html: headerTemplate({\r\n title: activeTitle,\r\n }),\r\n };\r\n }\r\n\r\n getSummaryInfo() {\r\n return '';\r\n }\r\n\r\n goBack() {\r\n if (this.deps.referrer) {\r\n this.repository.navigateToUrl(this.deps.referrer);\r\n } else if (this.deps.isMultiAccountImport) {\r\n this.repository.redirectToAccountsSummary();\r\n } else {\r\n this.repository.redirectToCampaigns();\r\n }\r\n }\r\n\r\n cancel() {\r\n if (_.propertyOf(this.getState())('importId')) {\r\n this.logTrace('import will be cancelled.');\r\n this.repository.cancelCurrentImport(this.getState().importId)\r\n .then(() => {\r\n this.goBack();\r\n })\r\n .catch(() => {\r\n this.handleGenericError();\r\n })\r\n .finally(withUiBlock());\r\n } else {\r\n this.logTrace('cancel is clicked and go back.');\r\n this.goBack();\r\n }\r\n }\r\n\r\n get actions() {\r\n return [\r\n {\r\n name: 'continue-with-edit',\r\n displayText: this.i18n.get('CampaignImport_ButtonContinue'),\r\n method: 'continueWithEditLogic',\r\n enabled: true,\r\n htmlAttributes: {\r\n class: 'btn btn-primary',\r\n },\r\n },\r\n {\r\n name: 'cancel',\r\n displayText: this.i18n.get('CampaignImport_ButtonCancel'),\r\n },\r\n ];\r\n }\r\n\r\n willHide() {\r\n this.isEdited = false;\r\n }\r\n\r\n continueWithEditLogic() {\r\n if (this.isEditedOrFirstSubmit) {\r\n Promise.resolve(this.wizardShouldGoNext())\r\n .then((goNext) => {\r\n if (goNext) {\r\n this.trigger('next');\r\n this.alreadySubmitted = true;\r\n }\r\n });\r\n } else {\r\n this.trigger('edit:false');\r\n }\r\n }\r\n\r\n handleGenericError(err) {\r\n this.repository.logException(err);\r\n this.showErrorMessage(this.repository.getLocalizedErrorMessage());\r\n }\r\n\r\n showErrorMessage(msg) {\r\n this.deps.alertCenter.showError(msg);\r\n }\r\n\r\n handleErrorInImport(err) {\r\n const customized = err.customized || {};\r\n const { errorCode } = customized;\r\n this.logTrace(`Handling error in import. Error code: ${errorCode} Error message: ${customized.message || 'No error message'}`);\r\n\r\n if (errorCode === 17015 && this.$('.error-panel').length) {\r\n this.importFailureDetailsTableView = new ImportFailureDetailsTableView({\r\n message: customized.message,\r\n data: customized.errorDetail,\r\n failureReason: errorCode,\r\n i18n: this.i18n,\r\n i18nAmdLoader: this.i18nAmdLoader,\r\n isForVNext: this.isForVNext,\r\n }).render();\r\n\r\n this.$('.error-panel').html(this.importFailureDetailsTableView.el);\r\n } else if (customized.message) {\r\n this.showErrorMessage(customized.message);\r\n } else {\r\n this.handleGenericError(err);\r\n }\r\n $('.btn-primary').attr('disabled', 'disabled');\r\n this.trigger('import:error');\r\n }\r\n\r\n updateAction() {\r\n // force a re-draw of the action bar in case actions change\r\n this.trigger('change:action');\r\n }\r\n\r\n checkIfShouldUpdateAndResetFlagIfTrue() {\r\n const state = this.getState() || {};\r\n\r\n if (!state.isEditEnabledForWizard) {\r\n return true;\r\n }\r\n\r\n let checkResult = true;\r\n\r\n if (this.previousStepName) {\r\n const key = `${this.previousStepName}.isEdited`;\r\n const shouldUpdate = _.propertyOf(this.getState())(key);\r\n\r\n if (shouldUpdate) {\r\n this.patchState({\r\n [key]: false,\r\n });\r\n }\r\n\r\n checkResult = shouldUpdate;\r\n }\r\n\r\n this.isEdited = checkResult;\r\n return checkResult;\r\n }\r\n\r\n get isEditedOrFirstSubmit() {\r\n const state = this.getState() || {};\r\n\r\n if (!state.isEditEnabledForWizard) {\r\n return true;\r\n }\r\n return !this.alreadySubmitted || this.isEdited;\r\n }\r\n}\r\n","import { BaseImportStep } from '../base-import-step';\r\n\r\nexport class AccountTitleStep extends BaseImportStep {\r\n initialize({\r\n deps,\r\n }) {\r\n super.initialize({\r\n deps,\r\n });\r\n this.currentAccountTitle = this.deps.config.get('CurrentAccount').Title;\r\n this.summaryTitle = this.i18n.get('GoogleImport_BingAccount_Summary');\r\n this.currencyTag = this.i18n.get('GoogleImport_AccountCurrencyConversion_CurrencyTag');\r\n }\r\n\r\n get title() {\r\n return this.buildTitle({\r\n summaryTitle: this.summaryTitle,\r\n }, true);\r\n }\r\n\r\n getSummaryInfo() {\r\n let summaryInfo = this.currentAccountTitle;\r\n\r\n summaryInfo = `${summaryInfo} ${this.currencyTag} ${this.deps.config.get('AccountCurrencyCode')}`;\r\n return summaryInfo;\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\n\r\nimport errorMessageTemplate from './error-message-template.pug';\r\n\r\nexport class ErrorMessageView extends Backbone.View {\r\n initialize({ errorMessage }) {\r\n this.errorMessage = errorMessage;\r\n this.viewModel = {\r\n showError: ko.observable(false),\r\n };\r\n }\r\n\r\n render() {\r\n this.$el.html(errorMessageTemplate({\r\n errorMessage: this.errorMessage,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n return this;\r\n }\r\n\r\n setVisibility(newVisibility) {\r\n this.viewModel.showError(newVisibility);\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\n\r\n\r\nimport dropdownTemplate from './dropdown-template.pug';\r\n\r\nexport class DropdownView extends Backbone.View {\r\n initialize({\r\n observable,\r\n field,\r\n i18n,\r\n isForVNext,\r\n }) {\r\n observable.validators.type.isValid = () => true; //eslint-disable-line\r\n this.viewModel = {\r\n observable,\r\n };\r\n this.field = field;\r\n this.i18n = i18n;\r\n this.isForVNext = isForVNext;\r\n }\r\n\r\n render() {\r\n this.$el.html(dropdownTemplate({\r\n hasStore: _.size(this.field.values) > 0,\r\n field: this.field,\r\n i18n: this.i18n,\r\n isForVNext: this.isForVNext,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n return this;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport bmcCheckboxTemplate from './bmc-flag-template.pug';\r\nimport { DropdownView } from './dropdown-view';\r\n\r\nexport class BMCTemplateFactory {\r\n constructor({ i18n }) {\r\n this.i18n = i18n;\r\n }\r\n\r\n generateDropdownViewForForm(isForVNext) {\r\n const i18nLoader = this.i18n;\r\n\r\n return class DropdownViewWithI8N extends DropdownView {\r\n initialize({ observable, field }) {\r\n super.initialize({\r\n observable,\r\n field,\r\n i18n: i18nLoader,\r\n isForVNext,\r\n });\r\n }\r\n };\r\n }\r\n\r\n generateBmcCheckboxTemplateFunctionForForm(hasStore) {\r\n return options => (\r\n bmcCheckboxTemplate(_.extend({\r\n hasStore,\r\n }, options))\r\n );\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport ReactDOM from 'react-dom';\r\nimport React from 'react';\r\nimport {\r\n MessageBar,\r\n MessageBarButton,\r\n} from '@fluentui/react';\r\nimport decimalNumber from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\n\r\nimport numericAdjustmentTemplate from './numeric-adjustment.pug';\r\n\r\nconst INCREASE_CHANGE = 'Increase';\r\nconst DECREASE_CHANGE = 'Decrease';\r\n\r\n/* eslint-disable no-param-reassign */\r\n\r\nclass BaseNumericAdjustmentView extends Backbone.View {\r\n initialize({\r\n observable,\r\n field,\r\n enabled,\r\n i18n,\r\n }) {\r\n const changeOptions = [{\r\n option: INCREASE_CHANGE,\r\n optionText: i18n.getString('Increase'),\r\n }, {\r\n option: DECREASE_CHANGE,\r\n optionText: i18n.getString('Decrease'),\r\n }];\r\n\r\n const positiveMax = observable.validators.range.max;\r\n const negativeMax = Math.abs(observable.validators.range.min);\r\n\r\n observable.validators.type.isValid = (value) => {\r\n if (enabled()) {\r\n return /^\\d+((\\.|,)\\d+)?$/.test(value);\r\n }\r\n return true;\r\n };\r\n\r\n // simple form bug adds default decimalLength validator of 2 on initial values\r\n observable.validators.decimalLength.isValid = () => true;\r\n\r\n const originalRangeValidator = observable.validators.range\r\n .isValidValue.bind(observable.validators.range);\r\n\r\n observable.validators.range.isValidValue = (value) => {\r\n if (this.viewModel) {\r\n this.viewModel.showRecommendationMessageDefault(true);\r\n }\r\n if (enabled()) {\r\n return originalRangeValidator(value);\r\n }\r\n return true;\r\n };\r\n\r\n let initialChangeType;\r\n observable.validators.range.min = 0;\r\n\r\n if (observable() < 0) {\r\n initialChangeType = DECREASE_CHANGE;\r\n observable.validators.range.max = negativeMax;\r\n } else {\r\n initialChangeType = INCREASE_CHANGE;\r\n observable.validators.range.max = positiveMax;\r\n }\r\n\r\n observable(Math.abs(observable()));\r\n\r\n this.adjustmentValueString = ko.observable(decimalNumber.fromFloatToStringNoTrailingZero(observable()));\r\n\r\n this.viewModel = {\r\n observable,\r\n changeOptions: ko.observableArray(changeOptions),\r\n selectedChange: ko.observable(initialChangeType),\r\n enabled,\r\n // recommendation message should be hide when loading UI.\r\n showRecommendationMessageDefault: ko.observable(false),\r\n adjustmentValue: ko.computed({\r\n read() {\r\n return this.adjustmentValueString();\r\n },\r\n write(value) {\r\n this.adjustmentValueString(value);\r\n return observable(observable.validators.type.isValid(value) ? decimalNumber.fromLocalToFloat(value) : value);\r\n },\r\n }, this),\r\n };\r\n\r\n this.field = field;\r\n this.i18n = i18n;\r\n this.decreaseMaxNum = _.isNumber(field.decreaseMaxNum) ? field.decreaseMaxNum : null;\r\n\r\n this.viewModel.showRecommendationMessage = ko.computed(() => {\r\n const isShow = this.viewModel.enabled()\r\n && this.viewModel.showRecommendationMessageDefault()\r\n && this.viewModel.selectedChange() === DECREASE_CHANGE\r\n && this.viewModel.observable.validate()\r\n && _.isNumber(this.decreaseMaxNum)\r\n && this.viewModel.observable() > this.decreaseMaxNum;\r\n if (isShow && this.field.logTrace) {\r\n this.field.logTrace('BCCForImportRecommendation: show');\r\n }\r\n return isShow;\r\n });\r\n\r\n this.viewModel.selectedChange.subscribe((newChangeType) => {\r\n if (newChangeType === DECREASE_CHANGE) {\r\n observable.validators.range.max = negativeMax;\r\n } else {\r\n observable.validators.range.max = positiveMax;\r\n }\r\n\r\n observable.validate();\r\n });\r\n }\r\n\r\n onApplyRecommendation() {\r\n if (this.field.logTrace) {\r\n this.field.logTrace('BCCForImportRecommendation: apply');\r\n this.field.logTrace(`BCCForImportRecommendation: newvalue ${this.decreaseMaxNum}, oldvalue ${this.viewModel.observable()}`);\r\n }\r\n this.viewModel.adjustmentValue(this.decreaseMaxNum);\r\n }\r\n\r\n renderMessageBar() {\r\n ReactDOM.render(\r\n // eslint-disable-next-line react/jsx-filename-extension\r\n \r\n {this.i18n.getString('AdjustmentForCampaignBudgets_ApplyRecommendation')}\r\n \r\n }\r\n >\r\n ({text}),\r\n }}\r\n />\r\n ,\r\n this.$('.import-options-recommendation-message .message-section')[0]\r\n );\r\n }\r\n\r\n render() {\r\n this.$el.html(numericAdjustmentTemplate({\r\n field: this.field,\r\n i18n: this.i18n,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n if (_.isNumber(this.decreaseMaxNum)) {\r\n this.renderMessageBar();\r\n }\r\n return this;\r\n }\r\n\r\n isDecreaseSelected() {\r\n return this.viewModel.selectedChange() === DECREASE_CHANGE;\r\n }\r\n}\r\n\r\nexport function createNumericAdjustmentViewClass(i18n, dependentFieldName) {\r\n return class NumericAdjustmentView extends BaseNumericAdjustmentView {\r\n constructor({ observable, viewModel, field }) {\r\n super({\r\n observable,\r\n field,\r\n enabled: _.propertyOf(viewModel)(dependentFieldName),\r\n i18n,\r\n });\r\n }\r\n };\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\n\r\nimport textWithHeaderTemplate from './text-template.pug';\r\n\r\nexport class TextWithCustomValidatorView extends Backbone.View {\r\n initialize({\r\n observable,\r\n field,\r\n headerText = null,\r\n }) {\r\n if (observable.validators.required) {\r\n // re-write validator to ignore when field is not visible\r\n observable.validators.required.isValid = () => { //eslint-disable-line\r\n if (observable.visible()) {\r\n return _.isString(observable()) && _.size(observable()) > 0;\r\n }\r\n return true;\r\n };\r\n }\r\n\r\n this.viewModel = {\r\n observable,\r\n };\r\n this.field = field;\r\n this.headerText = headerText;\r\n }\r\n\r\n render() {\r\n this.$el.html(textWithHeaderTemplate({\r\n headerText: this.headerText,\r\n field: this.field,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n return this;\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\n\r\nimport _ from 'underscore';\r\n\r\nimport otherItemTemplate from './other-section-template.pug';\r\nimport { TextWithCustomValidatorView } from './custom-text-view';\r\n\r\nexport class OtherSectionFactory {\r\n constructor({ i18n }) {\r\n this.i18n = i18n;\r\n }\r\n\r\n generateOtherItemTemplateForForm(description) {\r\n return options => (\r\n otherItemTemplate(_.extend({\r\n description,\r\n }, options))\r\n );\r\n }\r\n\r\n generateFindViewForForm() {\r\n const headerText = this.i18n.getString('Import_ImportOptions_FindWhat');\r\n\r\n return class FindView extends TextWithCustomValidatorView {\r\n initialize({ observable, field }) {\r\n field.ariaLabel = headerText;\r\n\r\n super.initialize({\r\n observable,\r\n field,\r\n headerText,\r\n });\r\n }\r\n };\r\n }\r\n\r\n generateReplaceViewForForm() {\r\n const headerText = this.i18n.getString('Import_ImportOptions_ReplaceWith');\r\n\r\n return class ReplaceView extends TextWithCustomValidatorView {\r\n initialize({ observable, field }) {\r\n field.ariaLabel = headerText;\r\n\r\n super.initialize({\r\n observable,\r\n field,\r\n headerText,\r\n });\r\n }\r\n };\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\n\r\nimport errorOnClickTemplate from './error-on-click-template.pug';\r\n\r\n/*\r\nA custom view that displays a warning under an option\r\nwhen a passed in predicate is not met\r\n*/\r\nexport class BaseErrorOnClickView extends Backbone.View {\r\n initialize({\r\n observable,\r\n field,\r\n predicate,\r\n errorMessage,\r\n blockCheckInput,\r\n }) {\r\n this.viewModel = {\r\n observable,\r\n displayErrorMessage: ko.observable(false),\r\n };\r\n this.field = field;\r\n this.predicate = predicate;\r\n this.errorMessage = errorMessage;\r\n this.blockCheckInput = blockCheckInput;\r\n\r\n // delegate events here because events() is run before blockCheckInput and field are received\r\n if (this.blockCheckInput) {\r\n const events = {};\r\n events[`click [id=${this.field.id}]`] = 'onClick';\r\n this.delegateEvents(events);\r\n }\r\n }\r\n\r\n onClick() {\r\n if (!this.predicate()) {\r\n if (this.blockCheckInput) this.viewModel.observable(false);\r\n this.viewModel.displayErrorMessage(true);\r\n } else {\r\n this.viewModel.displayErrorMessage(false);\r\n }\r\n }\r\n\r\n render() {\r\n this.$el.html(errorOnClickTemplate({\r\n field: this.field,\r\n errorMessage: this.errorMessage,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n return this;\r\n }\r\n}\r\n\r\nexport function createErrorOnClickWithDependentFieldClass(\r\n errorMessage,\r\n dependentFieldName,\r\n blockCheckInput = true\r\n) {\r\n return class ErrorOnClickView extends BaseErrorOnClickView {\r\n constructor({ observable, viewModel, field }) {\r\n super({\r\n observable,\r\n field,\r\n predicate: _.propertyOf(viewModel)(dependentFieldName),\r\n errorMessage,\r\n blockCheckInput,\r\n });\r\n }\r\n };\r\n}\r\n","import ko from 'knockout';\r\n\r\nexport class OptionsSectionViewModel {\r\n constructor({ i18n, observable }) {\r\n this.observable = observable;\r\n this.showAdvancedOptions = ko.observable(false);\r\n this.hideText = i18n.getString('Import_ImportOptions_HideAdvancedOptions');\r\n this.showText = i18n.getString('Import_ImportOptions_ShowAdvancedOptions');\r\n\r\n this.displayWarningMessage = ko.observable(false);\r\n }\r\n}\r\n","/* eslint-disable camelcase */\r\n\r\nimport _ from 'underscore';\r\n\r\nfunction getImportEntityOptionValue(options, type, value) {\r\n // when editing old scheduled import, ImportNewOptions property is null\r\n if (options[type]) {\r\n const newOptions = _.map(options[type].split(','), string => (\r\n string.trim()\r\n ));\r\n\r\n return _.contains(newOptions, value);\r\n }\r\n // Do not set this as true by default\r\n if (value === 'ImportNewCampaignsAndMarkAsPaused') {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nfunction getNewItemValue(options, value) {\r\n return getImportEntityOptionValue(options, 'ImportNewOptions', value);\r\n}\r\n\r\nfunction getExistingItemValue(options, value) {\r\n return getImportEntityOptionValue(options.UpdateEntityPreferences, 'ImportUpdateOptions', value);\r\n}\r\n\r\nexport function parseEditScheduledImportOptions({\r\n options,\r\n isPageFeedEnabled,\r\n isDeviceTargetOptimizationEnabled = false,\r\n isAdScheduleUseSearcherTimezoneEnabled = false,\r\n isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled = false,\r\n isGoogleImageExtensionImportOptionEnabled = false,\r\n isAudienceTargetForFBImportOptionEnabled = false,\r\n isGoogleLogoExtensionImportOptionEnabled = false,\r\n isGoogleUpdateAdUrlsImportOptionEnabled = false,\r\n isGoogleUpdateSitelinkUrlsImportOptionEnabled = false,\r\n isGoogleAccountNegativeKeywordsImportOptionEnabled = false,\r\n isGoogleAdCustomizerAttributesImportOptionEnabled = false,\r\n isGoogleConversionGoalsImportOptionEnabled = false,\r\n isBrandSuitabilityImportOptionEnabled = false,\r\n}) {\r\n let mappedOptions = {\r\n ImportAccountUrlOptions: _.size(options.UserSetProperties2) > 0,\r\n // ImportNewItems\r\n ImportNewEntities: options.ImportNewEntities,\r\n ImportNewOption_ImportNewCampaignsAndMarkAsPaused: getNewItemValue(options, 'ImportNewCampaignsAndMarkAsPaused'),\r\n ImportNewOption_ImportNewCampaignsAndChildEntities: getNewItemValue(options, 'ImportNewCampaignsAndChildEntities'),\r\n ImportNewOption_ImportNewAdGroupsAndChildEntitiesForExistingCampaigns: getNewItemValue(options, 'ImportNewAdGroupsAndChildEntitiesForExistingCampaigns'),\r\n ImportNewOption_ImportNewAdsForExistingAdGroups: getNewItemValue(options, 'ImportNewAdsForExistingAdGroups'),\r\n ImportNewOption_ImportNewKeywordsForExistingAdGroups: getNewItemValue(options, 'ImportNewKeywordsForExistingAdGroups'),\r\n ImportNewOption_ImportNewNegativeKeywordsForExistingParents: getNewItemValue(options, 'ImportNewNegativeKeywordsForExistingParents'),\r\n ImportNewOption_ImportNewNegativeKeywordList: getNewItemValue(options, 'ImportNewNegativeKeywordList'),\r\n ImportNewOption_ImportNewLocationTargets: getNewItemValue(options, 'ImportNewLocationTargets'),\r\n ImportNewOption_ImportNewAppAdExtensions: getNewItemValue(options, 'ImportNewAppAdExtensions'),\r\n // ExistingItems\r\n UpdateEntityPreferences: options.UpdateEntityPreferences.ImportUpdatedEntities,\r\n ImportUpdateEntityPreference_UpdateCampaignBudget: getExistingItemValue(options, 'UpdateCampaignBudget'),\r\n ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids: getExistingItemValue(options, 'UpdateAdGroupAndKeywordBids'),\r\n ImportUpdateEntityPreference_UpdateExistingNegativeKeywordList: getExistingItemValue(options, 'UpdateExistingNegativeKeywordList'),\r\n ImportUpdateEntityPreference_UpdateNegativeSites: getExistingItemValue(options, 'UpdateNegativeSites'),\r\n ImportUpdateEntityPreference_UpdateKeywordDestinationUrl: getExistingItemValue(options, 'UpdateKeywordDestinationUrl'),\r\n ImportUpdateEntityPreference_UpdateTrackingTemplateAndCustomParams: getExistingItemValue(options, 'UpdateTrackingTemplateAndCustomParams'),\r\n ImportUpdateEntityPreference_UpdateLocationTargets: getExistingItemValue(options, 'UpdateLocationTargets'),\r\n ImportUpdateEntityPreference_UpdateAdExtensions: getExistingItemValue(options, 'UpdateAdExtensions'),\r\n ImportUpdateEntityPreference_UpdateStatusForExistingCampaigns: getExistingItemValue(options, 'UpdateStatusForExistingCampaigns'),\r\n ImportUpdateEntityPreference_UpdateStatusForExistingAdGroups: getExistingItemValue(options, 'UpdateStatusForExistingAdGroups'),\r\n ImportUpdateEntityPreference_UpdateStatusForExistingAds: getExistingItemValue(options, 'UpdateStatusForExistingAds'),\r\n ImportUpdateEntityPreference_UpdateStatusForExistingKeywords: getExistingItemValue(options, 'UpdateStatusForExistingKeywords'),\r\n ImportUpdateEntityPreference_UpdateLanguageForExistingAdGroups: getExistingItemValue(options, 'UpdateLanguageForExistingAdGroups'),\r\n // DeletedItems\r\n ImportDeletedEntities: options.ImportDeletedEntities,\r\n // BidsAndBudgets\r\n DefaultBidsBelowMinToAdCenterMinBid: options.DefaultBidsBelowMinToAdCenterMinBid,\r\n DefaultCampaignBudgetBelowMinToAdCenterMinBudget:\r\n options.DefaultCampaignBudgetBelowMinToAdCenterMinBudget,\r\n // OtherItems\r\n ImportAppendDestUrlPreference_UseAppendString: options.AppendDestUrlPreference.UseAppendString,\r\n ImportAppendDestUrlPreference_AppendStringForDestinationUrl:\r\n options.AppendDestUrlPreference.AppendStringForDestinationUrl,\r\n ImportSearchAndReplaceDestUrlPreference_UseSearchAndReplaceString:\r\n options.SearcAndReplaceDestUrlPreference.UseSearchAndReplaceString,\r\n ImportSearchAndReplaceDestUrlPreference_SearchStringForDestinationUrl:\r\n options.SearcAndReplaceDestUrlPreference.SearchStringForDestinationUrl,\r\n ImportSearchAndReplaceDestUrlPreference_ReplaceStringForDestinationUrl:\r\n options.SearcAndReplaceDestUrlPreference.ReplaceStringForDestinationUrl,\r\n AppendPreferencesForTrackingTemplate_UseAppendString:\r\n options.AppendTrackingTemplatePreference.UseAppendString,\r\n AppendPreferencesForTrackingTemplate_AppendStringForTrackingTemplate:\r\n options.AppendTrackingTemplatePreference.AppendStringForTrackingTemplate,\r\n SearchAndReplacePreferencesForTrackingTemplate_UseSearchAndReplaceString:\r\n options.SearchAndReplaceTrackingTemplatePreference.UseSearchAndReplaceString,\r\n SearchAndReplacePreferencesForTrackingTemplate_SearchStringForTrackingTemplate:\r\n options.SearchAndReplaceTrackingTemplatePreference.SearchStringForTrackingTemplate,\r\n SearchAndReplacePreferencesForTrackingTemplate_ReplaceStringForTrackingTemplate:\r\n options.SearchAndReplaceTrackingTemplatePreference.ReplaceStringForTrackingTemplate,\r\n // Import Options V2 options:\r\n // behavior for option is opposite of the enum name (if checked, don't pass back this value)\r\n ImportUpdateEntityPreference_UpdateNameForExistingCampaigns: !getExistingItemValue(options, 'UpdateNameForExistingCampaigns'),\r\n ImportNewOption_ImportNewActiveEntitiesOnly: !getNewItemValue(options, 'ImportNewActiveEntitiesOnly'),\r\n StoreIdForImportedProductAdExtensionsFlag: !!options.StoreIdForImportedProductAdExtensions,\r\n StoreIdForImportedProductAdExtensions: options.StoreIdForImportedProductAdExtensions,\r\n ImportNewOption_ImportNewDayTimeTargets: getNewItemValue(options, 'ImportNewDayTimeTargets'),\r\n ImportNewOption_ImportNewDeviceTargets: getNewItemValue(options, 'ImportNewDeviceTargets'),\r\n ImportNewOption_ImportNewDemographicTargets: getNewItemValue(options, 'ImportNewDemographicTargets'),\r\n ImportNewOption_ImportNewCallAdExtensions: getNewItemValue(options, 'ImportNewCallAdExtensions'),\r\n ImportNewOption_ImportNewCalloutAdExtensions: getNewItemValue(options, 'ImportNewCalloutAdExtensions'),\r\n ImportNewOption_ImportNewLocationAdExtensions: getNewItemValue(options, 'ImportNewLocationAdExtensions'),\r\n ImportNewOption_ImportNewPriceAdExtensions: getNewItemValue(options, 'ImportNewPriceAdExtensions'),\r\n ImportNewOption_ImportNewPromotionAdExtensions: getNewItemValue(options, 'ImportNewPromotionAdExtensions'),\r\n ImportNewOption_ImportNewReviewAdExtensions: getNewItemValue(options, 'ImportNewReviewAdExtensions'),\r\n ImportNewOption_ImportNewSitelinkAdExtensions: getNewItemValue(options, 'ImportNewSitelinkAdExtensions'),\r\n ImportNewOption_ImportNewStructuredSnippetAdExtensions: getNewItemValue(options, 'ImportNewStructuredSnippetAdExtensions'),\r\n ImportUpdateEntityPreference_UpdateDayTimeTargets: getExistingItemValue(options, 'UpdateDayTimeTargets'),\r\n ImportUpdateEntityPreference_UpdateDeviceTargets: getExistingItemValue(options, 'UpdateDeviceTargets'),\r\n ImportUpdateEntityPreference_UpdateDemographicTargets: getExistingItemValue(options, 'UpdateDemographicTargets'),\r\n ImportUpdateEntityPreference_UpdateAppAdExtensions: getExistingItemValue(options, 'UpdateAppAdExtensions'),\r\n ImportUpdateEntityPreference_UpdateCallAdExtensions: getExistingItemValue(options, 'UpdateCallAdExtensions'),\r\n ImportUpdateEntityPreference_UpdateCalloutAdExtensions: getExistingItemValue(options, 'UpdateCalloutAdExtensions'),\r\n ImportUpdateEntityPreference_UpdateLocationAdExtensions: getExistingItemValue(options, 'UpdateLocationAdExtensions'),\r\n ImportUpdateEntityPreference_UpdatePriceAdExtensions: getExistingItemValue(options, 'UpdatePriceAdExtensions'),\r\n ImportUpdateEntityPreference_UpdatePromotionAdExtensions: getExistingItemValue(options, 'UpdatePromotionAdExtensions'),\r\n ImportUpdateEntityPreference_UpdateReviewAdExtensions: getExistingItemValue(options, 'UpdateReviewAdExtensions'),\r\n ImportUpdateEntityPreference_UpdateSitelinkAdExtensions: getExistingItemValue(options, 'UpdateSitelinkAdExtensions'),\r\n ImportUpdateEntityPreference_UpdateStructuredSnippetAdExtensions: getExistingItemValue(options, 'UpdateStructuredSnippetAdExtensions'),\r\n ImportPrefixAndSuffixForStringProperty_EnablePrefixAndSuffix:\r\n !!options.PrefixAndSuffixForCampaignNames &&\r\n options.PrefixAndSuffixForCampaignNames.EnablePrefixAndSuffix,\r\n ImportPrefixAndSuffixForStringProperty_SuffixString:\r\n options.PrefixAndSuffixForCampaignNames ?\r\n options.PrefixAndSuffixForCampaignNames.SuffixString : '',\r\n ImportSearchAndReplaceForStringProperty_EnableSearchAndReplace:\r\n !!options.SearchAndReplaceForCampaignNames &&\r\n options.SearchAndReplaceForCampaignNames.EnableSearchAndReplace,\r\n ImportSearchAndReplaceForStringProperty_SearchString:\r\n options.SearchAndReplaceForCampaignNames ?\r\n options.SearchAndReplaceForCampaignNames.SearchString : '',\r\n ImportSearchAndReplaceForStringProperty_ReplaceString:\r\n options.SearchAndReplaceForCampaignNames ?\r\n options.SearchAndReplaceForCampaignNames.ReplaceString : '',\r\n\r\n PauseAdGroupIfNoLocationSupported: options.PauseAdGroupIfNoLocationSupported,\r\n EnableAutoCurrencyConversion: options.EnableAutoCurrencyConversion,\r\n };\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewKeywordUrls: getNewItemValue(options, 'ImportNewKeywordUrls'),\r\n ImportNewOption_ImportNewTrackingTemplateAndCustomParams: getNewItemValue(options, 'ImportNewTrackingTemplateAndCustomParams'),\r\n ImportNewOption_ImportNewNegativeSites: getNewItemValue(options, 'ImportNewNegativeSites'),\r\n ImportUpdateEntityPreference_UpdateAdGroupNetworkSetting: getExistingItemValue(options, 'UpdateAdGroupNetworkSetting'),\r\n AdjustmentForBids_EnableAdjustment:\r\n (options.AdjustmentForBids && !!options.AdjustmentForBids.EnableAdjustment) || false,\r\n AdjustmentForBids_AdjustmentValue:\r\n (options.AdjustmentForBids &&\r\n options.AdjustmentForBids.AdjustmentValue) || 0,\r\n AdjustmentForCampaignBudgets_EnableAdjustment:\r\n (options.AdjustmentForCampaignBudgets\r\n && !!options.AdjustmentForCampaignBudgets.EnableAdjustment) || false,\r\n AdjustmentForCampaignBudgets_AdjustmentValue:\r\n (options.AdjustmentForCampaignBudgets\r\n && options.AdjustmentForCampaignBudgets.AdjustmentValue) || 0,\r\n PauseParentIfNoLocationSupported: options.PauseParentIfNoLocationSupported,\r\n EnableParentLocationMapping: options.EnableParentLocationMapping === false,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n RaiseLowBidsToMinServingBidsForBsc: options.RaiseLowBidsToMinServingBidsForBsc,\r\n });\r\n\r\n if (isDeviceTargetOptimizationEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n AutoDeviceBidOptimization: options.AutoDeviceBidOptimization,\r\n });\r\n }\r\n\r\n if (isAdScheduleUseSearcherTimezoneEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n AdScheduleUseSeacherTimezone: options.AdScheduleUseSeacherTimezone,\r\n });\r\n }\r\n\r\n if (isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n PauseAIMAdGroupIfAllAudienceCriterionNotImported:\r\n options.PauseAIMAdGroupIfAllAudienceCriterionNotImported,\r\n });\r\n }\r\n\r\n if (isGoogleImageExtensionImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewImageAdExtensions: getNewItemValue(options, 'ImportNewImageAdExtensions'),\r\n ImportUpdateEntityPreference_UpdateImageAdExtensions: getExistingItemValue(options, 'UpdateImageAdExtensions'),\r\n });\r\n }\r\n\r\n if (isGoogleLogoExtensionImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewLogoAdExtensions: getNewItemValue(options, 'ImportNewLogoAdExtensions'),\r\n ImportUpdateEntityPreference_UpdateLogoAdExtensions: getExistingItemValue(options, 'UpdateLogoAdExtensions'),\r\n });\r\n }\r\n\r\n if (isGoogleConversionGoalsImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewConversionGoals: getNewItemValue(options, 'ImportNewConversionGoals'),\r\n ImportUpdateEntityPreference_UpdateConversionGoals: getExistingItemValue(options, 'UpdateConversionGoals'),\r\n });\r\n }\r\n\r\n if (isGoogleUpdateAdUrlsImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportUpdateEntityPreference_UpdateAdUrls: getExistingItemValue(options, 'UpdateAdUrls'),\r\n });\r\n }\r\n\r\n if (isGoogleUpdateSitelinkUrlsImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportUpdateEntityPreference_UpdateSitelinkUrls: getExistingItemValue(options, 'UpdateSitelinkUrls'),\r\n });\r\n }\r\n\r\n if (isGoogleAccountNegativeKeywordsImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewAccountNegativeKeywords: getNewItemValue(options, 'ImportNewAccountNegativeKeywords'),\r\n });\r\n }\r\n\r\n if (isGoogleAdCustomizerAttributesImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportUpdateEntityPreference_UpdateAdCustomizerAttributes: getExistingItemValue(options, 'UpdateAdCustomizerAttributes'),\r\n });\r\n }\r\n\r\n if (isBrandSuitabilityImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewBrandSuitability: getExistingItemValue(options, 'ImportNewBrandSuitability'),\r\n ImportUpdateEntityPreference_UpdateBrandSuitability: getExistingItemValue(options, 'UpdateBrandSuitability'),\r\n });\r\n }\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportSearchAndDsaMixedCampaignAsSearchCampaign:\r\n options.ImportSearchAndDsaMixedCampaignAsSearchCampaign,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewAudienceTargets: getNewItemValue(options, 'ImportNewAudienceTargets'),\r\n ImportUpdateEntityPreference_UpdateAudienceTargets: getExistingItemValue(options, 'UpdateAudienceTargets'),\r\n });\r\n\r\n if (isAudienceTargetForFBImportOptionEnabled) {\r\n // NoAudienceTargetForFBImportOptionTest\r\n mappedOptions = _.extend(mappedOptions, {\r\n NoAudienceTargetForFBImportOption: !getNewItemValue(options, 'ImportNewAudienceTargets') && !getExistingItemValue(options, 'UpdateAudienceTargets'),\r\n });\r\n }\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportUET: mappedOptions.ImportNewOption_ImportNewAudienceTargets\r\n && !!options.AssociatedUETTagId,\r\n AssociatedUETTagId: options.AssociatedUETTagId || '',\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n SearchAndReplaceForCustomParameters_EnableSearchAndReplace:\r\n options.SearchAndReplaceForCustomParameters.EnableSearchAndReplace,\r\n SearchAndReplaceForCustomParameters_SearchString:\r\n options.SearchAndReplaceForCustomParameters.SearchString,\r\n SearchAndReplaceForCustomParameters_ReplaceString:\r\n options.SearchAndReplaceForCustomParameters.ReplaceString,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n SearchAndReplaceForFinalURLSuffix_EnableSearchAndReplace:\r\n options.SearchAndReplaceForFinalURLSuffix.EnableSearchAndReplace,\r\n SearchAndReplaceForFinalURLSuffix_SearchString:\r\n options.SearchAndReplaceForFinalURLSuffix.SearchString,\r\n SearchAndReplaceForFinalURLSuffix_ReplaceString:\r\n options.SearchAndReplaceForFinalURLSuffix.ReplaceString,\r\n });\r\n\r\n if (isPageFeedEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewPageFeeds: getNewItemValue(options, 'ImportNewPageFeeds'),\r\n ImportUpdateEntityPreference_UpdatePageFeeds: getExistingItemValue(options, 'UpdatePageFeeds'),\r\n });\r\n }\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewAdCustomizerFeeds: getNewItemValue(options, 'ImportNewAdCustomizerFeeds'),\r\n ImportUpdateEntityPreference_UpdateAdCustomizerFeeds: getExistingItemValue(options, 'UpdateAdCustomizerFeeds'),\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportAllAdUnderAnAdGroup: getNewItemValue(options, 'ImportAllAdUnderAnAdGroup'),\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewLabelsAndAssociations:\r\n (options.ImportNewLabelsAndAssociations != null)\r\n ? options.ImportNewLabelsAndAssociations\r\n : options.ImportNewEntities,\r\n UpdateLabelsAndAssociations:\r\n (options.UpdateLabelsAndAssociations != null)\r\n ? options.UpdateLabelsAndAssociations\r\n : options.UpdateEntityPreferences.ImportUpdatedEntities,\r\n });\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewCustomFiltersForShoppingCampaigns:\r\n (options.ImportNewCustomFiltersForShoppingCampaigns != null)\r\n ? options.ImportNewCustomFiltersForShoppingCampaigns\r\n : options.ImportNewEntities,\r\n UpdateCustomFiltersForShoppingCampaigns:\r\n (options.UpdateCustomFiltersForShoppingCampaigns != null)\r\n ? options.UpdateCustomFiltersForShoppingCampaigns\r\n : options.UpdateEntityPreferences.ImportUpdatedEntities,\r\n });\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBidStrategies:\r\n !!options.UpdateBiddingStrategies,\r\n });\r\n\r\n return mappedOptions;\r\n}\r\n","// TODO: remove\r\nimport _ from 'underscore';\r\n\r\nconst V3_VERSION = '3.0';\r\n\r\nfunction prepareGoogleAccountProperies(model) {\r\n if (model.ImportAccountUrlOptions) {\r\n const value = model.TrackingTemplateValue ? decodeURIComponent(model.TrackingTemplateValue) : '';\r\n\r\n const googleAccountProperties = [{\r\n Key: 'TrackingTemplate',\r\n Value: value,\r\n }];\r\n googleAccountProperties.push({\r\n Key: 'FinalUrlSuffix',\r\n Value: model.FinalUrlSuffixValue || '',\r\n });\r\n return googleAccountProperties;\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction prepareSettingsForTypeFromModel(model, type) {\r\n const options = [];\r\n const regexp = new RegExp(`${type}_(.*)`);\r\n\r\n _.each(model, (value, key) => {\r\n if (value && regexp.test(key)) {\r\n options.push(key.match(regexp)[1]);\r\n }\r\n });\r\n\r\n return options;\r\n}\r\n\r\nfunction processOptions(options) {\r\n if (options.length === 0) {\r\n options.push('None');\r\n }\r\n\r\n return options.join();\r\n}\r\n\r\nfunction prepareNewItemsSetting(model) {\r\n let options = [];\r\n\r\n if (model.ImportNewEntities) {\r\n options = prepareSettingsForTypeFromModel(model, 'ImportNewOption');\r\n\r\n // special handling for this option; UI text is opposite of the enum\r\n // and this is desired behavior, so we pass back the opposite of what\r\n // is selected in the form\r\n if (model.ImportNewOption_ImportNewActiveEntitiesOnly) {\r\n options = _.without(options, 'ImportNewActiveEntitiesOnly');\r\n } else {\r\n options.push('ImportNewActiveEntitiesOnly');\r\n }\r\n }\r\n\r\n return processOptions(options);\r\n}\r\n\r\nfunction prepareExistingItemsSetting(model) {\r\n let options = [];\r\n\r\n if (model.UpdateEntityPreferences) {\r\n options = prepareSettingsForTypeFromModel(model, 'ImportUpdateEntityPreference');\r\n }\r\n\r\n\r\n // special handling for this option; UI text is opposite of the enum\r\n // and this is desired behavior, so we pass back the opposite of what\r\n // is selected in the form\r\n if (model.ImportUpdateEntityPreference_UpdateNameForExistingCampaigns) {\r\n options = _.without(options, 'UpdateNameForExistingCampaigns');\r\n } else {\r\n options.push('UpdateNameForExistingCampaigns');\r\n }\r\n\r\n return {\r\n '@odata.type': '#Model.ImportUpdateEntityPreference',\r\n ImportUpdatedEntities: model.UpdateEntityPreferences,\r\n ImportUpdateOptions: processOptions(options),\r\n };\r\n}\r\n\r\nfunction prepareImportAppendDestUrlPreferences(model) {\r\n return {\r\n '@odata.type': '#Model.ImportAppendDestUrlPreference',\r\n UseAppendString: model.ImportAppendDestUrlPreference_UseAppendString,\r\n AppendStringForDestinationUrl: model.ImportAppendDestUrlPreference_AppendStringForDestinationUrl || '',\r\n };\r\n}\r\n\r\nfunction prepareImportSearchAndReplaceDestUrlPreferences(model) {\r\n return {\r\n '@odata.type': '#Model.ImportSearchAndReplaceDestUrlPreference',\r\n UseSearchAndReplaceString:\r\n model.ImportSearchAndReplaceDestUrlPreference_UseSearchAndReplaceString,\r\n SearchStringForDestinationUrl: model.ImportSearchAndReplaceDestUrlPreference_SearchStringForDestinationUrl || '',\r\n ReplaceStringForDestinationUrl: model.ImportSearchAndReplaceDestUrlPreference_ReplaceStringForDestinationUrl || '',\r\n };\r\n}\r\n\r\nfunction prepareSearchAndReplaceTrackingPreferences(model) {\r\n return {\r\n '@odata.type': '#Model.SearchAndReplacePreferencesForTrackingTemplate',\r\n UseSearchAndReplaceString:\r\n model.SearchAndReplacePreferencesForTrackingTemplate_UseSearchAndReplaceString,\r\n SearchStringForTrackingTemplate: model.SearchAndReplacePreferencesForTrackingTemplate_SearchStringForTrackingTemplate || '',\r\n ReplaceStringForTrackingTemplate: model.SearchAndReplacePreferencesForTrackingTemplate_ReplaceStringForTrackingTemplate || '',\r\n };\r\n}\r\n\r\nfunction prepareSearchAndReplaceCustomParameters(model) {\r\n return {\r\n '@odata.type': '#Model.ImportSearchAndReplaceForStringProperty',\r\n EnableSearchAndReplace:\r\n model.SearchAndReplaceForCustomParameters_EnableSearchAndReplace,\r\n SearchString: model.SearchAndReplaceForCustomParameters_SearchString || '',\r\n ReplaceString: model.SearchAndReplaceForCustomParameters_ReplaceString || '',\r\n IgnoreCaseInPlainText: true, // always set to true since we don't expose this option to customer\r\n };\r\n}\r\n\r\nfunction prepareAppendCustomParameterPrefererences(model) {\r\n return {\r\n '@odata.type': '#Model.AppendPreferencesForCustomParameter',\r\n UseAppendString: model.AppendPreferencesForCustomParameter_UseAppendString,\r\n AppendStringForCustomParameter: model.AppendPreferencesForCustomParameter_AppendStringForCustomParameter || '',\r\n };\r\n}\r\n\r\nfunction prepareFindAndReplaceURLSuffixPreference(model) {\r\n return {\r\n '@odata.type': '#Model.ImportSearchAndReplaceForStringProperty',\r\n EnableSearchAndReplace:\r\n model.SearchAndReplaceForFinalURLSuffix_EnableSearchAndReplace,\r\n SearchString: model.SearchAndReplaceForFinalURLSuffix_SearchString || '',\r\n ReplaceString: model.SearchAndReplaceForFinalURLSuffix_ReplaceString || '',\r\n IgnoreCaseInPlainText: true, // always set to true since we don't expose this option to customer\r\n };\r\n}\r\nfunction prepareAppendFinalRULSuffixPrefererence(model) {\r\n return {\r\n '@odata.type': '#Model.AppendPreferencesForFinalURLSuffix',\r\n UseAppendString: model.AppendPreferencesForFinalURLSuffix_UseAppendString,\r\n AppendStringForFinalURLSuffix: model.AppendPreferencesForFinalURLSuffix_AppendStringForFinalURLSuffix || '',\r\n };\r\n}\r\n\r\n\r\nfunction prepareAppendTrackingPreferences(model) {\r\n return {\r\n '@odata.type': '#Model.AppendPreferencesForTrackingTemplate',\r\n UseAppendString: model.AppendPreferencesForTrackingTemplate_UseAppendString,\r\n AppendStringForTrackingTemplate: model.AppendPreferencesForTrackingTemplate_AppendStringForTrackingTemplate || '',\r\n };\r\n}\r\n\r\nfunction prepareCampaignNameSuffixPreferences(model) {\r\n return {\r\n '@odata.type': '#Model.ImportPrefixAndSuffixForStringProperty',\r\n EnablePrefixAndSuffix: model.ImportPrefixAndSuffixForStringProperty_EnablePrefixAndSuffix,\r\n SuffixString: model.ImportPrefixAndSuffixForStringProperty_SuffixString || '',\r\n };\r\n}\r\n\r\nfunction prepareSearchAndReplaceCampaignNamePreferences(model) {\r\n return {\r\n '@odata.type': '#Model.ImportSearchAndReplaceForStringProperty',\r\n EnableSearchAndReplace: model.ImportSearchAndReplaceForStringProperty_EnableSearchAndReplace,\r\n SearchString: model.ImportSearchAndReplaceForStringProperty_SearchString || '',\r\n ReplaceString: model.ImportSearchAndReplaceForStringProperty_ReplaceString || '',\r\n IgnoreCaseInPlainText: true, // always set to true since we don't expose this option to customer\r\n };\r\n}\r\n\r\nfunction prepareBMCSetting(model) {\r\n const flag = model.StoreIdForImportedProductAdExtensionsFlag;\r\n const id = parseInt(model.StoreIdForImportedProductAdExtensions, 10);\r\n\r\n if (flag && !_.isNaN(id)) {\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nfunction prepareNumericAdjustmentSetting(model, propertyName) {\r\n let adjustValue = model[`${propertyName}_AdjustmentValue`];\r\n\r\n if (_.isString(adjustValue)) {\r\n if (adjustValue.indexOf(',') >= 0) {\r\n adjustValue = adjustValue.replace(',', '.');\r\n }\r\n if (adjustValue.indexOf('.') >= 0 || adjustValue.indexOf(',') >= 0) {\r\n adjustValue = parseFloat(adjustValue);\r\n } else {\r\n adjustValue = parseInt(adjustValue, 10);\r\n }\r\n }\r\n\r\n if (model[`${propertyName}_AdjustmentDecrease`]) {\r\n adjustValue *= -1;\r\n }\r\n\r\n return {\r\n '@odata.type': '#Model.ImportAdjustmentForNumericProperty',\r\n EnableAdjustment: model[`${propertyName}_EnableAdjustment`],\r\n AdjustmentValue:\r\n model[`${propertyName}_EnableAdjustment`] ? adjustValue : null,\r\n };\r\n}\r\n\r\nexport function parseModelToImportUserPreferences(model) {\r\n const preferences = {\r\n '@odata.type': '#Model.ImportUserPreferences',\r\n ImportNewEntities: model.ImportNewEntities,\r\n ImportNewOptions: prepareNewItemsSetting(model),\r\n UpdateEntityPreferences: prepareExistingItemsSetting(model),\r\n ImportDeletedEntities: model.ImportDeletedEntities,\r\n DefaultBidsBelowMinToAdCenterMinBid: model.DefaultBidsBelowMinToAdCenterMinBid,\r\n DefaultCampaignBudgetBelowMinToAdCenterMinBudget:\r\n model.DefaultCampaignBudgetBelowMinToAdCenterMinBudget,\r\n AppendDestUrlPreference: prepareImportAppendDestUrlPreferences(model),\r\n SearcAndReplaceDestUrlPreference: prepareImportSearchAndReplaceDestUrlPreferences(model),\r\n AppendTrackingTemplatePreference: prepareAppendTrackingPreferences(model),\r\n SearchAndReplaceTrackingTemplatePreference: prepareSearchAndReplaceTrackingPreferences(model),\r\n AppendCustomParameterPreferences: prepareAppendCustomParameterPrefererences(model),\r\n AppendFinalURLSuffixPreferences: prepareAppendFinalRULSuffixPrefererence(model),\r\n ImportAdExtensionsAsLibrary: 'true',\r\n StoreIdForImportedProductAdExtensions: prepareBMCSetting(model),\r\n UserSetProperties2: prepareGoogleAccountProperies(model),\r\n };\r\n\r\n preferences.PrefixAndSuffixForCampaignNames = prepareCampaignNameSuffixPreferences(model);\r\n preferences.SearchAndReplaceForCampaignNames =\r\n prepareSearchAndReplaceCampaignNamePreferences(model);\r\n\r\n preferences.RaiseLowBidsToMinServingBidsForBsc = model.RaiseLowBidsToMinServingBidsForBsc;\r\n\r\n preferences.ImportSearchAndDsaMixedCampaignAsSearchCampaign =\r\n model.ImportSearchAndDsaMixedCampaignAsSearchCampaign;\r\n\r\n preferences.AdjustmentForBids = prepareNumericAdjustmentSetting(model, 'AdjustmentForBids');\r\n preferences.AdjustmentForCampaignBudgets =\r\n prepareNumericAdjustmentSetting(model, 'AdjustmentForCampaignBudgets');\r\n preferences.PauseParentIfNoLocationSupported = model.PauseParentIfNoLocationSupported;\r\n preferences.EnableParentLocationMapping = !model.EnableParentLocationMapping;\r\n preferences.Version = V3_VERSION;\r\n\r\n preferences.ImportNewLabelsAndAssociations = (model.ImportNewLabelsAndAssociations != null)\r\n ? model.ImportNewLabelsAndAssociations\r\n : model.ImportNewEntities;\r\n preferences.UpdateLabelsAndAssociations = (model.UpdateLabelsAndAssociations != null)\r\n ? model.UpdateLabelsAndAssociations\r\n : model.ImportUpdatedEntities;\r\n preferences.ImportNewCustomFiltersForShoppingCampaigns =\r\n (model.ImportNewCustomFiltersForShoppingCampaigns != null)\r\n ? model.ImportNewCustomFiltersForShoppingCampaigns\r\n : model.ImportNewEntities;\r\n preferences.UpdateCustomFiltersForShoppingCampaigns =\r\n (model.UpdateCustomFiltersForShoppingCampaigns != null)\r\n ? model.UpdateCustomFiltersForShoppingCampaigns\r\n : model.ImportUpdatedEntities;\r\n\r\n preferences.AssociatedUETTagId = (model.ImportNewOption_ImportNewAudienceTargets &&\r\n model.AssociatedUETTagId &&\r\n model.AssociatedUETTagId !== '-1' && !!model.ImportUET\r\n && !!model.ImportNewEntities) ? Number(model.AssociatedUETTagId) : null;\r\n\r\n preferences.SearchAndReplaceForCustomParameters\r\n = prepareSearchAndReplaceCustomParameters(model);\r\n\r\n preferences.SearchAndReplaceForFinalURLSuffix\r\n = prepareFindAndReplaceURLSuffixPreference(model);\r\n\r\n if (!_.isUndefined(model.PauseAdGroupIfNoLocationSupported)\r\n && !_.isNull(model.PauseAdGroupIfNoLocationSupported)) {\r\n preferences.PauseAdGroupIfNoLocationSupported = model.PauseAdGroupIfNoLocationSupported;\r\n }\r\n\r\n if (!_.isUndefined(model.NoAudienceTargetForFBImportOption)\r\n && !_.isNull(model.NoAudienceTargetForFBImportOption)) {\r\n preferences.ImportNewAudienceTargets = !model.NoAudienceTargetForFBImportOption;\r\n preferences.UpdateAudienceTargets = !model.NoAudienceTargetForFBImportOption;\r\n }\r\n\r\n if (!_.isUndefined(model.EnableAutoCurrencyConversion)\r\n && !_.isNull(model.EnableAutoCurrencyConversion)) {\r\n preferences.EnableAutoCurrencyConversion = model.EnableAutoCurrencyConversion;\r\n }\r\n\r\n return preferences;\r\n}\r\n","/* eslint-disable max-len */\r\nimport _ from 'underscore';\r\n\r\nconst V2_VERSION = '2.0';\r\nconst V3_VERSION = '3.0';\r\n\r\nfunction prepareCampaignNameSuffixPreference(model) {\r\n return {\r\n '@odata.type': '#Model.ImportPrefixAndSuffixForStringProperty',\r\n EnablePrefixAndSuffix: model.ImportPrefixAndSuffixForStringProperty_EnablePrefixAndSuffix,\r\n SuffixString: model.ImportPrefixAndSuffixForStringProperty_SuffixString || '',\r\n };\r\n}\r\n\r\nfunction prepareSearchAndReplaceCampaignNamePreference(model) {\r\n return {\r\n '@odata.type': '#Model.ImportSearchAndReplaceForStringProperty',\r\n EnableSearchAndReplace: model.ImportSearchAndReplaceForStringProperty_EnableSearchAndReplace,\r\n SearchString: model.ImportSearchAndReplaceForStringProperty_SearchString || '',\r\n ReplaceString: model.ImportSearchAndReplaceForStringProperty_ReplaceString || '',\r\n IgnoreCaseInPlainText: true, // always set to true since we don't expose this option to customer\r\n };\r\n}\r\n\r\nfunction prepareUrlSuffixPreference(model) {\r\n return {\r\n '@odata.type': '#Model.ImportPrefixAndSuffixForStringProperty',\r\n EnablePrefixAndSuffix: model.ImportAppendDestUrlPreference_UseAppendString,\r\n SuffixString: model.ImportAppendDestUrlPreference_AppendStringForDestinationUrl || '',\r\n };\r\n}\r\n\r\nfunction prepareSearchAndReplaceUrlPreference(model) {\r\n return {\r\n '@odata.type': '#Model.ImportSearchAndReplaceForStringProperty',\r\n EnableSearchAndReplace: model.ImportSearchAndReplaceDestUrlPreference_UseSearchAndReplaceString,\r\n SearchString: model.ImportSearchAndReplaceDestUrlPreference_SearchStringForDestinationUrl || '',\r\n ReplaceString: model.ImportSearchAndReplaceDestUrlPreference_ReplaceStringForDestinationUrl || '',\r\n IgnoreCaseInPlainText: true, // always set to true since we don't expose this option to customer\r\n };\r\n}\r\n\r\nfunction prepareTrackingTemplateSuffixPreference(model) {\r\n return {\r\n '@odata.type': '#Model.ImportPrefixAndSuffixForStringProperty',\r\n EnablePrefixAndSuffix: model.AppendPreferencesForTrackingTemplate_UseAppendString,\r\n SuffixString: model.AppendPreferencesForTrackingTemplate_AppendStringForTrackingTemplate || '',\r\n };\r\n}\r\n\r\nfunction prepareSearchAndReplaceTrackingTemplatePreference(model) {\r\n return {\r\n '@odata.type': '#Model.ImportSearchAndReplaceForStringProperty',\r\n EnableSearchAndReplace:\r\n model.SearchAndReplacePreferencesForTrackingTemplate_UseSearchAndReplaceString,\r\n SearchString: model.SearchAndReplacePreferencesForTrackingTemplate_SearchStringForTrackingTemplate || '',\r\n ReplaceString: model.SearchAndReplacePreferencesForTrackingTemplate_ReplaceStringForTrackingTemplate || '',\r\n IgnoreCaseInPlainText: true, // always set to true since we don't expose this option to customer\r\n };\r\n}\r\n\r\nfunction prepareSearchAndReplaceCustomParametersPreference(model) {\r\n return {\r\n '@odata.type': '#Model.ImportSearchAndReplaceForStringProperty',\r\n EnableSearchAndReplace:\r\n model.SearchAndReplaceForCustomParameters_EnableSearchAndReplace,\r\n SearchString: model.SearchAndReplaceForCustomParameters_SearchString || '',\r\n ReplaceString: model.SearchAndReplaceForCustomParameters_ReplaceString || '',\r\n IgnoreCaseInPlainText: true, // always set to true since we don't expose this option to customer\r\n };\r\n}\r\n\r\nfunction prepareFindAndReplaceURLSuffixPreference(model) {\r\n return {\r\n '@odata.type': '#Model.ImportSearchAndReplaceForStringProperty',\r\n EnableSearchAndReplace:\r\n model.SearchAndReplaceForFinalURLSuffix_EnableSearchAndReplace,\r\n SearchString: model.SearchAndReplaceForFinalURLSuffix_SearchString || '',\r\n ReplaceString: model.SearchAndReplaceForFinalURLSuffix_ReplaceString || '',\r\n IgnoreCaseInPlainText: true, // always set to true since we don't expose this option to customer\r\n };\r\n}\r\n\r\nfunction prepareBMCSetting(model) {\r\n const flag = model.StoreIdForImportedProductAdExtensionsFlag;\r\n const id = parseInt(model.StoreIdForImportedProductAdExtensions, 10);\r\n\r\n if (flag && !_.isNaN(id)) {\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nfunction prepareGoogleAccountFinalUrlSuffixValue(model, isMultiAccountImport) {\r\n if (model.ImportAccountUrlOptions) {\r\n return isMultiAccountImport ? 'finalUrlSuffix' : (model.FinalUrlSuffixValue || '');\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction prepareGoogleAccountTrackingTemplateValue(model, isMultiAccountImport) {\r\n if (model.ImportAccountUrlOptions) {\r\n if (isMultiAccountImport) { return 'trackingTemplate'; }\r\n return model.TrackingTemplateValue ? decodeURIComponent(model.TrackingTemplateValue) : '';\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction prepareNumericAdjustmentSetting(model, propertyName) {\r\n let adjustValue = model[`${propertyName}_AdjustmentValue`];\r\n\r\n if (_.isString(adjustValue)) {\r\n if (adjustValue.indexOf(',') >= 0) {\r\n adjustValue = adjustValue.replace(',', '.');\r\n }\r\n if (adjustValue.indexOf('.') >= 0 || adjustValue.indexOf(',') >= 0) {\r\n adjustValue = parseFloat(adjustValue);\r\n } else {\r\n adjustValue = parseInt(adjustValue, 10);\r\n }\r\n }\r\n\r\n if (model[`${propertyName}_AdjustmentDecrease`]) {\r\n adjustValue *= -1;\r\n }\r\n\r\n return {\r\n '@odata.type': '#Model.ImportAdjustmentForNumericProperty',\r\n EnableAdjustment: model[`${propertyName}_EnableAdjustment`],\r\n AdjustmentValue:\r\n model[`${propertyName}_EnableAdjustment`] ? adjustValue : null,\r\n };\r\n}\r\n\r\n// TODO: refactor later to pass params as objects\r\nexport function parseModelToImportUserPreference(\r\n model,\r\n isPageFeedEnabled = false,\r\n isMultiAccountImport = false,\r\n isDeviceTargetOptimizationEnabled = false,\r\n isAdScheduleUseSearcherTimezoneEnabled = false,\r\n isGoogleImageExtensionImportOptionEnabled = false,\r\n isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled = false,\r\n isAudienceTargetForFBImportOptionEnabled = false,\r\n isGoogleLogoExtensionImportOptionEnabled = false,\r\n isGoogleUpdateAdUrlsImportOptionEnabled = false,\r\n isGoogleUpdateSitelinkUrlsImportOptionEnabled = false,\r\n isGoogleAccountNegativeKeywordsImportOptionEnabled = false,\r\n isGoogleAdCustomizerAttributesImportOptionEnabled = false,\r\n isGoogleConversionGoalsImportOptionEnabled = false,\r\n isBrandSuitabilityImportOptionEnabled = false\r\n) {\r\n const preference = {\r\n '@odata.type': '#Model.ImportUserPreference',\r\n // import new options\r\n ImportNewEntities: model.ImportNewEntities,\r\n PauseNewCampaigns:\r\n model.ImportNewOption_ImportNewCampaignsAndMarkAsPaused,\r\n ImportNewCampaignsAndChildEntities: model.ImportNewOption_ImportNewCampaignsAndChildEntities,\r\n ImportNewAdGroupsAndChildEntitiesForExistingCampaigns:\r\n model.ImportNewOption_ImportNewAdGroupsAndChildEntitiesForExistingCampaigns,\r\n ImportNewAdsForExistingAdGroups: model.ImportNewOption_ImportNewAdsForExistingAdGroups,\r\n ImportNewKeywordsForExistingAdGroups:\r\n model.ImportNewOption_ImportNewKeywordsForExistingAdGroups,\r\n ImportNewNegativeKeywordsForExistingParents:\r\n model.ImportNewOption_ImportNewNegativeKeywordsForExistingParents,\r\n ImportNewNegativeKeywordList: model.ImportNewOption_ImportNewNegativeKeywordList,\r\n ImportNewLocationTargets: model.ImportNewOption_ImportNewLocationTargets,\r\n ImportNewAppAdExtensions: model.ImportNewOption_ImportNewAppAdExtensions,\r\n\r\n // import update options\r\n ImportUpdatedEntities: model.UpdateEntityPreferences,\r\n UpdateCampaignBudgets: model.ImportUpdateEntityPreference_UpdateCampaignBudget,\r\n UpdateBids: model.ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids,\r\n UpdateNegativeKeywordLists:\r\n model.ImportUpdateEntityPreference_UpdateExistingNegativeKeywordList,\r\n UpdateNegativeSites: model.ImportUpdateEntityPreference_UpdateNegativeSites,\r\n UpdateKeywordUrls: model.ImportUpdateEntityPreference_UpdateKeywordDestinationUrl,\r\n UpdateTrackingTemplatesAndCustomParameters:\r\n model.ImportUpdateEntityPreference_UpdateTrackingTemplateAndCustomParams,\r\n UpdateLocationTargets: model.ImportUpdateEntityPreference_UpdateLocationTargets,\r\n UpdateStatusForCampaigns: model.ImportUpdateEntityPreference_UpdateStatusForExistingCampaigns,\r\n UpdateStatusForAdGroups: model.ImportUpdateEntityPreference_UpdateStatusForExistingAdGroups,\r\n UpdateStatusForAds: model.ImportUpdateEntityPreference_UpdateStatusForExistingAds,\r\n UpdateStatusForKeywords: model.ImportUpdateEntityPreference_UpdateStatusForExistingKeywords,\r\n UpdateLanguageForAdGroup: model.ImportUpdateEntityPreference_UpdateLanguageForExistingAdGroups,\r\n\r\n ImportDeletedEntities: model.ImportDeletedEntities,\r\n SetLowerBidsToAdCenterMinBids: model.DefaultBidsBelowMinToAdCenterMinBid,\r\n SetLowerCampaignBudgetsToAdCenterMinCampaignBudgets:\r\n model.DefaultCampaignBudgetBelowMinToAdCenterMinBudget,\r\n\r\n // adjustment for string properties including url, tracking template and campaign name\r\n PrefixAndSuffixForUrls: prepareUrlSuffixPreference(model),\r\n SearchAndReplaceForUrls: prepareSearchAndReplaceUrlPreference(model),\r\n PrefixAndSuffixForTrackingTemplates: prepareTrackingTemplateSuffixPreference(model),\r\n SearchAndReplaceForTrackingTemplates: prepareSearchAndReplaceTrackingTemplatePreference(model),\r\n PrefixAndSuffixForCampaignNames: prepareCampaignNameSuffixPreference(model),\r\n SearchAndReplaceForCampaignNames: prepareSearchAndReplaceCampaignNamePreference(model),\r\n // BMC settings\r\n AssociatedBingMerchantCenterStoreId: prepareBMCSetting(model),\r\n\r\n // special handling for below options: UI text is opposite of the enum\r\n // and this is desired behavior, so we pass back the opposite of what\r\n // is selected in the form\r\n UpdateCampaignNames: !model.ImportUpdateEntityPreference_UpdateNameForExistingCampaigns,\r\n ImportActiveOnlyNewCampaigns: !model.ImportNewOption_ImportNewActiveEntitiesOnly,\r\n\r\n // import options v2 options:\r\n ImportNewDayTimeTargets: model.ImportNewOption_ImportNewDayTimeTargets,\r\n ImportNewDeviceTargets: model.ImportNewOption_ImportNewDeviceTargets,\r\n ImportNewDemographicTargets: model.ImportNewOption_ImportNewDemographicTargets,\r\n ImportNewCallAdExtensions: model.ImportNewOption_ImportNewCallAdExtensions,\r\n ImportNewCalloutAdExtensions: model.ImportNewOption_ImportNewCalloutAdExtensions,\r\n ImportNewLocationAdExtensions: model.ImportNewOption_ImportNewLocationAdExtensions,\r\n ImportNewPriceAdExtensions: model.ImportNewOption_ImportNewPriceAdExtensions,\r\n ImportNewPromotionAdExtensions: model.ImportNewOption_ImportNewPromotionAdExtensions,\r\n ImportNewReviewAdExtensions: model.ImportNewOption_ImportNewReviewAdExtensions,\r\n ImportNewSitelinkAdExtensions: model.ImportNewOption_ImportNewSitelinkAdExtensions,\r\n ImportNewStructuredSnippetAdExtensions:\r\n model.ImportNewOption_ImportNewStructuredSnippetAdExtensions,\r\n UpdateDayTimeTargets: model.ImportUpdateEntityPreference_UpdateDayTimeTargets,\r\n UpdateDeviceTargets: model.ImportUpdateEntityPreference_UpdateDeviceTargets,\r\n UpdateDemographicTargets: model.ImportUpdateEntityPreference_UpdateDemographicTargets,\r\n UpdateAppAdExtensions: model.ImportUpdateEntityPreference_UpdateAppAdExtensions,\r\n UpdateCallAdExtensions: model.ImportUpdateEntityPreference_UpdateCallAdExtensions,\r\n UpdateCalloutAdExtensions: model.ImportUpdateEntityPreference_UpdateCalloutAdExtensions,\r\n UpdateLocationAdExtensions: model.ImportUpdateEntityPreference_UpdateLocationAdExtensions,\r\n UpdatePriceAdExtensions: model.ImportUpdateEntityPreference_UpdatePriceAdExtensions,\r\n UpdatePromotionAdExtensions: model.ImportUpdateEntityPreference_UpdatePromotionAdExtensions,\r\n UpdateReviewAdExtensions: model.ImportUpdateEntityPreference_UpdateReviewAdExtensions,\r\n UpdateSitelinkAdExtensions: model.ImportUpdateEntityPreference_UpdateSitelinkAdExtensions,\r\n UpdateStructuredSnippetAdExtensions:\r\n model.ImportUpdateEntityPreference_UpdateStructuredSnippetAdExtensions,\r\n };\r\n\r\n // google account properties\r\n preference.AdWordsAccountFinalUrlSuffix =\r\n prepareGoogleAccountFinalUrlSuffixValue(model, isMultiAccountImport);\r\n preference.AdWordsAccountTrackingTemplate = prepareGoogleAccountTrackingTemplateValue(model, isMultiAccountImport);\r\n\r\n preference.Version = V2_VERSION;\r\n\r\n preference.RaiseLowBidsToMinServingBidsForBsc = model.RaiseLowBidsToMinServingBidsForBsc;\r\n\r\n if (isDeviceTargetOptimizationEnabled) {\r\n preference.AutoDeviceBidOptimization = model.AutoDeviceBidOptimization;\r\n }\r\n if (isAdScheduleUseSearcherTimezoneEnabled) {\r\n preference.AdScheduleUseSearcherTimezone = model.AdScheduleUseSearcherTimezone;\r\n }\r\n if (isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled) {\r\n preference.PauseAIMAdGroupIfAllAudienceCriterionNotImported = model.PauseAIMAdGroupIfAllAudienceCriterionNotImported;\r\n }\r\n if (isGoogleImageExtensionImportOptionEnabled) {\r\n preference.ImportNewImageAdExtensions = !!model.ImportNewOption_ImportNewImageAdExtensions;\r\n preference.UpdateImageAdExtensions = !!model.ImportUpdateEntityPreference_UpdateImageAdExtensions;\r\n }\r\n\r\n if (isGoogleLogoExtensionImportOptionEnabled) {\r\n preference.ImportNewLogoAdExtensions = !!model.ImportNewOption_ImportNewLogoAdExtensions;\r\n preference.UpdateLogoAdExtensions = !!model.ImportUpdateEntityPreference_UpdateLogoAdExtensions;\r\n }\r\n\r\n if (isGoogleUpdateAdUrlsImportOptionEnabled) {\r\n preference.UpdateAdUrls = !!model.ImportUpdateEntityPreference_UpdateAdUrls;\r\n }\r\n\r\n if (isGoogleUpdateSitelinkUrlsImportOptionEnabled) {\r\n preference.UpdateSitelinkUrls = !!model.ImportUpdateEntityPreference_UpdateSitelinkUrls;\r\n }\r\n\r\n if (isGoogleAccountNegativeKeywordsImportOptionEnabled) {\r\n preference.ImportNewAccountNegativeKeywords = !!model.ImportNewOption_ImportNewAccountNegativeKeywords;\r\n }\r\n\r\n if (isGoogleAdCustomizerAttributesImportOptionEnabled) {\r\n preference.UpdateAdCustomizerAttributes = !!model.ImportUpdateEntityPreference_UpdateAdCustomizerAttributes;\r\n }\r\n\r\n if (isGoogleConversionGoalsImportOptionEnabled) {\r\n preference.ImportNewConversionGoals = !!model.ImportNewOption_ImportNewConversionGoals;\r\n preference.UpdateConversionGoals = !!model.ImportUpdateEntityPreference_UpdateConversionGoals;\r\n }\r\n\r\n if (isBrandSuitabilityImportOptionEnabled) {\r\n preference.ImportNewBrandSuitability = !!model.ImportNewOption_ImportNewBrandSuitability;\r\n preference.UpdateBrandSuitability = !!model.ImportUpdateEntityPreference_UpdateBrandSuitability;\r\n }\r\n\r\n preference.ImportSearchAndDsaMixedCampaignAsSearchCampaign =\r\n model.ImportSearchAndDsaMixedCampaignAsSearchCampaign;\r\n\r\n preference.ImportNewKeywordUrls = model.ImportNewOption_ImportNewKeywordUrls;\r\n preference.ImportNewTrackingTemplateAndCustomParams =\r\n model.ImportNewOption_ImportNewTrackingTemplateAndCustomParams;\r\n preference.ImportNewNegativeSites = model.ImportNewOption_ImportNewNegativeSites;\r\n preference.UpdateAdGroupNetworkSetting =\r\n model.ImportUpdateEntityPreference_UpdateAdGroupNetworkSetting;\r\n\r\n preference.AdjustmentForBids = prepareNumericAdjustmentSetting(model, 'AdjustmentForBids');\r\n preference.AdjustmentForCampaignBudgets =\r\n prepareNumericAdjustmentSetting(model, 'AdjustmentForCampaignBudgets');\r\n\r\n preference.PauseParentIfNoLocationSupported = model.PauseParentIfNoLocationSupported;\r\n preference.EnableParentLocationMapping = !model.EnableParentLocationMapping;\r\n preference.Version = V3_VERSION;\r\n\r\n preference.ImportNewAudienceTargets = !!model.ImportNewOption_ImportNewAudienceTargets;\r\n preference.UpdateAudienceTargets = !!model.ImportUpdateEntityPreference_UpdateAudienceTargets;\r\n\r\n preference.SearchAndReplaceForCustomParameters = prepareSearchAndReplaceCustomParametersPreference(model);\r\n\r\n preference.SearchAndReplaceForFinalURLSuffix = prepareFindAndReplaceURLSuffixPreference(model);\r\n\r\n preference.AssociatedUETTagId = (preference.ImportNewAudienceTargets && model.AssociatedUETTagId &&\r\n model.AssociatedUETTagId !== '-1' && !!model.ImportUET\r\n && !!model.ImportNewEntities) ? Number(model.AssociatedUETTagId) : null;\r\n\r\n if (isPageFeedEnabled) {\r\n preference.ImportNewPageFeeds = !!model.ImportNewOption_ImportNewPageFeeds;\r\n preference.UpdatePageFeeds = !!model.ImportUpdateEntityPreference_UpdatePageFeeds;\r\n }\r\n\r\n preference.ImportNewAdCustomizerFeeds = !!model.ImportNewOption_ImportNewAdCustomizerFeeds;\r\n preference.UpdateAdCustomizerFeeds =\r\n !!model.ImportUpdateEntityPreference_UpdateAdCustomizerFeeds;\r\n preference.ImportAllAdUnderAnAdGroup = !!model.ImportNewOption_ImportAllAdUnderAnAdGroup;\r\n preference.ImportNewLabelsAndAssociations = (model.ImportNewLabelsAndAssociations != null)\r\n ? model.ImportNewLabelsAndAssociations\r\n : model.ImportNewEntities;\r\n preference.UpdateLabelsAndAssociations = (model.UpdateLabelsAndAssociations != null)\r\n ? model.UpdateLabelsAndAssociations\r\n : model.ImportUpdatedEntities;\r\n preference.ImportNewCustomFiltersForShoppingCampaigns =\r\n (model.ImportNewCustomFiltersForShoppingCampaigns != null)\r\n ? model.ImportNewCustomFiltersForShoppingCampaigns\r\n : model.ImportNewEntities;\r\n preference.UpdateCustomFiltersForShoppingCampaigns =\r\n (model.UpdateCustomFiltersForShoppingCampaigns != null)\r\n ? model.UpdateCustomFiltersForShoppingCampaigns\r\n : model.ImportUpdatedEntities;\r\n preference.UpdateBiddingStrategies = model.ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBidStrategies;\r\n\r\n if (!_.isUndefined(model.PauseAdGroupIfNoLocationSupported)\r\n && !_.isNull(model.PauseAdGroupIfNoLocationSupported)) {\r\n preference.PauseAdGroupIfNoLocationSupported = model.PauseAdGroupIfNoLocationSupported;\r\n }\r\n\r\n if (isAudienceTargetForFBImportOptionEnabled) {\r\n if (!_.isUndefined(model.NoAudienceTargetForFBImportOption)\r\n && !_.isNull(model.NoAudienceTargetForFBImportOption)) {\r\n preference.ImportNewAudienceTargets = !model.NoAudienceTargetForFBImportOption;\r\n preference.UpdateAudienceTargets = !model.NoAudienceTargetForFBImportOption;\r\n }\r\n }\r\n\r\n if (!_.isUndefined(model.RenameCampaignNameWithSuffix)\r\n && !_.isNull(model.RenameCampaignNameWithSuffix)) {\r\n preference.RenameCampaignNameWithSuffix = model.RenameCampaignNameWithSuffix;\r\n }\r\n\r\n if (!_.isUndefined(model.EnableAutoCurrencyConversion)\r\n && !_.isNull(model.EnableAutoCurrencyConversion)) {\r\n preference.EnableAutoCurrencyConversion = model.EnableAutoCurrencyConversion;\r\n }\r\n\r\n return preference;\r\n}\r\n\r\n","import _ from 'underscore';\r\n\r\nexport function parseJsonFormatImportOptions({\r\n options,\r\n isPageFeedEnabled,\r\n storeList = [],\r\n isDeviceTargetOptimizationEnabled = false,\r\n isAdScheduleUseSearcherTimezoneEnabled = false,\r\n isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled = false,\r\n isGoogleImageExtensionImportOptionEnabled = false,\r\n isAudienceTargetForFBImportOptionEnabled = false,\r\n isGoogleLogoExtensionImportOptionEnabled = false,\r\n isGoogleUpdateAdUrlsImportOptionEnabled = false,\r\n isGoogleUpdateSitelinkUrlsImportOptionEnabled = false,\r\n isGoogleAccountNegativeKeywordsImportOptionEnabled = false,\r\n isGoogleAdCustomizerAttributesImportOptionEnabled = false,\r\n isGoogleConversionGoalsImportOptionEnabled = false,\r\n isBrandSuitabilityImportOptionEnabled = false,\r\n}) {\r\n let mappedOptions = {\r\n // ImportNewItems\r\n ImportNewEntities: options.ImportNewEntities,\r\n ImportNewOption_ImportNewCampaignsAndMarkAsPaused: options.PauseNewCampaigns,\r\n ImportNewOption_ImportNewCampaignsAndChildEntities: options.ImportNewCampaignsAndChildEntities,\r\n ImportNewOption_ImportNewAdGroupsAndChildEntitiesForExistingCampaigns:\r\n options.ImportNewAdGroupsAndChildEntitiesForExistingCampaigns,\r\n ImportNewOption_ImportNewAdsForExistingAdGroups: options.ImportNewAdsForExistingAdGroups,\r\n ImportNewOption_ImportNewKeywordsForExistingAdGroups:\r\n options.ImportNewKeywordsForExistingAdGroups,\r\n ImportNewOption_ImportNewNegativeKeywordsForExistingParents:\r\n options.ImportNewNegativeKeywordsForExistingParents,\r\n ImportNewOption_ImportNewNegativeKeywordList: options.ImportNewNegativeKeywordList,\r\n ImportNewOption_ImportNewLocationTargets: options.ImportNewLocationTargets,\r\n ImportNewOption_ImportNewAppAdExtensions: options.ImportNewAppAdExtensions,\r\n // ExistingItems\r\n UpdateEntityPreferences: options.ImportUpdatedEntities,\r\n ImportUpdateEntityPreference_UpdateCampaignBudget: options.UpdateCampaignBudgets,\r\n ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids: options.UpdateBids,\r\n ImportUpdateEntityPreference_UpdateExistingNegativeKeywordList:\r\n options.UpdateNegativeKeywordLists,\r\n ImportUpdateEntityPreference_UpdateNegativeSites: options.UpdateNegativeSites,\r\n ImportUpdateEntityPreference_UpdateKeywordDestinationUrl: options.UpdateKeywordUrls,\r\n ImportUpdateEntityPreference_UpdateTrackingTemplateAndCustomParams:\r\n options.UpdateTrackingTemplatesAndCustomParameters,\r\n ImportUpdateEntityPreference_UpdateLocationTargets: options.UpdateLocationTargets,\r\n ImportUpdateEntityPreference_UpdateAdExtensions: options.UpdateAdExtensions,\r\n ImportUpdateEntityPreference_UpdateStatusForExistingCampaigns: options.UpdateStatusForCampaigns,\r\n ImportUpdateEntityPreference_UpdateStatusForExistingAdGroups: options.UpdateStatusForAdGroups,\r\n ImportUpdateEntityPreference_UpdateStatusForExistingAds: options.UpdateStatusForAds,\r\n ImportUpdateEntityPreference_UpdateStatusForExistingKeywords: options.UpdateStatusForKeywords,\r\n ImportUpdateEntityPreference_UpdateLanguageForExistingAdGroups:\r\n options.UpdateLanguageForAdGroup,\r\n // DeletedItems\r\n ImportDeletedEntities: options.ImportDeletedEntities,\r\n // BidsAndBudgets\r\n DefaultBidsBelowMinToAdCenterMinBid: options.SetLowerBidsToAdCenterMinBids,\r\n DefaultCampaignBudgetBelowMinToAdCenterMinBudget:\r\n options.SetLowerCampaignBudgetsToAdCenterMinCampaignBudgets,\r\n // OtherItems\r\n ImportAppendDestUrlPreference_UseAppendString:\r\n !!options.PrefixAndSuffixForUrls && options.PrefixAndSuffixForUrls.EnablePrefixAndSuffix,\r\n ImportAppendDestUrlPreference_AppendStringForDestinationUrl:\r\n options.PrefixAndSuffixForUrls ?\r\n options.PrefixAndSuffixForUrls.SuffixString : '',\r\n ImportSearchAndReplaceDestUrlPreference_UseSearchAndReplaceString:\r\n !!options.SearchAndReplaceForUrls && options.SearchAndReplaceForUrls.EnableSearchAndReplace,\r\n ImportSearchAndReplaceDestUrlPreference_SearchStringForDestinationUrl:\r\n options.SearchAndReplaceForUrls ?\r\n options.SearchAndReplaceForUrls.SearchString : '',\r\n ImportSearchAndReplaceDestUrlPreference_ReplaceStringForDestinationUrl:\r\n options.SearchAndReplaceForUrls ?\r\n options.SearchAndReplaceForUrls.ReplaceString : '',\r\n\r\n AppendPreferencesForTrackingTemplate_UseAppendString:\r\n !!options.PrefixAndSuffixForTrackingTemplates &&\r\n options.PrefixAndSuffixForTrackingTemplates.EnablePrefixAndSuffix,\r\n AppendPreferencesForTrackingTemplate_AppendStringForTrackingTemplate:\r\n options.PrefixAndSuffixForTrackingTemplates ?\r\n options.PrefixAndSuffixForTrackingTemplates.SuffixString : '',\r\n SearchAndReplacePreferencesForTrackingTemplate_UseSearchAndReplaceString:\r\n !!options.SearchAndReplaceForTrackingTemplates &&\r\n options.SearchAndReplaceForTrackingTemplates.EnableSearchAndReplace,\r\n SearchAndReplacePreferencesForTrackingTemplate_SearchStringForTrackingTemplate:\r\n options.SearchAndReplaceForTrackingTemplates ?\r\n options.SearchAndReplaceForTrackingTemplates.SearchString : '',\r\n SearchAndReplacePreferencesForTrackingTemplate_ReplaceStringForTrackingTemplate:\r\n options.SearchAndReplaceForTrackingTemplates ?\r\n options.SearchAndReplaceForTrackingTemplates.ReplaceString : '',\r\n AppendPreferencesForCustomParameter_UseAppendString:\r\n !!options.PrefixAndSuffixForTrackingTemplates &&\r\n options.PrefixAndSuffixForTrackingTemplates.EnablePrefixAndSuffix,\r\n AppendPreferencesForCustomParameter_AppendStringForCustomParameter:\r\n options.PrefixAndSuffixForTrackingTemplates ?\r\n options.PrefixAndSuffixForTrackingTemplates.SuffixString : '',\r\n AppendPreferencesForFinalURLSuffix_UseAppendString:\r\n !!options.PrefixAndSuffixForTrackingTemplates &&\r\n options.PrefixAndSuffixForTrackingTemplates.EnablePrefixAndSuffix,\r\n AppendPreferencesForFinalURLSuffix_AppendStringForFinalURLSuffix:\r\n options.PrefixAndSuffixForTrackingTemplates ?\r\n options.PrefixAndSuffixForTrackingTemplates.SuffixString : '',\r\n\r\n // behavior for option is opposite of the enum name (if checked, don't pass back this value)\r\n ImportUpdateEntityPreference_UpdateNameForExistingCampaigns: !options.UpdateCampaignNames,\r\n ImportNewOption_ImportNewActiveEntitiesOnly: !options.ImportActiveOnlyNewCampaigns,\r\n StoreIdForImportedProductAdExtensionsFlag: !!options.AssociatedBingMerchantCenterStoreId\r\n || (_.size(storeList) === 1),\r\n StoreIdForImportedProductAdExtensions: options.AssociatedBingMerchantCenterStoreId,\r\n AvailableStoreValues: _.map(_.pluck(storeList, 'Value'), id => parseInt(id, 10)),\r\n AvailableStoreValueMessages: _.pluck(storeList, 'Text'),\r\n // import options v2 options:\r\n ImportNewOption_ImportNewDayTimeTargets: options.ImportNewDayTimeTargets,\r\n ImportNewOption_ImportNewDeviceTargets: options.ImportNewDeviceTargets,\r\n ImportNewOption_ImportNewDemographicTargets: options.ImportNewDemographicTargets,\r\n ImportNewOption_ImportNewCallAdExtensions: options.ImportNewCallAdExtensions,\r\n ImportNewOption_ImportNewCalloutAdExtensions: options.ImportNewCalloutAdExtensions,\r\n ImportNewOption_ImportNewLocationAdExtensions: options.ImportNewLocationAdExtensions,\r\n ImportNewOption_ImportNewPriceAdExtensions: options.ImportNewPriceAdExtensions,\r\n ImportNewOption_ImportNewPromotionAdExtensions: options.ImportNewPromotionAdExtensions,\r\n ImportNewOption_ImportNewReviewAdExtensions: options.ImportNewReviewAdExtensions,\r\n ImportNewOption_ImportNewSitelinkAdExtensions: options.ImportNewSitelinkAdExtensions,\r\n ImportNewOption_ImportNewStructuredSnippetAdExtensions:\r\n options.ImportNewStructuredSnippetAdExtensions,\r\n ImportUpdateEntityPreference_UpdateDayTimeTargets: options.UpdateDayTimeTargets,\r\n ImportUpdateEntityPreference_UpdateDeviceTargets: options.UpdateDeviceTargets,\r\n ImportUpdateEntityPreference_UpdateDemographicTargets: options.UpdateDemographicTargets,\r\n ImportUpdateEntityPreference_UpdateAppAdExtensions: options.UpdateAppAdExtensions,\r\n ImportUpdateEntityPreference_UpdateCallAdExtensions: options.UpdateCallAdExtensions,\r\n ImportUpdateEntityPreference_UpdateCalloutAdExtensions: options.UpdateCalloutAdExtensions,\r\n ImportUpdateEntityPreference_UpdateLocationAdExtensions: options.UpdateLocationAdExtensions,\r\n ImportUpdateEntityPreference_UpdatePriceAdExtensions: options.UpdatePriceAdExtensions,\r\n ImportUpdateEntityPreference_UpdatePromotionAdExtensions: options.UpdatePromotionAdExtensions,\r\n ImportUpdateEntityPreference_UpdateReviewAdExtensions: options.UpdateReviewAdExtensions,\r\n ImportUpdateEntityPreference_UpdateSitelinkAdExtensions: options.UpdateSitelinkAdExtensions,\r\n ImportUpdateEntityPreference_UpdateStructuredSnippetAdExtensions:\r\n options.UpdateStructuredSnippetAdExtensions,\r\n\r\n ImportPrefixAndSuffixForStringProperty_EnablePrefixAndSuffix:\r\n !!options.PrefixAndSuffixForCampaignNames &&\r\n options.PrefixAndSuffixForCampaignNames.EnablePrefixAndSuffix,\r\n ImportPrefixAndSuffixForStringProperty_SuffixString:\r\n options.PrefixAndSuffixForCampaignNames ?\r\n options.PrefixAndSuffixForCampaignNames.SuffixString : '',\r\n ImportSearchAndReplaceForStringProperty_EnableSearchAndReplace:\r\n !!options.SearchAndReplaceForCampaignNames &&\r\n options.SearchAndReplaceForCampaignNames.EnableSearchAndReplace,\r\n ImportSearchAndReplaceForStringProperty_SearchString:\r\n options.SearchAndReplaceForCampaignNames ?\r\n options.SearchAndReplaceForCampaignNames.SearchString : '',\r\n ImportSearchAndReplaceForStringProperty_ReplaceString:\r\n options.SearchAndReplaceForCampaignNames ?\r\n options.SearchAndReplaceForCampaignNames.ReplaceString : '',\r\n\r\n PauseAdGroupIfNoLocationSupported: options.PauseAdGroupIfNoLocationSupported,\r\n EnableAutoCurrencyConversion: options.EnableAutoCurrencyConversion,\r\n };\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewKeywordUrls: options.ImportNewKeywordUrls,\r\n ImportNewOption_ImportNewTrackingTemplateAndCustomParams:\r\n options.ImportNewTrackingTemplateAndCustomParams,\r\n ImportNewOption_ImportNewNegativeSites: options.ImportNewNegativeSites,\r\n ImportUpdateEntityPreference_UpdateAdGroupNetworkSetting: options.UpdateAdGroupNetworkSetting,\r\n AdjustmentForBids_EnableAdjustment:\r\n (options.AdjustmentForBids && options.AdjustmentForBids.EnableAdjustment) || false,\r\n AdjustmentForBids_AdjustmentValue:\r\n (options.AdjustmentForBids && options.AdjustmentForBids.AdjustmentValue) || 0,\r\n AdjustmentForCampaignBudgets_EnableAdjustment:\r\n (options.AdjustmentForCampaignBudgets\r\n && options.AdjustmentForCampaignBudgets.EnableAdjustment) || false,\r\n AdjustmentForCampaignBudgets_AdjustmentValue:\r\n (options.AdjustmentForCampaignBudgets\r\n && options.AdjustmentForCampaignBudgets.AdjustmentValue) || 0,\r\n PauseParentIfNoLocationSupported: options.PauseParentIfNoLocationSupported,\r\n EnableParentLocationMapping: options.EnableParentLocationMapping === false,\r\n });\r\n\r\n // ImportAccountUrlOptions should be checked when\r\n // AdWordsAccountTrackingTemplate is empty (or) contains value\r\n // since import as a service will treat request with empty string as checked.\r\n // ImportAccountUrlOptions should not be checked when\r\n // AdWordsAccountTrackingTemplate is null (or) undefined.\r\n // for previousImportOptions, the value of ImportAccountUrlOptions is based on users\r\n // saved preference from last import.\r\n\r\n const AccountLevelTrackingTemplateCheckboxEnabled = !(\r\n _.isNull(options.UserPreferenceTrackingTemplate)\r\n || _.isUndefined(options.UserPreferenceTrackingTemplate));\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n TrackingTemplateValue: options.AdWordsAccountTrackingTemplate,\r\n // if importaccountUrlOptions is undefined look at the tracking template value.\r\n // if not undefined look at the value of ImportAccountUrlOptions.\r\n ImportAccountUrlOptions: AccountLevelTrackingTemplateCheckboxEnabled,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n FinalUrlSuffixValue: options.AdWordsAccountFinalUrlSuffix,\r\n ImportAccountUrlOptions: AccountLevelTrackingTemplateCheckboxEnabled,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n RaiseLowBidsToMinServingBidsForBsc: options.RaiseLowBidsToMinServingBidsForBsc,\r\n });\r\n\r\n if (isDeviceTargetOptimizationEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n AutoDeviceBidOptimization: options.AutoDeviceBidOptimization,\r\n });\r\n }\r\n\r\n if (isAdScheduleUseSearcherTimezoneEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n AdScheduleUseSearcherTimezone: options.AdScheduleUseSearcherTimezone,\r\n });\r\n }\r\n\r\n if (isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n PauseAIMAdGroupIfAllAudienceCriterionNotImported:\r\n !!options.PauseAIMAdGroupIfAllAudienceCriterionNotImported,\r\n });\r\n }\r\n\r\n if (isGoogleImageExtensionImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewImageAdExtensions: options.ImportNewImageAdExtensions,\r\n ImportUpdateEntityPreference_UpdateImageAdExtensions: options.UpdateImageAdExtensions,\r\n });\r\n }\r\n\r\n if (isGoogleLogoExtensionImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewLogoAdExtensions: options.ImportNewLogoAdExtensions,\r\n ImportUpdateEntityPreference_UpdateLogoAdExtensions: options.UpdateLogoAdExtensions,\r\n });\r\n }\r\n\r\n if (isGoogleUpdateAdUrlsImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportUpdateEntityPreference_UpdateAdUrls: options.UpdateAdUrls,\r\n });\r\n }\r\n\r\n if (isGoogleUpdateSitelinkUrlsImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportUpdateEntityPreference_UpdateSitelinkUrls: options.UpdateSitelinkUrls,\r\n });\r\n }\r\n\r\n if (isGoogleAccountNegativeKeywordsImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewAccountNegativeKeywords: options.ImportNewAccountNegativeKeywords,\r\n });\r\n }\r\n\r\n if (isGoogleAdCustomizerAttributesImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportUpdateEntityPreference_UpdateAdCustomizerAttributes: options.UpdateAdCustomizerAttributes,\r\n });\r\n }\r\n\r\n if (isGoogleConversionGoalsImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewConversionGoals: options.ImportNewConversionGoals,\r\n ImportUpdateEntityPreference_UpdateConversionGoals: options.UpdateConversionGoals,\r\n });\r\n }\r\n\r\n if (isBrandSuitabilityImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewBrandSuitability: options.ImportNewBrandSuitability,\r\n ImportUpdateEntityPreference_UpdateBrandSuitability: options.UpdateBrandSuitability,\r\n });\r\n }\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportSearchAndDsaMixedCampaignAsSearchCampaign:\r\n options.ImportSearchAndDsaMixedCampaignAsSearchCampaign,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewAudienceTargets: options.ImportNewAudienceTargets,\r\n ImportUpdateEntityPreference_UpdateAudienceTargets: options.UpdateAudienceTargets,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportUET: options.ImportNewAudienceTargets && !!options.AssociatedUETTagId,\r\n AssociatedUETTagId: options.AssociatedUETTagId || '',\r\n });\r\n\r\n if (isAudienceTargetForFBImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n NoAudienceTargetForFBImportOption:\r\n !options.ImportNewAudienceTargets && !options.UpdateAudienceTargets,\r\n });\r\n }\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n RenameCampaignNameWithSuffix: !!options.RenameCampaignNameWithSuffix,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n SearchAndReplaceForCustomParameters_EnableSearchAndReplace:\r\n !!options.SearchAndReplaceForCustomParameters &&\r\n options.SearchAndReplaceForCustomParameters.EnableSearchAndReplace,\r\n SearchAndReplaceForCustomParameters_SearchString:\r\n options.SearchAndReplaceForCustomParameters ?\r\n options.SearchAndReplaceForCustomParameters.SearchString : '',\r\n SearchAndReplaceForCustomParameters_ReplaceString:\r\n options.SearchAndReplaceForCustomParameters ?\r\n options.SearchAndReplaceForCustomParameters.ReplaceString : '',\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n SearchAndReplaceForFinalURLSuffix_EnableSearchAndReplace:\r\n !!options.SearchAndReplaceForFinalURLSuffix &&\r\n options.SearchAndReplaceForFinalURLSuffix.EnableSearchAndReplace,\r\n SearchAndReplaceForFinalURLSuffix_SearchString:\r\n options.SearchAndReplaceForFinalURLSuffix ?\r\n options.SearchAndReplaceForFinalURLSuffix.SearchString : '',\r\n SearchAndReplaceForFinalURLSuffix_ReplaceString:\r\n options.SearchAndReplaceForFinalURLSuffix ?\r\n options.SearchAndReplaceForFinalURLSuffix.ReplaceString : '',\r\n });\r\n\r\n if (isPageFeedEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewPageFeeds: options.ImportNewPageFeeds,\r\n ImportUpdateEntityPreference_UpdatePageFeeds: options.UpdatePageFeeds,\r\n });\r\n }\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewAdCustomizerFeeds: options.ImportNewAdCustomizerFeeds,\r\n ImportUpdateEntityPreference_UpdateAdCustomizerFeeds: options.UpdateAdCustomizerFeeds,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportAllAdUnderAnAdGroup: options.ImportAllAdUnderAnAdGroup,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewLabelsAndAssociations:\r\n (options.ImportNewLabelsAndAssociations != null)\r\n ? options.ImportNewLabelsAndAssociations\r\n : options.ImportNewEntities,\r\n UpdateLabelsAndAssociations:\r\n (options.UpdateLabelsAndAssociations != null)\r\n ? options.UpdateLabelsAndAssociations\r\n : options.ImportUpdatedEntities,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewCustomFiltersForShoppingCampaigns:\r\n (options.ImportNewCustomFiltersForShoppingCampaigns != null)\r\n ? options.ImportNewCustomFiltersForShoppingCampaigns\r\n : options.ImportNewEntities,\r\n UpdateCustomFiltersForShoppingCampaigns:\r\n (options.UpdateCustomFiltersForShoppingCampaigns != null)\r\n ? options.UpdateCustomFiltersForShoppingCampaigns\r\n : options.ImportUpdatedEntities,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBidStrategies:\r\n !!options.UpdateBiddingStrategies,\r\n });\r\n\r\n return mappedOptions;\r\n}\r\n","/* eslint-disable camelcase */\r\n/* eslint-disable no-bitwise */\r\n// TODO: remove\r\n\r\nimport _ from 'underscore';\r\n\r\nimport { ImportOptionsForm } from '../import-options-form';\r\n\r\n\r\nexport function convertToBinaryString(number, reverse = false) {\r\n if (!_.isNumber(number) || number % 1 !== 0 || number < 0) {\r\n throw new Error('unknown data type, non-negative integers only');\r\n }\r\n\r\n let bits = [];\r\n let remaining = number;\r\n\r\n do {\r\n bits.push(remaining % 2);\r\n remaining = Math.floor(remaining / 2);\r\n }\r\n while (remaining > 0);\r\n\r\n if (!reverse) {\r\n bits = bits.reverse();\r\n }\r\n\r\n return bits.join('');\r\n}\r\n\r\nexport function checkAgainstBitMask(selectedOptions, exp) {\r\n const optionsInBinary = convertToBinaryString(selectedOptions, true);\r\n\r\n return optionsInBinary.charAt(exp) === '1';\r\n}\r\n\r\nfunction parseImportNewOptions(importNewOptions) {\r\n const checkNewOptions = _.partial(checkAgainstBitMask, importNewOptions);\r\n\r\n /* eslint-disable max-len */\r\n // Get the enum value from\r\n // private/Campaign/MT/Source/BingAds.Api.NetCore/BingAds.Api.Model.NetCore/Import/ImportNewOption.cs\r\n /* eslint-enable max-len */\r\n return {\r\n ImportNewActiveEntitiesOnly: checkNewOptions(0),\r\n ImportNewCampaignsAndMarkAsPaused: checkNewOptions(1),\r\n ImportNewCampaignsAndChildEntities: checkNewOptions(2),\r\n ImportNewAdGroupsAndChildEntitiesForExistingCampaigns: checkNewOptions(3),\r\n ImportNewAdsForExistingAdGroups: checkNewOptions(4),\r\n ImportNewKeywordsForExistingAdGroups: checkNewOptions(5),\r\n ImportNewNegativeKeywordsForExistingParents: checkNewOptions(6),\r\n ImportNewNegativeKeywordList: checkNewOptions(7),\r\n ImportNewLocationTargets: checkNewOptions(8),\r\n ImportNewAppAdExtensions: checkNewOptions(12),\r\n ImportNewDayTimeTargets: checkNewOptions(9),\r\n ImportNewDeviceTargets: checkNewOptions(10),\r\n ImportNewDemographicTargets: checkNewOptions(11),\r\n ImportNewCallAdExtensions: checkNewOptions(13),\r\n ImportNewCalloutAdExtensions: checkNewOptions(14),\r\n ImportNewLocationAdExtensions: checkNewOptions(16),\r\n ImportNewPriceAdExtensions: checkNewOptions(15),\r\n ImportNewPromotionAdExtensions: checkNewOptions(27),\r\n ImportNewReviewAdExtensions: checkNewOptions(17),\r\n ImportNewSitelinkAdExtensions: checkNewOptions(18),\r\n ImportNewStructuredSnippetAdExtensions: checkNewOptions(19),\r\n ImportNewKeywordUrls: checkNewOptions(20),\r\n ImportNewTrackingTemplateAndCustomParams: checkNewOptions(21),\r\n ImportNewNegativeSites: checkNewOptions(22),\r\n ImportNewPageFeeds: checkNewOptions(23),\r\n ImportNewAudienceTargets: checkNewOptions(24),\r\n ImportNewAdCustomizerFeeds: checkNewOptions(25),\r\n ImportAllAdUnderAnAdGroup: checkNewOptions(26),\r\n ImportNewImageAdExtensions: checkNewOptions(28),\r\n };\r\n}\r\n\r\nfunction parseImportUpdateOptions(importUpdateOptions) {\r\n const checkUpdateOptions = _.partial(checkAgainstBitMask, importUpdateOptions);\r\n\r\n /* eslint-disable max-len */\r\n // Get the enum value from\r\n // private/Campaign/MT/Source/BingAds.Api.NetCore/BingAds.Api.Model.NetCore/Import/ImportUpdateOption.cs\r\n /* eslint-enable max-len */\r\n return {\r\n CampaignBudgets: checkUpdateOptions(0),\r\n AdGroupKeywordBids: checkUpdateOptions(1),\r\n NegativeKeywordLists: checkUpdateOptions(16),\r\n NegativeSites: checkUpdateOptions(3),\r\n KeywordDestinationUrls: checkUpdateOptions(7),\r\n TrackingTemplateCustomParams: checkUpdateOptions(8),\r\n LocationTargeting: checkUpdateOptions(4),\r\n AdExtensions: checkUpdateOptions(6),\r\n UpdateStatusForExistingCampaigns: checkUpdateOptions(9),\r\n UpdateStatusForExistingAds: checkUpdateOptions(13),\r\n UpdateStatusForExistingKeywords: checkUpdateOptions(15),\r\n UpdateStatusForExistingAdGroups: checkUpdateOptions(17),\r\n UpdateNameForExistingCampaigns: checkUpdateOptions(10),\r\n UpdateLanguageForExistingAdGroups: checkUpdateOptions(19),\r\n UpdateDayTimeTargets: checkUpdateOptions(20),\r\n UpdateDeviceTargets: checkUpdateOptions(21),\r\n UpdateDemographicTargets: checkUpdateOptions(22),\r\n UpdateAppAdExtensions: checkUpdateOptions(23),\r\n UpdateCallAdExtensions: checkUpdateOptions(24),\r\n UpdateCalloutAdExtensions: checkUpdateOptions(25),\r\n UpdateLocationAdExtensions: checkUpdateOptions(27),\r\n UpdatePriceAdExtensions: checkUpdateOptions(26),\r\n UpdatePromotionAdExtensions: checkUpdateOptions(35),\r\n UpdateReviewAdExtensions: checkUpdateOptions(28),\r\n UpdateSitelinkAdExtensions: checkUpdateOptions(29),\r\n UpdateStructuredSnippetAdExtensions: checkUpdateOptions(30),\r\n UpdateAdGroupNetworkSetting: checkUpdateOptions(31),\r\n UpdatePageFeeds: checkUpdateOptions(32),\r\n UpdateAudienceTargets: checkUpdateOptions(33),\r\n UpdateAdCustomizerFeeds: checkUpdateOptions(34),\r\n UpdateImageAdExtensions: checkUpdateOptions(36),\r\n };\r\n}\r\n\r\nexport function parseExistingImportOptions(deps, existingOptions) {\r\n const options = _.clone(existingOptions);\r\n const storeListLength =\r\n deps.storeList && deps.storeList.length;\r\n const firstStoreInList = storeListLength > 0 && _.first(deps.storeList).Value;\r\n const initialStoreId =\r\n options.StoreIdForImportedProductAdExtensions\r\n || (firstStoreInList && parseInt(firstStoreInList, 10));\r\n const storeIds = _.map(_.pluck(deps.storeList, 'Value'), id => parseInt(id, 10));\r\n\r\n const importNewOptions = parseImportNewOptions(options.ImportNewOptions);\r\n const importUpdateOptions =\r\n parseImportUpdateOptions(options.UpdateEntityPreferences.ImportUpdateOptions);\r\n const isPageFeedEnabled = ImportOptionsForm.isPageFeedEnabled(deps);\r\n\r\n const isDeviceTargetOptimizationEnabled\r\n = ImportOptionsForm.isDeviceTargetOptimizationEnabled(deps);\r\n\r\n const isAdScheduleUseSearcherTimezoneEnabled\r\n = ImportOptionsForm.isAdScheduleUseSearcherTimezoneEnabled(deps);\r\n\r\n const isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled\r\n = ImportOptionsForm.isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled(deps);\r\n\r\n const isGoogleImageExtensionImportOptionEnabled\r\n = ImportOptionsForm.isGoogleImageExtensionImportOptionEnabled(deps);\r\n\r\n const isAudienceTargetForFBImportOptionEnabled\r\n = ImportOptionsForm.isAudienceTargetForFBImportOptionEnabled(deps);\r\n\r\n let mappedOptions = {\r\n TrackingTemplateValue: options.TrackingTemplateValue,\r\n ImportAccountUrlOptions: !!options.UserSetProperties2,\r\n // ImportNewItems\r\n ImportNewEntities: options.ImportNewEntities,\r\n // flag is flipped in UI\r\n ImportNewOption_ImportNewActiveEntitiesOnly:\r\n !importNewOptions.ImportNewActiveEntitiesOnly,\r\n ImportNewOption_ImportNewCampaignsAndMarkAsPaused:\r\n importNewOptions.ImportNewCampaignsAndMarkAsPaused,\r\n ImportNewOption_ImportNewCampaignsAndChildEntities:\r\n importNewOptions.ImportNewCampaignsAndChildEntities,\r\n ImportNewOption_ImportNewAdGroupsAndChildEntitiesForExistingCampaigns:\r\n importNewOptions.ImportNewAdGroupsAndChildEntitiesForExistingCampaigns,\r\n ImportNewOption_ImportNewAdsForExistingAdGroups:\r\n importNewOptions.ImportNewAdsForExistingAdGroups,\r\n ImportNewOption_ImportNewKeywordsForExistingAdGroups:\r\n importNewOptions.ImportNewKeywordsForExistingAdGroups,\r\n ImportNewOption_ImportNewNegativeKeywordsForExistingParents:\r\n importNewOptions.ImportNewNegativeKeywordsForExistingParents,\r\n ImportNewOption_ImportNewNegativeKeywordList:\r\n importNewOptions.ImportNewNegativeKeywordList,\r\n ImportNewOption_ImportNewLocationTargets:\r\n importNewOptions.ImportNewLocationTargets,\r\n ImportNewOption_ImportNewAppAdExtensions:\r\n importNewOptions.ImportNewAppAdExtensions,\r\n // ExistingItems\r\n UpdateEntityPreferences: options.UpdateEntityPreferences.ImportUpdatedEntities,\r\n ImportUpdateEntityPreference_UpdateCampaignBudget:\r\n importUpdateOptions.CampaignBudgets,\r\n ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids:\r\n importUpdateOptions.AdGroupKeywordBids,\r\n ImportUpdateEntityPreference_UpdateExistingNegativeKeywordList:\r\n importUpdateOptions.NegativeKeywordLists,\r\n ImportUpdateEntityPreference_UpdateNegativeSites:\r\n importUpdateOptions.NegativeSites,\r\n ImportUpdateEntityPreference_UpdateKeywordDestinationUrl:\r\n importUpdateOptions.KeywordDestinationUrls,\r\n ImportUpdateEntityPreference_UpdateTrackingTemplateAndCustomParams:\r\n importUpdateOptions.TrackingTemplateCustomParams,\r\n ImportUpdateEntityPreference_UpdateLocationTargets:\r\n importUpdateOptions.LocationTargeting,\r\n ImportUpdateEntityPreference_UpdateAdExtensions: importUpdateOptions.AdExtensions,\r\n ImportUpdateEntityPreference_UpdateStatusForExistingCampaigns:\r\n importUpdateOptions.UpdateStatusForExistingCampaigns,\r\n ImportUpdateEntityPreference_UpdateStatusForExistingAds:\r\n importUpdateOptions.UpdateStatusForExistingAds,\r\n ImportUpdateEntityPreference_UpdateStatusForExistingKeywords:\r\n importUpdateOptions.UpdateStatusForExistingKeywords,\r\n ImportUpdateEntityPreference_UpdateStatusForExistingAdGroups:\r\n importUpdateOptions.UpdateStatusForExistingAdGroups,\r\n ImportUpdateEntityPreference_UpdateLanguageForExistingAdGroups:\r\n importUpdateOptions.UpdateLanguageForExistingAdGroups,\r\n // DeletedItems\r\n ImportDeletedEntities: options.ImportDeletedEntities,\r\n // BidsAndBudgets\r\n DefaultBidsBelowMinToAdCenterMinBid: options.DefaultBidsBelowMinToAdCenterMinBid,\r\n DefaultCampaignBudgetBelowMinToAdCenterMinBudget:\r\n options.DefaultCampaignBudgetBelowMinToAdCenterMinBudget,\r\n // OtherItems\r\n ImportAppendDestUrlPreference_UseAppendString: options.AppendDestUrlPreference.UseAppendString,\r\n ImportAppendDestUrlPreference_AppendStringForDestinationUrl:\r\n options.AppendDestUrlPreference.UseAppendString ?\r\n options.AppendDestUrlPreference.AppendStringForDestinationUrl : '',\r\n ImportSearchAndReplaceDestUrlPreference_UseSearchAndReplaceString:\r\n options.SearcAndReplaceDestUrlPreference.UseSearchAndReplaceString,\r\n ImportSearchAndReplaceDestUrlPreference_SearchStringForDestinationUrl:\r\n options.SearcAndReplaceDestUrlPreference.UseSearchAndReplaceString ?\r\n options.SearcAndReplaceDestUrlPreference.SearchStringForDestinationUrl : '',\r\n ImportSearchAndReplaceDestUrlPreference_ReplaceStringForDestinationUrl:\r\n options.SearcAndReplaceDestUrlPreference.ReplaceStringForDestinationUrl,\r\n AppendPreferencesForTrackingTemplate_UseAppendString:\r\n options.AppendTrackingTemplatePreference.UseAppendString,\r\n AppendPreferencesForTrackingTemplate_AppendStringForTrackingTemplate:\r\n options.AppendTrackingTemplatePreference.UseAppendString ?\r\n options.AppendTrackingTemplatePreference.AppendStringForTrackingTemplate : '',\r\n SearchAndReplacePreferencesForTrackingTemplate_UseSearchAndReplaceString:\r\n options.SearchAndReplaceTrackingTemplatePreference.UseSearchAndReplaceString,\r\n SearchAndReplacePreferencesForTrackingTemplate_SearchStringForTrackingTemplate:\r\n options.SearchAndReplaceTrackingTemplatePreference.UseSearchAndReplaceString ?\r\n options.SearchAndReplaceTrackingTemplatePreference.SearchStringForTrackingTemplate : '',\r\n SearchAndReplacePreferencesForTrackingTemplate_ReplaceStringForTrackingTemplate:\r\n options.SearchAndReplaceTrackingTemplatePreference.ReplaceStringForTrackingTemplate,\r\n\r\n // behavior for option is opposite of the enum name (if checked, don't pass back this value)\r\n ImportUpdateEntityPreference_UpdateNameForExistingCampaigns:\r\n !importUpdateOptions.UpdateNameForExistingCampaigns,\r\n // check this option if there's only one store id\r\n StoreIdForImportedProductAdExtensionsFlag:\r\n !!options.StoreIdForImportedProductAdExtensions || (storeListLength === 1),\r\n StoreIdForImportedProductAdExtensions: initialStoreId,\r\n AvailableStoreValues: storeIds,\r\n AvailableStoreValueMessages: _.pluck(deps.storeList, 'Text'),\r\n // import options v2 options:\r\n ImportNewOption_ImportNewDayTimeTargets: importNewOptions.ImportNewDayTimeTargets,\r\n ImportNewOption_ImportNewDeviceTargets: importNewOptions.ImportNewDeviceTargets,\r\n ImportNewOption_ImportNewDemographicTargets: importNewOptions.ImportNewDemographicTargets,\r\n ImportNewOption_ImportNewCallAdExtensions: importNewOptions.ImportNewCallAdExtensions,\r\n ImportNewOption_ImportNewCalloutAdExtensions: importNewOptions.ImportNewCalloutAdExtensions,\r\n ImportNewOption_ImportNewLocationAdExtensions: importNewOptions.ImportNewLocationAdExtensions,\r\n ImportNewOption_ImportNewPriceAdExtensions: importNewOptions.ImportNewPriceAdExtensions,\r\n ImportNewOption_ImportNewPromotionAdExtensions: importNewOptions.ImportNewPromotionAdExtensions,\r\n ImportNewOption_ImportNewReviewAdExtensions: importNewOptions.ImportNewReviewAdExtensions,\r\n ImportNewOption_ImportNewSitelinkAdExtensions: importNewOptions.ImportNewSitelinkAdExtensions,\r\n ImportNewOption_ImportNewStructuredSnippetAdExtensions:\r\n importNewOptions.ImportNewStructuredSnippetAdExtensions,\r\n ImportUpdateEntityPreference_UpdateDayTimeTargets: importUpdateOptions.UpdateDayTimeTargets,\r\n ImportUpdateEntityPreference_UpdateDeviceTargets: importUpdateOptions.UpdateDeviceTargets,\r\n ImportUpdateEntityPreference_UpdateDemographicTargets:\r\n importUpdateOptions.UpdateDemographicTargets,\r\n ImportUpdateEntityPreference_UpdateAppAdExtensions: importUpdateOptions.UpdateAppAdExtensions,\r\n ImportUpdateEntityPreference_UpdateCallAdExtensions:\r\n importUpdateOptions.UpdateCallAdExtensions,\r\n ImportUpdateEntityPreference_UpdateCalloutAdExtensions:\r\n importUpdateOptions.UpdateCalloutAdExtensions,\r\n ImportUpdateEntityPreference_UpdateLocationAdExtensions:\r\n importUpdateOptions.UpdateLocationAdExtensions,\r\n ImportUpdateEntityPreference_UpdatePriceAdExtensions:\r\n importUpdateOptions.UpdatePriceAdExtensions,\r\n ImportUpdateEntityPreference_UpdatePromotionAdExtensions:\r\n importUpdateOptions.UpdatePromotionAdExtensions,\r\n ImportUpdateEntityPreference_UpdateReviewAdExtensions:\r\n importUpdateOptions.UpdateReviewAdExtensions,\r\n ImportUpdateEntityPreference_UpdateSitelinkAdExtensions:\r\n importUpdateOptions.UpdateSitelinkAdExtensions,\r\n ImportUpdateEntityPreference_UpdateStructuredSnippetAdExtensions:\r\n importUpdateOptions.UpdateStructuredSnippetAdExtensions,\r\n ImportPrefixAndSuffixForStringProperty_EnablePrefixAndSuffix:\r\n !!options.PrefixAndSuffixForCampaignNames &&\r\n options.PrefixAndSuffixForCampaignNames.EnablePrefixAndSuffix,\r\n ImportPrefixAndSuffixForStringProperty_SuffixString:\r\n options.PrefixAndSuffixForCampaignNames &&\r\n options.PrefixAndSuffixForCampaignNames.EnablePrefixAndSuffix ?\r\n options.PrefixAndSuffixForCampaignNames.SuffixString : '',\r\n ImportSearchAndReplaceForStringProperty_EnableSearchAndReplace:\r\n !!options.SearchAndReplaceForCampaignNames &&\r\n options.SearchAndReplaceForCampaignNames.EnableSearchAndReplace,\r\n ImportSearchAndReplaceForStringProperty_SearchString:\r\n !!options.SearchAndReplaceForCampaignNames &&\r\n options.SearchAndReplaceForCampaignNames.EnableSearchAndReplace ?\r\n options.SearchAndReplaceForCampaignNames.SearchString : '',\r\n ImportSearchAndReplaceForStringProperty_ReplaceString:\r\n options.SearchAndReplaceForCampaignNames ?\r\n options.SearchAndReplaceForCampaignNames.ReplaceString : '',\r\n\r\n PauseAdGroupIfNoLocationSupported: options.PauseAdGroupIfNoLocationSupported,\r\n EnableAutoCurrencyConversion: options.EnableAutoCurrencyConversion,\r\n };\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewKeywordUrls: importNewOptions.ImportNewKeywordUrls,\r\n ImportNewOption_ImportNewTrackingTemplateAndCustomParams:\r\n importNewOptions.ImportNewTrackingTemplateAndCustomParams,\r\n ImportNewOption_ImportNewNegativeSites: importNewOptions.ImportNewNegativeSites,\r\n ImportUpdateEntityPreference_UpdateAdGroupNetworkSetting:\r\n importUpdateOptions.UpdateAdGroupNetworkSetting,\r\n AdjustmentForBids_EnableAdjustment:\r\n options.AdjustmentForBids ? options.AdjustmentForBids.EnableAdjustment : false,\r\n AdjustmentForBids_AdjustmentValue:\r\n (options.AdjustmentForBids && options.AdjustmentForBids.AdjustmentValue) || 0,\r\n AdjustmentForCampaignBudgets_EnableAdjustment:\r\n options.AdjustmentForCampaignBudgets ?\r\n options.AdjustmentForCampaignBudgets.EnableAdjustment : false,\r\n AdjustmentForCampaignBudgets_AdjustmentValue:\r\n (options.AdjustmentForCampaignBudgets\r\n && options.AdjustmentForCampaignBudgets.AdjustmentValue) || 0,\r\n PauseParentIfNoLocationSupported: options.PauseParentIfNoLocationSupported,\r\n EnableParentLocationMapping: options.EnableParentLocationMapping === false,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n FinalUrlSuffixValue: options.FinalUrlSuffixValue,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n RaiseLowBidsToMinServingBidsForBsc: options.RaiseLowBidsToMinServingBidsForBsc,\r\n });\r\n\r\n if (isDeviceTargetOptimizationEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n AutoDeviceBidOptimization: options.AutoDeviceBidOptimization,\r\n });\r\n }\r\n\r\n if (isAdScheduleUseSearcherTimezoneEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n AdScheduleUseSearcherTimezone: options.AdScheduleUseSearcherTimezone,\r\n });\r\n }\r\n\r\n if (isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n PauseAIMAdGroupIfAllAudienceCriterionNotImported:\r\n options.PauseAIMAdGroupIfAllAudienceCriterionNotImported,\r\n });\r\n }\r\n\r\n if (isGoogleImageExtensionImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewImageAdExtensions:\r\n importNewOptions.ImportNewImageAdExtensions,\r\n ImportUpdateEntityPreference_UpdateImageAdExtensions:\r\n importUpdateOptions.UpdateImageAdExtensions,\r\n });\r\n }\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportSearchAndDsaMixedCampaignAsSearchCampaign:\r\n options.ImportSearchAndDsaMixedCampaignAsSearchCampaign,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewAudienceTargets: importNewOptions.ImportNewAudienceTargets,\r\n ImportUpdateEntityPreference_UpdateAudienceTargets: importUpdateOptions.UpdateAudienceTargets,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportUET: importNewOptions.ImportNewAudienceTargets && !!options.AssociatedUETTagId,\r\n AssociatedUETTagId: options.AssociatedUETTagId || '',\r\n });\r\n\r\n if (isAudienceTargetForFBImportOptionEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n NoAudienceTargetForFBImportOption:\r\n !options.ImportNewAudienceTargets && !options.UpdateAudienceTargets,\r\n });\r\n }\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n SearchAndReplaceForCustomParameters_EnableSearchAndReplace:\r\n options.SearchAndReplaceForCustomParameters.EnableSearchAndReplace,\r\n SearchAndReplaceForCustomParameters_SearchString:\r\n options.SearchAndReplaceForCustomParameters.SearchString,\r\n SearchAndReplaceForCustomParameters_ReplaceString:\r\n options.SearchAndReplaceForCustomParameters.ReplaceString,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n SearchAndReplaceForFinalURLSuffix_EnableSearchAndReplace:\r\n options.SearchAndReplaceForFinalURLSuffix.EnableSearchAndReplace,\r\n SearchAndReplaceForFinalURLSuffix_SearchString:\r\n options.SearchAndReplaceForFinalURLSuffix.SearchString,\r\n SearchAndReplaceForFinalURLSuffix_ReplaceString:\r\n options.SearchAndReplaceForFinalURLSuffix.ReplaceString,\r\n });\r\n\r\n if (isPageFeedEnabled) {\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewPageFeeds: importNewOptions.ImportNewPageFeeds,\r\n ImportUpdateEntityPreference_UpdatePageFeeds: importUpdateOptions.UpdatePageFeeds,\r\n });\r\n }\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportAllAdUnderAnAdGroup: importNewOptions.ImportAllAdUnderAnAdGroup,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewLabelsAndAssociations:\r\n (options.ImportNewLabelsAndAssociations != null)\r\n ? options.ImportNewLabelsAndAssociations\r\n : options.ImportNewEntities,\r\n UpdateLabelsAndAssociations:\r\n (options.UpdateLabelsAndAssociations != null)\r\n ? options.UpdateLabelsAndAssociations\r\n : options.UpdateEntityPreferences.ImportUpdatedEntities,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewCustomFiltersForShoppingCampaigns:\r\n (options.ImportNewCustomFiltersForShoppingCampaigns != null)\r\n ? options.ImportNewCustomFiltersForShoppingCampaigns\r\n : options.ImportNewEntities,\r\n UpdateCustomFiltersForShoppingCampaigns:\r\n (options.UpdateCustomFiltersForShoppingCampaigns != null)\r\n ? options.UpdateCustomFiltersForShoppingCampaigns\r\n : options.UpdateEntityPreferences.ImportUpdatedEntities,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportNewOption_ImportNewAdCustomizerFeeds: importNewOptions.ImportNewAdCustomizerFeeds,\r\n ImportUpdateEntityPreference_UpdateAdCustomizerFeeds:\r\n importUpdateOptions.UpdateAdCustomizerFeeds,\r\n });\r\n\r\n mappedOptions = _.extend(mappedOptions, {\r\n ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBidStrategies:\r\n !!options.UpdateBiddingStrategies,\r\n });\r\n\r\n return mappedOptions;\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport { parseEditScheduledImportOptions } from './edit-import-parser';\r\nexport { parseModelToImportUserPreferences } from './form-model-parser';\r\nexport { parseModelToImportUserPreference } from './form-model-json-parser';\r\nexport { parseJsonFormatImportOptions } from './json-option-parser';\r\nexport { parseExistingImportOptions } from './previous-options-parser';\r\n\r\nexport function pickModelPropertiesByFields(model, fields) {\r\n const plucked = _.pick(model, (value, key) => (\r\n _.contains(_.pluck(fields, 'property'), key)\r\n ));\r\n\r\n return plucked;\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\n\r\n\r\nimport { SimpleForm } from '@bingads-webui/simple-form';\r\n\r\nimport advancedOptionsTemplate from './advanced-opt-temp.pug';\r\nimport { pickModelPropertiesByFields } from '../parsers/index';\r\n\r\nexport const MAX_LABEL_LENGTH = 18;\r\n\r\nexport const AdvancedOptionsView = Backbone.View.extend({\r\n initialize({\r\n fields,\r\n schema,\r\n label,\r\n description,\r\n model,\r\n helpId,\r\n i18n,\r\n }) {\r\n this.i18n = i18n;\r\n\r\n this.form = new SimpleForm({\r\n schema,\r\n fields,\r\n showButtons: false,\r\n description,\r\n model: pickModelPropertiesByFields(model, fields),\r\n });\r\n\r\n this.label = label;\r\n this.advancedOptionsFields = fields;\r\n this.helpId = helpId;\r\n this.includeAllOption = false;\r\n },\r\n\r\n events() {\r\n return {};\r\n },\r\n\r\n areAllSelected() {\r\n return _.every(this.form.currentModel(), property => property);\r\n },\r\n\r\n areSomeSelected() {\r\n return _.some(this.form.currentModel(), property => property);\r\n },\r\n\r\n render() {\r\n this.$el.html(advancedOptionsTemplate({\r\n includeAllOption: false,\r\n label: _.size(this.label) > MAX_LABEL_LENGTH ? `${this.label.substring(0, MAX_LABEL_LENGTH)}...` : this.label,\r\n i18n: this.i18n,\r\n helpId: this.helpId,\r\n fullLabel: this.label,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n this.$('.advanced-options-form').html(this.form.render().$el);\r\n return this;\r\n },\r\n\r\n getCurrentModel() {\r\n return this.form.currentModel();\r\n },\r\n\r\n remove() {\r\n this.form.remove();\r\n Backbone.View.prototype.remove.call(this);\r\n },\r\n});\r\n","import ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport { AdvancedOptionsView, MAX_LABEL_LENGTH } from './advanced-opt-view';\r\nimport advancedOptionsTemplate from './advanced-opt-temp.pug';\r\n\r\nexport class AdvancedOptionsSelectAllView extends AdvancedOptionsView {\r\n initialize({\r\n fields,\r\n schema,\r\n label,\r\n description,\r\n model,\r\n helpId,\r\n i18n,\r\n }) {\r\n super.initialize({\r\n fields, schema, label, description, model, helpId, i18n,\r\n });\r\n this.allSelected = false;\r\n this.includeAllOption = true;\r\n }\r\n\r\n events() {\r\n return {\r\n 'click input.all': 'toggleAll',\r\n 'click .advanced-options-form .checkbox': 'toggleAllCheckboxState',\r\n };\r\n }\r\n\r\n toggleAll() {\r\n this.allSelected = !this.allSelected;\r\n\r\n _.each(this.advancedOptionsFields, (field) => {\r\n const propertyName = field.property;\r\n\r\n this.form.viewModel[propertyName](this.allSelected);\r\n });\r\n\r\n this.toggleAllCheckboxState();\r\n }\r\n\r\n toggleAllCheckboxState() {\r\n const allCheckbox = this.$('input.all');\r\n\r\n if (this.areAllSelected()) {\r\n allCheckbox\r\n .prop('checked', true)\r\n .prop('indeterminate', false);\r\n this.allSelected = true;\r\n } else if (this.areSomeSelected()) {\r\n allCheckbox\r\n .prop('checked', false)\r\n .prop('indeterminate', true);\r\n this.allSelected = false;\r\n } else {\r\n allCheckbox\r\n .prop('checked', false)\r\n .prop('indeterminate', false);\r\n this.allSelected = false;\r\n }\r\n }\r\n\r\n render() {\r\n this.$el.html(advancedOptionsTemplate({\r\n includeAllOption: true,\r\n label: _.size(this.label) > MAX_LABEL_LENGTH ? `${this.label.substring(0, MAX_LABEL_LENGTH)}...` : this.label,\r\n i18n: this.i18n,\r\n helpId: this.helpId,\r\n fullLabel: this.label,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this.$('.advanced-options-sub-items').html(this.form.render().$el);\r\n\r\n this.toggleAllCheckboxState();\r\n\r\n return this;\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\n\r\nimport sectionTemplate from './section-template.pug';\r\nimport { OptionsSectionViewModel } from './section-vm';\r\nimport { AdvancedOptionsView } from './advanced-opt-view';\r\nimport { AdvancedOptionsSelectAllView } from './advanced-select-all-opt-view';\r\n\r\n/**\r\n * subSections - array of Section objects, defined as follows:\r\n *\r\n * {\r\n * advancedOptionsFields // array of field objects used as form config\r\n * advancedOptionsSchema // schema corresponding to the fields in advancedOptionsFields\r\n * helpId // optional id for pop up to be displayed next to sub-section label\r\n * }\r\n *\r\n * We will use an array to support the scenario where there are multiple advanced options\r\n * sections (each w/ different schema) under one \"Section\" (a form-group with hide/show control)\r\n */\r\n\r\nexport class OptionsSectionView extends Backbone.View {\r\n initialize({\r\n observable,\r\n field,\r\n subSectionsConfig,\r\n sectionLabel,\r\n description,\r\n model,\r\n i18n,\r\n warningMessage,\r\n helpId,\r\n hideAdvancedOptions,\r\n }) {\r\n this.viewModel = new OptionsSectionViewModel({ i18n, observable, warningMessage });\r\n\r\n this.advancedOptionsView = [];\r\n\r\n _.each(subSectionsConfig, (subSection) => {\r\n const viewParams = {\r\n fields: subSection.advancedOptionsFields,\r\n schema: subSection.advancedOptionsSchema,\r\n label: subSection.label,\r\n model,\r\n helpId: subSection.helpId,\r\n i18n,\r\n };\r\n const subSectionView = (subSection.includeAllOption)\r\n ? new AdvancedOptionsSelectAllView(viewParams)\r\n : new AdvancedOptionsView(viewParams);\r\n\r\n this.advancedOptionsView.push(subSectionView);\r\n });\r\n\r\n this.property = field.property;\r\n this.sectionLabel = sectionLabel;\r\n this.description = description;\r\n this.warningMessage = warningMessage;\r\n this.helpId = helpId;\r\n this.i18n = i18n;\r\n this.hideAdvancedOptions = hideAdvancedOptions;\r\n }\r\n\r\n events() {\r\n return {\r\n 'click .toggle-link': 'triggerToggleEvent',\r\n };\r\n }\r\n\r\n triggerToggleEvent() {\r\n if (!this.hideAdvancedOptions) {\r\n this.toggleAdvancedOptionsExpansion(!this.viewModel.showAdvancedOptions());\r\n }\r\n }\r\n\r\n toggleAdvancedOptionsExpansion(expand) {\r\n this.viewModel.showAdvancedOptions(!this.hideAdvancedOptions && expand);\r\n }\r\n\r\n render() {\r\n const { length } = this.advancedOptionsView;\r\n\r\n this.$el.html(sectionTemplate({\r\n length,\r\n sectionLabel: this.sectionLabel,\r\n description: this.description,\r\n warningMessage: this.warningMessage,\r\n helpId: this.helpId,\r\n i18n: this.i18n,\r\n hideAdvancedOptions: this.hideAdvancedOptions,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n let index = 0;\r\n\r\n _.each(this.advancedOptionsView, (subSection) => {\r\n this.$(`.advanced-options .section${index}`).html(subSection.render().$el);\r\n index += 1;\r\n });\r\n\r\n return this;\r\n }\r\n\r\n remove() {\r\n this.advancedOptionsView.remove();\r\n super.remove();\r\n }\r\n\r\n getAdvancedOptionsModel() {\r\n const allSubSectionsModel = {};\r\n\r\n _.each(this.advancedOptionsView, (subSection) => {\r\n _.extend(allSubSectionsModel, subSection.getCurrentModel());\r\n });\r\n\r\n return allSubSectionsModel;\r\n }\r\n\r\n areAllOptionsSelected() {\r\n const model = this.getAdvancedOptionsModel();\r\n\r\n return _.every(model, prop => prop);\r\n }\r\n\r\n areAllOptionsDisabled() {\r\n return _.every(this.advancedOptionsView, subSection => subSection.$('input').attr('disabled') === 'disabled');\r\n }\r\n\r\n areSomeOptionsSelected() {\r\n const model = this.getAdvancedOptionsModel();\r\n\r\n return _.some(model, prop => prop);\r\n }\r\n\r\n selectAllOptions() {\r\n _.each(this.advancedOptionsView, (subSection) => {\r\n const { form: { viewModel } } = subSection;\r\n\r\n _.each(subSection.advancedOptionsFields, (field) => {\r\n viewModel[field.property](true);\r\n });\r\n\r\n if (subSection.includeAllOption) {\r\n subSection.toggleAllCheckboxState();\r\n }\r\n });\r\n }\r\n\r\n disableAdvancedOptions() {\r\n _.each(this.advancedOptionsView, (subSection) => {\r\n subSection.$('input').attr('disabled', 'disabled');\r\n });\r\n }\r\n enableAdvancedOptions() {\r\n _.each(this.advancedOptionsView, (subSection) => {\r\n subSection.$('input').removeAttr('disabled');\r\n });\r\n }\r\n\r\n toggleWarningMessage(display) {\r\n if (this.warningMessage) this.viewModel.displayWarningMessage(display);\r\n }\r\n}\r\n","import { OptionsSectionView } from './section-view';\r\n\r\nexport function createViewClass({\r\n subSectionsConfig,\r\n sectionLabel,\r\n description,\r\n model,\r\n i18n,\r\n warningMessage,\r\n helpId,\r\n hideAdvancedOptions,\r\n}) {\r\n return class AdvancedOptionsView extends OptionsSectionView {\r\n initialize({ observable, field }) {\r\n super.initialize({\r\n observable,\r\n field,\r\n subSectionsConfig,\r\n sectionLabel,\r\n description,\r\n model,\r\n i18n,\r\n warningMessage,\r\n helpId,\r\n hideAdvancedOptions,\r\n });\r\n }\r\n };\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport warningMessageTemplate from './warning-message-bullets-temp.pug';\r\nimport { createViewClass } from './section-factory';\r\n\r\nexport function createUpdateEntityView({\r\n subSectionsConfig,\r\n sectionLabel,\r\n model,\r\n i18n,\r\n hideAdvancedOptions,\r\n helpId = 'Pop_BA_Import_UpdateExistingItems',\r\n}) {\r\n const updateEntityControlParameters = {\r\n subSectionsConfig,\r\n sectionLabel,\r\n model,\r\n i18n,\r\n hideAdvancedOptions,\r\n description: i18n.get('Import_ImportOptions_ImportExisting_AdvancedSub'),\r\n helpId,\r\n };\r\n const warningMessage = warningMessageTemplate({\r\n warningText: i18n.get('Import_ImportOptions_UpdateEntityUncheckedWarning'),\r\n bulletTexts: _.compact([\r\n i18n.get('ImportUpdateEntityPreference_UpdateCampaignBudget_BidSection'),\r\n i18n.get('ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids_Bids'),\r\n i18n.get('ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids_BidStrategies'),\r\n ]),\r\n });\r\n\r\n _.extend(updateEntityControlParameters, {\r\n warningMessage,\r\n });\r\n return createViewClass(updateEntityControlParameters);\r\n}\r\n","import _ from 'underscore';\r\nimport urlTemplate from './url-template.pug';\r\n\r\nexport function getTemplateWithUrlFromModel(i18n, model) {\r\n return options => (\r\n urlTemplate(_.extend({\r\n isCustomerLevel: model.isCustomerLevel,\r\n trackingTemplateValue: model.TrackingTemplateValue || i18n.get('Import_ImportOptions_TrackingTemplate_NotAvailable'),\r\n finalUrlSuffixValue: model.FinalUrlSuffixValue || i18n.get('Import_ImportOptions_TrackingTemplate_NotAvailable'),\r\n i18n,\r\n isHideUrlDetailView: false,\r\n }, options))\r\n );\r\n}\r\n","import Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\n\r\nimport template from './url-template.pug';\r\nimport { showPopoverTableView } from '../../../../page/index';\r\n\r\nexport class OptionsUrlView extends Backbone.View {\r\n initialize({\r\n i18n,\r\n model,\r\n options,\r\n }) {\r\n this.i18n = i18n;\r\n this.model = model;\r\n this.options = options;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .import-options-link.TrackingTemplate': 'viewTrackingTemplateDetails',\r\n 'click .import-options-link.FinalUrl': 'viewFinalUrlDetails',\r\n };\r\n }\r\n\r\n viewTrackingTemplateDetails(event) {\r\n const data = _.map(this.model.TrackingTemplateValue, ({\r\n googleCustomerId,\r\n googleAccountName,\r\n trackingTemplate,\r\n }) => ({\r\n AccountName: `${googleAccountName} (${googleCustomerId})`,\r\n urlContents: trackingTemplate || this.i18n.getString('Import_ImportOptions_TrackingTemplate_NotAvailable'),\r\n }));\r\n\r\n showPopoverTableView(\r\n event.target,\r\n ['TrackingTemplateView'],\r\n '',\r\n [{\r\n bodyClasses: 'AccountName',\r\n name: 'AccountName',\r\n title: this.i18n.get('GoogleImport_MicrosoftAdvertising_GoogleAccounts'),\r\n }, {\r\n bodyClasses: 'urlContents',\r\n name: 'urlContents',\r\n title: this.i18n.getString('ColumnName_TrackingTemplate'),\r\n }],\r\n data,\r\n this.i18n\r\n );\r\n }\r\n\r\n viewFinalUrlDetails(event) {\r\n const data = _.map(this.model.FinalUrlSuffixValue, ({\r\n googleCustomerId,\r\n googleAccountName,\r\n finalUrlSuffix,\r\n }) => ({\r\n AccountName: `${googleAccountName} (${googleCustomerId})`,\r\n urlContents: finalUrlSuffix || this.i18n.getString('Import_ImportOptions_TrackingTemplate_NotAvailable'),\r\n }));\r\n\r\n showPopoverTableView(\r\n event.target,\r\n ['FinalUrlSuffixView'],\r\n '',\r\n [{\r\n bodyClasses: 'AccountName',\r\n name: 'AccountName',\r\n title: this.i18n.get('GoogleImport_MicrosoftAdvertising_GoogleAccounts'),\r\n }, {\r\n bodyClasses: 'urlContents',\r\n name: 'urlContents',\r\n title: this.i18n.getString('ColumnName_FinalUrlSuffix'),\r\n }],\r\n data,\r\n this.i18n\r\n );\r\n }\r\n\r\n render() {\r\n this.$el.html(template({\r\n i18n: this.i18n,\r\n field: this.options.field,\r\n isCustomerLevel: this.model.isCustomerLevel,\r\n isHideUrlDetailView: this.model.isHideUrlDetailView,\r\n }));\r\n\r\n ko.applyBindings(this.options.viewModel, this.el);\r\n\r\n return this;\r\n }\r\n}\r\n","import { OptionsUrlView } from './options-url-view';\r\n\r\nexport function createOptionsViewClass({\r\n i18n,\r\n model,\r\n}) {\r\n return class AdvancedOptionsUrlView extends OptionsUrlView {\r\n initialize(options) {\r\n super.initialize({\r\n i18n,\r\n model,\r\n options,\r\n });\r\n }\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport currencyConvertorTemplate from './currency-convertor-template.pug';\r\n\r\nexport function getCurrencyConvertorTemplateFromModel(\r\n i18n,\r\n model,\r\n importAccountCurrencyTitle\r\n) {\r\n return options => (\r\n currencyConvertorTemplate(_.extend({\r\n externalAccountCurrency: model.AccountCurrencyMap.externalAccountCurrency,\r\n microsoftAccountCurrency: model.AccountCurrencyMap.microsoftAccountCurrency,\r\n importAccountCurrencyTitle,\r\n i18n,\r\n }, options))\r\n );\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport { createNumericAdjustmentViewClass, createErrorOnClickWithDependentFieldClass } from '../custom-controls/index';\r\nimport { getCurrencyConvertorTemplateFromModel } from '../options-section/index';\r\n\r\nfunction getBCCDecreaseValueByMarket(market) {\r\n switch (market) {\r\n case 'US':\r\n case 'AT':\r\n case 'AU':\r\n case 'BE':\r\n case 'CA':\r\n case 'CH':\r\n case 'CN':\r\n case 'CZ':\r\n case 'DE':\r\n case 'DK':\r\n case 'ES':\r\n case 'FI':\r\n case 'FR':\r\n case 'GB':\r\n case 'IE':\r\n case 'IL':\r\n case 'IN':\r\n case 'IT':\r\n case 'JP':\r\n case 'MX':\r\n case 'NL':\r\n case 'NO':\r\n case 'NZ':\r\n case 'SE':\r\n case 'TW':\r\n return 67;\r\n default: return 50;\r\n }\r\n}\r\n\r\nexport function getBidFields({\r\n i18n,\r\n logTrace,\r\n model,\r\n permissions,\r\n market,\r\n minAdjust,\r\n maxAdjust,\r\n shouldShowCurrencyConvertor = false,\r\n importAccountCurrencyTitle,\r\n}) {\r\n const deviceTargetOptimizationEnabled = permissions.IsDeviceTargetOptimizationEnabled;\r\n let minAdjustTextValue = _.isNumber(minAdjust) ? minAdjust : parseInt(minAdjust, 10);\r\n minAdjustTextValue = Math.abs(minAdjustTextValue);\r\n\r\n if (logTrace) {\r\n logTrace('BCCForImportRecommendation: pilot=true');\r\n logTrace(`BCCForImportRecommWithSOW: pilot=true with market=${market}`);\r\n }\r\n\r\n return [\r\n {\r\n type: 'collapse',\r\n text: i18n.getString('Import_ImportOptions_BudgetsBids'),\r\n isExpanded: true,\r\n className: 'bid-budget-collapse scheduling-form',\r\n fields: _.compact([shouldShowCurrencyConvertor && {\r\n property: 'EnableAutoCurrencyConversion',\r\n control: getCurrencyConvertorTemplateFromModel(\r\n i18n,\r\n model,\r\n importAccountCurrencyTitle\r\n ),\r\n showLabel: false,\r\n }, {\r\n property: 'DefaultBidsBelowMinToAdCenterMinBid',\r\n message: permissions.IsImportAutoMinimumBidEnabled ? i18n.getString('Import_ImportOptions_SetMinBids_RecommendedBid') : i18n.getString('Import_ImportOptions_SetMinBids_Generic_WithRecommendedBid'),\r\n control: 'checkbox',\r\n showLabel: false,\r\n }, {\r\n property: 'AdjustmentForBids_EnableAdjustment',\r\n label: '',\r\n message: i18n.getString('AdjustmentForBids_EnableAdjustment'),\r\n }, {\r\n property: 'AdjustmentForBids_AdjustmentValue',\r\n control: createNumericAdjustmentViewClass(i18n, 'AdjustmentForBids_EnableAdjustment'),\r\n message: '',\r\n label: '',\r\n ariaLabel: i18n.getString('AdjustmentForBids_AdjustmentValue'),\r\n selectAriaLabel: i18n.getString('Import_ImportOptions_BidsAdjustment_Options'),\r\n validators: {\r\n number: {\r\n message: i18n.getString('RequiredNumber'),\r\n },\r\n range: {\r\n message: i18n.getString('Import_InvalidBidAdjustment')\r\n .replace('{0}', minAdjustTextValue)\r\n .replace('{1}', maxAdjust),\r\n },\r\n },\r\n }, {\r\n property: 'ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids',\r\n control: createErrorOnClickWithDependentFieldClass(i18n.getString('Import_ImportOptions_UpdateEntityRequiredWarning'), 'UpdateEntityPreferences'),\r\n showLabel: false,\r\n message: i18n.getString('ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids_Bids'),\r\n }, {\r\n property: 'ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBidStrategies',\r\n control: createErrorOnClickWithDependentFieldClass(i18n.getString('Import_ImportOptions_UpdateEntityRequiredWarning'), 'UpdateEntityPreferences'),\r\n showLabel: false,\r\n message: i18n.getString('ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids_BidStrategies'),\r\n }, {\r\n property: 'DefaultCampaignBudgetBelowMinToAdCenterMinBudget',\r\n message: i18n.getString('Import_ImportOptions_SetMinBudget_Generic'),\r\n control: 'checkbox',\r\n showLabel: false,\r\n }, {\r\n property: 'AdjustmentForCampaignBudgets_EnableAdjustment',\r\n label: '',\r\n message: i18n.getString('AdjustmentForCampaignBudgets_EnableAdjustment'),\r\n }, {\r\n property: 'AdjustmentForCampaignBudgets_AdjustmentValue',\r\n control: createNumericAdjustmentViewClass(i18n, 'AdjustmentForCampaignBudgets_EnableAdjustment'),\r\n message: '',\r\n label: '',\r\n ariaLabel: i18n.getString('AdjustmentForCampaignBudgets_AdjustmentValue'),\r\n selectAriaLabel: i18n.getString('Import_ImportOptions_BudgetsAdjustment_Options'),\r\n validators: {\r\n number: {\r\n message: i18n.getString('RequiredNumber'),\r\n },\r\n range: {\r\n message: i18n.getString('Import_InvalidBudgetAdjustment')\r\n .replace('{0}', minAdjustTextValue)\r\n .replace('{1}', maxAdjust),\r\n },\r\n },\r\n decreaseMaxNum: getBCCDecreaseValueByMarket(market),\r\n decreaseMaxNumMessageTemplate: i18n.getString('AdjustmentForCampaignBudgets_RecommendationMessage'),\r\n logTrace,\r\n }, {\r\n property: 'ImportUpdateEntityPreference_UpdateCampaignBudget',\r\n control: createErrorOnClickWithDependentFieldClass(i18n.getString('Import_ImportOptions_UpdateEntityRequiredWarning'), 'UpdateEntityPreferences'),\r\n showLabel: false,\r\n message: i18n.getString('ImportUpdateEntityPreference_UpdateCampaignBudget_BidSection'),\r\n }, {\r\n property: 'RaiseLowBidsToMinServingBidsForBsc',\r\n message: i18n.getString('Import_ImportOptions_SetMinShoppingCampaignBid'),\r\n control: 'checkbox',\r\n showLabel: false,\r\n }, deviceTargetOptimizationEnabled && {\r\n property: 'AutoDeviceBidOptimization',\r\n message: i18n.getString('Import_ImportOptions_AutoDeviceBidOptimization'),\r\n control: 'checkbox',\r\n showLabel: false,\r\n }]),\r\n },\r\n ];\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function addMessageToFieldConfig(i18n, ...fieldLists) {\r\n _.each(fieldLists, (fieldList) => {\r\n _.each(fieldList, (field) => {\r\n field.message = field.message || i18n.getString(field.property); //eslint-disable-line\r\n });\r\n });\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport { addMessageToFieldConfig } from '../message-mapper';\r\n\r\nexport class NewFields {\r\n constructor({\r\n i18n,\r\n isPageFeedEnabled,\r\n isGoogleImageExtensionImportOptionEnabled,\r\n isGoogleLogoExtensionImportOptionEnabled,\r\n isGoogleAccountNegativeKeywordsImportOptionEnabled,\r\n isGoogleConversionGoalsImportOptionEnabled,\r\n isBrandSuitabilityImportOptionEnabled,\r\n }) {\r\n this.i18n = i18n;\r\n this.isPageFeedEnabled = isPageFeedEnabled;\r\n\r\n this.importItemsFields = _.compact([\r\n {\r\n property: 'ImportNewOption_ImportNewCampaignsAndChildEntities',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewAdGroupsAndChildEntitiesForExistingCampaigns',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewAdsForExistingAdGroups',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewKeywordsForExistingAdGroups',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewNegativeKeywordsForExistingParents',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewNegativeKeywordList',\r\n showLabel: false,\r\n },\r\n isGoogleAccountNegativeKeywordsImportOptionEnabled && {\r\n property: 'ImportNewOption_ImportNewAccountNegativeKeywords',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewKeywordUrls',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewTrackingTemplateAndCustomParams',\r\n message: i18n.getString('Import_ImportOptions_TrackingTemplateCustomParams_FinalURLSuffix'),\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewNegativeSites',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewLabelsAndAssociations',\r\n message: this.i18n.getString('Import_ImportOptions_ImportNewLabelsAndAssociations'),\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewCustomFiltersForShoppingCampaigns',\r\n message: this.i18n.getString('Import_ImportOptions_ImportNewCustomFiltersForShoppingCampaigns'),\r\n showLabel: false,\r\n },\r\n isBrandSuitabilityImportOptionEnabled && {\r\n property: 'ImportNewOption_ImportNewBrandSuitability',\r\n message: this.i18n.getString('Import_ImportOptions_BrandSuitabilityImportOption'),\r\n showLabel: false,\r\n },\r\n ]);\r\n\r\n this.newTargetingFields = _.compact([\r\n {\r\n property: 'ImportNewOption_ImportNewLocationTargets',\r\n label: this.i18n.getString('Import_ImportOptions_LocationTarget'),\r\n showLabel: false,\r\n message: this.i18n.getString('ImportNewOption_ImportNewLocationTargets'),\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewDayTimeTargets',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewDeviceTargets',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewDemographicTargets',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewAudienceTargets',\r\n showLabel: false,\r\n message: this.i18n.getString('Import_ImportOptions_AudienceListsAndTargets'),\r\n },\r\n ]);\r\n\r\n this.newAdExtensionFields = _.compact([\r\n {\r\n property: 'ImportNewOption_ImportNewAppAdExtensions',\r\n label: this.i18n.getString('Import_ImportOptions_AdExtensions'),\r\n showLabel: false,\r\n message: this.i18n.getString('ImportNewOption_ImportNewAppAdExtensions'),\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewCallAdExtensions',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewCalloutAdExtensions',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewLocationAdExtensions',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewPriceAdExtensions',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewPromotionAdExtensions',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewReviewAdExtensions',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewSitelinkAdExtensions',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewStructuredSnippetAdExtensions',\r\n showLabel: false,\r\n },\r\n isGoogleImageExtensionImportOptionEnabled && {\r\n property: 'ImportNewOption_ImportNewImageAdExtensions',\r\n showLabel: false,\r\n },\r\n isGoogleLogoExtensionImportOptionEnabled && {\r\n property: 'ImportNewOption_ImportNewLogoAdExtensions',\r\n showLabel: false,\r\n },\r\n ]);\r\n\r\n this.newFeedFields = _.compact([\r\n this.isPageFeedEnabled && {\r\n property: 'ImportNewOption_ImportNewPageFeeds',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewAdCustomizerFeeds',\r\n showLabel: false,\r\n },\r\n ]);\r\n\r\n this.newConversionFields = isGoogleConversionGoalsImportOptionEnabled\r\n ? [{\r\n property: 'ImportNewOption_ImportNewConversionGoals',\r\n showLabel: false,\r\n }]\r\n : [];\r\n\r\n addMessageToFieldConfig(\r\n this.i18n,\r\n this.importItemsFields,\r\n this.newTargetingFields,\r\n this.newAdExtensionFields,\r\n this.newFeedFields,\r\n this.newConversionFields\r\n );\r\n }\r\n\r\n getImportItemsFields() {\r\n return this.importItemsFields;\r\n }\r\n\r\n getNewTargetingFields() {\r\n return this.newTargetingFields;\r\n }\r\n\r\n getNewAdExtensionFields() {\r\n return this.newAdExtensionFields;\r\n }\r\n\r\n getNewFeedFields() {\r\n return this.newFeedFields;\r\n }\r\n\r\n getNewConversionFields() {\r\n return this.newConversionFields;\r\n }\r\n}\r\n\r\n","import _ from 'underscore';\r\n\r\nimport { addMessageToFieldConfig } from '../message-mapper';\r\n\r\nexport class ExistingFields {\r\n constructor({\r\n i18n,\r\n isPageFeedEnabled,\r\n isGoogleImageExtensionImportOptionEnabled,\r\n isGoogleLogoExtensionImportOptionEnabled,\r\n isGoogleUpdateAdUrlsImportOptionEnabled,\r\n isGoogleUpdateSitelinkUrlsImportOptionEnabled,\r\n isGoogleAdCustomizerAttributesImportOptionEnabled,\r\n isGoogleConversionGoalsImportOptionEnabled,\r\n isBrandSuitabilityImportOptionEnabled,\r\n }) {\r\n this.i18n = i18n;\r\n\r\n this.optionalItemFields = _.compact([\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateExistingNegativeKeywordList',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateNegativeSites',\r\n showLabel: false,\r\n },\r\n isGoogleUpdateAdUrlsImportOptionEnabled && {\r\n property: 'ImportUpdateEntityPreference_UpdateAdUrls',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateKeywordDestinationUrl',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateTrackingTemplateAndCustomParams',\r\n message: i18n.getString('Import_ImportOptions_TrackingTemplateCustomParams_FinalURLSuffix'),\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateLanguageForExistingAdGroups',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateAdGroupNetworkSetting',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'UpdateLabelsAndAssociations',\r\n message: this.i18n.getString('Import_ImportOptions_UpdateLabelsAndAssociations'),\r\n showLabel: false,\r\n },\r\n {\r\n property: 'UpdateCustomFiltersForShoppingCampaigns',\r\n message: this.i18n.getString('Import_ImportOptions_UpdateCustomFiltersForShoppingCampaigns'),\r\n showLabel: false,\r\n },\r\n isBrandSuitabilityImportOptionEnabled && {\r\n property: 'ImportUpdateEntityPreference_UpdateBrandSuitability',\r\n message: this.i18n.getString('Import_ImportOptions_BrandSuitabilityImportOption'),\r\n showLabel: false,\r\n },\r\n ]);\r\n\r\n this.existingTargetingFields = _.compact([\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateLocationTargets',\r\n label: this.i18n.getString('Import_ImportOptions_LocationTarget'),\r\n showLabel: false,\r\n message: this.i18n.getString('ImportUpdateEntityPreference_UpdateLocationTargets'),\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateDayTimeTargets',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateDeviceTargets',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateDemographicTargets',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateAudienceTargets',\r\n showLabel: false,\r\n message: this.i18n.getString('Import_ImportOptions_AudienceListsAndTargets'),\r\n },\r\n ]);\r\n\r\n this.existingAdExtensionFields = _.compact([\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateAppAdExtensions',\r\n label: this.i18n.getString('Import_ImportOptions_AdExtensions'),\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateCallAdExtensions',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateCalloutAdExtensions',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateLocationAdExtensions',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdatePriceAdExtensions',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdatePromotionAdExtensions',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateReviewAdExtensions',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateSitelinkAdExtensions',\r\n showLabel: false,\r\n },\r\n isGoogleUpdateSitelinkUrlsImportOptionEnabled && {\r\n property: 'ImportUpdateEntityPreference_UpdateSitelinkUrls',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateStructuredSnippetAdExtensions',\r\n showLabel: false,\r\n },\r\n isGoogleImageExtensionImportOptionEnabled && {\r\n property: 'ImportUpdateEntityPreference_UpdateImageAdExtensions',\r\n showLabel: false,\r\n },\r\n isGoogleLogoExtensionImportOptionEnabled && {\r\n property: 'ImportUpdateEntityPreference_UpdateLogoAdExtensions',\r\n showLabel: false,\r\n },\r\n ]);\r\n\r\n this.existingFeedFields = _.compact([\r\n isPageFeedEnabled && {\r\n property: 'ImportUpdateEntityPreference_UpdatePageFeeds',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateAdCustomizerFeeds',\r\n showLabel: false,\r\n },\r\n isGoogleAdCustomizerAttributesImportOptionEnabled && {\r\n property: 'ImportUpdateEntityPreference_UpdateAdCustomizerAttributes',\r\n showLabel: false,\r\n },\r\n ]);\r\n\r\n this.statusFields = [\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateStatusForExistingCampaigns',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateStatusForExistingAdGroups',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateStatusForExistingAds',\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateStatusForExistingKeywords',\r\n showLabel: false,\r\n },\r\n ];\r\n\r\n this.existingConversionFields = isGoogleConversionGoalsImportOptionEnabled\r\n ? [{\r\n property: 'ImportUpdateEntityPreference_UpdateConversionGoals',\r\n showLabel: false,\r\n }]\r\n : [];\r\n\r\n addMessageToFieldConfig(\r\n this.i18n,\r\n this.optionalItemFields,\r\n this.existingTargetingFields,\r\n this.existingAdExtensionFields,\r\n this.existingFeedFields,\r\n this.statusFields,\r\n this.existingConversionFields\r\n );\r\n }\r\n\r\n getOptionalItemFields() {\r\n return this.optionalItemFields;\r\n }\r\n\r\n getExistingTargetingFields() {\r\n return this.existingTargetingFields;\r\n }\r\n\r\n getExistingAdExtensionFields() {\r\n return this.existingAdExtensionFields;\r\n }\r\n\r\n getExistingFeedFields() {\r\n return this.existingFeedFields;\r\n }\r\n\r\n getStatusFields() {\r\n return this.statusFields;\r\n }\r\n\r\n getExistingConversionFields() {\r\n return this.existingConversionFields;\r\n }\r\n}\r\n\r\n","/* eslint-disable no-param-reassign */\r\n\r\nimport _ from 'underscore';\r\n\r\nimport { createViewClass, createUpdateEntityView, getTemplateWithUrlFromModel, createOptionsViewClass, createUETSelectorClass } from '../options-section/index';\r\nimport { NewFields } from './advanced/new-fields';\r\nimport { ExistingFields } from './advanced/existing-fields';\r\n\r\nexport class EntityFields {\r\n constructor({\r\n i18n,\r\n model,\r\n flattenedSchemaGenerator,\r\n subFieldsBlacklist,\r\n isPageFeedEnabled,\r\n isMultiAccountImport,\r\n UetTagSelectorView,\r\n hideAdvancedOptions,\r\n isGoogleImageExtensionImportOptionEnabled,\r\n isGoogleLogoExtensionImportOptionEnabled,\r\n isGoogleUpdateAdUrlsImportOptionEnabled,\r\n isGoogleUpdateSitelinkUrlsImportOptionEnabled,\r\n isGoogleAccountNegativeKeywordsImportOptionEnabled,\r\n isGoogleAdCustomizerAttributesImportOptionEnabled,\r\n isGoogleConversionGoalsImportOptionEnabled,\r\n isBrandSuitabilityImportOptionEnabled,\r\n }) {\r\n this.i18n = i18n;\r\n this.model = model;\r\n this.subFieldsBlacklist = subFieldsBlacklist;\r\n this.UetTagSelectorView = UetTagSelectorView;\r\n this.hideAdvancedOptions = hideAdvancedOptions;\r\n\r\n this.isMultiAccountImport = isMultiAccountImport;\r\n\r\n const newItemsSchema = flattenedSchemaGenerator.getFlattenedSchemaWithProperties('ImportNewOption');\r\n const existingItemsSchema = flattenedSchemaGenerator.getFlattenedSchemaWithProperties('ImportUpdateEntityPreference');\r\n _.extend(newItemsSchema.properties, flattenedSchemaGenerator.getFlattenedSchemaWithProperties('ImportNewLabelsAndAssociations').properties);\r\n _.extend(existingItemsSchema.properties, flattenedSchemaGenerator.getFlattenedSchemaWithProperties('UpdateLabelsAndAssociations').properties);\r\n _.extend(newItemsSchema.properties, flattenedSchemaGenerator.getFlattenedSchemaWithProperties('ImportNewCustomFiltersForShoppingCampaigns').properties);\r\n _.extend(existingItemsSchema.properties, flattenedSchemaGenerator.getFlattenedSchemaWithProperties('UpdateCustomFiltersForShoppingCampaigns').properties);\r\n\r\n const newFieldsGenerator = new NewFields({\r\n i18n,\r\n isPageFeedEnabled,\r\n isGoogleImageExtensionImportOptionEnabled,\r\n isGoogleLogoExtensionImportOptionEnabled,\r\n isGoogleAccountNegativeKeywordsImportOptionEnabled,\r\n isGoogleConversionGoalsImportOptionEnabled,\r\n isBrandSuitabilityImportOptionEnabled,\r\n });\r\n const existingFieldsGenerator = new ExistingFields({\r\n i18n,\r\n isPageFeedEnabled,\r\n isGoogleImageExtensionImportOptionEnabled,\r\n isGoogleLogoExtensionImportOptionEnabled,\r\n isGoogleUpdateAdUrlsImportOptionEnabled,\r\n isGoogleUpdateSitelinkUrlsImportOptionEnabled,\r\n isGoogleAdCustomizerAttributesImportOptionEnabled,\r\n isGoogleConversionGoalsImportOptionEnabled,\r\n isBrandSuitabilityImportOptionEnabled,\r\n });\r\n\r\n const newFeedFields = newFieldsGenerator.getNewFeedFields();\r\n const existingFeedFields = existingFieldsGenerator.getExistingFeedFields();\r\n const newConversionFields = newFieldsGenerator.getNewConversionFields();\r\n const existingConversionFields = existingFieldsGenerator.getExistingConversionFields();\r\n\r\n this.newSubSectionsConfig = _.compact([\r\n {\r\n advancedOptionsFields: newFieldsGenerator.getImportItemsFields(),\r\n advancedOptionsSchema: newItemsSchema,\r\n includeAllOption: true,\r\n label: this.i18n.getString('Import_ImportOptions_ItemsSectionHeader'),\r\n },\r\n {\r\n advancedOptionsFields: newFieldsGenerator.getNewTargetingFields(),\r\n advancedOptionsSchema: newItemsSchema,\r\n includeAllOption: true,\r\n label: this.i18n.getString('Import_ImportOptions_LocationTarget'),\r\n },\r\n {\r\n advancedOptionsFields: newFieldsGenerator.getNewAdExtensionFields(),\r\n advancedOptionsSchema: newItemsSchema,\r\n includeAllOption: true,\r\n label: this.i18n.getString('Import_ImportOptions_AdExtensions'),\r\n },\r\n !_.isEmpty(newFeedFields) && {\r\n advancedOptionsFields: newFeedFields,\r\n advancedOptionsSchema: newItemsSchema,\r\n includeAllOption: true,\r\n label: this.i18n.getString('Import_ImportOptions_Feeds'),\r\n },\r\n !_.isEmpty(newConversionFields) && {\r\n advancedOptionsFields: newConversionFields,\r\n advancedOptionsSchema: newItemsSchema,\r\n includeAllOption: true,\r\n label: this.i18n.getString('Import_ImportOptions_ConversionGoals'),\r\n },\r\n ]);\r\n\r\n this.updateSubSectionsConfig = _.compact([\r\n {\r\n advancedOptionsFields: existingFieldsGenerator.getOptionalItemFields(),\r\n advancedOptionsSchema: existingItemsSchema,\r\n includeAllOption: true,\r\n label: this.i18n.getString('BulkEdit_Campaigns_BulkEditTitle'),\r\n },\r\n {\r\n advancedOptionsFields: existingFieldsGenerator.getExistingTargetingFields(),\r\n advancedOptionsSchema: existingItemsSchema,\r\n includeAllOption: true,\r\n label: this.i18n.getString('Import_ImportOptions_LocationTarget'),\r\n },\r\n {\r\n advancedOptionsFields: existingFieldsGenerator.getExistingAdExtensionFields(),\r\n advancedOptionsSchema: existingItemsSchema,\r\n includeAllOption: true,\r\n label: this.i18n.getString('Import_ImportOptions_AdExtensions'),\r\n },\r\n !_.isEmpty(existingFeedFields) && {\r\n advancedOptionsFields: existingFeedFields,\r\n advancedOptionsSchema: existingItemsSchema,\r\n includeAllOption: true,\r\n label: this.i18n.getString('Import_ImportOptions_Feeds'),\r\n },\r\n {\r\n advancedOptionsFields: existingFieldsGenerator.getStatusFields(),\r\n advancedOptionsSchema: existingItemsSchema,\r\n includeAllOption: true,\r\n label: this.i18n.getString('GoogleImport_SelectCampaign_Status'),\r\n },\r\n !_.isEmpty(existingConversionFields) && {\r\n advancedOptionsFields: existingConversionFields,\r\n advancedOptionsSchema: existingItemsSchema,\r\n includeAllOption: true,\r\n label: this.i18n.getString('Import_ImportOptions_ConversionGoals'),\r\n },\r\n ]);\r\n }\r\n\r\n removeFieldsOnBlacklist(subSectionsConfig) {\r\n _.each(subSectionsConfig, (config) => {\r\n config.advancedOptionsFields = _.reject(config.advancedOptionsFields, subField => (\r\n _.contains(this.subFieldsBlacklist, subField.property)\r\n ));\r\n });\r\n\r\n return _.reject(subSectionsConfig, config => _.isEmpty(config.advancedOptionsFields));\r\n }\r\n\r\n getEntitySubFields(helpIds = {}) {\r\n this.newSubSectionsConfig = this.removeFieldsOnBlacklist(this.newSubSectionsConfig);\r\n this.updateSubSectionsConfig = this.removeFieldsOnBlacklist(this.updateSubSectionsConfig);\r\n\r\n return _.compact([{\r\n property: 'ImportAccountUrlOptions',\r\n control: this.model.isCustomerLevel ? createOptionsViewClass({\r\n i18n: this.i18n,\r\n model: this.model,\r\n }) : getTemplateWithUrlFromModel(this.i18n, this.model),\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewEntities',\r\n control: createViewClass({\r\n subSectionsConfig: this.newSubSectionsConfig,\r\n sectionLabel: this.i18n.getString('Import_ImportOptions_ImportNew'),\r\n model: this.model,\r\n i18n: this.i18n,\r\n helpId: helpIds.ImportNewEntities || 'Pop_BA_Import_ItemsNotPreviouslyImported',\r\n hideAdvancedOptions: this.hideAdvancedOptions,\r\n }),\r\n showLabel: false,\r\n },\r\n {\r\n property: 'UpdateEntityPreferences',\r\n control: createUpdateEntityView({\r\n subSectionsConfig: this.updateSubSectionsConfig,\r\n sectionLabel: this.i18n.get('Import_ImportOptions_ExistingItems'),\r\n model: this.model,\r\n i18n: this.i18n,\r\n hideAdvancedOptions: this.hideAdvancedOptions,\r\n helpId: helpIds.UpdateEntityPreferences,\r\n }),\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportDeletedEntities',\r\n message: this.i18n.get('ImportDeletedEntities'),\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportUET',\r\n message: this.i18n.get('Import_ImportOptions_UETTag'),\r\n showLabel: true,\r\n label: this.i18n.get('Import_ImportOptions_UETTag_Label'),\r\n },\r\n {\r\n property: 'AssociatedUETTagId',\r\n showLabel: false,\r\n control: this.UetTagSelectorView ?\r\n createUETSelectorClass(this.UetTagSelectorView, this.isMultiAccountImport ? 'Customer' : 'Account') : undefined,\r\n }]);\r\n }\r\n\r\n getEntityFields(helpIds) {\r\n return [\r\n {\r\n type: 'collapse',\r\n text: this.i18n.getString('Import_ImportOptions_WhatToImport'),\r\n isExpanded: true,\r\n fields: this.getEntitySubFields(helpIds),\r\n },\r\n ];\r\n }\r\n}\r\n","export function createUETSelectorClass(uetClass, scope) {\r\n return class AdvancedOptionsView extends uetClass {\r\n initialize() {\r\n super.initialize({\r\n enabled: true,\r\n showManageTagLink: false,\r\n usePanel: false,\r\n scope,\r\n });\r\n }\r\n };\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport {\r\n BMCTemplateFactory,\r\n OtherSectionFactory,\r\n TextWithCustomValidatorView,\r\n} from '../custom-controls/index';\r\n\r\nexport class OtherFields {\r\n constructor({\r\n isExpanded = false,\r\n i18n,\r\n model,\r\n flattenedSchemaGenerator,\r\n isForVNext,\r\n isDSAMixedModeCampaignEnabled,\r\n isPauseAdGroupIfNoLocationSupportedEnabled = false,\r\n isAudienceTargetForFBImportOptionEnabled = false,\r\n shouldEnableBSCSmartImport,\r\n permissions,\r\n }) {\r\n this.isExpanded = isExpanded;\r\n this.i18n = i18n;\r\n this.model = model;\r\n this.bmcFactory = new BMCTemplateFactory({\r\n i18n,\r\n });\r\n this.otherSectionFactory = new OtherSectionFactory({\r\n i18n,\r\n });\r\n this.isDSAMixedModeCampaignEnabled = isDSAMixedModeCampaignEnabled;\r\n this.isForVNext = isForVNext;\r\n this.isPauseAdGroupIfNoLocationSupportedEnabled = isPauseAdGroupIfNoLocationSupportedEnabled;\r\n this.isAudienceTargetForFBImportOptionEnabled = isAudienceTargetForFBImportOptionEnabled;\r\n this.shouldEnableBSCSmartImport = shouldEnableBSCSmartImport;\r\n this.isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled =\r\n permissions.IsPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled;\r\n\r\n const suffixProp =\r\n flattenedSchemaGenerator.getFlattenedSchemaWithProperties('ImportPrefixAndSuffixForStringProperty_SuffixString');\r\n\r\n this.maxCampaignNameLength = suffixProp.maxLength;\r\n\r\n this.isAdScheduleUseSearcherTimezoneEnabled =\r\n permissions.IsAdScheduleUseSearcherTimezoneEnabled;\r\n }\r\n\r\n getOtherSubFields() {\r\n const hasStore = this.model.AvailableStoreValues.length > 0;\r\n\r\n return _.compact([\r\n {\r\n property: 'ImportAppendDestUrlPreference_UseAppendString',\r\n label: this.i18n.getString('Import_ImportOptions_AdUrlsOptions'),\r\n message: this.i18n.getString('ImportAppendDestUrlPreference_UseAppendString'),\r\n control: this.otherSectionFactory.generateOtherItemTemplateForForm(this.i18n.getString('Import_ImportOptions_EditAdUrls')),\r\n },\r\n {\r\n property: 'ImportAppendDestUrlPreference_AppendStringForDestinationUrl',\r\n control: TextWithCustomValidatorView,\r\n message: '',\r\n label: '',\r\n ariaLabel: this.i18n.getString('ImportAppendDestUrlPreference_UseAppendString'),\r\n visible: {\r\n depends: ['ImportAppendDestUrlPreference_UseAppendString'],\r\n computedBy: _.identity,\r\n },\r\n required: true,\r\n validators: {\r\n required: {\r\n message: this.i18n.getString('Validation_ImportOptions_Append_AdUrls'),\r\n },\r\n },\r\n valueUpdate: 'input',\r\n },\r\n {\r\n property: 'ImportSearchAndReplaceDestUrlPreference_UseSearchAndReplaceString',\r\n label: '',\r\n message: this.i18n.getString('ImportSearchAndReplaceDestUrlPreference_UseSearchAndReplaceString'),\r\n },\r\n {\r\n property: 'ImportSearchAndReplaceDestUrlPreference_SearchStringForDestinationUrl',\r\n control: this.otherSectionFactory.generateFindViewForForm(),\r\n message: '',\r\n label: '',\r\n visible: {\r\n depends: ['ImportSearchAndReplaceDestUrlPreference_UseSearchAndReplaceString'],\r\n computedBy: _.identity,\r\n },\r\n required: true,\r\n validators: {\r\n required: {\r\n message: this.i18n.getString('Validation_ImportOptions_FindReplace_AdUrls'),\r\n },\r\n },\r\n valueUpdate: 'input',\r\n },\r\n {\r\n property: 'ImportSearchAndReplaceDestUrlPreference_ReplaceStringForDestinationUrl',\r\n control: this.otherSectionFactory.generateReplaceViewForForm(),\r\n message: '',\r\n label: '',\r\n visible: {\r\n depends: ['ImportSearchAndReplaceDestUrlPreference_UseSearchAndReplaceString'],\r\n computedBy: _.identity,\r\n },\r\n valueUpdate: 'input',\r\n },\r\n {\r\n property: 'AppendPreferencesForTrackingTemplate_UseAppendString',\r\n label: this.i18n.getString('Import_ImportOptions_TrackingTemplateOptions'),\r\n message: this.i18n.getString('AppendPreferencesForTrackingTemplate_UseAppendString'),\r\n control: this.otherSectionFactory.generateOtherItemTemplateForForm(this.i18n.getString('Import_ImportOptions_EditTrackingTemplate')),\r\n },\r\n {\r\n property: 'AppendPreferencesForTrackingTemplate_AppendStringForTrackingTemplate',\r\n control: TextWithCustomValidatorView,\r\n message: '',\r\n label: '',\r\n ariaLabel: this.i18n.getString('AppendPreferencesForTrackingTemplate_UseAppendString'),\r\n visible: {\r\n depends: ['AppendPreferencesForTrackingTemplate_UseAppendString'],\r\n computedBy: _.identity,\r\n },\r\n required: true,\r\n validators: {\r\n required: {\r\n message: this.i18n.getString('Validation_ImportOptions_Append_TrackingTemplate'),\r\n },\r\n },\r\n valueUpdate: 'input',\r\n },\r\n {\r\n property: 'SearchAndReplacePreferencesForTrackingTemplate_UseSearchAndReplaceString',\r\n label: '',\r\n message: this.i18n.getString('SearchAndReplacePreferencesForTrackingTemplate_UseSearchAndReplaceString'),\r\n },\r\n {\r\n property: 'SearchAndReplacePreferencesForTrackingTemplate_SearchStringForTrackingTemplate',\r\n control: this.otherSectionFactory.generateFindViewForForm(),\r\n message: '',\r\n label: '',\r\n visible: {\r\n depends: ['SearchAndReplacePreferencesForTrackingTemplate_UseSearchAndReplaceString'],\r\n computedBy: _.identity,\r\n },\r\n required: true,\r\n validators: {\r\n required: {\r\n message: this.i18n.getString('Validation_ImportOptions_FindReplace_TrackingTemplate'),\r\n },\r\n },\r\n valueUpdate: 'input',\r\n },\r\n {\r\n property: 'SearchAndReplacePreferencesForTrackingTemplate_ReplaceStringForTrackingTemplate',\r\n control: this.otherSectionFactory.generateReplaceViewForForm(),\r\n message: '',\r\n label: '',\r\n visible: {\r\n depends: ['SearchAndReplacePreferencesForTrackingTemplate_UseSearchAndReplaceString'],\r\n computedBy: _.identity,\r\n },\r\n valueUpdate: 'input',\r\n },\r\n {\r\n property: 'SearchAndReplaceForCustomParameters_EnableSearchAndReplace',\r\n label: '',\r\n message: this.i18n.getString('Import_ImportOptions_CustomParameter_FindAndReplace'),\r\n },\r\n {\r\n property: 'SearchAndReplaceForCustomParameters_SearchString',\r\n control: this.otherSectionFactory.generateFindViewForForm(),\r\n message: '',\r\n label: '',\r\n visible: {\r\n depends: ['SearchAndReplaceForCustomParameters_EnableSearchAndReplace'],\r\n computedBy: _.identity,\r\n },\r\n required: true,\r\n validators: {\r\n required: {\r\n message: this.i18n.getString('Validation_ImportOptions_FindReplace_CustomParameters'),\r\n },\r\n },\r\n valueUpdate: 'input',\r\n },\r\n {\r\n property: 'SearchAndReplaceForCustomParameters_ReplaceString',\r\n control: this.otherSectionFactory.generateReplaceViewForForm(),\r\n message: '',\r\n label: '',\r\n visible: {\r\n depends: ['SearchAndReplaceForCustomParameters_EnableSearchAndReplace'],\r\n computedBy: _.identity,\r\n },\r\n valueUpdate: 'input',\r\n },\r\n {\r\n property: 'SearchAndReplaceForFinalURLSuffix_EnableSearchAndReplace',\r\n label: '',\r\n message: this.i18n.getString('Import_ImportOptions_FinalSuffix_FindAndReplace'),\r\n },\r\n {\r\n property: 'SearchAndReplaceForFinalURLSuffix_SearchString',\r\n control: this.otherSectionFactory.generateFindViewForForm(),\r\n message: '',\r\n label: '',\r\n visible: {\r\n depends: ['SearchAndReplaceForFinalURLSuffix_EnableSearchAndReplace'],\r\n computedBy: _.identity,\r\n },\r\n required: true,\r\n validators: {\r\n required: {\r\n message: this.i18n.getString('Validation_ImportOptions_FindReplace_FinalSuffix'),\r\n },\r\n },\r\n valueUpdate: 'input',\r\n },\r\n {\r\n property: 'SearchAndReplaceForFinalURLSuffix_ReplaceString',\r\n control: this.otherSectionFactory.generateReplaceViewForForm(),\r\n message: '',\r\n label: '',\r\n visible: {\r\n depends: ['SearchAndReplaceForFinalURLSuffix_EnableSearchAndReplace'],\r\n computedBy: _.identity,\r\n },\r\n valueUpdate: 'input',\r\n },\r\n {\r\n property: 'ImportUpdateEntityPreference_UpdateNameForExistingCampaigns',\r\n label: this.i18n.getString('Import_ImportOptions_CampaignOptionsHeader'),\r\n message: this.i18n.getString('ImportUpdateEntityPreference_UpdateNameForExistingCampaigns'),\r\n control: 'checkbox',\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewCampaignsAndMarkAsPaused',\r\n message: this.i18n.getString('ImportNewOption_ImportNewCampaignsAndMarkAsPaused'),\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportNewActiveEntitiesOnly',\r\n message: this.i18n.getString('Import_ImportOptions_ImportNewPausedEntities'),\r\n showLabel: false,\r\n },\r\n this.isAdScheduleUseSearcherTimezoneEnabled && {\r\n property: 'AdScheduleUseSearcherTimezone',\r\n message: this.i18n.getString('Import_ImportOptions_AdScheduleUseSearcherTimezone'),\r\n control: 'checkbox',\r\n showLabel: false,\r\n },\r\n !this.isDSAMixedModeCampaignEnabled ? {\r\n property: 'ImportSearchAndDsaMixedCampaignAsSearchCampaign',\r\n message: this.i18n.getString('Import_ImportOptions_ImportDSAMixedAsSearch'),\r\n showLabel: false,\r\n control: 'checkbox',\r\n } : null,\r\n {\r\n property: 'ImportPrefixAndSuffixForStringProperty_EnablePrefixAndSuffix',\r\n message: this.i18n.getString('Import_ImportOptions_CampaignName_InsertAtEnd'),\r\n showLabel: false,\r\n control: this.otherSectionFactory.generateOtherItemTemplateForForm(''),\r\n },\r\n {\r\n property: 'ImportPrefixAndSuffixForStringProperty_SuffixString',\r\n control: TextWithCustomValidatorView,\r\n message: '',\r\n label: '',\r\n ariaLabel: this.i18n.getString('Import_ImportOptions_CampaignName_InsertAtEnd'),\r\n visible: {\r\n depends: ['ImportPrefixAndSuffixForStringProperty_EnablePrefixAndSuffix'],\r\n computedBy: _.identity,\r\n },\r\n required: true,\r\n validators: {\r\n required: {\r\n message: this.i18n.getString('Validation_ImportOptions_Append_CampaignName'),\r\n },\r\n maxLength: {\r\n message: this.i18n.getString('Validation_String_Max_Length').replace('{{maxlength}}', this.maxCampaignNameLength),\r\n blockInput: true,\r\n },\r\n },\r\n valueUpdate: 'input',\r\n },\r\n {\r\n property: 'ImportSearchAndReplaceForStringProperty_EnableSearchAndReplace',\r\n label: '',\r\n message: this.i18n.getString('Import_ImportOptions_CampaignName_FindAndReplace'),\r\n },\r\n {\r\n property: 'ImportSearchAndReplaceForStringProperty_SearchString',\r\n control: this.otherSectionFactory.generateFindViewForForm(),\r\n message: '',\r\n label: '',\r\n visible: {\r\n depends: ['ImportSearchAndReplaceForStringProperty_EnableSearchAndReplace'],\r\n computedBy: _.identity,\r\n },\r\n required: true,\r\n validators: {\r\n required: {\r\n message: this.i18n.getString('Validation_ImportOptions_FindReplace_CampaignName'),\r\n },\r\n },\r\n valueUpdate: 'input',\r\n },\r\n {\r\n property: 'ImportSearchAndReplaceForStringProperty_ReplaceString',\r\n control: this.otherSectionFactory.generateReplaceViewForForm(),\r\n message: '',\r\n label: '',\r\n visible: {\r\n depends: ['ImportSearchAndReplaceForStringProperty_EnableSearchAndReplace'],\r\n computedBy: _.identity,\r\n },\r\n validators: {\r\n maxLength: {\r\n message: this.i18n.getString('Validation_String_Max_Length').replace('{{maxlength}}', this.maxCampaignNameLength),\r\n blockInput: true,\r\n },\r\n },\r\n valueUpdate: 'input',\r\n },\r\n {\r\n property: 'RenameCampaignNameWithSuffix',\r\n message: this.i18n.getString('Import_ImportOptions_RenameCampaignNameWithSuffixOption'),\r\n showLabel: false,\r\n },\r\n {\r\n property: 'ImportNewOption_ImportAllAdUnderAnAdGroup',\r\n label: this.i18n.getString('Import_ImportOptions_AdOptionsHeader'),\r\n message: this.i18n.getString('Import_ImportOptions_ImportNewPausedAds'),\r\n },\r\n {\r\n property: 'PauseParentIfNoLocationSupported',\r\n label: this.i18n.getString('Import_ImportOptions_LocationTarget'),\r\n message: this.i18n.getString('Import_ImportOptions_PauseParentIfNoLocationSupported'),\r\n control: 'checkbox',\r\n },\r\n this.isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled && {\r\n property: 'PauseAIMAdGroupIfAllAudienceCriterionNotImported',\r\n message: this.i18n.getString('Import_ImportOptions_PauseAIMAdGroupIfAllAudienceCriterionNotImported'),\r\n showLabel: false,\r\n },\r\n {\r\n property: 'EnableParentLocationMapping',\r\n message: this.i18n.getString('Import_ImportOptions_EnableParentLocationMapping'),\r\n showLabel: false,\r\n },\r\n !this.shouldEnableBSCSmartImport && {\r\n property: 'StoreIdForImportedProductAdExtensionsFlag',\r\n label: this.i18n.getString('Import_ImportOptions_ShoppingCampaignOptions'),\r\n message: this.i18n.getString('StoreIdForImportedProductAdExtensionsFlag'),\r\n control: this.bmcFactory.generateBmcCheckboxTemplateFunctionForForm(hasStore),\r\n },\r\n !this.shouldEnableBSCSmartImport && {\r\n property: 'StoreIdForImportedProductAdExtensions',\r\n label: '',\r\n message: '',\r\n ariaLabel: this.i18n.getString('StoreIdForImportedProductAdExtensionsFlag'),\r\n control: this.bmcFactory.generateDropdownViewForForm(this.isForVNext),\r\n values: this.model.AvailableStoreValues,\r\n valueMessages: this.model.AvailableStoreValueMessages,\r\n },\r\n this.isPauseAdGroupIfNoLocationSupportedEnabled && {\r\n property: 'PauseAdGroupIfNoLocationSupported',\r\n message: this.i18n.getString('Import_ImportOptions_PauseAdGroupIfNoLocationSupported'),\r\n showLabel: false,\r\n },\r\n this.isAudienceTargetForFBImportOptionEnabled && {\r\n property: 'NoAudienceTargetForFBImportOption',\r\n message: this.i18n.getString('Import_ImportOptions_NoAudienceTargetForFBImportOption'),\r\n showLabel: false,\r\n },\r\n ]);\r\n }\r\n\r\n getOtherFields() {\r\n return [\r\n {\r\n type: 'collapse',\r\n text: this.i18n.getString('Import_ImportOptions_OtherOptionsHeader'),\r\n isExpanded: this.isExpanded,\r\n fields: this.getOtherSubFields(),\r\n className: 'other-options-collapse scheduling-form',\r\n },\r\n ];\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport { getBidFields } from './bid-fields';\r\nimport { EntityFields } from './entity-fields';\r\nimport { OtherFields } from './other-fields';\r\n\r\nfunction removeFromBlacklist(fields, subFieldsBlacklist) {\r\n const prunedFields = fields;\r\n\r\n _.each(prunedFields, (field) => {\r\n field.fields = _.reject(field.fields, (subField) => { //eslint-disable-line\r\n return _.contains(subFieldsBlacklist, subField.property);\r\n });\r\n });\r\n\r\n return prunedFields;\r\n}\r\n\r\nexport function getImportOptionFields({\r\n i18n,\r\n logTrace,\r\n model,\r\n subFieldsBlacklist,\r\n flattenedSchemaGenerator,\r\n config,\r\n UetTagSelectorView,\r\n minAdjust,\r\n maxAdjust,\r\n isMultiAccountImport,\r\n isForVNext,\r\n hideEntityAdvancedOptions,\r\n otherFieldsExpanded = false,\r\n helpIds,\r\n isPauseAdGroupIfNoLocationSupportedEnabled,\r\n isAudienceTargetForFBImportOptionEnabled,\r\n shouldEnableBSCSmartImport = false,\r\n shouldShowCurrencyConvertor = false,\r\n importAccountCurrencyTitle,\r\n isGoogleLogoExtensionImportOptionEnabled = false,\r\n isGoogleUpdateAdUrlsImportOptionEnabled = false,\r\n isGoogleUpdateSitelinkUrlsImportOptionEnabled = false,\r\n isGoogleAccountNegativeKeywordsImportOptionEnabled = false,\r\n isGoogleAdCustomizerAttributesImportOptionEnabled = false,\r\n isGoogleConversionGoalsImportOptionEnabled = false,\r\n isBrandSuitabilityImportOptionEnabled = false,\r\n}) {\r\n const market = config.get('CurrentUser').Market;\r\n const permissions = config.get('Permissions') || {};\r\n const isPageFeedEnabled = permissions.IsPageFeedImportOptionEnabled;\r\n const isDSAMixedModeCampaignEnabled = permissions.IsDSAMixedModeCampaignEnabled;\r\n // eslint-disable-next-line max-len\r\n const isGoogleImageExtensionImportOptionEnabled = permissions.IsGoogleImageExtensionImportOptionEnabled;\r\n\r\n const entityFieldsGenerator = new EntityFields({\r\n i18n,\r\n model,\r\n flattenedSchemaGenerator,\r\n subFieldsBlacklist,\r\n isPageFeedEnabled,\r\n isMultiAccountImport,\r\n UetTagSelectorView,\r\n hideAdvancedOptions: hideEntityAdvancedOptions,\r\n isGoogleImageExtensionImportOptionEnabled,\r\n isGoogleLogoExtensionImportOptionEnabled,\r\n isGoogleUpdateAdUrlsImportOptionEnabled,\r\n isGoogleUpdateSitelinkUrlsImportOptionEnabled,\r\n isGoogleAccountNegativeKeywordsImportOptionEnabled,\r\n isGoogleAdCustomizerAttributesImportOptionEnabled,\r\n isGoogleConversionGoalsImportOptionEnabled,\r\n isBrandSuitabilityImportOptionEnabled,\r\n });\r\n const otherFieldsGenerator = new OtherFields({\r\n i18n,\r\n model,\r\n flattenedSchemaGenerator,\r\n isDSAMixedModeCampaignEnabled,\r\n isForVNext,\r\n isExpanded: otherFieldsExpanded,\r\n isPauseAdGroupIfNoLocationSupportedEnabled,\r\n isAudienceTargetForFBImportOptionEnabled,\r\n shouldEnableBSCSmartImport,\r\n permissions,\r\n });\r\n\r\n const bidFields = removeFromBlacklist(\r\n getBidFields({\r\n i18n,\r\n logTrace,\r\n model,\r\n permissions,\r\n market,\r\n minAdjust,\r\n maxAdjust,\r\n shouldShowCurrencyConvertor,\r\n importAccountCurrencyTitle,\r\n }),\r\n subFieldsBlacklist\r\n );\r\n const entityFields =\r\n removeFromBlacklist(entityFieldsGenerator.getEntityFields(helpIds), subFieldsBlacklist);\r\n const otherFields =\r\n removeFromBlacklist(otherFieldsGenerator.getOtherFields(), subFieldsBlacklist);\r\n\r\n return [].concat(entityFields, bidFields, otherFields);\r\n}\r\n","import _ from 'underscore';\r\n\r\nfunction enumToProperties(name, enums) {\r\n const properties = {};\r\n\r\n _.each(enums, (val) => {\r\n properties[`${name}_${val}`] = {\r\n type: 'boolean',\r\n };\r\n });\r\n\r\n return properties;\r\n}\r\n\r\nfunction flattenSchemaProperties(...schemas) {\r\n const properties = {};\r\n\r\n _.each(schemas, (schema) => {\r\n _.each(schema.properties, (property, key) => {\r\n properties[`${schema.name}_${key}`] = property;\r\n });\r\n });\r\n\r\n return properties;\r\n}\r\n\r\nexport class FlattenedSchemaGenerator {\r\n constructor({ deps }) {\r\n this.s$ImportUserPreferences = deps.schema.ImportUserPreferences;\r\n\r\n const importNewOptions = this.s$ImportUserPreferences.properties.ImportNewOptions.enum;\r\n const importUpdateOptions =\r\n deps.schema.ImportUpdateEntityPreference.properties.ImportUpdateOptions.enum;\r\n\r\n const adjustBids = _.clone(deps.schema.ImportAdjustmentForNumericProperty);\r\n adjustBids.name = 'AdjustmentForBids';\r\n const adjustBudgets = _.clone(deps.schema.ImportAdjustmentForNumericProperty);\r\n adjustBudgets.name = 'AdjustmentForCampaignBudgets';\r\n\r\n const properties = _.extend(\r\n {}, flattenSchemaProperties(\r\n deps.schema.LandingPageAppendPreference,\r\n deps.schema.LandingPageReplacePreference,\r\n deps.schema.AppendTrackingTemplatePreference,\r\n deps.schema.SearchAndReplacePreferencesForTrackingTemplate,\r\n deps.schema.ImportPrefixAndSuffixForStringProperty,\r\n deps.schema.ImportSearchAndReplaceForStringProperty,\r\n deps.schema.SearchAndReplaceForCustomParameters,\r\n deps.schema.SearchAndReplaceForFinalURLSuffix,\r\n adjustBids,\r\n adjustBudgets\r\n ),\r\n enumToProperties('ImportNewOption', importNewOptions),\r\n enumToProperties('ImportUpdateEntityPreference', importUpdateOptions),\r\n {\r\n StoreIdForImportedProductAdExtensionsFlag: {\r\n type: 'boolean',\r\n },\r\n ImportAccountUrlOptions: {\r\n type: 'boolean',\r\n },\r\n ImportNewLabelsAndAssociations: {\r\n type: 'boolean',\r\n },\r\n UpdateLabelsAndAssociations: {\r\n type: 'boolean',\r\n },\r\n ImportNewCustomFiltersForShoppingCampaigns: {\r\n type: 'boolean',\r\n },\r\n UpdateCustomFiltersForShoppingCampaigns: {\r\n type: 'boolean',\r\n },\r\n ImportNewOption_ImportNewBrandSuitability: {\r\n type: 'boolean',\r\n nullable: true,\r\n },\r\n ImportUpdateEntityPreference_UpdateBrandSuitability: {\r\n type: 'boolean',\r\n nullable: true,\r\n },\r\n TrackingTemplateValue: {\r\n type: 'string',\r\n },\r\n CustomParameterValue: {\r\n type: 'string',\r\n },\r\n FinalURLSuffixValue: {\r\n type: 'string',\r\n },\r\n FinalUrlSuffixValue: {\r\n type: 'string',\r\n },\r\n ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBidStrategies: {\r\n type: 'boolean',\r\n },\r\n ImportUET: {\r\n type: 'boolean',\r\n },\r\n PauseAdGroupIfNoLocationSupported: {\r\n type: 'boolean',\r\n },\r\n RenameCampaignNameWithSuffix: {\r\n type: 'boolean',\r\n },\r\n NoAudienceTargetForFBImportOption: {\r\n type: 'boolean',\r\n },\r\n EnableAutoCurrencyConversion: {\r\n type: 'boolean',\r\n },\r\n PauseAIMAdGroupIfAllAudienceCriterionNotImported: {\r\n type: 'boolean',\r\n },\r\n ImportNewOption_ImportNewImageAdExtensions: {\r\n type: 'boolean',\r\n nullable: true,\r\n },\r\n ImportUpdateEntityPreference_UpdateImageAdExtensions: {\r\n type: 'boolean',\r\n nullable: true,\r\n },\r\n ImportNewOption_ImportNewLogoAdExtensions: {\r\n type: 'boolean',\r\n nullable: true,\r\n },\r\n ImportUpdateEntityPreference_UpdateLogoAdExtensions: {\r\n type: 'boolean',\r\n nullable: true,\r\n },\r\n ImportUpdateEntityPreference_UpdateAdUrls: {\r\n type: 'boolean',\r\n nullable: true,\r\n },\r\n ImportUpdateEntityPreference_UpdateSitelinkUrls: {\r\n type: 'boolean',\r\n nullable: true,\r\n },\r\n ImportNewOption_ImportNewAccountNegativeKeywords: {\r\n type: 'boolean',\r\n nullable: true,\r\n },\r\n ImportUpdateEntityPreference_UpdateAdCustomizerAttributes: {\r\n type: 'boolean',\r\n nullable: true,\r\n },\r\n ImportNewOption_ImportNewConversionGoals: {\r\n type: 'boolean',\r\n nullable: true,\r\n },\r\n ImportUpdateEntityPreference_UpdateConversionGoals: {\r\n type: 'boolean',\r\n nullable: true,\r\n },\r\n }\r\n );\r\n\r\n this.flattenedSchema = this.s$ImportUserPreferences;\r\n\r\n _.extend(this.flattenedSchema.properties, properties);\r\n\r\n this.flattenedSchema.required = [\r\n 'ImportAppendDestUrlPreference_AppendStringForDestinationUrl',\r\n 'ImportSearchAndReplaceDestUrlPreference_SearchStringForDestinationUrl',\r\n 'AppendPreferencesForTrackingTemplate_AppendStringForTrackingTemplate',\r\n 'SearchAndReplacePreferencesForTrackingTemplate_SearchStringForTrackingTemplate',\r\n 'ImportPrefixAndSuffixForStringProperty_SuffixString',\r\n 'ImportSearchAndReplaceForStringProperty_SearchString',\r\n 'SearchAndReplaceForCustomParameters_SearchString',\r\n 'SearchAndReplaceForFinalURLSuffix_SearchString',\r\n ];\r\n }\r\n\r\n getFlattenedSchemaWithProperties(...propertyNames) {\r\n const schema = _.clone(this.flattenedSchema);\r\n\r\n schema.properties = _.pick(schema.properties, (value, key) => {\r\n const flag = !!_.find(propertyNames, propertyName => key.indexOf(propertyName) !== -1);\r\n\r\n return flag && key.indexOf('_None') === -1;\r\n });\r\n\r\n return schema;\r\n }\r\n\r\n getCompleteFlattenedSchema() {\r\n return _.clone(this.flattenedSchema);\r\n }\r\n}\r\n","/* eslint-disable new-cap */\r\n\r\nimport Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Promise from 'bluebird';\r\nimport { SimpleForm } from '@bingads-webui/simple-form';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { ErrorMessageView } from './error-message-view';\r\nimport { getImportOptionFields as getDefaultImportOptionFields } from './fields-config/index';\r\nimport {\r\n parseEditScheduledImportOptions,\r\n parseExistingImportOptions,\r\n parseJsonFormatImportOptions,\r\n parseModelToImportUserPreference,\r\n pickModelPropertiesByFields,\r\n} from './parsers/index';\r\nimport { FlattenedSchemaGenerator } from './flattened-schemas';\r\n\r\nimport helpButtonTemplate from './help-button-template.pug';\r\nimport importOptionsFormTemplate from './import-options-form-template.pug';\r\n\r\nconst UETTagStatus = {\r\n Active: 1,\r\n Unverified: 2,\r\n Inactive: 3,\r\n};\r\n\r\nexport class ImportOptionsForm extends Backbone.View {\r\n initialize({\r\n deps,\r\n logTrace,\r\n previousImportOptions, // options from api call of getGoogleImportUserPreferences\r\n editTaskItemOptions, // deprecate with pilot isGetUserPreferenceJsonFormatEnabled // TODO: remove\r\n jsonFormatEditTaskItemOptions, // create/edit options of google wizard\r\n jsonFormatImportOptions, // used for schedule page log grid\r\n includePausedCampaigns,\r\n toggleContinueButton,\r\n getImportOptionFields,\r\n otherFieldsExpanded = false,\r\n isPauseAdGroupIfNoLocationSupportedEnabled = false,\r\n isAudienceTargetForFBImportOptionEnabled = false,\r\n isGoogleImport = false,\r\n shouldShowCurrencyConvertor = false,\r\n accountCurrencyMap = null,\r\n importAccountCurrencyTitle,\r\n }) {\r\n this.deps = deps;\r\n this.logTrace = logTrace;\r\n this.flattenedSchemaGenerator = new FlattenedSchemaGenerator({ deps });\r\n this.i18n = deps.i18n;\r\n this.subFieldsBlacklist = deps.subFieldsBlacklist;\r\n this.toggleContinueButton = toggleContinueButton;\r\n this.includePausedCampaigns = includePausedCampaigns;\r\n this.getImportOptionFields = getImportOptionFields || getDefaultImportOptionFields;\r\n // This covers single-account and multi-account Google Import in New UI, Old UI, and MAE\r\n this.shouldEnableBSCSmartImport = ImportOptionsForm.isBSCSmartImportEnabled(deps) &&\r\n isGoogleImport;\r\n this.isAudienceTargetForFBImportOptionEnabled = isAudienceTargetForFBImportOptionEnabled;\r\n this.isGoogleLogoExtensionImportOptionEnabled = ImportOptionsForm.isGoogleLogoExtensionImportOptionEnabled(deps) && isGoogleImport;\r\n this.isGoogleUpdateAdUrlsImportOptionEnabled = ImportOptionsForm.isGoogleUpdateAdUrlsImportOptionEnabled(deps);\r\n this.isGoogleUpdateSitelinkUrlsImportOptionEnabled = ImportOptionsForm.isGoogleUpdateSitelinkUrlsImportOptionEnabled(deps);\r\n this.isGoogleAccountNegativeKeywordsImportOptionEnabled = ImportOptionsForm.isGoogleAccountNegativeKeywordsImportOptionEnabled(deps) && isGoogleImport;\r\n this.isGoogleAdCustomizerAttributesImportOptionEnabled = ImportOptionsForm.isGoogleAdCustomizerAttributesImportOptionEnabled(deps) && isGoogleImport;\r\n this.isGoogleConversionGoalsImportOptionEnabled = ImportOptionsForm.isGoogleConversionGoalsImportOptionEnabled(deps) && isGoogleImport;\r\n this.isBrandSuitabilityImportOptionEnabled = ImportOptionsForm.isBrandSuitabilityImportOptionEnabled(deps) && isGoogleImport;\r\n const pilotAndStoreList = {\r\n isMultiAccountImport: deps.isMultiAccountImport,\r\n isPageFeedEnabled: ImportOptionsForm.isPageFeedEnabled(deps),\r\n storeList: deps.storeList,\r\n isDeviceTargetOptimizationEnabled:\r\n ImportOptionsForm.isDeviceTargetOptimizationEnabled(deps),\r\n isAdScheduleUseSearcherTimezoneEnabled:\r\n ImportOptionsForm.isAdScheduleUseSearcherTimezoneEnabled(deps),\r\n isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled:\r\n ImportOptionsForm\r\n .isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled(deps),\r\n isGoogleImageExtensionImportOptionEnabled:\r\n ImportOptionsForm\r\n .isGoogleImageExtensionImportOptionEnabled(deps),\r\n isAudienceTargetForFBImportOptionEnabled,\r\n isGoogleLogoExtensionImportOptionEnabled: this.isGoogleLogoExtensionImportOptionEnabled,\r\n isGoogleUpdateAdUrlsImportOptionEnabled: this.isGoogleUpdateAdUrlsImportOptionEnabled,\r\n isGoogleUpdateSitelinkUrlsImportOptionEnabled: this.isGoogleUpdateSitelinkUrlsImportOptionEnabled,\r\n isGoogleAccountNegativeKeywordsImportOptionEnabled: this.isGoogleAccountNegativeKeywordsImportOptionEnabled,\r\n isGoogleAdCustomizerAttributesImportOptionEnabled: this.isGoogleAdCustomizerAttributesImportOptionEnabled,\r\n isGoogleConversionGoalsImportOptionEnabled: this.isGoogleConversionGoalsImportOptionEnabled,\r\n isBrandSuitabilityImportOptionEnabled: this.isBrandSuitabilityImportOptionEnabled,\r\n };\r\n let completeModel;\r\n\r\n if (jsonFormatImportOptions) {\r\n completeModel = parseJsonFormatImportOptions(_.extend(\r\n {},\r\n {\r\n options: _.extend(\r\n {\r\n UserPreferenceTrackingTemplate: jsonFormatImportOptions.AdWordsAccountTrackingTemplate\r\n || jsonFormatImportOptions.AdWordsAccountFinalUrlSuffix,\r\n },\r\n jsonFormatImportOptions\r\n ),\r\n },\r\n pilotAndStoreList\r\n ));\r\n } else {\r\n completeModel = parseJsonFormatImportOptions(_.extend(\r\n {},\r\n { options: previousImportOptions },\r\n pilotAndStoreList\r\n ));\r\n\r\n if (includePausedCampaigns) {\r\n completeModel.ImportNewOption_ImportNewActiveEntitiesOnly = true;\r\n }\r\n\r\n const urlOptions = {\r\n TrackingTemplateValue: completeModel.TrackingTemplateValue,\r\n FinalUrlSuffixValue: completeModel.FinalUrlSuffixValue,\r\n };\r\n // eslint-disable-next-line max-len\r\n if (jsonFormatEditTaskItemOptions) {\r\n completeModel = _.extend(\r\n {},\r\n completeModel,\r\n parseJsonFormatImportOptions(_.extend(\r\n {},\r\n { options: jsonFormatEditTaskItemOptions },\r\n pilotAndStoreList\r\n )),\r\n urlOptions\r\n );\r\n } else if (editTaskItemOptions) {\r\n completeModel = _.extend(\r\n {},\r\n completeModel,\r\n parseEditScheduledImportOptions({\r\n options: editTaskItemOptions,\r\n isMultiAccountImport: deps.isMultiAccountImport,\r\n isPageFeedEnabled: ImportOptionsForm.isPageFeedEnabled(deps),\r\n isDeviceTargetOptimizationEnabled:\r\n ImportOptionsForm.isDeviceTargetOptimizationEnabled(deps),\r\n isAdScheduleUseSearcherTimezoneEnabled:\r\n ImportOptionsForm.isAdScheduleUseSearcherTimezoneEnabled(deps),\r\n isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled:\r\n ImportOptionsForm\r\n .isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled(deps),\r\n isGoogleImageExtensionImportOptionEnabled:\r\n ImportOptionsForm\r\n .isGoogleImageExtensionImportOptionEnabled(deps),\r\n isAudienceTargetForFBImportOptionEnabled,\r\n isGoogleLogoExtensionImportOptionEnabled: this.isGoogleLogoExtensionImportOptionEnabled,\r\n isGoogleUpdateAdUrlsImportOptionEnabled: this.isGoogleUpdateAdUrlsImportOptionEnabled,\r\n isGoogleUpdateSitelinkUrlsImportOptionEnabled: this.isGoogleUpdateSitelinkUrlsImportOptionEnabled,\r\n isGoogleAccountNegativeKeywordsImportOptionEnabled: this.isGoogleAccountNegativeKeywordsImportOptionEnabled,\r\n isGoogleAdCustomizerAttributesImportOptionEnabled: this.isGoogleAdCustomizerAttributesImportOptionEnabled,\r\n isGoogleConversionGoalsImportOptionEnabled: this.isGoogleConversionGoalsImportOptionEnabled,\r\n isBrandSuitabilityImportOptionEnabled: this.isBrandSuitabilityImportOptionEnabled,\r\n }),\r\n urlOptions\r\n );\r\n // eslint-disable-next-line max-len\r\n }\r\n }\r\n\r\n // isCustomerLevel = true if it is customer level's settings\r\n if (deps.isCustomerLevel) {\r\n completeModel.isCustomerLevel = true;\r\n }\r\n // hide the detail view if it is customer level's setting but log grid.\r\n if (deps.isHideUrlDetailView) {\r\n completeModel.isHideUrlDetailView = true;\r\n }\r\n // show currency converter for single account smart import\r\n // TODO: show currency converter for multi account smart import\r\n if (shouldShowCurrencyConvertor) {\r\n completeModel.AccountCurrencyMap = accountCurrencyMap;\r\n if (_.isUndefined(completeModel.EnableAutoCurrencyConversion) ||\r\n _.isNull(completeModel.EnableAutoCurrencyConversion)) {\r\n completeModel.EnableAutoCurrencyConversion = true;\r\n }\r\n if (this.logTrace) {\r\n this.logTrace('Show currency convertor in import options step');\r\n }\r\n }\r\n\r\n const fields = this.getImportOptionFields({\r\n i18n: this.i18n,\r\n logTrace: this.logTrace,\r\n model: completeModel,\r\n subFieldsBlacklist: this.subFieldsBlacklist,\r\n flattenedSchemaGenerator: this.flattenedSchemaGenerator,\r\n config: this.deps.config,\r\n UetTagSelectorView: this.deps.UetTagSelectorView,\r\n minAdjust: deps.schema.ImportAdjustmentForNumericProperty.properties.AdjustmentValue.minimum,\r\n maxAdjust: deps.schema.ImportAdjustmentForNumericProperty.properties.AdjustmentValue.maximum,\r\n isMultiAccountImport: deps.isMultiAccountImport,\r\n isForVNext: deps.isForVNext,\r\n otherFieldsExpanded: otherFieldsExpanded || isAudienceTargetForFBImportOptionEnabled,\r\n shouldEnableBSCSmartImport: this.shouldEnableBSCSmartImport,\r\n shouldShowCurrencyConvertor,\r\n importAccountCurrencyTitle,\r\n isGoogleLogoExtensionImportOptionEnabled: this.isGoogleLogoExtensionImportOptionEnabled,\r\n isGoogleUpdateAdUrlsImportOptionEnabled: this.isGoogleUpdateAdUrlsImportOptionEnabled,\r\n isGoogleUpdateSitelinkUrlsImportOptionEnabled: this.isGoogleUpdateSitelinkUrlsImportOptionEnabled,\r\n isGoogleAccountNegativeKeywordsImportOptionEnabled: this.isGoogleAccountNegativeKeywordsImportOptionEnabled,\r\n isGoogleAdCustomizerAttributesImportOptionEnabled: this.isGoogleAdCustomizerAttributesImportOptionEnabled,\r\n isGoogleConversionGoalsImportOptionEnabled: this.isGoogleConversionGoalsImportOptionEnabled,\r\n isBrandSuitabilityImportOptionEnabled: this.isBrandSuitabilityImportOptionEnabled,\r\n });\r\n\r\n const fieldsToPick = _.flatten(_.map(fields, field => field.fields));\r\n\r\n if (!_.contains(this.subFieldsBlacklist, 'ImportAccountUrlOptions')) {\r\n fieldsToPick.push({\r\n property: 'TrackingTemplateValue',\r\n });\r\n fieldsToPick.push({\r\n property: 'FinalUrlSuffixValue',\r\n });\r\n }\r\n\r\n if (isAudienceTargetForFBImportOptionEnabled) {\r\n fieldsToPick.push({\r\n property: 'ImportNewAudienceTargets',\r\n });\r\n fieldsToPick.push({\r\n property: 'UpdateAudienceTargets',\r\n });\r\n }\r\n\r\n const model = pickModelPropertiesByFields(completeModel, fieldsToPick);\r\n const properties = [\r\n 'ImportAccountUrlOptions',\r\n 'TrackingTemplateValue',\r\n 'ImportNewEntities',\r\n 'UpdateEntityPreferences',\r\n 'ImportDeletedEntities',\r\n 'DefaultBidsBelowMinToAdCenterMinBid',\r\n 'DefaultCampaignBudgetBelowMinToAdCenterMinBudget',\r\n 'ImportAppendDestUrlPreference',\r\n 'ImportSearchAndReplaceDestUrlPreference',\r\n 'AppendPreferencesForTrackingTemplate',\r\n 'SearchAndReplacePreferencesForTrackingTemplate',\r\n 'ImportUpdateEntityPreference_UpdateNameForExistingCampaigns',\r\n 'ImportNewOption_ImportNewCampaignsAndMarkAsPaused',\r\n 'ImportNewOption_ImportNewActiveEntitiesOnly',\r\n 'StoreIdForImportedProductAdExtensionsFlag',\r\n 'StoreIdForImportedProductAdExtensions',\r\n 'ImportPrefixAndSuffixForStringProperty',\r\n 'ImportSearchAndReplaceForStringProperty',\r\n 'SearchAndReplaceForCustomParameters',\r\n 'SearchAndReplaceForFinalURLSuffix',\r\n ];\r\n\r\n properties.push('FinalUrlSuffixValue');\r\n properties.push('AdjustmentForCampaignBudgets', 'AdjustmentForBids', 'PauseParentIfNoLocationSupported', 'EnableParentLocationMapping');\r\n\r\n properties.push('RaiseLowBidsToMinServingBidsForBsc');\r\n properties.push('AutoDeviceBidOptimization');\r\n properties.push('AdScheduleUseSearcherTimezone');\r\n properties.push('ImportSearchAndDsaMixedCampaignAsSearchCampaign');\r\n properties.push('ImportNewOption_ImportAllAdUnderAnAdGroup');\r\n properties.push('UpdateLabelsAndAssociations', 'ImportNewLabelsAndAssociations');\r\n properties.push('ImportNewCustomFiltersForShoppingCampaigns', 'UpdateCustomFiltersForShoppingCampaigns');\r\n properties.push('ImportUpdateEntityPreference_UpdateCampaignBudget', 'ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids');\r\n properties.push('ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBidStrategies');\r\n\r\n properties.push('ImportUET');\r\n properties.push('AssociatedUETTagId');\r\n properties.push('PauseAIMAdGroupIfAllAudienceCriterionNotImported');\r\n properties.push('ImportNewOption_ImportNewImageAdExtensions', 'ImportUpdateEntityPreference_UpdateImageAdExtensions');\r\n\r\n if (isPauseAdGroupIfNoLocationSupportedEnabled) {\r\n properties.push('PauseAdGroupIfNoLocationSupported');\r\n }\r\n\r\n if (isAudienceTargetForFBImportOptionEnabled) {\r\n properties.push('NoAudienceTargetForFBImportOption');\r\n }\r\n\r\n properties.push('RenameCampaignNameWithSuffix');\r\n\r\n if (shouldShowCurrencyConvertor) {\r\n properties.push('EnableAutoCurrencyConversion');\r\n }\r\n\r\n if (this.isGoogleLogoExtensionImportOptionEnabled) {\r\n properties.push('ImportNewOption_ImportNewLogoAdExtensions', 'ImportUpdateEntityPreference_UpdateLogoAdExtensions');\r\n }\r\n\r\n if (this.isGoogleUpdateAdUrlsImportOptionEnabled) {\r\n properties.push('ImportUpdateEntityPreference_UpdateAdUrls');\r\n }\r\n\r\n if (this.isGoogleUpdateSitelinkUrlsImportOptionEnabled) {\r\n properties.push('ImportUpdateEntityPreference_UpdateSitelinkUrls');\r\n }\r\n\r\n if (this.isGoogleAccountNegativeKeywordsImportOptionEnabled) {\r\n properties.push('ImportNewOption_ImportNewAccountNegativeKeywords');\r\n }\r\n\r\n if (this.isGoogleAdCustomizerAttributesImportOptionEnabled) {\r\n properties.push('ImportUpdateEntityPreference_UpdateAdCustomizerAttributes');\r\n }\r\n\r\n if (this.isGoogleConversionGoalsImportOptionEnabled) {\r\n properties.push('ImportNewOption_ImportNewConversionGoals', 'ImportUpdateEntityPreference_UpdateConversionGoals');\r\n }\r\n\r\n if (this.isBrandSuitabilityImportOptionEnabled) {\r\n properties.push('ImportNewOption_ImportNewBrandSuitability', 'ImportUpdateEntityPreference_UpdateBrandSuitability');\r\n }\r\n\r\n const schema = this.flattenedSchemaGenerator.getFlattenedSchemaWithProperties(...properties);\r\n\r\n this.importOptionsForm = new SimpleForm({\r\n schema,\r\n fields,\r\n model,\r\n showButtons: false,\r\n i18n: this.deps.i18nAmdLoader,\r\n });\r\n\r\n this.errorMessageView = new ErrorMessageView({\r\n errorMessage: deps.i18n.getString('Validation_ImportOptionRequired'),\r\n });\r\n this.uetErrorMessageView = new ErrorMessageView({\r\n errorMessage: deps.i18n.getString('Import_ImportOptions_UncheckUETWarning'),\r\n });\r\n }\r\n\r\n events() {\r\n return {\r\n 'input input, select, textarea': 'enableContinueButton',\r\n 'click [data-property=\"ImportNewEntities\"] .campaigns-checkbox': 'checkSubitems',\r\n 'click [data-property=\"ImportNewEntities\"] .advanced-options .checkbox': 'toggleNewAllCheckboxState',\r\n 'click [data-property=\"UpdateEntityPreferences\"] .campaigns-checkbox': 'checkUpdateSubitems',\r\n 'click .form-label-container .control-label': 'blockLabelClick',\r\n 'click [data-property=\"ImportNewOption_ImportNewAudienceTargets\"]': 'toggleAudienceListsTargets',\r\n 'click [data-property=\"NoAudienceTargetForFBImportOption\"]': 'toggleAudienceListsTargets',\r\n 'click [data-property=\"ImportUET\"] .checkbox': 'toggleUET',\r\n };\r\n }\r\n\r\n blockLabelClick(event) {\r\n event.preventDefault();\r\n }\r\n\r\n checkSubitems({ isFirstUpdate = false } = {}) {\r\n // handle click on indeterminate scenario; directly modifying attribute\r\n // doesn't work b/c it's bound to a ko-observable in this case\r\n if (this.isLastNewStateIndeterminate) {\r\n this.importOptionsForm.viewModel.ImportNewEntities(true);\r\n this.isLastNewStateIndeterminate = false;\r\n }\r\n\r\n if (this.importOptionsForm.viewModel.ImportNewEntities()) {\r\n this.importOptionsForm.viewControls.ImportNewEntities.enableAdvancedOptions();\r\n if (!isFirstUpdate) {\r\n // don't select all sub items on first load; use fetched import preferences\r\n this.importOptionsForm.viewControls.ImportNewEntities.selectAllOptions();\r\n }\r\n } else {\r\n this.importOptionsForm.viewControls.ImportNewEntities.disableAdvancedOptions();\r\n }\r\n\r\n this.toggleAudienceListsTargets();\r\n }\r\n\r\n checkUpdateSubitems({ isFirstUpdate = false } = {}) {\r\n // expand advanced options whenever the user checks/unchecks the box\r\n if (!isFirstUpdate) {\r\n this.importOptionsForm.viewControls.UpdateEntityPreferences\r\n .toggleAdvancedOptionsExpansion(true);\r\n }\r\n\r\n if (this.importOptionsForm.viewModel.UpdateEntityPreferences()) {\r\n this.importOptionsForm.viewControls.UpdateEntityPreferences.enableAdvancedOptions();\r\n\r\n this.importOptionsForm.viewControls.UpdateEntityPreferences.toggleWarningMessage(false);\r\n } else {\r\n this.importOptionsForm.viewControls.UpdateEntityPreferences.disableAdvancedOptions();\r\n\r\n if (this.areLinkedUpdateItemsChecked()) {\r\n this.uncheckLinkedUpdateItems();\r\n this.importOptionsForm.viewControls.UpdateEntityPreferences.toggleWarningMessage(true);\r\n this.clickCollapseGroupLink(1);\r\n }\r\n }\r\n }\r\n\r\n areLinkedUpdateItemsChecked() {\r\n const {\r\n ImportUpdateEntityPreference_UpdateCampaignBudget: prefUpdateCampaignBudget,\r\n ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids: prefUpdateAdGroupAndKeywordBids,\r\n ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBidStrategies:\r\n prefUpdateAdGroupAndKeywordBidStrategies,\r\n } = this.importOptionsForm.viewModel;\r\n\r\n return (prefUpdateCampaignBudget && prefUpdateCampaignBudget())\r\n || (prefUpdateAdGroupAndKeywordBids && prefUpdateAdGroupAndKeywordBids())\r\n || (prefUpdateAdGroupAndKeywordBidStrategies && prefUpdateAdGroupAndKeywordBidStrategies());\r\n }\r\n\r\n // uncheck two options that have moved to bids and budget section\r\n uncheckLinkedUpdateItems() {\r\n const {\r\n ImportUpdateEntityPreference_UpdateCampaignBudget: prefUpdateCampaignBudget,\r\n ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids: prefUpdateAdGroupAndKeywordBids,\r\n ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBidStrategies:\r\n prefUpdateAdGroupAndKeywordBidStrategies,\r\n } = this.importOptionsForm.viewModel;\r\n if (prefUpdateCampaignBudget) {\r\n prefUpdateCampaignBudget(false);\r\n }\r\n if (prefUpdateAdGroupAndKeywordBids) {\r\n prefUpdateAdGroupAndKeywordBids(false);\r\n }\r\n if (prefUpdateAdGroupAndKeywordBidStrategies) {\r\n prefUpdateAdGroupAndKeywordBidStrategies(false);\r\n }\r\n }\r\n\r\n isUETInLogGrid() {\r\n return this.importOptionsForm.viewControls.AssociatedUETTagId.disabled;\r\n }\r\n\r\n toggleAudienceListsTargets(updateUETCheckbox = true) {\r\n if (this.isUETEnabled() && !this.isUETInLogGrid()) {\r\n const uetCheckbox = '[data-property=\"ImportUET\"] input';\r\n const uetTag = '[data-property=\"AssociatedUETTagId\"]';\r\n const uetTagInput = `${uetTag} select, ${uetTag} input, ${uetTag} textarea`;\r\n if (this.isAudienceTargetForFBImportOptionEnabled &&\r\n this.importOptionsForm.viewControls.ImportNewEntities.advancedOptionsView[1] &&\r\n this.importOptionsForm.viewControls.ImportNewEntities.advancedOptionsView[1]\r\n .form.viewModel.ImportNewOption_ImportNewAudienceTargets\r\n ) {\r\n if (this.importOptionsForm.viewModel.NoAudienceTargetForFBImportOption() === true ||\r\n this.importOptionsForm.viewModel.NoAudienceTargetForFBImportOption() === false\r\n ) {\r\n // eslint-disable-next-line max-len\r\n this.importOptionsForm.viewControls.ImportNewEntities.advancedOptionsView[1].form.viewModel.ImportNewOption_ImportNewAudienceTargets(!this.importOptionsForm.viewModel.NoAudienceTargetForFBImportOption());\r\n }\r\n }\r\n\r\n if (this.importOptionsForm.viewModel.ImportNewEntities() &&\r\n this.importOptionsForm.viewControls.ImportNewEntities\r\n .getAdvancedOptionsModel().ImportNewOption_ImportNewAudienceTargets) {\r\n this.$(uetCheckbox).prop('disabled', false);\r\n this.$(uetTagInput).prop('disabled', false);\r\n if (updateUETCheckbox) {\r\n this.importOptionsForm.viewModel.ImportUET(true);\r\n }\r\n } else {\r\n this.$(uetCheckbox).prop('disabled', true);\r\n this.$(uetTagInput).prop('disabled', true);\r\n if (updateUETCheckbox) {\r\n this.importOptionsForm.viewModel.ImportUET(false);\r\n }\r\n }\r\n this.uetErrorMessageView.setVisibility(false);\r\n }\r\n }\r\n\r\n toggleNewAllCheckboxState() {\r\n const allCheckbox = this.$('[data-property=\"ImportNewEntities\"] .campaigns-checkbox');\r\n\r\n const importNewEntities = this.importOptionsForm.viewControls.ImportNewEntities;\r\n const areAllOptionsDisabled = importNewEntities.areAllOptionsDisabled();\r\n const areSomeOptionsSelected = importNewEntities.areSomeOptionsSelected();\r\n const areAllOptionsSelected = importNewEntities.areAllOptionsSelected();\r\n if (importNewEntities.hideAdvancedOptions && areSomeOptionsSelected && !areAllOptionsDisabled) {\r\n // if hide advanced options, don't show indeterminate state\r\n allCheckbox.prop('indeterminate', false);\r\n this.importOptionsForm.viewModel.ImportNewEntities(true);\r\n this.isLastNewStateIndeterminate = false;\r\n } else if (areAllOptionsSelected && !areAllOptionsDisabled) {\r\n // if advanced options are all disabled, we will not set ImportNewEntities as true\r\n allCheckbox.prop('indeterminate', false);\r\n this.importOptionsForm.viewModel.ImportNewEntities(true);\r\n this.isLastNewStateIndeterminate = false;\r\n } else if (areSomeOptionsSelected && !areAllOptionsDisabled) {\r\n // if advanced options are all disabled, we will not set ImportNewEntities as true\r\n allCheckbox.prop('indeterminate', true);\r\n this.importOptionsForm.viewModel.ImportNewEntities(true);\r\n this.isLastNewStateIndeterminate = true;\r\n } else {\r\n allCheckbox.prop('indeterminate', false);\r\n this.importOptionsForm.viewModel.ImportNewEntities(false);\r\n this.isLastNewStateIndeterminate = false;\r\n }\r\n this.toggleAudienceListsTargets();\r\n }\r\n\r\n getImportUserPreferences() {\r\n const model = _.extend(\r\n {},\r\n this.importOptionsForm.currentModel(),\r\n this.importOptionsForm.viewControls.ImportNewEntities.getAdvancedOptionsModel(),\r\n this.importOptionsForm.viewControls.UpdateEntityPreferences.getAdvancedOptionsModel(),\r\n {\r\n AdjustmentForBids_AdjustmentDecrease: this.importOptionsForm.viewControls.AdjustmentForBids_AdjustmentValue.isDecreaseSelected(),\r\n AdjustmentForCampaignBudgets_AdjustmentDecrease: this.importOptionsForm.viewControls.AdjustmentForCampaignBudgets_AdjustmentValue.isDecreaseSelected(),\r\n }\r\n );\r\n\r\n const importUserPreferences = parseModelToImportUserPreference(\r\n model,\r\n ImportOptionsForm.isPageFeedEnabled(this.deps),\r\n !!this.deps.isMultiAccountImport,\r\n ImportOptionsForm.isDeviceTargetOptimizationEnabled(this.deps),\r\n ImportOptionsForm.isAdScheduleUseSearcherTimezoneEnabled(this.deps),\r\n ImportOptionsForm\r\n .isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled(this.deps),\r\n ImportOptionsForm\r\n .isGoogleImageExtensionImportOptionEnabled(this.deps),\r\n this.isAudienceTargetForFBImportOptionEnabled,\r\n this.isGoogleLogoExtensionImportOptionEnabled,\r\n this.isGoogleUpdateAdUrlsImportOptionEnabled,\r\n this.isGoogleUpdateSitelinkUrlsImportOptionEnabled,\r\n this.isGoogleAccountNegativeKeywordsImportOptionEnabled,\r\n this.isGoogleAdCustomizerAttributesImportOptionEnabled,\r\n this.isGoogleConversionGoalsImportOptionEnabled,\r\n this.isBrandSuitabilityImportOptionEnabled\r\n );\r\n return importUserPreferences;\r\n }\r\n\r\n // name of the observable which stores collapse state is auto-generated and\r\n // not guaranteed to be the same each time (name is name of all properties in\r\n // this collapse group concated with a seemingly random number)\r\n // use jquery selector instead, since this collapse group is guaranteed to be\r\n // in the same place in the form each time, and there's only one collapse group\r\n // which has validators which need to potentially be expanded\r\n getSelectorForCollapseGroup(positionIndex) {\r\n let nthChild = 0;\r\n\r\n switch (positionIndex) {\r\n case 0:\r\n nthChild = 2;\r\n break;\r\n case 1:\r\n nthChild = 4;\r\n break;\r\n case 2:\r\n nthChild = 6;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return `form div:nth-child(${nthChild})`;\r\n }\r\n\r\n getSelectorForCollapseGroupLink(positionIndex) {\r\n return `${this.getSelectorForCollapseGroup(positionIndex)} [data-toggle=\"collapse\"]`;\r\n }\r\n\r\n getSelectorForCollapseGroupLabel(positionIndex) {\r\n return `${this.getSelectorForCollapseGroup(positionIndex)}.scheduling-form`;\r\n }\r\n\r\n clickCollapseGroupLink(positionIndex) {\r\n const collapseLink = this.$(this.getSelectorForCollapseGroupLink(positionIndex));\r\n const isGroupCollapsed = collapseLink.hasClass('collapsed');\r\n\r\n if (isGroupCollapsed) {\r\n collapseLink.click();\r\n }\r\n }\r\n\r\n validate() {\r\n const isValid = this.importOptionsForm.validate() && this.isAnyOptionSelected() &&\r\n this.checkUETValidate(true);\r\n\r\n if (!isValid) {\r\n this.clickCollapseGroupLink(2);\r\n }\r\n\r\n if (this.logTrace && this.isUETEnabled()) {\r\n this.logTrace(`UET tag checkbox: ${this.importOptionsForm.viewModel.ImportUET() ? 'checked' : 'unchecked'}, tag selector value: ${$('#tagsDropDown').val()}`);\r\n }\r\n return isValid;\r\n }\r\n\r\n isUETEnabled() {\r\n // to exclude file import\r\n return this.importOptionsForm.viewModel.ImportUET;\r\n }\r\n\r\n checkUETValidate(isForContinue) {\r\n let isValid = true;\r\n if (this.isUETEnabled()) {\r\n if (this.importOptionsForm.viewModel.ImportNewEntities() &&\r\n this.importOptionsForm.viewControls.ImportNewEntities\r\n .getAdvancedOptionsModel().ImportNewOption_ImportNewAudienceTargets &&\r\n this.importOptionsForm.viewModel.ImportUET()\r\n ) {\r\n isValid = this.importOptionsForm.viewControls.AssociatedUETTagId.validate(isForContinue);\r\n } else {\r\n isValid = !this.importOptionsForm.viewModel.ImportUET();\r\n }\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n uetSortFunc(tag) {\r\n if (tag && tag.IsPreferredTag) {\r\n // IsPreferredTag is highest priority.\r\n // only active status tag can have this bool set to true.\r\n return 0;\r\n }\r\n\r\n return UETTagStatus[tag && tag.TrackingStatus];\r\n }\r\n\r\n createUETTag() {\r\n if (this.isUETEnabled() &&\r\n this.importOptionsForm.viewModel.ImportUET() && this.uetTag && !this.uetTag.Id) {\r\n // create uet\r\n return new Promise((resolve, reject) => {\r\n this.importOptionsForm.viewControls.AssociatedUETTagId.save()\r\n .done((response) => {\r\n if (_.has(response, 'Id')) {\r\n // after save succeeds, update view to select the new created tag\r\n return this.importOptionsForm.viewControls.AssociatedUETTagId\r\n .updateTags(\r\n response.Id,\r\n this.uetSortFunc,\r\n !this.isUETInLogGrid()\r\n ).then(() => resolve({\r\n newUETCreated: true,\r\n hasError: false,\r\n })).catch(() => reject(response));\r\n }\r\n return reject(response);\r\n })\r\n .fail(response => reject(response));\r\n }).finally(withUiBlock());\r\n }\r\n return Promise.resolve({\r\n newUETCreated: false,\r\n hasError: false,\r\n });\r\n }\r\n\r\n isAnyOptionSelected() {\r\n const preferences = this.getImportUserPreferences();\r\n\r\n const isAnySelected = !!(preferences.ImportNewEntities || preferences.ImportUpdatedEntities ||\r\n preferences.ImportDeletedEntities ||\r\n preferences.AdWordsAccountTrackingTemplate || preferences.AdWordsAccountFinalUrlSuffix);\r\n\r\n this.errorMessageView.setVisibility(!isAnySelected);\r\n return isAnySelected;\r\n }\r\n\r\n enableContinueButton() {\r\n if (this.toggleContinueButton) {\r\n this.toggleContinueButton(true);\r\n }\r\n }\r\n\r\n render() {\r\n const storeIdSelector = '[data-property=\"StoreIdForImportedProductAdExtensions\"]';\r\n\r\n this.$el.html(importOptionsFormTemplate());\r\n\r\n this.$('.advanced-import-options-form').html(this.importOptionsForm.render().$el);\r\n\r\n this.$(this.getSelectorForCollapseGroupLabel(0)).append(this.errorMessageView.render().$el);\r\n this.$('.form-input-container[data-property=\"AssociatedUETTagId\"]').parent().append(this.uetErrorMessageView.render().$el);\r\n\r\n if (this.importOptionsForm.viewModel.StoreIdForImportedProductAdExtensionsFlag) {\r\n this.importOptionsForm.viewModel.StoreIdForImportedProductAdExtensionsFlag\r\n .subscribe(_.partial(this.toggleListDisableState, storeIdSelector).bind(this));\r\n }\r\n\r\n if (this.importOptionsForm.viewModel.StoreIdForImportedProductAdExtensionsFlag) {\r\n this.toggleListDisableState(storeIdSelector, this.importOptionsForm.viewModel.StoreIdForImportedProductAdExtensionsFlag()); //eslint-disable-line\r\n }\r\n\r\n this.checkSubitems({ isFirstUpdate: true });\r\n this.checkUpdateSubitems({ isFirstUpdate: true });\r\n\r\n this.hackyWayToAddHelpButtons();\r\n\r\n this.toggleNewAllCheckboxState();\r\n\r\n if (this.importOptionsForm.viewControls.AssociatedUETTagId) {\r\n this.importOptionsForm.viewControls.AssociatedUETTagId.on('update', (tag) => {\r\n this.importOptionsForm.viewModel.AssociatedUETTagId(tag && tag.Id);\r\n this.uetTag = tag;\r\n this.toggleAudienceListsTargets(false);\r\n // do another validate to correct the wrong UI state for edit step scenario\r\n this.importOptionsForm.viewControls.AssociatedUETTagId.validate();\r\n });\r\n\r\n this.importOptionsForm.viewControls.AssociatedUETTagId\r\n .updateTags(\r\n this.importOptionsForm.viewModel.AssociatedUETTagId(),\r\n this.uetSortFunc,\r\n !this.isUETInLogGrid()\r\n );\r\n }\r\n\r\n return this;\r\n }\r\n\r\n toggleUET(e) {\r\n // do nothing if the checkbox is diabled\r\n if ($(e.target).children('input').prop('disabled')) {\r\n return;\r\n }\r\n const uetTag = '[data-property=\"AssociatedUETTagId\"]';\r\n const uetTagInput = `${uetTag} select, ${uetTag} input, ${uetTag} textarea`;\r\n this.$(uetTagInput).prop('disabled', !this.importOptionsForm.viewModel.ImportUET());\r\n if (this.logTrace) {\r\n this.logTrace('click UET tag checkbox');\r\n }\r\n }\r\n\r\n toggleListDisableState(selector, newState) {\r\n if (newState) {\r\n this.$(`${selector} select`).removeAttr('disabled');\r\n } else {\r\n this.$(`${selector} select`).attr('disabled', 'disabled');\r\n }\r\n }\r\n\r\n // Temporarily add help buttons to labels section until support in simple-form is complete\r\n // Work item: 982346\r\n // Also, still awaiting final help text and ids from UX\r\n hackyWayToAddHelpButtons() {\r\n const { importOptionFieldHelpIds = {} } = this.deps || {};\r\n const {\r\n DefaultBidsBelowMinToAdCenterMinBid: helpIdForDefaultBidsBelowMinToAdCenterMinBid = ImportOptionsForm.isImportAutoMinimumBidEnabled(this.deps) ? 'pop_BA_Import_Google_SetUnknownBid' : 'pop_BA_Import_IncreaseToRecommended',\r\n DefaultCampaignBudgetBelowMinToAdCenterMinBudget: helpIdForDefaultCampaignBudgetBelowMinToAdCenterMinBudget = 'pop_BA_Import_IncreaseCampBudget',\r\n AdjustmentForBids_EnableAdjustment: helpIdForAdjustmentForBids_EnableAdjustment = 'Pop_BA_Import_AdjustBidValue',\r\n AdjustmentForCampaignBudgets_EnableAdjustment: helpIdForAdjustmentForCampaignBudgets_EnableAdjustment = 'Pop_BA_Import_AdjustBudgValue',\r\n ImportNewOption_ImportNewActiveEntitiesOnly: helpIdForImportNewOption_ImportNewActiveEntitiesOnly = 'pop_BA_Import_PauseCampaigns',\r\n } = importOptionFieldHelpIds;\r\n\r\n if (!this.shouldEnableBSCSmartImport) {\r\n this.addHelpButtonToSelector('[data-property=\"StoreIdForImportedProductAdExtensionsFlag\"] span', 'Page_Import_ChangesToExistingCampaigns_BmcId', this.i18n.get('Import_ImportOptions_ShoppingCampaignOptions'));\r\n }\r\n this.addHelpButtonToSelector('[data-property=\"ImportNewOption_ImportNewActiveEntitiesOnly\"] .checkbox label', helpIdForImportNewOption_ImportNewActiveEntitiesOnly, this.i18n.get('Import_ImportOptions_ImportNewPausedEntities'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportDeletedEntities\"] .checkbox label', 'pop_BA_Import_DeleteRemovedItems', this.i18n.get('ImportDeletedEntities'));\r\n if (ImportOptionsForm.isImportAutoMinimumBidEnabled(this.deps)) {\r\n this.addHelpButtonToSelector('[data-property=\"DefaultBidsBelowMinToAdCenterMinBid\"] .checkbox label', helpIdForDefaultBidsBelowMinToAdCenterMinBid, this.i18n.get('Import_ImportOptions_SetMinBids_RecommendedBid'));\r\n } else {\r\n this.addHelpButtonToSelector('[data-property=\"DefaultBidsBelowMinToAdCenterMinBid\"] .checkbox label', helpIdForDefaultBidsBelowMinToAdCenterMinBid, this.i18n.get('Import_ImportOptions_SetMinBids_Generic_WithRecommendedBid'));\r\n }\r\n this.addHelpButtonToSelector('[data-property=\"DefaultCampaignBudgetBelowMinToAdCenterMinBudget\"] .checkbox label', helpIdForDefaultCampaignBudgetBelowMinToAdCenterMinBudget, this.i18n.get('Import_ImportOptions_SetMinBudget_Generic'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportUpdateEntityPreference_UpdateNameForExistingCampaigns\"] .checkbox label', 'pop_BA_Import_DoNotUpdateNames', this.i18n.get('ImportUpdateEntityPreference_UpdateNameForExistingCampaigns'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportNewOption_ImportNewCampaignsAndMarkAsPaused\"] .checkbox label', 'pop_BA_Import_PauseImportedCamp', this.i18n.get('ImportNewOption_ImportNewCampaignsAndMarkAsPaused'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportNewOption_ImportAllAdUnderAnAdGroup\"] .checkbox label', 'pop_BA_Import_IncludePausedAds', this.i18n.get('Import_ImportOptions_ImportNewPausedAds'));\r\n this.addHelpButtonToSelector('[data-property=\"RaiseLowBidsToMinServingBidsForBsc\"] .checkbox label', 'pop_BA_Import_ProductGroupBids', this.i18n.get('Import_ImportOptions_SetMinShoppingCampaignBid'));\r\n this.addHelpButtonToSelector('[data-property=\"AutoDeviceBidOptimization\"] .checkbox label', 'Pop_BA_ImportRF_PcNegativeBidModifierDoNotImport', this.i18n.get('Import_ImportOptions_AutoDeviceBidOptimization'));\r\n this.addHelpButtonToSelector('[data-property=\"PauseParentIfNoLocationSupported\"] .checkbox label', 'Pop_BA_Import_PauseCampaignsUnsupportedLT', this.i18n.get('Import_ImportOptions_PauseParentIfNoLocationSupported'));\r\n this.addHelpButtonToSelector('[data-property=\"EnableParentLocationMapping\"] .checkbox label', 'Pop_BA_Import_DoNoteExpandUnsupportedLT', this.i18n.get('Import_ImportOptions_EnableParentLocationMapping'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportUpdateEntityPreference_UpdateCampaignBudget\"] .checkbox label', 'Pop_BA_Import_UpdateExAGCampBudg', this.i18n.get('ImportUpdateEntityPreference_UpdateCampaignBudget_BidSection'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids\"] .checkbox label', 'Pop_BA_Import_UpdateBids', this.i18n.get('ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids_Bids'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBidStrategies\"] .checkbox label', 'Pop_BA_Import_UpdateBidStrat', this.i18n.get('ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids_BidStrategies'));\r\n this.addHelpButtonToSelector('[data-property=\"PauseAIMAdGroupIfAllAudienceCriterionNotImported\"] .checkbox label', 'Pop_BA_Import_PauseAdGroupsUnsupported', this.i18n.get('Import_ImportOptions_PauseAIMAdGroupIfAllAudienceCriterionNotImported'));\r\n\r\n this.addHelpButtonToSelector('[data-property=\"AdjustmentForBids_EnableAdjustment\"] .checkbox label', helpIdForAdjustmentForBids_EnableAdjustment, this.i18n.get('AdjustmentForBids_EnableAdjustment'));\r\n this.addHelpButtonToSelector('[data-property=\"AdjustmentForCampaignBudgets_EnableAdjustment\"] .checkbox label', helpIdForAdjustmentForCampaignBudgets_EnableAdjustment, this.i18n.get('AdjustmentForCampaignBudgets_EnableAdjustment'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportNewCustomFiltersForShoppingCampaigns\"] .checkbox label', 'pop_BA_Import_NewProductFilters', this.i18n.get('Import_ImportOptions_ImportNewCustomFiltersForShoppingCampaigns'));\r\n this.addHelpButtonToSelector('[data-property=\"UpdateCustomFiltersForShoppingCampaigns\"] .checkbox label', 'pop_BA_Import_UpdateProductFilters', this.i18n.get('Import_ImportOptions_UpdateCustomFiltersForShoppingCampaigns'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportSearchAndDsaMixedCampaignAsSearchCampaign\"] .checkbox label', 'pop_BA_Import_MixedMode', this.i18n.get('Import_ImportOptions_ImportDSAMixedAsSearch'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportUET\"] .control-label', 'pop_BA_Import_UETTag', this.i18n.get('Import_ImportOptions_UETTag_Label'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportNewOption_ImportNewLogoAdExtensions\"] .checkbox label', ': pop_BA_Import_LogoExt', this.i18n.get('ImportNewOption_ImportNewLogoAdExtensions'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportUpdateEntityPreference_UpdateLogoAdExtensions\"] .checkbox label', ': pop_BA_Import_LogoExt', this.i18n.get('ImportUpdateEntityPreference_UpdateLogoAdExtensions'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportNewOption_ImportNewConversionGoals\"] .checkbox label', ': pop_BA_Import_Google_ConvGoalsNew', this.i18n.get('ImportNewOption_ImportNewConversionGoals'));\r\n this.addHelpButtonToSelector('[data-property=\"ImportUpdateEntityPreference_UpdateConversionGoals\"] .checkbox label', ': pop_BA_Import_Google_ConvGoalsExist', this.i18n.get('ImportUpdateEntityPreference_UpdateConversionGoals'));\r\n }\r\n\r\n addHelpButtonToSelector(selector, helpId, ariaLabelContext) {\r\n const learnMoreLinkText = this.i18n.get('LearnMoreLinkText');\r\n\r\n if (this.$(selector).length) {\r\n this.$(selector).append(helpButtonTemplate({\r\n helpId,\r\n ariaLabelContext,\r\n arialLabelText: learnMoreLinkText,\r\n }));\r\n }\r\n }\r\n\r\n remove() {\r\n this.errorMessageView.remove();\r\n this.uetErrorMessageView.remove();\r\n super.remove();\r\n }\r\n\r\n // TODO: remove\r\n static generateImportUserPreferencesFromPreviousOptions(deps, previousOptions) {\r\n const model = parseExistingImportOptions(deps, previousOptions);\r\n const importUserPreferences = parseModelToImportUserPreference(\r\n model,\r\n ImportOptionsForm.isPageFeedEnabled(deps),\r\n false,\r\n ImportOptionsForm.isDeviceTargetOptimizationEnabled(deps),\r\n ImportOptionsForm.isAdScheduleUseSearcherTimezoneEnabled(deps),\r\n ImportOptionsForm\r\n .isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled(deps),\r\n ImportOptionsForm\r\n .isGoogleImageExtensionImportOptionEnabled(deps)\r\n );\r\n return importUserPreferences;\r\n }\r\n\r\n\r\n static isDeviceTargetOptimizationEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n return permissions.IsDeviceTargetOptimizationEnabled;\r\n }\r\n\r\n static isAdScheduleUseSearcherTimezoneEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n return permissions.IsAdScheduleUseSearcherTimezoneEnabled;\r\n }\r\n\r\n static isPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n return permissions.IsPauseAIMAdGroupIfAllAudienceCriterionNotImportedImportOptionEnabled;\r\n }\r\n\r\n static isGoogleImageExtensionImportOptionEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n return permissions.IsGoogleImageExtensionImportOptionEnabled;\r\n }\r\n\r\n static isGoogleLogoExtensionImportOptionEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n\r\n return permissions.dynamic && permissions.dynamic.GoogleLogoExtensionImportOptionEnabled;\r\n }\r\n\r\n static isGoogleUpdateAdUrlsImportOptionEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n\r\n return permissions.dynamic && permissions.dynamic.GoogleUpdateAdUrlsImportOptionEnabled;\r\n }\r\n\r\n static isGoogleUpdateSitelinkUrlsImportOptionEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n\r\n return permissions.dynamic && permissions.dynamic.GoogleUpdateSitelinkUrlsImportOptionEnabled;\r\n }\r\n\r\n static isGoogleAccountNegativeKeywordsImportOptionEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n\r\n return permissions && permissions.IsAccountNegativeKeywordsForGoogleImportOptionEnabled;\r\n }\r\n\r\n static isPageFeedEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n\r\n return permissions.IsPageFeedImportOptionEnabled;\r\n }\r\n\r\n static isBSCSmartImportEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n\r\n return permissions.IsBSCSmartImportEnabled;\r\n }\r\n\r\n static isAudienceTargetForFBImportOptionEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n\r\n return permissions.IsAudienceTargetForFBImportOptionEnabled;\r\n }\r\n\r\n static isGoogleAdCustomizerAttributesImportOptionEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n\r\n return permissions.dynamic && permissions.dynamic.RSAAdCustomizerEnhancement;\r\n }\r\n\r\n static isGoogleConversionGoalsImportOptionEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n\r\n return permissions.IsGoogleConversionGoalsImportEnabled;\r\n }\r\n\r\n static isImportAutoMinimumBidEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n\r\n return permissions.IsImportAutoMinimumBidEnabled;\r\n }\r\n\r\n static isBrandSuitabilityImportOptionEnabled(deps) {\r\n const permissions = deps.config.get('Permissions') || {};\r\n\r\n return permissions.isBrandSuitabilityImportOptionEnabled;\r\n }\r\n}\r\n","/* eslint-disable no-nested-ternary */\r\nexport class ImportOptionsSummaryBuilder {\r\n constructor({ i18n }) {\r\n this.i18n = i18n;\r\n }\r\n\r\n generateEntityOptionsSummary(options) {\r\n let summaryText = '';\r\n const newText = this.i18n.get('Import_ImportOptions_Summary_New');\r\n const existingText = this.i18n.get('Import_ImportOptions_Summary_Existing');\r\n const isImportingNewItems = options.ImportNewEntities;\r\n const isImportingExistingItems = options.ImportUpdatedEntities;\r\n\r\n if (isImportingNewItems || isImportingExistingItems) {\r\n if (isImportingNewItems && isImportingExistingItems) {\r\n summaryText = `${newText} & ${existingText.toLowerCase()}`;\r\n } else if (isImportingNewItems) {\r\n summaryText = newText;\r\n } else {\r\n summaryText = existingText;\r\n }\r\n\r\n summaryText += ` ${this.i18n.get('Import_ImportOptions_Summary_Items')}`;\r\n }\r\n\r\n return summaryText;\r\n }\r\n\r\n generateMonetaryOptionsSummary(options) {\r\n let summaryText = '';\r\n const bidText = this.i18n.get('Import_ImportOptions_Summary_Bids');\r\n const budgetText = this.i18n.get('Import_ImportOptions_Summary_Budgets');\r\n const isAdjustingBid = options.SetLowerBidsToAdCenterMinBids;\r\n const isAdjustingBudget = options.SetLowerCampaignBudgetsToAdCenterMinCampaignBudgets;\r\n\r\n if (isAdjustingBid && isAdjustingBudget) {\r\n summaryText = `${bidText} & ${budgetText.toLowerCase()}`;\r\n } else if (isAdjustingBid) {\r\n summaryText = bidText;\r\n } else if (isAdjustingBudget) {\r\n summaryText = budgetText;\r\n }\r\n\r\n return summaryText;\r\n }\r\n\r\n generateOtherOptionsSummary(options) {\r\n const summaryText = [];\r\n\r\n if (options.PrefixAndSuffixForUrls.EnablePrefixAndSuffix ||\r\n options.SearchAndReplaceForUrls.EnableSearchAndReplace) {\r\n summaryText.push(this.i18n.get('Import_ImportOptions_Summary_AdUrls'));\r\n }\r\n\r\n if (options.PrefixAndSuffixForTrackingTemplates.EnablePrefixAndSuffix ||\r\n options.SearchAndReplaceForTrackingTemplates.EnableSearchAndReplace) {\r\n summaryText.push(this.i18n.get('Import_ImportOptions_Summary_TrackingTemplate'));\r\n }\r\n\r\n return summaryText.join(', ');\r\n }\r\n\r\n generateSummaryFromSelectedOptions(options) {\r\n const summaryText = [];\r\n\r\n const entityOptionsText =\r\n this.generateEntityOptionsSummary(options);\r\n const bidOptionsText =\r\n this.generateMonetaryOptionsSummary(options);\r\n const otherOptionsText =\r\n this.generateOtherOptionsSummary(options);\r\n\r\n if (entityOptionsText.length > 0) {\r\n summaryText.push(entityOptionsText);\r\n }\r\n\r\n if (bidOptionsText.length > 0) {\r\n summaryText.push(bidOptionsText);\r\n }\r\n\r\n if (otherOptionsText.length > 0) {\r\n summaryText.push(otherOptionsText);\r\n }\r\n\r\n return summaryText.join(', ');\r\n }\r\n\r\n generateFormattedOptionsSummary(options) {\r\n const MAX_LEN = 97;\r\n let summaryText = this.generateSummaryFromSelectedOptions(options);\r\n\r\n if (summaryText.length > 100) {\r\n summaryText = `${summaryText.substring(0, MAX_LEN)}...`;\r\n }\r\n\r\n return summaryText;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseImportStep } from '../base-import-step';\r\nimport { ImportOptionsForm } from './form/index';\r\nimport { ImportOptionsSummaryBuilder } from './import-options-summary-builder';\r\nimport importOptionsTemplate from './import-options-template.pug';\r\n\r\nexport class ImportOptionsStep extends BaseImportStep {\r\n initialize({\r\n deps,\r\n }) {\r\n super.initialize({\r\n deps,\r\n });\r\n\r\n this.deps = deps;\r\n this.isContinueButtonEnabled = true;\r\n this.summaryBuilder = new ImportOptionsSummaryBuilder({\r\n i18n: this.i18n,\r\n });\r\n this.getImportOptionFields = deps.getImportOptionFields;\r\n }\r\n\r\n get title() {\r\n return this.buildTitle({\r\n activeTitle: this.i18n.get('Import_ImportOptions_WithoutAccount_Title'),\r\n summaryTitle: this.i18n.get('Import_ImportOptions_WithoutAccount_Summary'),\r\n });\r\n }\r\n\r\n get actions() {\r\n const original = super.actions;\r\n\r\n original[0].enabled = this.isContinueButtonEnabled;\r\n return original;\r\n }\r\n\r\n\r\n getSummaryInfo() {\r\n if (!this.importOptionsForm) {\r\n return '';\r\n }\r\n return this.summaryBuilder.generateFormattedOptionsSummary(this.getImportOptions());\r\n }\r\n\r\n render() {\r\n this.$el.html(importOptionsTemplate());\r\n\r\n return this;\r\n }\r\n\r\n renderForm() {\r\n this.deps.logActivities.renderImportOptions.start();\r\n const state = this.getState();\r\n\r\n // eslint-disable-next-line max-len\r\n const jsonFormatEditTaskItemOptions = state.initialSettings && state.initialSettings.ImportUserPreference;\r\n\r\n this.importOptionsForm = new ImportOptionsForm({\r\n deps: this.deps,\r\n logTrace: this.logTrace.bind(this),\r\n previousImportOptions: state.previousImportOptions,\r\n editTaskItemOptions: state.initialSettings && state.initialSettings.ImportUserPreferences,\r\n jsonFormatEditTaskItemOptions,\r\n includePausedCampaigns: state.includePausedCampaigns,\r\n toggleContinueButton: this.toggleContinueButton,\r\n getImportOptionFields: this.getImportOptionFields,\r\n isPauseAdGroupIfNoLocationSupportedEnabled:\r\n this.deps.isPauseAdGroupIfNoLocationSupportedEnabled,\r\n isGoogleImport: !_.isUndefined(state.selectedGoogleAccounts) ?\r\n state.selectedGoogleAccounts.length >= 1 : false,\r\n });\r\n\r\n this.$('.import-options-container').html(this.importOptionsForm.render().$el);\r\n this.$('.import-options-container').on('keypress', this.handleFormInputEvent.bind(this));\r\n this.$('.import-options-container').on('click', this.handleFormInputEvent.bind(this));\r\n // initial state for user preferences\r\n this.lastOptions = this.importOptionsForm.getImportUserPreferences();\r\n\r\n this.$('input, textarea').change(() => {\r\n this.isEdited = true;\r\n });\r\n this.logTrace('render import options step');\r\n this.deps.logActivities.renderImportOptions.stop();\r\n }\r\n\r\n willShow() {\r\n if (this.checkIfShouldUpdateAndResetFlagIfTrue()) {\r\n this.renderForm();\r\n this.deps.logActivities.configureOptions.startSignal();\r\n }\r\n }\r\n\r\n handleFormInputEvent() {\r\n if (!this.deps.logScenario || !this.deps.logScenario.optionChanged) {\r\n return;\r\n }\r\n\r\n if (!this.optionChangedLogger) {\r\n // reuse the same activity instance so all logs have same activity id (ActID)\r\n this.optionChangedLogger = this.deps.logScenario.optionChanged.create();\r\n }\r\n\r\n const currentOptions = this.importOptionsForm.getImportUserPreferences();\r\n // both last and current are generated from getImportUserPreferences\r\n // the order of keys are guaranteed to be the same, so we just walk through props\r\n // and compare each prop, print props different, no need to do deep comparison\r\n // for performance sake\r\n _.each(Object.keys(this.lastOptions), (key) => {\r\n if (!_.isEqual(this.lastOptions[key], currentOptions[key])) {\r\n const newValue = currentOptions[key];\r\n const oldValue = this.lastOptions[key];\r\n this.optionChangedLogger.signal({ key, old: oldValue, new: newValue });\r\n }\r\n });\r\n this.lastOptions = currentOptions;\r\n }\r\n\r\n updateStateWithFormInfo() {\r\n let importUserPreferences = this.getImportOptions();\r\n const state = this.getState();\r\n const { autoCurrencyConversionEnabled } = state;\r\n if (!_.isUndefined(autoCurrencyConversionEnabled)) {\r\n importUserPreferences = _.defaults(\r\n importUserPreferences,\r\n { EnableAutoCurrencyConversion: autoCurrencyConversionEnabled }\r\n );\r\n }\r\n\r\n this.patchState({\r\n importOptionsSummary: this.getSummaryInfo(),\r\n importUserPreferences,\r\n });\r\n }\r\n\r\n getUETErrorMessage(errorCode) {\r\n const defaultMessage = this.i18n.get('UnifiedEventTracking_Tag_Creation_FailedToSaveTag');\r\n const messageMap = {\r\n TagWithSameNameAlreadyExistsUnderCustomer: this.i18n.get('UnifiedEventTracking_Tags_DuplicateTagNameError'),\r\n InvalidTagName: this.i18n.get('UnifiedEventTracking_Tags_PleaseEnterValidTagName'),\r\n TagNameNullOrEmpty: this.i18n.get('UnifiedEventTracking_Tags_PleaseEnterValidTagName'),\r\n InvalidTagDescription: this.i18n.get('UnifiedEventTracking_Tags_PleaseEnterValidTagDescription'),\r\n CustomerUnderMigration: this.i18n.get('UnifiedEventTracking_CustomerMigration'),\r\n SharedLibraryUserPermissionDenied: this.i18n.get('SharedLibrary_UserPermissionDenied'),\r\n };\r\n\r\n return messageMap[errorCode] || defaultMessage;\r\n }\r\n\r\n wizardShouldGoNext() {\r\n if (this.importOptionsForm && this.importOptionsForm.validate()) {\r\n return this.importOptionsForm.createUETTag()\r\n .then((result) => {\r\n this.updateStateWithFormInfo();\r\n this.patchState({\r\n newUETCreated: result.newUETCreated,\r\n });\r\n this.deps.logActivities.configureOptions\r\n .stopSignal(this.getState().importUserPreferences);\r\n return true;\r\n }, (response) => {\r\n this.toggleContinueButton(false);\r\n this.showErrorMessage(this.getUETErrorMessage(response && response.errorResponseBody &&\r\n response.errorResponseBody.value && response.errorResponseBody.value[0] &&\r\n response.errorResponseBody.value[0].Code));\r\n return false;\r\n });\r\n }\r\n this.toggleContinueButton(false);\r\n return false;\r\n }\r\n\r\n toggleContinueButton = (state) => {\r\n if (state) {\r\n this.isContinueButtonEnabled = true;\r\n super.updateAction();\r\n } else {\r\n this.isContinueButtonEnabled = false;\r\n super.updateAction();\r\n }\r\n };\r\n\r\n getImportOptions() {\r\n return this.importOptionsForm.getImportUserPreferences();\r\n }\r\n\r\n static generateImportUserPreferencesFromPreviousOptions(deps, previousOptions) {\r\n return ImportOptionsForm\r\n .generateImportUserPreferencesFromPreviousOptions(deps, previousOptions);\r\n }\r\n}\r\n","/* eslint-disable max-len */\r\nimport { getBlackList } from '@bingads-webui-campaign/import-shared-repositories';\r\nimport { getImportOptionFields as getDefaultImportOptionFields } from './index';\r\n\r\nexport const getSubFieldsBlackList = (permissions) => {\r\n const subFieldsBlacklist = getBlackList(permissions);\r\n\r\n // filter out some options for P0 requirement\r\n subFieldsBlacklist.push('ImportAccountUrlOptions');\r\n subFieldsBlacklist.push('ImportDeletedEntities');\r\n subFieldsBlacklist.push('ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids');\r\n subFieldsBlacklist.push('ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBidStrategies');\r\n subFieldsBlacklist.push('ImportUpdateEntityPreference_UpdateCampaignBudget');\r\n subFieldsBlacklist.push('RaiseLowBidsToMinServingBidsForBsc');\r\n subFieldsBlacklist.push('AutoDeviceBidOptimization');\r\n // other options\r\n subFieldsBlacklist.push('ImportAppendDestUrlPreference_UseAppendString');\r\n subFieldsBlacklist.push('ImportAppendDestUrlPreference_AppendStringForDestinationUrl');\r\n // subFieldsBlacklist.push('ImportSearchAndReplaceDestUrlPreference_UseSearchAndReplaceString');\r\n // subFieldsBlacklist.push('ImportSearchAndReplaceDestUrlPreference_SearchStringForDestinationUrl');\r\n // subFieldsBlacklist.push('ImportSearchAndReplaceDestUrlPreference_ReplaceStringForDestinationUrl');\r\n subFieldsBlacklist.push('AppendPreferencesForTrackingTemplate_UseAppendString');\r\n subFieldsBlacklist.push('AppendPreferencesForTrackingTemplate_AppendStringForTrackingTemplate');\r\n subFieldsBlacklist.push('SearchAndReplacePreferencesForTrackingTemplate_UseSearchAndReplaceString');\r\n subFieldsBlacklist.push('SearchAndReplacePreferencesForTrackingTemplate_SearchStringForTrackingTemplate');\r\n subFieldsBlacklist.push('SearchAndReplacePreferencesForTrackingTemplate_ReplaceStringForTrackingTemplate');\r\n subFieldsBlacklist.push('SearchAndReplaceForCustomParameters_EnableSearchAndReplace');\r\n subFieldsBlacklist.push('SearchAndReplaceForCustomParameters_SearchString');\r\n subFieldsBlacklist.push('SearchAndReplaceForCustomParameters_ReplaceString');\r\n subFieldsBlacklist.push('SearchAndReplaceForFinalURLSuffix_EnableSearchAndReplace');\r\n subFieldsBlacklist.push('SearchAndReplaceForFinalURLSuffix_SearchString');\r\n subFieldsBlacklist.push('SearchAndReplaceForFinalURLSuffix_ReplaceString');\r\n subFieldsBlacklist.push('ImportUpdateEntityPreference_UpdateNameForExistingCampaigns');\r\n subFieldsBlacklist.push('ImportNewOption_ImportNewCampaignsAndMarkAsPaused');\r\n // subFieldsBlacklist.push('ImportNewOption_ImportNewActiveEntitiesOnly');\r\n subFieldsBlacklist.push('ImportSearchAndDsaMixedCampaignAsSearchCampaign');\r\n subFieldsBlacklist.push('ImportPrefixAndSuffixForStringProperty_EnablePrefixAndSuffix');\r\n subFieldsBlacklist.push('ImportPrefixAndSuffixForStringProperty_SuffixString');\r\n subFieldsBlacklist.push('ImportSearchAndReplaceForStringProperty_EnableSearchAndReplace');\r\n subFieldsBlacklist.push('ImportSearchAndReplaceForStringProperty_SearchString');\r\n subFieldsBlacklist.push('ImportSearchAndReplaceForStringProperty_ReplaceString');\r\n subFieldsBlacklist.push('ImportNewOption_ImportAllAdUnderAnAdGroup');\r\n subFieldsBlacklist.push('PauseParentIfNoLocationSupported');\r\n subFieldsBlacklist.push('EnableParentLocationMapping');\r\n subFieldsBlacklist.push('StoreIdForImportedProductAdExtensionsFlag');\r\n subFieldsBlacklist.push('StoreIdForImportedProductAdExtensions');\r\n subFieldsBlacklist.push('StoreIdForImportedProductAdExtensions');\r\n subFieldsBlacklist.push('AutoDeviceBidOptimization');\r\n subFieldsBlacklist.push('PauseAIMAdGroupIfAllAudienceCriterionNotImported');\r\n subFieldsBlacklist.push('ImportNewOption_ImportNewImageAdExtensions');\r\n subFieldsBlacklist.push('ImportUpdateEntityPreference_UpdateImageAdExtensions');\r\n subFieldsBlacklist.push('RenameCampaignNameWithSuffix');\r\n\r\n return subFieldsBlacklist;\r\n};\r\n\r\nexport const importOptionFieldHelpIds = {\r\n ImportNewEntities: 'Pop_BA_Import_FB_ItemsNotPreviouslyImported',\r\n UpdateEntityPreferences: 'Pop_BA_Import_FB_UpdateExistingItems',\r\n DefaultBidsBelowMinToAdCenterMinBid: 'pop_BA_Import_FB_SetUnknownBid',\r\n DefaultCampaignBudgetBelowMinToAdCenterMinBudget: 'pop_BA_Import_FB_IncreaseCampBudget',\r\n AdjustmentForBids_EnableAdjustment: 'Pop_BA_Import_FB_AdjustBidValue',\r\n AdjustmentForCampaignBudgets_EnableAdjustment: 'Pop_BA_Import_FB_AdjustBudgValue',\r\n ImportNewOption_ImportNewActiveEntitiesOnly: 'pop_BA_Import_FB_PauseCampaigns',\r\n};\r\n\r\nexport const getImportOptionFields = (params) => {\r\n const optionFields = getDefaultImportOptionFields({\r\n ...params,\r\n hideEntityAdvancedOptions: true,\r\n helpIds: importOptionFieldHelpIds,\r\n isPauseAdGroupIfNoLocationSupportedEnabled: true,\r\n isAudienceTargetForFBImportOptionEnabled: true,\r\n });\r\n return optionFields;\r\n};\r\n","import Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport projectionGrid from 'projection-grid';\r\n\r\nimport { generateConfig } from './import-summary-grid-config';\r\n\r\nfunction setGridExpandBehavior(expand, e) {\r\n const { gridView } = this.grid;\r\n const index = gridView.indexOfElement(e.target);\r\n const key = gridView.keyOfElement(e.target);\r\n const entity = gridView.itemWithKey(key);\r\n const dataSource = gridView.get('dataSource');\r\n\r\n dataSource.data[index].Expanded = expand;\r\n if (expand) {\r\n dataSource.data.splice(index + 1, 0, entity.Children);\r\n dataSource.data = _.flatten(dataSource.data, true);\r\n } else {\r\n dataSource.data = _.reject(dataSource.data, elem => _.findWhere(entity.Children, elem));\r\n }\r\n gridView.set({\r\n dataSource,\r\n });\r\n}\r\n\r\nexport class ImportSummaryGridView extends Backbone.View {\r\n initialize({\r\n data,\r\n i18n,\r\n }) {\r\n const config = generateConfig({\r\n data,\r\n i18n,\r\n });\r\n\r\n this.grid = projectionGrid\r\n .factory({\r\n vnext: true,\r\n })\r\n .use(a11yPlugin)\r\n .create(_.extend({}, config, {\r\n events: {\r\n 'click .expanderImage': _.partial(setGridExpandBehavior, true).bind(this),\r\n 'click .expandedImage': _.partial(setGridExpandBehavior, false).bind(this),\r\n },\r\n }));\r\n\r\n this.grid.gridView.on('willUpdate', () => {\r\n this.$el.addClass('fixed-height');\r\n }, this);\r\n\r\n this.grid.gridView.on('didUpdate', () => {\r\n this.$el.removeClass('fixed-height');\r\n // fix accessibility issue, make the grid scrollable by keyboard\r\n this.$el.find('.table-container .viewport').attr('tabindex', 0);\r\n }, this);\r\n }\r\n\r\n render() {\r\n this.$el.html(this.grid.gridView.render().el);\r\n return this;\r\n }\r\n\r\n remove() {\r\n this.grid.gridView.remove();\r\n this.grid = null;\r\n super.remove();\r\n }\r\n}\r\n","import expanderTemplate from './text-with-expander.pug';\r\nimport helpPopUpTemplate from './help-pop-up.pug';\r\n\r\nexport function generateConfig({\r\n data,\r\n i18n,\r\n}) {\r\n const columns = [{\r\n name: 'Name',\r\n field: 'Name',\r\n title: i18n.get('Import_ImportSummary_Entities'),\r\n bodyClasses: 'truncated',\r\n template: expanderTemplate,\r\n property: entity => ({\r\n expandable: entity.Expandable,\r\n name: entity.Name,\r\n expanded: entity.Expanded,\r\n isChildren: entity.IsChildren,\r\n }),\r\n }, {\r\n name: 'Additions',\r\n title: i18n.get('Import_ImportSummary_NewImport'),\r\n }, {\r\n name: 'Changes',\r\n title: i18n.get('Import_ImportSummary_SyncedImport'),\r\n }, {\r\n name: 'Deletions',\r\n title: i18n.get('Import_ImportSummary_DeletedImport'),\r\n }, {\r\n name: 'Errors',\r\n html: helpPopUpTemplate({\r\n title: i18n.get('Import_ImportSummary_SkippedImport'),\r\n popupId: 'Page_Import_Summary_Skipped',\r\n arialLabelText: `${i18n.get('Learn_more_link_text')} ${i18n.get('Import_ImportSummary_SkippedImport')}`,\r\n }),\r\n }];\r\n\r\n const tableName = i18n.getString('Import_ImportSummary_Title');\r\n const plugins = {\r\n a11y: { i18n },\r\n };\r\n\r\n return {\r\n dataSource: {\r\n type: 'memory',\r\n data,\r\n },\r\n scrolling: {\r\n // in test environment, turn off virtualization.\r\n virtualized: (/isselenium/i).exec(window.location.search) === null,\r\n header: {\r\n type: 'fixed',\r\n attributes: { 'aria-label': i18n.getString('{{tableName}} table header').replace('{{tableName}}', tableName) },\r\n },\r\n },\r\n columns,\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': tableName },\r\n plugins,\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport { download } from '@bingads-webui/download-service';\r\nimport { BaseImportStep } from '../base-import-step';\r\nimport template from './import-summary-step.pug';\r\nimport { ImportSummaryGridView } from './grid/index';\r\n\r\nexport class ImportSummaryStep extends BaseImportStep {\r\n initialize({\r\n deps,\r\n }) {\r\n super.initialize({\r\n deps,\r\n });\r\n\r\n this.download = download;\r\n this.showPayment = deps.showPayment;\r\n this.summaryDisclaimerKey = 'Import_SummaryPage_Disclaimer';\r\n this.summaryDisclaimerHelpLinkKey = 'Import_SummaryPage_Disclaimer_HelpLink';\r\n this.summaryHelpTopic = deps.summaryHelpTopic;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .export-errors': 'exportErrors',\r\n };\r\n }\r\n\r\n get title() {\r\n return this.buildTitle(this.i18n.get('Import_ImportSummary_Title'));\r\n }\r\n\r\n get actions() {\r\n const buttons = [];\r\n\r\n if (this.showPayment) {\r\n buttons.push({\r\n name: 'add-payment',\r\n displayText: this.i18n.get('Import_ImportSummary_AddPaymentButton'),\r\n method: 'addPayment',\r\n enabled: true,\r\n htmlAttributes: {\r\n class: 'btn btn-primary',\r\n },\r\n });\r\n }\r\n buttons.push({\r\n name: 'view-imported-campaigns',\r\n displayText: this.i18n.get('Import_ImportSummary_ViewImportedCampaigns'),\r\n method: 'viewImportedCampaigns',\r\n enabled: true,\r\n htmlAttributes: {\r\n class: 'btn btn-default',\r\n },\r\n });\r\n\r\n return buttons;\r\n }\r\n\r\n addPayment() {\r\n this.repository.redirectToAddPayment();\r\n }\r\n\r\n exportErrors() {\r\n this.repository.exportErrorFile(this.importId)\r\n .then((data) => {\r\n this.download(data);\r\n })\r\n .catch(() => {\r\n this.handleGenericError();\r\n });\r\n }\r\n\r\n viewImportedCampaigns() {\r\n this.repository.redirectToImportedCampaigns(this.showSuccessMessage);\r\n }\r\n\r\n willShow() {\r\n this.deps.logActivities.renderImportSummary.start();\r\n const state = this.getState();\r\n const data = state && state.summary;\r\n const hasImportErrors = _.any(data, row => row.Errors)\r\n || _.any(data, row => row.HasWarning);\r\n let summaryInfos = [];\r\n\r\n // not show summary info in continue import\r\n if (!this.deps.isContinueImport && !_.isEmpty(this.summaryInfos)) {\r\n ({ summaryInfos } = this);\r\n }\r\n\r\n this.$el.html(template({\r\n i18n: this.i18n,\r\n hasImportErrors,\r\n summaryInfos,\r\n isBatch: state.isBatch,\r\n isForVNext: this.isForVNext,\r\n newUETCreated: state.newUETCreated,\r\n summaryDisclaimerKey: this.summaryDisclaimerKey,\r\n summaryDisclaimerHelpLinkKey: this.summaryDisclaimerHelpLinkKey,\r\n summaryHelpTopic: this.summaryHelpTopic || 'ext50851',\r\n showAlert: this.showAlert,\r\n }));\r\n\r\n this.showSuccessMessage = _.any(data, row => row.Additions || row.Changes || row.Deletions);\r\n\r\n if (this.showSuccessMessage) {\r\n $('.page-title-subheader')\r\n .attr('role', 'alert')\r\n .html(this.i18n.get('Import_SuccessMessage'))\r\n .addClass('import-successMessage');\r\n }\r\n if (this.scheduleFormView) {\r\n $('.schedule-import-step').html(this.scheduleFormView.render().el);\r\n }\r\n\r\n if (data) {\r\n this.grid = new ImportSummaryGridView({\r\n data,\r\n i18n: this.i18n,\r\n });\r\n this.$('.import-summary-grid').html(this.grid.render().el);\r\n } else {\r\n // todo: add error log.\r\n }\r\n this.importId = state.importId;\r\n this.deps.logActivities.renderImportSummary.stop();\r\n }\r\n\r\n remove() {\r\n if (this.grid) {\r\n this.grid.remove();\r\n this.grid = null;\r\n }\r\n\r\n super.remove();\r\n }\r\n}\r\n","/* eslint-disable max-len */\r\n/* eslint-disable quote-props */\r\n/* eslint-disable camelcase */\r\n\r\nimport _ from 'underscore';\r\n\r\n/* istanbul ignore next */\r\nconst stringKeyMap = {\r\n 'Import_AccountCurrencyConversion_Description': 'FacebookImport_AccountCurrencyConversion_Description',\r\n 'Import_AccountCurrencyConversion_AccountLabel': 'FacebookImport_AccountCurrencyConversion_AccountLabel',\r\n 'Import_AccountCurrencyConversion_BingAccountLabel': 'GoogleImport_AccountCurrencyConversion_BingAccountLabel',\r\n 'Import_AccountCurrencyConversion_Tooltip': 'GoogleImport_AccountCurrencyConversion_Tooltip',\r\n 'Import_AccountCurrencyConversion_Convert': 'GoogleImport_AccountCurrencyConversion_Convert',\r\n 'Import_AccountCurrencyConversion_NotConvert': 'GoogleImport_AccountCurrencyConversion_NotConvert',\r\n\r\n // account step\r\n 'Import_SelectAccount_AccountName': 'FacebookImport_SelectAccount_AccountName',\r\n 'Import_SelectAccount_CurrencyName': 'GoogleImport_SelectAccount_CurrencyName',\r\n 'Import_SelectAccount_CustomerId': 'FacebookImport_SelectAccount_CustomerId',\r\n 'Import_SelectAccount_NoAccounts': 'GoogleImport_SelectAccount_NoAccounts',\r\n 'Import_SelectAccount_NoActiveCampaigns': 'GoogleImport_SelectAccount_NoActiveCampaigns',\r\n 'Import_SelectAccount_NoCampaigns': 'GoogleImport_SelectAccount_NoCampaigns',\r\n 'Import_SelectAccount_Title': 'FacebookImport_SelectAccount_Title',\r\n 'Import_SelectAccount_Summary': 'FacebookImport_SelectAccount_Summary',\r\n 'Import_SelectAccount_NoAvailableAccounts': 'FacebookImport_SelectAccount_NoAvailableAccounts',\r\n\r\n // campaign step\r\n 'Import_SelectCampaignsAndAdGroups_Title': 'FacebookImport_SelectCampaignsAndAdGroups_Title',\r\n 'Import_SelectCampaign_Title': 'FacebookImport_SelectCampaign_Title',\r\n 'Import_SelectCampaignsAndAdGroups_Summary': 'FacebookImport_SelectCampaignsAndAdGroups_Summary',\r\n 'Import_SelectCampaign_Summary': 'FacebookImport_SelectCampaign_Summary',\r\n 'Import_SelectCampaign_CampaignName': 'GoogleImport_SelectCampaign_CampaignName',\r\n 'Import_SelectCampaign_Type': 'GoogleImport_SelectCampaign_Type',\r\n 'Import_SelectCampaign_Status': 'GoogleImport_SelectCampaign_Status',\r\n 'Import_Campaigns_ViewDetail_ColumnName': 'FacebookImport_Campaigns_ViewDetail_ColumnName',\r\n 'Import_SelectCampaign_Description': 'FacebookImport_SelectCampaign_Description',\r\n 'Import_SelectCampaign_ImportAll_ForSignUp': 'GoogleImport_SelectCampaign_ImportAll_ForSignUp',\r\n 'Import_SelectCampaign_ImportAll': 'GoogleImport_SelectCampaign_ImportAll',\r\n 'Import_SelectCampaign_ImportSpecific': 'GoogleImport_SelectCampaign_ImportSpecific',\r\n 'Import_SelectCampaign_AllCampaigns': 'GoogleImport_SelectCampaign_AllCampaigns',\r\n 'Import_SelectCampaign_AllPaused': 'GoogleImport_SelectCampaign_AllPaused',\r\n 'Import_SelectCampaign_AllActive': 'GoogleImport_SelectCampaign_AllActive',\r\n\r\n 'Import_Scheduled_Import_Throttling_Error': 'Google_Import_Scheduled_Import_Throttling_Error',\r\n\r\n // only needed for facebook\r\n 'Import_ImportSummary_LoginSummary': 'FacebookImport_ImportSummary_LoginSummary',\r\n 'Import_ImportSummary_AccountSummary': 'FacebookImport_ImportSummary_AccountSummary',\r\n 'Import_ImportSummary_CampaignsAndAdGroupsSummary': 'FacebookImport_ImportSummary_CampaignsAndAdGroupsSummary',\r\n 'Import_ImportSummary_CampaignSummary': 'FacebookImport_ImportSummary_CampaignSummary',\r\n\r\n // this is a facebook unique string\r\n 'Import_SelectCampaign_Facebook_Id': 'FacebookImport_SelectCampaign_Facebook_Id',\r\n // this is facebook specific, override the string\r\n 'Import_ImportOptions_SetMinBids_Generic': 'FacebookImport_ImportOptions_SetMinBids_Generic',\r\n};\r\n\r\nconst getStateAdapter = (getState, patchState) => ({\r\n getState: (originalState) => {\r\n const state = originalState || getState();\r\n const {\r\n facebookAccountSummary,\r\n facebookAccount,\r\n facebookCampaigns,\r\n facebookCustomerId,\r\n initialSettings,\r\n facebookCampaignsSummary,\r\n facebookLoginSummary,\r\n } = state || {};\r\n const importContext = initialSettings ? initialSettings.FacebookImportContext : null;\r\n const entitiesBlobName = importContext ? importContext.FacebookEntitiesBlobName : null;\r\n return {\r\n ...state,\r\n importSourceAccountSummary: facebookAccountSummary,\r\n importSourceAccount: facebookAccount,\r\n importSourceCampaigns: facebookCampaigns,\r\n importSourceCustomerId: facebookCustomerId\r\n || (facebookAccount && facebookAccount.CustomerId)\r\n || (importContext && importContext.AccountId),\r\n importSourceCampaignsSummary: facebookCampaignsSummary,\r\n importSourceLoginSummary: facebookLoginSummary,\r\n importContext,\r\n entitiesBlobName,\r\n };\r\n },\r\n\r\n patchState: ({\r\n importSourceAccountSummary,\r\n importSourceAccount,\r\n importSourceCampaigns,\r\n importSourceCustomerId,\r\n importSourceEntitiesSelectionData,\r\n importSourceCampaignsSummary,\r\n importSourceLoginSummary,\r\n ...others\r\n }) => {\r\n const patch = others;\r\n if (!_.isUndefined(importSourceAccountSummary)) {\r\n patch.facebookAccountSummary = importSourceAccountSummary;\r\n }\r\n if (!_.isUndefined(importSourceAccount)) {\r\n patch.facebookAccount = importSourceAccount;\r\n }\r\n if (!_.isUndefined(importSourceCampaigns)) {\r\n patch.facebookCampaigns = importSourceCampaigns;\r\n }\r\n if (!_.isUndefined(importSourceCustomerId)) {\r\n patch.facebookCustomerId = importSourceCustomerId;\r\n }\r\n if (!_.isUndefined(importSourceEntitiesSelectionData)) {\r\n patch.facebookEntitiesSelectionData = importSourceEntitiesSelectionData;\r\n }\r\n if (!_.isUndefined(importSourceCampaignsSummary)) {\r\n patch.facebookCampaignsSummary = importSourceCampaignsSummary;\r\n }\r\n if (!_.isUndefined(importSourceLoginSummary)) {\r\n patch.facebookLoginSummary = importSourceLoginSummary;\r\n }\r\n return patchState(patch);\r\n },\r\n});\r\n\r\nconst repoPropMapping = {\r\n getUserPreferences: 'getFacebookImportUserPreferences',\r\n prepareImportTaskItem: 'prepareFacebookImportTaskItem',\r\n};\r\n\r\nexport const ImportSourceFacebook = {\r\n name: 'facebook',\r\n getI18nString: (i18n, originMethodName, key, args) => {\r\n if (!i18n || !i18n[originMethodName]) {\r\n return '';\r\n }\r\n if (stringKeyMap[key]) {\r\n return i18n[originMethodName].apply(i18n, [stringKeyMap[key], ...args]);\r\n }\r\n return i18n[originMethodName].apply(i18n, [key, ...args]);\r\n },\r\n getStateAdapter,\r\n repoPropMapping,\r\n};\r\n","/* eslint-disable quote-props */\r\n\r\nimport _ from 'underscore';\r\n\r\n/* istanbul ignore next */\r\nconst stringKeyMap = {\r\n 'Import_AccountCurrencyConversion_Description': 'GoogleImport_AccountCurrencyConversion_Description',\r\n 'Import_AccountCurrencyConversion_AccountLabel': 'GoogleImport_AccountCurrencyConversion_GoogleAccountLabel',\r\n 'Import_AccountCurrencyConversion_BingAccountLabel': 'GoogleImport_AccountCurrencyConversion_BingAccountLabel',\r\n 'Import_AccountCurrencyConversion_Tooltip': 'GoogleImport_AccountCurrencyConversion_Tooltip',\r\n 'Import_AccountCurrencyConversion_Convert': 'GoogleImport_AccountCurrencyConversion_Convert',\r\n 'Import_AccountCurrencyConversion_NotConvert': 'GoogleImport_AccountCurrencyConversion_NotConvert',\r\n\r\n // account step\r\n 'Import_SelectAccount_AccountName': 'GoogleImport_SelectAccount_AccountName',\r\n 'Import_SelectAccount_CurrencyName': 'GoogleImport_SelectAccount_CurrencyName',\r\n 'Import_SelectAccount_CustomerId': 'GoogleImport_SelectAccount_CustomerId',\r\n 'Import_SelectAccount_NoAccounts': 'GoogleImport_SelectAccount_NoAccounts',\r\n 'Import_ImportSummary_AccountSummary': 'Import_ImportSummary_AccountSummary',\r\n 'Import_SelectAccount_NoActiveCampaigns': 'GoogleImport_SelectAccount_NoActiveCampaigns',\r\n 'Import_SelectAccount_NoCampaigns': 'GoogleImport_SelectAccount_NoCampaigns',\r\n 'Import_SelectAccount_Title': 'GoogleImport_SelectAccount_Title',\r\n 'Import_SelectAccount_Summary': 'GoogleImport_SelectAccount_Summary',\r\n 'Import_SelectAccount_NoAvailableAccounts': 'GoogleImport_SelectAccount_NoAvailableAccounts',\r\n\r\n // campaign step\r\n 'Import_SelectCampaignsAndAdGroups_Title': 'GoogleImport_SelectCampaignsAndAdGroups_Title',\r\n 'Import_SelectCampaign_Title': 'GoogleImport_SelectCampaign_Title',\r\n 'Import_SelectCampaignsAndAdGroups_Summary': 'GoogleImport_SelectCampaignsAndAdGroups_Summary',\r\n 'Import_SelectCampaign_Summary': 'GoogleImport_SelectCampaign_Summary',\r\n 'Import_SelectCampaign_CampaignName': 'GoogleImport_SelectCampaign_CampaignName',\r\n 'Import_SelectCampaign_Type': 'GoogleImport_SelectCampaign_Type',\r\n 'Import_SelectCampaign_Status': 'GoogleImport_SelectCampaign_Status',\r\n 'Import_Campaigns_ViewDetail_ColumnName': 'GoogleImport_GoogleAdsCampaigns_ViewDetail_ColumnName',\r\n 'Import_SelectCampaign_Description': 'GoogleImport_SelectCampaign_Description',\r\n 'Import_SelectCampaign_ImportAll_ForSignUp': 'GoogleImport_SelectCampaign_ImportAll_ForSignUp',\r\n 'Import_SelectCampaign_ImportAll': 'GoogleImport_SelectCampaign_ImportAll',\r\n 'Import_SelectCampaign_ImportSpecific': 'GoogleImport_SelectCampaign_ImportSpecific',\r\n 'Import_SelectCampaign_DisplayCampaignAlert': 'GoogleImport_SelectCampaign_DisplayCampaignAlert',\r\n 'Import_SelectCampaign_DisplayCampaignAlert_Link': 'GoogleImport_SelectCampaign_DisplayCampaignAlert_Link',\r\n 'Import_SelectCampaign_AllCampaigns': 'GoogleImport_SelectCampaign_AllCampaigns',\r\n 'Import_SelectCampaign_AllPaused': 'GoogleImport_SelectCampaign_AllPaused',\r\n 'Import_SelectCampaign_AllActive': 'GoogleImport_SelectCampaign_AllActive',\r\n\r\n 'Import_Scheduled_Import_Throttling_Error': 'Google_Import_Scheduled_Import_Throttling_Error',\r\n};\r\n\r\nconst getStateAdapter = (getState, patchState) => ({\r\n getState: (originalState) => {\r\n const state = originalState || getState();\r\n const {\r\n googleAccountSummary,\r\n googleAccount,\r\n googleCampaigns,\r\n googleCustomerId,\r\n initialSettings,\r\n googleCampaignsSummary,\r\n googleLoginSummary,\r\n } = state || {};\r\n const importContext = initialSettings ? initialSettings.AdWordsImportContext : null;\r\n const entitiesBlobName = importContext ? importContext.GoogleEntitiesBlobName : null;\r\n return {\r\n ...state,\r\n importSourceAccountSummary: googleAccountSummary,\r\n importSourceAccount: googleAccount,\r\n importSourceCampaigns: googleCampaigns,\r\n importSourceCustomerId: googleCustomerId || (importContext && importContext.CustomerId),\r\n importSourceCampaignsSummary: googleCampaignsSummary,\r\n importSourceLoginSummary: googleLoginSummary,\r\n importContext,\r\n entitiesBlobName,\r\n };\r\n },\r\n\r\n patchState: ({\r\n importSourceAccountSummary,\r\n importSourceAccount,\r\n importSourceCampaigns,\r\n importSourceCustomerId,\r\n importSourceEntitiesSelectionData,\r\n importSourceCampaignsSummary,\r\n importSourceLoginSummary,\r\n ...others\r\n }) => {\r\n const patch = others;\r\n if (!_.isUndefined(importSourceAccountSummary)) {\r\n patch.googleAccountSummary = importSourceAccountSummary;\r\n }\r\n if (!_.isUndefined(importSourceAccount)) {\r\n patch.googleAccount = importSourceAccount;\r\n }\r\n if (!_.isUndefined(importSourceCampaigns)) {\r\n patch.googleCampaigns = importSourceCampaigns;\r\n }\r\n if (!_.isUndefined(importSourceCustomerId)) {\r\n patch.googleCustomerId = importSourceCustomerId;\r\n }\r\n if (!_.isUndefined(importSourceEntitiesSelectionData)) {\r\n patch.googleEntitiesSelectionData = importSourceEntitiesSelectionData;\r\n }\r\n if (!_.isUndefined(importSourceCampaignsSummary)) {\r\n patch.googleCampaignsSummary = importSourceCampaignsSummary;\r\n }\r\n if (!_.isUndefined(importSourceLoginSummary)) {\r\n patch.googleLoginSummary = importSourceLoginSummary;\r\n }\r\n return patchState(patch);\r\n },\r\n});\r\n\r\nconst repoPropMapping = {\r\n getUserPreferences: 'getGoogleImportUserPreferences',\r\n prepareImportTaskItem: 'prepareGoogleImportTaskItem',\r\n};\r\n\r\nexport const ImportSourceGoogle = {\r\n name: 'google',\r\n getI18nString: (i18n, originMethodName, key, args) => {\r\n if (!i18n || !i18n[originMethodName]) {\r\n return '';\r\n }\r\n return stringKeyMap[key] ?\r\n i18n[originMethodName].apply(i18n, [stringKeyMap[key], ...args]) :\r\n i18n[originMethodName].apply(i18n, [key, ...args]);\r\n },\r\n getStateAdapter,\r\n repoPropMapping,\r\n};\r\n","import { ImportSourceFacebook } from './facebook';\r\nimport { ImportSourceGoogle } from './google';\r\n\r\nfunction getAdaptedRepository(propMapping, repo) {\r\n function AdaptedRepository() {}\r\n AdaptedRepository.prototype = repo;\r\n const adaptedRepo = new AdaptedRepository();\r\n Object.keys(propMapping).forEach((newPropName) => {\r\n const propName = propMapping[newPropName];\r\n adaptedRepo[newPropName] = repo[propName];\r\n });\r\n return adaptedRepo;\r\n}\r\n\r\nfunction geti18nWrapper(i18n, getI18nString) {\r\n function I18nWrapper() {\r\n this.get = (key, ...args) => getI18nString(i18n, 'get', key, args);\r\n this.getString = (key, ...args) => getI18nString(i18n, 'getString', key, args);\r\n }\r\n I18nWrapper.prototype = i18n;\r\n const newI18n = new I18nWrapper();\r\n return newI18n;\r\n}\r\n\r\nconst getImportSource = (source, i18n, repository) => {\r\n const {\r\n name,\r\n getI18nString,\r\n getStateAdapter,\r\n repoPropMapping,\r\n } = source;\r\n const i18nWrapper = geti18nWrapper(i18n, getI18nString);\r\n return {\r\n name,\r\n i18n: i18nWrapper,\r\n getStateAdapter,\r\n repository: repository ? getAdaptedRepository(repoPropMapping, repository) : null,\r\n };\r\n};\r\n\r\nexport const ImportSource = {\r\n facebook: (i18n, repository) => getImportSource(ImportSourceFacebook, i18n, repository),\r\n google: (i18n, repository) => getImportSource(ImportSourceGoogle, i18n, repository),\r\n};\r\n","import _ from 'underscore';\r\nimport { ACTIVE_STATUS } from './constants';\r\n\r\nexport const getShowNoActiveCampaignCouponAlert = (coupon, data, selectionData, callback) => {\r\n let showNoActiveCampaignCouponAlert;\r\n let campaignIds = null;\r\n let campaignMap = null;\r\n if (!coupon || _.isEmpty(selectionData)) {\r\n showNoActiveCampaignCouponAlert = false;\r\n } else {\r\n campaignMap = {};\r\n _.each(data, (obj) => {\r\n campaignMap[obj.Id] = obj.Status;\r\n });\r\n campaignIds = _.union(\r\n selectionData.selectedCampaignIds,\r\n selectionData.selectedWithActiveOnly,\r\n _.map(\r\n _.keys(selectionData.selectedAdGroupMap),\r\n campaignId => parseInt(campaignId, 10)\r\n )\r\n );\r\n\r\n showNoActiveCampaignCouponAlert = !_.isEmpty(campaignIds) && !_.any(\r\n campaignIds,\r\n campaignId => campaignMap[campaignId] === ACTIVE_STATUS\r\n );\r\n }\r\n\r\n if (callback) callback(showNoActiveCampaignCouponAlert);\r\n\r\n return showNoActiveCampaignCouponAlert;\r\n};\r\n","export const ACTIVE_STATUS = 'Active';\r\nexport const PAUSED_STATUS = 'Paused';\r\n","import _ from 'underscore';\r\n\r\nexport function generateAllowedEntities({\r\n i18n,\r\n permissions = {},\r\n allowedChannels = [],\r\n isCustomerLevel = false,\r\n importType = null,\r\n overrideEntitiesGenerator = null,\r\n}) {\r\n const uetPermission = isCustomerLevel || _.contains(allowedChannels, importType);\r\n const isPmaxEntityContainsInImport = isCustomerLevel || importType === 'GoogleAPIImport' || importType === 'GoogleImport';\r\n const similarAudienceTargetImportPermission =\r\n permissions.IsSimilarAudienceTargetImportEnabled && uetPermission;\r\n // [MT name, UI name]\r\n // Please add UI name localization string into both all-string.js and legacy-string.js\r\n let entitiesNamesMapping = _.compact([\r\n ['Campaign', 'Import_ImportSummary_Campaigns'],\r\n ['Location Target', 'Import_ImportSummary_LocationTarget'],\r\n ['Ad Group', 'Import_ImportSummary_AdGroups'],\r\n isPmaxEntityContainsInImport && ['Asset Group', 'Import_ImportSummary_AssetGroups'],\r\n isPmaxEntityContainsInImport && ['Asset Group Listing Group', 'Import_ImportSummary_ListingGroups'],\r\n isPmaxEntityContainsInImport && ['Audience Group', 'Import_ImportSummary_AudienceGroups'],\r\n ['Ad', 'Import_ImportSummary_Ads'],\r\n ['Keyword', 'Import_ImportSummary_Keywords'],\r\n ['Ad Extension', 'Import_ImportSummary_AdExtensions'],\r\n ['Ad Group Product Partition', 'Import_ImportSummary_ProductPartition'],\r\n ['Campaign Product Scope', 'Import_ImportSummary_CampaignCriterions'],\r\n ['Campaign Negative Dynamic Search Ad Target', 'Import_ImportSummary_CampaignDSACriterion'],\r\n ['AdGroup DSA Criterion', 'Import_ImportSummary_AdGroupDSACriterion'],\r\n ['Account Shared Negative Keyword', 'Import_ImportSummary_AccountSharedNegativeKeyword'],\r\n ['Campaign Negative Keyword', 'Import_ImportSummary_CampaignNegativeKeyword'],\r\n ['Ad Group Negative Keyword', 'Import_ImportSummary_AdGroupNegativeKeyword'],\r\n ['Campaign Negative Site', 'Import_ImportSummary_CampaignNegativeSite'],\r\n ['Ad Group Negative Site', 'Import_ImportSummary_AdGroupNegativeSite'],\r\n ['Negative Keyword List', 'Import_ImportSummary_NegativeKeywordList'],\r\n ['Shared Negative Keyword', 'Import_ImportSummary_SharedNegativeKeyword'],\r\n ['Image', 'Import_ImportSummary_Images'],\r\n ['Campaign DeviceOS Criterion', 'Import_ImportSummary_CampaignDeviceTargets'],\r\n ['Ad Group DeviceOS Criterion', 'Import_ImportSummary_AdGroupDeviceTargets'],\r\n ['Campaign DayTime Criterion', 'Import_ImportSummary_CampaignDayTimeTargets'],\r\n ['Ad Group DayTime Criterion', 'Import_ImportSummary_AdGroupDayTimeTargets'],\r\n ['Campaign Location Criterion', 'Import_ImportSummary_CampaignLocationTargets'],\r\n ['Ad Group Location Criterion', 'Import_ImportSummary_AdGroupLocationTargets'],\r\n ['Campaign Negative Location Criterion', 'Import_ImportSummary_CampaignNegativeLocationTargets'],\r\n ['Ad Group Negative Location Criterion', 'Import_ImportSummary_AdGroupNegativeLocationTargets'],\r\n ['Campaign Location Intent Criterion', 'Import_ImportSummary_CampaignLocationIntentTargets'],\r\n ['Ad Group Location Intent Criterion', 'Import_ImportSummary_AdGroupLocationIntentTargets'],\r\n ['Campaign Radius Criterion', 'Import_ImportSummary_CampaignRadiusTargets'],\r\n ['Ad Group Radius Criterion', 'Import_ImportSummary_AdGroupRadiusTargets'],\r\n ['Campaign Age Criterion', 'Import_ImportSummary_CampaignAgeTargets'],\r\n ['Ad Group Age Criterion', 'Import_ImportSummary_AdGroupAgeTargets'],\r\n ['Ad Group Negative Age Criterion', 'Import_ImportSummary_AdGroupNegativeAgeTargets'],\r\n ['Campaign Gender Criterion', 'Import_ImportSummary_CampaignGenderTargets'],\r\n ['Ad Group Gender Criterion', 'Import_ImportSummary_AdGroupGenderTargets'],\r\n ['Ad Group Negative Gender Criterion', 'Import_ImportSummary_AdGroupNegativeGenderTargets'],\r\n permissions.IsCampaignAudienceTargetGoogleImportEnabled && uetPermission && ['Campaign In Market Audience Association', 'Import_ImportSummary_CampaignAudienceTargets'],\r\n ['Ad Group In Market Audience Association', 'Import_ImportSummary_AdGroupAudienceTargets'],\r\n permissions.IsCampaignAudienceTargetGoogleImportEnabled && uetPermission && ['Campaign Negative In Market Audience Association', 'Import_ImportSummary_CampaignNegativeAudienceTargets'],\r\n ['Ad Group Negative In Market Audience Association', 'Import_ImportSummary_AdGroupNegativeAudienceTargets'],\r\n ['Feed', 'Import_ImportSummary_Feeds'],\r\n ['Feed Item', 'Import_ImportSummary_FeedItems'],\r\n ['Others', 'Import_ImportSummary_Others'],\r\n ['Smart Listing', 'Import_ImportSummary_SmartListing'],\r\n uetPermission && ['Remarketing List', 'Import_ImportSummary_RemarketingList'],\r\n uetPermission && ['Combined List', 'Import_ImportSummary_CombinedList'],\r\n uetPermission && ['Ad Group Remarketing List Association', 'Import_ImportSummary_AdGroupRemarketingListTargets'],\r\n uetPermission && ['Ad Group Negative Remarketing List Association', 'Import_ImportSummary_AdGroupNegativeRemarketingListTargets'],\r\n uetPermission && ['Campaign Remarketing List Association', 'Import_ImportSummary_CampaignRemarketingListTargets'],\r\n uetPermission && ['Campaign Negative Remarketing List Association', 'Import_ImportSummary_CampaignNegativeRemarketingListTargets'],\r\n uetPermission && ['Ad Group Combined List Association', 'Import_ImportSummary_AdGroupCombinedListTargets'],\r\n uetPermission && ['Ad Group Negative Combined List Association', 'Import_ImportSummary_AdGroupNegativeCombinedListTargets'],\r\n uetPermission && ['Campaign Combined List Association', 'Import_ImportSummary_CampaignCombinedListTargets'],\r\n uetPermission && ['Campaign Negative Combined List Association', 'Import_ImportSummary_CampaignNegativeCombinedListTargets'],\r\n similarAudienceTargetImportPermission && ['Ad Group Similar Remarketing List Association', 'Import_ImportSummary_AdGroupSimilarRemarketingListTargets'],\r\n similarAudienceTargetImportPermission && ['Ad Group Negative Similar Remarketing List Association', 'Import_ImportSummary_AdGroupNegativeSimilarRemarketingListTargets'],\r\n similarAudienceTargetImportPermission && ['Campaign Similar Remarketing List Association', 'Import_ImportSummary_CampaignSimilarRemarketingListTargets'],\r\n similarAudienceTargetImportPermission && ['Campaign Negative Similar Remarketing List Association', 'Import_ImportSummary_CampaignNegativeSimilarRemarketingListTargets'],\r\n permissions.dynamic && permissions.dynamic.RSAAdCustomizerEnhancement && ['Adcustomizer Attribute', 'Import_ImportSummary_AdCustomizerAttributes'],\r\n permissions.IsGoogleConversionGoalsImportEnabled && ['Conversion Goal', 'Import_ImportSummary_ConversionGoals'],\r\n ]);\r\n\r\n // get new entitiesNamesMapping if override generator exists\r\n if (overrideEntitiesGenerator) {\r\n entitiesNamesMapping = overrideEntitiesGenerator(entitiesNamesMapping, permissions);\r\n }\r\n\r\n const allowedList = _.reduce(entitiesNamesMapping, (memo, entityItem) => {\r\n const MTName = entityItem[0];\r\n const UINameKey = entityItem[1];\r\n\r\n memo.push({\r\n MTName,\r\n UIName: i18n && i18n.getString(UINameKey),\r\n UINameKey,\r\n });\r\n return memo;\r\n }, []);\r\n\r\n return allowedList;\r\n}\r\n","import ko from 'knockout';\r\n\r\nexport class UIBlockerWithStepsViewModel {\r\n constructor({\r\n steps,\r\n i18n,\r\n }) {\r\n this.currentStatusOrder = ko.observable(0);\r\n this.steps = steps;\r\n this.stepText = i18n.get('Import_IndicatorImportStep');\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport template from './ui-blocker-with-steps-template.pug';\r\nimport { UIBlockerWithStepsViewModel } from './ui-blocker-with-steps-viewmodel';\r\n\r\nexport class UIBlockerWithStepsView extends Backbone.View {\r\n initialize({\r\n i18n,\r\n steps,\r\n repository,\r\n closeBlock,\r\n }) {\r\n this.i18n = i18n;\r\n this.steps = steps;\r\n this.koModel = new UIBlockerWithStepsViewModel({ steps, i18n });\r\n this.repository = repository;\r\n this.closeBlock = _.isFunction(closeBlock) ? closeBlock : _.noop;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .unblockImportLink': 'goToCampaigns',\r\n 'click #historyLink': 'goToHistoryLink',\r\n };\r\n }\r\n\r\n render() {\r\n const { i18n } = this;\r\n\r\n this.$el.html(template({\r\n i18n,\r\n steps: this.steps,\r\n subTextHtml: i18n.get('Import_UnblockText').replace(\r\n '{0}',\r\n `${i18n.get('Scheduled_Import_History_Page')}`\r\n ),\r\n }));\r\n ko.applyBindings(this.koModel, this.el);\r\n return this;\r\n }\r\n\r\n unblockImport() {\r\n this.repository.setInProcessImportCookie({ importId: this.importId });\r\n clearInterval(this.timeOut);\r\n }\r\n\r\n goToCampaigns() {\r\n this.unblockImport();\r\n this.closeBlock();\r\n // closeBlock is async and will clear blocker in next tick.\r\n // So put redirectToCampaigns also in next tick.\r\n _.defer(() => {\r\n this.repository.redirectToCampaigns();\r\n });\r\n return true;\r\n }\r\n\r\n goToHistoryLink() {\r\n this.unblockImport();\r\n this.closeBlock();\r\n _.defer(() => {\r\n this.repository.redirectToImportScheduleAndHistory();\r\n });\r\n return true;\r\n }\r\n\r\n update({ currentStatusOrder, importId }) {\r\n this.importId = importId;\r\n\r\n this.koModel.currentStatusOrder((this.steps[currentStatusOrder] && currentStatusOrder) || 0);\r\n }\r\n}\r\n","export const defaultOptions = {\r\n UserSetProperties2: null,\r\n ImportNewEntities: true,\r\n // 011...1101 length 27\r\n ImportNewOptions: 67108861, // bit mask indicating all options selected except mark as paused\r\n ImportNewLabelsAndAssociations: true,\r\n ImportNewCustomFiltersForShoppingCampaigns: true,\r\n UpdateEntityPreferences: {\r\n ImportUpdatedEntities: true,\r\n // 1111..1111 length 35\r\n ImportUpdateOptions: 34359738367, // bit mask indicating all available options selected\r\n },\r\n UpdateLabelsAndAssociations: true,\r\n UpdateCustomFiltersForShoppingCampaigns: true,\r\n ImportDeletedEntities: false,\r\n DefaultBidsBelowMinToAdCenterMinBid: true,\r\n DefaultCampaignBudgetBelowMinToAdCenterMinBudget: true,\r\n RaiseLowBidsToMinServingBidsForBsc: true,\r\n AppendDestUrlPreference: {\r\n UseAppendString: false,\r\n AppendStringForDestinationUrl: '',\r\n },\r\n SearcAndReplaceDestUrlPreference: {\r\n UseSearchAndReplaceString: false,\r\n SearchStringForDestinationUrl: '',\r\n ReplaceStringForDestinationUrl: '',\r\n },\r\n AppendTrackingTemplatePreference: {\r\n UseAppendString: false,\r\n AppendStringForTrackingTemplate: '',\r\n },\r\n SearchAndReplaceTrackingTemplatePreference: {\r\n UseSearchAndReplaceString: false,\r\n SearchStringForTrackingTemplate: '',\r\n ReplaceStringForTrackingTemplate: '',\r\n },\r\n SearchAndReplaceForCustomParameters: {\r\n EnableSearchAndReplace: false,\r\n IgnoreCaseInPlainText: true,\r\n ReplaceString: '',\r\n SearchString: '',\r\n UseRegularExpression: false,\r\n },\r\n SearchAndReplaceForFinalURLSuffix: {\r\n EnableSearchAndReplace: false,\r\n IgnoreCaseInPlainText: true,\r\n ReplaceString: '',\r\n SearchString: '',\r\n UseRegularExpression: false,\r\n },\r\n StoreIdForImportedProductAdExtensions: null,\r\n ImportSearchAndDsaMixedCampaignAsSearchCampaign: false,\r\n};\r\n","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport $ from 'jquery';\r\n\r\nimport { AzureUploader } from '@bingads-webui/azure-upload';\r\nimport { ODataAzureUploader } from '@bingads-webui/odata-azure-upload';\r\nimport * as urlUtil from '@bingads-webui/url-util';\r\n// TODO: Fix exports for cookie, safeJson shared components\r\nimport { get, set } from '@bingads-webui/cookie';\r\nimport { http } from '@bingads-webui/http-util';\r\nimport { parseSync, stringifySync } from '@bingads-webui/safe-json';\r\n\r\nimport { generateAllowedEntities } from './entities-name-localizer';\r\nimport { UIBlockerWithStepsView } from './blocker/index';\r\nimport { defaultOptions } from './default-options';\r\n\r\nconst COOKIE_PATH = '/';\r\nconst IMPORT_COOKIE_NAME = 'ImportCookie';\r\n\r\nconst STATUS_NOTSTARTED = 1;\r\nconst STATUS_UPLOAD = 2;\r\nconst STATUS_VALIDATIONINPROGRESS = 3;\r\nconst STATUS_VALIDATIONCOMPLETED = 4;\r\nconst STATUS_SUBMITINPROGRESS = 5;\r\nconst STATUS_COMPLETE = 6;\r\nconst STATUS_CANCELLED = 7;\r\nconst STATUS_FAILED = 8;\r\n// Status, not ImportStatus\r\nconst TASK_ITEM_EXECUTION_STATUS_QUEUED = 'PendingExecution';\r\n\r\nconst statusEnumValueToKeyMap = [];\r\nstatusEnumValueToKeyMap[STATUS_NOTSTARTED] = 'NotStarted';\r\nstatusEnumValueToKeyMap[STATUS_UPLOAD] = 'UploadInProgress';\r\nstatusEnumValueToKeyMap[STATUS_VALIDATIONINPROGRESS] = 'ValidationInProgress';\r\nstatusEnumValueToKeyMap[STATUS_VALIDATIONCOMPLETED] = 'ValidationCompleted';\r\nstatusEnumValueToKeyMap[STATUS_SUBMITINPROGRESS] = 'SubmitInProgress';\r\nstatusEnumValueToKeyMap[STATUS_COMPLETE] = 'Complete';\r\nstatusEnumValueToKeyMap[STATUS_CANCELLED] = 'Cancelled';\r\nstatusEnumValueToKeyMap[STATUS_FAILED] = 'Failed';\r\n\r\nconst OpportunityApplyStatus = {\r\n Opportunity_NotStart: 'NotStart',\r\n Opportunity_InProgress: 'InProgress',\r\n Opportunity_Succeed: 'Succeed',\r\n Opportunity_Failed: 'Failed',\r\n};\r\n\r\nconst importErrorBulkFileType = 'ImportErrorFile';\r\n\r\nconst getImportStatusWithIdUrlTmpl =\r\n '/ImportSession/ImportStatus(CustomerId=:customer_id,AccountId=:account_id)';\r\nconst getImportSummaryUrlTmpl =\r\n '/ImportSession/ImportSubmittedCounts(CustomerId=:customer_id,AccountId=:account_id)';\r\nconst createTaskExecutionUrlTmpl = '/Customers()/Accounts()/TaskItems?%24expand=TaskItemExecutions';\r\nconst pollTaskExecutionUrlTmpl = '/Customers()/Accounts()/TaskItemExecutions({{taskItemExecutionId}})';\r\nconst updateImportStatusUrlTmpl =\r\n '/ImportSession/UpdateImportStatus(CustomerId=:customer_id,AccountId=:account_id)';\r\nconst exportErrorFileUrlTmpl =\r\n '/ImportSession/ExportImportedData(CustomerId=:customer_id,AccountId=:account_id)';\r\nconst importUserPreferencesUrlTmpl =\r\n '/ImportSession/ImportUserPreferences(CustomerId=:customer_id,AccountId=:account_id)';\r\nconst importUserPreferenceUrlTmpl =\r\n '/ImportSession/ImportUserPreference(CustomerId=:customer_id,AccountId=:account_id)';\r\nconst defaultImportUserPreferenceUrlTmpl =\r\n '/ImportSession/DefaultImportUserPreference(CustomerId=:customer_id,AccountId=:account_id)';\r\nconst importMultiAccountUserPreferenceUrlTmpl =\r\n '/ImportSession/MultiAccountGoogleImportUserPreference(CustomerId=:customer_id)';\r\nconst getBulkFileUrlTmpl = '/BulkUploadFiles/GetBulkFileUrl(AccountId=:account_id,fileIdentifier={{blobName}},BulkFileType={{bulkFileType}})';\r\nconst campaignUrl = '/Campaign/Campaigns';\r\nconst fileImportUrl = '/Campaign/ImportCampaign/FileImport';\r\nconst newGridLastImportFilter = {\r\n UpdatedOnLastImport: {\r\n $eq: true,\r\n },\r\n};\r\n\r\nexport const getPendingImportStatus = () => new Promise(resolve => resolve(null));\r\n\r\nexport class CommonImportRepository {\r\n constructor({\r\n deps,\r\n type = '',\r\n importType,\r\n }) {\r\n this.deps = deps;\r\n this.type = type;\r\n this.importType = importType;\r\n this.i18n = deps.i18n;\r\n this.i18nErrors = deps.i18nErrors;\r\n this.adGroupMedium = deps.adGroupMedium;\r\n this.storeList = deps.storeList;\r\n this.config = deps.config;\r\n this.permissions = this.config.get('Permissions') || {};\r\n this.allowedList = generateAllowedEntities({\r\n i18n: this.i18n,\r\n permissions: this.permissions,\r\n allowedChannels: ['GoogleImport', 'FacebookImport', 'AmazonImport', 'PinterestImport'],\r\n importType: type,\r\n overrideEntitiesGenerator: deps.overrideEntitiesGenerator,\r\n });\r\n this.language = deps.language;\r\n this.market = deps.market;\r\n this.odata = deps.odata;\r\n this.paymentMethodUrl = deps.paymentMethodUrl;\r\n this.statusKeyToOrderMap = deps.statusKeyToOrderMap;\r\n this.statusOrderToBlockerTitleMap = deps.statusOrderToBlockerTitleMap;\r\n this.timeZoneEnumMapper = deps.timeZoneEnumMapper;\r\n this.aid = this.config.get('CurrentAccount').Id;\r\n this.cid = this.config.get('CurrentCustomer').Id;\r\n this.uid = this.config.get('CurrentUser').Id;\r\n this.advCustomerId = this.config.get('CurrentAccount').AdvertiserCustomerID;\r\n this.sharedCookieDomain = deps.sharedCookieDomain;\r\n this.coupon = deps.coupon && deps.coupon.rawData;\r\n this.calloutcardCoupon = deps.calloutcardCoupon;\r\n this.ccJsData = deps.ccJsData;\r\n // this is used for MT testing purpose. Only enabled on tip.\r\n // when true, type field is set with 'Test' suffix when creating task item execution.\r\n this.testTypeSuffix = this.permissions.IsUseImportTestTypeForImportTaskExecutionEnabled ? 'Test' : '';\r\n this.opportunityApplyStatus = OpportunityApplyStatus.Opportunity_NotStart;\r\n this.localImportCookie = null;\r\n }\r\n\r\n getImportCookieFromLocal = () => this.localImportCookie;\r\n\r\n setImportCookieToLocal = (cookieJson) => {\r\n this.localImportCookie = cookieJson;\r\n };\r\n\r\n cookieKeyByAccountId() {\r\n return `${this.aid}_aid`;\r\n }\r\n\r\n filterLocalizedEntities(data) {\r\n const dashVal = this.i18n.get('Import_LastImport_Dash');\r\n const filtered = _.chain(this.allowedList)\r\n .filter(value => data[value.MTName])\r\n .map((value) => {\r\n const entityData = data[value.MTName];\r\n const original = {\r\n UINameKey: value.UINameKey,\r\n Name: value.UIName,\r\n Additions: entityData.Additions,\r\n Changes: entityData.Changes,\r\n Deletions: entityData.Deletions,\r\n Errors: entityData.Errors,\r\n Total: entityData.Total,\r\n HasWarning: entityData.HasWarning,\r\n };\r\n\r\n // for null/undefined value, display '-'\r\n _.each(original, (val, key) => {\r\n if (_.isNull(val) || _.isUndefined(val)) {\r\n // Override HasWarning to false if its value is undefined or null\r\n original[key] = (key === 'HasWarning') ? false : dashVal;\r\n }\r\n });\r\n\r\n return original;\r\n })\r\n .value();\r\n\r\n return filtered;\r\n }\r\n\r\n getImportStatus() {\r\n // pass import id 0 for fetching last import\r\n const url = this.formatUrl(\r\n {\r\n url: getImportStatusWithIdUrlTmpl,\r\n queryParameters: {\r\n importId: 0,\r\n },\r\n },\r\n false\r\n );\r\n\r\n return this.odata.get(url)\r\n .then((status) => {\r\n const mappedStatus = _.clone(status);\r\n\r\n mappedStatus.CurrentImportStatus = statusEnumValueToKeyMap[status.CurrentImportStatus];\r\n return mappedStatus;\r\n });\r\n }\r\n\r\n isAnyImportPending() {\r\n return getPendingImportStatus(this.odata);\r\n }\r\n\r\n isImportStatusValid(status) {\r\n return status && status.ImportId !== 0;\r\n }\r\n\r\n redirectToInProgressImport(url, importId) {\r\n const redirectUrl = this.formatUrl({\r\n url,\r\n queryParameters: {\r\n importId,\r\n },\r\n }, true);\r\n\r\n this.navigateToUrl(redirectUrl);\r\n }\r\n\r\n redirectToInProgressFileImport(importId) {\r\n if (this.deps.isForVNext) {\r\n this.deps.router.navigateToRoute('fileimport', { importId });\r\n } else {\r\n this.redirectToInProgressImport(fileImportUrl, importId);\r\n }\r\n }\r\n\r\n toTargetImportStatusStep(importId, routePath, toImportStatusStep = _.noop) {\r\n const { pathname } = window.location;\r\n if (pathname.search(`/${routePath}`) !== -1) {\r\n toImportStatusStep();\r\n } else {\r\n this.deps.router.navigateToRoute(routePath, { importId });\r\n }\r\n }\r\n\r\n redirectToInProgressGoogleImport(importId, toImportStatusStep) {\r\n if (this.deps.isForVNext) {\r\n this.toTargetImportStatusStep(importId, 'googleimport', toImportStatusStep);\r\n } else {\r\n // ad hoc fix for MAE\r\n const googleImportUrl = '/Campaign/ImportCampaign/GoogleImport';\r\n this.redirectToInProgressImport(googleImportUrl, importId);\r\n }\r\n }\r\n\r\n redirectToInProgressFacebookImport(importId, toImportStatusStep) {\r\n this.toTargetImportStatusStep(importId, 'facebookimport', toImportStatusStep);\r\n }\r\n\r\n // options: { url, routerValue, queryParameters }\r\n formatUrl(options, addDefaultParameters = false) {\r\n let url;\r\n let queryParameters;\r\n let routerValue;\r\n\r\n if (_.isString(options)) {\r\n url = options;\r\n } else {\r\n ({ url } = options);\r\n ({ queryParameters } = options);\r\n ({ routerValue } = options);\r\n }\r\n if (addDefaultParameters) {\r\n queryParameters = _.extend({}, queryParameters, {\r\n aid: this.aid,\r\n cid: this.cid,\r\n uid: this.uid,\r\n });\r\n }\r\n\r\n if (!_.isEmpty(queryParameters)) {\r\n url = urlUtil.queryify(url, queryParameters);\r\n }\r\n\r\n if (routerValue) {\r\n url += `#customer/${this.cid}/account/${this.aid}/${routerValue}`;\r\n }\r\n\r\n if (this.newRepositoryEnabled) {\r\n url = url.replace(':account_id', this.aid);\r\n }\r\n\r\n return url;\r\n }\r\n\r\n navigateToUrl(url) {\r\n window.location.href = url;\r\n }\r\n\r\n redirectToAddPayment() {\r\n const url = this.formatUrl({\r\n url: this.paymentMethodUrl,\r\n }, true);\r\n\r\n this.navigateToUrl(url);\r\n }\r\n\r\n redirectToImportedCampaigns(hasSuccessResult) {\r\n if (_.isFunction(this.deps.redirectToImportedCampaigns)) {\r\n this.deps.redirectToImportedCampaigns();\r\n } else {\r\n this.deps.campaignFilterStore.save({ query: newGridLastImportFilter });\r\n this.deps.adgroupFilterStore.save({ query: newGridLastImportFilter });\r\n this.deps.adFilterStore.save({ query: newGridLastImportFilter });\r\n\r\n if (this.deps.isForVNext) {\r\n if (hasSuccessResult) {\r\n this.deps.CampaignCacheManager.invalidate('Campaign');\r\n }\r\n this.deps.router.navigateToRoute('campaign');\r\n } else {\r\n const url = this.formatUrl({\r\n url: campaignUrl,\r\n queryParameters: {\r\n filterLastImport: true,\r\n },\r\n routerValue: 'campaign',\r\n }, true);\r\n this.navigateToUrl(url);\r\n }\r\n }\r\n }\r\n\r\n redirectToCampaigns() {\r\n if (this.deps.isForVNext) {\r\n this.deps.router.navigateToRoute('campaign');\r\n } else {\r\n this.navigateToUrl(this.formatUrl({\r\n url: campaignUrl,\r\n routerValue: 'campaign',\r\n }, true));\r\n }\r\n }\r\n\r\n redirectToImportScheduleAndHistory() {\r\n if (this.deps.isForVNext) {\r\n if (this.type) {\r\n this.deps.router.navigateToRoute('importschedule', { importType: this.type.toLowerCase() });\r\n } else {\r\n this.deps.router.navigateToRoute('importschedule');\r\n }\r\n } else {\r\n const url = this.formatUrl({\r\n url: campaignUrl,\r\n routerValue: 'importschedule',\r\n }, true);\r\n\r\n this.navigateToUrl(url);\r\n }\r\n }\r\n\r\n redirectToMetaImport(options) {\r\n if (options) {\r\n this.deps.router.navigateToRoute('facebookimport', options);\r\n } else {\r\n this.deps.router.navigateToRoute('facebookimport');\r\n }\r\n }\r\n\r\n cancelCurrentImport(importId) {\r\n const url = this.formatUrl({\r\n url: updateImportStatusUrlTmpl,\r\n queryParameters: {\r\n importId,\r\n status: STATUS_CANCELLED,\r\n },\r\n }, false);\r\n\r\n return this.odata.post(url);\r\n }\r\n\r\n cancelCurrentImportAndRedirectToCampaigns(importId) {\r\n return this.cancelCurrentImport(importId)\r\n .then(() => {\r\n this.redirectToCampaigns();\r\n });\r\n }\r\n\r\n getImportSummary(importId, collapseTargetsData = true) {\r\n const url = this.formatUrl({\r\n url: getImportSummaryUrlTmpl,\r\n queryParameters: {\r\n importId,\r\n },\r\n });\r\n\r\n return this.odata.get(url)\r\n .then((data) => {\r\n const filteredData = this.filterLocalizedEntities(data);\r\n\r\n // group target\r\n const result = [];\r\n const targetsAggregated = {\r\n Name: this.i18n.get('CampaignImport_ImportSummaryTargets'),\r\n Expandable: true,\r\n Children: [],\r\n Additions: 0,\r\n Changes: 0,\r\n Errors: 0,\r\n Deletions: 0,\r\n };\r\n\r\n _.each(filteredData, (entity) => {\r\n // if UINameKey ends with 'Targets', we group it into targets category.\r\n if (/Targets$/.test(entity.UINameKey) && collapseTargetsData) {\r\n targetsAggregated.Children.push(_.extend({}, entity, { IsChildren: true }));\r\n targetsAggregated.Additions += entity.Additions;\r\n targetsAggregated.Changes += entity.Changes;\r\n targetsAggregated.Errors += entity.Errors;\r\n targetsAggregated.Deletions += entity.Deletions;\r\n } else {\r\n result.push(entity);\r\n }\r\n });\r\n\r\n if (!_.isEmpty(targetsAggregated.Children)) {\r\n result.push(targetsAggregated);\r\n }\r\n\r\n return result;\r\n });\r\n }\r\n\r\n getBulkBlob(blobName, bulkFileType) {\r\n const odataUrl = getBulkFileUrlTmpl.replace('{{blobName}}', blobName)\r\n .replace('{{bulkFileType}}', bulkFileType);\r\n return this.odata.get(odataUrl)\r\n .then(blobUrl => http.get(blobUrl))\r\n // return empty {} if blob is undefined.\r\n .then(blob => blob || {});\r\n }\r\n\r\n uploadToAzureBlobViaOdata({ bulkFileType, payload, logger }) {\r\n // record the null/undefined payload for we have 1 error with empty file content.\r\n const payloadStatus = payload ? '' : `payload=${JSON.stringify(payload)} `;\r\n const uploadLogger = logger || {\r\n trace: (msg, api, requestId) => this.logTrace(`${payloadStatus}API=${api} RID=${requestId} msg=${msg}`),\r\n error: (msg, api, requestId) => this.logError(`${payloadStatus}API=${api} RID=${requestId} msg=${msg}`),\r\n };\r\n const odataUploader = new ODataAzureUploader({\r\n odata: this.odata,\r\n azureUploader: new AzureUploader({\r\n logger: uploadLogger,\r\n }),\r\n logger: uploadLogger,\r\n });\r\n\r\n return odataUploader.createBlobWithODataAndUpload({\r\n bulkFileType,\r\n payload,\r\n useAccountId: true,\r\n });\r\n }\r\n\r\n prepareBaseImportTaskItem() {\r\n const { config } = this;\r\n\r\n return {\r\n '@odata.type': '#Model.ImportTaskItem',\r\n Type: `Import${this.testTypeSuffix}`,\r\n AccountId: config.get('CurrentAccount') && config.get('CurrentAccount').Id,\r\n CultureName: config.get('CultureName'),\r\n };\r\n }\r\n\r\n prepareCompleteImportTaskItem(importUserPreferences, timeZoneId) {\r\n const { config } = this;\r\n const { ShortName, Name, AccountNumber } = (config && config.get('CurrentAccount')) || {};\r\n let taskItem = _.extend(this.prepareBaseImportTaskItem(), {\r\n CampaignTimeZone: this.timeZoneEnumMapper.getEnumbyId(timeZoneId || config.get('AccountTimeZone')),\r\n LCID: config.get('CultureLcid'),\r\n AdGroupMedium: this.adGroupMedium,\r\n Language: this.language,\r\n CustomerMarket: this.market,\r\n UserName: config.get('CurrentUser') && config.get('CurrentUser').Name,\r\n AccountName: ShortName || Name,\r\n AccountNumber,\r\n NotificationMedium: 'Email',\r\n TimeZoneId: timeZoneId,\r\n });\r\n taskItem = _.extend(\r\n taskItem,\r\n {\r\n ImportUserPreference: importUserPreferences,\r\n }\r\n );\r\n return taskItem;\r\n }\r\n\r\n createRunNowImportTaskItem(data) {\r\n return this.jsData.TaskItem.create(data, _.extend(this.taskItemOptions, {\r\n urlParameters: {\r\n $expand: 'TaskItemExecutions',\r\n },\r\n }));\r\n }\r\n\r\n createScheduledImportTaskItem(data) {\r\n return this.jsData.TaskItem.create(data, _.extend(this.taskItemOptions, {\r\n urlParameters: {\r\n $expand: 'TaskItemExecutions',\r\n },\r\n }));\r\n }\r\n\r\n updateScheduledImportTaskItem(data, taskItemId) {\r\n return this.jsData.TaskItem.update(taskItemId, data, _.extend(this.taskItemOptions, {\r\n urlParameters: {\r\n $expand: 'TaskItemExecutions',\r\n },\r\n }));\r\n }\r\n\r\n createImportTaskItemExecution(data) {\r\n return this.odata.post(createTaskExecutionUrlTmpl, { data })\r\n .then((result) => {\r\n const execution = _.first(result.TaskItemExecutions);\r\n\r\n return execution && execution.Id;\r\n });\r\n }\r\n\r\n shouldStopPolling(data) {\r\n const importComplete = data.ImportStatus === 'Complete' || data.ImportStatus === 'Failed' ||\r\n data.ImportStatus === 'Cancelled' || data.Status === 'Failed' || !!data.ErrorCode;\r\n\r\n return data.Status !== TASK_ITEM_EXECUTION_STATUS_QUEUED && importComplete;\r\n }\r\n\r\n isValidCustomBlockerStatus(data) {\r\n return (_.has(this.statusKeyToOrderMap, data.ImportStatus)\r\n || _.has(this.statusKeyToOrderMap, data.Status));\r\n }\r\n\r\n checkAndRenderCustomBlocker() {\r\n if (!this.hasCustomizedBlocker) {\r\n $('.blocker .blocker-text').html(this.blockerView.render().el);\r\n this.hasCustomizedBlocker = true;\r\n }\r\n }\r\n\r\n updateCustomBlockerStatus(data) {\r\n if (data.Status === TASK_ITEM_EXECUTION_STATUS_QUEUED) {\r\n this.blockerView.update({\r\n currentStatusOrder: this.statusKeyToOrderMap[data.Status],\r\n importId: 0,\r\n });\r\n } else {\r\n this.blockerView.update({\r\n currentStatusOrder: this.statusKeyToOrderMap[data.ImportStatus],\r\n importId: data.ImportId,\r\n });\r\n }\r\n }\r\n\r\n // Used for continue import scenarios, where most recent task item execution is not\r\n // necessarily most recent or currently running import\r\n pollGetImportStatus(importId, closeBlock) {\r\n const url = this.formatUrl(\r\n {\r\n url: getImportStatusWithIdUrlTmpl,\r\n queryParameters: {\r\n importId,\r\n },\r\n },\r\n false\r\n );\r\n\r\n return this.pollImportStatus(\r\n url,\r\n this.mapGetImportStatusResponseToTaskItemExecution.bind(this),\r\n closeBlock\r\n );\r\n }\r\n\r\n mapGetImportStatusResponseToTaskItemExecution(data) {\r\n return {\r\n ImportStatus: statusEnumValueToKeyMap[data.CurrentImportStatus],\r\n ErrorCode: data.FailureReason,\r\n ImportId: data.ImportId,\r\n };\r\n }\r\n\r\n pollTaskItemExecutionStatus(taskItemExecutionId, closeBlock) {\r\n const url = pollTaskExecutionUrlTmpl.replace('{{taskItemExecutionId}}', taskItemExecutionId);\r\n\r\n return this.pollImportStatus(url, taskItemExecutionId, closeBlock);\r\n }\r\n\r\n pollSmartWorkflowImportStatus(url, importStatusContainer, importStatusMapper) {\r\n return new Promise((resolve, reject) => {\r\n let failedAttempts = 0;\r\n let lastCallCompleted = true;\r\n const MAX_FAILED_ATTEMPTS = 5;\r\n\r\n function onStatusCheckSuccess(data) {\r\n // update the import status panel once poll import status succeeded\r\n if (this.isValidCustomBlockerStatus(data)) {\r\n importStatusContainer.show();\r\n if (data.Status === TASK_ITEM_EXECUTION_STATUS_QUEUED) {\r\n importStatusContainer.update(this.statusKeyToOrderMap[data.Status]);\r\n } else {\r\n importStatusContainer.update(this.statusKeyToOrderMap[data.ImportStatus]);\r\n }\r\n }\r\n\r\n if (this.shouldStopPolling(data)) {\r\n clearInterval(this.timeOut);\r\n if (data.ImportStatus === 'Failed' || data.Status === 'Failed' ||\r\n data.ErrorCode || data.ImportStatus === 'Cancelled') {\r\n const err = new Error();\r\n\r\n err.customized = {\r\n errorCode: data.ErrorCode,\r\n message: this.getLocalizedErrorMessage(data.ErrorCode, true),\r\n errorDetail: data.ErrorDetail,\r\n isCancelled: data.ImportStatus === 'Cancelled',\r\n };\r\n reject(err);\r\n } else {\r\n importStatusContainer.goToImportSummaryPage(data);\r\n resolve({\r\n importId: data.ImportId,\r\n isBatch: data.CampaignSplitBatchIndex > 0 && data.CampaignSplitBatchCount > 0,\r\n });\r\n }\r\n }\r\n }\r\n\r\n function checkStatus() {\r\n if (lastCallCompleted) {\r\n lastCallCompleted = false;\r\n this.odata.get(url)\r\n .then((rawData) => {\r\n let data = rawData;\r\n if (_.isFunction(importStatusMapper)) {\r\n data = importStatusMapper(rawData);\r\n }\r\n onStatusCheckSuccess.call(this, data);\r\n })\r\n .catch((err) => {\r\n failedAttempts += 1;\r\n if (failedAttempts === MAX_FAILED_ATTEMPTS) {\r\n clearInterval(this.timeOut);\r\n reject(err);\r\n }\r\n })\r\n .finally(() => {\r\n lastCallCompleted = true;\r\n });\r\n }\r\n }\r\n this.timeOut = setInterval(checkStatus.bind(this), 1000);\r\n });\r\n }\r\n\r\n pollImportStatus(url, dataMapper, closeBlock) {\r\n return new Promise((resolve, reject) => {\r\n const MAX_FAILED_ATTEMPTS = 5;\r\n let failedAttempts = 0;\r\n let lastCallCompleted = true;\r\n this.blockerView = new UIBlockerWithStepsView({\r\n steps: this.statusOrderToBlockerTitleMap,\r\n i18n: this.i18n,\r\n repository: this,\r\n closeBlock,\r\n });\r\n this.hasCustomizedBlocker = false;\r\n\r\n function onStatusCheckSuccess(data) {\r\n failedAttempts = 0;\r\n // we will update to the customized blocker once import is queued for execution\r\n if (this.isValidCustomBlockerStatus(data)) {\r\n this.checkAndRenderCustomBlocker();\r\n this.updateCustomBlockerStatus(data);\r\n }\r\n\r\n if (this.shouldStopPolling(data)) {\r\n clearInterval(this.timeOut);\r\n if (data.ImportStatus === 'Failed' || data.Status === 'Failed' ||\r\n data.ErrorCode || data.ImportStatus === 'Cancelled') {\r\n const err = new Error();\r\n\r\n err.customized = {\r\n errorCode: data.ErrorCode,\r\n message: this.getLocalizedErrorMessage(data.ErrorCode, true),\r\n errorDetail: data.ErrorDetail,\r\n isCancelled: data.ImportStatus === 'Cancelled',\r\n };\r\n reject(err);\r\n } else {\r\n resolve({\r\n importId: data.ImportId,\r\n isBatch: data.CampaignSplitBatchIndex > 0 && data.CampaignSplitBatchCount > 0,\r\n });\r\n }\r\n }\r\n }\r\n\r\n function checkStatus() {\r\n if (lastCallCompleted) {\r\n lastCallCompleted = false;\r\n this.odata.get(url)\r\n .then((rawData) => {\r\n let data = rawData;\r\n\r\n if (_.isFunction(dataMapper)) {\r\n data = dataMapper(rawData);\r\n }\r\n onStatusCheckSuccess.call(this, data);\r\n })\r\n .catch((err) => {\r\n failedAttempts += 1;\r\n if (failedAttempts === MAX_FAILED_ATTEMPTS) {\r\n clearInterval(this.timeOut);\r\n reject(err);\r\n }\r\n })\r\n .finally(() => {\r\n lastCallCompleted = true;\r\n });\r\n }\r\n }\r\n\r\n this.timeOut = setInterval(checkStatus.bind(this), 1000);\r\n });\r\n }\r\n\r\n stopPollingStatus() {\r\n clearInterval(this.timeOut);\r\n }\r\n\r\n exportErrorFile(importId) {\r\n const url = this.formatUrl({\r\n url: exportErrorFileUrlTmpl,\r\n queryParameters: {\r\n importId,\r\n },\r\n });\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n exportErrorSummaryFile(blobName) {\r\n const url = getBulkFileUrlTmpl.replace('{{blobName}}', blobName)\r\n .replace('{{bulkFileType}}', importErrorBulkFileType);\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n setInProcessImportCookie({ importType, importId }) {\r\n const inProcessImportSession = {\r\n ImportType: importType,\r\n AccountId: this.aid,\r\n CustomerId: this.cid,\r\n ImportId: importId,\r\n };\r\n\r\n\r\n this.addSubCookieToImportCookie({\r\n InProcessImport: inProcessImportSession,\r\n }, false);\r\n }\r\n\r\n getImportCookieAsJson() {\r\n const cookieText = !_.isEmpty(this.getImportCookieFromLocal()) ?\r\n this.getImportCookieFromLocal() : get(IMPORT_COOKIE_NAME, false);\r\n const parsedCookie = parseSync(cookieText);\r\n\r\n if (!parsedCookie) {\r\n this.logTrace(`Failed to parse import cookie. Raw cookie text: ${cookieText}`);\r\n }\r\n\r\n return parsedCookie;\r\n }\r\n\r\n setImportCookie(cookieJson) {\r\n this.logTrace(`Setting import cookie: ${JSON.stringify(cookieJson)}`);\r\n let setCookieArgs = [\r\n IMPORT_COOKIE_NAME, stringifySync(cookieJson),\r\n false, COOKIE_PATH, this.sharedCookieDomain,\r\n ];\r\n // samesite=none is not available for non secure protocol (https:)\r\n if (window.location.protocol === 'https:') {\r\n setCookieArgs = setCookieArgs.concat([\r\n true, 'none',\r\n ]);\r\n }\r\n set.call(undefined, ...setCookieArgs);\r\n this.setImportCookieToLocal(stringifySync(cookieJson));\r\n }\r\n\r\n getValueInSubImportCookieByAccountId(...keysInSubCookie) {\r\n const cookieJson = this.getImportCookieAsJson() || {};\r\n const subCookieValue = parseSync(cookieJson[this.cookieKeyByAccountId()]);\r\n\r\n if (!subCookieValue) {\r\n this.logTrace(`No subCookie found for ${this.cookieKeyByAccountId()}. Cookie value: ${stringifySync(cookieJson)}`);\r\n return [];\r\n }\r\n const result = [];\r\n\r\n _.each(keysInSubCookie, (keyInSubCookie) => {\r\n const val = subCookieValue[keyInSubCookie];\r\n\r\n result.push(val);\r\n });\r\n\r\n if (_.size(result) === 0) {\r\n this.logTrace(`No value found for keys ${keysInSubCookie}. Cookie value: ${stringifySync(cookieJson)}`);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Adds new sub-cookies to the import cookie, overwritting any existing sub-cookies\r\n * stored with the same key and (optionally) account id.\r\n * @param { Object } subCookiesToAdd - object containing sub cookies to add to import cookie,\r\n * defined where each property name is the sub-cookie's key, while each property value\r\n * is the sub-cookie value.\r\n * @param { boolean } serializeByAccountId - boolean indicating whether or not to seralize\r\n * the subCookiesToAdd by account id\r\n * @returns { void }\r\n */\r\n addSubCookieToImportCookie(subCookiesToAdd, serializeByAccountId = true) {\r\n const cookieJson = this.getImportCookieAsJson() || {};\r\n const subCookieKeys = _.keys(subCookiesToAdd);\r\n\r\n if (serializeByAccountId) {\r\n let currentVal = {};\r\n\r\n if (cookieJson[this.cookieKeyByAccountId()]) {\r\n currentVal = parseSync(cookieJson[this.cookieKeyByAccountId()]) || {};\r\n }\r\n\r\n _.each(subCookieKeys, (key) => {\r\n currentVal[key] = subCookiesToAdd[key];\r\n });\r\n cookieJson[this.cookieKeyByAccountId()] = stringifySync(currentVal);\r\n } else {\r\n _.each(subCookieKeys, (key) => {\r\n cookieJson[key] = subCookiesToAdd[key];\r\n });\r\n }\r\n\r\n this.setImportCookie(cookieJson);\r\n }\r\n\r\n removeImportCookieValue(...keysInSubCookie) {\r\n let cookieJson = this.getImportCookieAsJson() || {};\r\n let subCookieValue = parseSync(cookieJson[this.cookieKeyByAccountId()]);\r\n\r\n if (!subCookieValue) {\r\n return;\r\n }\r\n let isModified = false;\r\n\r\n _.each(keysInSubCookie, (keyInSubCookie) => {\r\n if (subCookieValue[keyInSubCookie]) {\r\n subCookieValue = _.omit(subCookieValue, keyInSubCookie);\r\n isModified = true;\r\n }\r\n });\r\n\r\n if (isModified) {\r\n if (_.isEmpty(subCookieValue)) {\r\n cookieJson = _.omit(cookieJson, this.cookieKeyByAccountId());\r\n } else {\r\n cookieJson[this.cookieKeyByAccountId()] = stringifySync(subCookieValue);\r\n }\r\n this.setImportCookie(cookieJson);\r\n }\r\n }\r\n\r\n adjustImportUserPreference(preference) {\r\n if (preference) {\r\n preference.AdjustmentForBids = preference.AdjustmentForBids || { EnableAdjustment: false, AdjustmentValue: null };\r\n preference.AdjustmentForCampaignBudgets = preference.AdjustmentForCampaignBudgets || { EnableAdjustment: false, AdjustmentValue: null };\r\n\r\n const defaultPrefixAndSuffix = {\r\n EnablePrefixAndSuffix: false, PrefixString: null, SuffixString: null,\r\n };\r\n const defaultSearchAndReplace = {\r\n EnableSearchAndReplace: false, IgnoreCaseInPlainText: false, ReplaceString: null, SearchString: null, UseRegularExpression: false,\r\n };\r\n preference.PrefixAndSuffixForUrls = preference.PrefixAndSuffixForUrls || { ...defaultPrefixAndSuffix };\r\n preference.SearchAndReplaceForUrls = preference.SearchAndReplaceForUrls || { ...defaultSearchAndReplace };\r\n preference.PrefixAndSuffixForTrackingTemplates = preference.PrefixAndSuffixForTrackingTemplates || { ...defaultPrefixAndSuffix };\r\n preference.SearchAndReplaceForTrackingTemplates = preference.SearchAndReplaceForTrackingTemplates || { ...defaultSearchAndReplace };\r\n preference.SearchAndReplaceForCustomParameters = preference.SearchAndReplaceForCustomParameters || { ...defaultSearchAndReplace };\r\n preference.SearchAndReplaceForFinalURLSuffix = preference.SearchAndReplaceForFinalURLSuffix || { ...defaultSearchAndReplace };\r\n }\r\n return preference;\r\n }\r\n\r\n getImportUserPreferences(importType) {\r\n const url = this.formatUrl({\r\n url: importUserPreferencesUrlTmpl,\r\n queryParameters: {\r\n importType,\r\n },\r\n });\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n getImportUserPreference(importType) {\r\n const url = this.formatUrl({\r\n url: importUserPreferenceUrlTmpl,\r\n queryParameters: {\r\n importType,\r\n },\r\n });\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n getDefaultImportUserPreference() {\r\n const url = this.formatUrl({\r\n url: defaultImportUserPreferenceUrlTmpl,\r\n queryParameters: {\r\n importType: this.importType,\r\n },\r\n });\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n getImportUserPreferencesWithBMCandMinInfo(importType) {\r\n const storeIds = _.map(\r\n _.pluck(this.storeList, 'Value'),\r\n id => parseInt(id, 10)\r\n );\r\n const preferences = _.extend(\r\n {},\r\n {\r\n AvailableStoreValues: storeIds,\r\n AvailableStoreValueMessages: _.pluck(this.storeList, 'Text'),\r\n }\r\n );\r\n return this.getImportUserPreference(importType)\r\n .then(userPref => (\r\n _.defaults(preferences, userPref, defaultOptions)\r\n ));\r\n }\r\n\r\n getMultiAccountImportUserPreference() {\r\n const url = this.formatUrl({\r\n url: importMultiAccountUserPreferenceUrlTmpl,\r\n });\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n getMultiAccountImportUserPreferenceWithBMCandMinInfo() {\r\n const storeIds = _.map(\r\n _.pluck(this.storeList, 'Value'),\r\n id => parseInt(id, 10)\r\n );\r\n const preferences = _.extend(\r\n {},\r\n {\r\n AvailableStoreValues: storeIds,\r\n AvailableStoreValueMessages: _.pluck(this.storeList, 'Text'),\r\n }\r\n );\r\n\r\n return this.getMultiAccountImportUserPreference()\r\n .then(userPref => (\r\n _.defaults(preferences, userPref, defaultOptions)\r\n ));\r\n }\r\n\r\n getLocalizedErrorMessage(code, isInImportProcess = false) {\r\n const genericErrorMsg = this.i18nErrors.getString('ErrorNumber_-1');\r\n const defaultImportFailedMsg = this.i18n.get('Import_FailedStatus');\r\n let msg;\r\n\r\n if (_.isString(code)) {\r\n msg = this.i18nErrors.getString(`Error_Campaign_API_${code}`);\r\n } else if (_.isNumber(code)) {\r\n msg = this.i18nErrors.getString(`ErrorNumber_${code}`);\r\n }\r\n\r\n return msg || (isInImportProcess ? defaultImportFailedMsg : genericErrorMsg);\r\n }\r\n\r\n logException(err) {\r\n if (!err || !_.isUndefined(err.readyState)) {\r\n // do not log for ajax failures since they are already logged by intrumentation.\r\n // and also this will make ajax whitelist not work.\r\n return;\r\n }\r\n\r\n let msg;\r\n\r\n if (err.status === 0) {\r\n msg = JSON.stringify(err);\r\n this.logTrace(msg);\r\n return;\r\n }\r\n\r\n if (err.message) {\r\n msg = err.message;\r\n }\r\n if (err.stack) {\r\n const st = `StackTrace: ${err.stack}`;\r\n\r\n if (msg) {\r\n msg += `\\t${st}`;\r\n } else {\r\n msg = st;\r\n }\r\n }\r\n msg = msg || JSON.stringify(err);\r\n this.logError(msg);\r\n }\r\n\r\n getOpportunityDesc() {\r\n const {\r\n opportunityId = 'n/a',\r\n opportunityType = 'n/a',\r\n opportunitySource = 'n/a',\r\n } = this.deps || {};\r\n return JSON.stringify({\r\n opportunityType,\r\n opportunityId,\r\n opportunitySource,\r\n });\r\n }\r\n\r\n logApplyOpportunityInfoIfIfApplicable(taskItemId) {\r\n if (!taskItemId) return;\r\n\r\n if (this.opportunityApplyStatus === OpportunityApplyStatus.Opportunity_InProgress\r\n || this.opportunityApplyStatus === OpportunityApplyStatus.Opportunity_Succeed) {\r\n const info = _.extend({\r\n taskItemId,\r\n applyStatus: this.opportunityApplyStatus,\r\n }, _.pick(this.deps, 'opportunityId', 'opportunityType', 'opportunitySource'));\r\n this.logTrace(`ApplyOpportunityStatus: ${JSON.stringify(info)}`);\r\n }\r\n }\r\n\r\n logTrace = (msg, activity) => {\r\n const logActivity = activity || this.deps.defaultLogActivity;\r\n\r\n logActivity.trace(msg, logActivity.value);\r\n };\r\n\r\n logError = (msg, activity) => {\r\n const logActivity = activity || this.deps.defaultLogActivity;\r\n\r\n logActivity.error(msg, logActivity.value);\r\n };\r\n\r\n applyOpportunityIfApplicable({ scheduleOption } = {}) {\r\n // if there is no checkOpportunityType function, then do nothing.\r\n // Or if check type failed, do nothing.\r\n if (!this.checkOpportunityType || !this.checkOpportunityType()) {\r\n return;\r\n }\r\n\r\n // if opportunity is already applied.\r\n if (this.opportunityApplyStatus === OpportunityApplyStatus.Opportunity_InProgress\r\n || this.opportunityApplyStatus === OpportunityApplyStatus.Opportunity_Succeed) {\r\n this.logTrace(`Can't apply the opportunity because it started/finished applied. Status is ${this.opportunityApplyStatus}`);\r\n return;\r\n }\r\n\r\n if (!this.cid || !this.aid) {\r\n this.logTrace(`no cid/aid when applying opportunity, cid: ${this.cid || 'n/a'}, aid: ${this.aid || 'n/a'}`);\r\n return;\r\n }\r\n\r\n const { opportunityId, opportunitySource } = this.deps;\r\n let { opportunityType } = this.deps;\r\n if (opportunityType && opportunityId) {\r\n this.logTrace(`Try to apply opportunity: ${this.getOpportunityDesc()}`);\r\n // Old link from UCM G! import tactic will be reimport and first.\r\n if (opportunityType === 'reimport') {\r\n opportunityType = 'GoogleImportScheduledOpportunity';\r\n } else if (opportunityType === 'first') {\r\n opportunityType = 'GoogleImportOpportunity';\r\n }\r\n\r\n // if the type is reimport, runnow and once job can't be qualified.\r\n if (opportunityType.toLocaleLowerCase().indexOf('scheduled') >= 0) {\r\n if (!scheduleOption || scheduleOption === 'Once' || scheduleOption === 'Now') {\r\n this.logTrace(`Won't apply the opportunity when scheduled to ${scheduleOption} for opportunityType ${opportunityType}`);\r\n return;\r\n }\r\n }\r\n\r\n this.opportunityApplyStatus = OpportunityApplyStatus.Opportunity_InProgress;\r\n const url = `Customers(${this.cid})/Accounts(${this.aid})/Recommendation.ApplyRecBulk`;\r\n const odataTypePrefix = '#Microsoft.Advertiser.AdInsight.Opportunity.Core.Adoption.Interface.Entity';\r\n const Request = {\r\n '@odata.type': `${odataTypePrefix}.ApplyBulkAccountRecommendationRequest`,\r\n RecommendationType: opportunityType,\r\n UserAction: 'Accept',\r\n TrackingOnly: true,\r\n Channel: 'recommendationpage',\r\n UserInputs: [{\r\n '@odata.type': `${odataTypePrefix}.ApplyUserInput`,\r\n OpportunityId: opportunityId.toString(),\r\n }],\r\n };\r\n if (opportunitySource && opportunitySource.toLocaleLowerCase().indexOf('ucm') >= 0) {\r\n Request.Context = JSON.stringify({ Source: 'UCM' });\r\n }\r\n this.odata.post(url, {\r\n path: 'AdInsight/V2/',\r\n host: this.deps.config.get('adinsight.odata.url'),\r\n data: {\r\n Request,\r\n },\r\n }).then((response) => {\r\n if (response.ErrorCode > 0) {\r\n this.opportunityApplyStatus = OpportunityApplyStatus.Opportunity_Failed;\r\n this.logError(`Failed to apply opportunity: ${this.getOpportunityDesc()} with response error result: ${JSON.stringify(response.Results && response.Results[0])}`);\r\n } else {\r\n this.opportunityApplyStatus = OpportunityApplyStatus.Opportunity_Succeed;\r\n }\r\n }).catch((err) => {\r\n this.opportunityApplyStatus = OpportunityApplyStatus.Opportunity_Failed;\r\n const { status, responseText } = err || {};\r\n this.logError(`Failed to apply opportunity: ${this.getOpportunityDesc()} with response:${status} error:${responseText}`);\r\n });\r\n }\r\n }\r\n\r\n getImportTaskItem(id) {\r\n return this.jsData.TaskItem.find(id, {\r\n adapter: 'odata',\r\n entitySet: this.isMultiAccountImport ?\r\n this.edm.currentCustomer.TaskItems : this.edm.currentAccount.TaskItems,\r\n }).then((taskItem) => {\r\n if (taskItem.ImportUserPreference) {\r\n // eslint-disable-next-line no-param-reassign\r\n taskItem.ImportUserPreference = this.adjustImportUserPreference(taskItem.ImportUserPreference);\r\n }\r\n return taskItem;\r\n });\r\n }\r\n\r\n pollGetTaskItemExecution(taskItemExecutionId, importStatusContainer) {\r\n const url = pollTaskExecutionUrlTmpl.replace('{{taskItemExecutionId}}', taskItemExecutionId);\r\n\r\n return this.pollSmartWorkflowImportStatus(\r\n url,\r\n importStatusContainer\r\n );\r\n }\r\n\r\n // update coupon API\r\n updateFACCoupon(status, isCalloutardCoupon = false) {\r\n this.logTrace(`Try to update${isCalloutardCoupon ? ' calloutcard' : ''} FACCoupon status to : ${status}`);\r\n const couponToBeSet = isCalloutardCoupon ? this.calloutcardCoupon : this.coupon;\r\n\r\n if (couponToBeSet && this.ccJsData) {\r\n return Promise.resolve(this.ccJsData.FeatureAdoptionCoupon\r\n .update(\r\n couponToBeSet.id,\r\n {\r\n adoption: {\r\n ...couponToBeSet,\r\n Status: status,\r\n },\r\n }\r\n ))\r\n .tap((coupon) => {\r\n if (isCalloutardCoupon) {\r\n this.calloutcardCoupon = coupon;\r\n } else {\r\n this.coupon = coupon;\r\n }\r\n });\r\n }\r\n\r\n return Promise.reject(new Error('coupon or ccJsData not set'));\r\n }\r\n\r\n updateCouponStatus(taskItemPromise, status, isCalloutardCoupon) {\r\n const {\r\n showAlertHandler, isBillToCustomer, i18nAmdLoader, couponDetailsUrl, newI18n,\r\n } = this.deps;\r\n return taskItemPromise\r\n .tap(() => this.updateFACCoupon(status, isCalloutardCoupon)\r\n .then(() => {\r\n if (showAlertHandler) {\r\n let action = null;\r\n if (isBillToCustomer) {\r\n action = {\r\n message: i18nAmdLoader.getString('Notification_Action_ViewPromotionalOffers'),\r\n href: couponDetailsUrl,\r\n };\r\n }\r\n\r\n showAlertHandler({\r\n title: i18nAmdLoader.getString('FACAdoptionFinishSuccessMessage_Title'),\r\n message: isCalloutardCoupon ? newI18n.getString(_TL_(\"We'll notify you when the credit has been added to your account.\")) : i18nAmdLoader.getString('FACAdoptionFinishSuccessMessage'),\r\n level: 'Confirmation',\r\n action,\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n if (showAlertHandler) {\r\n showAlertHandler({\r\n message: i18nAmdLoader.getString('GenericFACAdoptionFinishErrorMessage'),\r\n level: 'Error',\r\n });\r\n }\r\n }));\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport {\r\n ImportUpdateEntityPreference,\r\n ImportUserPreferences,\r\n ImportAppendDestUrlPreference,\r\n ImportSearchAndReplaceDestUrlPreference,\r\n AppendPreferencesForTrackingTemplate,\r\n SearchAndReplacePreferencesForTrackingTemplate,\r\n ImportPrefixAndSuffixForStringProperty,\r\n ImportSearchAndReplaceForStringProperty,\r\n ImportAdjustmentForNumericProperty,\r\n} from '@bingads-webui-campaign/campaign-ui-schemas';\r\n\r\n\r\nexport function getBlackList(permissions) {\r\n const isPageFeedEnabled = permissions.IsPageFeedImportOptionEnabled;\r\n const blacklist = [];\r\n\r\n if (!isPageFeedEnabled) {\r\n blacklist.push('ImportNewOption_ImportNewPageFeeds');\r\n blacklist.push('ImportUpdateEntityPreference_UpdatePageFeeds');\r\n }\r\n\r\n if (!permissions.IsPromotionAdExtensionEnabled) {\r\n blacklist.push('ImportNewOption_ImportNewPromotionAdExtensions');\r\n blacklist.push('ImportUpdateEntityPreference_UpdatePromotionAdExtensions');\r\n }\r\n\r\n return blacklist;\r\n}\r\n\r\nexport function generateCombinedSchemaObject() {\r\n const searchAndReplaceSchema = _.clone(ImportSearchAndReplaceForStringProperty);\r\n // overriding schema here because import options still uses\r\n // old preference and we need to rename the name so options generated can be unique.\r\n\r\n searchAndReplaceSchema.name = 'SearchAndReplaceForCustomParameters';\r\n const findAndReplaceSuffixSchema = _.clone(ImportSearchAndReplaceForStringProperty);\r\n findAndReplaceSuffixSchema.name = 'SearchAndReplaceForFinalURLSuffix';\r\n\r\n return {\r\n ImportUpdateEntityPreference,\r\n ImportUserPreferences,\r\n LandingPageAppendPreference: ImportAppendDestUrlPreference,\r\n LandingPageReplacePreference: ImportSearchAndReplaceDestUrlPreference,\r\n AppendTrackingTemplatePreference: AppendPreferencesForTrackingTemplate,\r\n SearchAndReplacePreferencesForTrackingTemplate,\r\n SearchAndReplaceForCustomParameters: searchAndReplaceSchema,\r\n SearchAndReplaceForFinalURLSuffix: findAndReplaceSuffixSchema,\r\n ImportPrefixAndSuffixForStringProperty,\r\n ImportSearchAndReplaceForStringProperty,\r\n ImportAdjustmentForNumericProperty,\r\n };\r\n}\r\n\r\nexport function createDisabledUETSelectorClass(uetClass) {\r\n return class AdvancedOptionsView extends uetClass {\r\n initialize(options) {\r\n super.initialize(_.defaults({ enabled: false }), options);\r\n this.disabled = true;\r\n }\r\n };\r\n}\r\n","// used for post signup import workflows\r\nexport class CommonPermissionFactory {\r\n constructor({\r\n permissions,\r\n }) {\r\n this.permissions = permissions;\r\n }\r\n\r\n // set these values to true for webui, MAE can customize the implementation\r\n isProvideFeedbackButtonEnabled = () => true;\r\n\r\n isViewImportedCampaignsButtonEnabled = () => true;\r\n\r\n isCurrencyConvertorRelocateEnabled = () => true;\r\n\r\n IsImportSmartScheduleStepImprovementEnabled = () => this.permissions && this.permissions.dynamic && this.permissions.dynamic.ImportSmartScheduleStepImprovement;\r\n\r\n IsImportSmartScheduleStepImprovementPhaseTwoEnabled = () => this.permissions && this.permissions.dynamic && this.permissions.dynamic.ImportSmartScheduleStepImprovementPhaseTwo;\r\n\r\n IsImportPhase2TrackingUrlEnabled = () => this.permissions && this.permissions.dynamic && this.permissions.dynamic.ImportPhase2TrackingUrl;\r\n\r\n // panel improvement pilot is under smart import schedule step improvement phase two\r\n IsImportSmartScheduleStepPanelImprovementEnabled = () => this.permissions && this.permissions.dynamic && this.permissions.dynamic.ImportSmartScheduleStepImprovementPhaseTwo && this.permissions.dynamic.ImportSmartScheduleStepPanelImprovement;\r\n\r\n // panel data restore improvement pilot is under smart import schedule step improvement phase two\r\n IsImportSmartScheduleStepPanelDataRestoreImprovementEnabled = () => this.permissions && this.permissions.dynamic && this.permissions.dynamic.ImportSmartScheduleStepImprovementPhaseTwo && this.permissions.dynamic.ImportSmartScheduleStepPanelDataRestoreImprovement;\r\n\r\n IsOneClickImportEnabled = () => false;\r\n\r\n IsImportFromMetaButtonEnabled = () => false;\r\n}\r\n\r\n","import _ from 'underscore';\r\n\r\nconst displayType = 'Display';\r\n// MT pass the integer value of this enum, so UI needs to hold a mapping.\r\nconst gSyncAdvertisingChannelType = ['Unknown', 'Search', displayType, 'Shopping', 'Video', 'MultiChannel', 'Smart', 'PerformanceMax', 'Discovery', 'DemandGen'];\r\n\r\nexport const getLocalizedCampaignTypeStringUtil = (type, i18n) => i18n.get(`CampaignImport_EntityType${type}`);\r\n\r\nexport const containDisplayTypeUtil = (campaignList, i18n) => {\r\n const localizedDisplayTypeString = getLocalizedCampaignTypeStringUtil(displayType, i18n);\r\n return _.some(campaignList, campaign =>\r\n ((campaign.Type || campaign.type) === localizedDisplayTypeString));\r\n};\r\n\r\nexport const filterAndLocalizeCampaignsUtil = (campaigns, i18n, onError) => {\r\n const filteredAndLocalized = _.chain(campaigns)\r\n .filter((campaign) => {\r\n const status = campaign.Status;\r\n\r\n return status !== 'Draft' && status !== 'Delete' && status !== 'Deleted';\r\n })\r\n .map(({\r\n Id,\r\n Name,\r\n Type,\r\n Status,\r\n MerchantId = null,\r\n }) => {\r\n const convertedTypeAsString = gSyncAdvertisingChannelType[Type];\r\n\r\n if (!convertedTypeAsString) {\r\n onError(`unexpected campaign type ${Type}`);\r\n }\r\n return {\r\n Id,\r\n Name,\r\n Status,\r\n TypeId: Type,\r\n Type: getLocalizedCampaignTypeStringUtil(convertedTypeAsString, i18n),\r\n MerchantId,\r\n };\r\n })\r\n .value();\r\n\r\n return filteredAndLocalized;\r\n};\r\n","import Promise from 'bluebird';\r\nimport _ from 'underscore';\r\n\r\nimport { StringPayload } from '@bingads-webui/azure-upload';\r\n\r\nimport { CommonImportRepository } from '../common-repository';\r\nimport { getLocalizedCampaignTypeStringUtil, containDisplayTypeUtil, filterAndLocalizeCampaignsUtil } from '../import-repository-utils';\r\n\r\nconst BASE_10_RADIX = 10;\r\nconst GOOGLE_LOGOUT_URL = 'https://www.google.com/accounts/Logout';\r\n\r\nconst getGoogleSessionUrlTmpl =\r\n 'ImportSession/StartGoogleSession(CustomerId=:customer_id,AccountId=:account_id)?authCode={{AuthCode}}&redirectUri=postmessage';\r\nconst getGoogleSessionWithTokenUrlTmpl =\r\n 'ImportSession/StartGoogleSession(CustomerId=:customer_id,AccountId=:account_id)?refreshToken={{Token}}&redirectUri=postmessage';\r\nconst getGoogleLoginEmailUrlTmpl =\r\n 'ImportSession/GoogleLoginEmail(CustomerId=:customer_id,AccountId=:account_id,SessionId={{SessionId}})';\r\nconst getGoogleAccountsUrlTmpl =\r\n '/ImportSession/GoogleAccounts(CustomerId=:customer_id,AccountId=:account_id,SessionId={{SessionId}})';\r\nconst getGoogleCampaignsUrlTmpl =\r\n '/ImportSession/GoogleCampaigns(CustomerId=:customer_id,AccountId=:account_id,SessionId={{SessionId}})';\r\nconst getGoogleAdGroupsUrlTmpl =\r\n '/ImportSession/GoogleAdGroups(CustomerId=:customer_id,AccountId=:account_id,SessionId={{SessionId}})';\r\nconst getGoogleAccountPropertiesUrlTmpl =\r\n '/ImportSession/GoogleAccountProperties(CustomerId=:customer_id,AccountId=:account_id,SessionId={{SessionId}})';\r\nconst getMultiGoogleAccountPropertiesUrlTmpl =\r\n '/ImportSession/MultiGoogleAccountProperties(CustomerId=:customer_id,AccountId={{AccountId}},SessionId={{SessionId}})';\r\nconst importType = 'GoogleAPIImport';\r\nconst keyNameOfSessionIdInCookie = 'OAuth2_AdWordsSessionId';\r\nconst keyNameOfLoginAccountInCookie = 'OAuth2_GoogleLoginAccount';\r\nconst keyNameOfGMCEmailAddressInCookie = 'OAuth2_GMCLoginEmailAddress';\r\nconst googleEntitiesBulkFileTypeNum = 17;\r\nconst googleAdsEntityBulkFileType = 'GoogleAdsEntityIdFile';\r\n\r\nexport class GoogleImportRepository extends CommonImportRepository {\r\n constructor({ deps }) {\r\n super({ deps: deps || {}, type: 'GoogleImport', importType });\r\n\r\n if (deps != null) {\r\n this.edm = deps.edm;\r\n this.jsData = deps.jsData;\r\n this.isMultiAccountImport = deps.isMultiAccountImport;\r\n if (this.edm != null) {\r\n this.taskItemOptions = {\r\n adapter: 'odata',\r\n entitySet: this.isMultiAccountImport ?\r\n this.edm.currentCustomer.TaskItems : this.edm.currentAccount.TaskItems,\r\n };\r\n }\r\n }\r\n }\r\n\r\n startGoogleSession(authCode, shareWithUserIds = null) {\r\n let url = getGoogleSessionUrlTmpl.replace('{{AuthCode}}', authCode);\r\n\r\n if (!_.isEmpty(shareWithUserIds)) {\r\n url = `${url}&shareWithUserIds=${shareWithUserIds}`;\r\n }\r\n\r\n if (this.newRepositoryEnabled) {\r\n url = url.replace(':account_id', this.aid);\r\n }\r\n\r\n return this.startGoogleSessionInternal(url);\r\n }\r\n\r\n startGoogleSessionWithToken(token, shareWithUserIds = null) {\r\n let url = getGoogleSessionWithTokenUrlTmpl.replace('{{Token}}', token);\r\n\r\n if (this.newRepositoryEnabled) {\r\n url = url.replace(':account_id', this.aid);\r\n }\r\n\r\n if (!_.isEmpty(shareWithUserIds)) {\r\n url = `${url}&shareWithUserIds=${shareWithUserIds}`;\r\n }\r\n\r\n return this.startGoogleSessionInternal(url);\r\n }\r\n\r\n startGoogleSessionInternal(url) {\r\n return this.odata.post(url, { data: '' })\r\n .then((sessionId) => {\r\n if (sessionId) {\r\n return this.fetchGoogleLoginEmail(sessionId)\r\n .then((loginAccount) => {\r\n this.setGoogleImportAccountInfoInCookie({\r\n sessionId,\r\n loginAccount,\r\n });\r\n return sessionId;\r\n });\r\n }\r\n return sessionId;\r\n });\r\n }\r\n\r\n fetchGoogleLoginEmail(sessionId) {\r\n let url = getGoogleLoginEmailUrlTmpl.replace('{{SessionId}}', sessionId);\r\n\r\n if (this.newRepositoryEnabled) {\r\n url = url.replace(':account_id', this.aid);\r\n }\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n getGoogleCampaigns(googleCustomerId) {\r\n const sessionId = this.getGoogleSessionIdFromCookie();\r\n let url = getGoogleCampaignsUrlTmpl.replace('{{SessionId}}', sessionId);\r\n if (this.newRepositoryEnabled) {\r\n url = url.replace(':account_id', this.aid);\r\n }\r\n url = this.formatUrl({\r\n url,\r\n queryParameters: {\r\n googleCustomerId,\r\n },\r\n });\r\n\r\n return this.getGoogleCampaignsInternal(url);\r\n }\r\n\r\n getGoogleCampaignsInternal(url) {\r\n return this.odata.get(url)\r\n .then(data => filterAndLocalizeCampaignsUtil(data, this.i18n, this.logError));\r\n }\r\n\r\n getGoogleAdGroupsByCampaignId(googleCustomerId, googleCampaignId, usecache = true) {\r\n const sessionId = this.getGoogleSessionIdFromCookie();\r\n let url = getGoogleAdGroupsUrlTmpl.replace('{{SessionId}}', sessionId);\r\n if (this.newRepositoryEnabled) {\r\n url = url.replace(':account_id', this.aid);\r\n }\r\n url = this.formatUrl({\r\n url,\r\n queryParameters: {\r\n googleCustomerId,\r\n campaignId: googleCampaignId,\r\n usecache,\r\n },\r\n });\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n getGoogleAdGroupsByBlobName(googleCustomerId, blobName, usecache = true) {\r\n const sessionId = this.getGoogleSessionIdFromCookie();\r\n let url = getGoogleAdGroupsUrlTmpl.replace('{{SessionId}}', sessionId);\r\n if (this.newRepositoryEnabled) {\r\n url = url.replace(':account_id', this.aid);\r\n }\r\n url = this.formatUrl({\r\n url,\r\n queryParameters: {\r\n googleCustomerId,\r\n blobName,\r\n usecache,\r\n },\r\n });\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n containDisplayType(campaignsList) {\r\n return containDisplayTypeUtil(campaignsList, this.i18n);\r\n }\r\n\r\n getLocalizedCampaignTypeString(type) {\r\n return getLocalizedCampaignTypeStringUtil(type, this.i18n);\r\n }\r\n\r\n getGoogleAccounts(currentSessionId = null, withCamapignCount = false) {\r\n const sessionId = currentSessionId || this.getGoogleSessionIdFromCookie();\r\n let url = getGoogleAccountsUrlTmpl.replace('{{SessionId}}', sessionId);\r\n if (this.newRepositoryEnabled) {\r\n url = url.replace(':account_id', this.aid);\r\n }\r\n if (withCamapignCount) {\r\n url = `${url}?version=V2`;\r\n }\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n getGoogleSessionIdFromCookie() {\r\n this.logTrace('start getGoogleSessionIdFromCookie');\r\n return this.getValueInSubImportCookieByAccountId(keyNameOfSessionIdInCookie)[0];\r\n }\r\n\r\n getGoogleLoginAccountFromCookie() {\r\n this.logTrace('start getGoogleLoginAccountFromCookie');\r\n return this.getValueInSubImportCookieByAccountId(keyNameOfLoginAccountInCookie)[0];\r\n }\r\n\r\n // this is for fetching multiple items from cookie\r\n getGoogleImportInfoFromCookie() {\r\n this.logTrace('start getGoogleImportInfoFromCookie');\r\n const result = this.getValueInSubImportCookieByAccountId(\r\n keyNameOfSessionIdInCookie,\r\n keyNameOfLoginAccountInCookie\r\n );\r\n\r\n return {\r\n googleSessionId: result[0],\r\n googleAccountName: result[1],\r\n };\r\n }\r\n\r\n isUserLoggedIn() {\r\n return !!this.getGoogleSessionIdFromCookie();\r\n }\r\n\r\n getGoogleAccountName() {\r\n return this.getGoogleLoginAccountFromCookie();\r\n }\r\n\r\n setGoogleImportLoginAccountInCookie(loginAccount) {\r\n this.addSubCookieToImportCookie({\r\n [keyNameOfLoginAccountInCookie]: loginAccount,\r\n });\r\n }\r\n\r\n setGoogleImportAccountInfoInCookie({ loginAccount, sessionId }) {\r\n this.addSubCookieToImportCookie({\r\n [keyNameOfLoginAccountInCookie]: loginAccount,\r\n [keyNameOfSessionIdInCookie]: sessionId,\r\n });\r\n }\r\n\r\n serializeGoogleEntitiesSelectionDataToStringPayload(selectionData) {\r\n return new StringPayload({\r\n content: JSON.stringify({\r\n CampaignIds: selectionData.selectedCampaignIds,\r\n AdGroupIdMap: selectionData.selectedAdGroupMap,\r\n CampaignIdsWithActiveAdGroups: selectionData.selectedWithActiveOnly,\r\n }),\r\n });\r\n }\r\n\r\n convertAdGroupDataToIdMap(adGroupData) {\r\n return _.mapObject(_.groupBy(adGroupData, 'campaignId'), arr => _.pluck(arr, 'Id'));\r\n }\r\n\r\n getCleanedGoogleAdGroupSelectionDataFromBlob(customerId, blobName) {\r\n return this.getGoogleAdGroupsByBlobName(customerId, blobName)\r\n .then(adGroupData => this.convertAdGroupDataToIdMap(adGroupData));\r\n }\r\n\r\n getSelectionDataFromBlob(blobName) {\r\n return this.getEntitiesBlob(blobName)\r\n .then(blob =>\r\n ({\r\n selectedCampaignIds: blob.CampaignIds,\r\n selectedAdGroupMap: blob.AdGroupIdMap,\r\n selectedWithActiveOnly: blob.CampaignIdsWithActiveAdGroups,\r\n }));\r\n }\r\n\r\n getEntitiesBlob(blobName) {\r\n return this.getBulkBlob(blobName, googleEntitiesBulkFileTypeNum);\r\n }\r\n\r\n // add clean up campaigns in here\r\n prepareForCampaignSelectionStep(customerId, blobName) {\r\n const promises = {};\r\n promises.googleCampaigns = this.getGoogleCampaigns(customerId);\r\n\r\n if (blobName) {\r\n promises.selectionData = this.getSelectionDataFromBlob(blobName)\r\n .then((selectionData) => {\r\n const finalState = {};\r\n finalState.selectedCampaignIds = selectionData.selectedCampaignIds;\r\n finalState.selectedWithActiveOnly = selectionData.selectedWithActiveOnly;\r\n\r\n if (!_.isEmpty(selectionData.selectedAdGroupMap)) {\r\n return this.getCleanedGoogleAdGroupSelectionDataFromBlob(customerId, blobName)\r\n .then((selectedAdGroupMap) => {\r\n finalState.selectedAdGroupMap = selectedAdGroupMap;\r\n return finalState;\r\n });\r\n }\r\n\r\n finalState.selectedAdGroupMap = {};\r\n return finalState;\r\n });\r\n }\r\n\r\n return Promise.props(promises)\r\n .then(({ googleCampaigns, selectionData }) => {\r\n const finalState = { googleCampaigns };\r\n if (selectionData) {\r\n const availableIdBoolMap = _.object(_.map(googleCampaigns, obj => [obj.Id, true]));\r\n const campaignIdFilter = ids => _.filter(ids, id => availableIdBoolMap[id]);\r\n const selectedCampaignIds = campaignIdFilter(selectionData.selectedCampaignIds);\r\n const selectedWithActiveOnly = campaignIdFilter(selectionData.selectedWithActiveOnly);\r\n // All data will be checked and set to null if it is empty.\r\n // It will resave existing wrong blob files like \"{ AdGroupIdMap:{} }\"\"\r\n // which saved at smart schedule step when editing expert tasks before.\r\n // https://portal.microsofticm.com/imp/v3/incidents/details/303083319/home\r\n _.extend(finalState, {\r\n selectedCampaignIds: _.isEmpty(selectedCampaignIds) ? null : selectedCampaignIds,\r\n selectedWithActiveOnly: _.isEmpty(selectedWithActiveOnly)\r\n ? null : selectedWithActiveOnly,\r\n selectedAdGroupMap: _.isEmpty(selectionData.selectedAdGroupMap) ?\r\n null : selectionData.selectedAdGroupMap,\r\n });\r\n }\r\n return finalState;\r\n });\r\n }\r\n\r\n prepareAdWordsImportContext(\r\n googleCustomerId,\r\n campaignIds,\r\n initialAdWordsAccount,\r\n loginCustomerId,\r\n googleEntitiesSelectionData,\r\n uid\r\n ) {\r\n let sessionId;\r\n let googleAccountName;\r\n\r\n if (initialAdWordsAccount) {\r\n ({ sessionId } = initialAdWordsAccount);\r\n ({ googleAccountName } = initialAdWordsAccount);\r\n } else {\r\n this.logTrace('prepareAdWordsImportContext: start to getGoogleImportInfoFromCookie');\r\n const info = this.getGoogleImportInfoFromCookie();\r\n\r\n sessionId = info.googleSessionId;\r\n ({ googleAccountName } = info);\r\n\r\n if (!sessionId) {\r\n this.logTrace(`prepareAdWordsImportContext: failed to getGoogleImportInfoFromCookie with info ${JSON.stringify(info)}`);\r\n sessionId = this.getGoogleSessionIdFromCookie();\r\n googleAccountName = this.getGoogleLoginAccountFromCookie();\r\n\r\n if (!sessionId) {\r\n this.logTrace(`prepareAdWordsImportContext: failed to getGoogleSessionIdFromCookie with sessionId ${sessionId} googleAccountName ${googleAccountName}`);\r\n }\r\n }\r\n }\r\n\r\n const adWordsImportContext = {\r\n '@odata.type': '#Model.AdWordsImportContext',\r\n SessionId: sessionId,\r\n CustomerId: parseInt(googleCustomerId, BASE_10_RADIX),\r\n AccountName: googleAccountName,\r\n LoginCustomerId: loginCustomerId,\r\n CampaignIds: campaignIds,\r\n AdWordsSessionUserId: uid,\r\n };\r\n\r\n if (googleEntitiesSelectionData) {\r\n return this.uploadToAzureBlobViaOdata({\r\n bulkFileType: googleAdsEntityBulkFileType,\r\n payload:\r\n this.serializeGoogleEntitiesSelectionDataToStringPayload(googleEntitiesSelectionData),\r\n }).then(blob =>\r\n ({\r\n ...adWordsImportContext,\r\n GoogleEntitiesBlobName: blob.BlobName,\r\n }));\r\n }\r\n\r\n return Promise.resolve(adWordsImportContext);\r\n }\r\n\r\n prepareGoogleImportTaskItem({\r\n importOptions,\r\n stepState,\r\n }) {\r\n const {\r\n importUserPreferences,\r\n notificationType,\r\n notificationEmailAddresses,\r\n timeZoneId,\r\n name,\r\n cron,\r\n taskItemState,\r\n ScenarioIdentifier,\r\n DefaultImportSettings,\r\n } = importOptions;\r\n\r\n const {\r\n googleCustomerId,\r\n campaignIds,\r\n initialAdWordsAccount,\r\n loginCustomerId,\r\n googleEntitiesSelectionData,\r\n } = stepState;\r\n\r\n return this.prepareAdWordsImportContext(\r\n googleCustomerId, campaignIds, initialAdWordsAccount,\r\n loginCustomerId, googleEntitiesSelectionData, this.uid\r\n )\r\n .then(adWordsImportContext =>\r\n (_.extend(\r\n this.prepareCompleteImportTaskItem(importUserPreferences, timeZoneId), {\r\n NotificationType: notificationType,\r\n NotificationEmailAddresses: notificationEmailAddresses,\r\n AdWordsImportContext: adWordsImportContext,\r\n ImportType: importType,\r\n ImportAction: null,\r\n FileImportContext: null,\r\n },\r\n // pass IsAutoFrequency and IsSmartImport if the properties exist\r\n _.pick(importOptions, 'IsAutoFrequency', 'IsSmartImport', 'IsSmartCampaignOnly', 'IsEscImport'),\r\n !!name && { Name: name },\r\n !!taskItemState && { State: taskItemState },\r\n !!cron && { Cron: cron },\r\n !!DefaultImportSettings && { DefaultImportSettings },\r\n !!ScenarioIdentifier && { ScenarioIdentifier }\r\n )));\r\n }\r\n\r\n setInProcessImportCookie({ importId }) {\r\n super.setInProcessImportCookie({\r\n importId,\r\n importType,\r\n });\r\n }\r\n\r\n getGoogleImportUserPreferences() {\r\n const preferences = {};\r\n\r\n return this.getImportUserPreferencesWithBMCandMinInfo(importType)\r\n .then(userPref => _.extend(preferences, userPref));\r\n }\r\n\r\n mergeGoogleAccountProperties(preferences, googleAccountProperties) {\r\n if (!preferences) {\r\n return preferences;\r\n }\r\n if (googleAccountProperties === false) {\r\n return false;\r\n }\r\n const { TrackingTemplate, FinalUrlSuffix } = googleAccountProperties;\r\n\r\n // eslint-disable-next-line one-var\r\n const UserPreferenceTrackingTemplate =\r\n preferences.AdWordsAccountTrackingTemplate || preferences.AdWordsAccountFinalUrlSuffix;\r\n\r\n return _.extend(\r\n preferences,\r\n {\r\n UserPreferenceTrackingTemplate,\r\n TrackingTemplateValue: TrackingTemplate,\r\n FinalUrlSuffixValue: FinalUrlSuffix,\r\n AdWordsAccountTrackingTemplate: TrackingTemplate,\r\n AdWordsAccountFinalUrlSuffix: FinalUrlSuffix,\r\n }\r\n );\r\n }\r\n\r\n getGoogleAccountProperties(googleCustomerId) {\r\n const sessionId = this.getGoogleSessionIdFromCookie();\r\n\r\n if (sessionId) {\r\n const urlTemplate = getGoogleAccountPropertiesUrlTmpl;\r\n let url = urlTemplate.replace('{{SessionId}}', sessionId);\r\n if (this.newRepositoryEnabled) {\r\n url = url.replace(':account_id', this.aid);\r\n }\r\n\r\n url = this.formatUrl({\r\n url,\r\n queryParameters: {\r\n googleCustomerId,\r\n },\r\n });\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n this.logTrace('Did not send request in method getGoogleAccountProperties because no SessionId was found');\r\n\r\n return Promise.resolve(false);\r\n }\r\n\r\n getMultiAccountGoogleImportUserPreferences(googleCustomerList) {\r\n let preferences = {};\r\n\r\n return this.getMultiAccountImportUserPreferenceWithBMCandMinInfo()\r\n .then((userPref) => {\r\n preferences = _.extend(preferences, userPref);\r\n const googleCustomerIdList = _.keys(googleCustomerList);\r\n return this.getMultiAccountGoogleAccountProperties(googleCustomerIdList.join());\r\n })\r\n .then((result) => {\r\n if (result === false) {\r\n return false;\r\n }\r\n const TrackingTemplate = [];\r\n const FinalUrlSuffix = [];\r\n _.each(googleCustomerList, (item) => {\r\n if (result[item.CustomerId]) {\r\n TrackingTemplate.push({\r\n googleCustomerId: item.CustomerId,\r\n googleAccountName: item.AccountName,\r\n trackingTemplate: result[item.CustomerId].TrackingTemplate,\r\n });\r\n FinalUrlSuffix.push({\r\n googleCustomerId: item.CustomerId,\r\n googleAccountName: item.AccountName,\r\n finalUrlSuffix: result[item.CustomerId].FinalUrlSuffix,\r\n });\r\n }\r\n });\r\n\r\n preferences = _.extend(\r\n preferences,\r\n {\r\n AdWordsAccountTrackingTemplate: TrackingTemplate,\r\n AdWordsAccountFinalUrlSuffix: FinalUrlSuffix,\r\n }\r\n );\r\n return preferences;\r\n });\r\n }\r\n\r\n getMultiAccountGoogleAccountProperties(googleCustomerIdList) {\r\n const sessionId = this.getGoogleSessionIdFromCookie();\r\n\r\n if (sessionId) {\r\n let url = _.template(getMultiGoogleAccountPropertiesUrlTmpl)({\r\n AccountId: this.aid,\r\n SessionId: sessionId,\r\n });\r\n\r\n url = this.formatUrl({\r\n url,\r\n queryParameters: {\r\n googleCustomerIdList,\r\n },\r\n });\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n this.logTrace('Did not send request in method getMultiAccountGoogleAccountProperties because no SessionId was found');\r\n\r\n return Promise.resolve(false);\r\n }\r\n\r\n logout() {\r\n // When logging out of Google Ads, remove the Google Ads cookies and the\r\n // Google Merchant Center cookie. The GMC cookie is from the Merchant Center Mapping Step.\r\n this.removeImportCookieValue(\r\n keyNameOfSessionIdInCookie,\r\n keyNameOfLoginAccountInCookie,\r\n keyNameOfGMCEmailAddressInCookie\r\n );\r\n\r\n window.frames.logoutIFrame.location = GOOGLE_LOGOUT_URL;\r\n }\r\n\r\n checkOpportunityType() {\r\n const { opportunityType } = this.deps;\r\n\r\n return opportunityType === 'first' || opportunityType === 'reimport' || opportunityType === 'GoogleImportOpportunity' || opportunityType === 'GoogleImportScheduledOpportunity';\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { GoogleLoginRepository as GoogleLoginBaseRepository } from '@bingads-webui/google-login-repository';\r\n\r\nconst OAUTH_SCOPE = 'https://www.googleapis.com/auth/adwords https://www.googleapis.com/auth/userinfo.email';\r\n\r\nexport function getClientId(domain) {\r\n const bingAdsProdPattern = /ui(.beta)?(.tip)?.bingads.microsoft.com$/;\r\n const msadProdPattern = /ui(.beta)?(.tip)?.ads.microsoft.com$/;\r\n\r\n const msadProdSignupPattern = /^(beta.)?(tip.)?ads.microsoft.com$/;\r\n const bingAdsSignupPattern = /^(beta.)?(tip.)?bingads.microsoft.com$/;\r\n if (\r\n _.isNull(domain.match(bingAdsProdPattern)) &&\r\n _.isNull(domain.match(msadProdPattern)) &&\r\n _.isNull(domain.match(msadProdSignupPattern)) &&\r\n _.isNull(domain.match(bingAdsSignupPattern))\r\n ) {\r\n return '640802097284-nctqt4ptlhnksuj8lu24ana6iqgd05r8.apps.googleusercontent.com';\r\n }\r\n\r\n return '639188481088-c2nvr8kbh33s2v06gooask751o1hgis1.apps.googleusercontent.com';\r\n}\r\n\r\nexport class GoogleLoginRepository extends GoogleLoginBaseRepository {\r\n constructor({ deps }) {\r\n const { google, GSILocal } = deps;\r\n super({\r\n scope: OAUTH_SCOPE,\r\n clientId: getClientId(document.domain),\r\n GSILocal,\r\n google,\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport { GoogleImportRepository } from '../google-import-repositories';\r\n\r\nconst getBingAccountsUrlTmpl = '/Customers()/Accounts/Default.GridData';\r\n\r\nexport class SmartImportRepository extends GoogleImportRepository {\r\n constructor({ deps }) {\r\n super({ deps });\r\n\r\n this.newRepositoryEnabled = this.permissions.IsSmartImportV2Enabled;\r\n }\r\n\r\n // set to new Aid if it's under cid level, which might be multi google import\r\n // or single google import with a differnt aid other than currentAccount.Id\r\n setAid(aid) {\r\n if (aid) {\r\n this.aid = aid;\r\n }\r\n }\r\n\r\n getBingAccounts(top = 5, skip = 0, searchQuery = '') {\r\n let filter = 'Status ne \\'Inactive\\' and Status ne \\'Deleted\\'';\r\n if (!_.isEmpty(searchQuery)) {\r\n filter += ` and contains(Name, '${searchQuery}')`;\r\n }\r\n const url = this.formatUrl({\r\n url: getBingAccountsUrlTmpl,\r\n queryParameters: {\r\n $top: top,\r\n $skip: skip,\r\n $count: true,\r\n $select: 'Id, Name, Currency, Status',\r\n $filter: filter,\r\n },\r\n });\r\n return this.odata.post(url, {\r\n data: {\r\n gridDataParameters: {},\r\n isManagementRequest: true,\r\n accountModes: ['Expert'],\r\n },\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst defaultPermissions = ['email'];\r\nconst defaultFields = ['id', 'name', 'email'];\r\n\r\n// eslint-disable-next-line camelcase\r\nconst ERROR_CODE_UNINITIAliZED = 'uninitialized';\r\n// eslint-disable-next-line no-unused-vars\r\nconst ERROR_CODE_UNKNOWN = 'unknown';\r\n\r\nexport class FacebookLoginRepository {\r\n constructor({ deps }) {\r\n this.FB = deps.FB;\r\n }\r\n\r\n login({\r\n permissions = defaultPermissions,\r\n rerequest = false,\r\n onSuccess = _.noop,\r\n onFail = _.noop,\r\n } = {}) {\r\n if (!this.FB || !_.isFunction(this.FB.login)) {\r\n onFail(ERROR_CODE_UNINITIAliZED);\r\n return;\r\n }\r\n\r\n const loginOptions = {\r\n scope: permissions.join(','),\r\n return_scopes: true,\r\n };\r\n if (rerequest) {\r\n loginOptions.auth_type = 'rerequest';\r\n }\r\n\r\n this.FB.getLoginStatus((res) => {\r\n if (rerequest || !res || res.status !== 'connected') {\r\n this.FB.login((response) => {\r\n if (!response || response.error) {\r\n // todo: handle different errors\r\n onFail(response || ERROR_CODE_UNKNOWN);\r\n return;\r\n }\r\n\r\n const { status, authResponse } = response;\r\n if (status === 'connected') {\r\n const {\r\n accessToken,\r\n userID,\r\n expiresIn,\r\n grantedScopes: grantedScopesCSV = '',\r\n } = authResponse || {};\r\n\r\n const grantedScopes = grantedScopesCSV.split(',');\r\n const declinedScopes = _.difference(permissions, grantedScopes);\r\n // eslint-disable-next-line object-curly-newline\r\n onSuccess({ grantedScopes, declinedScopes, accessToken, userID, expiresIn });\r\n } else { // not_authorized, unknown\r\n onFail(response || ERROR_CODE_UNKNOWN);\r\n }\r\n }, loginOptions);\r\n } else {\r\n const { authResponse } = res || {};\r\n const { accessToken, userID } = authResponse || {};\r\n onSuccess({ accessToken, userID });\r\n }\r\n });\r\n }\r\n\r\n logout({ onSuccess = _.noop, onFail = _.noop } = {}) {\r\n if (!this.FB || !_.isFunction(this.FB.logout)) {\r\n onFail(ERROR_CODE_UNINITIAliZED);\r\n return;\r\n }\r\n\r\n try {\r\n this.FB.getLoginStatus((res) => {\r\n if (res && res.status === 'connected') {\r\n this.FB.logout((response) => {\r\n if (!response || response.error) {\r\n onFail(response || ERROR_CODE_UNKNOWN);\r\n return;\r\n }\r\n onSuccess();\r\n });\r\n } else {\r\n onSuccess();\r\n }\r\n });\r\n } catch (ex) {\r\n onFail(ex);\r\n }\r\n }\r\n\r\n getUserInfo({ fields = defaultFields, onSuccess = _.noop, onFail = _.noop } = {}) {\r\n if (!this.FB || !_.isFunction(this.FB.api)) {\r\n onFail(ERROR_CODE_UNINITIAliZED);\r\n return;\r\n }\r\n\r\n const userFields = fields.join(',');\r\n this.FB.api('/me', 'GET', { fields: userFields }, (response) => {\r\n if (!response || response.error) {\r\n onFail(response || ERROR_CODE_UNKNOWN);\r\n return;\r\n }\r\n onSuccess(response);\r\n });\r\n }\r\n}\r\n\r\n","/* eslint-disable object-curly-newline */\r\nimport Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport { StringPayload } from '@bingads-webui/azure-upload';\r\nimport { CommonImportRepository } from '../common-repository';\r\nimport { filterAndLocalizeFacebookCampaignsUtil } from './facebook-import-repository-utils';\r\nimport { getLocalizedCampaignTypeStringUtil, containDisplayTypeUtil } from '../import-repository-utils';\r\nimport { FacebookLoginRepository } from './facebook-login-repository';\r\n\r\nconst getFacebookSessionUrlTmpl =\r\n 'ImportSession/StartFacebookSession(CustomerId=:customer_id,AccountId=:account_id)?accessToken={{accessToken}}';\r\nconst getFacebookSessionWithTokenUrlTmpl =\r\n 'ImportSession/StartFacebookSession(CustomerId=:customer_id,AccountId=:account_id)?LongLivedAccessToken={{LongLivedAccessToken}}';\r\nconst getFacebookAccountsUrlTmpl =\r\n '/ImportSession/FacebookAccounts(CustomerId=:customer_id,AccountId=:account_id,SessionId={{SessionId}})';\r\nconst getFacebookCampaignsUrlTmpl =\r\n '/ImportSession/FacebookCampaigns(CustomerId=:customer_id,AccountId=:account_id,SessionId={{SessionId}})';\r\nconst getFacebookAdGroupsUrlTmpl =\r\n '/ImportSession/FacebookAdGroups(CustomerId=:customer_id,AccountId=:account_id,SessionId={{SessionId}})';\r\nconst importType = 'FacebookImport';\r\nconst keyNameOfSessionIdInCookie = 'OAuth2_FacebookSessionId';\r\nconst keyNameOfLoginAccountInCookie = 'OAuth2_FacebookLoginAccount';\r\nconst facebookEntitiesBulkFileTypeNum = 17;\r\nconst facebookAdsEntityBulkFileType = 'FacebookAdsEntityIdFile';\r\n\r\n// permission name => description used to explain why we need this permisison to user\r\nconst permissionsDescription = {\r\n email: 'FacebookImport_Permission_Email_Desc', // email is required to identify Facebook users\r\n ads_read: 'FacebookImport_Permission_Ads_Read_Desc', // ads_read is used to read Meta Ads\r\n // ads_management: 'used to manage Meta Ads',\r\n};\r\n\r\nexport class FacebookImportRepository extends CommonImportRepository {\r\n constructor({ deps }) {\r\n super({ deps, type: 'FacebookImport', importType });\r\n\r\n if (deps != null) {\r\n this.edm = deps.edm;\r\n this.jsData = deps.jsData;\r\n this.isMultiAccountImport = deps.isMultiAccountImport;\r\n if (this.edm != null) {\r\n this.taskItemOptions = {\r\n adapter: 'odata',\r\n entitySet: this.isMultiAccountImport ?\r\n this.edm.currentCustomer.TaskItems : this.edm.currentAccount.TaskItems,\r\n };\r\n }\r\n this.loginRepository = new FacebookLoginRepository({ deps });\r\n }\r\n }\r\n\r\n startFacebookSession(authCode) {\r\n const url = getFacebookSessionUrlTmpl.replace('{{accessToken}}', authCode);\r\n\r\n return this.startFacebookSessionInternal(url);\r\n }\r\n\r\n startFacebookSessionWithToken(token) {\r\n const url = getFacebookSessionWithTokenUrlTmpl.replace('{{LongLivedAccessToken}}', token);\r\n\r\n return this.startFacebookSessionInternal(url);\r\n }\r\n\r\n startFacebookSessionInternal(url) {\r\n return this.odata.post(url, { data: '' })\r\n .then((data) => {\r\n this.logTrace(`StartFacebookSession response with ${JSON.stringify(data)}`);\r\n const { FacebookEmail, FacebookSessionId, FacebookUserId } = data;\r\n if (FacebookEmail && FacebookSessionId) {\r\n this.setFacebookImportAccountInfoInCookie({\r\n sessionId: FacebookSessionId,\r\n loginAccount: FacebookEmail,\r\n });\r\n }\r\n return {\r\n sessionId: FacebookSessionId,\r\n userId: FacebookUserId,\r\n loginAccount: FacebookEmail,\r\n };\r\n });\r\n }\r\n\r\n getFacebookCampaigns(facebookCustomerId) {\r\n const sessionId = this.getFacebookSessionIdFromCookie();\r\n let url = getFacebookCampaignsUrlTmpl.replace('{{SessionId}}', sessionId);\r\n\r\n url = this.formatUrl({\r\n url,\r\n queryParameters: {\r\n externalAccountId: facebookCustomerId,\r\n },\r\n });\r\n\r\n return this.getFacebookCampaignsInternal(url);\r\n }\r\n\r\n getFacebookCampaignsInternal(url) {\r\n return this.odata.get(url)\r\n .then(data => filterAndLocalizeFacebookCampaignsUtil(data, this.i18n, this.logError));\r\n }\r\n\r\n getFacebookAdGroupsByBlobName(facebookCustomerId, blobName, usecache = true) {\r\n const sessionId = this.getFacebookSessionIdFromCookie();\r\n let url = getFacebookAdGroupsUrlTmpl.replace('{{SessionId}}', sessionId);\r\n\r\n url = this.formatUrl({\r\n url,\r\n queryParameters: {\r\n facebookCustomerId,\r\n blobName,\r\n usecache,\r\n },\r\n });\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n containDisplayType(campaignsList) {\r\n return containDisplayTypeUtil(campaignsList, this.i18n);\r\n }\r\n\r\n getLocalizedCampaignTypeString(type) {\r\n return getLocalizedCampaignTypeStringUtil(type, this.i18n);\r\n }\r\n\r\n getFacebookAccounts(currentSessionId = null) {\r\n const sessionId = currentSessionId || this.getFacebookSessionIdFromCookie();\r\n const url = getFacebookAccountsUrlTmpl.replace('{{SessionId}}', sessionId);\r\n\r\n return this.odata.get(url);\r\n }\r\n\r\n getFacebookSessionIdFromCookie() {\r\n return this.getValueInSubImportCookieByAccountId(keyNameOfSessionIdInCookie)[0];\r\n }\r\n\r\n getFacebookLoginAccountFromCookie() {\r\n return this.getValueInSubImportCookieByAccountId(keyNameOfLoginAccountInCookie)[0];\r\n }\r\n\r\n // this is for fetching multiple items from cookie\r\n getFacebookImportInfoFromCookie() {\r\n const result = this.getValueInSubImportCookieByAccountId(\r\n keyNameOfSessionIdInCookie,\r\n keyNameOfLoginAccountInCookie\r\n );\r\n\r\n return {\r\n facebookSessionId: result[0],\r\n facebookAccountName: result[1],\r\n };\r\n }\r\n\r\n isUserLoggedIn() {\r\n return !!this.getFacebookSessionIdFromCookie();\r\n }\r\n\r\n getFacebookAccountName() {\r\n return this.getFacebookLoginAccountFromCookie();\r\n }\r\n\r\n setFacebookImportLoginAccountInCookie(loginAccount) {\r\n this.addSubCookieToImportCookie({\r\n [keyNameOfLoginAccountInCookie]: loginAccount,\r\n });\r\n }\r\n\r\n setFacebookImportAccountInfoInCookie({ loginAccount, sessionId }) {\r\n this.addSubCookieToImportCookie({\r\n [keyNameOfLoginAccountInCookie]: loginAccount,\r\n [keyNameOfSessionIdInCookie]: sessionId,\r\n });\r\n }\r\n\r\n serializeFacebookEntitiesSelectionDataToStringPayload(selectionData) {\r\n return new StringPayload({\r\n content: JSON.stringify({\r\n CampaignIds: selectionData.selectedCampaignIds,\r\n AdGroupIdMap: selectionData.selectedAdGroupMap,\r\n CampaignIdsWithActiveAdGroups: selectionData.selectedWithActiveOnly,\r\n }),\r\n });\r\n }\r\n\r\n convertAdGroupDataToIdMap(adGroupData) {\r\n return _.mapObject(_.groupBy(adGroupData, 'campaignId'), arr => _.pluck(arr, 'Id'));\r\n }\r\n\r\n getCleanedFacebookAdGroupSelectionDataFromBlob(customerId, blobName) {\r\n return this.getFacebookAdGroupsByBlobName(customerId, blobName)\r\n .then(adGroupData => this.convertAdGroupDataToIdMap(adGroupData));\r\n }\r\n\r\n getSelectionDataFromBlob(blobName) {\r\n return this.getEntitiesBlob(blobName)\r\n .then(blob =>\r\n ({\r\n selectedCampaignIds: blob.CampaignIds,\r\n selectedAdGroupMap: blob.AdGroupIdMap,\r\n selectedWithActiveOnly: blob.CampaignIdsWithActiveAdGroups,\r\n }));\r\n }\r\n\r\n getEntitiesBlob(blobName) {\r\n return this.getBulkBlob(blobName, facebookEntitiesBulkFileTypeNum);\r\n }\r\n\r\n // add clean up campaigns in here\r\n prepareForCampaignSelectionStep(customerId, blobName) {\r\n const promises = {};\r\n promises.facebookCampaigns = this.getFacebookCampaigns(customerId);\r\n\r\n if (blobName) {\r\n promises.selectionData = this.getSelectionDataFromBlob(blobName)\r\n .then((selectionData) => {\r\n const finalState = {};\r\n finalState.selectedCampaignIds = selectionData.selectedCampaignIds;\r\n finalState.selectedWithActiveOnly = selectionData.selectedWithActiveOnly;\r\n\r\n if (!_.isEmpty(selectionData.selectedAdGroupMap)) {\r\n return this.getCleanedFacebookAdGroupSelectionDataFromBlob(customerId, blobName)\r\n .then((selectedAdGroupMap) => {\r\n finalState.selectedAdGroupMap = selectedAdGroupMap;\r\n return finalState;\r\n });\r\n }\r\n\r\n finalState.selectedAdGroupMap = {};\r\n return finalState;\r\n });\r\n }\r\n\r\n return Promise.props(promises)\r\n .then(({ facebookCampaigns, selectionData }) => {\r\n this.logTrace(`FacebookCampaignsCount: ${Object.keys(facebookCampaigns).length}`);\r\n const finalState = { facebookCampaigns };\r\n if (selectionData) {\r\n const availableIdBoolMap = _.object(_.map(facebookCampaigns, obj => [obj.Id, true]));\r\n const campaignIdFilter = ids => _.filter(ids, id => availableIdBoolMap[id]);\r\n const selectedCampaignIds = campaignIdFilter(selectionData.selectedCampaignIds);\r\n const selectedWithActiveOnly = campaignIdFilter(selectionData.selectedWithActiveOnly);\r\n _.extend(finalState, {\r\n selectedCampaignIds: _.isEmpty(selectedCampaignIds) ? null : selectedCampaignIds,\r\n selectedWithActiveOnly: _.isEmpty(selectedWithActiveOnly)\r\n ? null : selectedWithActiveOnly,\r\n selectedAdGroupMap: selectionData.selectedAdGroupMap,\r\n });\r\n }\r\n return finalState;\r\n });\r\n }\r\n\r\n prepareFacebookImportContext(\r\n facebookCustomerId,\r\n campaignIds,\r\n initialAdWordsAccount,\r\n facebookEntitiesSelectionData,\r\n uid\r\n ) {\r\n let sessionId;\r\n let facebookAccountName;\r\n\r\n if (initialAdWordsAccount) {\r\n ({ sessionId } = initialAdWordsAccount);\r\n ({ facebookAccountName } = initialAdWordsAccount);\r\n } else {\r\n const info = this.getFacebookImportInfoFromCookie();\r\n\r\n sessionId = info.facebookSessionId;\r\n ({ facebookAccountName } = info);\r\n }\r\n\r\n const facebookImportContext = {\r\n '@odata.type': '#Model.FacebookImportContext',\r\n SessionId: sessionId,\r\n AccountId: facebookCustomerId,\r\n AccountName: facebookAccountName,\r\n CampaignIds: campaignIds || [],\r\n FacebookSessionUserId: uid,\r\n };\r\n\r\n if (facebookEntitiesSelectionData) {\r\n return this.uploadToAzureBlobViaOdata({\r\n bulkFileType: facebookAdsEntityBulkFileType,\r\n payload:\r\n this.serializeFacebookEntitiesSelectionDataToStringPayload(facebookEntitiesSelectionData),\r\n }).then(blob =>\r\n ({\r\n ...facebookImportContext,\r\n FacebookEntitiesBlobName: blob.BlobName,\r\n }));\r\n }\r\n\r\n return Promise.resolve(facebookImportContext);\r\n }\r\n\r\n prepareFacebookImportTaskItem({\r\n importOptions,\r\n stepState,\r\n }) {\r\n const {\r\n importUserPreferences,\r\n notificationType,\r\n notificationEmailAddresses,\r\n timeZoneId,\r\n name,\r\n cron,\r\n taskItemState,\r\n ScenarioIdentifier,\r\n } = importOptions;\r\n\r\n const {\r\n facebookCustomerId,\r\n campaignIds,\r\n initialAdWordsAccount,\r\n facebookEntitiesSelectionData,\r\n } = stepState;\r\n\r\n return this.prepareFacebookImportContext(\r\n facebookCustomerId, campaignIds, initialAdWordsAccount,\r\n facebookEntitiesSelectionData, this.uid\r\n )\r\n .then(facebookImportContext =>\r\n (_.extend(\r\n this.prepareCompleteImportTaskItem(importUserPreferences, timeZoneId), {\r\n '@odata.type': '#Model.FacebookTaskItem',\r\n Type: `FacebookImport${this.testTypeSuffix}`,\r\n NotificationType: notificationType,\r\n NotificationEmailAddresses: notificationEmailAddresses,\r\n FacebookImportContext: facebookImportContext,\r\n ImportType: importType,\r\n },\r\n _.pick(importOptions, 'IsAutoFrequency', 'IsSmartImport'),\r\n !!name && { Name: name },\r\n !!taskItemState && { State: taskItemState },\r\n !!cron && { Cron: cron },\r\n !!ScenarioIdentifier && { ScenarioIdentifier }\r\n )));\r\n }\r\n\r\n refreshScheduledFacebookImportTaskItemSessionId(accessToken, taskItemId, currentUser) {\r\n return this.startFacebookSession(accessToken).then(({ sessionId }) => {\r\n const facebookSessionId = sessionId || this.getFacebookSessionIdFromCookie();\r\n if (!facebookSessionId) {\r\n return Promise.reject(new Error('failed to get facebook import session id.'));\r\n }\r\n\r\n return this.getImportTaskItem(taskItemId).then((taskItem) => {\r\n const data = {\r\n ...taskItem,\r\n FacebookImportContext: {\r\n ...taskItem.FacebookImportContext,\r\n SessionId: facebookSessionId,\r\n FacebookSessionUserId: (currentUser && currentUser.Id)\r\n || taskItem.FacebookImportContext.FacebookSessionUserId,\r\n },\r\n };\r\n return this.updateScheduledImportTaskItem(data, taskItemId);\r\n });\r\n });\r\n }\r\n\r\n setInProcessImportCookie({ importId }) {\r\n super.setInProcessImportCookie({\r\n importId,\r\n importType,\r\n });\r\n }\r\n\r\n getFacebookImportUserPreferences() { // facebookCustomerId\r\n let preferences = {};\r\n\r\n return this.getImportUserPreferencesWithBMCandMinInfo(importType)\r\n .then((userPref) => {\r\n preferences = _.extend(preferences, userPref);\r\n\r\n return preferences;\r\n })\r\n .then((result) => {\r\n if (result === false) {\r\n return false;\r\n }\r\n const { TrackingTemplate, FinalUrlSuffix } = result;\r\n preferences = _.extend(\r\n preferences,\r\n {\r\n TrackingTemplateValue: TrackingTemplate,\r\n FinalUrlSuffixValue: FinalUrlSuffix,\r\n AdWordsAccountTrackingTemplate: TrackingTemplate,\r\n AdWordsAccountFinalUrlSuffix: FinalUrlSuffix,\r\n }\r\n );\r\n return preferences;\r\n });\r\n }\r\n\r\n login({\r\n rerequest = false,\r\n onSuccess = _.noop,\r\n onPermissionsDeclined = _.noop,\r\n onFail = _.noop,\r\n }) {\r\n this.loginRepository.login({\r\n permissions: _.keys(permissionsDescription),\r\n rerequest,\r\n onSuccess: ({ declinedScopes, accessToken, userID }) => {\r\n if (declinedScopes && declinedScopes.length > 0) {\r\n // some of the requests are declined by users, show messages to explain\r\n // why we need these permissions and ask users to re-request\r\n const declinedScopesAndDesc\r\n = declinedScopes.map(ds => ({\r\n name: ds,\r\n description: this.i18n.get(permissionsDescription[ds]),\r\n }));\r\n onPermissionsDeclined({ declinedScopes: declinedScopesAndDesc, userID, accessToken });\r\n } else {\r\n onSuccess({ userID, accessToken });\r\n }\r\n },\r\n onFail: (error) => {\r\n // todo: this.logError(error);\r\n onFail(error);\r\n },\r\n });\r\n }\r\n\r\n logout({ onSuccess = _.noop, onFail = _.noop } = {}) {\r\n this.removeImportCookieValue(keyNameOfSessionIdInCookie, keyNameOfLoginAccountInCookie);\r\n this.loginRepository.logout({ onSuccess, onFail });\r\n }\r\n\r\n checkOpportunityType() {\r\n const { opportunityType } = this.deps;\r\n\r\n return opportunityType === 'FacebookImportOpportunity';\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport const filterAndLocalizeFacebookCampaignsUtil = (campaigns, i18n) => {\r\n const filteredAndLocalized = _.chain(campaigns)\r\n .filter((campaign) => {\r\n const status = campaign.Status;\r\n\r\n return status !== 'Draft' && status !== 'Delete' && status !== 'Deleted';\r\n })\r\n .map(({\r\n Id,\r\n Name,\r\n Status,\r\n }) => ({\r\n Id,\r\n Name,\r\n Status,\r\n Type: i18n.get('CampaignCampaignType_Audience'), // default type for Facebook campaign\r\n }))\r\n .value();\r\n\r\n return filteredAndLocalized;\r\n};\r\n","/* eslint-disable newline-after-var */\r\n// app ids taken from https://developers.facebook.com\r\nconst FACEBOOK_APP_CONFIG = {\r\n PROD: {\r\n appId: 647456452727479, // MCA SI app\r\n sdkUrl: 'https://connect.facebook.net/en_US/sdk.js',\r\n sdkVersion: 'v8.0',\r\n env: 'PROD',\r\n },\r\n SI: {\r\n appId: 768575197290072,\r\n sdkUrl: 'https://connect.facebook.net/en_US/sdk.js',\r\n sdkVersion: 'v8.0',\r\n env: 'SI',\r\n },\r\n LOCAL: {\r\n appId: 768575197290072,\r\n sdkUrl: 'https://connect.facebook.net/en_US/sdk/debug.js',\r\n sdkVersion: 'v8.0',\r\n env: 'LOCAL',\r\n },\r\n};\r\n\r\n/**\r\n * Determines what environment the site is running in, based on the domain.\r\n * @param {string} domain - Current domain.\r\n * @returns {string} - Environment the site is running in.\r\n */\r\nexport function getEnvironment(domain) {\r\n const prodBingAdsPattern = /^(ui\\.)?bingads\\.microsoft\\.com$/;\r\n const prodMicrosoftAdsPattern = /^(ui\\.)?ads\\.microsoft\\.com$/;\r\n if (domain.match(prodMicrosoftAdsPattern) || domain.match(prodBingAdsPattern)) {\r\n return 'PROD';\r\n }\r\n\r\n const betaprodBingAdsPattern = /^(ui\\.)?beta\\.bingads\\.microsoft\\.com$/;\r\n const betaprodMicrosoftAdsPattern = /^(ui\\.)?beta\\.ads\\.microsoft\\.com$/;\r\n if (domain.match(betaprodMicrosoftAdsPattern) || domain.match(betaprodBingAdsPattern)) {\r\n return 'BETAPROD';\r\n }\r\n\r\n const tipBingAdsPattern = /^(ui\\.)?tip\\.bingads\\.microsoft\\.com$/;\r\n const tipMicrosoftAdsPattern = /^(ui\\.)?tip\\.?ads\\.microsoft\\.com$/;\r\n if (domain.match(tipBingAdsPattern) || domain.match(tipMicrosoftAdsPattern)) {\r\n return 'TIP';\r\n }\r\n\r\n const siBingAdsPattern = /^(ui\\.)?si\\.bingads\\.microsoft\\.com$/;\r\n const siMicrosoftAdsPattern = /^(ui\\.)?ads-int\\.microsoft\\.com$/;\r\n if (domain.match(siMicrosoftAdsPattern) || domain.match(siBingAdsPattern)) {\r\n return 'SI';\r\n }\r\n\r\n const betasiBingAdsPattern = /^(ui\\.)?beta\\.si\\.bingads\\.microsoft\\.com$/;\r\n const betasiMicrosoftAdsPattern = /^(ui\\.)?beta\\.ads-int\\.microsoft\\.com$/;\r\n if (domain.match(betasiMicrosoftAdsPattern) || domain.match(betasiBingAdsPattern)) {\r\n return 'BETASI';\r\n }\r\n\r\n return 'LOCAL';\r\n}\r\n\r\nexport function getFacebookConfig(domain) {\r\n const environment = getEnvironment(domain);\r\n switch (environment) {\r\n case 'PROD':\r\n case 'BETAPROD':\r\n case 'TIP':\r\n return FACEBOOK_APP_CONFIG.PROD;\r\n case 'SI':\r\n case 'BETASI':\r\n return FACEBOOK_APP_CONFIG.SI;\r\n default:\r\n return FACEBOOK_APP_CONFIG.LOCAL;\r\n }\r\n}\r\n","import Promise from 'bluebird';\r\nimport { getFacebookConfig } from './get-facebook-config';\r\n\r\nconst fbSdkScriptId = 'facebook-js-sdk';\r\n\r\nfunction loadScriptAsynchronously(id, src) {\r\n return new Promise((resolve) => {\r\n const fbScript = document.getElementById(id);\r\n // script already loaded, remove it and load again\r\n if (fbScript) {\r\n fbScript.parentNode.removeChild(fbScript);\r\n }\r\n\r\n // create a