{"version":3,"file":"static/js/application.async.non-landing~f8f9b35b.13014003.chunk.js","mappings":"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","sources":["../../../../campaign-legacy/packages/adextension-app/viewmodel/get-icon-class.js","../../../../campaign-legacy/packages/adextension-app/viewmodel/get-media-url.js","../../../../campaign-legacy/packages/adextension-app/template/index.js","../../../../campaign-legacy/packages/adextension-associations-container/viewmodel/index.js","../../../../campaign-legacy/packages/adextension-associations-container/view/index.js","../../../../campaign-legacy/packages/adextension-call/template/index.js","../../../../campaign-legacy/packages/adextension-callout/template/index.js","../../../../campaign-legacy/packages/adextension-image/view/extensionEditor2-vnext.js","../../../../campaign-legacy/packages/adextension-location/template/index.js","../../../../campaign-legacy/packages/adextension-price/template/index.js","../../../../campaign-legacy/packages/adextension-review/template/index.js","../../../../campaign-legacy/packages/adextension-shared/util/feature-control.js","../../../../campaign-legacy/packages/adextension-shared/view/delivery/adextension-delivery-status-popup-factory.js","../../../../campaign-legacy/packages/adextension-shared/viewmodel/adextension-grid-column.js","../../../../campaign-legacy/packages/adextension-sitelink/template/index.js","../../../../campaign-legacy/packages/adextension-structuredsnippet/template/index.js","../../../../campaign-legacy/packages/adgroup-settings/viewmodel/index.js","../../../../campaign-legacy/packages/adgroup-settings/view/index.js","../../../../campaign-legacy/packages/adgroup-settings/options/mutables.js","../../../../campaign-legacy/packages/audiences/grid/base-column.js","../../../../campaign-legacy/packages/auto-targets/viewmodel/shared/CampaignAdgroupSelector.js","../../../../campaign-legacy/packages/bingadsgrid/config-preprocessor/header-template-config.js","../../../../campaign-legacy/packages/bingadsgrid/service/fetch-preference-config.js","../../../../campaign-legacy/packages/bingadsgrid/vnext/plugin/date-filter.js","../../../../campaign-legacy/packages/bingadsgrid/vnext/plugin/refresh-cache-plugin.js","../../../../campaign-legacy/packages/bingadsgrid/vnext/shared/columns.js","../../../../campaign-legacy/packages/bulk-operation/automated-rules/new-ui-deps.js","../../../../campaign-legacy/packages/bulk-operation/automated-rules/rule-mapper.js","../../../../campaign-legacy/packages/bulk-operation/edit-detail/detail-mapper.js","../../../../campaign-legacy/packages/campaign-settings/viewmodel/index.js","../../../../campaign-legacy/packages/campaign-settings/view/index.js","../../../../campaign-legacy/packages/campaign-targeting/view/campaign-targeting.js","../../../../campaign-legacy/packages/common-grid-config/controls/account-list-view.js","../../../../campaign-legacy/packages/common-grid-config/controls/tracking-status-popover.js","../../../../campaign-legacy/packages/common-grid-config/filter/base-filter-config.js","../../../../campaign-legacy/packages/common-grid-config/filter/update-delivery-status-option-for-filter.js","../../../../campaign-legacy/packages/common-grid-config/selection.js","../../../../campaign-legacy/packages/common-grid-config/util/schema-editor.js","../../../../campaign-legacy/packages/conversion-tracking/common/util/index.js","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/unassigned-detail-popover.js","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/column-config.js","../../../../campaign-legacy/packages/common-grid-plugins/perf-data-explanation/perf-data-explanation-view.js","../../../../campaign-legacy/packages/common-grid-plugins/perf-data-explanation/index.js","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/grid-config.js","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/index.js","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/plugin-config.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard-test/grid/grid-config.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard-test/grid/index.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard-test/grid/column-config.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard-test/grid/plugin-config.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard/grid/grid-config.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard/grid/query-config.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard/grid/export-data.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard/grid/index.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard/grid/column-config.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard/grid/plugin-config.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/create/index.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/grid/column-config.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/grid/grid-config.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/grid/index.js","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/grid/plugin-config.js","../../../../campaign-legacy/packages/conversion-tracking/upload-conversions/changes-view.js","../../../../campaign-legacy/packages/conversion-tracking/upload-conversions/history-grid-columns-config.js","../../../../campaign-legacy/packages/conversion-tracking/upload-conversions/history-grid-data-config.js","../../../../campaign-legacy/packages/conversion-tracking/upload-conversions/history-grid.js","../../../../campaign-legacy/packages/crud-ad/viewmodel/index.js","../../../../campaign-legacy/packages/crud-ad/view/adgroup-selector-repository.js","../../../../campaign-legacy/packages/crud-ad/view/adgroup-selector-proxy.js","../../../../campaign-legacy/packages/crud-ad/view/campaign-adgroup-selector-repository.js","../../../../campaign-legacy/packages/crud-ad/view/campaign-adgroup-selector-proxy.js","../../../../campaign-legacy/packages/crud-ad/view/index.js","../../../../campaign-legacy/packages/crud-keywords/viewmodel/create-inline-recommendation.js","../../../../campaign-legacy/packages/crud-keywords/view/create-inline-recommendation.js","../../../../campaign-legacy/packages/griddownload/view/baseDownload.js","../../../../campaign-legacy/packages/hotel-center-ad-extensions/shared/service/hotel-center-entity-selector-service.js","../../../../campaign-legacy/packages/hotel-center-ad-extensions/shared/viewmodel/new-grid-config.js","../../../../campaign-legacy/packages/hotel-center-ad-extensions/shared/service/subAccountAssociationsRequestFactory.js","../../../../campaign-legacy/packages/hotel-center-ad-extensions/shared/service/hotelGroupAssociationsRequestFactory.js","../../../../campaign-legacy/packages/hotel-center-ad-extensions/shared/service/hotel-center-associations-repository.js","../../../../campaign-legacy/packages/hotel-center-ad-extensions/shared/service/repository.js","../../../../campaign-legacy/packages/hotel-center-ad-extensions/shared/view/Hotel-center-base-ad-extension-helper.js","../../../../campaign-legacy/packages/hotel-center-ad-extensions/shared/view/hotel-center-base-adextension-view.js","../../../../campaign-legacy/packages/hotel-center-assignment/assignment-ui-next.js","../../../../campaign-legacy/packages/hotel-center-ad-extensions/callout/callout-adextension-associations-view.js","../../../../campaign-legacy/packages/hotel-center-intelligence/intelligence-ui-next.js","../../../../campaign-legacy/packages/hotel-center-overview/overview-ui-next.js","../../../../campaign-legacy/packages/hotel-center-setup/setup-ui-next.js","../../../../campaign-legacy/packages/hotel-center-utils/index.js","../../../../campaign-legacy/packages/hotel-center/bootstrap/bootstrap-ui-next.js","../../../../campaign-legacy/packages/import-campaigns/shared/import-error-code-helper.js","../../../../campaign-legacy/packages/import-campaigns/shared/import-helper.js","../../../../campaign-legacy/packages/import-campaigns/azureUploader.js","../../../../campaign-legacy/packages/import-campaigns/spa/file-import-page.js","../../../../campaign-legacy/packages/import-campaigns/spa/google-import-page.js","../../../../campaign-legacy/packages/import-campaigns/spa/facebook-import-page.js","../../../../campaign-legacy/packages/import-campaigns/spa/amazon-import-page.js","../../../../campaign-legacy/packages/import-campaigns/spa/pinterest-import-page.js","../../../../campaign-legacy/packages/import-campaigns/spa/options-blacklist.js","../../../../campaign-legacy/packages/import-campaigns/spa/statuses.js","../../../../campaign-legacy/packages/import-campaigns/spa/shared-dependencies.js","../../../../campaign-legacy/packages/inline-chart/constants.js","../../../../campaign-legacy/packages/inline-chart/model/inlinechartdropdownoption.js","../../../../campaign-legacy/packages/inline-chart/model/granularityDropdownOption.js","../../../../campaign-legacy/packages/inline-chart/chartdelegateadapter.js","../../../../campaign-legacy/packages/inline-chart/chartnameconverter.js","../../../../campaign-legacy/packages/inline-chart/chartdataprovider.js","../../../../campaign-legacy/packages/campaign-state/index.js","../../../../campaign-legacy/packages/inline-chart/inline-chart-preferences.js","../../../../campaign-legacy/packages/inline-chart/viewmodel/inlinechartviewmodel.js","../../../../campaign-legacy/packages/inline-chart/numericsymbolformatter.js","../../../../campaign-legacy/packages/inline-chart/view/inlinechartview.js","../../../../campaign-legacy/packages/bingadsgrid/service/set-preference-by-report-email-rule.js","../../../../campaign-legacy/packages/inline-download-reports/create-similar.js","../../../../campaign-legacy/packages/inline-download-reports/load-emails.js","../../../../campaign-legacy/packages/scheduled-import/view/import-center-options.js","../../../../campaign-legacy/packages/scheduled-import/view/import-i18n.js","../../../../campaign-legacy/packages/scheduled-import/view/batched-import-processor.js","../../../../campaign-legacy/packages/scheduled-import/view/import-log-constants.js","../../../../campaign-legacy/packages/scheduled-import/view/import-log-datasource-handler.js","../../../../campaign-legacy/packages/import-campaigns/shared/download.js","../../../../campaign-legacy/packages/scheduled-import/view/import-log-grid-config.js","../../../../campaign-legacy/packages/scheduled-import/viewmodel/import-log-grid.js","../../../../campaign-legacy/packages/scheduled-import/view/import-settings-tooltip.js","../../../../campaign-legacy/packages/scheduled-import/view/import-log-grid-base.js","../../../../campaign-legacy/packages/import-campaigns/shared/showGoogleLoginPopup.js","../../../../campaign-legacy/packages/scheduled-import/view/import-log-grid.js","../../../../campaign-legacy/packages/scheduled-import/view/import-schedule-constants.js","../../../../campaign-legacy/packages/scheduled-import/view/import-schedule-grid-config.js","../../../../campaign-legacy/packages/scheduled-import/view/import-schedule-grid-data-source.js","../../../../campaign-legacy/packages/bingadsgrid/shared/update-tool.js","../../../../campaign-legacy/packages/bingadsgrid/shared/control-factory.js","../../../../campaign-legacy/packages/bingadsgrid/plugin/toolbar.js","../../../../campaign-legacy/packages/scheduled-import/viewmodel/import-schedule-grid.js","../../../../campaign-legacy/packages/scheduled-import/view/import-schedule-accounts-detail-view.js","../../../../campaign-legacy/packages/scheduled-import/view/import-schedule-grid-base.js","../../../../campaign-legacy/packages/scheduled-import/view/import-schedule-grid.js","../../../../campaign-legacy/packages/scheduled-import/service/preference-upload-api.js","../../../../campaign-legacy/packages/scheduled-import/view/preference-upload-status.js","../../../../campaign-legacy/packages/scheduled-import/view/preference-upload-error-maps.js","../../../../campaign-legacy/packages/scheduled-import/view/preference-upload.js","../../../../campaign-legacy/packages/scheduled-import/view/shared-column-configs/import-freq-col.js","../../../../campaign-legacy/packages/shopping-campaign/service/campaign-creation/service.js","../../../../campaign-legacy/packages/shopping-campaign/view/campaign-creation/smart-shopping-base.js","../../../../campaign-legacy/packages/shopping-campaign/view/campaign-creation/ssc-instrumentation.js","../../../../campaign-legacy/packages/shopping-campaign/view/campaign-creation/smart-shopping-campaign-settings.js","../../../../campaign-legacy/packages/shopping-campaign/viewmodel/campaign-creation/update.js","../../../../campaign-legacy/packages/shopping-campaign/view/campaign-creation/update.js","../../../../campaign-legacy/packages/targeting-settings/change-bid-adjustment/change-bid-adjustment-model.js","../../../../campaign-legacy/packages/targeting-settings/change-bid-adjustment/change-bid-adjustment-viewmodel.js","../../../../campaign-legacy/packages/targeting-settings/helpers.js","../../../../campaign-legacy/packages/targeting-settings/change-bid-adjustment/change-bid-adjustment-view.js","../../../../campaign-legacy/packages/targeting-settings/change-cashback-percent/change-cashback-percent-view.js","../../../../campaign-legacy/packages/targeting-settings/bid-adjustment-plugin.js","../../../../campaign-legacy/packages/targeting-settings/bulk-remove-plugin.js","../../../../campaign-legacy/packages/targeting-settings/common-alert/common-alert.js","../../../../campaign-legacy/packages/targeting-settings/common-alert/index.js","../../../../campaign-legacy/packages/adextension-app/template/universal-item-template.pug","../../../../campaign-legacy/packages/adextension-associations-container/template/layout-new.pug","../../../../campaign-legacy/packages/adextension-image/template/extensionCreator2.pug","../../../../campaign-legacy/packages/adextension-image/template/extensionEditor2.pug","../../../../campaign-legacy/packages/adextension-price/template/gridRowTemplate.pug","../../../../campaign-legacy/packages/adextension-shared/template/totals-template.pug","../../../../campaign-legacy/packages/adgroup-settings/template/index.pug","../../../../campaign-legacy/packages/bingadsgrid/template/header.pug","../../../../campaign-legacy/packages/bingadsgrid/template/status-column.pug","../../../../campaign-legacy/packages/bingadsgrid/vnext/template/deliveryStatusTemplate.pug","../../../../campaign-legacy/packages/campaign-settings/template/index.pug","../../../../campaign-legacy/packages/campaign-targeting/template/campaign-targeting.pug","../../../../campaign-legacy/packages/common-grid-config/controls/account-list-template.pug","../../../../campaign-legacy/packages/common-grid-config/controls/help-link-template.pug","../../../../campaign-legacy/packages/common-grid-config/controls/tracking-status-popover-template.pug","../../../../campaign-legacy/packages/common-grid-plugins/perf-data-explanation/template.pug","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/category-template.pug","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/goal-read-only-popover-template.pug","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/goal-type-popover-template.pug","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/goal-type-template.pug","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/name-template.pug","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/revenue-template.pug","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/status-template.pug","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/tag-id-template.pug","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/tracking-status-template.pug","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/unassigned-category-popover-template.pug","../../../../campaign-legacy/packages/conversion-tracking/conversion-goals/grid/unassigned-revenue-popover-template.pug","../../../../campaign-legacy/packages/conversion-tracking/template/upload-conversions/changes-view.pug","../../../../campaign-legacy/packages/conversion-tracking/template/upload-conversions/columns/actions.pug","../../../../campaign-legacy/packages/conversion-tracking/template/upload-conversions/columns/datetime-user.pug","../../../../campaign-legacy/packages/conversion-tracking/template/upload-conversions/columns/summary.pug","../../../../campaign-legacy/packages/conversion-tracking/template/upload-conversions/columns/uploaded-file.pug","../../../../campaign-legacy/packages/conversion-tracking/template/upload-conversions/history-grid.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard-test/grid/parameters-received-template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard-test/grid/parameters-template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard/grid/data-template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard/grid/parameters-received-template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags-dashboard/grid/parameters-template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/create/sharing-template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/create/template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/grid/action-template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/grid/audience-template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/grid/column-shared-usedby-template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/grid/goals-template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/grid/name-template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/grid/tag-id-template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/grid/tag-read-only-popover-template.pug","../../../../campaign-legacy/packages/conversion-tracking/uet-tags/grid/tracking-status-template.pug","../../../../campaign-legacy/packages/crud-ad/template/index.pug","../../../../campaign-legacy/packages/crud-keywords/template/create-inline-recommendation.pug","../../../../campaign-legacy/packages/hotel-center-ad-extensions/shared/template/hotel-extension-page.pug","../../../../campaign-legacy/packages/inline-chart/template/inlinechart.pug","../../../../campaign-legacy/packages/scheduled-import/template/adwords-account-column.pug","../../../../campaign-legacy/packages/scheduled-import/template/import-id.pug","../../../../campaign-legacy/packages/scheduled-import/template/import-log-actions.pug","../../../../campaign-legacy/packages/scheduled-import/template/import-log-grid.pug","../../../../campaign-legacy/packages/scheduled-import/template/import-mode.pug","../../../../campaign-legacy/packages/scheduled-import/template/import-schedule-grid.pug","../../../../campaign-legacy/packages/scheduled-import/template/import-schedule-name.pug","../../../../campaign-legacy/packages/scheduled-import/template/import-schedule-run-now-status.pug","../../../../campaign-legacy/packages/scheduled-import/template/import-settings-col.pug","../../../../campaign-legacy/packages/scheduled-import/template/import-settings-tooltip.pug","../../../../campaign-legacy/packages/scheduled-import/template/import-task-item-list-column.pug","../../../../campaign-legacy/packages/scheduled-import/template/import-type.pug","../../../../campaign-legacy/packages/scheduled-import/template/link.pug","../../../../campaign-legacy/packages/scheduled-import/template/preference-upload.pug","../../../../campaign-legacy/packages/shopping-campaign/template/campaign-creation/smart-shopping-campaign-creation.pug","../../../../campaign-legacy/packages/shopping-campaign/template/campaign-creation/update.pug","../../../../campaign-legacy/packages/targeting-settings/common-alert/common-alert-template.pug"],"sourcesContent":["const defaultIconClasses = {\r\n 'Android': 'google-play-store-icon',\r\n 'iOS': 'apple-app-store-icon',\r\n 'Windows Phone': 'windows-phone-store-icon',\r\n 'Windows': 'windows-store-icon',\r\n};\r\n\r\nexport const getIconClass = (extension) => defaultIconClasses[extension.AppPlatform];\r\n","import config from '@bingads-webui-component-legacy/config/index';\r\nimport $url from '@bingads-webui/url-util';\r\n\r\nexport const getMediaUrl = (extension) => {\r\n let mediaUrl = extension.MediaUrl;\r\n\r\n if (mediaUrl) {\r\n const adExtensionConfig = config.get('Feature').AdExtension;\r\n\r\n if (adExtensionConfig && adExtensionConfig.AppExtensionIconBaseUrl &&\r\n mediaUrl.indexOf(adExtensionConfig.AppExtensionIconBaseUrl) !== 0) {\r\n mediaUrl = $url.join(adExtensionConfig.AppExtensionIconBaseUrl, mediaUrl);\r\n }\r\n }\r\n\r\n return mediaUrl;\r\n};\r\n","import { extend } from 'underscore';\r\nimport { getIconClass } from '../viewmodel/get-icon-class';\r\nimport { getMediaUrl } from '../viewmodel/get-media-url';\r\nimport rawItemTemplate from './universal-item-template.pug';\r\n\r\nexport const universalItemTemplate = (arg0) => rawItemTemplate(extend({ getMediaUrl, getIconClass }, arg0));\r\n","import ko from 'knockout';\r\nimport _ from 'underscore';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/adextensions');\r\n\r\nconst CampaignTypeShopping = 2;\r\nconst CampaignTypeAudience = 8;\r\n\r\nexport default class ViewModel {\r\n constructor(options) {\r\n this.options = options || {};\r\n\r\n this.scope = ko.observable({\r\n campaignId: this.options.campaignId,\r\n adGroupId: this.options.adgroupId,\r\n });\r\n\r\n this.scopes = ko.observableArray();\r\n\r\n this.entitySelectorService = this.options.entitySelectorService;\r\n this.i18nKeys = this.options.i18nKeys;\r\n this.showCampaigns = !this.options.campaignId && (this.options.entityType === 'campaign');\r\n this.showAdGroups = !this.options.adgroupId && (this.options.entityType === 'adgroup');\r\n this.showSelector = this.showCampaigns || this.showAdGroups;\r\n this.maximumSelectedEntities = options.maximumSelectedEntities;\r\n\r\n this.predicates = {\r\n campaign(predicate) {\r\n return predicate && predicate.CampaignType !== CampaignTypeShopping && predicate.CampaignType !== CampaignTypeAudience;\r\n },\r\n adgroup: [[\r\n {operand: 'Campaign/CampaignType', operator: 'eq', value: 'Enum.CampaignType\\'Default\\''},\r\n {operand: 'Campaign/CampaignType', operator: 'eq', value: 'Enum.CampaignType\\'DynamicSearchAds\\''},\r\n ]],\r\n };\r\n\r\n this.toggleEditor = () => this.showEditor(!this.showEditor());\r\n this.scopeContext = this.options.scopeContext;\r\n\r\n this.isMultiSelect = this.options.isMultiSelect;\r\n this.showSelection = this.options.showSelection;\r\n if (this.isMultiSelect && this.showSelector) {\r\n options.i18nKeys.subtitle = options.i18nKeys.multiSelectSubtitle;\r\n }\r\n\r\n this.selectedItemsLimit = this.options.maxDisplayedEntities;\r\n this.remainingItemsText = ko.computed(\r\n () => i18n.get(this.options.i18nKeys.campaignAdgroupLimitText, {\r\n count: this.scopes().length - this.selectedItemsLimit,\r\n }));\r\n\r\n this.showEditor = ko.observable(!this.showSelector);\r\n this.isEditMode = ko.observable(false);\r\n\r\n this.selectedCampaigns = this.isMultiSelect ? ko.observableArray() : ko.observable();\r\n this.selectedAdgroups = this.isMultiSelect ? ko.observableArray() : ko.observable();\r\n\r\n this.selectedCampaigns.subscribe((newCampaign) => {\r\n if (this.options.entityType === 'campaign') {\r\n if (this.isMultiSelect) {\r\n this.scopes(_.map(newCampaign, (campaign) => ({\r\n campaignId: campaign.Id,\r\n adGroupId: 0,\r\n campaignName: campaign.Name || campaign.name,\r\n adGroupName: '',\r\n })));\r\n this.showEditor(true);\r\n return;\r\n }\r\n let current = this.scope(),\r\n newCampaignId = newCampaign ? newCampaign.Id : null;\r\n\r\n if (newCampaignId !== current.campaignId) {\r\n this.scope({\r\n campaignId: newCampaignId,\r\n adGroupId: current.adGroupId,\r\n campaignName: newCampaign.Name || newCampaign.name,\r\n adGroupName: '',\r\n });\r\n this.showEditor(!!newCampaignId);\r\n }\r\n }\r\n });\r\n\r\n this.selectedAdgroups.subscribe((newAdgroup) => {\r\n if (this.options.entityType === 'adgroup') {\r\n if (this.isMultiSelect) {\r\n this.scopes(_.map(newAdgroup, (adgroup) => ({\r\n campaignId: adgroup.Campaign ? adgroup.Campaign.Id : adgroup.campaignId,\r\n adGroupId: adgroup.Id,\r\n campaignName: adgroup.Campaign ? adgroup.Campaign.Name : adgroup.campaignName,\r\n adGroupName: adgroup.Name || adgroup.name,\r\n })));\r\n this.showEditor(true);\r\n return;\r\n }\r\n let current = this.scope(),\r\n newAdgroupId = newAdgroup ? newAdgroup.Id : null;\r\n\r\n if (newAdgroupId !== current.adGroupId) {\r\n this.scope({\r\n campaignId: newAdgroup.Campaign ? newAdgroup.Campaign.Id : newAdgroup.campaignId,\r\n adGroupId: newAdgroupId,\r\n campaignName: newAdgroup.Campaign ? newAdgroup.Campaign.Name : newAdgroup.campaignName,\r\n adGroupName: newAdgroup.Name || newAdgroup.name,\r\n });\r\n this.showEditor(!!newAdgroupId);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","/* eslint-disable camelcase */\r\nimport _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport 'jquery';\r\nimport scopeService from '@bingads-webui-static-legacy/scope-service';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/adextension-associations-container/viewmodel/index';\r\nimport templateNew from '@bingads-webui-campaign-legacy/adextension-associations-container/template/layout-new.pug';\r\nimport { CampaignAdgroupSelectorProxy, AdgroupSelectorProxy, CampaignSelectorProxy } from '@bingads-webui-campaign-react/campaign-adgroup-selector-control';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport { extensionCampaignTypeCheck } from '@bingads-webui-campaign/ad-extensions-shared';\r\n\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/adextensions');\r\nconst CampaignAdgroupSelectorI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/campaign-adgroup-selector');\r\n\r\nconst campaignFilter = 'CampaignType eq Enum.CampaignType\\'Default\\'';\r\nconst adgroupNoHotelFilter = '(Campaign/CampaignType ne Enum.CampaignType\\'Hotel\\')';\r\n\r\nexport default class View extends Backbone.View {\r\n initialize(options, editorOptions = {}) {\r\n const defaultOptions = {\r\n i18nKeys: {\r\n subtitle: [],\r\n editTitle: '',\r\n multiSelectSubtitle: options.entityType === 'adgroup' ? ['AdExtensions_MultiSelect_Adgroups_Container_Subtitle'] : ['AdExtensions_MultiSelect_Container_Subtitle'],\r\n campaignAdgroupLimitText: 'CampaignAdgroupListRemainingCount',\r\n editLabel: 'Edit',\r\n },\r\n maxDisplayedEntities: 3,\r\n maximumSelectedEntities: 100,\r\n isMultiSelect: config.get('Permissions').IsBulkAdExtensionAssociationAllowed,\r\n showSelection: true,\r\n extensionCampaignTypeCheck,\r\n };\r\n\r\n this.options = _.defaults({}, options, defaultOptions);\r\n this.i18nKeys = _.defaults({}, this.options.i18nKeys, defaultOptions.i18nKeys);\r\n this.i18nKeys.subtitle = _.isArray(this.i18nKeys.subtitle) ? this.i18nKeys.subtitle : [this.i18nKeys.subtitle];\r\n let scopeContext = scopeService.getScope();\r\n\r\n //eslint-disable-next-line camelcase\r\n this.ko_model = new ViewModel({\r\n entityType: this.options.entityType,\r\n campaignId: Number(this.options.campaignId) || 0,\r\n adgroupId: Number(this.options.adgroupId) || 0,\r\n scopeContext,\r\n isMultiSelect: this.options.isMultiSelect,\r\n i18nKeys: this.i18nKeys,\r\n maxDisplayedEntities: this.options.maxDisplayedEntities,\r\n maximumSelectedEntities: this.options.maximumSelectedEntities,\r\n entitySelectorService: this.options.entitySelectorService,\r\n showSelection: this.options.showSelection,\r\n });\r\n\r\n this.editor = new this.options.AssociationEditor(_.extend({}, this.options, editorOptions, {\r\n hasSubTitle: this.options.isMultiSelect && this.ko_model.showSelector,\r\n showErrorsInline: false,\r\n campaignName: this.options.campaignName ? this.options.campaignName : _.result(scopeContext.campaign, 'name'),\r\n adGroupName: this.options.adgroupName ? this.options.adgroupName : _.result(scopeContext.adgroup, 'name'),\r\n showEditor: this.ko_model.showEditor(),\r\n entityType: this.options.entityType,\r\n showSelector: this.ko_model.showSelector,\r\n isNewEntitySelector: this.options.isNewEntitySelector,\r\n }));\r\n\r\n this.ko_model.showEditor.subscribe((show) => {\r\n this.editor.ko_model.showEditor(show);\r\n });\r\n\r\n return this;\r\n }\r\n\r\n render() {\r\n this.$el.html(templateNew({\r\n i18n,\r\n i18nKeys: this.i18nKeys,\r\n isMultiSelect: this.options.isMultiSelect,\r\n }));\r\n\r\n let selectorView = null;\r\n\r\n this.showCampaigns = !this.options.campaignId && (this.options.entityType === 'campaign');\r\n this.showAdGroups = !this.options.adgroupId && (this.options.entityType === 'adgroup');\r\n\r\n if (this.showCampaigns && this.options.proxy) {\r\n this.ko_model.showSelection = false;\r\n selectorView = this.options.proxy.createCampaignView({\r\n i18n: this.options.i18nHotelCenter,\r\n ko_model: this.ko_model,\r\n }).render();\r\n } else if (this.showAdGroups && this.options.proxy) {\r\n this.ko_model.showSelection = false;\r\n selectorView = this.options.proxy.createCampaignAdgroupView({\r\n i18n: this.options.i18nHotelCenter,\r\n ko_model: this.ko_model,\r\n }).render();\r\n } else if (this.showCampaigns) {\r\n let currentCampaignFilter = campaignFilter;\r\n let currentAdgroupnFilter = '';\r\n\r\n if (pageContext.Permissions && pageContext.Permissions.dynamic && pageContext.Permissions.dynamic.PerformanceMaxCampaigns &&\r\n _.contains(this.options.extensionCampaignTypeCheck.pmaxSupportedExtentions, this.options.adExtensionType)) {\r\n currentCampaignFilter += ' or CampaignType eq Enum.CampaignType\\'PerformanceMax\\'';\r\n }\r\n\r\n if (pageContext.Permissions && pageContext.Permissions.dynamic && pageContext.Permissions.dynamic.UnifiedAppAds &&\r\n _.contains(this.options.extensionCampaignTypeCheck.appSupportedExtensions, this.options.adExtensionType)\r\n ) {\r\n currentCampaignFilter += ' or CampaignType eq Enum.CampaignType\\'App\\'';\r\n }\r\n\r\n if (pageContext.Permissions && pageContext.Permissions.dynamic && pageContext.Permissions.dynamic.HotelCampaign) {\r\n if (_.contains(this.options.extensionCampaignTypeCheck.hotelSupportedExtentions, this.options.adExtensionType)) {\r\n currentCampaignFilter += ' or CampaignType eq Enum.CampaignType\\'Hotel\\'';\r\n } else {\r\n currentAdgroupnFilter = adgroupNoHotelFilter;\r\n }\r\n }\r\n\r\n currentCampaignFilter = `(${currentCampaignFilter})`;\r\n\r\n const campaignSelectorProxy = new CampaignSelectorProxy({\r\n onSelectDone: (selectedCampaign) => {\r\n this.ko_model.selectedCampaigns(selectedCampaign);\r\n },\r\n jsData: jsdata,\r\n edmCampaign,\r\n withUiBlocker: (uiBlockContainer) => withUiBlock(uiBlockContainer),\r\n i18n: CampaignAdgroupSelectorI18n,\r\n isMultiMode: this.options.isMultiSelect,\r\n optionalCampaignFilter: currentCampaignFilter,\r\n optionalAdgroupFilter: currentAdgroupnFilter,\r\n });\r\n\r\n selectorView = campaignSelectorProxy.getCampaignSelectorView().render();\r\n } else if (this.showAdGroups && this.options.campaignId) {\r\n const adgroupSelectorProxy = new AdgroupSelectorProxy({\r\n onSelectDone: (selectedAdGroup) => {\r\n this.ko_model.selectedAdgroups(selectedAdGroup);\r\n },\r\n jsData: jsdata,\r\n edmCampaign,\r\n withUiBlocker: (uiBlockContainer) => withUiBlock(uiBlockContainer),\r\n i18n: CampaignAdgroupSelectorI18n,\r\n campaignId: this.options.campaignId,\r\n campaign: this.ko_model.scopeContext.campaign,\r\n isMultiMode: this.options.isMultiSelect,\r\n });\r\n\r\n selectorView = adgroupSelectorProxy.getAdgroupSelectorView().render();\r\n } else if (this.showAdGroups && !this.options.campaignId) {\r\n let currentCampaignFilter = campaignFilter;\r\n let currentAdgroupnFilter = '';\r\n\r\n if (pageContext.Permissions && pageContext.Permissions.dynamic && pageContext.Permissions.dynamic.HotelCampaign) {\r\n if (_.contains(this.options.extensionCampaignTypeCheck.hotelSupportedExtentions, this.options.adExtensionType)) {\r\n currentCampaignFilter += ' or CampaignType eq Enum.CampaignType\\'Hotel\\'';\r\n } else {\r\n currentAdgroupnFilter = adgroupNoHotelFilter;\r\n }\r\n }\r\n\r\n currentCampaignFilter = `(${currentCampaignFilter})`;\r\n\r\n const campaignAdgroupSelectorProxy = new CampaignAdgroupSelectorProxy({\r\n onCampaignSelect: (selectedCampaign) => {\r\n this.ko_model.selectedCampaigns(selectedCampaign);\r\n },\r\n onAdGroupSelect: _.noop,\r\n onMultiSelectedDone: (selectedAdGroup) => {\r\n this.ko_model.selectedAdgroups(selectedAdGroup);\r\n },\r\n jsData: jsdata,\r\n edmCampaign,\r\n withUiBlocker: (uiBlockContainer) => withUiBlock(uiBlockContainer),\r\n i18n: CampaignAdgroupSelectorI18n,\r\n isMultiMode: this.options.isMultiSelect,\r\n optionalCampaignFilter: currentCampaignFilter,\r\n optionalAdgroupFilter: currentAdgroupnFilter,\r\n });\r\n\r\n selectorView = campaignAdgroupSelectorProxy.getCampaignAdgroupSelectorView().render();\r\n }\r\n if (selectorView) {\r\n this.$('.panel-body').append(selectorView.el);\r\n }\r\n\r\n ko.applyBindings(this.ko_model, this.$el[0]);\r\n\r\n this.editor.render();\r\n\r\n this.$el.find('.associations').html(this.editor.$el);\r\n\r\n this.ko_model.scope.subscribe((newScope) => {\r\n this.editor.trigger('scope-changed', newScope);\r\n });\r\n\r\n this.ko_model.scopes.subscribe((newScopes) => {\r\n this.editor.trigger('scopes-changed', newScopes);\r\n });\r\n\r\n this.editor.on('save', (param) => {\r\n this.trigger('save', param);\r\n });\r\n\r\n this.editor.on('cancel', (param) => {\r\n this.trigger('cancel', param);\r\n });\r\n\r\n this.editor.on('modeChange', (param) => {\r\n if (param.isEdit) {\r\n this.ko_model.isEditMode(true);\r\n } else {\r\n this.ko_model.isEditMode(false);\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n remove() {\r\n this.undelegateEvents();\r\n this.$el.empty();\r\n ko.cleanNode(this.$el[0]);\r\n if (this.editor) {\r\n this.editor.remove();\r\n }\r\n return this;\r\n }\r\n}\r\n","import { extend } from 'underscore';\r\nimport rawItemTemplate from './gridRowTemplate.pug';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/adextensions');\r\n\r\nexport const universalItemTemplate = (arg0) => rawItemTemplate(extend({ i18n }, arg0));\r\n","import rawItemTemplate from './gridRowTemplate.pug';\r\n\r\nexport const universalItemTemplate = rawItemTemplate;\r\n","/*eslint-disable no-bitwise*/\r\nimport Promise from 'bluebird';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport backbone from 'backbone';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport UpgradedUrl from '@bingads-webui-component-legacy/upgraded-url/view/index';\r\nimport ImageAdExtensionsRepository from '@bingads-webui-campaign-legacy/adextension-image/service/imageAdExtensionsRepository2';\r\nimport creatorTemplate from '@bingads-webui-campaign-legacy/adextension-image/template/extensionCreator2.pug';\r\nimport editorTemplate from '@bingads-webui-campaign-legacy/adextension-image/template/extensionEditor2.pug';\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport imageAspectRatios from '@bingads-webui-campaign-legacy/adextension-shared/imageAspectRatios';\r\nimport { PerfMarkerFactory } from '@bingads-webui/performance-marker';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport '@bingads-webui/kendo/kendo.listview';\r\nimport '@bingads-webui/kendo/kendo.data';\r\nimport '@bingads-webui-static-legacy/extension/ko/sectionItemBinding';\r\nimport { ExtensionImagesControl } from '@bingads-webui-campaign-react/extension-images-control';\r\nimport dataModelUtil from '@bingads-webui-campaign-legacy/adextension-image/util/dataModelConvert';\r\nimport SchedulingView from '@bingads-webui-campaign-legacy/adextension-shared/view/scheduling';\r\nimport { EligibleLayout } from '@bingads-webui-campaign-legacy/adextension-image/constants';\r\nimport { getAutoCroppedImages } from '@bingads-webui-campaign-react/image-experience';\r\nimport { getAssetEnhancementSettings } from '@bingads-webui-campaign/image-experience-utils';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport preferencesService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\n\r\nimport image191to1 from '../media/1.91to1.jpg';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/adextensions');\r\nconst i18nGlobal = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!global');\r\nconst ImageAdExtensionSchema = window.globalLegacySchema.get('ImageAdExtension');\r\n\r\nconst odataToken = config.get('odata.token');\r\nconst odataPath = config.get('odata.url') + config.get('odata.path');\r\nconst odataRootUrl = config.get('CampaignAzureDomain');\r\nconst permissions = config.get('Permissions');\r\nconst IsAADUser = PageContext.IsAADUser;\r\nconst {\r\n dynamic: {\r\n OptionalDisplayTextForSingleImageAdExtensions,\r\n ImageFittingForImageAnnotation,\r\n ImageFittingForImageExtension,\r\n ImageFittingExlcudeMAE,\r\n ImageFittingUnifiedImageROI,\r\n } = {},\r\n IsTransparentImageAnnotationEnabled,\r\n} = permissions;\r\n\r\nconst oDataConfig = {\r\n odataRootUrl,\r\n odataPath,\r\n odataToken,\r\n oDataPath: odataPath,\r\n oDataToken: odataToken,\r\n};\r\n\r\nexport class ExtensionEditor extends backbone.View {\r\n initialize(options) {\r\n this.perfMarker = PerfMarkerFactory.createMarker('ImageAdExtensionEditor V2', { autoEnd: true });\r\n\r\n this.perfMarker.willInit();\r\n\r\n this.options = options || {};\r\n this.options.createNew = !this.options.extension;\r\n this.options.isRecommendation = !_.isEmpty(options.recommendation);\r\n\r\n let extension = this.options.extension || {};\r\n\r\n if (!this.options.extension) {\r\n extension = {\r\n AltText: null,\r\n DisplayText: null,\r\n Description: null,\r\n DestinationUrl: null,\r\n ImageUrl: null,\r\n MobileFinalUrls: [],\r\n FinalUrls: [],\r\n UrlCustomParameters: [],\r\n TrackingUrlTemplate: null,\r\n Images: [],\r\n Scheduling: null,\r\n EligibleLayout: EligibleLayout.SingleAndMulti,\r\n };\r\n\r\n if (this.options.isRecommendation) {\r\n extension = _.defaults({}, options.recommendation, { ...extension });\r\n }\r\n\r\n this.options.extension = extension;\r\n }\r\n\r\n this.options.systemGenerated = IsTransparentImageAnnotationEnabled && extension.SourceType === 'SystemGenerated';\r\n this.options.readOnly = options.readOnly || this.options.systemGenerated;\r\n\r\n if (!OptionalDisplayTextForSingleImageAdExtensions && !extension.DisplayText) {\r\n extension.DisplayText = extension.AltText;\r\n }\r\n\r\n if (!extension.EligibleLayout || extension.EligibleLayout === EligibleLayout.Unset) {\r\n extension.EligibleLayout = EligibleLayout.Single;\r\n }\r\n\r\n this.viewModel = this._createViewModel(this.options);\r\n this.extensionsRepo = new ImageAdExtensionsRepository({\r\n schema: ImageAdExtensionSchema,\r\n });\r\n\r\n // setup upgraded url view\r\n const isFinal = !extension.DestinationUrl ||\r\n extension.DestinationUrl.length === 0 ||\r\n !(_.isEmpty(extension.FinalUrls) && _.isEmpty(extension.MobileFinalUrls));\r\n const url = isFinal ? _.first(extension.FinalUrls) : extension.DestinationUrl;\r\n\r\n this.upgradedUrlView = new UpgradedUrl({\r\n url,\r\n isFinal,\r\n finalMobileUrl: _.first(extension.MobileFinalUrls),\r\n trackingTemplate: extension.TrackingUrlTemplate,\r\n finalUrlSuffix: extension.FinalUrlSuffix,\r\n customParameters: extension.UrlCustomParameters,\r\n urlOptionsEnabled: !this.options.isRecommendation,\r\n isMobilePreferred: false,\r\n entityType: 'ImageAdExtension',\r\n placeholderEnabled: false,\r\n useUrlOptionsV2: true,\r\n landingPageUrlRequired: false,\r\n showUurlTestTool: false,\r\n destinationURLDisabled: true,\r\n readOnly: this.options.readOnly,\r\n });\r\n\r\n this.subscribeToUrlChanged = (callback) => {\r\n this.upgradedUrlView.urlEditor.on('urlChanged', callback);\r\n };\r\n\r\n this.setFullUrl = (fullUrl) => {\r\n this.upgradedUrlView.urlEditor.ko_model.fullUrl(fullUrl);\r\n };\r\n\r\n this.setError = (errorStr) => {\r\n this.upgradedUrlView.urlEditor.setError(errorStr);\r\n };\r\n\r\n const formatting = {\r\n // default css for label and controls\r\n labelClass: 'col-sm-4',\r\n controlClass: 'col-sm-8',\r\n };\r\n\r\n this.schedulingView = new SchedulingView(_.extend({}, formatting, { model: extension.Scheduling, readOnly: this.options.readOnly }));\r\n\r\n this.imageList = [];\r\n\r\n this.isImageFittingEnabled = ((ImageFittingForImageAnnotation && this.options.systemGenerated) ||\r\n (ImageFittingForImageExtension && !this.options.systemGenerated)) &&\r\n ImageFittingUnifiedImageROI && !ImageFittingExlcudeMAE;\r\n\r\n this.aid = this.options.isRecommendation ? this.options.recommendation.targetAccountId : state.get('account_id');\r\n this.cid = config.get('CurrentAccount') ? config.get('CurrentAccount').AdvertiserCustomerID : config.get('advertiserCustomerID');\r\n\r\n let promise = Promise.resolve();\r\n\r\n if (this.isImageFittingEnabled) {\r\n promise = getAssetEnhancementSettings({ aid: this.aid, cid: this.cid, oDataConfig })\r\n .then((result) => {\r\n if (result.AssetAIEnhancementOptout === 'true') {\r\n this.isImageFittingEnabled = false;\r\n }\r\n });\r\n }\r\n\r\n this.assetEnhancementSettingsPromise = promise.then(() => {\r\n if (extension.Images !== null && extension.Images.length > 0) {\r\n this.imageListLoadPromise = dataModelUtil.getImageListFromMTImagesAsync(extension.Images, this.isImageFittingEnabled).then((imageList) => {\r\n this.imageList = imageList;\r\n });\r\n } else if (this.options.isRecommendation && options.recommendation.hasImageUrl) {\r\n this.imageList = getAutoCroppedImages({\r\n originalImageToCrop: {\r\n Width: 1000,\r\n Height: 706,\r\n Text: null,\r\n Id: null,\r\n IdString: '',\r\n Src: options.recommendation.ImageSourceStr === 'StockImage' ?\r\n _.first(options.recommendation.StockImages).ThumbnailURL :\r\n _.first(options.recommendation.WebsiteImages).ImageURL,\r\n },\r\n isRecommendedImage: true,\r\n });\r\n this.imageListLoadPromise = Promise.resolve();\r\n } else {\r\n this.imageListLoadPromise = Promise.resolve();\r\n }\r\n });\r\n\r\n this.onImageListChanged = this.onImageListChanged.bind(this);\r\n }\r\n\r\n onImageListChanged(imageList) {\r\n this.imageList = imageList;\r\n }\r\n\r\n render() {\r\n const template = this.options.createNew ? creatorTemplate : editorTemplate;\r\n\r\n this.$el.html(template({\r\n i18n,\r\n i18nGlobal,\r\n imageAspectRatios,\r\n OptionalDisplayTextForSingleImageAdExtensions,\r\n isRecommendation: this.options.isRecommendation,\r\n readOnly: this.options.readOnly,\r\n systemGenerated: this.options.systemGenerated,\r\n newI18n: this.options.newI18n,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this.assetEnhancementSettingsPromise.then(() => {\r\n this.imageListLoadPromise.then(() => {\r\n this.renderExtensionImagesControl();\r\n });\r\n });\r\n\r\n if (this.upgradedUrlView) {\r\n this.$('.extension-editor__extra').empty().append(this.upgradedUrlView.render().el);\r\n }\r\n\r\n if (this.schedulingView && !this.options.isRecommendation) {\r\n this.schedulingView.render();\r\n this.$('.scheduling').replaceWith(this.schedulingView.el);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n renderExtensionImagesControl() {\r\n const imagesControlOptions = {\r\n perfMarker: this.perfMarker,\r\n i18n,\r\n odata,\r\n genericImage: image191to1,\r\n imageList: this.imageList,\r\n cid: this.cid,\r\n aid: this.aid,\r\n text: '',\r\n url: '',\r\n onImageListChanged: this.onImageListChanged,\r\n isForVNext: this.options.isForVNext,\r\n isStockPhotoEnabled: true,\r\n isImageFittingEnabled: this.isImageFittingEnabled,\r\n oDataConfig,\r\n permissions,\r\n newI18n: this.options.newI18n,\r\n recommendation: this.options.recommendation,\r\n readOnly: this.options.readOnly,\r\n instrumentation,\r\n preferencesService,\r\n subscribeToUrlChanged: this.subscribeToUrlChanged,\r\n setError: this.setError,\r\n setFullUrl: this.setFullUrl,\r\n setImageControlSetText: (callback) => {\r\n this.imageControlSetText = callback;\r\n },\r\n setImageControlSetEligibleLayout: (callback) => {\r\n this.imageControlSetEligibleLayout = callback;\r\n },\r\n setImageControlsValidate: (callback) => {\r\n this.imageControlsValidate = callback;\r\n },\r\n serverContext: {\r\n IsAADUser,\r\n CurrentCustomer: config.get('CurrentCustomer'),\r\n CurrentAccount: config.get('CurrentAccount'),\r\n CurrentUser: config.get('CurrentUser'),\r\n Token: odataToken,\r\n ServicesEndpoints: {\r\n ClientCenterUIAPI: config.get('CCBaseUrl'),\r\n },\r\n },\r\n };\r\n\r\n this.imagesControlNode = React.createElement((props) =>\r\n \r\n \r\n , imagesControlOptions);\r\n\r\n ReactDOM.render(this.imagesControlNode, this.$('.image-extension-image-experience')[0]);\r\n\r\n this.onDisplayTextUpdated(this.viewModel.displayText());\r\n this.onEligibleLayoutUpdated(this.viewModel.eligibleLayout());\r\n }\r\n\r\n remove() {\r\n if (this.upgradedUrlView) {\r\n this.upgradedUrlView.remove();\r\n }\r\n\r\n if (this.schedulingView) {\r\n this.schedulingView.remove();\r\n }\r\n\r\n const imageExperienceView = this.$('.image-extension-image-experience')[0];\r\n\r\n if (imageExperienceView) {\r\n ReactDOM.unmountComponentAtNode(imageExperienceView);\r\n }\r\n\r\n super.remove();\r\n }\r\n\r\n _createViewModel(options) {\r\n const viewModel = {\r\n id: ko.observable(options.extension.Id || null),\r\n errorMessages: ko.observableArray([]),\r\n handleErrors: _.bind(this._handleErrors, this),\r\n existingExtension: options.extension,\r\n createNew: options.createNew,\r\n displayText: ko.observable(options.extension.DisplayText || ''),\r\n displayTextIsValid: ko.observable(true),\r\n altTextInternal: ko.observable(options.extension.AltText || ''),\r\n altTextIsValid: ko.observable(true),\r\n shouldAltTextMatchDisplayText: ko.observable((options.extension.AltText || '').length === 0),\r\n description: ko.observable(options.extension.Description || ''),\r\n destinationUrl: ko.observable(options.extension.DestinationUrl || ''),\r\n error: ko.observable(false),\r\n save: _.bind(options.createNew ? this._add : this._update, this),\r\n apply: () => {\r\n this.options.recommendation.applyRecommendation({\r\n newImageExtensionInfo: {\r\n AlternativeText: viewModel.altText(),\r\n DisplayText: viewModel.displayText(),\r\n FinalURL: this.upgradedUrlView.getValues().finalUrl.url,\r\n MobileURL: this.upgradedUrlView.getValues().mobileUrl,\r\n },\r\n imageList: !_.isEmpty(this.imageList) && this.imageList,\r\n isValid: viewModel.validate(),\r\n });\r\n },\r\n cancel: _.bind(this._cancel, this),\r\n validate: _.bind(this._modelIsValid, this),\r\n isSingleEligible: ko.observable(options.extension.EligibleLayout === EligibleLayout.Single ||\r\n options.extension.EligibleLayout === EligibleLayout.SingleAndMulti),\r\n isMultiEligible: ko.observable(options.extension.EligibleLayout === EligibleLayout.Multi ||\r\n options.extension.EligibleLayout === EligibleLayout.SingleAndMulti),\r\n };\r\n\r\n viewModel.eligibleLayout = ko.computed({\r\n read: () => {\r\n if (viewModel.isSingleEligible() && viewModel.isMultiEligible()) {\r\n return EligibleLayout.SingleAndMulti;\r\n } else if (viewModel.isSingleEligible() && !viewModel.isMultiEligible()) {\r\n return EligibleLayout.Single;\r\n } else if (!viewModel.isSingleEligible() && viewModel.isMultiEligible()) {\r\n return EligibleLayout.Multi;\r\n } else {\r\n return EligibleLayout.Unset;\r\n }\r\n },\r\n });\r\n\r\n viewModel.isEligibilityValid = ko.computed(() => {\r\n return viewModel.eligibleLayout() !== EligibleLayout.Unset;\r\n });\r\n\r\n viewModel.altText = ko.computed({\r\n read: () => {\r\n if (viewModel.shouldAltTextMatchDisplayText()) {\r\n return viewModel.displayText();\r\n }\r\n\r\n return viewModel.altTextInternal();\r\n },\r\n write: (newValue) => {\r\n viewModel.shouldAltTextMatchDisplayText(false);\r\n\r\n viewModel.altTextInternal(newValue);\r\n },\r\n });\r\n\r\n viewModel.displayText.subscribe((newValue) => {\r\n this.onDisplayTextUpdated(newValue);\r\n });\r\n\r\n viewModel.eligibleLayout.subscribe((newValue) => {\r\n this.onEligibleLayoutUpdated(newValue);\r\n });\r\n\r\n return viewModel;\r\n }\r\n\r\n onDisplayTextUpdated(text) {\r\n if (this.imageControlSetText) {\r\n this.imageControlSetText(text);\r\n }\r\n }\r\n\r\n onEligibleLayoutUpdated(eligibleLayout) {\r\n if (this.imageControlSetEligibleLayout) {\r\n this.imageControlSetEligibleLayout(eligibleLayout);\r\n }\r\n }\r\n\r\n _getDataForSave() {\r\n this.viewModel.errorMessages([]);\r\n this.upgradedUrlView.clearAllErrors();\r\n\r\n if (!this._modelIsValid()) {\r\n return null;\r\n }\r\n\r\n let extension = {\r\n Id: this.viewModel.id(),\r\n AltText: this.viewModel.altText(),\r\n DisplayText: this.viewModel.displayText(),\r\n Description: this.viewModel.description(),\r\n DestinationUrl: this.viewModel.destinationUrl(),\r\n EligibleLayout: this.viewModel.eligibleLayout(),\r\n };\r\n\r\n // For creation scenario, no Id should be passed in\r\n if (!extension.Id) {\r\n delete extension.Id;\r\n }\r\n\r\n extension.Images = dataModelUtil.getImagesFromImageList(this.imageList, this.isImageFittingEnabled);\r\n\r\n // WorkAround\r\n extension.ImageIds = [extension.Images.map((assetLink) => assetLink.Asset.Id)[0]];\r\n\r\n if (this.upgradedUrlView) {\r\n _.extend(extension, this.upgradedUrlView.toObject());\r\n if (extension.FinalUrls && extension.FinalUrls.length > 0) {\r\n delete extension.DestinationUrl;\r\n }\r\n }\r\n\r\n if (this.schedulingView) {\r\n extension.Scheduling = this.schedulingView.toObject();\r\n }\r\n\r\n // remove the empty values\r\n extension = _.omit(extension, (value) => {\r\n if (!value) {\r\n return true;\r\n } else if (_.isArray(value) || _.isString(value)) {\r\n if (value.length < 1) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return extension;\r\n }\r\n\r\n _update() {\r\n const extensionData = this._getDataForSave();\r\n\r\n if (!extensionData) {\r\n return;\r\n }\r\n\r\n this.extensionsRepo.update(extensionData)\r\n .then((savedExtension) => {\r\n return this.extensionsRepo.find(savedExtension.Id).then((fetchedExtension) => {\r\n this.trigger('updated', fetchedExtension);\r\n });\r\n }, (error) => {\r\n this.viewModel.handleErrors(error);\r\n })\r\n .finally(withUiBlock());\r\n }\r\n\r\n _add() {\r\n const extensionData = this._getDataForSave();\r\n\r\n if (!extensionData) {\r\n return;\r\n }\r\n\r\n this.extensionsRepo.create(extensionData).then((newExtension) => {\r\n return this.extensionsRepo.find(newExtension.Id).then((createdExtension) => {\r\n newExtension.Images = _.clone(createdExtension.Images);\r\n this.trigger('created', newExtension);\r\n });\r\n }, (error) => {\r\n this.viewModel.handleErrors(error);\r\n }).finally(withUiBlock());\r\n }\r\n\r\n _modelIsValid() {\r\n const displayTextToValidate = this.viewModel.displayText().trim();\r\n const eligibleLayout = this.viewModel.eligibleLayout();\r\n let displayTextIsValid;\r\n\r\n if (OptionalDisplayTextForSingleImageAdExtensions) {\r\n displayTextIsValid = eligibleLayout === EligibleLayout.Single ||\r\n ((eligibleLayout === EligibleLayout.Multi || eligibleLayout === EligibleLayout.SingleAndMulti) && displayTextToValidate.length > 0);\r\n } else {\r\n displayTextIsValid = displayTextToValidate.length > 0;\r\n }\r\n\r\n this.viewModel.displayTextIsValid(displayTextIsValid);\r\n\r\n const altTextToValidate = this.viewModel.altText().trim();\r\n\r\n const altTextIsValid = !_.isNull(altTextToValidate) && altTextToValidate.length > 0;\r\n\r\n this.viewModel.altTextIsValid(altTextIsValid);\r\n\r\n const schedulingValid = _.every([this.schedulingView.validate()]);\r\n\r\n const finalUrlTestRegEx = new RegExp(/^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:%/?#[\\]{}@!\\$&'\\(\\)\\*\\+,;=.]+$/gm); //eslint-disable-line\r\n const mobileUrlTestRegEx = new RegExp(/^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:%/?#[\\]{}@!\\$&'\\(\\)\\*\\+,;=.]+$/gm); //eslint-disable-line\r\n\r\n const urlErrors = {\r\n FinalUrls: [],\r\n MobileFinalUrls: [],\r\n };\r\n\r\n // Custom URL validations\r\n const finalUrl = this.upgradedUrlView.getValues().finalUrl;\r\n const finalUrlUrl = finalUrl ? finalUrl.url : '';\r\n\r\n if (finalUrlUrl && finalUrlUrl.length > 0 && !finalUrlTestRegEx.test(finalUrlUrl)) {\r\n urlErrors.FinalUrls.push(i18n.getString('AdExtensions_Image_Editor_InvalidDestinationUrl'));\r\n }\r\n\r\n const mobileUrl = this.upgradedUrlView.getValues().mobileUrl;\r\n\r\n if (mobileUrl && mobileUrl.length > 0 && !mobileUrlTestRegEx.test(mobileUrl)) {\r\n urlErrors.MobileFinalUrls.push(i18n.getString('AdExtensions_Image_Editor_InvalidDestinationUrl'));\r\n }\r\n\r\n this.upgradedUrlView.handleApiErrors(urlErrors);\r\n\r\n const urlViewIsValid = urlErrors.FinalUrls.length === 0 &&\r\n urlErrors.MobileFinalUrls.length === 0 &&\r\n this.upgradedUrlView.isValid();\r\n\r\n // Image experience validation\r\n const imagesValid = this.imageControlsValidate && this.imageControlsValidate();\r\n\r\n return this.viewModel.isEligibilityValid() &&\r\n displayTextIsValid &&\r\n altTextIsValid &&\r\n schedulingValid &&\r\n urlViewIsValid &&\r\n imagesValid;\r\n }\r\n\r\n _cancel() {\r\n this.trigger('cancel');\r\n }\r\n\r\n _handleErrors(errors) {\r\n if (errors && errors.length > 0) {\r\n const errorMsgList = _.map(errors, (error) => {\r\n return error.toString();\r\n });\r\n\r\n this.viewModel.errorMessages(errorMsgList);\r\n } else {\r\n this.viewModel.errorMessages([i18nGlobal.getString('GenericErrorMessage')]);\r\n }\r\n }\r\n}\r\n","import rawItemTemplate from './gridRowTemplate.pug';\r\n\r\nexport const universalItemTemplate = rawItemTemplate;\r\n","import { extend, size } from 'underscore';\r\nimport rawItemTemplate from './gridRowTemplate.pug';\r\nimport { convertCurrencyCode } from '@bingads-webui-campaign-legacy/adextension-price/utility';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/adextensions');\r\n\r\nconst maxItems = 3;\r\n\r\nexport const universalItemTemplate = (arg0) => {\r\n const moreCount = size(arg0.data.TableRows) - maxItems;\r\n\r\n return rawItemTemplate(extend({}, arg0, {\r\n data: {\r\n TableRows: arg0.data.TableRows.slice(0, maxItems),\r\n moreString: moreCount > 0 ? i18n.get('And_Count_More', { count: moreCount }) : undefined,\r\n },\r\n convertCurrencyCode,\r\n }));\r\n};\r\n","import rawItemTemplate from './gridRowTemplate.pug';\r\n\r\nexport const universalItemTemplate = rawItemTemplate;\r\n","export const getUseTotalsPlugin = (permissions) => {\r\n const { dynamic: { AdExtensionsAudienceAdsTotals, PerformanceMaxCampaignsPhaseTwoCrossNetwork } } = permissions || { dynamic: {} };\r\n\r\n return AdExtensionsAudienceAdsTotals || PerformanceMaxCampaignsPhaseTwoCrossNetwork;\r\n};\r\n","import $ from 'jquery';\r\nimport { DeliveryStatusPopupFactory } from '@bingads-webui-campaign-legacy/common-grid-config/column/delivery-status/index';\r\nimport { queryify } from '@bingads-webui/url-util';\r\nimport _ from 'underscore';\r\n\r\nfunction _url(template, type) {\r\n const args = _.extend({\r\n aid: window.App.state.get('account_id'),\r\n cid: window.App.state.get('customer_id'),\r\n cmpid: window.App.state.get('campaign_id'),\r\n adgid: window.App.state.get('adgroup_id'),\r\n type: type.replace('AdExtension', ''),\r\n });\r\n\r\n return queryify(template, args);\r\n}\r\n\r\nlet showAdExtensionRejectionReasons = (type, overrideAssociationType, BidataNotRequired, event, adextension) => {\r\n const {\r\n Id,\r\n extensionId,\r\n version,\r\n campaignId,\r\n adGroupId,\r\n } = adextension || {};\r\n\r\n\r\n let url = _url('/campaign/AdExtensions.m/GetRejectionReason', type);\r\n const cid = window.App.state.get('campaign_id') || campaignId;\r\n const aid = window.App.state.get('adgroup_id') || adGroupId;\r\n\r\n url = $.advertiser.setUrlParameter('adExtensionId', extensionId, url);\r\n url = $.advertiser.setUrlParameter('campaignId', cid, url);\r\n url = $.advertiser.setUrlParameter('adGroupId', aid, url);\r\n url = $.advertiser.setUrlParameter('version', version, url);\r\n url = $.advertiser.setUrlParameter('overrideAssociationType', overrideAssociationType, url);\r\n url = $.advertiser.setUrlParameter('BidataNotRequired', BidataNotRequired, url);\r\n\r\n $.advertiser.ajaxPost({\r\n url,\r\n data: {},\r\n ignoreBeforeAjax: true,\r\n dataType: 'html',\r\n onSuccess: $.gridPopup.Callback,\r\n onsuccessEventData: { event, rowId: Id },\r\n });\r\n};\r\n\r\n/**\r\n * Manages creation of delivery status column popups for the Campaigns grid\r\n */\r\nclass AdExtensionDeliveryStatusPopupFactory extends DeliveryStatusPopupFactory {\r\n constructor({\r\n grid,\r\n type,\r\n overrideEntities = {},\r\n overrideAssociationType = null,\r\n BidataNotRequired = false,\r\n }) {\r\n const showAdExtensionRejectionReasonsHandler = _.partial(showAdExtensionRejectionReasons, type, overrideAssociationType, BidataNotRequired);\r\n\r\n super({\r\n grid,\r\n handler: showAdExtensionRejectionReasonsHandler,\r\n });\r\n this.entityMap = _.extend({ AdGroup: 'AdGroup', Campaign: 'Campaign' }, overrideEntities);\r\n }\r\n /**\r\n * Creates campaign entity object from event target using the grid associated with the factory.\r\n *\r\n * @param {Object} event - The backbone click event from where the quality score cell was clicked.\r\n * @returns {Object} campaign entity - An object with properties containing Campaign Id and Name.\r\n */\r\n getEventTargetEntity(event) {\r\n const model = this.getEventTargetModel(event);\r\n\r\n return {\r\n extensionId: model.AdExtension.Id,\r\n version: model.AdExtension.Version,\r\n campaignId: model[this.entityMap.Campaign].Id,\r\n adGroupId: model[this.entityMap.AdGroup].Id,\r\n Id: model.Id,\r\n };\r\n }\r\n}\r\n\r\nexport { AdExtensionDeliveryStatusPopupFactory };\r\n","import { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport totalsTemplate from '../template/totals-template.pug';\r\n\r\nconst totalsTextProperty = (userProperty) => (item) => {\r\n if (item.$total) {\r\n return item;\r\n }\r\n return userProperty(item);\r\n};\r\n\r\nconst totalsTextTemplate = (userTemplate) => (local) => {\r\n if (local.value.$total) {\r\n return totalsTemplate(local);\r\n }\r\n return userTemplate(local);\r\n};\r\n\r\nexport const adextensionGridColumn = (options) => bingadsGridColumn({\r\n name: 'AdExtension',\r\n type: 'string',\r\n sortable: false,\r\n title: 'ErrorGrid_AdExtension_Column',\r\n helpId: 'Page_CampaignGrids_AdExtensions',\r\n bodyClasses: ['col-AdExtension'],\r\n\r\n ...options,\r\n\r\n property: totalsTextProperty(options.property),\r\n template: totalsTextTemplate(options.template),\r\n});\r\n","import { extend } from 'underscore';\r\nimport rawItemTemplate from './gridRowTemplate.pug';\r\n\r\nexport const universalItemTemplate = (arg0) =>\r\n rawItemTemplate(extend({}, arg0, {\r\n data: {\r\n SiteLinks: arg0,\r\n },\r\n }));\r\n","import rawItemTemplate from './gridRowTemplate.pug';\r\n\r\nexport const universalItemTemplate = rawItemTemplate;\r\n","/*eslint new-cap:0 */\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport koSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\nimport { AdGroup } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport campaignType from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/campaignType';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!component/language-selector');\r\nconst adGroupI18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport default class ViewModel {\r\n constructor({ isNewUI, isDSAMixedModeCampaignEnabled, supportCashbackSettings = false }) {\r\n koSchema.properties(this, AdGroup, ['Id', 'Name', 'Language', 'AdGroupType']);\r\n this.supportCashbackSettings = ko.observable(isNewUI && supportCashbackSettings);\r\n this.dataLoaded = ko.observable(false);\r\n\r\n this.hideLanguage = ko.computed(() => {\r\n return _.contains(['shopping'], campaignType()) || (isDSAMixedModeCampaignEnabled && campaignType() === 'search' && this.AdGroupType() === 'SearchDynamic');\r\n });\r\n\r\n this.isNewUI = ko.observable(isNewUI);\r\n\r\n this.isDSAMixedModeCampaignEnabled = isDSAMixedModeCampaignEnabled;\r\n\r\n this.shouldShowAdGroupType = ko.computed(() => {\r\n return this.isDSAMixedModeCampaignEnabled && _.contains(['search'], campaignType());\r\n });\r\n\r\n this.languageString = ko.computed(() => {\r\n const keyToUse = this.Language() ? `Language_${this.Language()}` : 'Language_Inherit';\r\n\r\n return i18n.getString(keyToUse);\r\n });\r\n\r\n this.adGroupTypeString = ko.computed(() => {\r\n return this.AdGroupType() === 'Unknown' ? '-' : adGroupI18n.getString(`AdGroupType_${this.AdGroupType()}`);\r\n });\r\n\r\n this.enableLanguageSelection = ko.computed(() => {\r\n return !this.hideLanguage() && campaignType() === 'search';\r\n });\r\n\r\n this.showHighLatencyAlert = ko.observable(false);\r\n }\r\n}\r\n","/*eslint new-cap:0 */\r\nimport _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport Promise from 'bluebird';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport template from '@bingads-webui-campaign-legacy/adgroup-settings/template/index.pug';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/adgroup-settings/viewmodel/index';\r\nimport BidView from '@bingads-webui-campaign-legacy/adgroup-create-advanced/view/steps/bid';\r\nimport LanguageLocationConnector from '@bingads-webui-campaign-legacy/adgroup-create-advanced/connectors/languageLocation';\r\nimport campaignType from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/campaignType';\r\nimport jsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport uiBlocker from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport LocationTargetsView from '@bingads-webui-campaign-legacy/location-targets/view/locationTargets';\r\nimport LanguageSettingView from '@bingads-webui-component-legacy/language-selector/view/index';\r\nimport AdvancedSettingsView from '@bingads-webui-campaign-legacy/advanced-settings/view/advancedSettings';\r\nimport summaryDataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport MutableModel from '@bingads-webui-component-legacy/mutable-model/index';\r\nimport eventDispatcher from '@bingads-webui-component-legacy/event-dispatcher/index';\r\nimport { mutables } from '@bingads-webui-campaign-legacy/adgroup-settings/options/mutables';\r\nimport BiddingStrategyView from '@bingads-webui-campaign-legacy/bidding-strategy/view/setting';\r\nimport biddingStrategyTypes from '@bingads-webui-campaign-legacy/bidding-strategy/bidding-strategy-type';\r\nimport { syndEnum } from '@bingads-webui-campaign-react/constants';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport { loadMap } from '@bingads-webui-campaign-legacy/dashboard-page/service/load-map';\r\nimport AdGroupBidType from '@bingads-webui-campaign-legacy/shopping-campaign/view/cpg-adgroup/bid-type';\r\nimport CpgBidSection from '@bingads-webui-campaign-legacy/shopping-campaign/view/cpg-adgroup/bid-section';\r\nimport showCpgAdGroupType from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/showCpgAdGroupType';\r\nimport { CashbackSettings } from '@bingads-webui-campaign/cashback-settings';\r\nimport { shouldSupportCashbackSettings, logAdGroupPersonalizedOffers } from '@bingads-webui-campaign/personalized-offer-shared';\r\nimport physicalIntentOptions from '@bingads-webui-campaign-legacy/location-targets/viewmodel/physicalIntentOptions';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport {\r\n AudienceAdvancedTargetSettings,\r\n AudienceTargetInfo,\r\n} from '@bingads-webui-campaign-legacy/audience-campaign/loader';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport { showIMAReachModal, getLocationsInfo, getLocationsInfoFromCampaignCriterions } from '@bingads-webui-campaign-react/ima-reach-representation';\r\nimport { isMSStoreAdsCampaign } from '@bingads-webui-campaign-react/ms-store-ads-common';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst backRouteName = 'adgroup_ad';\r\nconst isArabicEnabled = pageContext.Permissions.IsArabicLanguageEnabledInMultipleLanguage;\r\nconst isSimplifiedChineseEnabled = pageContext.Permissions.IsSimplifiedChineseLanguageEnabledInMultipleLanguage;\r\nconst isSponsoredPilotEnabled = pageContext.Permissions.IsSPAv2Enabled;\r\nconst isManualBiddingDeprecationEnabled = pageContext.Permissions.IsManualBiddingDeprecationEnabled;\r\nconst isDSAMixedModeCampaignEnabled = pageContext.Permissions.IsDSAMixedModeCampaignEnabled;\r\nconst SponsoredCampaignSubType = 11;\r\n\r\nexport default class View extends Backbone.View {\r\n initialize(options = {}) {\r\n if (options.perfMarker) {\r\n this.adGroupScopePerfMarker = options.perfMarker.createChild('AdGroupScope_AllSettings_EditAdGroup');\r\n }\r\n\r\n this.mark('willInit');\r\n const router = _.chain(options.deps).result('router', {}).value();\r\n\r\n const campaign = pageContext.CurrentCampaign;\r\n\r\n this.isMSStoreAdsGAWorkflow = isMSStoreAdsCampaign(campaign);\r\n\r\n this.navigateToRoute = router.navigateToRoute || _.noop;\r\n this.deps = options.deps || {};\r\n this.isNewUI = _.result(this.deps, 'isNewUI', false);\r\n\r\n const scenario = instrumentation[`${campaignType()}AdGroupSettings`].create();\r\n\r\n this.activity = scenario.adGroupSettings.create();\r\n\r\n this.viewModel = new ViewModel({ isNewUI: this.isNewUI, isDSAMixedModeCampaignEnabled, supportCashbackSettings: false });\r\n const dynamicPermissions = _.result(pageContext.Permissions, 'dynamic', {});\r\n\r\n this.showDisclaimerBanner = _.result(dynamicPermissions, 'AgeGenderDisclaimer', false);\r\n this.isMranEcpcEnabled = _.result(dynamicPermissions, 'MranEcpc', false);\r\n this.isMranTroasEnabled = _.result(dynamicPermissions, 'MranTroas', false);\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .btn-save': 'checkIMAReachAndSave',\r\n 'click .btn-cancel': 'cancel',\r\n };\r\n }\r\n\r\n get className() {\r\n return 'adgroup-settings-page-root';\r\n }\r\n\r\n renderLocationTargets() {\r\n this.locationTargetsView = new LocationTargetsView({\r\n scenario: 'adgroup-settings',\r\n level: 'adgroup',\r\n campaignId: pageContext.CurrentCampaign.Id,\r\n adgroupId: pageContext.CurrentAdGroup.Id,\r\n popupIds: { Location: this.isMSStoreAdsGAWorkflow ? 'pop_BA_StoreAds_Location' : 'pop_BA_AdGroup_Settings_LocationTargeting' },\r\n showInitialUiBlocker: false,\r\n deps: this.deps,\r\n supportCashbackSettings: this.supportCashbackSettings,\r\n isForVNext: this.isNewUI,\r\n showPhysicalIntentView: !this.isMSStoreAdsGAWorkflow,\r\n physicalIntent: this.isMSStoreAdsGAWorkflow ? physicalIntentOptions.PeopleIn : undefined,\r\n });\r\n\r\n /*In adgroup settings scenario, location targeting will load both campaign and adgroup criterions, so initialize languageLocationConnector after refresh ends.\r\n contentBid logic may diff between Web UI and API. So if current adgroup has contentBid and its medium is Mixed though it may fail Web UI checking logic, we\r\n enable contentNetwork checkbox and contentBid input box. But if user changes Language or location targeting, then follow Web UI checking logic.\r\n */\r\n this.locationTargetsView.on('end:refresh', () => {\r\n //if meeting above condition, or if the adgroup's medium is SearchAndContent, then initialize languageLocationConnector\r\n /*\r\n No need check KP and traffic estimation since they are not supported in adgroup settings page now.\r\n */\r\n this.languageLocationConnector = new LanguageLocationConnector(\r\n this.viewModel.Language,\r\n this.bidView,\r\n this.advancedSettingsView.adDistributionView,\r\n false,\r\n this.locationTargetsView.viewmodel.useCampaignSettings());\r\n\r\n if (this.viewModel.enableLanguageSelection()) {\r\n this.languageLocationConnector.setLanguageSet(this.languages);\r\n }\r\n\r\n if (this.adDistribution === syndEnum.BingYahooAndSearchPartners) {\r\n //if synd is default value, then check synd status according to UI logic, if it is not default value, then synd is enabled by default.\r\n this.languageLocationConnector.isSyndicationAllowed();\r\n }\r\n });\r\n }\r\n\r\n renderAdvancedSettings(campaign, adgroup) {\r\n this.advancedSettingsView = new AdvancedSettingsView({\r\n scenario: 'adgroup-settings',\r\n level: 'adgroup',\r\n campaignId: pageContext.CurrentCampaign.Id,\r\n adgroupId: pageContext.CurrentAdGroup.Id,\r\n nativeAdsCampaignBid: campaign.NativeBidAdjustment,\r\n nativeAdsAdgroupBid: adgroup.NativeBidAdjustment,\r\n multimediaAdsCampaignBid: campaign.MultiMediaAdBidAdjustment,\r\n multimediaAdsAdgroupBid: adgroup.MultiMediaAdBidAdjustment,\r\n model: adgroup,\r\n languages: campaign.Languages,\r\n TimeZone: campaign.TimeZone,\r\n campaignType: campaignType(),\r\n campaignSubType: this.isSponsoredCampaign() ? 'ShoppingSponsoredProductAd' : null,\r\n campaignBiddingStrategy: campaign.BiddingScheme.Type,\r\n campaignAdScheduleUseSearcherTimeZone: campaign.AdScheduleUseSearcherTimeZone,\r\n isNewUI: this.isNewUI,\r\n supportCashbackSettings: this.supportCashbackSettings,\r\n isSPBCampaign: campaign.CampaignCashback && campaign.CampaignCashback.IsPromotionsForBrands,\r\n isMSStoreAdsGAWorkflow: this.isMSStoreAdsGAWorkflow,\r\n popupIds: this.isMSStoreAdsGAWorkflow ? {\r\n AdDistribution: 'pop_BA_StoreAds_AdDistribution',\r\n } : undefined,\r\n });\r\n\r\n this.$('.advanced-settings-section').html(this.advancedSettingsView.render().el);\r\n }\r\n\r\n isSponsoredCampaign() {\r\n return isSponsoredPilotEnabled &&\r\n pageContext.CurrentCampaign &&\r\n pageContext.CurrentCampaign.CampaignSubType === SponsoredCampaignSubType;\r\n }\r\n\r\n renderBiddingStrategy(adgroup) {\r\n if (!showCpgAdGroupType() || _.first(adgroup.Settings).BidOption !== 'BidBoost') {\r\n if (isManualBiddingDeprecationEnabled) {\r\n this.biddingStrategyView = new BiddingStrategyView({\r\n entityType: 'AdGroup',\r\n biddingStrategyType: adgroup.BiddingScheme.Type,\r\n campaignType: campaignType(),\r\n campaignSubType: pageContext.CurrentCampaign.CampaignSubType,\r\n campaignBiddingStrategyType: _.chain(pageContext.CurrentCampaign).result('BiddingScheme').result('Type').value(),\r\n isMSStoreAdsGAWorkflow: this.isMSStoreAdsGAWorkflow,\r\n });\r\n } else {\r\n this.biddingStrategyView = new BiddingStrategyView({\r\n entityType: 'AdGroup',\r\n biddingStrategyType: adgroup.BiddingScheme.Type,\r\n campaignBiddingStrategyType: _.chain(pageContext.CurrentCampaign).result('BiddingScheme').result('Type').value(),\r\n isMSStoreAdsGAWorkflow: this.isMSStoreAdsGAWorkflow,\r\n });\r\n }\r\n\r\n if (!this.isSponsoredCampaign()) {\r\n this.$('.bidding-strategy__container').empty().html(this.biddingStrategyView.render().el);\r\n }\r\n }\r\n }\r\n\r\n notShowBidView(campaign) {\r\n // remove bid view for campaign of CPS bidding strategy\r\n return _.chain(campaign).result('BiddingScheme').result('Type').value() === biddingStrategyTypes.costPerSale;\r\n }\r\n\r\n renderBidView(campaign, adgroup, newI18n) {\r\n if (this.notShowBidView(campaign)) {\r\n this.$('.bid-block').hide();\r\n return;\r\n }\r\n this.bidView = new BidView({\r\n showTrafficEstimation: false,\r\n adgroup,\r\n languages: campaign.Languages,\r\n campaign,\r\n newI18n,\r\n });\r\n\r\n // for automated bidding, make bid read-only\r\n if (this.biddingStrategyView) {\r\n this.bidView.resetIsAutoBidding(this.biddingStrategyView.getValues().Type);\r\n } else if (adgroup.BiddingScheme) { // DSA ad group doesn't have autobidding UI.\r\n this.bidView.resetIsAutoBidding(adgroup.BiddingScheme.Type);\r\n }\r\n this.$('.bid-section').append(this.bidView.render().el);\r\n }\r\n\r\n renderLanguageSelector(campaign, adgroup) {\r\n const options = {\r\n enableArabic: isArabicEnabled,\r\n enableSimplifiedChinese: isSimplifiedChineseEnabled,\r\n withInheritOption: !_.isEmpty(this.languages),\r\n i18nStrings: { SaveWarning: '' },\r\n el: this.$('.adgroup-language')[0],\r\n language: adgroup.Language,\r\n IsAdsGlobalizationPhase1Enabled: pageContext.Permissions.IsAdsGlobalizationPhase1Enabled,\r\n IsAdsGlobalizationPhase2Enabled: pageContext.Permissions.IsAdsGlobalizationPhase2Enabled,\r\n IsAdsGlobalizationPhase6Enabled: pageContext.Permissions.IsAdsGlobalizationPhase6Enabled,\r\n IsAdsGlobalizationPhase2JapanEnabled: pageContext.Permissions.IsAdsGlobalizationPhase2JapanEnabled,\r\n IsDomesticSimplifiedChineseEnabled: pageContext.Permissions.IsDomesticSimplifiedChineseEnabled,\r\n IsAdsGlobalizationPhase9Enabled: pageContext.Permissions.IsAdsGlobalizationPhase9Enabled,\r\n IsAdsGlobalizationPhase9VIEnabled: pageContext.Permissions.IsAdsGlobalizationPhase9VIEnabled,\r\n };\r\n\r\n this.languageSelector = new LanguageSettingView(options);\r\n eventDispatcher.on('language:changed', (newLanguage) => {\r\n this.viewModel.Language(newLanguage);\r\n });\r\n\r\n // clean bindings for language selector before rendering\r\n ko.cleanNode(this.$('.adgroup-language')[0]);\r\n this.languageSelector.render();\r\n }\r\n\r\n renderCpgAdGroupType(adgroup) {\r\n this.cpgAdGroupType = new AdGroupBidType(_.first(adgroup.Settings));\r\n if (!this.isSponsoredCampaign()) {\r\n // do not show this container in SPAv2\r\n this.$('.cpg-adgroup-type__container').append(this.cpgAdGroupType.render().el);\r\n }\r\n\r\n this.cpgBidSection = new CpgBidSection(adgroup);\r\n this.$('.cpg-bid-section__container').append(this.cpgBidSection.render().el);\r\n }\r\n\r\n renderAdGroupTargets(campaign, adgroup) {\r\n const adGroupTargetInfo = new AudienceTargetInfo({\r\n resourceName: 'AdGroupCriterion',\r\n listenToLocationCriterion: false,\r\n useLocationControl: false,\r\n initAudienceAssociationView: false,\r\n });\r\n const campaignTargetInfo = new AudienceTargetInfo({\r\n resourceName: 'CampaignCriterion',\r\n listenToLocationCriterion: false,\r\n useLocationControl: false,\r\n initAudienceAssociationView: false,\r\n });\r\n\r\n return Promise.all([\r\n adGroupTargetInfo.fetchCriterions(campaign.Id, adgroup.Id),\r\n campaignTargetInfo.fetchCriterions(campaign.Id),\r\n ]).then(() => {\r\n this.adGroupTargetsView = new AudienceAdvancedTargetSettings({\r\n viewContext: {\r\n accountCurrencyCode: pageContext.AccountCurrencyCode,\r\n currentCampaign: campaign,\r\n currentAdGroup: adgroup,\r\n level: 'adgroup',\r\n },\r\n scenario: 'adgroup-settings',\r\n currentLevelTargetInfo: adGroupTargetInfo,\r\n parentLevelTargetInfo: campaignTargetInfo,\r\n supportCashbackSettings: this.supportCashbackSettings,\r\n isMSStoreAdsGAWorkflow: this.isMSStoreAdsGAWorkflow,\r\n });\r\n this.$('.adgroup-targets').append(this.adGroupTargetsView.render().el);\r\n\r\n if (this.locationTargetsView) {\r\n this.adGroupTargetsView.$('.location-setting-controller').append(this.locationTargetsView.render().el);\r\n\r\n return this.locationTargetsView.initialLoadTask;\r\n }\r\n\r\n return null;\r\n });\r\n }\r\n\r\n initCashbackSettingsView(adgroup, campaign) {\r\n if (this.supportCashbackSettings) {\r\n const CashbackPercent = _.chain(adgroup)\r\n .result('AdGroupCashback')\r\n .result('Percent', null)\r\n .value();\r\n const CouponsEnabled = _.chain(adgroup)\r\n .result('AdGroupCashback')\r\n .result('CouponsEnabled', 'None')\r\n .value();\r\n const CashbackScope = _.chain(adgroup)\r\n .result('AdGroupCashback')\r\n .result('Scope')\r\n .value() || 'None';\r\n const ParentLevelCashbackPercent = _.chain(campaign)\r\n .result('CampaignCashback')\r\n .result('Percent', null)\r\n .value();\r\n const ParentLevelCashbackScope = _.chain(campaign)\r\n .result('CampaignCashback')\r\n .result('Scope')\r\n .value() || 'None';\r\n const ParentCouponsEnabled = _.chain(campaign)\r\n .result('CampaignCashback')\r\n .result('CouponsEnabled', 'None')\r\n .value();\r\n\r\n this.cashbackSettingsView = new CashbackSettings({\r\n CashbackPercent,\r\n CashbackScope,\r\n showCashbackBudget: false,\r\n showEnableCashbackSettingsCheckbox: false,\r\n showInheritFromParentOption: true,\r\n isCashbackScopeReadonly: campaignType() !== 'shopping',\r\n showCoupon: campaignType() === 'shopping',\r\n ParentLevelCashbackPercent,\r\n ParentLevelCashbackScope,\r\n CouponsEnabled,\r\n ParentCouponsEnabled,\r\n deps: {\r\n decimal,\r\n i18n,\r\n pageContext,\r\n },\r\n });\r\n }\r\n }\r\n\r\n onCashbackPercentChange(value) {\r\n if (this.cashbackSettingsView.viewModel.validateCashbackPercent(value)) {\r\n const formattedValue = value === '' || value == null ? null : decimal.fromLocalToFloat(value);\r\n\r\n if (this.adGroupTargetsView) {\r\n this.adGroupTargetsView.toggleCashbackPercentColumns(true, {\r\n level: 'AdGroup',\r\n value: formattedValue,\r\n });\r\n }\r\n\r\n if (this.locationTargetsView) {\r\n this.locationTargetsView.toggleCashbackPercentColumns(true, {\r\n level: 'AdGroup',\r\n value: formattedValue,\r\n });\r\n }\r\n\r\n if (this.advancedSettingsView && this.advancedSettingsView.adScheduleView) {\r\n this.advancedSettingsView.adScheduleView.toggleCashbackPercentColumns(true, {\r\n level: 'AdGroup',\r\n value: formattedValue,\r\n });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n this.$el.html(template({\r\n i18n,\r\n isShowDisclaimerBannerEnabled: this.showDisclaimerBanner,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n if (!(pageContext && pageContext.CurrentCampaign && pageContext.CurrentCampaign.Id && pageContext.CurrentAdGroup && pageContext.CurrentAdGroup.Id)) {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'loadAdGroupSettingsPage', JSON.stringify(pageContext));\r\n this.viewModel.errors.add();\r\n return null;\r\n }\r\n\r\n this.hideUIBlocker = uiBlocker(this.$('.adgroup-settings-page'));\r\n this.mark('willFetchData');\r\n Promise.join(\r\n jsData.AdGroup.find(Number(pageContext.CurrentAdGroup.Id), { entitySet: edmCampaign.currentCampaign.AdGroups, bypassCache: true }),\r\n jsData.Campaign.find(Number(pageContext.CurrentCampaign.Id), { queryParameters: { entitySet: edmCampaign.currentAccount.Campaigns, expand: ['Budget'] }, bypassCache: true }),\r\n loadMap(),\r\n (adgroup, campaign) => {\r\n this.mark('willRender');\r\n if (_.has(adgroup, 'Id')) {\r\n // mock\r\n // campaign.CashbackSettings = { CashbackMonthlyBudget: 1 };\r\n\r\n this.supportCashbackSettings = shouldSupportCashbackSettings(campaign, pageContext.Permissions) && !this.isSponsoredCampaign();\r\n\r\n this.mutableModel = new MutableModel(mutables(adgroup, this));\r\n\r\n this.viewModel.dataLoaded(true);\r\n\r\n this.viewModel.setModel(adgroup);\r\n this.viewModel.supportCashbackSettings(this.supportCashbackSettings);\r\n\r\n if (this.supportCashbackSettings) {\r\n this.initCashbackSettingsView(adgroup, campaign);\r\n this.$('.cashback-settings-container').empty().append(this.cashbackSettingsView.render().$el);\r\n\r\n this.cashbackSettingsView.viewModel.CashbackPercent.subscribe((value) => {\r\n if (this.cashbackSettingsView.viewModel.validateCashbackPercent(value)) {\r\n const formattedValue = value === '' || value == null ? null : +value;\r\n\r\n if (this.adGroupTargetsView) {\r\n this.adGroupTargetsView.toggleCashbackPercentColumns(true, {\r\n level: 'AdGroup',\r\n value: formattedValue,\r\n });\r\n }\r\n\r\n if (this.locationTargetsView) {\r\n this.locationTargetsView.toggleCashbackPercentColumns(true, {\r\n level: 'AdGroup',\r\n value: formattedValue,\r\n });\r\n }\r\n\r\n if (this.advancedSettingsView && this.advancedSettingsView.adScheduleView) {\r\n this.advancedSettingsView.adScheduleView.toggleCashbackPercentColumns(true, {\r\n level: 'AdGroup',\r\n value: formattedValue,\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.languages = _.isEmpty(campaign.Languages) ? [] : campaign.Languages;\r\n // render language selector for user in multi-language campaign\r\n if (this.viewModel.enableLanguageSelection()) {\r\n this.renderLanguageSelector(campaign, adgroup);\r\n }\r\n\r\n if (showCpgAdGroupType()) {\r\n this.renderCpgAdGroupType(adgroup);\r\n } else {\r\n this.renderBidView(campaign, adgroup, this.options.deps.i18nNewDesign);\r\n }\r\n\r\n if (campaignType() === 'shopping' ||\r\n (isDSAMixedModeCampaignEnabled && campaignType() === 'search' &&\r\n (pageContext.CurrentAdGroup.AdGroupType === 1 || pageContext.CurrentAdGroup.AdGroupType === 'SearchStandard')) ||\r\n (!isDSAMixedModeCampaignEnabled && campaignType() === 'search')) {\r\n this.renderBiddingStrategy(adgroup);\r\n }\r\n\r\n if (this.biddingStrategyView) {\r\n this.$('.bidding-strategy__container')[0].addEventListener('change', () => {\r\n if (this.bidView) {\r\n this.bidView.resetIsAutoBidding(this.biddingStrategyView.getValues().Type);\r\n }\r\n }, false);\r\n }\r\n this.renderAdvancedSettings(campaign, adgroup);\r\n\r\n this.medium = adgroup.Medium;\r\n this.adDistribution = adgroup.AdDistribution;\r\n\r\n this.renderLocationTargets();\r\n\r\n return this.renderAdGroupTargets(campaign, adgroup);\r\n } else {\r\n this.viewModel.errors.add();\r\n\r\n return null;\r\n }\r\n })\r\n .catch(() => {\r\n // todo [yucongj] add more specific error messages\r\n this.viewModel.errors.add();\r\n })\r\n .finally(() => {\r\n this.hideUIBlocker();\r\n this.mark('done');\r\n });\r\n\r\n return this;\r\n }\r\n\r\n validate() {\r\n return _.reduce([\r\n this.viewModel.validate(),\r\n this.bidView ? this.bidView.validate() : true,\r\n this.advancedSettingsView.validate(),\r\n this.locationTargetsView ? this.locationTargetsView.validate() : true,\r\n this.biddingStrategyView ? this.biddingStrategyView.validate() : true,\r\n this.cpgBidSection ? this.cpgBidSection.validate() : true,\r\n this.adGroupTargetsView ? this.adGroupTargetsView.validate() : true,\r\n this.cashbackSettingsView ? this.cashbackSettingsView.validate() : true,\r\n ], (memo, val) => {\r\n return memo && val;\r\n }, true);\r\n }\r\n\r\n checkIMAReachAndSave() {\r\n let checkIMAReachPromise = Promise.resolve(false);\r\n\r\n if (!this.validate()) {\r\n return;\r\n }\r\n\r\n const adGroupCriterions = this.getLocationCriterion();\r\n\r\n const changedLocationCriterions = _.filter(adGroupCriterions, (item) =>\r\n item && (item.CriterionType === 'Location' || item.CriterionType === 'Radius'));\r\n\r\n const hasLocationChanged = changedLocationCriterions && changedLocationCriterions.length > 0;\r\n\r\n const locationCriterions = this.getAllAdGroupLocationCriterion() || [];\r\n\r\n if (hasLocationChanged && pageContext.Permissions.IsIMAReachRepresentationPhase1Enabled && this.isNewUI && locationCriterions.length > 0) {\r\n const onYes = () => this.save();\r\n const locationsInfo = getLocationsInfo(locationCriterions);\r\n\r\n checkIMAReachPromise = showIMAReachModal({\r\n locationsInfo,\r\n onYes,\r\n deliveryChannel: campaignType() === 'audience' ? 'AIM' : 'BingAds',\r\n campaignId: pageContext.CurrentCampaign.Id,\r\n adGroupId: pageContext.CurrentAdGroup.Id,\r\n i18n,\r\n aid: pageContext.CurrentAccount.Id,\r\n cid: pageContext.CurrentAccount.AdvertiserCustomerID,\r\n });\r\n }\r\n\r\n checkIMAReachPromise.then((isIMAReachModalShow) => {\r\n if (isIMAReachModalShow) {\r\n return;\r\n }\r\n this.save();\r\n });\r\n }\r\n\r\n getAllAdGroupLocationCriterion() {\r\n let adGroupCriterions = [];\r\n\r\n if (this.locationTargetsView) {\r\n let locationTargets = this.locationTargetsView.getValues({\r\n level: 'adgroup',\r\n }, {\r\n keepAllLocations: true,\r\n });\r\n\r\n locationTargets.locations = _.filter(locationTargets.locations, (c) => c.Status !== 'Deleted');\r\n\r\n // inherit locations\r\n if (locationTargets.locations.length === 0 &&\r\n this.locationTargetsView.campaignCriterions &&\r\n this.locationTargetsView.campaignCriterions.length > 0) {\r\n const inheritInfo = getLocationsInfoFromCampaignCriterions(this.locationTargetsView.campaignCriterions);\r\n\r\n locationTargets = _.extend(locationTargets, inheritInfo);\r\n }\r\n\r\n adGroupCriterions = adGroupCriterions.concat(locationTargets.locations)\r\n .concat(locationTargets.intent);\r\n }\r\n\r\n if (this.adGroupTargetsView) {\r\n // this is the old logic for audience\r\n let adGroupTargetsData = this.adGroupTargetsView.getAllLocations() || [];\r\n\r\n if (!_.isEmpty(adGroupTargetsData)) {\r\n adGroupTargetsData = _.filter(adGroupTargetsData, (c) => c.Status !== 'Deleted');\r\n\r\n const adGroupCriterionsWithoutIntent = _.filter(adGroupTargetsData, (c) => c.CriterionType !== 'LocationIntentCriterion');\r\n const campaignCriterions = this.adGroupTargetsView.getCampaignLocationCriterions();\r\n\r\n // inherit locations\r\n if (adGroupCriterionsWithoutIntent.length === 0 &&\r\n campaignCriterions &&\r\n campaignCriterions.length > 0) {\r\n const overrideInfo = getLocationsInfoFromCampaignCriterions(campaignCriterions);\r\n\r\n return overrideInfo.locations.concat(overrideInfo.intent);\r\n }\r\n }\r\n\r\n adGroupCriterions = adGroupCriterions.concat(adGroupTargetsData);\r\n }\r\n\r\n return adGroupCriterions;\r\n }\r\n\r\n getLocationCriterion() {\r\n let adGroupCriterions = [];\r\n\r\n if (this.locationTargetsView) {\r\n let locationTargets = this.locationTargetsView.getValues({\r\n level: 'adgroup',\r\n });\r\n\r\n adGroupCriterions = adGroupCriterions.concat(locationTargets.locations)\r\n .concat(locationTargets.intent)\r\n .concat(locationTargets.deletedLocations || []);\r\n }\r\n\r\n if (this.adGroupTargetsView) {\r\n const adGroupTargetsData = this.adGroupTargetsView.getData();\r\n const adGroupTargetsCriterions = _.result(adGroupTargetsData, 'AdGroupCriterions', []);\r\n\r\n adGroupCriterions = adGroupCriterions.concat(adGroupTargetsCriterions);\r\n }\r\n\r\n return adGroupCriterions;\r\n }\r\n\r\n save() {\r\n this.clearApiErrors();\r\n\r\n let params = _.defaults(this.viewModel.toObject(), this.bidView ? this.bidView.getValues() : {});\r\n\r\n params.Campaign = {\r\n Id: pageContext.CurrentCampaign.Id,\r\n };\r\n\r\n const isCostPerSaleCampaign = _.chain(pageContext.CurrentCampaign).result('BiddingScheme').result('Type').value() === biddingStrategyTypes.costPerSale;\r\n\r\n if (this.biddingStrategyView && !this.isMSStoreAdsGAWorkflow) {\r\n if (this.isSponsoredCampaign() && !isCostPerSaleCampaign && !this.isMranEcpcEnabled && !this.isMranTroasEnabled) {\r\n // Bid strategy default to manual cpc in SPAv2\r\n params.BiddingScheme = {\r\n Type: 'ManualCpc',\r\n };\r\n } else {\r\n params.BiddingScheme = this.biddingStrategyView.getValues();\r\n }\r\n }\r\n\r\n let adGroupCriterions = this.getLocationCriterion();\r\n let advancedSettings = this.advancedSettingsView.getValues();\r\n let targets = advancedSettings.deviceTargets\r\n .concat(advancedSettings.ageTargets)\r\n .concat(advancedSettings.genderTargets)\r\n .concat(advancedSettings.scheduling);\r\n\r\n targets = _.map(targets, (target) => {\r\n return _.extendOwn(target, {\r\n 'AdGroup': {\r\n 'Id': pageContext.CurrentAdGroup.Id,\r\n },\r\n });\r\n });\r\n\r\n params.AdGroupCriterions = adGroupCriterions.concat(targets);\r\n\r\n _.extend(params, advancedSettings.urlOptions,\r\n advancedSettings.netWorkOptions,\r\n advancedSettings.adRotation,\r\n advancedSettings.dateSettings,\r\n advancedSettings.nativeAds,\r\n advancedSettings.multimediaAds);\r\n\r\n if (_.isBoolean(advancedSettings.adScheduleUseSearcherTimeZone)) {\r\n params.AdScheduleUseSearcherTimeZone = advancedSettings.adScheduleUseSearcherTimeZone;\r\n }\r\n\r\n if (this.cpgBidSection) {\r\n params = this.cpgBidSection.getValues(params);\r\n }\r\n\r\n this.mutableModel.set(params);\r\n params = this.mutableModel.getIncremental(_.keys(params));\r\n\r\n const highLantencyThreshold = 3000;\r\n\r\n if (_.size(params.AdGroupCriterions) > highLantencyThreshold) {\r\n this.viewModel.showHighLatencyAlert(true);\r\n }\r\n\r\n if (this.cashbackSettingsView) {\r\n _.extend(params, this.cashbackSettingsView.getValues());\r\n }\r\n\r\n const batchSize = 1000;\r\n const chunks = _.chain(params.AdGroupCriterions)\r\n .groupBy((value, index) => Math.floor(index / batchSize))\r\n .toArray()\r\n .value();\r\n\r\n\r\n const batchedParams = {\r\n reqs: _.map(chunks, (batch) => ({\r\n Id: params.Id,\r\n data: _.extend({}, params, { AdGroupCriterions: batch }),\r\n })),\r\n };\r\n const mergeAdGroupCriterions = (responses) => {\r\n const mergedAdGroupCriterions = _.reduce(responses, (dest, res) => dest.concat(res.AdGroupCriterions), []);\r\n\r\n return _.extend({}, _.first(responses), { AdGroupCriterions: mergedAdGroupCriterions });\r\n };\r\n\r\n jsData.AdGroup.update(params.Id, batchedParams, { adapter: 'bulk', cacheResponse: false, overrideResponse: true, batch: true, processResponse: mergeAdGroupCriterions })\r\n .then((response) => {\r\n //we backfill advanced settings models here, so we have correct model if the saveExtensions call fails.\r\n this.advancedSettingsView.setData(response);\r\n logAdGroupPersonalizedOffers(this.supportCashbackSettings, this.activity.signal.bind(this.activity), params);\r\n return this.advancedSettingsView.exclusionsUpdated() ? this.advancedSettingsView.saveExtensions() : {};\r\n })\r\n .then(() => {\r\n summaryDataContextManager.getContext('/campaign/newadgroup/edit?');\r\n window.App.trigger('adGroupUpdated', {\r\n data: [{\r\n Id: Number(params.Id),\r\n Name: params.Name,\r\n CampaignId: params.Campaign.Id,\r\n AccountId: pageContext.CurrentAccount.Id,\r\n Bidding: { Type: 0 },\r\n }],\r\n });\r\n // eslint-disable-next-line camelcase\r\n this.navigateToRoute(backRouteName, { campaign_id: params.Campaign.Id, adgroup_id: params.Id });\r\n })\r\n .catch((response) => {\r\n this.handleApiErrors(response);\r\n })\r\n .finally(uiBlocker(this.$('.adgroup-settings-page')));\r\n }\r\n\r\n clearApiErrors() {\r\n this.advancedSettingsView.clearApiErrors();\r\n this.viewModel.errors.clear(i18nErrors.isCampaignApiError);\r\n }\r\n\r\n handleApiErrors(response) {\r\n if (_.isUndefined(response) || _.isNull(response)) {\r\n this.viewModel.errors.add();\r\n return;\r\n }\r\n\r\n if (response.errors && !response.entity) {\r\n //Ajax error [400] - RowCountExceeded\r\n this.viewModel.errors.add(i18nErrors.getODataErrors(response.errors));\r\n return;\r\n }\r\n\r\n if (response === 'exclusion error') {\r\n return;\r\n }\r\n\r\n i18nErrors.getPartial(response);\r\n\r\n let adgroupErrors = _.reject(response.entity.errors, (error) => {\r\n return _.contains(['TrackingUrlTemplate', 'UrlCustomParameters'], error.property);\r\n });\r\n\r\n this.advancedSettingsView.setData(response);\r\n this.advancedSettingsView.handleErrors(response);\r\n this.viewModel.errors.add(adgroupErrors);\r\n\r\n if (this.locationTargetsView) {\r\n this.locationTargetsView.handleApiErrorsForAdGroupLevel(pageContext.CurrentAdGroup.Id);\r\n }\r\n }\r\n\r\n cancel() {\r\n const adgroupId = pageContext.CurrentAdGroup ? pageContext.CurrentAdGroup.Id : undefined;\r\n\r\n // eslint-disable-next-line camelcase\r\n this.navigateToRoute(backRouteName, { campaign_id: pageContext.CurrentCampaign.Id, adgroup_id: adgroupId });\r\n }\r\n\r\n remove() {\r\n if (this.languageLocationConnector) {\r\n this.languageLocationConnector.stopListening();\r\n }\r\n if (this.locationTargetsView) {\r\n this.locationTargetsView.remove();\r\n }\r\n if (this.adGroupTargetsView) {\r\n this.adGroupTargetsView.remove();\r\n }\r\n\r\n super.remove();\r\n }\r\n\r\n mark(perfMarkerEvent) {\r\n if (this.adGroupScopePerfMarker) {\r\n this.adGroupScopePerfMarker[perfMarkerEvent]();\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\n\r\nexport const mutables = (adgroup, context) => {\r\n function memo(key) {\r\n return _.property(key)(context.mutableModel.memo);\r\n }\r\n\r\n return {\r\n mutables: {\r\n Language: {},\r\n Medium: {},\r\n NativeBidAdjustment: {},\r\n TrackingUrlTemplate: {},\r\n UrlCustomParameters: {\r\n hasChanges: (value) => {\r\n if (_.isEmpty(value) && _.isEmpty(memo('UrlCustomParameters'))) {\r\n return false;\r\n }\r\n\r\n return !_.isEqual(value, memo('UrlCustomParameters'));\r\n },\r\n },\r\n AdRotation: {\r\n hasChanges: (value) => {\r\n if (memo('AdRotation')) {\r\n return value !== memo('AdRotation').RotationType;\r\n }\r\n return true;\r\n },\r\n },\r\n AdDistribution: {},\r\n SearchBid: {\r\n hasChanges: (value) => {\r\n return decimal.fromLocalToFloat(value) !== decimal.fromLocalToFloat(memo('SearchBid'));\r\n },\r\n },\r\n ContentBid: {\r\n hasChanges: (value) => {\r\n return decimal.fromLocalToFloat(value) !== decimal.fromLocalToFloat(memo('ContentBid'));\r\n },\r\n },\r\n },\r\n model: adgroup,\r\n };\r\n};\r\n","import _ from 'underscore';\r\nimport { ProjectionGridBaseColumn } from '@bingads-webui/projection-grid-base-column';\r\n\r\nconst audiencesi18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/audiences');\r\n\r\n\r\nexport class AudienceBaseColumn extends ProjectionGridBaseColumn {\r\n constructor(Column, options) {\r\n\r\n const helpAriaLabel = options.helpId ?\r\n audiencesi18n.getString('Click to learn more about {{item}}', { item: audiencesi18n.getString(options.title) }) : '';\r\n\r\n super(_.defaults({}, options,\r\n {\r\n name: Column.Name || Column,\r\n property: Column.Property || Column,\r\n sortable: Column.Property || Column,\r\n bodyClasses: [`audiences-column-${Column.Name || Column}`],\r\n i18n: audiencesi18n,\r\n helpAriaLabel,\r\n columnConversion: Column.columnConversion || Column,\r\n }));\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport scopeService from '@bingads-webui-static-legacy/scope-service'; //TODO: it depends on pageContext, will pass it from view\r\nimport DataStore from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\n\r\nexport default class ViewModel {\r\n constructor(options = {}) {\r\n this.options = options;\r\n this.selectedCampaigns = ko.observable(this.options.campaign);\r\n this.selectedAdgroups = ko.observable();\r\n this.selectedCampaignId = ko.computed(() => {\r\n if (_.isEmpty(this.selectedCampaigns())) {\r\n return this.options.campaignId;\r\n } else {\r\n return this.selectedCampaigns().Id;\r\n }\r\n });\r\n this.selectedAdgroupId = ko.computed(() => {\r\n if (_.isEmpty(this.selectedAdgroups())) {\r\n return this.options.adgroupId;\r\n } else {\r\n return this.selectedAdgroups().Id;\r\n }\r\n });\r\n this.selectedAdgroups.subscribe((adgroup) => {\r\n const campaignSettings = _.chain(adgroup).result('Campaign').result('CampaignSettings').value();\r\n const campaignId = _.chain(adgroup).result('Campaign').result('Id').value();\r\n\r\n if (campaignId === this.selectedCampaignId()) { // selected campaign no need change\r\n return;\r\n }\r\n\r\n this.selectedCampaigns(null);\r\n\r\n if (_.isEmpty(campaignSettings)) {\r\n DataStore.Campaign.find(campaignId, {\r\n entitySet: edmCampaign.currentAccount.Campaigns,\r\n cacheResponse: false,\r\n findStrictCache: true,\r\n }).then((campaign) => this.selectedCampaigns(campaign));\r\n } else {\r\n this.selectedCampaigns(adgroup.Campaign);\r\n }\r\n });\r\n this.scopeContext = scopeService.getScope();\r\n this.showCampaigns = !this.options.campaignId;\r\n this.showAdGroups = !this.options.adgroupId && this.options.entityType === 'adgroup';\r\n\r\n this.isEmptySelector = ko.computed(() => {\r\n if (this.showAdGroups) {\r\n return this.selectedAdgroupId() === undefined || this.selectedAdgroupId() === 0;\r\n } else {\r\n return this.selectedCampaignId() === undefined || this.selectedCampaignId() === 0;\r\n }\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport headerTemplate from '@bingads-webui-campaign-legacy/bingadsgrid/template/header.pug';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/bingadsgrid');\r\n\r\nexport default (config) => {\r\n _.each(config.columns, (column) => {\r\n if (column.headerTemplate) {\r\n return;\r\n }\r\n\r\n let containerType = null;\r\n\r\n if (column.type === 'number' || column.type === 'integer') {\r\n containerType = 'numbercontainer';\r\n } else {\r\n containerType = 'textcontainer';\r\n }\r\n\r\n column.headerBuilder = (columnInfo, isSubHeader) => {\r\n\r\n let name = isSubHeader ? columnInfo.config.subColTitle || columnInfo.config.title : columnInfo.config.title;\r\n let label = name;\r\n\r\n if (columnInfo.$orderby) {\r\n label = `${name} ${columnInfo.$orderby.dir > 0 ? i18n.getString('Grid_Column_OrderBy_Ascending') : i18n.getString('Grid_Column_OrderBy_Descending')}`;\r\n }\r\n\r\n return headerTemplate({\r\n name,\r\n label,\r\n containerType,\r\n popupId: column.popupId ? columnInfo.config.popupId : null,\r\n column: columnInfo,\r\n });\r\n };\r\n });\r\n\r\n return config;\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport dateUtil from '@bingads-webui-component-legacy/humanize/date';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport { getSegPreference, getSegType } from '@bingads-webui-component-legacy/bingads-grid/service/segmentation-preferences';\r\nimport { getCustomColumnsPreference } from '@bingads-webui-component-legacy/bingads-grid/service/custom-column-preferences';\r\nimport segmentTimeChecker from '@bingads-webui-component-legacy/bingads-grid/shared/timeRangeChecker';\r\nimport { fetchPaginationConfig } from '@bingads-webui-component-legacy/bingads-grid/service/fetch-pagination';\r\n\r\nconst formatDate = (date) => dateUtil.format(date, 'M/d/yyyy');\r\nconst formatDateForGridDataParameters = (date) => dateUtil.format(date, 'yyyy-MM-dd');\r\n\r\n\r\nexport default (gridConfig) => {\r\n const sortInfoKey = gridConfig.name;\r\n\r\n return Promise.all([\r\n state.getPromise('$daterange'),\r\n fetchPaginationConfig(sortInfoKey, 50),\r\n getCustomColumnsPreference(gridConfig.name),\r\n getSegPreference(gridConfig.name),\r\n ]).spread((dateRange, {pageSize, orderbyInfo, sortableHeader}) => {\r\n gridConfig = _.defaults(gridConfig, {pageable: {}}); //eslint-disable-line\r\n\r\n // for customDataSource, need to put 'orderby', 'query' to config.query\r\n let queryConfig;\r\n\r\n if (gridConfig.isDataFetchManagerSource) {\r\n gridConfig.query = gridConfig.query || {};\r\n queryConfig = gridConfig.query;\r\n } else {\r\n queryConfig = gridConfig.dataSource;\r\n }\r\n queryConfig.query = queryConfig.query || {};\r\n\r\n const customColumnsEnabled = _.chain(gridConfig.plugins)\r\n .result('columnChooser')\r\n .result('customColumn')\r\n .result('enabled', false)\r\n .value();\r\n\r\n if (customColumnsEnabled) {\r\n const gridDataParameters = {\r\n CustomColumns: [],\r\n DateRange: {\r\n StartDate: formatDateForGridDataParameters(dateRange.start),\r\n EndDate: formatDateForGridDataParameters(dateRange.end),\r\n },\r\n };\r\n\r\n if (dateRange.compared) {\r\n gridDataParameters.ComparisonDateRange = {\r\n StartDate: formatDateForGridDataParameters(dateRange.compared.start),\r\n EndDate: formatDateForGridDataParameters(dateRange.compared.end),\r\n };\r\n }\r\n\r\n const gridData = edm.currentAccount.Campaigns['Default.GridData'].$call({ gridDataParameters });\r\n\r\n gridConfig.dataSource.options.entitySet = gridData;\r\n queryConfig.query.entitySet = gridData.toJSON();\r\n }\r\n\r\n gridConfig.pageable.pageSize = pageSize;\r\n if (gridConfig.plugins && gridConfig.plugins.pagination) {\r\n gridConfig.plugins.pagination.pageSize = pageSize;\r\n }\r\n queryConfig.query.endDate = formatDate(dateRange.end);\r\n queryConfig.query.startDate = formatDate(dateRange.start);\r\n\r\n if (dateRange.compared) {\r\n queryConfig.query.endDate2 = formatDate(dateRange.compared.end);\r\n queryConfig.query.startDate2 = formatDate(dateRange.compared.start);\r\n queryConfig.query.comparisonEndDate = formatDate(dateRange.compared.end);\r\n queryConfig.query.comparisonStartDate = formatDate(dateRange.compared.start);\r\n }\r\n\r\n const segType = getSegType(gridConfig.name);\r\n\r\n if (segType && segType.segmentationType !== 'None' && segmentTimeChecker.isTimeRangeValid(segType.segmentationType)) {\r\n queryConfig.query.SegmentationTypes = segType.segmentationType;\r\n }\r\n\r\n if (orderbyInfo && orderbyInfo.length > 0) {\r\n queryConfig.orderby = orderbyInfo;\r\n gridConfig.sortableHeader = _.defaults(_.pick(sortableHeader, 'name', 'directionIndex'), gridConfig.sortableHeader);\r\n }\r\n });\r\n};\r\n","import _ from 'underscore';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport dateUtil from '@bingads-webui-component-legacy/humanize/date';\r\nimport Backbone from 'backbone';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport '@bingads-webui-component-legacy/extension/underscore';\r\n\r\nconst formatDateInQuery = (date) => dateUtil.format(date, 'M/d/yyyy');\r\nconst formatDateInEntitySet = (date) => dateUtil.format(date, 'yyyy-MM-dd');\r\nconst parseDate = (dateString) => dateUtil.parse(dateString);\r\nconst defaultComparisonColumns = [\r\n 'PeriodPerformanceMetrics',\r\n 'PerformanceMetricsChange',\r\n 'PerformanceMetricsChangePercentage',\r\n 'PhonePeriodPerformanceMetrics',\r\n 'PhonePerformanceMetricsChange',\r\n 'PhonePerformanceMetricsChangePercentage',\r\n];\r\n\r\nfunction changeEntitySet(queryParams = {}, dateRange) {\r\n const options = queryParams.options;\r\n const entitySet = edm.root.identifyEntitySet(options.entitySet.toJSON());\r\n\r\n const action = entitySet.navigation.source;\r\n const gridDataParameters = _.defaults({\r\n DateRange: {\r\n StartDate: formatDateInEntitySet(dateRange.start) || formatDateInEntitySet(parseDate(dateRange.RangeStartDate)),\r\n EndDate: formatDateInEntitySet(dateRange.end) || formatDateInEntitySet(parseDate(dateRange.RangeEndDate)),\r\n },\r\n ComparisonDateRange: dateRange.compared ? {\r\n StartDate: formatDateInEntitySet(dateRange.compared.start),\r\n EndDate: formatDateInEntitySet(dateRange.compared.end),\r\n } : null,\r\n }, entitySet.navigation.parameters.gridDataParameters);\r\n const { parameters } = entitySet.navigation;\r\n\r\n _.extend(parameters, { gridDataParameters });\r\n\r\n return _.defaults({\r\n options: _.defaults({\r\n entitySet: action.$call(parameters),\r\n }, options),\r\n }, queryParams);\r\n}\r\n\r\nfunction dateRangeEquals(firstRange, secondRange) {\r\n function convertForComparison(range) {\r\n const dates = _.pick(range, 'start', 'end');\r\n\r\n if (range.compared) {\r\n _.extend(dates, {comparedStart: range.compared.start, comparedEnd: range.compared.end});\r\n }\r\n return dates;\r\n }\r\n\r\n if (!firstRange || !secondRange) {\r\n return false;\r\n }\r\n\r\n return JSON.stringify(convertForComparison(firstRange)) === JSON.stringify(convertForComparison(secondRange));\r\n}\r\n\r\nfunction addDateRangeToQueryParams(queryParams, dateRange) {\r\n let query = _.defaults({\r\n startDate: formatDateInQuery(dateRange.start) || formatDateInQuery(parseDate(dateRange.RangeStartDate)),\r\n endDate: formatDateInQuery(dateRange.end) || formatDateInQuery(parseDate(dateRange.RangeEndDate)),\r\n }, queryParams.query);\r\n\r\n if (dateRange.compared) {\r\n query = _.defaults({\r\n comparisonStartDate: formatDateInQuery(dateRange.compared.start),\r\n comparisonEndDate: formatDateInQuery(dateRange.compared.end),\r\n }, query);\r\n } else {\r\n query = _.omit(query, 'comparisonStartDate', 'comparisonEndDate');\r\n }\r\n\r\n return _.defaults({\r\n query,\r\n }, queryParams);\r\n}\r\n\r\nexport default (definePlugin) =>\r\n definePlugin('dateFilter', ['config', 'gridView', 'dataSource'], (config, gridView, dataSource) => {\r\n const events = _.extend({}, Backbone.Events);\r\n const pluginConfig = _.result(config.plugins, 'dateFilter', {});\r\n const { comparisonColumns = defaultComparisonColumns } = pluginConfig;\r\n\r\n const originalQuery = dataSource.query;\r\n\r\n let currentDateRange = null;\r\n\r\n state.getPromise('$daterange').then((dateRange) => {\r\n currentDateRange = dateRange;\r\n });\r\n\r\n if (!config.isDataFetchManagerSource) {\r\n dataSource.query = (params) => {\r\n return state.getPromise('$daterange').then((dateRange) => {\r\n let queryParams;\r\n\r\n if (pluginConfig.isOdataActionSource) {\r\n queryParams = _.defaults({\r\n select: dateRange.compared ? _.union(params.select, comparisonColumns) : _.difference(params.select, comparisonColumns),\r\n }, changeEntitySet(params, dateRange));\r\n } else {\r\n queryParams = addDateRangeToQueryParams(params, dateRange);\r\n }\r\n\r\n gridView.set({ queryParams });\r\n\r\n return originalQuery.call(dataSource, queryParams);\r\n });\r\n };\r\n }\r\n\r\n if (window.App && window.App.views && window.App.views.Summary) {\r\n window.App.views.Summary.bindDateFilterChangeHandler((e, newDateRange) => {\r\n if (dateRangeEquals(currentDateRange, newDateRange)) {\r\n return;\r\n }\r\n\r\n currentDateRange = newDateRange;\r\n gridView.refresh(true);\r\n events.trigger('dateChange');\r\n });\r\n }\r\n\r\n return {\r\n events,\r\n getCurrentDateRange() {\r\n return currentDateRange;\r\n },\r\n p$getCurrentDateRange() {\r\n return state.getPromise('$daterange');\r\n },\r\n };\r\n });\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui/primitive-utilities';\r\nimport { defineGridPlugin } from '@bingads-webui/projection-grid-plugin';\r\nimport summaryDataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\n\r\nconst headerRefreshCache = 'x-ms-refreshcampaigncache';\r\n\r\nexport default defineGridPlugin('refreshCache', [\r\n 'config',\r\n 'dataSource',\r\n 'gridView',\r\n], (config, dataSource, gridView, {\r\n method = 'GET',\r\n contexts = [],\r\n} = {}) => {\r\n const originalQuery = dataSource.query;\r\n\r\n dataSource.query = (params) => {\r\n const path = putil.get(dataSource, '_options.entitySet.path');\r\n // Fetch the RefreshCampaignData property for the current grid\r\n const context = summaryDataContextManager.getContext(path, true, method);\r\n const refreshCampaignData = putil.get(context, 'data.RefreshCampaignData');\r\n\r\n // If refreshCampaignData is set, override headerRefreshCache to true.\r\n if (refreshCampaignData) {\r\n putil.merge(params, {\r\n options: {\r\n headers: {\r\n [headerRefreshCache]: true,\r\n },\r\n },\r\n });\r\n }\r\n\r\n return originalQuery.call(dataSource, params);\r\n };\r\n\r\n const contextsToUpdate = _.chain(contexts)\r\n .union([config.legacyGridName])\r\n .compact()\r\n .value();\r\n\r\n if (!_.isEmpty(contextsToUpdate)) {\r\n gridView.on('didEdit', () => summaryDataContextManager.updateContext(contextsToUpdate));\r\n }\r\n});\r\n","import _ from '@bingads-webui-component-legacy/extension/underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport statusIconColumnTemplate from '@bingads-webui-campaign-legacy/bingadsgrid/template/status-column.pug';\r\nimport { filterOptionsFromSchema, mapEnumValueForFilter } from '@bingads-webui-component-legacy/bingads-grid/shared/schema-util';\r\nimport deliveryStatusTemplate from '@bingads-webui-campaign-legacy/bingadsgrid/vnext/template/deliveryStatusTemplate.pug';\r\nimport { applyPartialConversionColumnName } from '@bingads-webui-campaign/column-conversions';\r\n\r\nconst s$i18n = window.globalLegacyI18n.get('$/schema-i18n!campaign');\r\nconst i18nGlobal = window.globalLegacyI18n.get('component/i18n/loader!legacy/global');\r\n\r\n\r\nexport function withoutColumns(columns, names = []) {\r\n return _.reject(columns, (column) => _.contains(names, column.name));\r\n}\r\n\r\nconst getAriaLabelTextTemplate = (i18n) => {\r\n return i18n ? i18n.getString('Click to learn more about {{item}}') : undefined;\r\n};\r\n\r\nconst getPerformanceMetrics = (i18n) => {\r\n const helpAriaLabelTextTemplate = getAriaLabelTextTemplate(i18n);\r\n\r\n const {\r\n IsViewThroughConversionEnabled,\r\n IsViewThroughConversionsRevenueEnabled,\r\n dynamic = {},\r\n } = config.get('Permissions');\r\n\r\n const {\r\n PartialConversions: IsPartialConversionsEnabled,\r\n ColumnConversion: IsColumnConversionEnabled,\r\n } = dynamic;\r\n\r\n const usePartialConversions = IsPartialConversionsEnabled && IsColumnConversionEnabled;\r\n\r\n // columnConversion field was added for column conversion\r\n return [bingadsGridColumn({\r\n name: 'Clicks',\r\n title: s$i18n.property('PerformanceMetrics', 'Clicks'),\r\n sortable: true,\r\n property: 'PerformanceMetrics/Clicks',\r\n type: 'number',\r\n format: 'integer',\r\n helpId: 'Pop_BA_AccountsGrid_Clicks',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'Impressions',\r\n title: s$i18n.property('PerformanceMetrics', 'Impressions'),\r\n sortable: true,\r\n property: 'PerformanceMetrics/Impressions',\r\n type: 'number',\r\n format: 'integer',\r\n helpId: 'Pop_BA_AccountsGrid_Impr',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'CTR',\r\n title: s$i18n.property('PerformanceMetrics', 'ClickThruRate'),\r\n sortable: true,\r\n property: 'PerformanceMetrics/CTR',\r\n type: 'number',\r\n format: 'percentage-value',\r\n helpId: 'Pop_BA_AccountsGrid_CTR',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'AverageCPC',\r\n title: s$i18n.property('PerformanceMetrics', 'AverageCPC'),\r\n property: 'PerformanceMetrics/AverageCPC',\r\n sortable: true,\r\n type: 'number',\r\n helpId: 'Pop_BA_AccountsGrid_CPC',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'AveragePosition',\r\n title: s$i18n.property('PerformanceMetrics', 'AveragePosition'),\r\n property: 'PerformanceMetrics/AveragePosition',\r\n sortable: true,\r\n type: 'number',\r\n helpId: 'Page_CampaignGrids_AvgPosition',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'TopImpressionRate',\r\n title: s$i18n.property('PerformanceMetrics', 'TopImpressionRate'),\r\n property: 'PerformanceMetrics/TopImpressionRate',\r\n sortable: true,\r\n type: 'number',\r\n format: 'percentage-value',\r\n helpId: 'pop_BA_Reporting_Clarity_TopImpressionRate',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'AbsoluteTopImpressionRate',\r\n title: s$i18n.property('PerformanceMetrics', 'AbsoluteTopImpressionRate'),\r\n property: 'PerformanceMetrics/AbsoluteTopImpressionRate',\r\n sortable: true,\r\n type: 'number',\r\n format: 'percentage-value',\r\n helpId: 'pop_BA_Reporting_Clarity_AbsoluteTopImpressionRate',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'AverageCPM',\r\n title: s$i18n.property('PerformanceMetrics', 'AverageCPM'),\r\n property: 'PerformanceMetrics/AverageCPM',\r\n sortable: true,\r\n type: 'number',\r\n helpId: 'Page_CampaignGrids_AvgCPM',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'Spend',\r\n title: s$i18n.property('PerformanceMetrics', 'Spend'),\r\n property: 'PerformanceMetrics/Spend',\r\n sortable: true,\r\n type: 'number',\r\n helpId: 'Pop_BA_AccountsGrid_Spend',\r\n helpAriaLabelTextTemplate,\r\n }),\r\n usePartialConversions ? bingadsGridColumn({\r\n name: 'PartialConversionCPA',\r\n title: s$i18n.property('PerformanceMetrics', 'CPA'),\r\n property: 'PerformanceMetrics/PartialConversionCPA',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'Page_CampaignGrids_CPA',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'CPA',\r\n sourceSortableProperty: 'PerformanceMetrics/CPA',\r\n targetSortableProperty: 'PerformanceMetrics/PartialConversionCPA',\r\n },\r\n }) : bingadsGridColumn({\r\n name: 'CPA',\r\n title: s$i18n.property('PerformanceMetrics', 'CPA'),\r\n property: 'PerformanceMetrics/CPA',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'Page_CampaignGrids_CPA',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'PartialConversionCPA',\r\n sourceSortableProperty: 'PerformanceMetrics/PartialConversionCPA',\r\n targetSortableProperty: 'PerformanceMetrics/CPA',\r\n },\r\n }),\r\n usePartialConversions ? bingadsGridColumn({\r\n name: 'ConversionsCredit',\r\n title: s$i18n.property('PerformanceMetrics', 'Conversions'),\r\n property: 'PerformanceMetrics/ConversionsCredit',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'Pop_BA_AccountsGrid_Conv',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'Conversions',\r\n sourceSortableProperty: 'PerformanceMetrics/Conversions',\r\n targetSortableProperty: 'PerformanceMetrics/ConversionsCredit',\r\n },\r\n }) : bingadsGridColumn({\r\n name: 'Conversions',\r\n title: s$i18n.property('PerformanceMetrics', 'Conversions'),\r\n property: 'PerformanceMetrics/Conversions',\r\n sortable: true,\r\n type: 'number',\r\n format: 'integer',\r\n helpId: 'Pop_BA_AccountsGrid_Conv',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'ConversionsCredit',\r\n sourceSortableProperty: 'PerformanceMetrics/ConversionsCredit',\r\n targetSortableProperty: 'PerformanceMetrics/Conversions',\r\n },\r\n }),\r\n bingadsGridColumn({\r\n name: 'RevenueOnAdSpend',\r\n title: s$i18n.property('PerformanceMetrics', 'RevenueOnAdSpend'),\r\n property: 'PerformanceMetrics/RevenueOnAdSpend',\r\n sortable: true,\r\n type: 'number',\r\n format: 'percentage-value',\r\n helpId: 'Page_CampaignGrids_ReturnAdSpend',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'AdvertiserReportedRevenue',\r\n title: s$i18n.property('PerformanceMetrics', 'AdvertiserReportedRevenue'),\r\n property: 'PerformanceMetrics/AdvertiserReportedRevenue',\r\n sortable: true,\r\n type: 'number',\r\n helpId: 'Page_CampaignGrids_Revenue',\r\n helpAriaLabelTextTemplate,\r\n }),\r\n usePartialConversions ?\r\n bingadsGridColumn({\r\n name: 'PartialConversionRate',\r\n title: s$i18n.property('PerformanceMetrics', 'ConversionRate'),\r\n property: 'PerformanceMetrics/PartialConversionRate',\r\n sortable: true,\r\n type: 'number',\r\n format: 'percentage-value',\r\n helpId: 'Page_CampaignGrids_ConvRate',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'ConversionRate',\r\n sourceSortableProperty: 'PerformanceMetrics/ConversionRate',\r\n targetSortableProperty: 'PerformanceMetrics/PartialConversionRate',\r\n },\r\n }) : bingadsGridColumn({\r\n name: 'ConversionRate',\r\n title: s$i18n.property('PerformanceMetrics', 'ConversionRate'),\r\n property: 'PerformanceMetrics/ConversionRate',\r\n sortable: true,\r\n type: 'number',\r\n format: 'percentage-value',\r\n helpId: 'Page_CampaignGrids_ConvRate',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'PartialConversionRate',\r\n sourceSortableProperty: 'PerformanceMetrics/PartialConversionRate',\r\n targetSortableProperty: 'PerformanceMetrics/ConversionRate',\r\n },\r\n }),\r\n usePartialConversions ?\r\n bingadsGridColumn({\r\n name: 'AllConversionsCredit',\r\n title: s$i18n.property('PerformanceMetrics', 'AllConversions'),\r\n property: 'PerformanceMetrics/AllConversionsCredit',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'pop_BA_CampaignGrids_AllConv',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'AllConversions',\r\n sourceSortableProperty: 'PerformanceMetrics/AllConversions',\r\n targetSortableProperty: 'PerformanceMetrics/AllConversionsCredit',\r\n },\r\n }) : bingadsGridColumn({\r\n name: 'AllConversions',\r\n title: s$i18n.property('PerformanceMetrics', 'AllConversions'),\r\n property: 'PerformanceMetrics/AllConversions',\r\n sortable: true,\r\n type: 'number',\r\n format: 'integer',\r\n helpId: 'pop_BA_CampaignGrids_AllConv',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'AllConversionsCredit',\r\n sourceSortableProperty: 'PerformanceMetrics/AllConversionsCredit',\r\n targetSortableProperty: 'PerformanceMetrics/AllConversions',\r\n },\r\n }),\r\n usePartialConversions ?\r\n bingadsGridColumn({\r\n name: 'AllPartialConversionCPA',\r\n title: s$i18n.property('PerformanceMetrics', 'AllConversionCPA'),\r\n property: 'PerformanceMetrics/AllPartialConversionCPA',\r\n sortable: true,\r\n type: 'number',\r\n helpId: 'pop_BA_CampaignGrids_AllConvCPA',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'AllConversionCPA',\r\n sourceSortableProperty: 'PerformanceMetrics/AllConversionCPA',\r\n targetSortableProperty: 'PerformanceMetrics/AllPartialConversionCPA',\r\n },\r\n }) : bingadsGridColumn({\r\n name: 'AllConversionCPA',\r\n title: s$i18n.property('PerformanceMetrics', 'AllConversionCPA'),\r\n property: 'PerformanceMetrics/AllConversionCPA',\r\n sortable: true,\r\n type: 'number',\r\n helpId: 'pop_BA_CampaignGrids_AllConvCPA',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'AllPartialConversionCPA',\r\n sourceSortableProperty: 'PerformanceMetrics/AllPartialConversionCPA',\r\n targetSortableProperty: 'PerformanceMetrics/AllConversionCPA',\r\n },\r\n }),\r\n usePartialConversions ?\r\n bingadsGridColumn({\r\n name: 'AllPartialConversionRate',\r\n title: s$i18n.property('PerformanceMetrics', 'AllConversionRate'),\r\n property: 'PerformanceMetrics/AllPartialConversionRate',\r\n sortable: true,\r\n type: 'number',\r\n format: 'percentage-value',\r\n helpId: 'pop_BA_CampaignGrids_AllConvRate',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'AllConversionRate',\r\n sourceSortableProperty: 'PerformanceMetrics/AllConversionRate',\r\n targetSortableProperty: 'PerformanceMetrics/AllPartialConversionRate',\r\n },\r\n }) : bingadsGridColumn({\r\n name: 'AllConversionRate',\r\n title: s$i18n.property('PerformanceMetrics', 'AllConversionRate'),\r\n property: 'PerformanceMetrics/AllConversionRate',\r\n sortable: true,\r\n type: 'number',\r\n format: 'percentage-value',\r\n helpId: 'pop_BA_CampaignGrids_AllConvRate',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'AllPartialConversionRate',\r\n sourceSortableProperty: 'PerformanceMetrics/AllPartialConversionRate',\r\n targetSortableProperty: 'PerformanceMetrics/AllConversionRate',\r\n },\r\n }),\r\n bingadsGridColumn({\r\n name: 'AllConversionAdvertiserReportedRevenue',\r\n title: s$i18n.property('PerformanceMetrics', 'AllConversionAdvertiserReportedRevenue'),\r\n property: 'PerformanceMetrics/AllConversionAdvertiserReportedRevenue',\r\n sortable: true,\r\n type: 'number',\r\n helpId: 'pop_BA_CampaignGrids_AllConvRevenue',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'AllConversionRevenueOnAdSpend',\r\n title: s$i18n.property('PerformanceMetrics', 'AllConversionRevenueOnAdSpend'),\r\n property: 'PerformanceMetrics/AllConversionRevenueOnAdSpend',\r\n sortable: true,\r\n type: 'number',\r\n helpId: 'pop_BA_CampaignGrids_AllConvROAS',\r\n helpAriaLabelTextTemplate,\r\n }), ...IsViewThroughConversionEnabled ? [\r\n usePartialConversions ?\r\n bingadsGridColumn({\r\n name: 'ViewThroughConversionsCredit',\r\n title: s$i18n.property('PerformanceMetrics', 'ViewThroughConversions'),\r\n property: 'PerformanceMetrics/ViewThroughConversionsCredit',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'pop_BA_CampaignGrids_ViewThrough',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'ViewThroughConversions',\r\n sourceSortableProperty: 'PerformanceMetrics/ViewThroughConversions',\r\n targetSortableProperty: 'PerformanceMetrics/ViewThroughConversionsCredit',\r\n },\r\n }) : bingadsGridColumn({\r\n name: 'ViewThroughConversions',\r\n title: s$i18n.property('PerformanceMetrics', 'ViewThroughConversions'),\r\n property: 'PerformanceMetrics/ViewThroughConversions',\r\n sortable: true,\r\n type: 'number',\r\n format: 'integer',\r\n helpId: 'pop_BA_CampaignGrids_ViewThrough',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'ViewThroughConversionsCredit',\r\n sourceSortableProperty: 'PerformanceMetrics/ViewThroughConversionsCredit',\r\n targetSortableProperty: 'PerformanceMetrics/ViewThroughConversions',\r\n },\r\n })] : [],\r\n ...IsViewThroughConversionsRevenueEnabled ? [\r\n bingadsGridColumn({\r\n name: 'ViewThroughConversionsRevenue',\r\n title: s$i18n.property('PerformanceMetrics', 'ViewThroughConversionsRevenue'),\r\n property: 'PerformanceMetrics/ViewThroughConversionsRevenue',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'pop_BA_Reporting_Clarity_ViewThroughConvRevenue',\r\n helpAriaLabelTextTemplate,\r\n }),\r\n usePartialConversions ?\r\n bingadsGridColumn({\r\n name: 'ViewThroughPartialConversionsCPA',\r\n title: s$i18n.property('PerformanceMetrics', 'ViewThroughConversionsCPA'),\r\n property: 'PerformanceMetrics/ViewThroughPartialConversionsCPA',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'pop_BA_Reporting_Clarity_ViewThroughConvCPA',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'ViewThroughConversionsCPA',\r\n sourceSortableProperty: 'PerformanceMetrics/ViewThroughConversionsCPA',\r\n targetSortableProperty: 'PerformanceMetrics/ViewThroughPartialConversionsCPA',\r\n },\r\n }) : bingadsGridColumn({\r\n name: 'ViewThroughConversionsCPA',\r\n title: s$i18n.property('PerformanceMetrics', 'ViewThroughConversionsCPA'),\r\n property: 'PerformanceMetrics/ViewThroughConversionsCPA',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'pop_BA_Reporting_Clarity_ViewThroughConvCPA',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'ViewThroughPartialConversionsCPA',\r\n sourceSortableProperty: 'PerformanceMetrics/ViewThroughPartialConversionsCPA',\r\n targetSortableProperty: 'PerformanceMetrics/ViewThroughConversionsCPA',\r\n },\r\n }),\r\n bingadsGridColumn({\r\n name: 'ViewThroughConversionsReturnOnAdSpend',\r\n title: s$i18n.property('PerformanceMetrics', 'ViewThroughConversionsReturnOnAdSpend'),\r\n property: 'PerformanceMetrics/ViewThroughConversionsReturnOnAdSpend',\r\n sortable: true,\r\n type: 'number',\r\n format: 'percentage-value',\r\n helpId: 'pop_BA_Reporting_Clarity_ViewThroughConvReturnOnAdSpend',\r\n helpAriaLabelTextTemplate,\r\n }),\r\n usePartialConversions ?\r\n bingadsGridColumn({\r\n name: 'ViewThroughPartialConversionsRate',\r\n title: s$i18n.property('PerformanceMetrics', 'ViewThroughConversionsRate'),\r\n property: 'PerformanceMetrics/ViewThroughPartialConversionsRate',\r\n sortable: true,\r\n type: 'number',\r\n format: 'percentage-value',\r\n helpId: 'pop_BA_Reporting_Clarity_ViewThroughConvRate',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'ViewThroughConversionsRate',\r\n sourceSortableProperty: 'PerformanceMetrics/ViewThroughConversionsRate',\r\n targetSortableProperty: 'PerformanceMetrics/ViewThroughPartialConversionsRate',\r\n },\r\n }) : bingadsGridColumn({\r\n name: 'ViewThroughConversionsRate',\r\n title: s$i18n.property('PerformanceMetrics', 'ViewThroughConversionsRate'),\r\n property: 'PerformanceMetrics/ViewThroughConversionsRate',\r\n sortable: true,\r\n type: 'number',\r\n format: 'percentage-value',\r\n helpId: 'pop_BA_Reporting_Clarity_ViewThroughConvRate',\r\n helpAriaLabelTextTemplate,\r\n columnConversion: {\r\n sourceColumnName: 'ViewThroughPartialConversionsRate',\r\n sourceSortableProperty: 'PerformanceMetrics/ViewThroughPartialConversionsRate',\r\n targetSortableProperty: 'PerformanceMetrics/ViewThroughConversionsRate',\r\n },\r\n }),\r\n ] : [],\r\n bingadsGridColumn({\r\n name: 'VideoViews',\r\n title: s$i18n.property('PerformanceMetrics', 'VideoViews'),\r\n property: 'PerformanceMetrics/VideoViews',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'Page_CampaignGrids_VideoViews',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'ViewThroughRate',\r\n title: s$i18n.property('PerformanceMetrics', 'ViewThroughRate'),\r\n property: 'PerformanceMetrics/ViewThroughRate',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'Page_CampaignGrids_ViewThroughRate',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'AverageCPV',\r\n title: s$i18n.property('PerformanceMetrics', 'AverageCPV'),\r\n property: 'PerformanceMetrics/AverageCPV',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'Page_CampaignGrids_AverageCPV',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'TotalWatchTimeInMS',\r\n title: s$i18n.property('PerformanceMetrics', 'TotalWatchTimeInMS'),\r\n property: 'PerformanceMetrics/TotalWatchTimeInMS',\r\n sortable: true,\r\n type: 'number',\r\n format: 'thousandth',\r\n helpId: 'Page_CampaignGrids_TotalWatchTime',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'AverageWatchTimePerImpression',\r\n title: s$i18n.property('PerformanceMetrics', 'AverageWatchTimePerImpression'),\r\n property: 'PerformanceMetrics/AverageWatchTimePerImpression',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'Page_CampaignGrids_AverageWatchTimePerImpression',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'AverageWatchTimePerVideoView',\r\n title: s$i18n.property('PerformanceMetrics', 'AverageWatchTimePerVideoView'),\r\n property: 'PerformanceMetrics/AverageWatchTimePerVideoView',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'Page_CampaignGrids_AverageWatchTimePerVideoView',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'VideoViewsAt25Percent',\r\n title: s$i18n.property('PerformanceMetrics', 'VideoViewsAt25Percent'),\r\n property: 'PerformanceMetrics/VideoViewsAt25Percent',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'Page_CampaignGrids_VideoViewsAt25Percent',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'VideoViewsAt50Percent',\r\n title: s$i18n.property('PerformanceMetrics', 'VideoViewsAt50Percent'),\r\n property: 'PerformanceMetrics/VideoViewsAt50Percent',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'Page_CampaignGrids_VideoViewsAt50Percent',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'VideoViewsAt75Percent',\r\n title: s$i18n.property('PerformanceMetrics', 'VideoViewsAt75Percent'),\r\n property: 'PerformanceMetrics/VideoViewsAt75Percent',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'Page_CampaignGrids_VideoViewsAt75Percent',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'CompletedVideoViews',\r\n title: s$i18n.property('PerformanceMetrics', 'CompletedVideoViews'),\r\n property: 'PerformanceMetrics/CompletedVideoViews',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'Page_CampaignGrids_CompletedVideoViews',\r\n helpAriaLabelTextTemplate,\r\n }), bingadsGridColumn({\r\n name: 'VideoCompletionRate',\r\n title: s$i18n.property('PerformanceMetrics', 'VideoCompletionRate'),\r\n property: 'PerformanceMetrics/VideoCompletionRate',\r\n sortable: true,\r\n type: 'number',\r\n format: 'decimal',\r\n helpId: 'Page_CampaignGrids_VideoCompletionRate',\r\n helpAriaLabelTextTemplate,\r\n })];\r\n};\r\n\r\nfunction getDeliveryStatus({\r\n DeliveryStatus,\r\n GeoCodeStatus,\r\n i18n,\r\n}) {\r\n const DeliveryStatusError = ['EditorialRejected', 'EditorialAppealRejected', 'CAMEditorialRejected', 'CreditCardExpired', 'IOExceeded', 'PaymentInformationMissing', 'Other', 'CampaignBudgetPaused', 'MigrationPaused', 'AdGroupDeleted', 'AdGroupExpired', 'CampaignDeleted'];\r\n const DeliveryStatusNormal = ['Eligible', 'EditorialApprovedLimited', 'EditorialApprovedLimitedAppealRejected', 'Incomplete', 'InlineOpportunity'];\r\n const GeoCodeStatusEnum = ['Pending', 'Complete', 'Invalid', 'Failed'];\r\n const DeliveryStatusNoGlyph = ['Eligible', 'BudgetSuggestions', 'Incomplete', 'CampaignBudgetPaused', 'GeoCodingIncomplete', 'InlineOpportunity'];\r\n const labelDeliveryStatus = `Label_DeliveryStatus_${DeliveryStatus}`;\r\n\r\n let ret = {\r\n i18n,\r\n deliveryStatus: labelDeliveryStatus,\r\n };\r\n\r\n if (!DeliveryStatus || DeliveryStatusNormal.indexOf(DeliveryStatus) > -1) {\r\n ret.status = 'normal';\r\n } else if (DeliveryStatusError.indexOf(DeliveryStatus) > -1) {\r\n ret.status = 'error';\r\n } else {\r\n ret.status = 'warning';\r\n }\r\n\r\n if (DeliveryStatus === 'GeoCodingIncomplete') {\r\n const GeoStatus = GeoCodeStatusEnum.indexOf(GeoCodeStatus);\r\n\r\n ret.deliveryStatus = `${ret.deliveryStatus}_${GeoStatus}`;\r\n }\r\n\r\n if (DeliveryStatusNoGlyph.indexOf(DeliveryStatus) === -1) {\r\n ret.hasGlyph = true;\r\n }\r\n\r\n return ret;\r\n}\r\n\r\nexport function getDeliveryColumn({ isForVNext, i18n }) {\r\n return bingadsGridColumn({\r\n name: 'Delivery',\r\n property: 'AdExtension',\r\n sortable: 'AdExtension/Delivery',\r\n type: 'string',\r\n title: s$i18n.property('AdExtension', 'Delivery'),\r\n template: (local) => {\r\n if (_.isEmpty(local.value) || _.isEmpty(local.value.Delivery)) {\r\n return '-';\r\n }\r\n\r\n return deliveryStatusTemplate({\r\n DeliveryTemplates: getDeliveryStatus({\r\n DeliveryStatus: local.value.Delivery,\r\n GeoCodeStatus: local.value.GeoCodeStatus,\r\n IsAppealable: _.get(local, ['AdExtensionItemIdToEditorialReasonCollection', 'Value', 'IsAppealable']),\r\n i18n: i18nGlobal,\r\n }),\r\n isForVNext,\r\n });\r\n },\r\n bodyClasses: ['col-Delivery'],\r\n helpId: 'Page_CampaignGrids_Delivery',\r\n helpAriaLabelTextTemplate: getAriaLabelTextTemplate(i18n),\r\n });\r\n}\r\n\r\nconst getEntityColumns = (i18n) => {\r\n return [bingadsGridColumn({\r\n name: 'Status',\r\n sortable: true,\r\n title: s$i18n.property('Campaign', 'Status'),\r\n template: (local) => {\r\n if (_.isEmpty(local.value)) {\r\n return ' ';\r\n }\r\n\r\n return statusIconColumnTemplate({\r\n Status: local.value,\r\n });\r\n },\r\n }), bingadsGridColumn({\r\n name: 'CampaignName',\r\n property: (item) => {\r\n return _.extend(_.pick(item.Campaign, 'Id', 'Name', 'BaseCampaignName'), {\r\n IsDeleted: _.result(item.AdExtension, 'Delivery', '') === 'CampaignDeleted',\r\n });\r\n },\r\n type: 'string',\r\n sortable: 'Campaign/Name',\r\n title: s$i18n.type('Campaign'),\r\n bodyClasses: ['col-CampaignName'],\r\n }), bingadsGridColumn({\r\n name: 'AdGroupName',\r\n property: (item) => {\r\n return _.defaults(_.pick(item.AdGroup, 'Id', 'Name'), {\r\n CampaignId: _.result(item.Campaign, 'Id', ''),\r\n IsDeleted: _.result(item.AdExtension, 'Delivery', '') === 'AdGroupDeleted' || _.result(item.AdExtension, 'Delivery', '') === 'CampaignDeleted',\r\n });\r\n },\r\n type: 'string',\r\n sortable: 'AdGroup/Name',\r\n title: s$i18n.type('Adgroup'),\r\n bodyClasses: ['col-AdGroupName'],\r\n }), bingadsGridColumn({\r\n name: 'DisplayBiddingStrategyType',\r\n sortable: true,\r\n title: s$i18n.property('Campaign', 'DisplayBiddingStrategyType'),\r\n helpId: 'pop_BA_CampaignGrids_BidStrategy',\r\n helpAriaLabelTextTemplate: getAriaLabelTextTemplate(i18n),\r\n template: (local) => {\r\n if (_.isEmpty(local.value)) {\r\n return ' ';\r\n }\r\n\r\n return s$i18n.value('Campaign', 'DisplayBiddingStrategyType', local.value);\r\n },\r\n }), bingadsGridColumn({\r\n name: 'CampaignType',\r\n property: 'Campaign/CampaignType',\r\n sortable: 'Campaign/CampaignType',\r\n title: s$i18n.property('Campaign', 'CampaignType'),\r\n template: (local) => {\r\n if (_.isEmpty(local.value)) {\r\n return ' ';\r\n }\r\n\r\n return s$i18n.value('Campaign', 'CampaignType', local.value);\r\n },\r\n }), getDeliveryColumn({ isForVNext: false, i18n })];\r\n};\r\n\r\nconst Performance = {\r\n title: s$i18n.type('Performance'),\r\n columns: ['Clicks', 'Impressions', 'CTR', 'AverageCPC', 'AveragePosition', 'AverageCPM', 'Spend'],\r\n};\r\n\r\nconst Conversions = {\r\n title: s$i18n.type('Conversions'),\r\n columns: applyPartialConversionColumnName(config.get('Permissions'), [\r\n 'CPA',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'RevenueOnAdSpend',\r\n 'AdvertiserReportedRevenue',\r\n 'AllConversionCPA',\r\n 'AllConversions',\r\n 'AllConversionRate',\r\n 'AllConversionRevenueOnAdSpend',\r\n 'AllConversionAdvertiserReportedRevenue',\r\n 'ViewThroughConversions',\r\n 'ViewThroughConversionsRevenue',\r\n 'ViewThroughConversionsCPA',\r\n 'ViewThroughConversionsReturnOnAdSpend',\r\n 'ViewThroughConversionsRate']),\r\n};\r\n\r\nconst getColumnChooser = (choosers = {}, appendList = [], blackList = []) => {\r\n let ret = _.clone(choosers);\r\n\r\n ret.columns = _.chain(ret.columns)\r\n .union(appendList)\r\n .difference(blackList)\r\n .value();\r\n return ret;\r\n};\r\n\r\nexport function getPerformanceColumnChooser(appendList = [], blackList = []) {\r\n return getColumnChooser(Performance, appendList, blackList);\r\n}\r\n\r\nexport function getConversionsColumnChooser(appendList = [], blackList = []) {\r\n const permissions = config.get('Permissions');\r\n const {\r\n IsViewThroughConversionEnabled,\r\n IsViewThroughConversionsRevenueEnabled,\r\n } = permissions;\r\n\r\n const combinedBlackList = applyPartialConversionColumnName(permissions, [\r\n ...IsViewThroughConversionEnabled ? [] : ['ViewThroughConversions'],\r\n ...IsViewThroughConversionsRevenueEnabled ? [] : ['ViewThroughConversionsRevenue', 'ViewThroughConversionsCPA', 'ViewThroughConversionsReturnOnAdSpend', 'ViewThroughConversionsRate'],\r\n ]);\r\n\r\n return getColumnChooser(Conversions, appendList, [...blackList, ...combinedBlackList]);\r\n}\r\n\r\nexport function getSharedColumns(names = [], i18n = null) {\r\n let ret = _.filter(getEntityColumns(i18n), (item) => {\r\n return _.contains(names, item.name);\r\n });\r\n\r\n const performanceMetrics = getPerformanceMetrics(i18n);\r\n\r\n if (_.contains(names, 'PerformanceMetrics')) { //if contains 'PerformanceMetrics' and 'Clicks' at the same time, only add all PerformanceMetrics columns\r\n ret = ret.concat(performanceMetrics);\r\n } else {\r\n const biColumns = _.filter(performanceMetrics, (item) => {\r\n return _.contains(names, item.name);\r\n });\r\n\r\n ret = ret.concat(biColumns);\r\n }\r\n\r\n return ret;\r\n}\r\n\r\nexport function getSharedCustomizedColumns(items = [], i18n = null) {\r\n const names = _.pluck(items, 'name');\r\n let ret = _.filter(getEntityColumns(i18n), (item) => {\r\n return _.contains(names, item.name);\r\n });\r\n\r\n _.each(items, (item) => {\r\n let column = _.find(ret, {name: item.name});\r\n\r\n if (column) {\r\n column.template = (local) => {\r\n const verification = item.name === 'CampaignName' && local.value.Id ? true : _.isNumber(local.value.CampaignId);\r\n\r\n if (_.isEmpty(local.value) || !verification) {\r\n return '-';\r\n }\r\n\r\n let ariaLabel;\r\n\r\n if (i18n) {\r\n if (item.name === 'CampaignName') {\r\n ariaLabel = i18n.getString('Click to scope to campaign {{campaignName}}').replace('{{campaignName}}', local.value.Name);\r\n } else if (item.name === 'AdGroupName') {\r\n ariaLabel = i18n.getString('Click to scope to ad group {{adGroupName}}').replace('{{adGroupName}}', local.value.Name);\r\n }\r\n }\r\n\r\n return item.customizedTemplate({\r\n name: local.value.Name,\r\n parentName: local.value.BaseCampaignName,\r\n cid: _.result(config.get('CurrentCustomer'), 'Id'),\r\n aid: _.result(config.get('CurrentAccount'), 'Id'),\r\n cmpid: item.name === 'CampaignName' ? local.value.Id : local.value.CampaignId,\r\n adgid: local.value.Id,\r\n type: item.associationType,\r\n isDeleted: local.value.IsDeleted,\r\n ariaLabel,\r\n });\r\n };\r\n }\r\n });\r\n\r\n return ret;\r\n}\r\n\r\nexport function getFilterEntity(schema, filterList, includePerformanceMetrics = true) {\r\n let filterEntity = filterOptionsFromSchema(schema);\r\n\r\n filterEntity.fields = _.filter(filterEntity.fields, (field) => {\r\n return _.contains(filterList, field.property) || (includePerformanceMetrics && field.property.indexOf('PerformanceMetrics/') === 0);\r\n });\r\n\r\n //override name\r\n filterEntity.fields = _.map(filterEntity.fields, (field) => {\r\n if (field.property.indexOf('PerformanceMetrics/') !== 0) {\r\n field.name = field.property.replace(/\\//g, '');\r\n }\r\n return field;\r\n });\r\n\r\n //override field DisplayBiddingStrategyType\r\n let bidStrategyOption = _.findWhere(filterEntity.fields, {property: 'DisplayBiddingStrategyType'});\r\n\r\n if (!_.isEmpty(bidStrategyOption)) {\r\n const bidStrategyType = schema.properties.DisplayBiddingStrategyType.enum;\r\n const enumValues = _.map(bidStrategyType, (type) => {\r\n return mapEnumValueForFilter('BiddingStrategyType', type);\r\n });\r\n\r\n _.extend(bidStrategyOption, {\r\n localized: _.object(enumValues, _.map(bidStrategyType, (type) => {\r\n return s$i18n.value('Campaign', 'DisplayBiddingStrategyType', type);\r\n })),\r\n operators: ['eq'],\r\n enum: enumValues,\r\n });\r\n }\r\n\r\n return filterEntity;\r\n}\r\n","import appConfig from '@bingads-webui-component-legacy/config/index';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport stateManager from '@bingads-webui-component-legacy/statemanager/campaignStateManager';\r\nimport {getCreatedBy, getFrequency, getExpression,\r\n getNotificationType, getEditLink} from './rule-mapper';\r\nimport { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport sessionStore from '@bingads-webui-component-legacy/js-data-storage/session-storage';\r\nimport { getFilters } from '@bingads-webui-component-legacy/bingads-grid/service/filter-preferences';\r\nimport cacheService from '@bingads-webui-static-legacy/cache-service';\r\nimport jsdataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport odata from '@bingads-webui-static-legacy/communication/channel/odata';\r\nimport preferenceService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport dataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport * as customColumnPreference from '@bingads-webui-component-legacy/bingads-grid/service/custom-column-preferences';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/bulk-operation');\r\nconst legacyGlobalI18n = window.globalLegacyI18n.get('component/i18n/loader!legacy/global');\r\nconst schemaI18nCampaign = window.globalLegacyI18n.get('$/schema-i18n!campaign');\r\n\r\nexport const deps = {\r\n i18n,\r\n appConfig,\r\n logger,\r\n stateManager,\r\n getCreatedBy,\r\n getFrequency,\r\n getExpression,\r\n getNotificationType,\r\n getEditLink,\r\n bingadsGridColumn,\r\n jsdataCampaign,\r\n preferenceService,\r\n legacyGlobalI18n,\r\n sessionStore,\r\n getFilters,\r\n schemaI18nCampaign,\r\n cacheService,\r\n dataContextManager,\r\n odata,\r\n i18nErrors,\r\n customColumnPreference,\r\n};\r\n","import _ from 'underscore';\r\nimport kendo from '@bingads-webui/kendo/kendo.core';\r\nimport cronParser from '@bingads-webui-static-legacy/cron';\r\nimport ruleAuthoringOptions from '@bingads-webui-static-legacy/schema/automatedRules/ruleAuthoringOptions';\r\nimport odataParser from '@bingads-webui-static-legacy/bulk-edit/bulkEdit/bulkEditi18n';\r\nimport JobModel from '@bingads-webui-campaign-legacy/bulk-operation/util/bulk-edit-job';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/bulk-operation');\r\nconst i18nGlobal = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\n\r\n// [Todo: hezhan] check no result string of projection-grid, align the config.\r\nconst noData = '-';\r\n\r\nexport function getDateTime(date) {\r\n const offset = -date.getTimezoneOffset();\r\n const offsetStr = offset === 0 ?\r\n ' (GMT)' :\r\n ` (GMT${\r\n offset >= 0 ? '+' : '-'\r\n }${kendo.toString(Math.abs(offset / 60), '00')\r\n }:${\r\n kendo.toString(Math.abs(offset % 60), '00')\r\n })`;\r\n\r\n return !_.isUndefined(date) && !_.isNull(date) ?\r\n i18n.formatDate(date) + offsetStr :\r\n noData;\r\n}\r\n\r\nexport function getCreatedBy(taskItem) {\r\n return {\r\n modifiedBy: taskItem.ModifiedBy.Name,\r\n modifiedAt: i18n.formatDate(new Date(taskItem.ModifiedAt), { datetime: 'full' }),\r\n };\r\n}\r\n\r\nexport function getFrequency(taskItem) {\r\n if (_.isNull(taskItem) || _.isNull(taskItem.Cron)) {\r\n return noData;\r\n }\r\n\r\n let cronString = '';\r\n let timeZone = '';\r\n let dateRange = '';\r\n const model = cronParser.parse(taskItem.Cron);\r\n\r\n if (model) {\r\n let hourString = i18nGlobal.getString(`DailyOptions_${model.hour}`);\r\n let date = new Date(model.year, model.month - 1, model.dayOfMonth, 0, 0, 0, 0);\r\n\r\n switch (cronParser.getFrequency()) {\r\n case cronParser.frequency.ONCE:\r\n cronString = i18n.getString('AutomatedRules_Frequency_WeeklyTemplate').replace('{0}', i18n.getString('AutomatedRules_FrequencyGrain_Once'));\r\n cronString = cronString.replace('{1}', date.toLocaleDateString());\r\n cronString = cronString.replace('{2}', hourString);\r\n break;\r\n case cronParser.frequency.MONTHLY:\r\n cronString = i18n.getString('AutomatedRules_Frequency_MonthlyTemplate').replace('{0}', i18n.getString('AutomatedRules_FrequencyGrain_Monthly'));\r\n cronString = cronString.replace('{1}', model.dayOfMonth);\r\n cronString = cronString.replace('{2}', hourString);\r\n break;\r\n case cronParser.frequency.WEEKLY:\r\n cronString = i18n.getString('AutomatedRules_Frequency_WeeklyTemplate').replace('{0}', i18n.getString('AutomatedRules_FrequencyGrain_Weekly'));\r\n cronString = cronString.replace('{1}', i18nGlobal.getString(`WeeklyOptions_${model.dayOfWeek}`));\r\n cronString = cronString.replace('{2}', hourString);\r\n break;\r\n case cronParser.frequency.DAILY:\r\n cronString = i18n.getString('AutomatedRules_Frequency_DailyTemplate').replace('{0}', i18n.getString('AutomatedRules_FrequencyGrain_Daily'));\r\n cronString = cronString.replace('{1}', hourString);\r\n break;\r\n case cronParser.frequency.HOURLY:\r\n cronString = i18n.getString('AutomatedRules_FrequencyGrain_Hourly');\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (taskItem.TimeZoneId > 0) {\r\n timeZone = i18nGlobal.getString(`TimeZoneId_${taskItem.TimeZoneId}`);\r\n }\r\n if (taskItem.Selection && taskItem.Selection.DateRange && taskItem.Selection.DateRange.DateRangePreset) {\r\n dateRange = i18n.getString('AutomatedRules_DataDateRange_Template').replace('{0}', i18nGlobal.getString(`DataDateRangeOptions_${taskItem.Selection.DateRange.DateRangePreset}`).toLowerCase());\r\n }\r\n\r\n return {\r\n cronString,\r\n timeZone,\r\n dateRange,\r\n };\r\n}\r\n\r\nexport function getNotificationType(taskItem) {\r\n if (_.isNull(taskItem) || _.isNull(taskItem.NotificationType)) {\r\n return noData;\r\n }\r\n const key = 'NotificationType_'.concat(taskItem.NotificationType === ruleAuthoringOptions.emailOptions.OnChangeOrError ? 'OnChangeOrError' : taskItem.NotificationType);\r\n\r\n return i18n.getString(key);\r\n}\r\n\r\nfunction isEmailRule(model) {\r\n\r\n if (!model || model.get('BatchAction').Actions.length !== 1) {\r\n return false;\r\n } else {\r\n return model.get('BatchAction').Actions[0]['@odata.type'] === '#Model.QueryOnlyAction';\r\n }\r\n}\r\n\r\nexport function getExpression(taskItem) {\r\n if (_.isNull(taskItem)) {\r\n return noData;\r\n }\r\n\r\n const tempModel = new JobModel(taskItem);\r\n const desc = odataParser.getRuleSelection(tempModel, 4);\r\n const summary = isEmailRule(tempModel) ? {summary: i18n.getString('AutomatedRules_RulesManagementGrid_EmailActionDisplay')} : odataParser.getJobDescription(tempModel);\r\n\r\n const result = {};\r\n\r\n if (summary) {\r\n _.defaults(result, summary);\r\n }\r\n if (desc) {\r\n _.defaults(result, { desc });\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function getEditLink(taskItem) {\r\n const actionName = taskItem.State === 'Deleted' ? i18n.getString('AutomatedRules_RulesManagementGrid_CreateSimilarRule') : i18n.getString('AutomatedRules_RulesManagementGrid_EditRule');\r\n\r\n return {\r\n id: taskItem.Id,\r\n actionName,\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport odataParser from '@bingads-webui-static-legacy/bulk-edit/bulkEdit/bulkEditi18n';\r\nimport gridFilterSerializer from '@bingads-webui-campaign-legacy/bulk-operation/util/grid-filter-serializer';\r\nimport { getTitlePreviewFromJson, getMoreTitleHintFromJson } from '@bingads-webui-campaign/summary-grid-helper';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/bulk-operation');\r\n\r\nexport function getStartTime(jobModel) {\r\n return i18n.formatDate(jobModel.get('CreationTime'), {\r\n datetime: 'short',\r\n });\r\n}\r\n\r\nexport function getDescription(jobModel) {\r\n const description = odataParser.getJobDescription(jobModel);\r\n\r\n return {\r\n summary: description.summary,\r\n args: description.args,\r\n };\r\n}\r\n\r\nconst entityMap = {\r\n 'Campaign': {\r\n targetTab: 'Campaign',\r\n queryParts: ['campaigns'],\r\n },\r\n 'Keyword': {\r\n targetTab: 'Keywords',\r\n queryParts: ['keywords'],\r\n },\r\n 'AdGroup': {\r\n targetTab: 'AdGroup',\r\n queryParts: ['adgroups'],\r\n },\r\n 'Ad': {\r\n targetTab: 'Ads',\r\n queryParts: ['ads'],\r\n },\r\n 'AdGroupAudienceAssociation': {\r\n targetTab: 'AudiencesAssociation',\r\n queryParts: ['audiences'],\r\n },\r\n 'AudienceAssociation': {\r\n targetTab: 'AudiencesAssociation',\r\n queryParts: ['audiences'],\r\n },\r\n 'DsaTarget': {\r\n targetTab: 'AutoTargets',\r\n queryParts: ['autotargets'],\r\n },\r\n};\r\n\r\nexport function getScopeCallback(jobModel) {\r\n const filter = gridFilterSerializer.fromDescription(jobModel.get('Description'));\r\n const entity = jobModel.get('Entity');\r\n const campaign = jobModel.get('Campaign');\r\n const adgroup = jobModel.get('AdGroup');\r\n const entityObj = _.result(entityMap, entity, {\r\n targetTab: 'Campaign',\r\n queryParts: ['campaigns'],\r\n });\r\n const queryParts = entityObj.queryParts;\r\n let routeArgs;\r\n let routeUrl;\r\n\r\n if (filter && filter.FilterExpressions) {\r\n queryParts.push(`f-${gridFilterSerializer.toQueryString(filter.FilterExpressions)}`);\r\n }\r\n\r\n if (entity !== 'Campaign' && campaign && campaign.Id) {\r\n const campaignId = campaign.Id;\r\n let adgroupId;\r\n\r\n queryParts.push(campaignId);\r\n if (adgroup && adgroup.ID) {\r\n adgroupId = adgroup.ID;\r\n queryParts.push(adgroupId);\r\n }\r\n routeArgs = {\r\n 'campaign_id': campaignId,\r\n 'adgroup_id': adgroupId,\r\n };\r\n\r\n\r\n }\r\n\r\n if (filter && filter.FilterExpressions) {\r\n return _.bind(window.App.router.navigate, window.App.router, queryParts.join('/'));\r\n } else {\r\n routeUrl = window.App.router_new.legacy_tab_to_url(entityObj.targetTab);\r\n return _.bind(window.App.navigate, window.App, routeUrl, { param: routeArgs });\r\n }\r\n}\r\n\r\nexport function getSelection(jobModel, vnextInfo) {\r\n const selection = odataParser.getJobSelection(jobModel);\r\n let scopeCallback = !selection || selection.idBased || vnextInfo ? null : getScopeCallback(jobModel);\r\n\r\n return {\r\n header: selection.header,\r\n scope: selection.scope,\r\n idBased: selection.idBased,\r\n filter: selection.filter,\r\n footer: selection.footer,\r\n scopeCallback,\r\n isForVnext: !!vnextInfo,\r\n };\r\n}\r\n\r\nfunction entityToObject(entityKey) {\r\n const keys = _.pluck(entityKey || [], 'Key');\r\n const values = _.pluck(entityKey || [], 'Value');\r\n\r\n return _.object(keys, values);\r\n}\r\n\r\nfunction getCampaignLink(campaignId) {\r\n return `#/customer/:customer_id/account/:account_id/campaign/${campaignId}/adgroup`;\r\n}\r\n\r\nfunction getUiNextCampaignLink(campaignId, scope) {\r\n const {\r\n values: {\r\n cid,\r\n aid,\r\n },\r\n } = scope;\r\n\r\n return `/campaign/vnext/adgroups?aid=${aid}&cid=${cid}&campaignId=${campaignId}`;\r\n}\r\n\r\nfunction getAdgroupLink({\r\n CampaignId, AdGroupId, AdTitle, AdType,\r\n}) {\r\n let subPath = 'keyword';\r\n\r\n if (_.isString(AdTitle) || AdType === 'Responsive') {\r\n subPath = 'ad';\r\n }\r\n\r\n return `#/customer/:customer_id/account/:account_id/campaign/${CampaignId}/adgroup/${AdGroupId}/${subPath}`;\r\n}\r\n\r\nfunction getUiNextAdgroupLink({\r\n CampaignId, AdGroupId, AdTitle, AdType,\r\n}, scope) {\r\n const {\r\n values: {\r\n cid,\r\n aid,\r\n },\r\n } = scope;\r\n let subPath = 'keywords';\r\n\r\n if (_.isString(AdTitle) || AdType === 'Responsive') {\r\n subPath = 'ads';\r\n }\r\n\r\n return `/campaign/vnext/${subPath}?aid=${aid}&cid=${cid}&campaignId=${CampaignId}&adGroupId=${AdGroupId}`;\r\n}\r\n\r\nconst entityKeyMap = {\r\n 'Campaign': 'CampaignName',\r\n 'AdGroup': 'AdgroupName',\r\n 'Keyword': 'Keyword',\r\n 'Ad': 'AdTitle',\r\n 'AdGroupAudienceAssociation': 'AudienceName',\r\n 'AudienceAssociation': 'AudienceName',\r\n 'DsaTarget': 'AdgroupDsaTargetCriterionName',\r\n 'Hotel': 'HotelName',\r\n 'HotelGroup': 'HotelGroupName',\r\n 'PerformanceTarget': 'PerformanceTargetName',\r\n};\r\n\r\nfunction getEntityKeyField(entityType) {\r\n return entityKeyMap[entityType];\r\n}\r\n\r\nexport function getEntityWrapper(jobModel, vnextInfo) {\r\n const entityKeyField = getEntityKeyField(jobModel.get('Entity'));\r\n const isForVnext = !!vnextInfo;\r\n\r\n return function(bulkEditResult) {\r\n // [todo: hezhan] bug 741286, double check the logic here to origin author\r\n if (!_.isNull(bulkEditResult.EntityKey) && !_.isUndefined(bulkEditResult.EntityKey) && bulkEditResult.EntityKey.length > 1) {\r\n const dictionary = entityToObject(bulkEditResult.EntityKey);\r\n let entityName;\r\n let moreTitleHint;\r\n\r\n if (_.isUndefined(dictionary.AdHeadlines)) {\r\n entityName = entityKeyField && dictionary[entityKeyField];\r\n } else {\r\n entityName = getTitlePreviewFromJson(dictionary.AdHeadlines);\r\n moreTitleHint = getMoreTitleHintFromJson(dictionary.AdHeadlines, i18n);\r\n }\r\n\r\n return {\r\n campaign: {\r\n name: dictionary.CampaignName,\r\n url: isForVnext ?\r\n getUiNextCampaignLink(dictionary.CampaignId, vnextInfo.scope) :\r\n getCampaignLink(dictionary.CampaignId),\r\n id: dictionary.CampaignId,\r\n ariaLabel: i18n.getString('Click to scope to campaign {{campaignName}}', { campaignName: dictionary.CampaignName }),\r\n },\r\n adGroup: {\r\n name: dictionary.AdgroupName,\r\n url: isForVnext ?\r\n getUiNextAdgroupLink(_.pick(dictionary, 'CampaignId', 'AdGroupId', 'AdTitle', 'AdType'), vnextInfo.scope) :\r\n getAdgroupLink(_.pick(dictionary, 'CampaignId', 'AdGroupId', 'AdTitle', 'AdType')),\r\n id: dictionary.AdGroupId,\r\n campaignId: dictionary.CampaignId,\r\n ariaLabel: i18n.getString('Click to scope to ad group {{adGroupName}}', { adGroupName: dictionary.AdgroupName }),\r\n },\r\n entityName,\r\n moreTitleHint,\r\n isForVnext,\r\n };\r\n } else {\r\n return {};\r\n }\r\n };\r\n}\r\n\r\nexport function getEntity(bulkEditResult) {\r\n if (!_.isNull(bulkEditResult.EntityKey) && !_.isUndefined(bulkEditResult.EntityKey) && bulkEditResult.EntityKey.length > 1) {\r\n const dictionary = entityToObject(bulkEditResult.EntityKey);\r\n\r\n return {\r\n campaign: {\r\n name: dictionary.CampaignName,\r\n url: getCampaignLink(dictionary.CampaignId),\r\n },\r\n adGroup: {\r\n name: dictionary.AdgroupName,\r\n url: getAdgroupLink(_.pick(dictionary, 'CampaignId', 'AdGroupId', 'AdTitle', 'AdType')),\r\n },\r\n keyword: {\r\n name: dictionary.Keyword,\r\n },\r\n ad: {\r\n title: dictionary.AdTitle || `{${i18n.getString('Ad_DSA_Title')}}`,\r\n },\r\n };\r\n } else {\r\n return {};\r\n }\r\n}\r\n\r\n// split error msg from MT\r\n// \"LabelIdInvalid\" => \"label id invalid\"\r\nfunction splitErrorMsg(errMsg = '') {\r\n const splitStr = errMsg.replace(/([A-Z])/g, ' $1').toLowerCase().trim();\r\n\r\n return splitStr.charAt(0).toUpperCase() + splitStr.slice(1);\r\n}\r\n\r\n// if an error message comes from MT, then split it.\r\nfunction normalizeErrorMsg(current = [], origin = []) {\r\n return current.map((msg) => {\r\n if (origin.includes(msg)) {\r\n return splitErrorMsg(msg);\r\n }\r\n return msg;\r\n });\r\n}\r\n\r\nexport function getStatusText(jobModel) {\r\n return (bulkEditResult) => {\r\n const errors = odataParser.mapEntityErrors(bulkEditResult);\r\n\r\n return {\r\n i18n,\r\n success: !bulkEditResult.HasError,\r\n errors: normalizeErrorMsg(errors, bulkEditResult.Errors || []),\r\n attemptedValue: i18n.getString('BulkEdit_HistoryJobDetails_Entity_AttemptedValue_V2', {\r\n attempted: odataParser.formatEntityValue(jobModel, bulkEditResult.Changes, true),\r\n }),\r\n };\r\n };\r\n}\r\n\r\nexport function getCopyPasteStatusText() {\r\n return (bulkEditResult) => {\r\n const errors = odataParser.mapEntityErrors(bulkEditResult);\r\n\r\n return {\r\n i18n,\r\n success: !bulkEditResult.HasError,\r\n errors: normalizeErrorMsg(errors, bulkEditResult.Errors || []),\r\n attemptedValue: null,\r\n };\r\n };\r\n}\r\n\r\nfunction getResultValue(bulkEditResult, isNew, jobModel, isCopyPaste, vnextInfo) {\r\n if ((isNew && bulkEditResult.HasError) || _.size(bulkEditResult.Changes) < 1) {\r\n return i18n.getString('BulkEdit_HistoryJobDetails_Entity_NoChange');\r\n } else {\r\n const result = odataParser.formatEntityValue(jobModel, bulkEditResult.Changes, isNew, bulkEditResult.EntityKey);\r\n\r\n if (_.isObject(result)) {\r\n const entityKeyField = getEntityKeyField(jobModel.get('Entity'));\r\n const dictionary = entityToObject(bulkEditResult.EntityKey);\r\n\r\n result.isForVnext = !!vnextInfo;\r\n\r\n if (_.isEmpty(dictionary.AdHeadlines)) {\r\n if (isCopyPaste) {\r\n if (entityKeyField && (entityKeyField !== entityKeyMap.Campaign && entityKeyField !== entityKeyMap.AdGroup)) {\r\n result.entityName = dictionary[entityKeyField];\r\n }\r\n } else {\r\n result.entityName = entityKeyField && dictionary[entityKeyField];\r\n }\r\n } else {\r\n result.entityName = getTitlePreviewFromJson(dictionary.AdHeadlines);\r\n }\r\n\r\n if (result.isForVnext) {\r\n if (result.campaignId) {\r\n result.campaignUrl = getUiNextCampaignLink(result.campaignId, vnextInfo.scope);\r\n result.campaignAriaLabel = i18n.getString('Click to scope to campaign {{campaignName}}', { campaignName: result.campaignName });\r\n }\r\n\r\n if (result.adGroupId) {\r\n result.adGroupUrl = getUiNextAdgroupLink({\r\n CampaignId: result.campaignId,\r\n AdGroupId: result.adGroupId,\r\n }, vnextInfo.scope);\r\n result.adGroupAriaLabel = i18n.getString('Click to scope to ad group {{adGroupName}}', { adGroupName: result.adGroupName });\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport function getOldValue(jobModel, isCopyPaste = false, vnextInfo = undefined) {\r\n return _.partial(getResultValue, _, false, jobModel, isCopyPaste, vnextInfo);\r\n}\r\n\r\nexport function getNewValue(jobModel, isCopyPaste = false, vnextInfo = undefined) {\r\n return _.partial(getResultValue, _, true, jobModel, isCopyPaste, vnextInfo);\r\n}\r\n","import ko from 'knockout';\r\nimport koSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\n\r\nexport default class ViewModel {\r\n constructor({isNewUI}) {\r\n koSchema.properties(this);\r\n\r\n this.dataLoaded = ko.observable(false);\r\n this.isNewUI = ko.observable(isNewUI);\r\n this.showHighLatencyAlert = ko.observable(false);\r\n this.hasStore = ko.observable(false);\r\n this.isStoreValid = ko.observable(false);\r\n this.showGoalRemoveAlert = ko.observable(false);\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport * as httpUtils from '@bingads-webui/http-util';\r\nimport { applyRecommendations, dismissRecommendations } from '@bingads-webui-campaign/recommendation-repository';\r\nimport jsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport { queryify } from '@bingads-webui/url-util';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport CreateView from '@bingads-webui-campaign-legacy/crud-campaign/view/create';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/campaign-settings/viewmodel/index';\r\nimport template from '@bingads-webui-campaign-legacy/campaign-settings/template/index.pug';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport uiBlocker from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport AdvancedSettingsView from '@bingads-webui-campaign-legacy/advanced-settings/view/advancedSettings';\r\nimport ShoppingSettingsView from '@bingads-webui-campaign-legacy/shopping-campaign/view/campaign-creation/shopping-settings';\r\nimport campaignType from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/campaignType';\r\nimport summaryDataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport * as scrollUtils from '@bingads-webui-component-legacy/extension/scrollTo';\r\nimport { shouldSupportCashbackSettings, logCampaignPersonalizedOffers } from '@bingads-webui-campaign/personalized-offer-shared';\r\nimport {\r\n AudienceAdvancedTargetSettings,\r\n AudienceTargetInfo,\r\n} from '@bingads-webui-campaign-legacy/audience-campaign/loader';\r\nimport { showIMAReachModal, getLocationsInfo } from '@bingads-webui-campaign-react/ima-reach-representation';\r\nimport { GoalSelectorView } from '@bingads-webui-campaign-react/goal-selector/src/view';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport { showBudgetBidCampaignNotifications } from '@bingads-webui-campaign/import-shared-utils';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nconst backRouteName = 'campaign_adgroup';\r\n\r\nconst isEnabledDynamicFeedCampaign = pageContext && pageContext.Permissions && pageContext.Permissions.IsEnabledForDynamicFeedCampaign;\r\nconst isSponsoredPilotEnabled = pageContext && pageContext.Permissions && pageContext.Permissions.IsSPAv2Enabled;\r\nconst isCPGForBSCEnabled = pageContext && pageContext.Permissions && pageContext.Permissions.IsCPGForBSCEnabled;\r\nconst isBSCSmartImportEnabled = pageContext && pageContext.Permissions && pageContext.Permissions.IsBSCSmartImportEnabled;\r\nconst isPredictiveMatchingEnabled = pageContext && pageContext.Permissions && pageContext.Permissions.dynamic.PredictiveMatching;\r\n\r\nexport default class View extends Backbone.View {\r\n initialize(options = {}) {\r\n this.options = options;\r\n if (options.perfMarker) {\r\n this.campaignScopeAllSettingsPerfMarker = options.perfMarker.createChild('CampaignScope_AllSettings_EditCampaign');\r\n }\r\n\r\n if (campaignType() != null) {\r\n this.scenario = instrumentation[`${campaignType()}CampaignEdit`].create();\r\n this.activity = this.scenario[`${campaignType()}CampaignEdit`].create();\r\n }\r\n\r\n this.mark('willInit');\r\n const router = _.chain(options.deps).result('router', {}).value();\r\n\r\n this.navigateToRoute = router.navigateToRoute || _.noop;\r\n this.isNewUI = _.result(options.deps, 'isNewUI', false);\r\n\r\n this.viewModel = new ViewModel({ isNewUI: this.isNewUI });\r\n this.isMMAForRetailEnabled = pageContext.Permissions.IsMMAForRetailEnabled;\r\n const dynamicPermissions = _.result(pageContext.Permissions, 'dynamic', {});\r\n\r\n this.showDisclaimerBanner = _.result(dynamicPermissions, 'AgeGenderDisclaimer', false);\r\n this.ccJsData = options.ccJsData;\r\n this.serverContext = options.serverContext;\r\n this.scope = options.scope;\r\n }\r\n\r\n\r\n get events() {\r\n return {\r\n 'click .btn-save': 'checkIMAReachAndSave',\r\n 'click .btn-cancel': 'cancel',\r\n };\r\n }\r\n\r\n isNotAudienceCampaign() {\r\n return campaignType() !== 'audience';\r\n }\r\n\r\n renderAdvancedSettings(campaign) {\r\n this.advancedSettingsView = new AdvancedSettingsView({\r\n campaignId: this.options.campaignId,\r\n scenario: 'campaign-settings',\r\n level: 'campaign',\r\n model: campaign,\r\n nativeAdsCampaignBid: campaign.NativeBidAdjustment,\r\n multimediaAdsCampaignBid: campaign.MultiMediaAdBidAdjustment,\r\n TimeZone: campaign.TimeZone,\r\n campaignType: campaign.CampaignType ? campaign.CampaignType : campaignType(),\r\n supportCashbackSettings: shouldSupportCashbackSettings(campaign, pageContext.Permissions),\r\n newI18n: this.options.deps.i18nNewDesign,\r\n activityLogger: this.activity,\r\n });\r\n this.$('.advanced-settings-section').html(this.advancedSettingsView.render().el);\r\n }\r\n\r\n checkIfStoreValid(data) {\r\n const providerId = _.result(this.setting, 'ProviderId');\r\n\r\n return _.some(data.ProductCollectionAccounts, (store) => Number(store.Value) === providerId);\r\n }\r\n\r\n renderShoppingSettings(data) {\r\n this.isAudienceDynamicFeedBasedCampaign = this.campaign.CampaignType === 'Audience' && this.campaign.CampaignSubType === 'AudienceDynamicFeedBased';\r\n this.isSponsoredCampaign = (isSponsoredPilotEnabled && config.get('CampaignObjective') === 'SponsoredShoppingCampaign') || this.campaign.CampaignSubType === 'ShoppingSponsoredProductAd';\r\n this.editMode = _.isFinite(this.options.campaignId);\r\n this.shouldShowPlaceholderStoreIfExists = isBSCSmartImportEnabled && this.editMode;\r\n this.campaignProductScopeId = data.CampaignCriterionsData && data.CampaignCriterionsData.Id;\r\n\r\n const hasAnyStores = (!_.isEmpty(data) && !_.isEmpty(data.ProductCollectionAccounts)) ||\r\n (isEnabledDynamicFeedCampaign && this.isAudienceDynamicFeedBasedCampaign);\r\n\r\n if (hasAnyStores && isSponsoredPilotEnabled) {\r\n if (this.isSponsoredCampaign) {\r\n this.viewModel.hasStore(this.editMode || _.findIndex(data.ProductCollectionAccounts, (item) => item.IsGlobalStore || item.IsCoOpStore) >= 0);\r\n } else {\r\n this.viewModel.hasStore(this.editMode || _.findIndex(data.ProductCollectionAccounts, (item) => !item.IsGlobalStore && !item.IsCoOpStore) >= 0);\r\n }\r\n } else {\r\n this.viewModel.hasStore(hasAnyStores);\r\n }\r\n\r\n let isStoreValid = isCPGForBSCEnabled && this.editMode ? this.checkIfStoreValid(data) : true; // eslint-disable-line newline-after-var\r\n if (isEnabledDynamicFeedCampaign && this.isAudienceDynamicFeedBasedCampaign && this.editMode) {\r\n isStoreValid = true;\r\n }\r\n this.viewModel.isStoreValid(isStoreValid);\r\n\r\n if (this.viewModel.hasStore()) {\r\n data.ProductCollectionAccounts = [{\r\n Text: i18n.get('ShoppingCampaign_ShoppingSetting_DefaultStore'),\r\n Value: -1,\r\n IsCoOpStore: false,\r\n }, ...data.ProductCollectionAccounts];\r\n this.shoppingSettingsView = new ShoppingSettingsView({\r\n data,\r\n model: this.setting,\r\n campaignType: this.campaign.CampaignType,\r\n campaignSubType: this.campaign.CampaignSubType,\r\n campaignId: _.result(this.campaign, 'Id'),\r\n isStoreValid: this.viewModel.isStoreValid(),\r\n activityLogger: this.editMode ? undefined : this.activity,\r\n isSponsoredSettings: { isSponsoredCampaign: this.isSponsoredCampaign, isSponsoredPilotEnabled },\r\n shouldShowPlaceholderStoreIfExists: this.shouldShowPlaceholderStoreIfExists,\r\n deps: this.options.deps,\r\n isSearchCampaign: this.campaign.campaignType === 'Default',\r\n isMMAForRetailWorkflow: true,\r\n ccJsData: this.ccJsData,\r\n }).render();\r\n this.$('.shopping-settings').append(this.shoppingSettingsView.$el);\r\n } else if (!this.editMode) {\r\n this.activity.signal('have no store', this.scenario);\r\n }\r\n }\r\n\r\n getProductData(campaignId) {\r\n let url = queryify('/Campaign/NewCampaign/GetProductScope', {\r\n aid: state.get('account_id'),\r\n cid: state.get('customer_id'),\r\n uid: state.get('user_id'),\r\n });\r\n // We shouldn't cache the response when showing placeholder stores.\r\n // If we do, there will be a bug when the user goes from campaign settings to creation.\r\n // The bug will be that the user sees draft stores in campaign creation since it reads from cache.\r\n let bypassCache = this.shouldShowPlaceholderStoreIfExists;\r\n let cacheResponse = !this.shouldShowPlaceholderStoreIfExists;\r\n\r\n if (campaignId) {\r\n let urlQueryStringObject = {\r\n campaignId,\r\n // salesCountry: \"US\",\r\n };\r\n\r\n url = queryify(url, urlQueryStringObject);\r\n\r\n if (this.shouldShowPlaceholderStoreIfExists) {\r\n url = `${url}&storeTypes=placeholder`;\r\n }\r\n\r\n bypassCache = true;\r\n cacheResponse = false;\r\n }\r\n\r\n const params = {\r\n url,\r\n adapter: 'legacy',\r\n bypassCache,\r\n cacheResponse,\r\n };\r\n\r\n return jsData.Product.find('MetaData', params);\r\n }\r\n\r\n renderCampaignTargets(campaign) {\r\n if (!this.isNotAudienceCampaign()) {\r\n return Promise.resolve();\r\n }\r\n const audienceTargetInfo = new AudienceTargetInfo({\r\n resourceName: 'CampaignCriterion',\r\n listenToLocationCriterion: false,\r\n initAudienceAssociationView: false,\r\n });\r\n\r\n const loadCriterionsTask = audienceTargetInfo.fetchCriterions(campaign.Id).then(() => {\r\n this.campaignTargetsView = new AudienceAdvancedTargetSettings({\r\n viewContext: {\r\n accountCurrencyCode: pageContext.AccountCurrencyCode,\r\n currentCampaign: campaign,\r\n level: 'campaign',\r\n },\r\n scenario: 'campaign-settings',\r\n currentLevelTargetInfo: audienceTargetInfo,\r\n supportCashbackSettings: shouldSupportCashbackSettings(campaign, pageContext.Permissions),\r\n });\r\n this.$('.campaign-targets').append(this.campaignTargetsView.render().el);\r\n\r\n return Promise.resolve(_.result(this.createView, 'locationTargetsPromise'));\r\n }).then(() => {\r\n if (_.has(this.createView, 'locationTargetsView')) {\r\n this.campaignTargetsView.$('.location-setting-controller').append(this.createView.locationTargetsView.render().el);\r\n\r\n return this.createView.locationTargetsView.initialLoadTask;\r\n }\r\n\r\n return null;\r\n });\r\n\r\n const loadBudgetTask = _.result(this.createView.budget, 'initialLoadTask');\r\n\r\n return Promise.all([\r\n loadCriterionsTask,\r\n loadBudgetTask,\r\n ]);\r\n }\r\n\r\n renderConversionGoalSelection(campaign) {\r\n // CPG and SPA Campaign:\r\n const isSPA = campaign.CampaignSubType === 'ShoppingSponsoredProductAd';\r\n // Cashback CPS Campaign:\r\n const isCPS = campaign.CampaignCashback != null &&\r\n (campaign.CampaignCashback.PersonalizedOffersEnabled === true ||\r\n campaign.CampaignCashback.MonthlyBudget > 0);\r\n\r\n const isSelectorEnabled = !isSPA && !isCPS;\r\n\r\n if (isSelectorEnabled) {\r\n this.goalSelectionView = new GoalSelectorView({\r\n i18n: i18n.realI18n,\r\n pageSize: 10,\r\n isMultiMode: true,\r\n isHideSaveBar: true,\r\n campaign,\r\n jsdata: jsData,\r\n state,\r\n turnOnRemoveAlert: (shouldShowWarning) => {\r\n this.viewModel.showGoalRemoveAlert(shouldShowWarning);\r\n },\r\n });\r\n this.$('.conversion-goal-selection').empty().html(this.goalSelectionView.render().el);\r\n } else {\r\n this.$('.conversion-goal-section').empty();\r\n }\r\n }\r\n\r\n onEnablePersonalizedOfferCheckboxChange(checked) {\r\n this.campaignTargetsView.toggleCashbackPercentColumns(checked);\r\n if (this.createView.locationTargetsView) {\r\n this.createView.locationTargetsView.toggleCashbackPercentColumns(checked);\r\n }\r\n if (this.advancedSettingsView.adScheduleView) {\r\n this.advancedSettingsView.adScheduleView.toggleCashbackPercentColumns(checked);\r\n }\r\n }\r\n\r\n onCashbackPercentChange(value) {\r\n if (this.createView.cashbackSettingsView.viewModel.validateCashbackPercent(value)) {\r\n const formattedValue = value === '' || value == null ? null : decimal.fromLocalToFloat(value);\r\n\r\n if (this.campaignTargetsView) {\r\n this.campaignTargetsView.toggleCashbackPercentColumns(true, {\r\n level: 'Campaign',\r\n value: formattedValue,\r\n });\r\n }\r\n\r\n if (this.createView.locationTargetsView) {\r\n this.createView.locationTargetsView.toggleCashbackPercentColumns(true, {\r\n level: 'Campaign',\r\n value: formattedValue,\r\n });\r\n }\r\n\r\n if (this.advancedSettingsView && this.advancedSettingsView.adScheduleView) {\r\n this.advancedSettingsView.adScheduleView.toggleCashbackPercentColumns(true, {\r\n level: 'Campaign',\r\n value: formattedValue,\r\n });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n this.$el.append(template({\r\n i18n,\r\n title: _.result(pageContext.CurrentCampaign, 'ExperimentId') > 0 ? i18n.get('SectionTitle_ExperimentSettings') : i18n.get('SectionTitle_CampaignSettings'),\r\n isNotAudienceCampaign: this.isNotAudienceCampaign(),\r\n isMMAForRetailEnabled: this.isMMAForRetailEnabled,\r\n isShowDisclaimerBannerEnabled: this.showDisclaimerBanner,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n let params = {\r\n queryParameters: {\r\n entitySet: edmCampaign.currentAccount.Campaigns,\r\n expand: ['Budget', 'CampaignConversionGoal/Goals'],\r\n },\r\n bypassCache: true,\r\n };\r\n\r\n this.mark('willFetchData');\r\n this.hideUIBlocker = uiBlocker(this.$el);\r\n jsData.Campaign.find(Number(this.options.campaignId), params)\r\n .then((data) => {\r\n this.campaign = data;\r\n this.setting = _.first(this.campaign.CampaignSettings) || {};\r\n this.mark('willRender');\r\n\r\n this.createView = new CreateView(_.extend(data, {\r\n scenario: 'campaign-settings',\r\n showLanguage: data.CampaignType === 'Default', // data.CampaignType !== 'shopping'? need to confirm with feature owner\r\n popupIds: { Location: 'pop_BA_Settings_LocationTargeting' },\r\n showInitialUiBlocker: !this.isNotAudienceCampaign(),\r\n deps: this.options.deps,\r\n usePanel: this.isNewUI,\r\n campaignType: data.CampaignType,\r\n campaignSubType: data.CampaignSubType,\r\n isForVNext: this.isNewUI,\r\n activityLogger: this.activity,\r\n serverContext: this.serverContext,\r\n scope: this.scope,\r\n }));\r\n\r\n this.supportCashbackSettings = shouldSupportCashbackSettings(data, pageContext.Permissions);\r\n\r\n this.$('.campaign-update').append(this.createView.render().el);\r\n\r\n this.viewModel.dataLoaded(true);\r\n\r\n this.renderAdvancedSettings(data);\r\n\r\n this.renderConversionGoalSelection(data);\r\n\r\n if (this.createView.cashbackSettingsView) {\r\n this.createView.cashbackSettingsView.viewModel.isEnablePersonalizedOffersChecked.subscribe((checked) => {\r\n this.onEnablePersonalizedOfferCheckboxChange(checked);\r\n });\r\n\r\n this.createView.cashbackSettingsView.viewModel.CashbackPercent.subscribe((value) => {\r\n this.onCashbackPercentChange(value);\r\n });\r\n }\r\n\r\n this.createView.biddingStrategyView.viewModel.selectedBidStrategy.subscribe((value) => {\r\n this.advancedSettingsView.onSelectedBidStrategyChange(value);\r\n });\r\n return this.renderCampaignTargets(data);\r\n })\r\n .then(() => {\r\n if (this.isMMAForRetailEnabled) {\r\n return Promise.resolve(this.getProductData(this.options.campaignId)\r\n .then((data) => {\r\n this.renderShoppingSettings(data);\r\n }));\r\n }\r\n\r\n return Promise.resolve();\r\n })\r\n .catch(({ errors } = {}) => {\r\n this.viewModel.errors.add(_.isEmpty(errors) ? undefined : i18nErrors.getODataErrors(errors));\r\n })\r\n .finally(() => {\r\n this.hideUIBlocker();\r\n this.mark('done');\r\n });\r\n\r\n return this;\r\n }\r\n\r\n clearApiErrors() {\r\n this.advancedSettingsView.clearApiErrors();\r\n }\r\n\r\n validate() {\r\n return _.reduce([\r\n this.createView.validate(),\r\n this.advancedSettingsView.validate(),\r\n this.shoppingSettingsView ? this.shoppingSettingsView.validate() : true,\r\n this.campaignTargetsView ? this.campaignTargetsView.validate() : true,\r\n ], (memo, val) => {\r\n return memo && val;\r\n }, true);\r\n }\r\n\r\n destroyProductScoeIfNeed() {\r\n if (this.campaignProductScopeId && !this.shoppingSettingsView.hasFilteredProducts()) {\r\n jsData.CampaignProductScope.destroy(this.campaignProductScopeId, { adapter: 'bulk', parentId: this.campaign.Id });\r\n }\r\n }\r\n\r\n getParams() {\r\n let params = this.createView.getData();\r\n let advancedSettingsValues = this.advancedSettingsView.getValues();\r\n\r\n if (isPredictiveMatchingEnabled) {\r\n params.AutoTargetingEnabled = advancedSettingsValues.AutoTargetingEnabled || false;\r\n }\r\n\r\n let targets = advancedSettingsValues.deviceTargets\r\n .concat(advancedSettingsValues.ageTargets)\r\n .concat(advancedSettingsValues.genderTargets)\r\n .concat(advancedSettingsValues.scheduling);\r\n\r\n _.each(targets, (criterion) => {\r\n criterion.Status = _.isEmpty(criterion.Status) ? 'Active' : criterion.Status;\r\n criterion.Campaign = {\r\n Id: params.Id,\r\n };\r\n });\r\n\r\n if (this.shoppingSettingsView) {\r\n if (this.shoppingSettingsView.viewModel.hasValidStore()) {\r\n _.extend(params, this.shoppingSettingsView.viewModel.toObject(), {\r\n CampaignType: this.campaign.CampaignType,\r\n });\r\n\r\n // This is for MMA for Retail, only edit mode\r\n if (this.shoppingSettingsView.isFeedProductFilterEnabled) {\r\n if (!this.shoppingSettingsView.viewModel.isFeedFilterChecked()) {\r\n // choose neither feed label nor sales country\r\n params = _.omit(params, 'SalesCountry');\r\n params = _.omit(params, 'FeedLabel');\r\n } else if (params.FeedLabel && params.FeedLabel.length > 0) {\r\n params = _.omit(params, 'SalesCountry');\r\n } else {\r\n params = _.omit(params, 'FeedLabel');\r\n }\r\n if (this.editMode) {\r\n if (!params.SalesCountry) {\r\n params.SalesCountry = 'delete_value';\r\n }\r\n if (!params.FeedLabel) {\r\n params.FeedLabel = 'delete_value';\r\n }\r\n }\r\n }\r\n\r\n if (this.shoppingSettingsView.hasFilteredProducts()) {\r\n params.CampaignProductScope = _.defaults(this.shoppingSettingsView.getProductScope(), {\r\n CampaignName: params.Name,\r\n });\r\n\r\n if (this.campaignProductScopeId) {\r\n params.CampaignProductScope.Id = this.campaignProductScopeId;\r\n }\r\n }\r\n } else {\r\n _.extend(params, this.shoppingSettingsView.viewModel.toObject(), {\r\n ProviderId: 'delete_value',\r\n SalesCountry: 'delete_value',\r\n });\r\n }\r\n }\r\n\r\n const campaignTargetsData = this.campaignTargetsView && this.campaignTargetsView.getData();\r\n const campaignTargetsCriterions = _.result(campaignTargetsData, 'CampaignCriterions', []);\r\n\r\n params.CampaignCriterions = _.union(params.CampaignCriterions, targets, campaignTargetsCriterions);\r\n\r\n _.extend(params,\r\n advancedSettingsValues.urlOptions,\r\n advancedSettingsValues.nativeAds,\r\n advancedSettingsValues.multimediaAds,\r\n advancedSettingsValues.automatedCTA,\r\n advancedSettingsValues.vanityUrlSettings,\r\n );\r\n\r\n if (_.isBoolean(advancedSettingsValues.adScheduleUseSearcherTimeZone)) {\r\n params.AdScheduleUseSearcherTimeZone = advancedSettingsValues.adScheduleUseSearcherTimeZone;\r\n }\r\n\r\n if (this.goalSelectionView) {\r\n params.CampaignConversionGoalAssociations =\r\n this.goalSelectionView.convertToMTFormat(params.Id);\r\n }\r\n return params;\r\n }\r\n\r\n getAllLocationCriterions() {\r\n const allLocations = this.createView.getAllLocations();\r\n const campaignTargetsData = (this.campaignTargetsView && this.campaignTargetsView.getAllLocations()) || [];\r\n\r\n return _.union(allLocations, campaignTargetsData);\r\n }\r\n\r\n\r\n checkIMAReachAndSave() {\r\n let checkIMAReachPromise = Promise.resolve(false);\r\n\r\n if (!this.validate()) {\r\n return;\r\n }\r\n\r\n this.clearApiErrors();\r\n\r\n const params = this.getParams();\r\n\r\n const changedLocationCriterions = params && params.CampaignCriterions && _.filter(params.CampaignCriterions, (item) =>\r\n item && (item.CriterionType === 'Location' || item.CriterionType === 'Radius'));\r\n\r\n const hasLocationChanged = changedLocationCriterions && changedLocationCriterions.length > 0;\r\n\r\n let locationCriterions = this.getAllLocationCriterions();\r\n\r\n locationCriterions = _.filter(locationCriterions, (c) => c.Status !== 'Deleted');\r\n\r\n if (hasLocationChanged && pageContext.Permissions.IsIMAReachRepresentationPhase1Enabled && this.isNewUI && locationCriterions.length > 0) {\r\n const onYes = () => this.save();\r\n const locationsInfo = getLocationsInfo(locationCriterions);\r\n\r\n checkIMAReachPromise = showIMAReachModal({\r\n locationsInfo,\r\n onYes,\r\n deliveryChannel: campaignType() === 'audience' ? 'AIM' : 'BingAds',\r\n campaignId: this.options.campaignId,\r\n i18n,\r\n aid: pageContext.CurrentAccount.Id,\r\n cid: pageContext.CurrentAccount.AdvertiserCustomerID,\r\n });\r\n }\r\n\r\n checkIMAReachPromise.then((isIMAReachModalShow) => {\r\n if (isIMAReachModalShow) {\r\n return;\r\n }\r\n this.save();\r\n });\r\n }\r\n\r\n save() {\r\n if (!this.validate()) {\r\n return;\r\n }\r\n\r\n this.clearApiErrors();\r\n const params = this.getParams();\r\n const highLantencyThreshold = 3000;\r\n\r\n if (_.size(params.CampaignCriterions) > highLantencyThreshold) {\r\n this.viewModel.showHighLatencyAlert(true);\r\n }\r\n\r\n const batchSize = 1000;\r\n const chunks = _.chain(params.CampaignCriterions)\r\n .groupBy((value, index) => Math.floor(index / batchSize))\r\n .toArray()\r\n .value();\r\n let reqs = _.map(chunks, (batch) => ({\r\n Id: params.Id,\r\n data: _.extend({}, params, { CampaignCriterions: batch }),\r\n }));\r\n\r\n if (reqs.length === 0) {\r\n reqs = [{\r\n Id: params.Id,\r\n data: params,\r\n }];\r\n }\r\n const batchedParams = {\r\n reqs,\r\n };\r\n const mergeCampaignCriterions = (responses) => {\r\n const mergedCampaignCriterions = _.reduce(responses, (dest, res) => dest.concat(res.CampaignCriterions), []);\r\n\r\n return _.extend({}, _.first(responses), { CampaignCriterions: mergedCampaignCriterions });\r\n };\r\n\r\n\r\n jsData.Campaign\r\n .update(params.Id, batchedParams, { adapter: 'bulk', cacheResponse: false, overrideResponse: true, batch: true, processResponse: mergeCampaignCriterions })\r\n .then((response) => {\r\n //we backfill advanced settings models here, so we have correct model if the saveExtensions call fails.\r\n const { activity } = instrumentation.createScenarioAndActivity({\r\n scenarioName: 'BudgetBidCampaignImportNotification',\r\n activityName: 'SearchCampaignSettingPage',\r\n });\r\n\r\n showBudgetBidCampaignNotifications({\r\n campaignItemList: [this.campaign],\r\n oldBudget: this.campaign.Budget,\r\n newBudget: params.Budget,\r\n oldBidStrategy: this.campaign.BiddingScheme,\r\n newBidStrategy: params.BiddingScheme,\r\n activity,\r\n });\r\n this.advancedSettingsView.setData(response);\r\n logCampaignPersonalizedOffers(this.createView.cashbackSettingsView, this.activity.signal.bind(this.activity), params);\r\n return this.advancedSettingsView.exclusionsUpdated() ? this.advancedSettingsView.saveExtensions() : {};\r\n })\r\n .then(() => {\r\n return this.createView.saveTargetingSource(params.Id);\r\n }).then(() => {\r\n return this.destroyProductScoeIfNeed();\r\n }).then(() => {\r\n // These are the mappings for campaigns/updatesettings taken from SummaryGridsActionMap\r\n // Campaign name might appear in these grids, and changing a shared budget association\r\n // might affect the budget status in these grids, so the cache needs to be invalidated here.\r\n const contextsToUpdate = [\r\n 'CampaignsGrid',\r\n 'AdGroupGrid',\r\n 'PagedAdGroupGrid',\r\n 'AdGrid',\r\n 'KeywordGrid',\r\n 'AudiencesAssociationGrid',\r\n 'SitePlacementGrid',\r\n 'CampaignsSettingsGrid',\r\n 'AccountAdExtensionsGrid',\r\n 'CampaignAdExtensionsGrid',\r\n 'AdGroupAdExtensionsGrid',\r\n 'ProductGroupsGrid',\r\n 'CampaignSelector',\r\n ];\r\n\r\n summaryDataContextManager.updateContext(contextsToUpdate);\r\n window.App.trigger('campaignUpdated', { data: [{ Id: Number(params.Id), Name: params.Name, Budget: params.Budget }] });\r\n if (params && params.Budget && params.Budget.Amount && this.campaign && this.campaign.Budget && this.campaign.Budget.Amount) {\r\n if (this.campaign.Budget.Amount >= 0.1 && params.Budget.Amount < (this.campaign.Budget.Amount * 0.5).toFixed(2)) {\r\n this.activity.trace(`Bid${params.Budget.Amount} Less than 50% of current budget${this.campaign.Budget.Amount}`);\r\n }\r\n }\r\n const { CurrentCampaign: currentCampaign } = pageContext;\r\n\r\n const permissions = config.get('Permissions');\r\n const isDSAMixedModeCampaignEnabled = _.result(permissions, 'IsDSAMixedModeCampaignEnabled', false);\r\n\r\n // update DSA settings to current campaign\r\n // so that the summary tab can be updated correctly\r\n if (isDSAMixedModeCampaignEnabled && !this.isNewUI && params.DomainName) {\r\n currentCampaign.CampaignSettings = [{\r\n DomainName: params.DomainName,\r\n Source: params.Source,\r\n Language: params.LanguageCode,\r\n DynamicDescriptionEnabled: params.DynamicDescriptionEnabled,\r\n }];\r\n window.App.state.trigger('change:campaign_id');\r\n }\r\n // eslint-disable-next-line camelcase\r\n this.navigateToRoute(backRouteName, { campaign_id: params.Id });\r\n }).then(() => {\r\n const tasks = [];\r\n const {\r\n targetedLocationRecommendations,\r\n dismissedLocationRecommendations,\r\n } = this.createView.getLocationRecommendationsStatus();\r\n const deps = {\r\n httpUtils,\r\n odataOptions: {\r\n host: pageContext.BingAdsAdInsightWebApiUri,\r\n oDataToken: pageContext.Token,\r\n SessionId: _.result(config.get('Omniture'), 'SessionId'),\r\n params: {\r\n 'customer_id': state.get('advertisercustomer_id'),\r\n 'account_id': state.get('account_id'),\r\n },\r\n },\r\n };\r\n const scope = {\r\n customerId: state.get('advertisercustomer_id'),\r\n accountId: state.get('account_id'),\r\n campaignId: params.Id,\r\n };\r\n const recommendationType = 'NewLocationTargetOpportunity';\r\n const channel = 'campaignsetting';\r\n\r\n if (!_.isEmpty(targetedLocationRecommendations)) {\r\n tasks.push(applyRecommendations({\r\n deps,\r\n scope,\r\n recommendations: targetedLocationRecommendations,\r\n recommendationType,\r\n channel,\r\n }));\r\n }\r\n\r\n if (!_.isEmpty(dismissedLocationRecommendations)) {\r\n tasks.push(dismissRecommendations({\r\n deps,\r\n scope,\r\n recommendations: dismissedLocationRecommendations,\r\n recommendationType,\r\n channel,\r\n }));\r\n }\r\n\r\n return Promise.all(tasks);\r\n }).catch((response) => {\r\n this.handleApiErrors(response);\r\n }).finally(uiBlocker(this.$el));\r\n }\r\n\r\n handleApiErrors(response) {\r\n if (_.isUndefined(response) || _.isNull(response)) {\r\n this.viewModel.errors.add();\r\n return;\r\n }\r\n\r\n if (response.errors && !response.entity) {\r\n //Ajax error [400] - RowCountExceeded\r\n this.viewModel.errors.add(i18nErrors.getODataErrors(response.errors));\r\n return;\r\n }\r\n\r\n if (response === 'exclusion error') {\r\n return;\r\n }\r\n\r\n if (response.errors) {\r\n const processItems = ['CampaignCriterions'].concat(response.entity.hasOwnProperty('AdExtensionAssociations') ? ['AdExtensionAssociations'] : []);\r\n\r\n i18nErrors.getPartial(response, processItems);\r\n\r\n let errors = [];\r\n\r\n if (!_.isEmpty(response.entity.errors)) {\r\n errors = errors.concat(response.entity.errors);\r\n }\r\n\r\n // Add all subentity's errors.\r\n _.each(processItems, (item) => {\r\n if (_.isArray(response.entity[item])) {\r\n _.each(response.entity[item], (subEntity) => {\r\n if (!_.isEmpty(subEntity.errors)) {\r\n errors = errors.concat(subEntity.errors);\r\n }\r\n });\r\n } else if (!_.isEmpty(response.entity[item].errors)) {\r\n errors = errors.concat(response.entity[item].errors);\r\n }\r\n });\r\n\r\n let campaignErrors = _.reject(errors, (error) => {\r\n return _.contains(['TrackingUrlTemplate', 'UrlCustomParameters'], error.property);\r\n });\r\n\r\n this.createView.handleApiErrors(campaignErrors || []);\r\n\r\n // should always handle the errors for sub controls since the exsisting campaign id is there\r\n // and campaign level error should not result in sub control's error\r\n this.advancedSettingsView.setData(response);\r\n this.advancedSettingsView.handleErrors(response);\r\n } else {\r\n this.viewModel.errors.add();\r\n }\r\n\r\n this.scrollToErrors();\r\n }\r\n\r\n errorElements() {\r\n return this.$('.campaign-settings__container .error, .campaign-settings__container .alert-danger').filter(':visible');\r\n }\r\n\r\n scrollToErrors() {\r\n scrollUtils.scrollAndCenter(this.errorElements());\r\n }\r\n\r\n cancel() {\r\n // eslint-disable-next-line camelcase\r\n this.navigateToRoute(backRouteName, { campaign_id: this.options.campaignId });\r\n }\r\n\r\n remove() {\r\n if (this.createView) {\r\n this.createView.remove();\r\n }\r\n if (this.advancedSettingsView) {\r\n this.advancedSettingsView.remove();\r\n }\r\n if (this.campaignTargetsView) {\r\n this.campaignTargetsView.remove();\r\n }\r\n if (this.campaignGoalSeletorView) {\r\n this.campaignGoalSeletorView.remove();\r\n }\r\n if (this.goalSelectionView) {\r\n this.goalSelectionView.remove();\r\n }\r\n super.remove();\r\n }\r\n\r\n mark(perfMarkerEvent) {\r\n if (this.campaignScopeAllSettingsPerfMarker) {\r\n this.campaignScopeAllSettingsPerfMarker[perfMarkerEvent]();\r\n }\r\n }\r\n}\r\n\r\n","// import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport template from '@bingads-webui-campaign-legacy/campaign-targeting/template/campaign-targeting.pug';\r\nimport LocationTargetsView from '@bingads-webui-campaign-legacy/location-targets/view/locationTargets';\r\nimport AdScheduleView from '@bingads-webui-campaign-legacy/ad-schedule/view/index';\r\nimport timeZoneMapper from '@bingads-webui-component-legacy/timezonemapper/index';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport * as criterionLoader from '@bingads-webui-campaign-legacy/base-targets/util/criterionLoader';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport targetOptions from '@bingads-webui-campaign-legacy/location-targets/viewmodel/targetOptions';\r\nimport adSchedulingOptions from '@bingads-webui-campaign-legacy/ad-schedule/viewmodel/options';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/campaign-creation-advanced');\r\n\r\nconst defaultOptions = {\r\n model: {\r\n locationTargets: {},\r\n adScheduleModel: {},\r\n },\r\n showDateSettings: true,\r\n needRestore: false,\r\n};\r\n\r\nexport default class View extends Backbone.View {\r\n initialize(options) {\r\n this.options = _.defaults(options, defaultOptions);\r\n this.eventDelegator = options.deps.eventDelegator;\r\n this.template = template;\r\n }\r\n\r\n render() {\r\n const { $el } = this;\r\n\r\n $el.html(this.template({\r\n i18n,\r\n }));\r\n if (this.options.campaignId) {\r\n criterionLoader.load(this.options.campaignId, '', ['DayTimeCriterion'])\r\n .then((campaignTargets) => {\r\n const formattedDayTimeRanges = this.formatLoadedCriterions(campaignTargets);\r\n\r\n this.renderSubViews(formattedDayTimeRanges, this.options.campaignId);\r\n })\r\n .finally(withUiBlock(this.el));\r\n } else {\r\n const { adScheduleModel = {} } = this.options.model || {};\r\n const { dayTimeRanges = [] } = adScheduleModel;\r\n\r\n this.renderSubViews(dayTimeRanges);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n renderSubViews(dayTimeRanges = [], campaignId) {\r\n const { $el } = this;\r\n\r\n this.locationTargetsView = this.renderLocationTargetsView(campaignId);\r\n\r\n this.adScheduleView = this.renderAdScheduleView(dayTimeRanges);\r\n $el.find('.location-targets-container').empty().append(this.locationTargetsView.$el);\r\n $el.find('.ad-schedule').empty().append(this.adScheduleView.$el);\r\n return this;\r\n }\r\n\r\n formatLoadedCriterions(criterions) {\r\n return criterions.map((criterion) => {\r\n return {\r\n Id: String(criterion.Id),\r\n CriterionType: 'DayTime',\r\n campaignName: this.campaignName,\r\n Status: 'Active',\r\n Criterion: {\r\n Type: 'DayTime',\r\n BidAdjustment: 0,\r\n OriginalBidAdjustment: 0,\r\n DayTimeCriterion: criterion.Criterion,\r\n },\r\n };\r\n });\r\n }\r\n\r\n remove(...args) {\r\n this.locationTargetsView.remove(...args);\r\n this.adScheduleView.remove(...args);\r\n super.remove(...args);\r\n }\r\n\r\n renderLocationTargetsView(campaignId) {\r\n const locationTargetsView = new LocationTargetsView({\r\n scenario: 'smart-shopping-campaign',\r\n level: 'campaign',\r\n hideAudience: true,\r\n showInitialUiBlocker: false,\r\n campaignId,\r\n deps: {\r\n eventDelegator: this.eventDelegator,\r\n },\r\n }).render();\r\n\r\n if (campaignId == null) {\r\n locationTargetsView.setLocationData([], 'campaign', false, false);\r\n const existingLocations = (this.options.model &&\r\n this.options.model.locationTargets &&\r\n this.options.model.locationTargets.locations) || [];\r\n\r\n // restore previous selected criterions\r\n if (this.options.needRestore) {\r\n locationTargetsView.setLocationData(existingLocations, 'campaign', false, true, true);\r\n } else { // always check default market option if there is no criterion selected\r\n locationTargetsView.viewmodel.targetOption(targetOptions.bundleOrDefaultMarket);\r\n }\r\n }\r\n\r\n return locationTargetsView;\r\n }\r\n\r\n parseDate(dateString) {\r\n if (dateString == null) {\r\n return null;\r\n }\r\n const splits = dateString.split('/');\r\n const month = splits[0];\r\n const day = splits[1];\r\n const year = splits[2];\r\n\r\n return `${year}-${month.length === 1 ? `0${month}` : month}-${day.length === 1 ? `0${day}` : day}`;\r\n }\r\n\r\n formatSchedulingRows(adDayTimeRanges = []) {\r\n let schedulingRows = [];\r\n\r\n _.each(adDayTimeRanges, (target) => {\r\n let criterion = target.Criterion.DayTimeCriterion;\r\n\r\n schedulingRows.push({\r\n Id: target.Id,\r\n Day: criterion.Day,\r\n StartHour: criterion.FromHour,\r\n StartMinute: typeof criterion.FromMinute === 'string' ? criterion.FromMinute : adSchedulingOptions.minuteToReadMap[criterion.FromMinute],\r\n EndHour: criterion.ToHour,\r\n EndMinute: typeof criterion.ToMinute === 'string' ? criterion.ToMinute : adSchedulingOptions.minuteToReadMap[criterion.ToMinute],\r\n });\r\n });\r\n\r\n return schedulingRows;\r\n }\r\n\r\n renderAdScheduleView(dayTimeRanges) {\r\n const { model, adgroupId, showDateSettings = true } = this.options;\r\n\r\n let adScheduleModel = model && model.adScheduleModel ? model.adScheduleModel : {};\r\n\r\n if (!showDateSettings) {\r\n adScheduleModel = _.omit(adScheduleModel, ['startDate', 'endDate']);\r\n }\r\n\r\n const formatModel = _.extend({}, adScheduleModel, {\r\n startDate: this.parseDate(adScheduleModel.startDate),\r\n endDate: this.parseDate(adScheduleModel.endDate),\r\n adScheduleUseSearcherTimeZone: adScheduleModel.adScheduleUseSearcherTimeZone,\r\n adGroupStatus: adgroupId == null ? 'Draft' : null,\r\n dayTimeRanges: this.formatSchedulingRows(dayTimeRanges),\r\n });\r\n\r\n const adScheduleView = new AdScheduleView({\r\n showBidAdjustmentColumn: false,\r\n showDateSettings,\r\n model: formatModel,\r\n timeZone: timeZoneMapper.getAccountTimeZone(),\r\n isForVNext: this.options.isForVNext,\r\n }).render();\r\n\r\n return adScheduleView;\r\n }\r\n\r\n deletedDayTimeCb(deletedDayTimeCriterions) {\r\n const currentCampaignId = this.options.campaignId;\r\n\r\n _.each(deletedDayTimeCriterions, (criterion) => {\r\n criterion.Status = 'Deleted';\r\n criterion.Campaign = {\r\n Id: currentCampaignId,\r\n };\r\n });\r\n }\r\n\r\n getPropertyValidationErrors() {\r\n return this.adScheduleView.getPropertyValidationErrors();\r\n }\r\n\r\n getValue() {\r\n const isValid = this.adScheduleView.validate() && this.locationTargetsView.validate();\r\n\r\n if (isValid) {\r\n let locationTargetsData = this.locationTargetsView.getValues({}, {\r\n populateParentField: true,\r\n removeNegativeId: true,\r\n });\r\n const adDayTimeRanges = this.adScheduleView.getValues(this.deletedDayTimeCb.bind(this));\r\n const adDateSetting = this.adScheduleView.getDateSettings();\r\n const hasEndDate = this.adScheduleView.dateSettings ? this.adScheduleView.dateSettings.viewModel.hasEndDate() : false;\r\n const adScheduleUseSearcherTimeZone = this.adScheduleView.getAdScheduleUseSearcherTimeZone();\r\n let adScheduleModel = {\r\n dayTimeRanges: adDayTimeRanges,\r\n startDate: adDateSetting.StartDate,\r\n endDate: hasEndDate ? adDateSetting.EndDate : null,\r\n timeZone: timeZoneMapper.getAccountTimeZone(),\r\n adScheduleUseSearcherTimeZone,\r\n };\r\n\r\n if (!this.options.showDateSettings) {\r\n adScheduleModel = _.omit(adScheduleModel, ['startDate', 'endDate']);\r\n }\r\n return {\r\n locationTargets: cloneDeep(locationTargetsData),\r\n adScheduleModel: cloneDeep(adScheduleModel),\r\n };\r\n }\r\n return false;\r\n }\r\n}\r\n","import { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport accountListTemplate from './account-list-template.pug';\r\n\r\nexport default class AccountListView extends DeterministicView {\r\n initialize({\r\n i18n,\r\n value,\r\n title,\r\n subtitle,\r\n footerText,\r\n }) {\r\n this.i18n = i18n;\r\n this.setState({ value, title, subtitle, footerText });\r\n }\r\n\r\n get template() {\r\n return accountListTemplate;\r\n }\r\n\r\n get className() {\r\n return 'account-list-view';\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\n\r\nimport { PopoverView, positions, contents } from '@bingads-webui-campaign-legacy/popover/index';\r\nimport trackingStatusPopoverTemplate from './tracking-status-popover-template.pug';\r\nimport helpLinkTemplate from './help-link-template.pug';\r\n\r\n/**\r\n * Returns whether the given status is an active status in UET tags grid definition.\r\n * Useful in scenarios that categorizes several different possible status values\r\n * into active and inactive, for UET tracking status\r\n *\r\n * @param {string} status The status to be categorized\r\n * @returns {bool} isActive True if it is categorized into active; False otherwise\r\n */\r\nexport function isActiveTrackingStatusForUet(status) {\r\n return status === 'Active';\r\n}\r\n\r\n/**\r\n * Returns whether the given status is an active status in Conversion goals grid definition.\r\n * Useful in scenarios that categorizes several different possible status values\r\n * into active and inactive, for UET tracking status\r\n *\r\n * @param {string} status The status to be categorized\r\n * @returns {bool} isActive True if it is categorized into active; False otherwise\r\n */\r\nexport function isActiveTrackingStatusForGoals(status) {\r\n return status === 'Active' ||\r\n status === 'RecordingConversions' ||\r\n status === 'NoRecentConversion';\r\n}\r\n\r\n/**\r\n * Shows a popover view for UET tracking status explaining the current status in grid cell\r\n * Useful in scenarios like UET tags, Conversion goals, Audiences grids that have\r\n * the UET tracking status column, where a popover needs to be shown next to such cell\r\n * when customer clicks on the ... button.\r\n * Need to pass in the data item from the row where the button is clicked (e.g.\r\n * via wrapperView.gridView.itemOfElement(event.target)), the target jQuery element of\r\n * the button clicked (e.g. via wrapperView.$(event.target)), and finally a function that\r\n * checkes whether a given status value is considered active like the one above.\r\n *\r\n * @param {Object} item Data item from the button clicked in the row\r\n * @param {Array} target Target jQuery element of the button clicked\r\n * @param {String} className Class name of the popover\r\n * @param {Func} isActiveTrackingStatus Function that checkes if status value is active\r\n * @param {Object} i18n I18nModel where the resource keys needed by this feature can be found\r\n * @param {String} trackingStatusMessagePrefix Resource key prefix of tracking status message\r\n * @param {String} customTitle custom title for tracking status popover\r\n * @param {String} customExtensionEntranceText custom extension entrance text\r\n * @returns {Object} trackingStatusPopoverView The popover view\r\n */\r\nexport function showTrackingStatusDetails(\r\n item,\r\n target,\r\n className,\r\n isActiveTrackingStatus,\r\n i18n,\r\n trackingStatusMessagePrefix,\r\n customTitle = '',\r\n customExtensionEntranceText = '',\r\n) {\r\n const a11yIdPrefix = _.uniqueId('a11y-');\r\n const a11yId = (suffix) => `${a11yIdPrefix}__${suffix}`;\r\n\r\n return new PopoverView({\r\n item,\r\n target,\r\n className,\r\n position: positions.relativeToTableRow({\r\n marginBottom: $('footer > .navbar-footer').height(),\r\n }),\r\n }).setContent(\r\n new contents.TitledContent()\r\n .setTitle(customTitle || i18n.getString('UETTags_Grid_ColumnTrackingStatus'))\r\n .setBody({\r\n html: trackingStatusPopoverTemplate({\r\n i18n,\r\n helpLinkTemplate,\r\n troubleshootTopic: 'app51206',\r\n value: item.TrackingStatus,\r\n a11yId,\r\n isActiveTrackingStatus,\r\n trackingStatusMessagePrefix,\r\n testType: item.Type,\r\n customExtensionEntranceText,\r\n }),\r\n })\r\n );\r\n}\r\n","import _ from 'underscore';\r\nimport globalConfig from '@bingads-webui-component-legacy/config/index';\r\nimport { mapEnumValueForFilterBase } from '@bingads-webui-component-legacy/bingads-grid/shared/schema-util-helper';\r\n\r\nconst Permissions = globalConfig.get('Permissions');\r\n\r\n// this map convers all mapping for exsing delivery status enums\r\n// for each entity (adgroup/campaign/keyword/ad/else), it may only have several enum values\r\nexport const DeliveryStatusToCategoryMap = {\r\n // Eligible\r\n Eligible: 0,\r\n AdGroupAudienceAssociationPaused: 0,\r\n AdGroupAudienceAssociationExcluded: 0,\r\n AdGroupCriterionPaused: 0,\r\n AdGroupCriterionExcluded: 0,\r\n New: 0,\r\n\r\n // Eligible - Limited\r\n EditorialApprovedLimited: 1,\r\n EditorialApprovedLimitedAppealRejected: 1,\r\n LowSupply: 1,\r\n LowQuality: 1,\r\n NegativeKeywordConflicts: 1,\r\n BidBelowFirstPageBid: 1,\r\n BudgetSuggestions: 1,\r\n AutoBiddingLimitedByNotEnoughConversions: 1,\r\n AutoBiddingLimitedByNotEnoughRevenue: 1,\r\n AutoBiddingLimitedInventoryLimit: 1,\r\n AutoBiddingLimitedMaxCPCRestriction: 1,\r\n AutoBiddingLimitedBudgetRestriction: 1,\r\n AutoBiddingLimitedUnAttainableTarget: 1,\r\n AutoBiddingPortfolioBidStrategyTrainingStatus: 1,\r\n AutoBiddingLearning: 1,\r\n\r\n // Critical issues\r\n CreditCardExpired: 2,\r\n IOExceeded: 2,\r\n PaymentInformationMissing: 2,\r\n InvalidFinancialStatusOther: 2,\r\n CampaignSuspended: 2,\r\n CampaignBudgetPaused: 2,\r\n DomainLanguageNotSupported: 2,\r\n AdGroupExpired: 2,\r\n EditorialRejected: 2,\r\n EditorialAppealRejected: 2,\r\n CampaignDeleted: 2,\r\n StoreIdNotAssociated: 2,\r\n AdGroupTargetingTooNarrow: 2,\r\n VideoExtensionVideoProcessingFailed: 2,\r\n VideoExtensionVideoTooSmall: 2,\r\n VideoExtensionVideoAspectRatioInvalid: 2,\r\n VideoExtensionVideoDurationInvalid: 2,\r\n VideoExtensionThumbnailProcessingFailed: 2,\r\n VideoExtensionThumbnailTooSmall: 2,\r\n VideoExtensionThumbnailAspectInvalid: 2,\r\n\r\n //Not Eligible\r\n CampaignUserPaused: 3,\r\n AdGroupUserPaused: 3,\r\n AdGroupDraft: 3,\r\n AdGroupPrivacyPending: 3,\r\n AdUserPaused: 3,\r\n EditorialPending: 3,\r\n AssociationDeleted: 3,\r\n KeywordUserPaused: 3,\r\n EditorialUnderAppeal: 3,\r\n UrlInvalid: 3,\r\n ApplicationNotFound: 3,\r\n ApplicationDestinationUrlMismatch: 3,\r\n PendingMetadataSync: 3,\r\n ProductTargetUserPaused: 3,\r\n AdExtensionDeleted: 3,\r\n AdExtensionAssociationDeleted: 3,\r\n AdNotPresent: 3,\r\n AdNotActive: 3,\r\n VideoExtensionProcessing: 3,\r\n};\r\n\r\n/**\r\n * Map delivery status input enum set to related category for the filter values to render\r\n *\r\n * @param {Array} enumSet - the enums that are valid for specific entity (like campaign)\r\n * @returns {Object} the configs(groupedItems, localized) needed by component/filter to render in category type for delivery status.\r\n*/\r\nfunction getDeliveryStatusCategoryForFilterBase(enumSet) {\r\n const groupedItems = [];\r\n const enumSetToUse = _.uniq(enumSet);\r\n\r\n const categoryEnumValuesMap = _.groupBy(enumSetToUse, (enumValue) => {\r\n return DeliveryStatusToCategoryMap[enumValue];\r\n });\r\n\r\n _.each(categoryEnumValuesMap, (enumValues, category) => {\r\n const mappedValues = _.map(enumValues, (value) => {\r\n return {\r\n value: mapEnumValueForFilterBase('DeliveryStatus', value),\r\n };\r\n });\r\n\r\n const categoryName = `FilterLocalization_DeliveryStatusCategories_${category}`;\r\n\r\n groupedItems.push({\r\n items: _.pluck(mappedValues, 'value'),\r\n name: categoryName,\r\n });\r\n });\r\n\r\n return groupedItems;\r\n}\r\n\r\n/**\r\n * Update delivery status setting for render it in category type in filter\r\n *\r\n * @param {Object} deliveryStatusOption - the option to update for filter\r\n * @param {Array} enumSet - the enums that are valid for specific entity (like campaign)\r\n * @returns {void}\r\n*/\r\nexport function updateDeliveryStatusOptionForFilterBase(deliveryStatusOption, enumSet) {\r\n // get configs needed for category type filter for delivery status, using the allowed values for adgroup\r\n const groupedItems = getDeliveryStatusCategoryForFilterBase(enumSet);\r\n\r\n //Delete enum properties to make delivery status not enum type anymore (enum has more priority in component/filter than category)\r\n if (deliveryStatusOption.enum && _.isArray(deliveryStatusOption.enum)) {\r\n delete deliveryStatusOption.enum;\r\n }\r\n _.extendOwn(deliveryStatusOption, {groupedItems, type: 'category', operators: ['in']});\r\n}\r\n\r\nfunction lambdaConvertForLabels(logic, secondLogic, operator) {\r\n return (values) => {\r\n // if logic is or then format should be like 'Labels/any(d:d/Id eq 1 or d/Id eq 2)'\r\n if (logic === 'or') {\r\n const fieldPrefix = 'd:';\r\n const fieldId = 'd/Id';\r\n let ids = '';\r\n\r\n _.each(values, (value, index) => {\r\n if (index > 0) {\r\n ids += ` ${logic} `;\r\n }\r\n ids += `${fieldId} ${operator} ${value}`;\r\n });\r\n const url = `Labels/${secondLogic}(${fieldPrefix}${ids})`;\r\n\r\n return url;\r\n }\r\n // if logic is and then format should be like\r\n // Labels/any(d:d/Id eq 1) and Labels/any(d:d/Id eq 2)\r\n const fieldId = 'd:d/Id';\r\n let url = '';\r\n\r\n _.each(values, (value, index) => {\r\n if (index > 0) {\r\n url += ` ${logic} `;\r\n }\r\n url += `Labels/${secondLogic}(${fieldId} ${operator} ${value})`;\r\n });\r\n return url;\r\n };\r\n}\r\n\r\nexport function updateFilterStateEntityForLabelsBase(options) {\r\n options.fields.push({\r\n name: 'Labels',\r\n operators: ['containsall', 'containsany', 'containsnone'],\r\n type: 'id',\r\n addtionalParams: {\r\n dataSource: undefined,\r\n },\r\n });\r\n return options;\r\n}\r\n\r\nexport function updateFilterStateOptionsForLabelsBase(options) {\r\n if (options) {\r\n options.odata = options.odata || {custom: {}};\r\n\r\n _.extendOwn(options.odata.custom, {\r\n Labels: {\r\n containsall: lambdaConvertForLabels('and', 'any', 'eq'),\r\n containsany: lambdaConvertForLabels('or', 'any', 'eq'),\r\n containsnone: lambdaConvertForLabels('and', 'all', 'ne'),\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction lambdaConvertForLanguages(logic, secondLogic, operator) {\r\n return (values) => {\r\n // if logic operator is 'or', format should be contained in a Parenthesis.\r\n // Ex. 'Languages/any(d:d eq Enum.Language'TraditionalChinese' or d eq Enum.Language'Danish')'\r\n if (logic === 'or') {\r\n const fieldPrefix = 'd:';\r\n const fieldId = 'd';\r\n let languages = '';\r\n\r\n _.each(values, (value, index) => {\r\n if (index > 0) {\r\n languages += ` ${logic} `;\r\n }\r\n languages += `${fieldId} ${operator} Enum.Language'${value}'`;\r\n });\r\n const url = `Languages/${secondLogic}(${fieldPrefix}${languages})`;\r\n\r\n return url;\r\n }\r\n // if logic operator is 'and', format should be like\r\n // Languages/any(d:d eq Enum.Language'All') and Languages/any(d:d eq Enum.Language'TraditionalChinese')\r\n const fieldId = 'd:d';\r\n let url = '';\r\n\r\n _.each(values, (value, index) => {\r\n if (index > 0) {\r\n url += ` ${logic} `;\r\n }\r\n url += `Languages/${secondLogic}(${fieldId} ${operator} Enum.Language'${value}')`;\r\n });\r\n return url;\r\n };\r\n}\r\n\r\nexport function updateFilterStateEntityForLanguagesBase(options) {\r\n options.fields.push({\r\n name: 'Languages',\r\n operators: ['containsall', 'containsany', 'containsnone'],\r\n type: 'multi-language',\r\n });\r\n\r\n return options;\r\n}\r\n\r\nexport function updateFilterStateOptionsForLanguagesBase(options) {\r\n if (options) {\r\n options.odata = options.odata || {custom: {}};\r\n\r\n _.extendOwn(options.odata.custom, {\r\n Languages: {\r\n containsall: lambdaConvertForLanguages('and', 'any', 'eq'),\r\n containsany: lambdaConvertForLanguages('or', 'any', 'eq'),\r\n containsnone: lambdaConvertForLanguages('and', 'all', 'ne'),\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport function updateFilterStateOptionsForExperiment(options) {\r\n if (options && Permissions.IsExperimentsEnabled) {\r\n options.odata = options.odata || {custom: {}};\r\n\r\n _.extendOwn(options.odata.custom, {\r\n IsExperiment: {\r\n eq: (val) => {\r\n const operator = val ? 'gt' : 'le';\r\n\r\n return `ExperimentId ${operator} 0`;\r\n },\r\n },\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { mapEnumValueForFilter } from '@bingads-webui-component-legacy/bingads-grid/shared/schema-util';\r\nimport { DeliveryStatusToCategoryMap } from '@bingads-webui-campaign-legacy/common-grid-config/filter/base-filter-config';\r\n\r\n/**\r\n * Map delivery status input enum set to related category for the filter values to render\r\n *\r\n * @param {Array} enumSet - the enums that are valid for specific entity (like campaign)\r\n * @returns {Object} the configs(groupedItems, localized) needed by component/filter to render in category type for delivery status.\r\n*/\r\n\r\nfunction getDeliveryStatusCategoryForFilter(enumSet, mockI18n) {\r\n const i18n = mockI18n || window.globalLegacyI18n.get('component/i18n/loader!legacy/global');\r\n const groupedItems = [];\r\n const enumSetToUse = _.uniq(enumSet);\r\n const localized = {};\r\n\r\n const categoryEnumValuesMap = _.groupBy(enumSetToUse, (enumValue) => {\r\n return DeliveryStatusToCategoryMap[enumValue];\r\n });\r\n\r\n _.each(categoryEnumValuesMap, (enumValues, category) => {\r\n const mappedValues = _.map(enumValues, (value) => {\r\n return {\r\n value: mapEnumValueForFilter('DeliveryStatus', value),\r\n localized: i18n.getString(`Label_DeliveryStatus_${value}`),\r\n };\r\n });\r\n\r\n const categoryName = `FilterLocalization_DeliveryStatusCategories_${category}`;\r\n const itemLocalized = _.object(_.pluck(mappedValues, 'value'), _.pluck(mappedValues, 'localized'));\r\n\r\n groupedItems.push({\r\n items: _.pluck(mappedValues, 'value'),\r\n localized: itemLocalized,\r\n name: categoryName,\r\n });\r\n\r\n localized[categoryName] = i18n.getString(categoryName);\r\n _.extendOwn(localized, itemLocalized);\r\n });\r\n\r\n return {\r\n groupedItems,\r\n localized,\r\n };\r\n}\r\n\r\n/**\r\n * Update delivery status setting for render it in category type in filter\r\n *\r\n * @param {Object} deliveryStatusOption - the option to update for filter\r\n * @param {Array} enumSet - the enums that are valid for specific entity (like campaign)\r\n * @returns {void}\r\n*/\r\n\r\nexport function updateDeliveryStatusOptionForFilter(deliveryStatusOption, enumSet, mockI18n) {\r\n // get configs needed for category type filter for delivery status, using the allowed values for adgroup\r\n const {groupedItems, localized} = getDeliveryStatusCategoryForFilter(enumSet, mockI18n);\r\n\r\n //Delete enum properties to make delivery status not enum type anymore (enum has more priority in component/filter than category)\r\n if (deliveryStatusOption.enum && _.isArray(deliveryStatusOption.enum)) {\r\n delete deliveryStatusOption.enum;\r\n }\r\n _.extendOwn(deliveryStatusOption, {groupedItems, localized, type: 'category', operators: ['in']});\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function selectionConfig(config) {\r\n return _.extend({\r\n enabled: true,\r\n headClasses: ['text-center'],\r\n bodyClasses: ['text-center'],\r\n }, config);\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport const goalInPilotingMap = {\r\n OfflineConversionGoal: 'IsOfflineConversionsSupported',\r\n InStoreTransactionGoal: 'IsInStoreTransactionAttributionSupported',\r\n MultiStageGoal: 'IsUETFunnelGoalSupported',\r\n};\r\n\r\n// schema is usually a reference or shallow copy here, please be caution when edit it.\r\nexport function filterEnumValuesFromProperty(schema, propertyName, predicate) {\r\n if (!_.isEmpty(schema.properties[propertyName])) {\r\n schema.properties[propertyName].enum = _.filter(schema.properties[propertyName].enum, predicate);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport { goalInPilotingMap, filterEnumValuesFromProperty } from '@bingads-webui-campaign-legacy/common-grid-config/util/schema-editor';\r\n\r\nexport function getErrorMessage(errorCode, i18n) {\r\n const defaultMessage = i18n.getString('UnifiedEventTracking_Tag_Creation_FailedToSaveTag');\r\n const messageMap = {\r\n TagWithSameNameAlreadyExistsUnderCustomer: i18n.getString('UnifiedEventTracking_Tags_DuplicateTagNameError'),\r\n InvalidTagName: i18n.getString('UnifiedEventTracking_Tags_PleaseEnterValidTagName'),\r\n TagNameNullOrEmpty: i18n.getString('UnifiedEventTracking_Tags_PleaseEnterValidTagName'),\r\n InvalidTagDescription: i18n.getString('UnifiedEventTracking_Tags_PleaseEnterValidTagDescription'),\r\n MaxUetTagPerCustomerLimitReached: i18n.getString('UnifiedEventTracking_Tags_MaxUetTagPerCustomerLimitReached'),\r\n CustomerUnderMigration: i18n.getString('UnifiedEventTracking_CustomerMigration'),\r\n SharedLibraryUserPermissionDenied: i18n.getString('SharedLibrary_UserPermissionDenied'),\r\n UpdateFailedForIsClarityTagEnabled: i18n.getString('UnifiedEventTracking_Tags_UpdateFailedForIsClarityTagEnabled'),\r\n };\r\n\r\n return messageMap[errorCode] || defaultMessage;\r\n}\r\n\r\nexport function cleanAlerts(alertIds) {\r\n _.each(alertIds, (alertId) => {\r\n window.App.views.alertCenter.dismiss(alertId);\r\n });\r\n}\r\n\r\nexport function processTypeEnumForGoals({ schema }) {\r\n filterEnumValuesFromProperty(schema, 'Type', (type) => {\r\n if (goalInPilotingMap[type]) {\r\n return _.result(PageContext.Permissions, goalInPilotingMap[type], false);\r\n } else {\r\n return true;\r\n }\r\n });\r\n\r\n // remove the 'Goal from tag' from the option; work item: 1114739\r\n schema.properties.Type.enum = _.reject(schema.properties.Type.enum, (item) => item === 'GoalFromTag');\r\n}\r\n\r\nexport function processTypeBooleanForGoals({ schema, chooseType }) {\r\n if (chooseType === 'radio-boolean' && !_.isEmpty(schema.properties.IsAccountLevel)) {\r\n schema.properties.IsAccountLevel.chooseType = 'radio-boolean';\r\n }\r\n}\r\n\r\nfunction parseConversion(text) {\r\n return _.isFinite(text) ? parseInt(text) : 0;\r\n}\r\n\r\nexport function deParseConversion(minutes) {\r\n if (_.isFinite(minutes)) {\r\n let tempPeriod = minutes;\r\n\r\n const Minutes = tempPeriod % 60;\r\n\r\n tempPeriod = parseInt(tempPeriod / 60);\r\n\r\n const Hours = tempPeriod % 24;\r\n\r\n const Days = parseInt(tempPeriod / 24);\r\n\r\n return {\r\n days: Days,\r\n hours: Hours,\r\n minutes: Minutes,\r\n };\r\n } else {\r\n throw new Error('The minutes is not a finite value');\r\n }\r\n}\r\n\r\nexport function getConversionWindowPeriodInMinutes(days, hours, minutes) {\r\n return (((parseConversion(days) * 24) + parseConversion(hours)) * 60) + parseConversion(minutes);\r\n}\r\n\r\nexport function getDefWithAccountInfo(goalItem) {\r\n const cid = PageContext.CurrentCustomer.Id;\r\n const aid = PageContext.CurrentAccount.Id;\r\n const uid = PageContext.CurrentUser.Id;\r\n const isInternalUser = PageContext.Permissions.IsInternalUser;\r\n const CCBaseUrl = PageContext.CCBaseUrl.toLowerCase();\r\n const accountInfo = {cid, aid, uid, isInternalUser, CCBaseUrl};\r\n const goalDef = _.extend({}, goalItem, accountInfo);\r\n\r\n return goalDef;\r\n}\r\n","import $ from 'jquery';\r\n\r\nimport { PopoverView, positions, contents } from '@bingads-webui-campaign-legacy/popover/index';\r\n\r\nexport function showUnAssignedDetails(\r\n item,\r\n target,\r\n className,\r\n title,\r\n htmlContent,\r\n) {\r\n return new PopoverView({\r\n item,\r\n target,\r\n className,\r\n position: positions.relativeToTableRow({\r\n marginBottom: $('footer > .navbar-footer').height(),\r\n }),\r\n }).setContent(\r\n new contents.TitledContent()\r\n .setTitle(title)\r\n .setBody({\r\n html: htmlContent,\r\n })\r\n );\r\n}\r\n","import _ from 'underscore';\r\nimport { startsWith } from 'underscore.string';\r\nimport { bingadsGridColumn as column } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport {\r\n Columns as ColumnsResource,\r\n SelectedColumns as SelectedColumnsResource,\r\n} from '@bingads-webui-component-legacy/bingads-grid/service/column-chooser-preferences';\r\nimport { getColumnConversions } from '@bingads-webui-campaign/column-conversions';\r\nimport trackingStatusTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/conversion-goals/grid/tracking-status-template.pug';\r\nimport tagIdTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/conversion-goals/grid/tag-id-template.pug';\r\nimport statusTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/conversion-goals/grid/status-template.pug';\r\nimport nameTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/conversion-goals/grid/name-template.pug';\r\nimport categoryColumnTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/conversion-goals/grid/category-template.pug';\r\nimport revenueTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/conversion-goals/grid/revenue-template.pug';\r\nimport smartGoalTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/conversion-goals/grid/goal-type-template.pug';\r\n\r\nconst noData = '-';\r\n\r\nexport const getColumnChooserConfig = ({\r\n i18n,\r\n isForVNext,\r\n columnConfig,\r\n permissions = {},\r\n}) => {\r\n const { dynamic = {} } = permissions;\r\n const {\r\n PartialConversions: IsPartialConversionsEnabled,\r\n ColumnConversion: IsColumnConversionEnabled,\r\n } = dynamic;\r\n const usePartialConversions = IsPartialConversionsEnabled && IsColumnConversionEnabled;\r\n const columnConversions = usePartialConversions ?\r\n getColumnConversions(columnConfig) : null;\r\n\r\n const columnNames = _.pluck(columnConfig, 'name');\r\n const locked = _.compact(['Status', 'Name', 'TrackingStatus', 'IsMainConversionGoal']);\r\n const columnChooserConfig = {\r\n categories: [{\r\n name: i18n.getString('Attributes'),\r\n options: _.map(_.reject(columnConfig, ({ name }) => startsWith(name, 'GoalPerformanceMetrics/')), ({ name, title }) => ({\r\n key: name,\r\n name: title,\r\n selectOption: _.indexOf(locked, name) >= 0 ? 'locked' : 'optional',\r\n })),\r\n }, {\r\n name: i18n.getString('Conversions'),\r\n options: _.map(_.filter(columnConfig, ({ name }) => startsWith(name, 'GoalPerformanceMetrics/')), ({ name, title }) => ({\r\n key: name,\r\n name: title,\r\n selectOption: _.indexOf(locked, name) >= 0 ? 'locked' : 'optional',\r\n })),\r\n }],\r\n selected: _.without(columnNames, 'Id'),\r\n locked,\r\n customToolbarIcon: isForVNext ? 'ba-TripleColumnSolid' : '',\r\n Columns: ColumnsResource,\r\n SelectedColumns: SelectedColumnsResource,\r\n i18n,\r\n isForVNext,\r\n columnConversions,\r\n };\r\n\r\n return columnChooserConfig;\r\n};\r\n\r\nfunction getConversionWindow(lookbackWindowInMinutes, i18n, property = 'UnifiedEventTracking_Goals_ConversionWindowTemplate') {\r\n if (!_.isFinite(lookbackWindowInMinutes)) {\r\n return noData;\r\n }\r\n\r\n const minsInAnHr = 60;\r\n const minsInADay = 24 * minsInAnHr;\r\n\r\n let windowInMins = lookbackWindowInMinutes;\r\n\r\n const days = Math.floor(windowInMins / minsInADay);\r\n\r\n windowInMins = windowInMins - (days * minsInADay);\r\n const hrs = Math.floor(windowInMins / minsInAnHr);\r\n const mins = windowInMins - (hrs * minsInAnHr);\r\n\r\n return i18n.getString(property, { days, hrs, mins });\r\n}\r\n\r\nfunction getTagIdLink({ IsUETDashboardEnabled, value, i18n }) {\r\n if (!_.isFinite(value)) {\r\n return noData;\r\n }\r\n\r\n return tagIdTemplate({ IsUETDashboardEnabled, value, i18n });\r\n}\r\n\r\nexport const getColumnConfig = ({\r\n newi18n,\r\n i18n,\r\n s$i18n,\r\n permissions,\r\n appConfig,\r\n isForVNext,\r\n}) => {\r\n const {\r\n IsViewThroughConversionEnabled: isViewThroughConversionEnabled,\r\n dynamic = {},\r\n } = permissions;\r\n\r\n const {\r\n PartialConversions: IsPartialConversionsEnabled,\r\n ColumnConversion: IsColumnConversionEnabled,\r\n UETDashboard: IsUETDashboardEnabled,\r\n AllowAutoGoalWizard: IsAllowAutoGoalWizard,\r\n } = dynamic;\r\n const usePartialConversions = IsPartialConversionsEnabled && IsColumnConversionEnabled;\r\n\r\n return _.map(_.compact([{\r\n name: 'Status',\r\n title: s$i18n.property('Goal', 'Status'),\r\n sortable: 'Status',\r\n property: _.identity,\r\n helpId: 'pop_BA_UET_Status',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('Goal', 'Status')}`,\r\n template: ({ value: tag }) => {\r\n return statusTemplate({\r\n value: tag.Status === 'Paused' ? 'Removed' : tag.Status,\r\n s$i18n,\r\n permissions,\r\n isReadOnly: tag.IsReadOnly || tag.Type === 'InStoreVisitGoal',\r\n });\r\n },\r\n html: isForVNext ? '
' : '',\r\n }, {\r\n name: 'Name',\r\n title: s$i18n.property('Goal', 'Name'),\r\n property: _.identity,\r\n sortable: 'Name',\r\n bodyClasses: 'UET-conversion-goals-column-Name',\r\n template: ({ value: goal }) => nameTemplate({\r\n isForVNext,\r\n name: goal.Name,\r\n ariaLabel: i18n.getString('ClickToEditGoal', { goalName: goal.Name }),\r\n showGoalSuggestion: (goal.Type === 'DestinationGoal' || goal.Type === 'EventGoal') && (goal.TrackingStatus === 'NoRecentConversion' || goal.TrackingStatus === 'TagInactive') && !goal.IsReadOnly,\r\n goalSuggestionAriaLabel: i18n.getString('Goal Suggestion'),\r\n isReadOnly: goal.IsReadOnly,\r\n isNonSupportGoal: goal.Type === 'InStoreVisitGoal',\r\n isAutoGoal: goal.IsAutoGoal,\r\n }),\r\n }, {\r\n name: 'Id',\r\n title: s$i18n.property('Goal', 'Id'),\r\n sortable: true,\r\n }, {\r\n name: 'Type',\r\n title: s$i18n.property('Goal', 'Type'),\r\n sortable: true,\r\n helpId: 'pop_BA_UET_Type',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('Goal', 'Type')}`,\r\n template: ({ value }) => {\r\n if (value === 'SmartGoal') {\r\n return smartGoalTemplate({\r\n isForVNext,\r\n value: i18n.getString('UnifiedEventTracking_Goal_Creation_Type_Smart'),\r\n ariaLabel: `${i18n.getString('Click to learn more about')} ${i18n.getString('UnifiedEventTracking_Goal_Creation_Type_Smart')}`,\r\n });\r\n }\r\n return s$i18n.value('Goal', 'Type', value);\r\n },\r\n }, IsAllowAutoGoalWizard && {\r\n name: 'IsAutoGoal',\r\n title: s$i18n.property('Goal', 'IsAutoGoal'),\r\n sortable: true,\r\n template: ({ value }) => {\r\n return value ?\r\n i18n.getString('UnifiedEventTracking_Goal_Creation_CreationSourceType_AutoGoal') :\r\n i18n.getString('UnifiedEventTracking_Goal_Creation_CreationSourceType_ManualGoal');\r\n },\r\n }, {\r\n name: 'IsAccountLevel',\r\n title: s$i18n.property('Goal', 'IsAccountLevel'),\r\n sortable: true,\r\n helpId: 'pop_BA_UET_Scope',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('Goal', 'IsAccountLevel')}`,\r\n template: ({ value }) => {\r\n return value ?\r\n i18n.getString('UnifiedEventTracking_Goal_Creation_TrackingType_CurrentAccount', { acctname: appConfig.get('CurrentAccount').Title }) :\r\n i18n.getString('UnifiedEventTracking_Goal_Creation_TrackingType_AllAccounts');\r\n },\r\n }, {\r\n name: 'IsMainConversionGoal',\r\n title: s$i18n.property('Goal', 'IsMainConversionGoal'),\r\n sortable: true,\r\n helpId: 'pop_BA_ConversionGoal_CountAsConv',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('Goal', 'IsMainConversionGoal')}`,\r\n template: ({ value }) => {\r\n return value ?\r\n i18n.getString('UnifiedEventTracking_Goals_IsMainConversionGoal_True') :\r\n i18n.getString('UnifiedEventTracking_Goals_IsMainConversionGoal_False');\r\n },\r\n }, {\r\n name: 'ConversionCountType',\r\n title: s$i18n.property('Goal', 'ConversionCountType'),\r\n property: _.identity,\r\n sortable: 'ConversionCountType',\r\n helpId: 'pop_BA_UET_Count',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('Goal', 'ConversionCountType')}`,\r\n template: ({ value: goal }) => {\r\n return goal.Type === 'SmartGoal' || _.isEmpty(goal.ConversionCountType) ? noData : i18n.getString(`Schema_GoalPerformanceMetrics_Property_ConversionCountType_Value_${goal.ConversionCountType}`);\r\n },\r\n }, {\r\n name: 'LookbackWindowInMinutes',\r\n title: s$i18n.property('Goal', 'LookbackWindowInMinutes'),\r\n property: _.identity,\r\n sortable: 'LookbackWindowInMinutes',\r\n helpId: 'pop_BA_UET_ConversionWindow',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('Goal', 'LookbackWindowInMinutes')}`,\r\n template: ({ value: goal }) => {\r\n return goal.Type === 'SmartGoal' ? noData : getConversionWindow(goal.LookbackWindowInMinutes, i18n);\r\n },\r\n }, {\r\n name: 'GoalCategory',\r\n title: s$i18n.property('Goal', 'GoalCategory'),\r\n sortable: true,\r\n helpId: 'pop_BA_ConversionGoal_GoalCategory',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('Goal', 'GoalCategory')}`,\r\n template: ({ value }) => {\r\n if (_.isNull(value) || value === 'None') {\r\n const unassigned = i18n.getString('Schema_Goal_Property_GoalCategory_Value_None');\r\n\r\n return categoryColumnTemplate({ unassigned, isForVNext });\r\n }\r\n return i18n.getString(`Schema_Goal_Property_GoalCategory_Value_${value}`);\r\n },\r\n }, {\r\n /* eslint-disable no-undef */\r\n name: 'AttributionModelType',\r\n title: newi18n.getString(_TL_('Attribution model type')),\r\n sortable: true,\r\n helpId: 'pop_BA_CampaignGrids_AttributionModelType',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${newi18n.getString(_TL_('Attribution model type'))}`,\r\n template: ({ value }) => {\r\n let attributionModelTypeStr = '';\r\n\r\n switch (value) {\r\n case 'Default':\r\n attributionModelTypeStr = newi18n.getString(_TL_('Last Click'));\r\n break;\r\n case 'External':\r\n attributionModelTypeStr = newi18n.getString(_TL_('External'));\r\n break;\r\n case 'LastTouch':\r\n attributionModelTypeStr = newi18n.getString(_TL_('Last Touch'));\r\n break;\r\n default:\r\n attributionModelTypeStr = value;\r\n }\r\n\r\n return attributionModelTypeStr;\r\n },\r\n /* eslint-enable no-undef */\r\n }, isViewThroughConversionEnabled && { // enable the View-Through window column when ViewThroughConversion feature is enabled\r\n name: 'ViewThroughLookbackWindowinMinutes',\r\n title: s$i18n.property('Goal', 'ViewThroughLookbackWindowInMinutes'),\r\n sortable: true,\r\n helpId: 'pop_BA_UET_VTCWindow ',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('Goal', 'ViewThroughLookbackWindowInMinutes')}`,\r\n template: ({ value }) => {\r\n return getConversionWindow(value, i18n, 'UnifiedEventTracking_Goals_ViewThroughConversionWindowTemplate');\r\n },\r\n }, isViewThroughConversionEnabled && { // enable the ViewThoughConversions column when ViewThroughConversion feature is enabled\r\n name: usePartialConversions ? 'GoalPerformanceMetrics/ViewThroughConversionsCredit' : 'GoalPerformanceMetrics/ViewThroughConversions',\r\n title: s$i18n.property('Goal', 'ViewThroughConversions'),\r\n sortable: true,\r\n helpId: 'pop_BA_CampaignGrids_ViewThrough',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('Goal', 'ViewThroughConversions')}`,\r\n template: ({ value }) => {\r\n if (!_.isFinite(value) || _.isNull(value)) {\r\n return noData;\r\n }\r\n\r\n return value;\r\n },\r\n columnConversion: usePartialConversions ? {\r\n sourceColumnName: 'GoalPerformanceMetrics/ViewThroughConversions',\r\n sourceSortableProperty: 'GoalPerformanceMetrics/ViewThroughConversions',\r\n targetSortableProperty: 'GoalPerformanceMetrics/ViewThroughConversionsCredit',\r\n } : {\r\n sourceColumnName: 'GoalPerformanceMetrics/ViewThroughConversionsCredit',\r\n sourceSortableProperty: 'GoalPerformanceMetrics/ViewThroughConversionsCredit',\r\n targetSortableProperty: 'GoalPerformanceMetrics/ViewThroughConversions',\r\n },\r\n }, {\r\n name: 'Tag/Id',\r\n title: s$i18n.property('Tag', 'Id'),\r\n sortable: true,\r\n helpId: 'pop_BA_UET_UETTag',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('Tag', 'Id')}`,\r\n template: ({ value }) => {\r\n return getTagIdLink({\r\n IsUETDashboardEnabled,\r\n value,\r\n i18n,\r\n });\r\n },\r\n }, {\r\n name: 'TrackingStatus',\r\n title: s$i18n.property('Goal', 'TrackingStatus'),\r\n property: _.identity,\r\n sortable: 'TrackingStatus',\r\n bodyClasses: 'UET-conversion-goals-column-TrackingStatus',\r\n helpId: 'pop_BA_UET_TrackingStatusGoal',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('Goal', 'TrackingStatus')}`,\r\n template: ({ value: goal }) => {\r\n return goal.Type === 'OfflineConversionGoal' || goal.Type === 'InStoreTransactionGoal' || goal.Type === 'ApplicationInstallGoal' || goal.Type === 'SmartGoal' || goal.Type === 'InStoreVisitGoal' || goal.IsReadOnly ? noData : trackingStatusTemplate({\r\n s$i18n,\r\n isForVNext,\r\n value: goal.TrackingStatus,\r\n isActiveTrackingStatus: (value) => value === 'RecordingConversions',\r\n });\r\n },\r\n }, isViewThroughConversionEnabled && {\r\n name: usePartialConversions ? 'GoalPerformanceMetrics/AllConversionsCredit' : 'GoalPerformanceMetrics/AllConversions',\r\n title: s$i18n.property('GoalPerformanceMetrics', 'AllConversions'),\r\n sortable: true,\r\n type: 'number',\r\n format: usePartialConversions ? 'decimal' : 'integer',\r\n helpId: 'pop_BA_ConversionGoal_AllConv',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('GoalPerformanceMetrics', 'AllConversions')}`,\r\n columnConversion: usePartialConversions ? {\r\n sourceColumnName: 'GoalPerformanceMetrics/AllConversions',\r\n sourceSortableProperty: 'GoalPerformanceMetrics/AllConversions',\r\n targetSortableProperty: 'GoalPerformanceMetrics/AllConversionsCredit',\r\n } : {\r\n sourceColumnName: 'GoalPerformanceMetrics/AllConversionsCredit',\r\n sourceSortableProperty: 'GoalPerformanceMetrics/AllConversionsCredit',\r\n targetSortableProperty: 'GoalPerformanceMetrics/AllConversions',\r\n },\r\n }, !isViewThroughConversionEnabled && {\r\n name: usePartialConversions ? 'GoalPerformanceMetrics/ConversionsCredit' : 'GoalPerformanceMetrics/Conversions',\r\n title: s$i18n.property('GoalPerformanceMetrics', 'AllConversions'),\r\n sortable: true,\r\n type: 'number',\r\n format: usePartialConversions ? 'decimal' : 'integer',\r\n helpId: 'pop_BA_ConversionGoal_AllConv',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('GoalPerformanceMetrics', 'AllConversions')}`,\r\n columnConversion: usePartialConversions ? {\r\n sourceColumnName: 'GoalPerformanceMetrics/Conversions',\r\n sourceSortableProperty: 'GoalPerformanceMetrics/Conversions',\r\n targetSortableProperty: 'GoalPerformanceMetrics/ConversionsCredit',\r\n } : {\r\n sourceColumnName: 'GoalPerformanceMetrics/ConversionsCredit',\r\n sourceSortableProperty: 'GoalPerformanceMetrics/ConversionsCredit',\r\n targetSortableProperty: 'GoalPerformanceMetrics/Conversions',\r\n },\r\n }, {\r\n // Rename to all conversions revenue when main goal selection is enabled\r\n name: 'GoalPerformanceMetrics/Revenue',\r\n title: s$i18n.property('GoalPerformanceMetrics', 'AllRevenue'),\r\n sortable: 'GoalPerformanceMetrics/Revenue',\r\n property: _.identity,\r\n type: 'number',\r\n helpId: 'pop_BA_ConversionGoal_AllConvRevenue',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('GoalPerformanceMetrics', 'AllRevenue')}`,\r\n template: ({ value: goal }) => {\r\n if (goal.IsReadOnly) {\r\n return noData;\r\n }\r\n if (goal.GoalValueType === 'NoValue' && goal.Type !== 'SmartGoal') {\r\n return revenueTemplate({ value: i18n.getString('ConversionGoals_Grid_Revenue_Unassigned'), isForVNext });\r\n }\r\n return goal.GoalPerformanceMetrics.Revenue || noData;\r\n },\r\n }, {\r\n name: usePartialConversions ? 'GoalPerformanceMetrics/PartialConversionRepeatRate' : 'GoalPerformanceMetrics/RepeatRate',\r\n title: s$i18n.property('GoalPerformanceMetrics', 'RepeatRate'),\r\n sortable: true,\r\n type: 'number',\r\n helpId: 'pop_BA_UET_RepeatRate',\r\n helpAriaLabelTextTemplate: `${i18n.getString('Click to learn more about')} ${s$i18n.property('GoalPerformanceMetrics', 'RepeatRate')}`,\r\n columnConversion: usePartialConversions ? {\r\n sourceColumnName: 'GoalPerformanceMetrics/RepeatRate',\r\n sourceSortableProperty: 'GoalPerformanceMetrics/RepeatRate',\r\n targetSortableProperty: 'GoalPerformanceMetrics/PartialConversionRepeatRate',\r\n } : {\r\n sourceColumnName: 'GoalPerformanceMetrics/PartialConversionRepeatRate',\r\n sourceSortableProperty: 'GoalPerformanceMetrics/PartialConversionRepeatRate',\r\n targetSortableProperty: 'GoalPerformanceMetrics/RepeatRate',\r\n },\r\n }]), column);\r\n};\r\n","import _ from 'underscore';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport explanationTemplate from '@bingads-webui-campaign-legacy/common-grid-plugins/perf-data-explanation/template.pug';\r\n// eslint-disable-next-line\r\nimport _bingads_webui_component_legacy_timezonemapper_index from '@bingads-webui-component-legacy/timezonemapper/index';\r\n// eslint-disable-next-line\r\nconst { getTimeZoneForDateRangeText } = _bingads_webui_component_legacy_timezonemapper_index;\r\nimport { appendLearnMoreLink } from '@bingads-webui-component-legacy/help/index';\r\n\r\nexport class PerfDataExplanationView extends DeterministicView {\r\n initialize({ stampNotes, i18n }) {\r\n this.i18n = i18n;\r\n this.stampNotes = stampNotes || appendLearnMoreLink(i18n.get('BITimeStampNotes_Label'), 'ext54480');\r\n this.accountTimeZoneText = getTimeZoneForDateRangeText();\r\n }\r\n\r\n template(locals) {\r\n return explanationTemplate(_.extend({ appendLearnMoreLink }, locals));\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { PerfDataExplanationView } from '@bingads-webui-campaign-legacy/common-grid-plugins/perf-data-explanation/perf-data-explanation-view';\r\nimport { defineGridPlugin } from '@bingads-webui/projection-grid-plugin';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/common-grid-plugins');\r\n\r\nexport const perfDataExplanationPlugin = defineGridPlugin(\r\n 'perfDataExplanation',\r\n ['gridView'],\r\n (gridView, config) => {\r\n const perfDataExplanationView = new PerfDataExplanationView(_.extend({ i18n }, config)).render();\r\n\r\n gridView.appendFootRows([{\r\n view: perfDataExplanationView,\r\n classes: ['noborder'],\r\n }]);\r\n return perfDataExplanationView;\r\n\r\n }\r\n);\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsdataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { selectionConfig } from '@bingads-webui-campaign-legacy/common-grid-config/selection';\r\nimport { sortableHeaderTemplate, validateOrder} from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport stateManager from '@bingads-webui-component-legacy/statemanager/campaignStateManager';\r\nimport preferenceService from '@bingads-webui-component-legacy/preference/service/index';\r\n\r\nexport class GridConfig {\r\n constructor({\r\n columnConfig,\r\n isForVNext,\r\n schema,\r\n preferenceConfig,\r\n options: {\r\n customHeaderOffset,\r\n viewport,\r\n },\r\n i18n,\r\n permissions,\r\n }) {\r\n const tableName = i18n.getString('UnifiedEventTracking_Goals_Title');\r\n\r\n const gridName = preferenceConfig.name || 'ConversionGoalsGrid';\r\n\r\n _.extend(this, {\r\n name: gridName,\r\n dataSource: {\r\n type: 'jsdata',\r\n entity: jsdataCampaign.Goal,\r\n primaryKey: 'Id',\r\n schema,\r\n },\r\n query: {\r\n options: {\r\n cacheResponse: false,\r\n },\r\n entitySet: edm.currentAccount.Goals.toJSON(),\r\n query: _.defaults(preferenceConfig.dataSource.query, {\r\n $expand: 'Tag($select=Id)',\r\n }),\r\n orderby: preferenceConfig.dataSource.orderby,\r\n },\r\n scrolling: {\r\n header: {\r\n type: 'sticky',\r\n offset: customHeaderOffset || (() => $('nav.navbar-default.navbar-fixed-top').height()),\r\n attributes: { 'aria-label': i18n.getString('{{tableName}} table header', { tableName }) },\r\n },\r\n virtualized: true,\r\n },\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': tableName },\r\n rows: {\r\n headRows: isForVNext ? [\r\n 'column-header-rows',\r\n ] :\r\n helpers.singleToolbarHeadRows(),\r\n },\r\n columns: columnConfig,\r\n config,\r\n stateManager,\r\n preferenceService,\r\n sortableHeader: _.defaults(preferenceConfig.sortableHeader, {\r\n name: 'Name',\r\n directionIndex: 0,\r\n template: sortableHeaderTemplate,\r\n }),\r\n }, isForVNext ? {} : {\r\n selection: selectionConfig({ single: true }),\r\n });\r\n\r\n validateOrder(preferenceConfig, columnConfig, gridName, permissions);\r\n if (viewport) {\r\n this.scrolling.viewport = viewport;\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Promise from 'bluebird';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { constants } from '@bingads-webui/projection-grid-toolbar';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { notificationApi, NotificationLevel } from '@bingads-webui-react/notification-center';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsdataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { triggerQualtricsEvent } from '@bingads-webui-campaign/qualtrics';\r\nimport UpdateStatusView from '@bingads-webui-component-legacy/update-status/view/index';\r\nimport appConfig from '@bingads-webui-component-legacy/config/index';\r\nimport TagViewer from '@bingads-webui-static-legacy/uet/view/tagViewer';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport { processTypeEnumForGoals, processTypeBooleanForGoals, getDefWithAccountInfo } from '@bingads-webui-campaign-legacy/conversion-tracking/common/util/index';\r\nimport { handleSortChange } from '@bingads-webui-campaign-legacy/bingadsgrid/service/state-manager-helper';\r\nimport { isActiveTrackingStatusForGoals, showTrackingStatusDetails } from '@bingads-webui-campaign-legacy/common-grid-config/controls/tracking-status-popover';\r\nimport { contents } from '@bingads-webui-campaign-legacy/popover/index';\r\nimport helpLinkTemplate from '@bingads-webui-campaign-legacy/common-grid-config/controls/help-link-template.pug';\r\nimport trackingStatusPopoverTemplate from '@bingads-webui-campaign-legacy/common-grid-config/controls/tracking-status-popover-template.pug';\r\nimport unassignedCategoryPopoverTemplate from './unassigned-category-popover-template.pug';\r\nimport unassignedRevenuePopoverTemplate from './unassigned-revenue-popover-template.pug';\r\nimport smartGoalTypePopoverTemplate from './goal-type-popover-template.pug';\r\nimport goalReadOnlyPopoverTemplate from './goal-read-only-popover-template.pug';\r\nimport { showUnAssignedDetails } from './unassigned-detail-popover';\r\nimport { getColumnConfig, getColumnChooserConfig } from './column-config';\r\nimport { getDefaultPlugins } from './plugin-config';\r\nimport { GridConfig } from './grid-config';\r\nimport { startConversionAdvisor } from '@bingads-webui-campaign-legacy/popover/conversion-advisor-entrypoint';\r\n\r\nconst schema = window.globalLegacySchema.get('Goal');\r\nconst s$i18n = window.globalLegacyI18n.get('$/schema-i18n!campaign');\r\n\r\nprocessTypeEnumForGoals({ schema });\r\nprocessTypeBooleanForGoals({ schema, chooseType: 'radio-boolean' });\r\n\r\nexport class ConversionGoalsGrid extends DeterministicWrapperView {\r\n initialize(options) {\r\n super.initialize(options);\r\n this.initializeInstrumentation();\r\n }\r\n\r\n viewFactory({\r\n newi18n,\r\n i18n,\r\n preferenceConfig,\r\n $blocker,\r\n permissions = {},\r\n pgridFactory,\r\n pluginFactories,\r\n extendPlugins = () => [],\r\n isForVNext,\r\n customHeaderOffset,\r\n viewport,\r\n filterService,\r\n router,\r\n showPopup,\r\n setShowAutoGoalDrawer,\r\n perfMarker,\r\n }) {\r\n this.isForVNext = isForVNext;\r\n this.filterService = filterService;\r\n this.router = router;\r\n this.resource = jsdataCampaign.Goal;\r\n this.newi18n = newi18n;\r\n this.i18n = i18n;\r\n this.$blocker = $blocker;\r\n this.showPopup = showPopup;\r\n this.setShowAutoGoalDrawer = setShowAutoGoalDrawer;\r\n this.permissions = permissions;\r\n this.isInitialGrid = true;\r\n\r\n const columnConfig = getColumnConfig({\r\n newi18n,\r\n i18n,\r\n s$i18n,\r\n permissions,\r\n appConfig,\r\n isForVNext,\r\n });\r\n const gridConfig = new GridConfig({\r\n columnConfig,\r\n isForVNext,\r\n schema,\r\n preferenceConfig,\r\n options: {\r\n customHeaderOffset,\r\n viewport,\r\n },\r\n i18n,\r\n permissions,\r\n });\r\n const defaultPlugins = getDefaultPlugins({\r\n perfMarker,\r\n view: this,\r\n $blocker,\r\n appConfig,\r\n i18n,\r\n isForVNext,\r\n s$i18n,\r\n schema,\r\n columnChooserConfig: getColumnChooserConfig({\r\n i18n,\r\n isForVNext,\r\n columnConfig,\r\n permissions,\r\n }),\r\n pluginFactories,\r\n permissions,\r\n });\r\n const extendedPlugins = extendPlugins({\r\n view: this,\r\n gridConfig,\r\n });\r\n\r\n this.grid = pgridFactory({\r\n gridConfig,\r\n plugins: defaultPlugins.concat(extendedPlugins),\r\n preferenceConfig: preferenceConfig || {},\r\n });\r\n this.gridView = this.grid.gridView;\r\n if (!isForVNext) {\r\n // row selection feature is only available in old UI\r\n this.gridView.on('didSelect', (selected) => {\r\n const toolbarEditor = this.grid.toolbar.gridToolbarGroup.toolbarWithName(constants.DEFAULT_TOOLBAR_NAME);\r\n\r\n toolbarEditor.update({\r\n id: 'dropdown-edit',\r\n disabled: _.isEmpty(selected),\r\n });\r\n });\r\n }\r\n this.gridView.on('didUpdate', (changes) => {\r\n // for the perf issue, should not patch preference when init view\r\n if (this.isInitialGrid) {\r\n this.isInitialGrid = false;\r\n return;\r\n }\r\n handleSortChange(changes, this.gridView, gridConfig.name);\r\n });\r\n\r\n if (this.filterService) {\r\n this.listenTo(this.filterService, 'filter-state-changed', () => {\r\n updateGridQuery(this.gridView, this.filterService.getCombinedFilter(), true);\r\n });\r\n }\r\n\r\n return this.gridView;\r\n }\r\n\r\n get events() {\r\n return _.defaults({\r\n 'click .edit-goal-link': (e) => {\r\n const { Id } = this.gridView.itemOfElement(e.target);\r\n\r\n this.router.navigateToGoalEditingPage({ goalId: Id });\r\n },\r\n 'click .link-tag-id': (e) => {\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n if (!_.isEmpty(item)) {\r\n if (item.TrackingStatus === 'InactiveDueToTagUnavailable') {\r\n notificationApi.add({\r\n severity: NotificationLevel.Error,\r\n title: '',\r\n message: this.i18n.getString('ConversionGoals_Grid_TrackingStatusMessage_InactiveDueToTagUnavailable'),\r\n target: 'FloatingBanner',\r\n });\r\n return;\r\n }\r\n this.router.navigateToTagIdPage({ tagId: item.Tag.Id });\r\n }\r\n },\r\n 'click .link-tag': (e) => {\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n if (!_.isEmpty(item)) {\r\n if (item.TrackingStatus === 'InactiveDueToTagUnavailable') {\r\n notificationApi.add({\r\n severity: NotificationLevel.Error,\r\n title: '',\r\n message: this.i18n.getString('ConversionGoals_Grid_TrackingStatusMessage_InactiveDueToTagUnavailable'),\r\n target: 'FloatingBanner',\r\n });\r\n return;\r\n }\r\n jsdataCampaign.Tag.find(item.Tag.Id)\r\n .then((Tag) => {\r\n new TagViewer({\r\n tag: {\r\n name: Tag.Name,\r\n id: Tag.Id,\r\n script: Tag.TrackingCode,\r\n },\r\n }).render();\r\n });\r\n }\r\n },\r\n 'click .uet-tags-grid__tracking-status-detail': 'onShowTrackingStatusDetails',\r\n 'click .goals-grid__category-detail': 'onShowUnassignedCategoryPopup',\r\n 'click .goals-grid__revenue-detail': 'onShowUnassignedRevenuePopup',\r\n 'click .goals-grid__smart-goal': 'onShowSmartGoalPopup',\r\n 'click .goals-grid__goal-isAutoGoal': 'onShowGoalEditDrawer',\r\n 'click .goals-grid__goal-readonly': 'onShowGoalReadOnlyPopup',\r\n 'click .goals-grid__goal-nonsupportGoal': 'onShowGoalNotSupportedPopup',\r\n 'click .conversion-goals-light-bulb': 'onShowGoalSuggestion',\r\n 'click .grid-cell .statuschangehover': (e) => {\r\n const resource = this.gridView.get('dataSource').entity;\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n if (_.isEmpty(item)) {\r\n return;\r\n }\r\n e.stopPropagation();\r\n if (this.updateStatusView) {\r\n this.updateStatusView.remove();\r\n this.updateStatusView = null;\r\n }\r\n\r\n const stateWhitelist = ['Active', 'Paused'];\r\n\r\n let itemToUpdate = _.omit(item, 'Status');\r\n\r\n if (itemToUpdate.ViewThroughLookbackWindowinMinutes === 0) {\r\n delete itemToUpdate.ViewThroughLookbackWindowinMinutes;\r\n }\r\n\r\n this.updateStatusView = new UpdateStatusView({\r\n Id: item.Id,\r\n Status: item.Status,\r\n schema,\r\n entitySet: edm.currentAccount.Goals,\r\n extendData: itemToUpdate,\r\n afterChange: (err) => {\r\n if (err && err.status === 400) {\r\n const errCode = err.responseJSON && err.responseJSON.value && err.responseJSON.value[0] && err.responseJSON.value[0].Code;\r\n\r\n notificationApi.add({\r\n severity: NotificationLevel.Error,\r\n title: '',\r\n message: errCode ? this.i18n.getString(`ConversionGoals_Grid_ErrorMessage_${errCode}`) : this.i18n.getString('GenericErrorMessage_Short'),\r\n target: 'FloatingBanner',\r\n });\r\n } else {\r\n resource.ejectAll();\r\n this.gridView.refresh(true);\r\n }\r\n },\r\n beforeRemove: () => {\r\n this.updateStatusView = null;\r\n if (item.Type === 'SmartGoal') {\r\n triggerQualtricsEvent('UserPauseSmartGoal');\r\n }\r\n },\r\n stateWhitelist,\r\n }).render();\r\n\r\n $(e.target).closest('td', this.el).append(this.updateStatusView.el);\r\n },\r\n }, this.isForVNext ? {\r\n 'mouseenter .uet-tags-grid__tracking-status-detail': 'onShowTrackingStatusDetails',\r\n 'mouseenter .goals-grid__category-detail': 'onShowUnassignedCategoryPopup',\r\n 'mouseenter .goals-grid__revenue-detail': 'onShowUnassignedRevenuePopup',\r\n 'mouseenter .goals-grid__smart-goal': 'onShowSmartGoalPopup',\r\n 'mouseenter .goals-grid__goal-readonly': 'onShowGoalReadOnlyPopup',\r\n 'mouseleave .goals-grid__category-detail': 'hidePopup',\r\n 'mouseleave .UET-conversion-goals-column-TrackingStatus': 'hidePopup',\r\n 'mouseleave .goals-grid__revenue-detail': 'hidePopup',\r\n 'mouseleave .goals-grid__smart-goal': 'hidePopup',\r\n 'mouseleave .goals-grid__goal-readonly': 'hidePopup',\r\n } : {});\r\n }\r\n\r\n initializeInstrumentation() {\r\n const scenarios = {\r\n testConversionGoals: instrumentation.testConversionGoals.create(),\r\n };\r\n\r\n this.activities = {\r\n clickOnGoalBulbIcon: scenarios.testConversionGoals.clickOnGoalBulbIcon.create(),\r\n clickOnTestThisGoalFromGoalBulbPopup: scenarios.testConversionGoals.clickOnTestThisGoalFromGoalBulbPopup.create(),\r\n clickOnTestThisGoalFromTrackingStatusPopup: scenarios.testConversionGoals.clickOnTestThisGoalFromTrackingStatusPopup.create(),\r\n };\r\n this.activities.clickOnGoalBulbIcon.monitor('onShowGoalSuggestion', this);\r\n }\r\n\r\n hidePopup(e) {\r\n if ($(e.relatedTarget).closest('#popup-callout').length === 0) {\r\n this.trigger('closePopup');\r\n }\r\n }\r\n\r\n onShowGoalSuggestion(e) {\r\n this.onShowTrackingStatusPopover(e,\r\n this.i18n.getString('Test conversion goal'),\r\n 'ConversionGoals_Grid_TestConversionGoalsMessage_',\r\n this.i18n.getString('UnifiedEventTracking_TestConversionGoal_TestInAdvisorExtension'));\r\n }\r\n\r\n onShowTrackingStatusDetails(e) {\r\n this.onShowTrackingStatusPopover(e);\r\n }\r\n\r\n onShowTrackingStatusPopover(e, title = this.i18n.getString('UETTags_Grid_ColumnTrackingStatus'), trackingStatusMessagePrefix = 'ConversionGoals_Grid_TrackingStatusMessage_', customExtensionEntranceText = '') {\r\n const item = this.gridView.itemOfElement(e.target);\r\n const testGoalClickActivity = customExtensionEntranceText ? this.activities.clickOnTestThisGoalFromGoalBulbPopup : this.activities.clickOnTestThisGoalFromTrackingStatusPopup;\r\n const isUnverifiedOrInactive = item.TrackingStatus === 'Unverified' || item.TrackingStatus === 'TagInactive';\r\n const isNoRecentConversions = item.TrackingStatus === 'NoRecentConversion';\r\n const isTrackingStatusColumn = title === this.i18n.getString('UETTags_Grid_ColumnTrackingStatus');\r\n\r\n if (_.isEmpty(item)) {\r\n return;\r\n }\r\n if (this.isForVNext && _.isFunction(this.showPopup)) {\r\n const a11yId = (suffix) => `${_.uniqueId('a11y-')}__${suffix}`;\r\n const contentView = new contents.TitledContent()\r\n .setBody({\r\n html: trackingStatusPopoverTemplate({\r\n i18n: this.i18n,\r\n helpLinkTemplate,\r\n troubleshootTopic: 'app51206',\r\n value: item.TrackingStatus,\r\n a11yId,\r\n isActiveTrackingStatus: isActiveTrackingStatusForGoals,\r\n isUnverifiedOrInactive,\r\n isNoRecentConversions,\r\n isTrackingStatusColumn,\r\n trackingStatusMessagePrefix,\r\n customExtensionEntranceText,\r\n isInPilot: this.permissions.IsConversionAdvisorEntryLinkEnabled,\r\n isUETDashboardEnabled: this.permissions.dynamic.UETDashboard,\r\n testType: item.Type,\r\n isClarityGoal: !!item.ClarityEventDefinitionId,\r\n }),\r\n }).delegateEvents({\r\n 'click .uetdashboard': () => {\r\n if (item.TrackingStatus === 'InactiveDueToTagUnavailable') {\r\n notificationApi.add({\r\n severity: NotificationLevel.Error,\r\n title: '',\r\n message: this.i18n.getString('ConversionGoals_Grid_TrackingStatusMessage_InactiveDueToTagUnavailable'),\r\n target: 'FloatingBanner',\r\n });\r\n return;\r\n }\r\n this.router.navigateToTagIdPage({ tagId: item.Tag.Id });\r\n },\r\n 'click .extension': () => {\r\n let goalDef = getDefWithAccountInfo(item);\r\n\r\n if (testGoalClickActivity && testGoalClickActivity.trace) {\r\n testGoalClickActivity.trace(\r\n 'open extension entrance from conversion goals grid test conversion goals popup',\r\n item.TrackingStatus);\r\n }\r\n\r\n startConversionAdvisor(goalDef);\r\n },\r\n });\r\n\r\n this.showPopup({\r\n containerSelector: '#rejectionContainer',\r\n title,\r\n contentView,\r\n event: e,\r\n parentView: this,\r\n popoverClassName: 'trackingStatusPopover',\r\n });\r\n } else {\r\n const goalItemWithAccountInfo = getDefWithAccountInfo(item);\r\n\r\n showTrackingStatusDetails(\r\n goalItemWithAccountInfo,\r\n this.$(e.target),\r\n 'conversion-goals-grid__tracking-status-popover',\r\n isActiveTrackingStatusForGoals,\r\n this.i18n,\r\n trackingStatusMessagePrefix,\r\n title,\r\n customExtensionEntranceText,\r\n );\r\n }\r\n }\r\n\r\n onShowUnassignedCategoryPopup(e) {\r\n const title = this.i18n.getString('UnifiedEventTracking_Goals_GoalCategory');\r\n const popupMessage = this.i18n.getString('ConversionGoals_Grid_Category_Unassigned_Msg');\r\n const a11yId = (suffix) => `${_.uniqueId('a11y-')}__${suffix}`;\r\n\r\n if (this.isForVNext && _.isFunction(this.showPopup)) {\r\n const contentView = new contents.TitledContent()\r\n .setBody({\r\n html: unassignedCategoryPopoverTemplate({\r\n a11yId,\r\n popupMessage,\r\n }),\r\n });\r\n\r\n this.showPopup({\r\n containerSelector: '#rejectionContainer',\r\n title,\r\n contentView,\r\n event: e,\r\n parentView: this,\r\n });\r\n } else {\r\n showUnAssignedDetails(\r\n this.gridView.itemOfElement(e.target),\r\n this.$(e.target),\r\n 'conversion-goals-grid__unassigned-category-popover',\r\n title,\r\n unassignedCategoryPopoverTemplate({\r\n a11yId,\r\n popupMessage,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n onShowUnassignedRevenuePopup(e) {\r\n const title = this.i18n.getString('ConversionGoals_Grid_Revenue_Unassigned');\r\n const a11yId = (suffix) => `${_.uniqueId('a11y-')}__${suffix}`;\r\n\r\n if (this.isForVNext && _.isFunction(this.showPopup)) {\r\n const contentView = new contents.TitledContent()\r\n .setBody({\r\n html: unassignedRevenuePopoverTemplate({\r\n a11yId,\r\n i18n: this.i18n,\r\n }),\r\n });\r\n\r\n this.showPopup({\r\n containerSelector: '#rejectionContainer',\r\n title,\r\n contentView,\r\n event: e,\r\n parentView: this,\r\n });\r\n } else {\r\n showUnAssignedDetails(\r\n this.gridView.itemOfElement(e.target),\r\n this.$(e.target),\r\n 'conversion-goals-grid__unassigned-revenue-popover',\r\n title,\r\n unassignedRevenuePopoverTemplate({\r\n a11yId,\r\n i18n: this.i18n,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n onShowSmartGoalPopup(e) {\r\n const title = this.i18n.getString('ConversionGoals_Grid_SmartGoal_Popover_Title');\r\n const a11yId = (suffix) => `${_.uniqueId('a11y-')}__${suffix}`;\r\n\r\n if (this.isForVNext && _.isFunction(this.showPopup)) {\r\n const contentView = new contents.TitledContent()\r\n .setBody({\r\n html: smartGoalTypePopoverTemplate({\r\n a11yId,\r\n i18n: this.i18n,\r\n }),\r\n });\r\n\r\n this.showPopup({\r\n containerSelector: '#rejectionContainer',\r\n title,\r\n contentView,\r\n event: e,\r\n parentView: this,\r\n });\r\n } else {\r\n showUnAssignedDetails(\r\n this.gridView.itemOfElement(e.target),\r\n this.$(e.target),\r\n 'conversion-goals-grid__smartgoal-popover',\r\n title,\r\n smartGoalTypePopoverTemplate({\r\n a11yId,\r\n i18n: this.i18n,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n onShowGoalEditDrawer(e) {\r\n if (!_.get(this.permissions, ['dynamic', 'AllowAutoGoalWizard'])) {\r\n return;\r\n }\r\n if (this.isForVNext && _.isFunction(this.setShowAutoGoalDrawer)) {\r\n const goal = this.gridView.itemOfElement(e.target);\r\n\r\n this.setShowAutoGoalDrawer(true /*shouldShow*/, goal);\r\n }\r\n }\r\n\r\n onShowGoalReadOnlyPopup(e) {\r\n const title = this.i18n.getString('ConversionGoals_Grid_Goal_ReadOnly_Popover_Title');\r\n const popupMessage = this.i18n.getString('ConversionGoals_Grid_Goal_ReadOnly_Popover_Message');\r\n const a11yId = (suffix) => `${_.uniqueId('a11y-')}__${suffix}`;\r\n\r\n if (this.isForVNext && _.isFunction(this.showPopup)) {\r\n const contentView = new contents.TitledContent()\r\n .setBody({\r\n html: goalReadOnlyPopoverTemplate({\r\n a11yId,\r\n popupMessage,\r\n }),\r\n });\r\n\r\n this.showPopup({\r\n containerSelector: '#rejectionContainer',\r\n title,\r\n contentView,\r\n event: e,\r\n parentView: this,\r\n });\r\n }\r\n }\r\n\r\n onShowGoalNotSupportedPopup(e) {\r\n const title = this.i18n.getString('ConversionGoals_Grid_Goal_NotSupported_Popover_Title');\r\n const popupMessage = this.i18n.getString('ConversionGoals_Grid_Goal_NotSupported_Popover_Message');\r\n const a11yId = (suffix) => `${_.uniqueId('a11y-')}__${suffix}`;\r\n\r\n if (this.isForVNext && _.isFunction(this.showPopup)) {\r\n const contentView = new contents.TitledContent()\r\n .setBody({\r\n html: goalReadOnlyPopoverTemplate({\r\n a11yId,\r\n popupMessage,\r\n }),\r\n });\r\n\r\n this.showPopup({\r\n containerSelector: '#rejectionContainer',\r\n title,\r\n contentView,\r\n event: e,\r\n parentView: this,\r\n });\r\n }\r\n }\r\n\r\n updateAllStatus(status) {\r\n const resource = this.gridView.get('dataSource').entity;\r\n const selectedItem = _.omit(this.gridView.selectedItems()[0], 'FlexTagScript', 'CampaignAnalyticsGoalName');\r\n const currentStatus = selectedItem.Status;\r\n\r\n if (currentStatus !== status) {\r\n resource.update(selectedItem.Id, _.defaults({\r\n '@odata.type': `#Model.${selectedItem.Type}`,\r\n Status: status,\r\n }, selectedItem), {\r\n afterUpdate: () => {\r\n selectedItem.Status = status;\r\n return Promise.resolve(selectedItem);\r\n },\r\n }).then(() => {\r\n this.gridView.refresh(true);\r\n }).finally(withUiBlock(this.$blocker, this.i18n.getString('loadingtext')));\r\n }\r\n }\r\n\r\n renderTrunk() {\r\n if (this.isForVNext) {\r\n this.filterService.initializeCombinedFilterPromise.then(() => {\r\n updateGridQuery(this.gridView, this.filterService.getCombinedFilter(), true);\r\n });\r\n }\r\n super.renderTrunk();\r\n }\r\n\r\n remove() {\r\n if (this.updateStatusView) {\r\n this.updateStatusView.remove();\r\n this.updateStatusView = null;\r\n }\r\n return super.remove();\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport dateFilterPlugin from '@bingads-webui-campaign-legacy/bingadsgrid/vnext/plugin/date-filter';\r\nimport { perfDataExplanationPlugin } from '@bingads-webui-campaign-legacy/common-grid-plugins/perf-data-explanation/index';\r\nimport { performanceLogPlugin, perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport { appendLearnMoreLink } from '@bingads-webui-component-legacy/help/index';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { toolbarPlugin, helpers } from '@bingads-webui/projection-grid-toolbar';\r\n\r\nexport const getDefaultPlugins = ({\r\n view,\r\n $blocker,\r\n appConfig,\r\n i18n,\r\n isForVNext,\r\n columnChooserConfig,\r\n pluginFactories,\r\n permissions,\r\n perfMarker,\r\n}) => _.compact([\r\n { plugin: perfMarkerPlugin, config: { appConfig, marker: perfMarker } },\r\n { plugin: a11yPlugin, config: { i18n } },\r\n !isForVNext && { plugin: assistedSelectionPlugin },\r\n { plugin: dateFilterPlugin },\r\n !isForVNext && {\r\n plugin: perfDataExplanationPlugin,\r\n config: {\r\n stampNotes: appendLearnMoreLink(i18n.getString('BIConversionStampNotes_Label'), 'ext54480'),\r\n },\r\n },\r\n {\r\n plugin: performanceLogPlugin,\r\n config: { appConfig, logger },\r\n },\r\n {\r\n plugin: pluginFactories.columnChooserPlugin,\r\n config: columnChooserConfig,\r\n },\r\n {\r\n plugin: pluginFactories.paginationPlugin,\r\n config: {\r\n pageSize: 20,\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n pageNumberLabelText: i18n.getString('Grid_Page_Number_Label_Text'),\r\n pageSizeText: i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: i18n.getString('Grid_PageOf'),\r\n resetPageNumberOnSort: true,\r\n },\r\n },\r\n {\r\n plugin: pluginFactories.uiBlockerPlugin,\r\n config: {\r\n el: $blocker,\r\n text: i18n.getString('loadingtext'),\r\n },\r\n },\r\n {\r\n plugin: placeholderPlugin,\r\n config: {\r\n container: isForVNext ? '.grid-noresult' : '.goals-grid__placeholder',\r\n text: i18n.getString('Grid_NoRecords'),\r\n filteredContainer: isForVNext ? '.grid-noresult' : '.goals-grid__placeholder',\r\n filteredEmptyText: i18n.getString('Grid_NoFilteredRecords'),\r\n ignoreFilters: [{\r\n 'Status': {\r\n $in: null,\r\n },\r\n }],\r\n },\r\n },\r\n {\r\n plugin: toolbarPlugin,\r\n config: helpers.singleToolbar({\r\n items: _.compact([{\r\n type: 'button',\r\n id: 'button-create-conversion-goal',\r\n text: i18n.getString('UnifiedEventTracking_Goals_CreateConversionGoal'),\r\n classes: ['btn', 'btn-hero'],\r\n onClick: () => window.App.navigate('customer/:customer_id/account/:account_id/uet/goal/create'),\r\n }, {\r\n type: 'dropdown',\r\n id: 'dropdown-edit',\r\n disabled: true,\r\n button: {\r\n text: i18n.getString('UnifiedEventTracking_Edit'),\r\n classes: ['btn btn-secondary'],\r\n },\r\n menu: {\r\n items: [\r\n {\r\n text: i18n.getString('UnifiedEventTracking_Goals_EditGoal'),\r\n id: 'edit-goal',\r\n onClick: () => window.App.navigate(`customer/:customer_id/account/:account_id/uet/goal/${view.gridView.selectedItems()[0].Id}`, { data: { fromGoalEdit: true } }),\r\n }, {\r\n type: 'dropdown-divider',\r\n }, {\r\n iconLeft: ['icon-status-active'],\r\n id: 'enable-target',\r\n text: i18n.getString('UnifiedEventTracking_Enable'),\r\n onClick: () => view.updateAllStatus('Active', $blocker, i18n),\r\n }, {\r\n iconLeft: 'icon-status-pause',\r\n id: 'pause-target',\r\n text: i18n.getString('UnifiedEventTracking_Pause'),\r\n onClick: () => view.updateAllStatus('Paused', $blocker, i18n),\r\n },\r\n ],\r\n },\r\n },\r\n {\r\n type: 'selector',\r\n id: 'quick-filter',\r\n }, {\r\n type: 'dropdown',\r\n id: 'dropdown-column-chooser',\r\n }, {\r\n type: 'dropdown',\r\n id: 'dropdown-filter',\r\n }, {\r\n type: 'search-box',\r\n id: 'search-box-filter',\r\n }]),\r\n }),\r\n },\r\n]);\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport { helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport { sortableHeaderTemplate } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport stateManager from '@bingads-webui-component-legacy/statemanager/campaignStateManager';\r\nimport preferenceService from '@bingads-webui-component-legacy/preference/service/index';\r\n\r\nexport class UETTagsGridDashboardTestConfig {\r\n constructor({\r\n preferenceConfig,\r\n columnConfig,\r\n options: {\r\n customHeaderOffset,\r\n viewport,\r\n },\r\n dataSource,\r\n isForVNext,\r\n i18n,\r\n }) {\r\n const tableName = i18n.getString('UnifiedEventTracking_Goal_Creation_Tag');\r\n\r\n _.extend(this, {\r\n name: preferenceConfig.name || 'UETTagsDashboardGridTest',\r\n tableClasses: ['table', 'table-bordered'],\r\n dataSource,\r\n config,\r\n stateManager,\r\n preferenceService,\r\n sortableHeader: _.defaults(preferenceConfig.sortableHeader, {\r\n name: 'EventAction',\r\n directionIndex: 0,\r\n template: sortableHeaderTemplate,\r\n }),\r\n rows: {\r\n headRows: isForVNext ? [\r\n 'column-header-rows',\r\n ] :\r\n helpers.singleToolbarHeadRows(),\r\n },\r\n scrolling: {\r\n header: {\r\n type: 'sticky',\r\n offset: customHeaderOffset || (() => $('nav.navbar-default.navbar-fixed-top').height()),\r\n attributes: { 'aria-label': i18n.getString('{{tableName}} table header', { tableName }) },\r\n },\r\n virtualized: true,\r\n },\r\n tableAttributes: { 'aria-label': tableName },\r\n columns: columnConfig,\r\n });\r\n\r\n if (viewport) {\r\n this.scrolling.viewport = viewport;\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Promise from 'bluebird';\r\nimport { Storage } from '@bingads-webui/window-name-store';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsdataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport preferencesService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport { contents } from '@bingads-webui-campaign-legacy/popover/index';\r\nimport parametersReceivedPopoverTemplate from './parameters-received-template';\r\nimport { isActiveTrackingStatusForUet } from '@bingads-webui-campaign-legacy/common-grid-config/controls/tracking-status-popover';\r\nimport { SharedLibraryUtils } from '@bingads-webui-campaign-react/shared-library-scopes';\r\nimport { ClientCenterCustomerService } from '@bingads-webui/clientcenter-customer-service';\r\nimport { getErrorMessage } from '@bingads-webui-campaign-legacy/conversion-tracking/common/util/index';\r\nimport { getUETTagDashboardTestGridColumnConfig } from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags-dashboard-test/grid/column-config';\r\nimport { getDefaultPlugins } from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags-dashboard-test/grid/plugin-config';\r\nimport { UETTagsGridDashboardTestConfig } from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags-dashboard-test/grid/grid-config';\r\n\r\nconst schema = window.globalLegacySchema.get('Tag');\r\nconst s$i18n = window.globalLegacyI18n.get('$/schema-i18n!campaign');\r\n\r\nexport function fetchCustomerHierarchy() {\r\n const windowNameStorage = new Storage();\r\n const currentUser = config.get('CurrentUser');\r\n // In ui-next serverContext, ParentCustomerId are put in CurrentUser\r\n const parentCustomerId = _.isUndefined(currentUser.ParentCustomerId) ? config.get('ParentCustomerId') : currentUser.ParentCustomerId;\r\n const currentCustomer = config.get('CurrentCustomer');\r\n const loginCID = currentUser.IsInternal ? windowNameStorage.get('rcid') || currentCustomer.Id : parentCustomerId;\r\n const ccCustomerService = new ClientCenterCustomerService({ ccBaseUrl: config.get('CCBaseUrl') });\r\n const fetchCustomerHierarchyPromise = ccCustomerService.getCustomerHierarchy({\r\n cid: loginCID,\r\n uid: currentUser.Id,\r\n returnOnlyDirectlyLinkedEntities: false,\r\n });\r\n const fetchUserPermissionPromise = fetchCustomerHierarchyPromise.then((data) => {\r\n const { customerHierarchyEntities: customerHierarchy } = data;\r\n const { Id: currentCustomerId } = currentCustomer;\r\n\r\n return SharedLibraryUtils.fetchUserPermissions({\r\n uid: currentUser.Id,\r\n cid: currentCustomerId,\r\n customerHierarchy,\r\n });\r\n });\r\n\r\n return Promise.join(fetchCustomerHierarchyPromise, fetchUserPermissionPromise, (data) => {\r\n const { customerHierarchyEntities: customerHierarchy } = data;\r\n\r\n return customerHierarchy;\r\n });\r\n}\r\n\r\nexport class UETTagsDashboardGridTest extends DeterministicWrapperView {\r\n viewFactory({\r\n i18n,\r\n preferenceConfig,\r\n dataSource,\r\n $blocker,\r\n permissions = {},\r\n isManagerDashboardView = false,\r\n pgridFactory,\r\n pluginFactories,\r\n extendPlugins = () => [],\r\n isForVNext,\r\n customHeaderOffset,\r\n sortableHeader,\r\n viewport,\r\n router,\r\n customerHierarchy,\r\n showPopup,\r\n showAccountListPopup,\r\n perfMarker,\r\n }) {\r\n const windowNameStorage = new Storage();\r\n\r\n this.isManagerDashboardView = isManagerDashboardView;\r\n this.permissions = permissions;\r\n this.i18n = i18n;\r\n this.$blocker = $blocker;\r\n this.router = router;\r\n this.customerHierarchy = customerHierarchy;\r\n this.isForVNext = isForVNext;\r\n this.showPopup = showPopup;\r\n this.showAccountListPopup = showAccountListPopup;\r\n this.isInitialGrid = true;\r\n\r\n edm.customerIdType.useAdvertiserCustomerId = !isManagerDashboardView;\r\n const columnConfig = getUETTagDashboardTestGridColumnConfig({\r\n updateHandler: _.bind(this.updateHandler, this),\r\n customerHierarchy: this.customerHierarchy,\r\n isManagerDashboardView,\r\n windowNameStorage,\r\n isActiveTrackingStatusForUet,\r\n isForVNext,\r\n deps: {\r\n i18n,\r\n s$i18n,\r\n permissions,\r\n config,\r\n },\r\n });\r\n\r\n const gridConfig = new UETTagsGridDashboardTestConfig({\r\n preferenceConfig,\r\n columnConfig,\r\n dataSource,\r\n options: {\r\n customHeaderOffset,\r\n sortableHeader,\r\n viewport,\r\n },\r\n isForVNext: this.isForVNext,\r\n i18n,\r\n });\r\n\r\n const defaultPlugins = getDefaultPlugins({\r\n $blocker,\r\n i18n,\r\n s$i18n,\r\n view: this,\r\n appConfig: config,\r\n preferencesService,\r\n permissions,\r\n pluginFactories,\r\n isForVNext,\r\n perfMarker,\r\n });\r\n const extendedPlugins = extendPlugins({\r\n view: this,\r\n gridConfig,\r\n });\r\n\r\n this.grid = pgridFactory({\r\n gridConfig,\r\n plugins: defaultPlugins.concat(extendedPlugins),\r\n preferenceConfig: preferenceConfig || {},\r\n });\r\n this.gridView = this.grid.gridView;\r\n\r\n return this.gridView;\r\n }\r\n\r\n get events() {\r\n return _.defaults({\r\n 'click .uet-tags-test-table__parameters-tag': 'onShowParametersReceivedDetails',\r\n }, this.isForVNext ? {\r\n 'mouseenter .uet-tags-test-table__parameters-tag': 'onShowParametersReceivedDetails',\r\n 'mouseleave .uet-tags-test-table__parameters-tag': 'hidePopup',\r\n } : {});\r\n }\r\n\r\n onShowParametersReceivedDetails(e) {\r\n this.onShowParametersReceivedPopover(e);\r\n }\r\n\r\n onShowParametersReceivedPopover(e) {\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n if (_.isEmpty(item)) {\r\n return;\r\n }\r\n if (_.isFunction(this.showPopup)) {\r\n const contentView = new contents.TitledContent()\r\n .setBody({\r\n html: parametersReceivedPopoverTemplate({\r\n value: item.ParameterMap,\r\n i18n: this.i18n,\r\n newi18n: this.newI18n,\r\n }),\r\n });\r\n\r\n this.showPopup({\r\n containerSelector: '#rejectionContainer',\r\n title: this.i18n.getString('UETTags_Event_Grid_Parameters', { item: `${Object.keys(item.ParameterMap).length}` }),\r\n contentView,\r\n event: e,\r\n parentView: this,\r\n popoverClassName: 'trackingStatusPopover',\r\n });\r\n }\r\n }\r\n\r\n hidePopup(e) {\r\n if ($(e.relatedTarget).closest('#popup-callout').length === 0) {\r\n this.trigger('closePopup');\r\n }\r\n }\r\n\r\n updateHandler(originalItem, patch, editorView) {\r\n const windowNameStorage = new Storage();\r\n\r\n jsdataCampaign.Tag.update(originalItem[schema.key], patch, _.extend({\r\n cacheResponse: false,\r\n entitySet: this.isManagerDashboardView ? edm.currentCustomer.Tags : edm.currentAccount.Tags,\r\n }, config.get('CurrentUser').IsInternal && windowNameStorage.get('rcid') > 0 ? {\r\n headers: { 'x-ms-rootcid': windowNameStorage.get('rcid') },\r\n } : {}))\r\n .then(() => {\r\n if (editorView) {\r\n editorView.trigger('save', patch);\r\n }\r\n this.gridView.refresh(true);\r\n })\r\n .catch((res) => {\r\n const errors = [];\r\n\r\n if (!res || !res.errors) {\r\n errors.push(getErrorMessage('default', this.i18n));\r\n } else {\r\n _.each(res.errors, (error) => {\r\n errors.push(getErrorMessage(error.Code, this.i18n));\r\n });\r\n }\r\n if (editorView) {\r\n editorView.setErrors({ $overall: errors });\r\n }\r\n }).finally(withUiBlock(this.$blocker, this.i18n.getString('loadingtext')));\r\n }\r\n\r\n removeCreateView() {\r\n if (this.createView) {\r\n this.createView.off();\r\n this.createView.remove();\r\n this.createView = null;\r\n }\r\n }\r\n\r\n renderTrunk() {\r\n super.renderTrunk();\r\n }\r\n\r\n remove() {\r\n this.removeCreateView();\r\n return super.remove();\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport parametersColumnTemplate from './parameters-template';\r\n\r\nexport function getUETTagDashboardTestGridColumnConfig({\r\n deps,\r\n}) {\r\n const {\r\n i18n,\r\n } = deps;\r\n const column = (options) => bingadsGridColumn(_.defaults({ i18n }, options));\r\n\r\n return _.compact([\r\n column({\r\n name: 'EventType',\r\n title: 'UETTags_Event_Grid_ColumnEventType',\r\n sortable: false,\r\n helpId: 'pop_BA_UET_EventType',\r\n }),\r\n column({\r\n name: 'EventAction',\r\n title: 'UETTags_Event_Grid_ColumnEvents',\r\n sortable: false,\r\n template: ({ value }) => {\r\n return value === '' ? '-' : value;\r\n },\r\n }),\r\n column({\r\n name: 'PageURL',\r\n title: 'UETTags_Event_Grid_URL',\r\n sortable: false,\r\n helpId: '',\r\n template: ({ value }) => {\r\n return value === '' ? '-' : value;\r\n },\r\n }),\r\n column({\r\n name: 'ParameterMap',\r\n title: 'UETTags_Event_Grid_ColumnParametersReceived',\r\n sortable: false,\r\n helpId: 'pop_BA_UET_ParametersRec',\r\n template: ({ value }) => {\r\n if (_.isEmpty(value)) {\r\n return '-';\r\n }\r\n let val = '';\r\n\r\n for (const key in value) {\r\n val += `${key}: ${value[key]}, `;\r\n }\r\n val = val.slice(0, -2);\r\n return parametersColumnTemplate({\r\n val,\r\n i18n,\r\n });\r\n },\r\n }),\r\n column({\r\n name: 'LastReceived',\r\n title: 'UETTags_Event_Grid_ColumnLastReceived',\r\n sortable: false,\r\n helpId: 'pop_BA_UET_LastRec',\r\n template: ({ value }) => {\r\n const updateDate = new Date(value);\r\n const now = new Date();\r\n const delta = Math.floor(now.getTime() / 1000) - Math.floor(updateDate.getTime() / 1000);\r\n\r\n if (delta >= 86400) {\r\n return Math.floor(delta / 86400) === 1 ? `${Math.floor(delta / 86400).toString()} day ago` : `${Math.floor(delta / 86400).toString()} days ago`;\r\n } else if (delta >= 3600) {\r\n return Math.floor(delta / 3600) === 1 ? `${Math.floor(delta / 3600).toString()} hour ago` : `${Math.floor(delta / 3600).toString()} hours ago`;\r\n } else {\r\n return Math.floor(delta / 60) === 1 ? `${Math.floor(delta / 60).toString()} minute ago` : `${Math.floor(delta / 60).toString()} minutes ago`;\r\n }\r\n },\r\n }),\r\n ]);\r\n}\r\n","import _ from 'underscore';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport dateFilterPlugin from '@bingads-webui-campaign-legacy/bingadsgrid/vnext/plugin/date-filter';\r\nimport { performanceLogPlugin, perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\n\r\nexport const getDefaultPlugins = ({\r\n i18n,\r\n isForVNext,\r\n appConfig,\r\n permissions,\r\n pluginFactories,\r\n perfMarker,\r\n}) => _.compact([\r\n { plugin: perfMarkerPlugin, config: { appConfig, marker: perfMarker } },\r\n { plugin: a11yPlugin, config: { i18n } },\r\n { plugin: dateFilterPlugin },\r\n (!appConfig.get('CurrentAccountInActive') && !permissions.IsReadOnlyUser) && {\r\n plugin: editablePlugin,\r\n config: { i18n },\r\n },\r\n {\r\n plugin: performanceLogPlugin,\r\n config: {\r\n appConfig,\r\n logger,\r\n },\r\n },\r\n {\r\n plugin: pluginFactories.placeholderPlugin,\r\n config: {\r\n container: '.uet-tags-test-table .grid-noresult',\r\n text: i18n.getString('Grid_NoRecords'),\r\n filteredContainer: isForVNext ? '.grid-noresult' : '.uet-tags-test-table .grid-noresult',\r\n filteredEmptyText: i18n.getString('Grid_NoFilteredRecords'),\r\n ignoreFilters: [{\r\n 'Status': {\r\n $in: null,\r\n },\r\n }],\r\n },\r\n },\r\n]);\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport kendo from '@bingads-webui/kendo/kendo.core';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport { helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport { sortableHeaderTemplate } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport stateManager from '@bingads-webui-component-legacy/statemanager/campaignStateManager';\r\nimport preferenceService from '@bingads-webui-component-legacy/preference/service/index';\r\n\r\nexport class UETTagsGridDashboardConfig {\r\n constructor({\r\n preferenceConfig,\r\n columnConfig,\r\n isManagerDashboardView,\r\n appConfig,\r\n afterFindAllCallback,\r\n windowNameStorage,\r\n options: {\r\n customHeaderOffset,\r\n viewport,\r\n },\r\n dataSource,\r\n isForVNext,\r\n i18n,\r\n }) {\r\n const tableName = i18n.getString('UnifiedEventTracking_Goal_Creation_Tag');\r\n\r\n const currentAccount = config.get('CurrentAccount');\r\n const formatDateInEntitySet = (date) => kendo.toString(date, 'yyyy-MM-dd');\r\n const parseDate = (dateString) => kendo.parseDate(dateString);\r\n\r\n const start = preferenceConfig.dataSource.query.startDate;\r\n const end = preferenceConfig.dataSource.query.endDate;\r\n\r\n const startDate = formatDateInEntitySet(parseDate(start));\r\n const endDate = formatDateInEntitySet(parseDate(end));\r\n\r\n const startDateEpoch = new Date(startDate);\r\n const endDateEpoch = new Date(endDate);\r\n\r\n const timeDiff = endDateEpoch.getTime() - startDateEpoch.getTime();\r\n const hoursDiff = Math.floor(timeDiff / (1000 * 60 * 60)); const daysDiff = Math.floor(timeDiff / (1000 * 60 * 60 * 24));\r\n const monthsDiff = (endDateEpoch.getMonth() - startDateEpoch.getMonth()) + (12 * (endDateEpoch.getFullYear() - startDateEpoch.getFullYear()));\r\n\r\n let granularity;\r\n\r\n if (monthsDiff > 12) {\r\n granularity = 'Quarter';\r\n } else if (monthsDiff <= 6 && monthsDiff >= 2) {\r\n granularity = 'Week';\r\n } else if (hoursDiff === 0 || daysDiff === 1) {\r\n granularity = 'Hour';\r\n } else {\r\n granularity = 'Day';\r\n }\r\n\r\n const queryParams = new URLSearchParams(window.location.search);\r\n const tagId = Number(queryParams.get('tagId'));\r\n\r\n edm.customerIdType.useAdvertiserCustomerId = !isManagerDashboardView;\r\n\r\n const entitySet = isManagerDashboardView ? edm.currentCustomer.Tags['Default.GetTagDashboardSummary'] : edm.currentAccount.Tags['Default.GetTagDashboardSummary'];\r\n\r\n _.extend(this, {\r\n name: preferenceConfig.name || 'UETTagsDashboardGrid',\r\n tableClasses: ['table', 'table-bordered'],\r\n dataSource,\r\n query: _.extend(preferenceConfig.dataSource || {}, {\r\n options: _.defaults({\r\n entitySet: entitySet.$call({\r\n tagId,\r\n timezoneId: currentAccount.TimeZone,\r\n performanceTimeSeriesParameters: {\r\n Granularity: granularity,\r\n },\r\n startDate,\r\n endDate,\r\n }),\r\n cacheResponse: false,\r\n afterFindAll: afterFindAllCallback,\r\n }, appConfig.get('CurrentUser').IsInternal && windowNameStorage.get('rcid') > 0 ? {\r\n headers: { 'x-ms-rootcid': windowNameStorage.get('rcid') },\r\n } : {}),\r\n }),\r\n config,\r\n stateManager,\r\n preferenceService,\r\n sortableHeader: _.defaults(preferenceConfig.sortableHeader, {\r\n name: 'EventAction',\r\n directionIndex: 0,\r\n template: sortableHeaderTemplate,\r\n }),\r\n rows: {\r\n headRows: isForVNext ? [\r\n 'column-header-rows',\r\n ] :\r\n helpers.singleToolbarHeadRows(),\r\n },\r\n scrolling: {\r\n header: {\r\n type: 'sticky',\r\n offset: customHeaderOffset || (() => $('nav.navbar-default.navbar-fixed-top').height()),\r\n attributes: { 'aria-label': i18n.getString('{{tableName}} table header', { tableName }) },\r\n },\r\n virtualized: true,\r\n },\r\n tableAttributes: { 'aria-label': tableName },\r\n columns: columnConfig,\r\n });\r\n\r\n if (viewport) {\r\n this.scrolling.viewport = viewport;\r\n }\r\n }\r\n}\r\n","\r\n\r\nexport const getQueryStartAndEndDates = (i18n) => {\r\n const date = new Date();\r\n const fourteenDaysAgoDate = new Date(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate() - 13,\r\n date.getHours(),\r\n date.getMinutes(),\r\n );\r\n const dateFormat = 'yyyy-MM-dd';\r\n\r\n const startDate = i18n.formatDate(fourteenDaysAgoDate, { raw: dateFormat });\r\n const endDate = i18n.formatDate(new Date(), { raw: dateFormat });\r\n\r\n return {startDate, endDate};\r\n};\r\n","import { edmCampaign } from '@bingads-webui/edm-campaign';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport kendo from '@bingads-webui/kendo/kendo.core';\r\nimport { WaterfallFilterStorage, WaterfallFilterType, waterfallDateFilterProcessor } from '@bingads-webui-campaign/filter-storage';\r\nimport { getQueryStartAndEndDates } from './query-config';\r\nimport { notificationApi } from '@bingads-webui-react/notification-center';\r\n\r\nexport default class ExportData {\r\n\r\n download = (action, i18n, permissions, serverContext, preferenceService) => {\r\n const queryParams = new URLSearchParams(window.location.search);\r\n const aid = queryParams.get('aid');\r\n const cid = aid ? config.get('CurrentAccount').AdvertiserCustomerID : queryParams.get('cid');\r\n const currentAccount = config.get('CurrentAccount');\r\n const formatDateInEntitySet = (date) => kendo.toString(date, 'yyyy-MM-dd');\r\n const parseDate = (dateString) => kendo.parseDate(dateString);\r\n const UETDashboardPhase2Enabled = permissions.dynamic.UETDashboardPhase2;\r\n const tagId = Number(queryParams.get('tagId'));\r\n const waterfallFilterStorage = new WaterfallFilterStorage({ preferenceService });\r\n const dateFilter = waterfallDateFilterProcessor(\r\n waterfallFilterStorage.getFilters([WaterfallFilterType.DateFilter]),\r\n serverContext,\r\n );\r\n\r\n const start = dateFilter.RangeStartDate;\r\n const end = dateFilter.RangeEndDate;\r\n\r\n const startDate = UETDashboardPhase2Enabled ? formatDateInEntitySet(parseDate(start)) : getQueryStartAndEndDates(i18n).startDate;\r\n const endDate = UETDashboardPhase2Enabled ? formatDateInEntitySet(parseDate(end)) : getQueryStartAndEndDates(i18n).endDate;\r\n\r\n if (cid && aid) {\r\n return edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .Tags['Default.GetExportUrlForTagEventDetail']\r\n .$makeCall({\r\n payload: {\r\n tagId,\r\n 'timezoneId': currentAccount.TimeZone,\r\n startDate,\r\n endDate,\r\n eventAction: action,\r\n },\r\n })\r\n .toPromise().then((tagResponse) => {\r\n if (tagResponse && tagResponse.value) {\r\n // eslint-disable-next-line no-undef\r\n notificationApi.showInfo(i18n.getString(_TL_('We are creating your report and it will be downloaded shortly.')), {\r\n autoDismissTime: 1000,\r\n });\r\n return tagResponse.value;\r\n } else {\r\n return null;\r\n }\r\n },\r\n ).catch(() => {\r\n // eslint-disable-next-line no-undef\r\n notificationApi.showWarning(i18n.getString(_TL_('An unexpected error occurred during download. Please try again.')), {\r\n autoDismissTime: 1000,\r\n });\r\n });\r\n } else if (cid) {\r\n return edmCampaign\r\n .Customers.$withKey(cid)\r\n .Tags['Default.GetExportUrlForTagEventDetail']\r\n .$makeCall({\r\n payload: {\r\n tagId,\r\n 'timezoneId': currentAccount.TimeZone,\r\n startDate,\r\n endDate,\r\n eventAction: action,\r\n },\r\n })\r\n .toPromise().then((tagResponse) => {\r\n if (tagResponse && tagResponse.value) {\r\n // eslint-disable-next-line no-undef\r\n notificationApi.showInfo(i18n.getString(_TL_('We are creating your report and it will be downloaded shortly.')), {\r\n autoDismissTime: 1000,\r\n });\r\n return tagResponse.value;\r\n } else {\r\n return null;\r\n }\r\n },\r\n ).catch(() => {\r\n // eslint-disable-next-line no-undef\r\n notificationApi.showWarning(i18n.getString(_TL_('An unexpected error occurred during download. Please try again.')), {\r\n autoDismissTime: 1000,\r\n });\r\n });\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Promise from 'bluebird';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { Storage } from '@bingads-webui/window-name-store';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsdataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport preferencesService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport { handleSortChange } from '@bingads-webui-campaign-legacy/bingadsgrid/service/state-manager-helper';\r\nimport { contents } from '@bingads-webui-campaign-legacy/popover/index';\r\nimport parametersReceivedPopoverTemplate from './parameters-received-template';\r\nimport { isActiveTrackingStatusForUet } from '@bingads-webui-campaign-legacy/common-grid-config/controls/tracking-status-popover';\r\nimport { SharedLibraryUtils } from '@bingads-webui-campaign-react/shared-library-scopes';\r\nimport { ClientCenterCustomerService } from '@bingads-webui/clientcenter-customer-service';\r\nimport { getErrorMessage } from '@bingads-webui-campaign-legacy/conversion-tracking/common/util/index';\r\nimport { getUETTagDashboardGridColumnConfig } from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags-dashboard/grid/column-config';\r\nimport { getDefaultPlugins } from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags-dashboard/grid/plugin-config';\r\nimport { UETTagsGridDashboardConfig } from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags-dashboard/grid/grid-config';\r\nimport ExportData from './export-data';\r\n\r\nconst schema = window.globalLegacySchema.get('Tag');\r\nconst s$i18n = window.globalLegacyI18n.get('$/schema-i18n!campaign');\r\n\r\nexport function fetchCustomerHierarchy() {\r\n const windowNameStorage = new Storage();\r\n const currentUser = config.get('CurrentUser');\r\n // In ui-next serverContext, ParentCustomerId are put in CurrentUser\r\n const parentCustomerId = _.isUndefined(currentUser.ParentCustomerId) ? config.get('ParentCustomerId') : currentUser.ParentCustomerId;\r\n const currentCustomer = config.get('CurrentCustomer');\r\n const loginCID = currentUser.IsInternal ? windowNameStorage.get('rcid') || currentCustomer.Id : parentCustomerId;\r\n const ccCustomerService = new ClientCenterCustomerService({ ccBaseUrl: config.get('CCBaseUrl') });\r\n const fetchCustomerHierarchyPromise = ccCustomerService.getCustomerHierarchy({\r\n cid: loginCID,\r\n uid: currentUser.Id,\r\n returnOnlyDirectlyLinkedEntities: false,\r\n });\r\n const fetchUserPermissionPromise = fetchCustomerHierarchyPromise.then((data) => {\r\n const { customerHierarchyEntities: customerHierarchy } = data;\r\n const { Id: currentCustomerId } = currentCustomer;\r\n\r\n return SharedLibraryUtils.fetchUserPermissions({\r\n uid: currentUser.Id,\r\n cid: currentCustomerId,\r\n customerHierarchy,\r\n });\r\n });\r\n\r\n return Promise.join(fetchCustomerHierarchyPromise, fetchUserPermissionPromise, (data) => {\r\n const { customerHierarchyEntities: customerHierarchy } = data;\r\n\r\n return customerHierarchy;\r\n });\r\n}\r\n\r\nexport class UETTagsDashboardGrid extends DeterministicWrapperView {\r\n viewFactory({\r\n i18n,\r\n preferenceConfig,\r\n dataSource,\r\n $blocker,\r\n permissions = {},\r\n isManagerDashboardView = false,\r\n pgridFactory,\r\n pluginFactories,\r\n preferenceService,\r\n extendPlugins = () => [],\r\n isForVNext,\r\n customHeaderOffset,\r\n sortableHeader,\r\n viewport,\r\n filterService,\r\n router,\r\n customerHierarchy,\r\n onShowPanel,\r\n showPopup,\r\n showAccountListPopup,\r\n perfMarker,\r\n renderThirdPartyIntegrationView,\r\n serverContext,\r\n }) {\r\n const windowNameStorage = new Storage();\r\n\r\n this.isManagerDashboardView = isManagerDashboardView;\r\n this.permissions = permissions;\r\n this.i18n = i18n;\r\n this.$blocker = $blocker;\r\n this.filterService = filterService;\r\n this.router = router;\r\n this.customerHierarchy = customerHierarchy;\r\n this.isForVNext = isForVNext;\r\n this.onShowPanel = onShowPanel;\r\n this.showPopup = showPopup;\r\n this.showAccountListPopup = showAccountListPopup;\r\n this.isInitialGrid = true;\r\n this.renderThirdPartyIntegrationView = renderThirdPartyIntegrationView;\r\n this.serverContext = serverContext;\r\n this.preferenceService = preferenceService;\r\n\r\n edm.customerIdType.useAdvertiserCustomerId = !isManagerDashboardView;\r\n const columnConfig = getUETTagDashboardGridColumnConfig({\r\n updateHandler: _.bind(this.updateHandler, this),\r\n customerHierarchy: this.customerHierarchy,\r\n isManagerDashboardView,\r\n windowNameStorage,\r\n isActiveTrackingStatusForUet,\r\n isForVNext,\r\n deps: {\r\n i18n,\r\n s$i18n,\r\n permissions,\r\n config,\r\n },\r\n });\r\n const gridConfig = new UETTagsGridDashboardConfig({\r\n preferenceConfig,\r\n columnConfig,\r\n dataSource,\r\n isManagerDashboardView,\r\n appConfig: config,\r\n afterFindAllCallback: _.bind(this.onGridDataLoaded, this),\r\n windowNameStorage,\r\n options: {\r\n customHeaderOffset,\r\n sortableHeader,\r\n viewport,\r\n },\r\n isForVNext: this.isForVNext,\r\n i18n,\r\n });\r\n\r\n const defaultPlugins = getDefaultPlugins({\r\n $blocker,\r\n i18n,\r\n s$i18n,\r\n view: this,\r\n appConfig: config,\r\n preferencesService,\r\n permissions,\r\n pluginFactories,\r\n isForVNext,\r\n perfMarker,\r\n });\r\n const extendedPlugins = extendPlugins({\r\n view: this,\r\n gridConfig,\r\n });\r\n\r\n this.grid = pgridFactory({\r\n gridConfig,\r\n plugins: defaultPlugins.concat(extendedPlugins),\r\n preferenceConfig: preferenceConfig || {},\r\n });\r\n this.gridView = this.grid.gridView;\r\n this.gridView.on('didUpdate', (changes) => {\r\n // for the perf issue, should not patch preference when init view\r\n if (this.isInitialGrid) {\r\n this.isInitialGrid = false;\r\n return;\r\n }\r\n handleSortChange(changes, this.gridView, gridConfig.name);\r\n });\r\n\r\n if (this.filterService) {\r\n this.listenTo(this.filterService, 'filter-state-changed', () => {\r\n updateGridQuery(this.gridView, this.filterService.getCombinedFilter(), true);\r\n });\r\n }\r\n\r\n return this.gridView;\r\n }\r\n\r\n get events() {\r\n const permissions = this.permissions;\r\n const serverContext = this.serverContext;\r\n const preferenceService = this.preferenceService;\r\n\r\n return _.defaults({\r\n 'click .uet-tags-dashboard-grid__data-view-tag': (e) => {\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n new ExportData().download(item.EventAction, this.i18n, permissions, serverContext, preferenceService).then((response) => {\r\n window.open(response);\r\n }).catch((err) => {\r\n throw err;\r\n });\r\n },\r\n 'click .uet-tags-dashboard-grid__parameters-tag': 'onShowParametersReceivedDetails',\r\n }, this.isForVNext ? {\r\n 'mouseenter .uet-tags-dashboard-grid__parameters-tag': 'onShowParametersReceivedDetails',\r\n 'mouseleave .uet-tags-dashboard-grid__parameters-tag': 'hidePopup',\r\n } : {});\r\n }\r\n\r\n onShowParametersReceivedDetails(e) {\r\n this.onShowParametersReceivedPopover(e);\r\n }\r\n\r\n onShowParametersReceivedPopover(e) {\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n if (_.isEmpty(item)) {\r\n return;\r\n }\r\n\r\n if (_.isFunction(this.showPopup)) {\r\n const contentView = new contents.TitledContent()\r\n .setBody({\r\n html: parametersReceivedPopoverTemplate({\r\n value: item.Parameters,\r\n i18n: this.i18n,\r\n newi18n: this.newI18n,\r\n }),\r\n });\r\n\r\n this.showPopup({\r\n containerSelector: '#rejectionContainer',\r\n title: this.i18n.getString('UETTags_Event_Grid_Parameters', { item: `${item.Parameters.length}` }),\r\n contentView,\r\n event: e,\r\n parentView: this,\r\n popoverClassName: 'trackingStatusPopover',\r\n });\r\n }\r\n }\r\n\r\n hidePopup(e) {\r\n if ($(e.relatedTarget).closest('#popup-callout').length === 0) {\r\n this.trigger('closePopup');\r\n }\r\n }\r\n\r\n onGridDataLoaded(options, data) {\r\n return data;\r\n }\r\n\r\n updateHandler(originalItem, patch, editorView) {\r\n const windowNameStorage = new Storage();\r\n\r\n jsdataCampaign.Tag.update(originalItem[schema.key], patch, _.extend({\r\n cacheResponse: false,\r\n entitySet: this.isManagerDashboardView ? edm.currentCustomer.Tags : edm.currentAccount.Tags,\r\n }, config.get('CurrentUser').IsInternal && windowNameStorage.get('rcid') > 0 ? {\r\n headers: { 'x-ms-rootcid': windowNameStorage.get('rcid') },\r\n } : {}))\r\n .then(() => {\r\n if (editorView) {\r\n editorView.trigger('save', patch);\r\n }\r\n this.gridView.refresh(true);\r\n })\r\n .catch((res) => {\r\n const errors = [];\r\n\r\n if (!res || !res.errors) {\r\n errors.push(getErrorMessage('default', this.i18n));\r\n } else {\r\n _.each(res.errors, (error) => {\r\n errors.push(getErrorMessage(error.Code, this.i18n));\r\n });\r\n }\r\n if (editorView) {\r\n editorView.setErrors({ $overall: errors });\r\n }\r\n }).finally(withUiBlock(this.$blocker, this.i18n.getString('loadingtext')));\r\n }\r\n\r\n removeCreateView() {\r\n if (this.createView) {\r\n this.createView.off();\r\n this.createView.remove();\r\n this.createView = null;\r\n }\r\n }\r\n\r\n renderTrunk() {\r\n if (this.isForVNext) {\r\n this.filterService.initializeCombinedFilterPromise.then(() => {\r\n updateGridQuery(this.gridView, this.filterService.getCombinedFilter(), true);\r\n });\r\n }\r\n super.renderTrunk();\r\n }\r\n\r\n remove() {\r\n this.removeCreateView();\r\n return super.remove();\r\n }\r\n}\r\n\r\nexport { getQueryStartAndEndDates } from './query-config';\r\n","import _ from 'underscore';\r\nimport { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport dataColumnTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags-dashboard/grid/data-template';\r\nimport parametersColumnTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags-dashboard/grid/parameters-template';\r\n\r\nexport function getUETTagDashboardGridColumnConfig({\r\n deps,\r\n}) {\r\n const {\r\n i18n,\r\n } = deps;\r\n const column = (options) => bingadsGridColumn(_.defaults({ i18n }, options));\r\n\r\n return _.compact([\r\n column({\r\n name: 'EventAction',\r\n title: 'UETTags_Event_Grid_ColumnEvents',\r\n sortable: false,\r\n template: ({ value }) => {\r\n return value === '' ? '-' : value;\r\n },\r\n }),\r\n column({\r\n name: 'EventType',\r\n title: 'UETTags_Event_Grid_ColumnEventType',\r\n sortable: false,\r\n helpId: 'pop_BA_UET_EventType',\r\n }),\r\n column({\r\n name: 'TotalCount',\r\n title: 'UETTags_Event_Grid_ColumnTotalEvents',\r\n sortable: false,\r\n helpId: 'pop_BA_UET_TotalEvent',\r\n type: 'number',\r\n format: 'integer',\r\n }),\r\n column({\r\n name: 'Parameters',\r\n title: 'UETTags_Event_Grid_ColumnParametersReceived',\r\n sortable: false,\r\n helpId: 'pop_BA_UET_ParametersRec',\r\n template: ({ value }) => {\r\n return parametersColumnTemplate({\r\n value,\r\n i18n,\r\n });\r\n },\r\n }),\r\n column({\r\n name: 'LastReceived',\r\n title: 'UETTags_Event_Grid_ColumnLastReceived',\r\n sortable: false,\r\n helpId: 'pop_BA_UET_LastRec',\r\n template: ({ value }) => {\r\n const updateDate = new Date(value);\r\n const now = new Date();\r\n const delta = Math.floor(now.getTime() / 1000) - Math.floor(updateDate.getTime() / 1000);\r\n\r\n if (delta >= 86400) {\r\n return Math.floor(delta / 86400) === 1 ? `${Math.floor(delta / 86400).toString()} day ago` : `${Math.floor(delta / 86400).toString()} days ago`;\r\n } else if (delta >= 3600) {\r\n return Math.floor(delta / 3600) === 1 ? `${Math.floor(delta / 3600).toString()} hour ago` : `${Math.floor(delta / 3600).toString()} hours ago`;\r\n } else {\r\n return Math.floor(delta / 60) === 1 ? `${Math.floor(delta / 60).toString()} minute ago` : `${Math.floor(delta / 60).toString()} minutes ago`;\r\n }\r\n },\r\n }),\r\n column({\r\n name: 'EventAction',\r\n title: 'UETTags_Event_Grid_ColumnAction',\r\n sortable: false,\r\n helpId: 'pop_BA_UET_Action',\r\n template: ({ value }) => {\r\n return dataColumnTemplate({\r\n value,\r\n i18n,\r\n });\r\n },\r\n }),\r\n ]);\r\n}\r\n","import _ from 'underscore';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { toolbarPlugin, helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport uiBlockerPlugin from '@bingads-webui-component-legacy/bingads-grid/plugin/ui-blocker';\r\nimport dateFilterPlugin from '@bingads-webui-campaign-legacy/bingadsgrid/vnext/plugin/date-filter';\r\nimport { performanceLogPlugin, perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\n\r\nexport const getDefaultPlugins = ({\r\n $blocker,\r\n i18n,\r\n isForVNext,\r\n appConfig,\r\n permissions,\r\n pluginFactories,\r\n perfMarker,\r\n}) => _.compact([\r\n { plugin: perfMarkerPlugin, config: { appConfig, marker: perfMarker } },\r\n { plugin: a11yPlugin, config: { i18n } },\r\n { plugin: dateFilterPlugin },\r\n (!appConfig.get('CurrentAccountInActive') && !permissions.IsReadOnlyUser) && {\r\n plugin: editablePlugin,\r\n config: { i18n },\r\n },\r\n {\r\n plugin: uiBlockerPlugin,\r\n config: { el: $blocker },\r\n },\r\n {\r\n plugin: pluginFactories.paginationPlugin,\r\n config: {\r\n pageSize: 20,\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n pageNumberLabelText: i18n.getString('Grid_Page_Number_Label_Text'),\r\n pageSizeText: i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: i18n.getString('Grid_PageOf'),\r\n resetPageNumberOnSort: true,\r\n },\r\n },\r\n {\r\n plugin: performanceLogPlugin,\r\n config: {\r\n appConfig,\r\n logger,\r\n },\r\n },\r\n {\r\n plugin: pluginFactories.placeholderPlugin,\r\n config: {\r\n container: '.uet-tags-dashboard-page .grid-noresult',\r\n text: i18n.getString('Grid_NoRecords'),\r\n filteredContainer: isForVNext ? '.grid-noresult' : '.uet-tags-dashboard-page .grid-noresult',\r\n filteredEmptyText: i18n.getString('Grid_NoFilteredRecords'),\r\n ignoreFilters: [{\r\n 'Status': {\r\n $in: null,\r\n },\r\n }],\r\n },\r\n },\r\n {\r\n plugin: toolbarPlugin,\r\n config: helpers.singleToolbar({\r\n items: [{\r\n type: 'dropdown',\r\n id: 'dropdown-filter',\r\n }, {\r\n type: 'search-box',\r\n id: 'search-box-filter',\r\n }],\r\n }),\r\n },\r\n]);\r\n","/* eslint-disable new-cap */\r\nimport _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport { Storage } from '@bingads-webui/window-name-store';\r\nimport formTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/create/template.pug';\r\nimport { getErrorMessage, cleanAlerts } from '@bingads-webui-campaign-legacy/conversion-tracking/common/util/index';\r\nimport jsdataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport TagViewer from '@bingads-webui-static-legacy/uet/view/tagViewer';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { SimpleForm } from '@bingads-webui/simple-form';\r\nimport {\r\n SharedLibraryUtils,\r\n UETTagManageSopeView,\r\n} from '@bingads-webui-campaign-react/shared-library-scopes';\r\nimport { ClientCenterCustomerService } from '@bingads-webui/clientcenter-customer-service';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport sharingTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/create/sharing-template.pug';\r\n\r\nconst s$Tag = window.globalLegacySchema.get('Tag');\r\nconst schemai18n = window.globalLegacyI18n.get('$/schema-i18n!campaign');\r\n\r\nexport class CreateView extends Backbone.View {\r\n get events() {\r\n return {\r\n 'click .btn-tag-create-save': 'saveTag',\r\n 'click .btn-tag-create-cancel': 'cancelTag',\r\n };\r\n }\r\n\r\n initialize({\r\n i18n,\r\n $blocker,\r\n permissions,\r\n appConfig,\r\n isManagerDashboardView,\r\n model = {},\r\n }) {\r\n const groupFields = [{\r\n property: 'Name',\r\n label: i18n.getString('UnifiedEventTracking_Tags_Create_TagName'),\r\n placeholder: i18n.getString('UnifiedEventTracking_Tags_PlaceHolderForTagName'),\r\n validators: {\r\n maxLength: {\r\n message: i18n.getString('UnifiedEventTracking_Tags_ErrorMessageForTagName'),\r\n blockInput: false,\r\n },\r\n },\r\n }, {\r\n property: 'Description',\r\n label: i18n.getString('UnifiedEventTracking_Tags_Create_TagDescription'),\r\n placeholder: i18n.getString('UnifiedEventTracking_Tags_PlaceHolderForTagDescription'),\r\n validators: {\r\n maxLength: {\r\n message: i18n.getString('UnifiedEventTracking_Tags_ErrorMessageForTagDescription'),\r\n blockInput: false,\r\n },\r\n },\r\n }];\r\n\r\n groupFields.push({\r\n property: 'IsClarityTagEnabled',\r\n label: i18n.getString('UnifiedEventTracking_Tags_Create_ClarityOption'),\r\n control: 'checkbox',\r\n message: `${i18n.getString('UnifiedEventTracking_Tags_ClarityDescription')} ${i18n.getString('LearnMore')}
${i18n.getString('UnifiedEventTracking_Tags_ClarityDescription_2')}`,\r\n values: [1, 0],\r\n });\r\n this.i18n = i18n;\r\n this.permissions = permissions;\r\n this.appConfig = appConfig;\r\n this.alertIds = [];\r\n this.$blocker = $blocker;\r\n this.isEditView = !_.isEmpty(model);\r\n this.tagEntity = model;\r\n this.vmDefault = _.pick(model, 'Name', 'Description', 'IsClarityTagEnabled');\r\n if (_.isEmpty(this.vmDefault)) {\r\n this.vmDefault.IsClarityTagEnabled = 1; // by default check the checkbox\r\n }\r\n this.isManagerDashboardView = isManagerDashboardView;\r\n this.windowNameStorage = new Storage();\r\n this.editForm = new SimpleForm({\r\n schema: s$Tag,\r\n s$i18n: schemai18n,\r\n showButtons: false,\r\n i18n,\r\n fields: [{\r\n type: 'group',\r\n description: this.isEditView ? i18n.getString('UnifiedEventTracking_Tags_EditTagPanelTitleDescription') : i18n.getString('UnifiedEventTracking_Tags_CreateTagPanelTitleDescription'),\r\n fields: groupFields,\r\n }],\r\n model: this.vmDefault,\r\n });\r\n this.listenTo(this.editForm, 'clickHelpIcon', (e) => {\r\n window.PopupController.PopupJsClick(e.target);\r\n });\r\n this.initializeInstrumentation();\r\n }\r\n\r\n initializeInstrumentation() {\r\n const scenarios = {\r\n testUetClarity: instrumentation.testUetClarity.create(),\r\n };\r\n\r\n this.activities = {\r\n createTag: scenarios.testUetClarity.createTag.create(),\r\n editTag: scenarios.testUetClarity.editTag.create(),\r\n };\r\n }\r\n\r\n convertSharingScope({ treeSelection }) {\r\n return treeSelection || {Accounts: [], Customers: [], Others: 0, Total: 0 };\r\n }\r\n\r\n saveTag() {\r\n const vm = this.editForm.viewModel;\r\n const payload = _.defaults(\r\n {\r\n Description: vm.Description(),\r\n Name: vm.Name(),\r\n },\r\n { IsClarityTagEnabled: vm.IsClarityTagEnabled() },\r\n this.tagSharingView ? { Owner: this.owner } : null,\r\n this.tagSharingView ? { SharingScope: this.convertSharingScope(this.tagSharingView.getSharingScope()) } : null,\r\n );\r\n\r\n if (this.isEditView) {\r\n this.activities.editTag.trace(\r\n `Edit: clarity ${this.vmDefault.IsClarityTagEnabled} to ${payload.IsClarityTagEnabled}`, // Mes\r\n 'EditTagWithClarity', // Api\r\n );\r\n jsdataCampaign.Tag.update(this.tagEntity[s$Tag.key], payload, _.extend({\r\n cacheResponse: false,\r\n entitySet: this.isManagerDashboardView ? edm.currentCustomer.Tags : edm.currentAccount.Tags,\r\n }, this.appConfig.get('CurrentUser').IsInternal && this.windowNameStorage.get('rcid') > 0 ? {\r\n headers: { 'x-ms-rootcid': this.windowNameStorage.get('rcid') },\r\n } : {}))\r\n .then(() => {\r\n this.trigger('finishTagEdit');\r\n })\r\n .catch((res) => {\r\n cleanAlerts(this.alertIds);\r\n this.alertIds = _.map(res.errors, (error) =>\r\n window.App.views.alertCenter.show({\r\n message: getErrorMessage(error.Code, this.i18n),\r\n level: 'Error',\r\n }));\r\n })\r\n .finally(withUiBlock(this.$blocker, this.i18n.getString('loadingtext')));\r\n } else {\r\n this.activities.createTag.trace(\r\n `Create: clarity ${this.vmDefault.IsClarityTagEnabled} to ${payload.IsClarityTagEnabled}`, // Mes\r\n 'CreateTagWithClarity', // Api\r\n );\r\n jsdataCampaign.Tag.create(payload, _.extend({\r\n cacheResponse: false,\r\n entitySet: this.isManagerDashboardView ? edm.currentCustomer.Tags : edm.currentAccount.Tags,\r\n }, this.appConfig.get('CurrentUser').IsInternal && this.windowNameStorage.get('rcid') > 0 ? {\r\n headers: { 'x-ms-rootcid': this.windowNameStorage.get('rcid') },\r\n } : {}))\r\n .then((item) => {\r\n this.trigger('finishTagCreation');\r\n new TagViewer({\r\n tag: {\r\n name: item.Name,\r\n id: item.Id,\r\n script: item.TrackingCode,\r\n },\r\n }).render();\r\n })\r\n .catch((res) => {\r\n cleanAlerts(this.alertIds);\r\n this.alertIds = _.map(res.errors, (error) =>\r\n window.App.views.alertCenter.show({\r\n message: getErrorMessage(error.Code, this.i18n),\r\n level: 'Error',\r\n }));\r\n })\r\n .finally(withUiBlock(this.$blocker, this.i18n.getString('loadingtext')));\r\n }\r\n }\r\n\r\n cancelTag() {\r\n this.trigger('cancelTagCreation');\r\n }\r\n\r\n render() {\r\n this.$el.html(formTemplate({\r\n i18n: this.i18n,\r\n isEdit: this.isEditView,\r\n }));\r\n this.$('.uet-tags__form-container').append(this.editForm.render().$el);\r\n\r\n const { IsCustomerHierarchyEnabled, IsSharedLibraryPhase1Enabled } = this.permissions;\r\n\r\n if (IsCustomerHierarchyEnabled && IsSharedLibraryPhase1Enabled) {\r\n const currentUser = this.appConfig.get('CurrentUser');\r\n const currentCustomer = _.pick(this.appConfig.get('CurrentCustomer'), ['Id', 'Name', 'Number']);\r\n const { Id: userId } = currentUser;\r\n // In ui-next serverContext, ParentCustomerId are put in CurrentUser\r\n const parentCustomerId = _.isUndefined(currentUser.ParentCustomerId) ? this.appConfig.get('ParentCustomerId') : currentUser.ParentCustomerId;\r\n const loginCID = currentUser.IsInternal ? this.windowNameStorage.get('rcid') || currentCustomer.Id : parentCustomerId;\r\n\r\n if (SharedLibraryUtils.isSuperAdmin({ uid: userId, cid: currentCustomer.Id })) {\r\n const ccCustomerService = new ClientCenterCustomerService({ ccBaseUrl: this.appConfig.get('CCBaseUrl') });\r\n\r\n if (SharedLibraryUtils.isInAccountScope()) {\r\n const currentAccount = this.appConfig.get('CurrentAccount');\r\n const { AdvertiserCustomerID: parentCid } = currentAccount || {};\r\n\r\n // TODO: xuwu - we need also populate the Name and Number of the advertiserCustomer\r\n this.owner = !_.isFinite(parentCid) || parentCid === currentCustomer.Id ? currentCustomer : { Id: parentCid };\r\n } else {\r\n this.owner = currentCustomer;\r\n }\r\n\r\n ccCustomerService.getCustomerHierarchy({\r\n cid: loginCID,\r\n uid: userId,\r\n returnOnlyDirectlyLinkedEntities: false,\r\n }).then((data) => {\r\n const { customerHierarchyEntities: customerHierarchy } = data;\r\n\r\n if (SharedLibraryUtils.hasChildCustomers(customerHierarchy, { cid: loginCID }) && !SharedLibraryUtils.isLinkedAccount(this.appConfig)) {\r\n this.tagSharingView = new UETTagManageSopeView({\r\n customerHierarchy,\r\n scopeOptions: [{\r\n id: SharedLibraryUtils.Scopes.CUSTOMER,\r\n text: this.i18n.getString('SharedLibrary_Tag_SharingScope_Customer', { account: `${this.owner.Name} (${this.owner.Number})` }),\r\n }, {\r\n id: SharedLibraryUtils.Scopes.HIERARCHY,\r\n text: this.i18n.getString('SharedLibrary_Tag_SharingScope_Hierarchy'),\r\n }],\r\n tagEntity: {\r\n Owner: this.owner,\r\n SharingScope: { Customers: [], Accounts: [], Others: 0, Total: 0 },\r\n },\r\n deps: { i18n: this.i18n },\r\n });\r\n }\r\n\r\n if (this.tagSharingView) {\r\n this.$('.uet-tags__form-container form > div[data-type]').append(sharingTemplate({ i18n: this.i18n }));\r\n this.$('#Form-SharedLibrary-Tag-Sharing').append(this.tagSharingView.render().$el);\r\n }\r\n }).finally(withUiBlock(this.$blocker, this.i18n.getString('loadingtext')));\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n remove() {\r\n this.editForm.remove();\r\n if (this.tagSharingView) {\r\n this.tagSharingView.remove();\r\n this.tagSharingView = null;\r\n }\r\n\r\n super.remove();\r\n cleanAlerts(this.alertIds);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport { SharedLibraryUtils } from '@bingads-webui-campaign-react/shared-library-scopes';\r\nimport actionColumnTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/grid/action-template.pug';\r\nimport trackingStatusColumnTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/grid/tracking-status-template.pug';\r\nimport tagIdTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/grid/tag-id-template.pug';\r\nimport goalsTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/grid/goals-template.pug';\r\nimport audienceTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/grid/audience-template.pug';\r\nimport sharedUsedbyTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/grid/column-shared-usedby-template.pug';\r\nimport nameTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/grid/name-template.pug';\r\n\r\nconst noData = '-';\r\n\r\nfunction getTagIdLink({ IsUETDashboardEnabled, value, i18n }) {\r\n if (!_.isFinite(value)) {\r\n return noData;\r\n }\r\n\r\n return tagIdTemplate({ IsUETDashboardEnabled, value, i18n });\r\n}\r\n\r\nexport function getUETTagGridColumnConfig({\r\n isManagerDashboardView,\r\n windowNameStorage,\r\n // updateHandler,\r\n customerHierarchy,\r\n isActiveTrackingStatusForUet,\r\n deps,\r\n isForVNext,\r\n}) {\r\n const {\r\n i18n,\r\n s$i18n,\r\n permissions,\r\n config,\r\n } = deps;\r\n const { IsCustomerHierarchyEnabled, IsSharedLibraryPhase1Enabled } = permissions;\r\n const IsUETDashboardEnabled = permissions.dynamic.UETDashboard;\r\n const IsUETDashboardPhase2Enabled = permissions.dynamic.UETDashboardPhase2;\r\n const XandrIntegrationEnabled = permissions.dynamic.XandrIntegrationEnabled;\r\n const column = (options) => bingadsGridColumn(_.defaults({ i18n }, options));\r\n\r\n return _.compact([\r\n column({\r\n name: 'Name',\r\n title: 'UETTags_Grid_ColumnTagName',\r\n property: _.identity,\r\n sortable: 'Name',\r\n editable: undefined,\r\n template: ({ value: tag }) => {\r\n const enableEdit = IsCustomerHierarchyEnabled && IsSharedLibraryPhase1Enabled && _.result(tag.SharingScope, 'Total') > 0 ? SharedLibraryUtils.isEntityOwner(tag, config) : true;\r\n\r\n return nameTemplate({\r\n IsUETDashboardPhase2Enabled,\r\n isEditable: enableEdit && !tag.IsReadOnly,\r\n isReadOnly: tag.IsReadOnly,\r\n name: tag.Name,\r\n ariaLabel: 'Click to edit UET tag',\r\n });\r\n },\r\n }),\r\n column({\r\n name: 'Description',\r\n title: 'UETTags_Grid_ColumnTagDescription',\r\n sortable: true,\r\n editable: undefined,\r\n }),\r\n column({\r\n name: 'Id',\r\n title: 'UETTags_Grid_ColumnTagId',\r\n sortable: true,\r\n template: ({ value }) => {\r\n return getTagIdLink({\r\n IsUETDashboardEnabled,\r\n value,\r\n i18n,\r\n });\r\n },\r\n }),\r\n XandrIntegrationEnabled ? column({\r\n name: 'InvestUniversalPixel',\r\n title: 'UETTags_Grid_ColumnTagUniversalPixelId',\r\n sortable: false,\r\n template: ({ value }) => value?.Id || noData,\r\n }) : null,\r\n column({\r\n name: 'TrackingStatus',\r\n title: 'UETTags_Grid_ColumnTrackingStatus',\r\n sortable: true,\r\n bodyClasses: 'UET-tags-column-TrackingStatus',\r\n property: {\r\n key: 'TrackingStatus',\r\n get: (value) => _.pick(value, ['TrackingStatus', 'IsReadOnly']),\r\n },\r\n helpId: 'pop_BA_UET_TrackingStatus',\r\n template: ({ value: { TrackingStatus: value, IsReadOnly } }) => {\r\n if (!IsReadOnly) {\r\n return trackingStatusColumnTemplate({ value, isForVNext, s$i18n, isActiveTrackingStatus: isActiveTrackingStatusForUet });\r\n }\r\n return noData;\r\n },\r\n }),\r\n IsSharedLibraryPhase1Enabled && IsCustomerHierarchyEnabled ?\r\n column({\r\n name: 'Owner',\r\n title: 'UETTags_Grid_ColumnTagOwner',\r\n sortable: false,\r\n helpId: '',\r\n template: ({ value }) => `${value.Name} (${value.Number})`,\r\n }) : null,\r\n IsSharedLibraryPhase1Enabled && IsCustomerHierarchyEnabled ?\r\n column({\r\n name: 'SharingScope',\r\n title: 'SharedLibrary_GridColumn_Scope',\r\n helpId: '',\r\n bodyClasses: 'UET-tags-column-SharingScope',\r\n property: {\r\n key: 'SharingScope',\r\n get: (value) => _.pick(value, ['SharingScope', 'Owner']),\r\n },\r\n template: ({ value: { SharingScope, Owner } }) => {\r\n if (_.isNull(SharingScope)) { // when switch to linked accounts\r\n return '--';\r\n }\r\n if (_.result(SharingScope, 'Total') <= 1) {\r\n return `${Owner.Name} (${Owner.Number})`;\r\n }\r\n return sharedUsedbyTemplate({\r\n className: 'uet-tags-grid__shared-scope',\r\n text: i18n.getString('UETTags_Grid_Number_Accounts', { number: _.result(SharingScope, 'Total') }),\r\n isForVNext,\r\n });\r\n },\r\n }) : null,\r\n IsSharedLibraryPhase1Enabled && IsCustomerHierarchyEnabled ?\r\n column({\r\n name: 'UsedBy',\r\n title: 'UETTags_Grid_ColumnUsedBy',\r\n helpId: '',\r\n bodyClasses: 'UET-tags-column-UsedBy',\r\n template: ({ value }) => {\r\n if (_.isNull(value)) { // when switch to linked accounts\r\n return '--';\r\n }\r\n if (value.Total === 0) {\r\n return i18n.getString('UnifiedEventTracking_None');\r\n }\r\n if (value.Total === 1) {\r\n if (value.Others === 1) {\r\n return i18n.getString('SharedLibrary_One_Other_Account');\r\n }\r\n\r\n const { Name, Number } = _.first(value.Customers);\r\n\r\n return `${Name} (${Number})`;\r\n }\r\n return sharedUsedbyTemplate({\r\n className: 'uet-tags-grid__used-by',\r\n text: i18n.getString('UETTags_Grid_Number_Accounts', { number: value.Total }),\r\n isForVNext,\r\n });\r\n },\r\n }) : null,\r\n column({\r\n name: 'GoalsCount',\r\n title: 'UETTags_Grid_ColumnGoals',\r\n sortable: true,\r\n helpId: 'pop_BA_UET_Goals',\r\n template: ({ value }) => {\r\n return goalsTemplate({\r\n value: value ? value : i18n.getString('UnifiedEventTracking_None'),\r\n disabled: isManagerDashboardView,\r\n ariaLabel: i18n.getString('ClickToGoals'),\r\n });\r\n },\r\n type: 'number',\r\n }),\r\n column({\r\n name: 'AudiencesCount',\r\n title: 'UETTags_Grid_ColumnAudiences',\r\n sortable: true,\r\n helpId: 'pop_BA_UET_Audience',\r\n template: ({ value }) => {\r\n return audienceTemplate({\r\n value: value ? value : i18n.getString('UnifiedEventTracking_None'),\r\n disabled: isManagerDashboardView,\r\n ariaLabel: i18n.getString('ClickToAudiences'),\r\n });\r\n },\r\n type: 'number',\r\n }),\r\n column({\r\n name: 'Action',\r\n sortable: false,\r\n title: 'UETTags_Grid_ColumnAction',\r\n property: {\r\n key: 'Action',\r\n get: (value) => _.pick(value, ['SharingScope', 'Owner']),\r\n },\r\n template: ({ value }) => {\r\n const currentUser = config.get('CurrentUser');\r\n // In ui-next serverContext, ParentCustomerId are put in CurrentUser\r\n const parentCustomerId = _.isUndefined(currentUser.ParentCustomerId) ? config.get('ParentCustomerId') : currentUser.ParentCustomerId;\r\n const currentCustomer = config.get('CurrentCustomer');\r\n const loginCID = currentUser.IsInternal ? windowNameStorage.get('rcid') || currentCustomer.Id : parentCustomerId;\r\n\r\n return actionColumnTemplate({\r\n value,\r\n i18n,\r\n manageScopePermission: IsCustomerHierarchyEnabled && IsSharedLibraryPhase1Enabled && _.all([\r\n SharedLibraryUtils.isSuperAdmin({ uid: currentUser.Id, cid: value.Owner.Id }),\r\n SharedLibraryUtils.isLinkedAccount(config) === false,\r\n // user on customer that have no child customers in hierarchy is\r\n // not able to manage tag scope, except when the tag is already shared\r\n // to other customers by super admin on parent customers\r\n SharedLibraryUtils.hasChildCustomers(customerHierarchy, { cid: loginCID }) || _.result(value.SharingScope, 'Total') > 0,\r\n ]),\r\n });\r\n },\r\n }),\r\n ]);\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport jsdataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport { helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport { sortableHeaderTemplate } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport stateManager from '@bingads-webui-component-legacy/statemanager/campaignStateManager';\r\nimport preferenceService from '@bingads-webui-component-legacy/preference/service/index';\r\n\r\nconst schema = window.globalLegacySchema.get('Tag');\r\n\r\nexport class UETTagsGridConfig {\r\n constructor({\r\n preferenceConfig,\r\n columnConfig,\r\n isManagerDashboardView,\r\n appConfig,\r\n afterFindAllCallback,\r\n windowNameStorage,\r\n options: {\r\n customHeaderOffset,\r\n viewport,\r\n },\r\n isForVNext,\r\n i18n,\r\n isUETTagDeletionEnabled,\r\n }) {\r\n const tableName = i18n.getString('UnifiedEventTracking_Goal_Creation_Tag');\r\n\r\n _.extend(this, {\r\n name: preferenceConfig.name || 'UETTagsGrid',\r\n tableClasses: ['table', 'table-bordered'],\r\n dataSource: {\r\n type: 'jsdata',\r\n entity: jsdataCampaign.Tag,\r\n schema,\r\n },\r\n query: _.defaults(preferenceConfig.dataSource || {}, {\r\n entitySet: isManagerDashboardView ? edm.currentCustomer.Tags.toJSON() : edm.currentAccount.Tags.toJSON(),\r\n options: _.extend({\r\n cacheResponse: false,\r\n afterFindAll: afterFindAllCallback,\r\n }, appConfig.get('CurrentUser').IsInternal && windowNameStorage.get('rcid') > 0 ? {\r\n headers: { 'x-ms-rootcid': windowNameStorage.get('rcid') },\r\n } : {}),\r\n }, {\r\n query: _.defaults(preferenceConfig?.dataSource?.query || {}, {\r\n $expand: 'InvestUniversalPixel',\r\n }),\r\n }),\r\n config,\r\n stateManager,\r\n preferenceService,\r\n sortableHeader: _.defaults(preferenceConfig.sortableHeader, {\r\n name: 'Name',\r\n directionIndex: 0,\r\n template: sortableHeaderTemplate,\r\n }),\r\n rows: {\r\n headRows: isForVNext ? [\r\n 'column-header-rows',\r\n ] :\r\n helpers.singleToolbarHeadRows(),\r\n },\r\n scrolling: {\r\n header: {\r\n type: 'sticky',\r\n offset: customHeaderOffset || (() => $('nav.navbar-default.navbar-fixed-top').height()),\r\n attributes: { 'aria-label': i18n.getString('{{tableName}} table header', { tableName }) },\r\n },\r\n virtualized: true,\r\n },\r\n tableAttributes: { 'aria-label': tableName },\r\n columns: columnConfig,\r\n },\r\n isUETTagDeletionEnabled && {selection: true},\r\n );\r\n\r\n if (viewport) {\r\n this.scrolling.viewport = viewport;\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Promise from 'bluebird';\r\nimport { Storage } from '@bingads-webui/window-name-store';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { notificationApi, NotificationLevel } from '@bingads-webui-react/notification-center';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsdataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport TagViewer from '@bingads-webui-static-legacy/uet/view/tagViewer';\r\nimport preferencesService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { handleSortChange } from '@bingads-webui-campaign-legacy/bingadsgrid/service/state-manager-helper';\r\nimport { isActiveTrackingStatusForUet, showTrackingStatusDetails } from '@bingads-webui-campaign-legacy/common-grid-config/controls/tracking-status-popover';\r\nimport { contents } from '@bingads-webui-campaign-legacy/popover/index';\r\nimport helpLinkTemplate from '@bingads-webui-campaign-legacy/common-grid-config/controls/help-link-template.pug';\r\nimport trackingStatusPopoverTemplate from '@bingads-webui-campaign-legacy/common-grid-config/controls/tracking-status-popover-template.pug';\r\nimport tagReadOnlyPopoverTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/grid/tag-read-only-popover-template.pug';\r\nimport { PopoverView, positions } from '@bingads-webui/popover';\r\nimport AccountListView from '@bingads-webui-campaign-legacy/common-grid-config/controls/account-list-view';\r\nimport { SharedLibraryUtils, UETTagManageScopeDialog } from '@bingads-webui-campaign-react/shared-library-scopes';\r\nimport { ClientCenterCustomerService } from '@bingads-webui/clientcenter-customer-service';\r\nimport { getErrorMessage } from '@bingads-webui-campaign-legacy/conversion-tracking/common/util/index';\r\nimport { CreateView } from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/create/index';\r\nimport { getUETTagGridColumnConfig } from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/grid/column-config';\r\nimport { getDefaultPlugins } from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/grid/plugin-config';\r\nimport { UETTagsGridConfig } from '@bingads-webui-campaign-legacy/conversion-tracking/uet-tags/grid/grid-config';\r\n\r\nconst schema = window.globalLegacySchema.get('Tag');\r\nconst s$i18n = window.globalLegacyI18n.get('$/schema-i18n!campaign');\r\n\r\nexport function fetchCustomerHierarchy() {\r\n const windowNameStorage = new Storage();\r\n const currentUser = config.get('CurrentUser');\r\n // In ui-next serverContext, ParentCustomerId are put in CurrentUser\r\n const parentCustomerId = _.isUndefined(currentUser.ParentCustomerId) ? config.get('ParentCustomerId') : currentUser.ParentCustomerId;\r\n const currentCustomer = config.get('CurrentCustomer');\r\n const loginCID = currentUser.IsInternal ? windowNameStorage.get('rcid') || currentCustomer.Id : parentCustomerId;\r\n const ccCustomerService = new ClientCenterCustomerService({ ccBaseUrl: config.get('CCBaseUrl') });\r\n const fetchCustomerHierarchyPromise = ccCustomerService.getCustomerHierarchy({\r\n cid: loginCID,\r\n uid: currentUser.Id,\r\n returnOnlyDirectlyLinkedEntities: false,\r\n });\r\n const fetchUserPermissionPromise = fetchCustomerHierarchyPromise.then((data) => {\r\n const { customerHierarchyEntities: customerHierarchy } = data;\r\n const { Id: currentCustomerId } = currentCustomer;\r\n\r\n return SharedLibraryUtils.fetchUserPermissions({\r\n uid: currentUser.Id,\r\n cid: currentCustomerId,\r\n customerHierarchy,\r\n });\r\n });\r\n\r\n return Promise.join(fetchCustomerHierarchyPromise, fetchUserPermissionPromise, (data) => {\r\n const { customerHierarchyEntities: customerHierarchy } = data;\r\n\r\n return customerHierarchy;\r\n });\r\n}\r\n\r\nexport class UETTagsGrid extends DeterministicWrapperView {\r\n viewFactory({\r\n i18n,\r\n preferenceConfig,\r\n $blocker,\r\n permissions = {},\r\n isManagerDashboardView = false,\r\n pgridFactory,\r\n pluginFactories,\r\n extendPlugins = () => [],\r\n isForVNext,\r\n customHeaderOffset,\r\n sortableHeader,\r\n viewport,\r\n filterService,\r\n router,\r\n customerHierarchy,\r\n onShowPanel,\r\n showPopup,\r\n showAccountListPopup,\r\n perfMarker,\r\n renderThirdPartyIntegrationView,\r\n }) {\r\n const windowNameStorage = new Storage();\r\n\r\n this.isManagerDashboardView = isManagerDashboardView;\r\n this.permissions = permissions;\r\n this.i18n = i18n;\r\n this.$blocker = $blocker;\r\n this.filterService = filterService;\r\n this.router = router;\r\n this.customerHierarchy = customerHierarchy;\r\n this.isForVNext = isForVNext;\r\n this.onShowPanel = onShowPanel;\r\n this.showPopup = showPopup;\r\n this.showAccountListPopup = showAccountListPopup;\r\n this.isInitialGrid = true;\r\n this.renderThirdPartyIntegrationView = renderThirdPartyIntegrationView;\r\n\r\n edm.customerIdType.useAdvertiserCustomerId = !isManagerDashboardView;\r\n\r\n const columnConfig = getUETTagGridColumnConfig({\r\n updateHandler: _.bind(this.updateHandler, this),\r\n customerHierarchy: this.customerHierarchy,\r\n isManagerDashboardView,\r\n windowNameStorage,\r\n isActiveTrackingStatusForUet,\r\n isForVNext,\r\n deps: {\r\n i18n,\r\n s$i18n,\r\n permissions,\r\n config,\r\n },\r\n });\r\n const isUETTagDeletionEnabled = _.get(permissions, ['dynamic', 'UETTagDeletion']);\r\n const gridConfig = new UETTagsGridConfig({\r\n preferenceConfig,\r\n columnConfig,\r\n isManagerDashboardView,\r\n appConfig: config,\r\n afterFindAllCallback: _.bind(this.onGridDataLoaded, this),\r\n windowNameStorage,\r\n options: {\r\n customHeaderOffset,\r\n sortableHeader,\r\n viewport,\r\n },\r\n isForVNext: this.isForVNext,\r\n i18n,\r\n isUETTagDeletionEnabled,\r\n });\r\n const defaultPlugins = getDefaultPlugins({\r\n $blocker,\r\n i18n,\r\n s$i18n,\r\n view: this,\r\n appConfig: config,\r\n preferencesService,\r\n permissions,\r\n pluginFactories,\r\n isForVNext,\r\n perfMarker,\r\n });\r\n const extendedPlugins = extendPlugins({\r\n view: this,\r\n gridConfig,\r\n });\r\n\r\n this.grid = pgridFactory({\r\n gridConfig,\r\n plugins: defaultPlugins.concat(extendedPlugins),\r\n preferenceConfig: preferenceConfig || {},\r\n });\r\n this.gridView = this.grid.gridView;\r\n this.gridView.on('didUpdate', (changes) => {\r\n // for the perf issue, should not patch preference when init view\r\n if (this.isInitialGrid) {\r\n this.isInitialGrid = false;\r\n return;\r\n }\r\n handleSortChange(changes, this.gridView, gridConfig.name);\r\n });\r\n\r\n if (this.filterService) {\r\n this.listenTo(filterService, 'filter-state-changed', () => {\r\n updateGridQuery(this.gridView, this.filterService.getCombinedFilter(), true);\r\n });\r\n }\r\n\r\n return this.gridView;\r\n }\r\n\r\n get events() {\r\n return _.defaults({\r\n 'click .edit-tag-link': (e) => {\r\n const item = this.gridView.itemOfElement(e.target);\r\n const isUETDashboardPhase2Enabled = config.get('Permissions').dynamic.UETDashboardPhase2;\r\n\r\n if (isUETDashboardPhase2Enabled) {\r\n if (!_.isEmpty(item)) {\r\n this.router.navigateToTagIdPage({ tagId: item.Id });\r\n }\r\n } else {\r\n this.trigger('editTag', item);\r\n }\r\n },\r\n 'click .edit-tag-btn': (e) => {\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n this.trigger('editTag', item);\r\n },\r\n 'click .link-tag-id': (e) => {\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n if (!_.isEmpty(item)) {\r\n if (item.TrackingStatus === 'InactiveDueToTagUnavailable') {\r\n notificationApi.add({\r\n severity: NotificationLevel.Error,\r\n title: '',\r\n message: this.i18n.getString('UETTags_Grid_TrackingStatusMessage_InactiveDueToTagUnavailable'),\r\n target: 'FloatingBanner',\r\n });\r\n return;\r\n }\r\n this.router.navigateToTagIdPage({ tagId: item.Id });\r\n }\r\n },\r\n 'click .uet-tags-grid__action-view-tag': (e) => {\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n new TagViewer({\r\n tag: {\r\n name: item.Name,\r\n id: item.Id,\r\n script: item.TrackingCode,\r\n },\r\n renderThirdPartyIntegrationView: this.renderThirdPartyIntegrationView,\r\n }).render();\r\n },\r\n 'click .uet-tags-grid__action-manage-sharing-scope': (e) => {\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n if (!_.isEmpty(item) && this.onShowPanel) {\r\n this.onShowPanel({\r\n customerHierarchy: this.customerHierarchy,\r\n scopeOptions: [{\r\n id: SharedLibraryUtils.Scopes.CUSTOMER,\r\n text: this.i18n.getString('SharedLibrary_Tag_SharingScope_Customer', { account: `${item.Owner.Name} (${item.Owner.Number})` }),\r\n }, {\r\n id: SharedLibraryUtils.Scopes.HIERARCHY,\r\n text: this.i18n.getString('SharedLibrary_Tag_SharingScope_Hierarchy'),\r\n }],\r\n selectedOption: item.SharingScope.Total > 0 ? SharedLibraryUtils.Scopes.HIERARCHY : SharedLibraryUtils.Scopes.CUSTOMER,\r\n tagEntity: item,\r\n deps: { i18n: this.i18n },\r\n onShowPanel: this.onShowPanel,\r\n update: ({ treeSelection }) => {\r\n const updatedScope = treeSelection || { Accounts: [], Customers: [], Others: 0, Total: 0 };\r\n\r\n this.updateHandler(item, { SharingScope: updatedScope });\r\n },\r\n });\r\n return;\r\n }\r\n const tagSharingView = new UETTagManageScopeDialog({\r\n dialogOptions: {\r\n title: this.i18n.getString('SharedLibrary_UET_ManageScopeDialog_Title'),\r\n },\r\n customerHierarchy: this.customerHierarchy,\r\n scopeOptions: [{\r\n id: SharedLibraryUtils.Scopes.CUSTOMER,\r\n text: this.i18n.getString('SharedLibrary_Tag_SharingScope_Customer', { account: `${item.Owner.Name} (${item.Owner.Number})` }),\r\n }, {\r\n id: SharedLibraryUtils.Scopes.HIERARCHY,\r\n text: this.i18n.getString('SharedLibrary_Tag_SharingScope_Hierarchy'),\r\n }],\r\n selectedOption: item.SharingScope.Total > 0 ? SharedLibraryUtils.Scopes.HIERARCHY : SharedLibraryUtils.Scopes.CUSTOMER,\r\n tagEntity: item,\r\n deps: { i18n: this.i18n },\r\n withFooter: true,\r\n }).render();\r\n\r\n tagSharingView.on('save', ({ treeSelection }) => {\r\n const updatedScope = treeSelection || { Accounts: [], Customers: [], Others: 0, Total: 0 };\r\n\r\n this.updateHandler(item, { SharingScope: updatedScope });\r\n tagSharingView.remove();\r\n });\r\n tagSharingView.on('close cancel', () => {\r\n tagSharingView.remove();\r\n });\r\n },\r\n 'click .uet-tags-grid__tracking-status-detail': 'onShowTrackingStatusDetails',\r\n 'click .uet-tags-grid__shared-scope-detail': 'onShowSharedScopeDetails',\r\n 'click .uet-tags-grid__used-by-detail': 'onShowUsedByDetails',\r\n 'click .tag-grid__tag-readonly': 'onShowTagReadOnlyPopup',\r\n 'click .uet-tags-grid__link-goals': (e) => {\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n if (_.isEmpty(item)) {\r\n return;\r\n }\r\n const { Id: tagId, GoalsCount: goalsCount } = item;\r\n\r\n if (this.router && _.isFunction(this.router.navigateToGoals)) {\r\n this.router.navigateToGoals({ tagId, goalsCount });\r\n return;\r\n }\r\n\r\n if (_.isFinite(goalsCount) && goalsCount > 0) {\r\n const filterExpression = {\r\n FilterExpressions: [{\r\n SelectedColumn: 'Id',\r\n SelectedOperator: 'Equal',\r\n Values: [`${tagId}`],\r\n }],\r\n };\r\n const escapedFilter = encodeURIComponent(JSON.stringify(filterExpression));\r\n\r\n window.App.navigate(`customer/:customer_id/account/:account_id/uet/goals/find/${escapedFilter}`);\r\n } else {\r\n window.App.navigate('customer/:customer_id/account/:account_id/uet/goals');\r\n }\r\n },\r\n 'click .uet-tags-grid__link-audience': (e) => {\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n if (_.isEmpty(item)) {\r\n return;\r\n }\r\n const { Id: tagId, AudiencesCount: audiencesCount } = item;\r\n\r\n if (this.router && _.isFunction(this.router.navigateToAudiences)) {\r\n this.router.navigateToAudiences({ tagId, audiencesCount });\r\n return;\r\n }\r\n\r\n if (_.isFinite(audiencesCount) && audiencesCount > 0) {\r\n const filterExpression = {\r\n FilterExpressions: [{\r\n SelectedColumn: 'TagId',\r\n SelectedOperator: 'Equal',\r\n Values: [`${tagId}`],\r\n }],\r\n };\r\n const escapedFilter = encodeURIComponent(JSON.stringify(filterExpression));\r\n\r\n window.App.navigate(`customer/:customer_id/account/:account_id/library/audience/find/${escapedFilter}`);\r\n } else {\r\n window.App.navigate('customer/:customer_id/account/:account_id/library/audience');\r\n }\r\n },\r\n }, this.isForVNext ? {\r\n 'mouseenter .uet-tags-grid__tracking-status-detail': 'onShowTrackingStatusDetails',\r\n 'mouseenter .uet-tags-grid__used-by-detail': 'onShowUsedByDetails',\r\n 'mouseenter .uet-tags-grid__shared-scope-detail': 'onShowSharedScopeDetails',\r\n 'mouseenter .tag-grid__tag-readonly': 'onShowTagReadOnlyPopup',\r\n 'mouseleave .UET-tags-column-TrackingStatus': 'hidePopup',\r\n 'mouseleave .UET-tags-column-UsedBy': 'hidePopup',\r\n 'mouseleave .UET-tags-column-SharingScope': 'hidePopup',\r\n 'mouseleave .tag-grid__tag-readonly': 'hidePopup',\r\n } : {});\r\n }\r\n\r\n hidePopup(e) {\r\n if ($(e.relatedTarget).closest('#popup-callout').length === 0) {\r\n this.trigger('closePopup');\r\n }\r\n }\r\n\r\n onShowTrackingStatusDetails(e, title = this.i18n.getString('UETTags_Grid_ColumnTrackingStatus')) {\r\n if (this.isForVNext && _.isFunction(this.showPopup)) {\r\n const item = this.gridView.itemOfElement(e.target);\r\n const isUnverifiedOrInactive = item.TrackingStatus === this.i18n.getString('UnifiedEventTracking_Tags_TrackingStatus_Enum_Unverified') || item.TrackingStatus === this.i18n.getString('UnifiedEventTracking_Tags_TrackingStatus_Enum_InactiveTag');\r\n const isUETDashboardPhase2Enabled = config.get('Permissions').dynamic.UETDashboardPhase2;\r\n const isTrackingStatusColumn = title === this.i18n.getString('UETTags_Grid_ColumnTrackingStatus');\r\n\r\n if (_.isEmpty(item)) {\r\n return;\r\n }\r\n const a11yId = (suffix) => `${_.uniqueId('a11y-')}__${suffix}`;\r\n const contentView = new contents.TitledContent()\r\n .setBody({\r\n html: trackingStatusPopoverTemplate({\r\n i18n: this.i18n,\r\n helpLinkTemplate,\r\n troubleshootTopic: 'app51206',\r\n value: item.TrackingStatus,\r\n a11yId,\r\n isActiveTrackingStatus: isActiveTrackingStatusForUet,\r\n isUnverifiedOrInactive,\r\n isUETAllTagsDashboard: true,\r\n isUETDashboardPhase2Enabled,\r\n isTrackingStatusColumn,\r\n trackingStatusMessagePrefix: 'UETTags_Grid_TrackingStatusMessage_',\r\n }),\r\n }).delegateEvents({\r\n 'click .uetdashboard': () => {\r\n this.router.navigateToTagIdPage({ tagId: item.Id });\r\n }});\r\n\r\n this.showPopup({\r\n containerSelector: '#rejectionContainer',\r\n title: this.i18n.getString('UETTags_Grid_ColumnTrackingStatus'),\r\n contentView,\r\n event: e,\r\n parentView: this,\r\n });\r\n } else {\r\n showTrackingStatusDetails(\r\n this.gridView.itemOfElement(e.target),\r\n this.$(e.target),\r\n 'uet-tags-grid__tracking-status-popover',\r\n isActiveTrackingStatusForUet,\r\n this.i18n,\r\n 'UETTags_Grid_TrackingStatusMessage_',\r\n );\r\n }\r\n }\r\n\r\n onShowSharedScopeDetails(e) {\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n if (_.isEmpty(item)) {\r\n return;\r\n }\r\n const { SharingScope: value } = item;\r\n\r\n if (this.isForVNext && _.isFunction(this.showAccountListPopup)) {\r\n this.showAccountListPopup({\r\n i18n: this.i18n,\r\n containerSelector: '#rejectionContainer',\r\n title: this.i18n.getString('Tag_Shared_To_Popover_Title', { number: value.Total }),\r\n subtitle: this.i18n.getString('Tag_Shared_To_Popover_Message'),\r\n event: e,\r\n value,\r\n parentView: this,\r\n });\r\n } else {\r\n const accountListView = new AccountListView({\r\n value,\r\n i18n: this.i18n,\r\n title: this.i18n.getString('Tag_Shared_To_Popover_Title', { number: value.Total }),\r\n subtitle: this.i18n.getString('Tag_Shared_To_Popover_Message'),\r\n footerText: value.Others > 0 ? this.i18n.getString('Tag_Popover_Number_Other_Accounts', { number: value.Others }) : null,\r\n });\r\n\r\n this.sharingScopePopoverView = new PopoverView({\r\n target: this.$(e.target),\r\n containerClassName: ['uet-tags-grid__shared-scope-popover'],\r\n position: positions.relativeToTableRow(),\r\n }).setContent(accountListView);\r\n }\r\n }\r\n\r\n onShowUsedByDetails(e) {\r\n const item = this.gridView.itemOfElement(e.target);\r\n\r\n if (_.isEmpty(item)) {\r\n return;\r\n }\r\n const { UsedBy: value } = item;\r\n\r\n if (this.isForVNext && _.isFunction(this.showAccountListPopup)) {\r\n this.showAccountListPopup({\r\n i18n: this.i18n,\r\n containerSelector: '#rejectionContainer',\r\n title: this.i18n.getString('Tag_Used_By_Popover_Title', { number: value.Total }),\r\n subtitle: this.i18n.getString('Tag_Used_By_Popover_Message'),\r\n value,\r\n event: e,\r\n parentView: this,\r\n });\r\n } else {\r\n const accountListView = new AccountListView({\r\n value,\r\n i18n: this.i18n,\r\n title: this.i18n.getString('Tag_Used_By_Popover_Title', { number: value.Total }),\r\n subtitle: this.i18n.getString('Tag_Used_By_Popover_Message'),\r\n footerText: value.Others > 0 ? this.i18n.getString('Tag_Popover_Number_Other_Accounts', { number: value.Others }) : null,\r\n });\r\n\r\n this.usedByPopoverView = new PopoverView({\r\n target: this.$(e.target),\r\n containerClassName: ['uet-tags-grid__used-by-popover'],\r\n position: positions.relativeToTableRow(),\r\n }).setContent(accountListView);\r\n }\r\n }\r\n\r\n onShowTagReadOnlyPopup(e) {\r\n const title = this.i18n.getString('Tag_ReadOnly_Popover_Title');\r\n const a11yId = (suffix) => `${_.uniqueId('a11y-')}__${suffix}`;\r\n const popupMessage = this.i18n.getString('Tag_ReadOnly_Popover_Message');\r\n\r\n if (this.isForVNext && _.isFunction(this.showPopup)) {\r\n const contentView = new contents.TitledContent()\r\n .setBody({\r\n html: tagReadOnlyPopoverTemplate({\r\n a11yId,\r\n popupMessage,\r\n }),\r\n });\r\n\r\n this.showPopup({\r\n containerSelector: '#rejectionContainer',\r\n title,\r\n contentView,\r\n event: e,\r\n parentView: this,\r\n });\r\n }\r\n }\r\n\r\n getCreationEditor({ permissions }) {\r\n this.createView = new CreateView({\r\n i18n: this.i18n,\r\n $blocker: this.$blocker,\r\n appConfig: config,\r\n permissions,\r\n isManagerDashboardView: this.isManagerDashboardView,\r\n });\r\n\r\n // toolbarEditor.overrideWith(this.createView.render());\r\n this.grid.toolbar.gridToolbarGroup.hideAllToolbars();\r\n this.createView.once('cancelTagCreation', () => {\r\n this.grid.toolbar.gridToolbarGroup.showAllToolbars();\r\n this.removeCreateView();\r\n });\r\n this.createView.once('finishTagCreation', () => {\r\n this.gridView.refresh(true);\r\n this.grid.toolbar.gridToolbarGroup.showAllToolbars();\r\n this.trigger('tagDidCreated');\r\n this.removeCreateView();\r\n });\r\n\r\n return this.createView;\r\n }\r\n\r\n onGridDataLoaded(options, data) {\r\n const { IsCustomerHierarchyEnabled, IsSharedLibraryPhase1Enabled } = this.permissions;\r\n\r\n if (IsCustomerHierarchyEnabled && IsSharedLibraryPhase1Enabled) {\r\n const ownerIds = _.map(data, (item) => item.Owner.Id);\r\n const { Id: currentCustomerId } = config.get('CurrentCustomer');\r\n\r\n ownerIds.push(currentCustomerId);\r\n SharedLibraryUtils.fetchUserPermissions({\r\n uid: config.get('CurrentUser').Id,\r\n cid: currentCustomerId,\r\n customerIds: ownerIds,\r\n }).then((allCIDCached) => {\r\n if (!allCIDCached) {\r\n this.gridView.refresh(true);\r\n }\r\n }).finally(withUiBlock(this.$blocker, this.i18n.getString('loadingtext')));\r\n }\r\n\r\n return data;\r\n }\r\n\r\n updateHandler(originalItem, patch, editorView) {\r\n const windowNameStorage = new Storage();\r\n\r\n jsdataCampaign.Tag.update(originalItem[schema.key], patch, _.extend({\r\n cacheResponse: false,\r\n entitySet: this.isManagerDashboardView ? edm.currentCustomer.Tags : edm.currentAccount.Tags,\r\n }, config.get('CurrentUser').IsInternal && windowNameStorage.get('rcid') > 0 ? {\r\n headers: { 'x-ms-rootcid': windowNameStorage.get('rcid') },\r\n } : {}))\r\n .then(() => {\r\n if (editorView) {\r\n editorView.trigger('save', patch);\r\n }\r\n this.gridView.refresh(true);\r\n })\r\n .catch((res) => {\r\n const errors = [];\r\n\r\n if (!res || !res.errors) {\r\n errors.push(getErrorMessage('default', this.i18n));\r\n } else {\r\n _.each(res.errors, (error) => {\r\n errors.push(getErrorMessage(error.Code, this.i18n));\r\n });\r\n }\r\n if (editorView) {\r\n editorView.setErrors({ $overall: errors });\r\n }\r\n }).finally(withUiBlock(this.$blocker, this.i18n.getString('loadingtext')));\r\n }\r\n\r\n removeCreateView() {\r\n if (this.createView) {\r\n this.createView.off();\r\n this.createView.remove();\r\n this.createView = null;\r\n }\r\n }\r\n\r\n renderTrunk() {\r\n if (this.isForVNext) {\r\n this.filterService.initializeCombinedFilterPromise.then(() => {\r\n updateGridQuery(this.gridView, this.filterService.getCombinedFilter(), true);\r\n });\r\n }\r\n super.renderTrunk();\r\n }\r\n\r\n remove() {\r\n this.removeCreateView();\r\n return super.remove();\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { toolbarPlugin, helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport uiBlockerPlugin from '@bingads-webui-component-legacy/bingads-grid/plugin/ui-blocker';\r\nimport dateFilterPlugin from '@bingads-webui-campaign-legacy/bingadsgrid/vnext/plugin/date-filter';\r\nimport { performanceLogPlugin, perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\n\r\nexport const getDefaultPlugins = ({\r\n $blocker,\r\n i18n,\r\n view,\r\n appConfig,\r\n preferencesService,\r\n permissions,\r\n pluginFactories,\r\n isForVNext,\r\n perfMarker,\r\n}) => _.compact([\r\n { plugin: perfMarkerPlugin, config: { appConfig, marker: perfMarker } },\r\n { plugin: a11yPlugin, config: { i18n } },\r\n { plugin: dateFilterPlugin },\r\n (!appConfig.get('CurrentAccountInActive') && !permissions.IsReadOnlyUser) && {\r\n plugin: editablePlugin,\r\n config: { i18n },\r\n },\r\n {\r\n plugin: uiBlockerPlugin,\r\n config: { el: $blocker },\r\n },\r\n {\r\n plugin: pluginFactories.placeholderPlugin,\r\n config: {\r\n container: isForVNext ? '.grid-noresult' : '.uet-tags-grid__placeholder',\r\n text: i18n.getString('Grid_NoRecords'),\r\n filteredContainer: isForVNext ? '.grid-noresult' : '.uet-tags-grid__placeholder',\r\n filteredEmptyText: i18n.getString('Grid_NoFilteredRecords'),\r\n },\r\n },\r\n {\r\n plugin: pluginFactories.paginationPlugin,\r\n config: {\r\n pageSize: 20,\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n pageNumberLabelText: i18n.getString('Grid_Page_Number_Label_Text'),\r\n pageSizeText: i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: i18n.getString('Grid_PageOf'),\r\n resetPageNumberOnSort: true,\r\n },\r\n },\r\n {\r\n plugin: performanceLogPlugin,\r\n config: {\r\n appConfig,\r\n logger,\r\n },\r\n },\r\n {\r\n plugin: toolbarPlugin,\r\n config: helpers.singleToolbar({\r\n items: [{\r\n type: 'button',\r\n id: 'button-create-new-tag',\r\n classes: ['btn', 'btn-hero'],\r\n text: i18n.getString('UETTags_Grid_ButtonCreateNewTag'),\r\n onClick: () => {\r\n const createMoreTagsPrompt = preferencesService.findByName('WebApp.CampaignUI.UET.Tags.ShowCreateMoreTagsPrompt');\r\n\r\n if ((!createMoreTagsPrompt || createMoreTagsPrompt.Data) && view.gridView.getItemCount() > 0) {\r\n view.trigger('showModal');\r\n } else {\r\n view.trigger('createTag');\r\n }\r\n },\r\n }, {\r\n type: 'dropdown',\r\n id: 'dropdown-filter',\r\n }, {\r\n type: 'search-box',\r\n id: 'search-box-filter',\r\n }],\r\n }),\r\n },\r\n]);\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\n\r\nimport tmpl from '@bingads-webui-campaign-legacy/conversion-tracking/template/upload-conversions/changes-view.pug';\r\n\r\nimport ProjectionGrid from '@bingads-webui-component-legacy/github/modules/projection-grid/module/projection-grid';\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\nimport downloadService from '@bingads-webui-component-legacy/download/index';\r\n\r\nimport instrumentationSvc from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport instrumentSetting from '@bingads-webui-static-legacy/instrumentation/campaignSchemaAndSetting';\r\n\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/conversion-tracking');\r\n\r\nconst urlTemplate = '/BulkUploadFiles/GetBulkFileUrl(CustomerId=:customer_id,FileIdentifier={{identifier}},BulkFileType={{type}})';\r\n\r\nexport default class View extends Backbone.View {\r\n\r\n get events() {\r\n return {\r\n 'click .btn-apply': 'applyChanges',\r\n 'click .btn-discard': 'discard',\r\n 'click .btn-results': 'downloadResults',\r\n 'click .link-errors': 'downloadErrors',\r\n 'click .btn-errors': 'downloadErrors',\r\n 'click .btn-close': 'close',\r\n };\r\n }\r\n\r\n initialize(options = {}) {\r\n this.options = options || {};\r\n this.isNewUI = !!options.isNewUI;\r\n this.isOfflineConversionGoalCurrencyCustomerScopeSupported = PageContext.Permissions && PageContext.Permissions.IsOfflineConversionGoalCurrencyCustomerScopeSupported;\r\n this.initGridConfig();\r\n }\r\n\r\n render() {\r\n if (this.isNewUI) {\r\n const { data, type } = this.options;\r\n\r\n this.successRows = type === 'review' ? data.SuccessCount : data.RowsProcessed;\r\n this.errorRows = this.options.type === 'review' ? data.ErrorCount : data.TotalRows - data.RowsProcessed;\r\n this.totalRows = (this.successRows || 0) + (this.errorRows || 0);\r\n }\r\n\r\n this.$el.html(tmpl({\r\n type: this.options.type,\r\n hasError: !!this.options.errorsIdentifier,\r\n hasUploadError: this.options.hasUploadError,\r\n hasAcrossAllAccountsOfflineConversionGoal: this.isOfflineConversionGoalCurrencyCustomerScopeSupported && !!this.options.data.HasAcrossAllAccountsOfflineConversionGoal,\r\n i18n,\r\n successRows: this.successRows,\r\n errorRows: this.errorRows,\r\n totalRows: this.totalRows,\r\n isNewUI: this.isNewUI,\r\n }));\r\n\r\n if (!this.isNewUI) {\r\n if (this.options.type === 'review') {\r\n this.config.el = this.$('.changes-grid');\r\n } else if (this.options.type === 'preview' || this.options.type === 'scheduled-preview') {\r\n this.config.el = this.$('.preview-grid');\r\n }\r\n this.grid = ProjectionGrid.factory({vnext: true}).create(this.config).gridView;\r\n this.grid.render();\r\n }\r\n\r\n if (instrumentationSvc.endActivity) {\r\n instrumentationSvc.endActivity();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n initGridConfig() {\r\n switch (this.options.type) {\r\n case 'preview':\r\n case 'scheduled-preview': {\r\n this.config = this.initPreviewGrid(this.options.data);\r\n break;\r\n }\r\n case 'review': {\r\n this.config = this.initSummaryGrid(this.options.data);\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n initPreviewGrid(data) {\r\n const config = {\r\n tableClasses: ['table', 'table-bordered'],\r\n };\r\n\r\n config.dataSource = {\r\n type: 'memory',\r\n data: [{'SuccessCount': data.RowsProcessed, 'ErrorCount': data.TotalRows - data.RowsProcessed}],\r\n };\r\n\r\n config.columns = [{\r\n title: i18n.getString('Import_ColumnHeader_Additions'),\r\n name: 'SuccessCount',\r\n }, {\r\n title: i18n.getString('Import_ColumnHeader_Errors'),\r\n name: 'ErrorCount',\r\n }];\r\n\r\n return config;\r\n }\r\n\r\n initSummaryGrid(data) {\r\n const config = {\r\n tableClasses: ['table', 'table-bordered'],\r\n };\r\n\r\n config.dataSource = {\r\n type: 'memory',\r\n data: [{'SuccessCount': data.SuccessCount, 'ErrorCount': data.ErrorCount}],\r\n };\r\n\r\n config.columns = [{\r\n title: i18n.getString('Import_ColumnHeader_Updates'),\r\n name: 'SuccessCount',\r\n }, {\r\n title: i18n.getString('Import_ColumnHeader_Errors'),\r\n name: 'ErrorCount',\r\n }];\r\n\r\n return config;\r\n }\r\n\r\n handleGenericError(errorLog, err) {\r\n if (instrumentationSvc.logError) {\r\n instrumentationSvc.logError('UploadConversions/changesView/handleGenericError',\r\n `Failed on url ${errorLog.Url}`);\r\n }\r\n\r\n this.trigger('error', {\r\n errorMsgKey: 'UnifiedEventTracking_UploadConversions_GenericError',\r\n log: _.extend(\r\n _.pick(err, 'readyState', 'responseText', 'status', 'statusText'),\r\n _.pick(err.headers, 'x-ms-requestid', 'x-ms-trackingid'),\r\n errorLog),\r\n });\r\n }\r\n\r\n applyChanges() {\r\n //send the create commit rule request to odata api\r\n const op = {\r\n data: {\r\n '@odata.type': '#Model.OfflineConversionUploadTaskItem',\r\n 'FileIdentifier': '',\r\n 'SessionId': this.options.sessionId,\r\n 'Name': this.options.filename,\r\n 'Type': 'OfflineConversionUploadCommit',\r\n 'Cron': '',\r\n },\r\n },\r\n url = '/Customers()/Accounts()/TaskItems?$expand=TaskItemExecutions';\r\n\r\n this.$('.btn-apply').prop('disabled', true);\r\n odata.post(url, op).bind(this)\r\n .then((data) => {\r\n this.$('.btn-apply').prop('disabled', false);\r\n this.trigger('startApply', { TaskId: data.Id, ExecutionId: _.first(data.TaskItemExecutions).Id });\r\n })\r\n .catch((err) => {\r\n this.$('.btn-apply').prop('disabled', false);\r\n this.handleGenericError({Url: url, TaskSessionId: this.options.sessionId}, err);\r\n });\r\n if (instrumentationSvc.asLoggingStart) {\r\n instrumentationSvc.asLoggingStart(instrumentSetting.ACTIVITYNAME.ClickOnApplyChanges);\r\n }\r\n }\r\n\r\n discard() {\r\n this.trigger('discard');\r\n if (instrumentationSvc.asLoggingStart) {\r\n instrumentationSvc.asLoggingStart(instrumentSetting.ACTIVITYNAME.ClickOnDiscard);\r\n }\r\n }\r\n\r\n recoverBinding() {\r\n this.undelegateEvents();\r\n this.delegateEvents();\r\n if (instrumentationSvc.endActivity) {\r\n instrumentationSvc.endActivity();\r\n }\r\n }\r\n\r\n downloadResults() {\r\n const url = _.template(urlTemplate)({\r\n identifier: this.options.resultsIdentifier,\r\n type: 'OfflineConversionAllResultFile',\r\n });\r\n\r\n odata.get(url).bind(this)\r\n .then((data) => {\r\n downloadService.download(data);\r\n })\r\n .catch((err) => {\r\n this.handleGenericError({Url: url}, err);\r\n });\r\n\r\n if (instrumentationSvc.asLoggingStart) {\r\n instrumentationSvc.asLoggingStart(instrumentSetting.ACTIVITYNAME.ClickOnDownloadAllResults);\r\n }\r\n }\r\n\r\n downloadErrors() {\r\n const url = _.template(urlTemplate)({\r\n identifier: this.options.errorsIdentifier,\r\n type: 'OfflineConversionErrorResultFile',\r\n });\r\n\r\n odata.get(url).bind(this)\r\n .then((data) => {\r\n downloadService.download(data);\r\n })\r\n .catch((err) => {\r\n this.handleGenericError({Url: url}, err);\r\n });\r\n\r\n if (instrumentationSvc.asLoggingStart) {\r\n instrumentationSvc.asLoggingStart(instrumentSetting.ACTIVITYNAME.ClickOnDownloadErrorsOnly);\r\n }\r\n }\r\n\r\n close() {\r\n this.trigger('close');\r\n if (instrumentationSvc.asLoggingStart) {\r\n instrumentationSvc.asLoggingStart(instrumentSetting.ACTIVITYNAME.ClickOnClose);\r\n }\r\n }\r\n\r\n}\r\n","import _ from 'underscore';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\n\r\nimport datetimeUserTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/template/upload-conversions/columns/datetime-user.pug';\r\nimport uploadedFileTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/template/upload-conversions/columns/uploaded-file.pug';\r\nimport summaryTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/template/upload-conversions/columns/summary.pug';\r\nimport actionsTemplate from '@bingads-webui-campaign-legacy/conversion-tracking/template/upload-conversions/columns/actions.pug';\r\n\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport dateHumanizer from '@bingads-webui-component-legacy/humanize/date';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/conversion-tracking');\r\n\r\nconst dataColumnsConfig = [{\r\n name: 'datetimeuser',\r\n title: i18n.getString('UnifiedEventTracking_UploadConversions_HistoryGrid_DatetimeUser'),\r\n bodyClasses: ['datetimeuser-col'],\r\n template: datetimeUserTemplate,\r\n property: (row) => {\r\n const date = dateHumanizer.parse(row.StartedAt);\r\n\r\n return {\r\n datetime: _.isDate(date) ? date.toLocaleString(config.get('Culture') || pageContext.Culture || 'en-US') : row.StartedAt,\r\n user: row.UserName || i18n.getString('UnifiedEventTracking_UploadConversions_Common_NotAvailable'),\r\n };\r\n },\r\n}, {\r\n name: 'uploadedfile',\r\n title: i18n.getString('UnifiedEventTracking_UploadConversions_HistoryGrid_UploadedFile'),\r\n template: uploadedFileTemplate,\r\n property: (row) => {\r\n const inputFile = _.first(_.where(row.OfflineConversionFiles, {Type: 'InputFile'}));\r\n\r\n let hasExpectedStatus = row.Status === 'Completed' || row.Status === 'PendingExecution' || row.Status === 'Failed';\r\n\r\n return {\r\n name: inputFile && hasExpectedStatus ? inputFile.Name : i18n.getString('UnifiedEventTracking_UploadConversions_Common_NotAvailable'),\r\n identifier: inputFile && hasExpectedStatus ? inputFile.Identifier : '',\r\n shouldDisable: inputFile && hasExpectedStatus ? !(inputFile && inputFile.Identifier) || (inputFile && inputFile.IsExpired) || row.Status === 'Failed' : true,\r\n };\r\n },\r\n}, {\r\n name: 'summary',\r\n title: i18n.getString('UnifiedEventTracking_UploadConversions_HistoryGrid_Summary'),\r\n template: summaryTemplate,\r\n property: (row) => {\r\n if (row.Status === 'PendingExecution') {\r\n return {\r\n isPending: true,\r\n isCompleted: false,\r\n successCount: row.SuccessCount,\r\n errorCount: row.ErrorCount,\r\n i18n,\r\n };\r\n } else if (row.Status === 'Completed') {\r\n return {\r\n isPending: false,\r\n isCompleted: true,\r\n successCount: row.SuccessCount,\r\n errorCount: row.ErrorCount,\r\n i18n,\r\n };\r\n } else if (row.Status === 'Failed' && _.isArray(row.Errors) && !_.isEmpty(row.Errors)) {\r\n const errorCodes = row.Errors.map((error) => error && error.Code).filter(Boolean).map((code) => i18n.getString(code) || i18n.getString(`Error_Campaign_API_${code}`));\r\n\r\n return {\r\n isPending: false,\r\n isCompleted: false,\r\n status: [i18n.getString('GenericUploadError'), ...errorCodes].filter(Boolean).join(' '),\r\n successCount: row.SuccessCount,\r\n errorCount: row.ErrorCount,\r\n i18n,\r\n };\r\n } else {\r\n return {\r\n isPending: false,\r\n isCompleted: false,\r\n status: i18n.getString(`UnifiedEventTracking_UploadConversions_RunResultState_${row.Status}`) || i18n.getString('UnifiedEventTracking_UploadConversions_Common_NotAvailable'),\r\n successCount: row.SuccessCount,\r\n errorCount: row.ErrorCount,\r\n i18n,\r\n };\r\n }\r\n },\r\n}, {\r\n name: 'actions',\r\n title: i18n.getString('UnifiedEventTracking_UploadConversions_HistoryGrid_Actions'),\r\n template: actionsTemplate,\r\n property: (row) => {\r\n const resultsFile = _.first(_.where(row.OfflineConversionFiles, {Type: 'AllRecordsResultFile'}));\r\n const errorsFile = _.first(_.where(row.OfflineConversionFiles, {Type: 'ErrorOnlyResultFile'}));\r\n\r\n return {\r\n isPending: row.Status === 'PendingExecution',\r\n hasError: row.ErrorCount > 0,\r\n resultsId: resultsFile && resultsFile.Identifier,\r\n errorsId: errorsFile && errorsFile.Identifier,\r\n shouldDisable: !(resultsFile && resultsFile.Identifier) || (resultsFile && resultsFile.IsExpired),\r\n i18n,\r\n };\r\n },\r\n}];\r\n\r\nexport const columnsConfig = dataColumnsConfig;\r\n","import DataSource from '@bingads-webui-component-legacy/js-data-campaign/index';\r\n\r\nconst dataSourceConfig = {\r\n type: 'jsdata',\r\n entity: DataSource.OfflineConversionUploadTaskItemExecution,\r\n options: {cacheResponse: false},\r\n query: {\r\n $filter: 'TaskItem/Type eq Enum.TaskItemType\\'OfflineConversionUploadCommit\\' or TaskItem/Type eq Enum.TaskItemType\\'OfflineConversionUploadCommitTest\\'',\r\n },\r\n};\r\n\r\nexport const dataConfig = dataSourceConfig;\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Backbone from 'backbone';\r\n\r\nimport template from '@bingads-webui-campaign-legacy/conversion-tracking/template/upload-conversions/history-grid.pug';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\n\r\nimport ProjectionGrid from '@bingads-webui-component-legacy/github/modules/projection-grid/module/projection-grid';\r\nimport downloadService from '@bingads-webui-component-legacy/download/index';\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\n\r\nimport instrumentationSvc from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport instrumentSetting from '@bingads-webui-static-legacy/instrumentation/campaignSchemaAndSetting';\r\n\r\nimport { columnsConfig } from '@bingads-webui-campaign-legacy/conversion-tracking/upload-conversions/history-grid-columns-config';\r\nimport { dataConfig } from '@bingads-webui-campaign-legacy/conversion-tracking/upload-conversions/history-grid-data-config';\r\nimport { getPGridColumnResizePlugin } from '@bingads-webui-campaign/projection-grid-column-resize-helper';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/conversion-tracking');\r\n\r\nconst downloadUrlTemplate = '/BulkUploadFiles/GetBulkFileUrl(CustomerId=:customer_id,FileIdentifier={{identifier}},BulkFileType={{type}})';\r\n\r\nexport default class View extends Backbone.View {\r\n\r\n initialize(options = {}) {\r\n this.data = options.data ? options.data : dataConfig;\r\n this.columns = columnsConfig;\r\n }\r\n\r\n render() {\r\n this.$el.append(template());\r\n const {gridName,\r\n preferenceService} = this;\r\n const resizeConfig = getPGridColumnResizePlugin({\r\n gridName,\r\n preferenceService,\r\n });\r\n\r\n this.grid = ProjectionGrid.factory({ vnext: true })\r\n .use(paginationPlugin)\r\n .use(uiBlockerPlugin)\r\n .use(a11yPlugin)\r\n .use(placeholderPlugin)\r\n .use(resizeConfig.plugin)\r\n .create({\r\n el: this.$('.grid-container'),\r\n tableClasses: ['table', 'grid', 'table-hover'],\r\n dataSource: this.data,\r\n columns: this.columns,\r\n plugins: {\r\n pagination: {\r\n enableRandomPage: false,\r\n pageSize: 20,\r\n availablePageSizes: [20, 50, 100, 200],\r\n pageNumberLabelText: i18n.getString('Grid_Page_Number_Label_Text'),\r\n pageSizeText: i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: i18n.getString('Grid_PageOf'),\r\n },\r\n uiBlocker: {\r\n el: this.$('.history-grid'),\r\n },\r\n placeholder: {\r\n container: this.$('.grid-noresult'),\r\n text: i18n.getString('Grid_NoRecords'),\r\n },\r\n },\r\n }).gridView;\r\n\r\n this.grid.render();\r\n\r\n return this;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .btn-results': 'downloadResults',\r\n 'click .btn-errors': 'downloadErrors',\r\n 'click .btn-file': 'downloadInputFile',\r\n };\r\n }\r\n\r\n downloadResults(e) {\r\n if (e && e.target && $(e.target).is('[disabled]')) {\r\n return;\r\n }\r\n\r\n const id = this.getDataId(e);\r\n\r\n this.download(id, 'OfflineConversionAllResultFile');\r\n if (instrumentationSvc.asLoggingStart) {\r\n instrumentationSvc.asLoggingStart(instrumentSetting.ACTIVITYNAME.ClickToDownloadAllResultsInGrid);\r\n }\r\n }\r\n\r\n downloadErrors(e) {\r\n const id = this.getDataId(e);\r\n\r\n this.download(id, 'OfflineConversionErrorResultFile');\r\n if (instrumentationSvc.asLoggingStart) {\r\n instrumentationSvc.asLoggingStart(instrumentSetting.ACTIVITYNAME.ClickToDownloadErrorsOnlyInGrid);\r\n }\r\n }\r\n\r\n downloadInputFile(e) {\r\n const id = this.getDataId(e);\r\n\r\n this.download(id, 'OfflineConversionInputFile');\r\n if (instrumentationSvc.asLoggingStart) {\r\n instrumentationSvc.asLoggingStart(instrumentSetting.ACTIVITYNAME.ClickToDownloadInputFileInGrid);\r\n }\r\n }\r\n\r\n download(identifier, type) {\r\n const url = _.template(downloadUrlTemplate)({\r\n identifier,\r\n type,\r\n });\r\n\r\n odata.get(url).bind(this)\r\n .then((data) => {\r\n downloadService.download(data);\r\n })\r\n .catch((err) => {\r\n this.trigger('error:system', _.extend({\r\n Url: url,\r\n }, _.pick(err, 'readyState', 'responseText', 'status', 'statusText'),\r\n _.pick(err.headers, 'x-ms-requestid', 'x-ms-trackingid')));\r\n });\r\n }\r\n\r\n getDataId(e) {\r\n return $(e.target).attr('data-id');\r\n }\r\n\r\n}\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport scopeService from '@bingads-webui-static-legacy/scope-service';\r\nimport KoSchema from '@bingads-webui-component-legacy/ko-schema/index';\r\nimport { MTCampaignTypeEnum } from '@bingads-webui-campaign-legacy/adgroup-create-advanced/util/campaignType';\r\nimport { isXandrDisplayAdsCampaign, isAudienceNativeAdsCampaign, isAudienceCampaign, isXandrVideoAdsCampaign } from '@bingads-webui-campaign-react/constants';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\n\r\nexport default class ViewModel {\r\n constructor({\r\n scope,\r\n hideFooter,\r\n isXandrVideoAd,\r\n isMultiAdFormatDisplayAd,\r\n isMultiAdFormatVideoAd,\r\n isForVNext,\r\n setAdGroupType = _.noop,\r\n setIsDisplayPlusNativeEditAdEditor = _.noop,\r\n permissions = {},\r\n }) {\r\n KoSchema.properties(this);\r\n\r\n this.permissions = permissions;\r\n this.scopeContext = scopeService.getScope();\r\n this.setAdGroupType = setAdGroupType;\r\n this.setIsDisplayPlusNativeEditAdEditor = setIsDisplayPlusNativeEditAdEditor;\r\n this.isXandrVideoAd = ko.observable(isXandrVideoAd);\r\n this.isMultiAdFormatDisplayAd = ko.observable(isMultiAdFormatDisplayAd);\r\n this.isMultiAdFormatVideoAd = ko.observable(isMultiAdFormatVideoAd);\r\n\r\n this.isForVNext = isForVNext;\r\n this.scope = scope;\r\n this.hideFooter = hideFooter;\r\n this.campaignType = this.scope().campaignType;\r\n this.campaignSubType = this.scope().campaignSubType;\r\n this.campaignDomain = this.scope().campaignDomain;\r\n this.isDynamicDescriptionEnabled = this.scope().isDynamicDescriptionEnabled;\r\n this.isFeedBasedCampaign = this.scope().isFeedBasedCampaign;\r\n this.selectorLabelId = _.uniqueId('add-keyword');\r\n\r\n this.showAdGroups = !this.scope().adGroupId;\r\n this.showCampaignLevel = !!this.scope().campaignId;\r\n this.showEditor = ko.observable(!_.isNull(this.scope().adGroupId));\r\n\r\n const audienceCampaignType = 8;\r\n\r\n this.allowAdCreation = ko.observable(!(this.scope().isFeedBasedCampaign && this.scope().campaignType === audienceCampaignType));\r\n\r\n this.selectedCampaigns = ko.observable();\r\n this.selectedAdgroups = ko.observable();\r\n\r\n this.adEditorTitle = ko.observable();\r\n\r\n this.saveAnalyticsId = ko.observable();\r\n\r\n this.saveCreateAnalyticsId = ko.observable();\r\n\r\n this.selectedAdgroups.subscribe((newAdgroup) => this.onAdGroupSelect(newAdgroup));\r\n this.selectedCampaigns.subscribe((newCampaign) => this.onCampaignSelect(newCampaign));\r\n this.isDisplayAdWithCopilot = ko.observable(\r\n this.campaignSubType && this.scope().adGroupId ?\r\n isXandrDisplayAdsCampaign(this.campaignSubType) && this.permissions.dynamic && this.permissions.dynamic.DisplayPlusCopilotAssetGeneration :\r\n false);\r\n\r\n this.isDisplayPlusNativeEdit = ko.observable(\r\n this.campaignType && this.campaignSubType && this.scope().adGroupId ?\r\n isAudienceCampaign(this.campaignType) && isAudienceNativeAdsCampaign(this.campaignSubType) && this.permissions.dynamic && this.permissions.dynamic.DisplayPlusEdit :\r\n false);\r\n\r\n this.containerClass = ko.computed(() => {\r\n return this.isDisplayPlusNativeEdit() ? 'display-plus-ad-editor__container' : 'ad-editor__container';\r\n });\r\n\r\n this.hideSaveAndCreateAnother = ko.observable(this.isSmartShoppingCampaign(this.campaignSubType));\r\n\r\n }\r\n\r\n onAdGroupSelect(newAdgroup) {\r\n const current = this.scope();\r\n const newAdgroupId = newAdgroup ? newAdgroup.Id : null;\r\n\r\n if (newAdgroupId !== current.adGroupId) {\r\n this.campaignType = MTCampaignTypeEnum[newAdgroup.Campaign.CampaignType];\r\n this.scope({\r\n campaignId: newAdgroup.Campaign.Id,\r\n campaignName: newAdgroup.Campaign.Name,\r\n adGroupId: newAdgroupId,\r\n adGroupName: newAdgroup.Name,\r\n campaignType: this.campaignType,\r\n campaignSubType: newAdgroup.Campaign.CampaignSubType,\r\n campaignDomain: _.result(_.first(newAdgroup.Campaign.CampaignSettings), 'DomainName'),\r\n isDynamicDescriptionEnabled: _.result(_.first(newAdgroup.Campaign.CampaignSettings), 'DynamicDescriptionEnabled'),\r\n isFeedBasedCampaign: this.isFeedBasedCampaign,\r\n isTraditionalChinese: newAdgroup.Language === 'TraditionalChinese',\r\n adsCountMap: newAdgroup.adsCountMap,\r\n adGroupType: newAdgroup.adGroupType,\r\n biddingStrategyType: newAdgroup.DisplayBiddingStrategyType,\r\n });\r\n this.setAdGroupType(newAdgroup.AdGroupType);\r\n this.allowAdCreation(!((this.isFeedBasedCampaign && newAdgroup.Campaign.CampaignType === 'Audience') || newAdgroup.Campaign.CampaignType === 'Hotel'));\r\n this.showEditor(!!newAdgroupId);\r\n this.hideSaveAndCreateAnother(newAdgroup.Campaign.CampaignSubType);\r\n this.isDisplayAdWithCopilot(isXandrDisplayAdsCampaign(newAdgroup.Campaign.CampaignSubType) && this.permissions.dynamic && this.permissions.dynamic.DisplayPlusCopilotAssetGeneration);\r\n this.isXandrVideoAd(isXandrVideoAdsCampaign(newAdgroup.Campaign.CampaignSubType) && this.permissions.dynamic && this.permissions.dynamic.XandrVideoCampaigns);\r\n\r\n const isDisplayPlusNativeEditEnabled = isAudienceNativeAdsCampaign(newAdgroup.Campaign.CampaignSubType) && this.permissions.dynamic && this.permissions.dynamic.DisplayPlusEdit;\r\n\r\n if (isDisplayPlusNativeEditEnabled) {\r\n setClarityTag({\r\n IsDisplayPlusAudienceNative: true,\r\n CampaignSubType: newAdgroup.Campaign.CampaignSubType,\r\n });\r\n }\r\n\r\n this.isDisplayPlusNativeEdit(isDisplayPlusNativeEditEnabled);\r\n this.setIsDisplayPlusNativeEditAdEditor(isDisplayPlusNativeEditEnabled);\r\n }\r\n }\r\n\r\n isSmartShoppingCampaign(campaignSubType) {\r\n return campaignSubType === 'ShoppingSmartAds' || campaignSubType === 12;\r\n }\r\n\r\n onCampaignSelect(newCampaign) {\r\n const current = this.scope();\r\n const newCampaignId = newCampaign ? newCampaign.Id : null;\r\n\r\n if (newCampaignId !== current.campaignId) {\r\n this.campaignType = MTCampaignTypeEnum[newCampaign.CampaignType];\r\n this.campaignDomain = _.result(_.first(newCampaign.CampaignSettings), 'DomainName');\r\n this.isDynamicDescriptionEnabled = _.result(_.first(newCampaign.CampaignSettings), 'DynamicDescriptionEnabled');\r\n this.isFeedBasedCampaign = !!_.result(_.first(newCampaign.CampaignSettings), 'ProviderId');\r\n this.hideSaveAndCreateAnother(this.isSmartShoppingCampaign(newCampaign.CampaignSubType));\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\n// import odata from '@bingads-webui-component-legacy/http/channel/odata';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport EntitySelectorService from '@bingads-webui-static-legacy/entity-selector-service';\r\n\r\nconst PAGE_SIZE = 10;\r\n\r\nfunction getAdsCount(adgroupData) {\r\n return new Promise((resolve) => {\r\n if (pageContext.CurrentCampaign && pageContext.CurrentCampaign.CampaignSubType !== 'ShoppingSmartAds') {\r\n resolve({});\r\n } else if (adgroupData && adgroupData.length === 0) {\r\n resolve({});\r\n } else {\r\n const entitySelectorService = new EntitySelectorService();\r\n\r\n entitySelectorService.getAdsCount(adgroupData, pageContext.CurrentCampaign, pageContext.CurrentAccount, pageContext.CurrentCustomer)\r\n .then((adsCountMap) => {\r\n resolve(adsCountMap);\r\n })\r\n .catch((e) => {\r\n // error handling\r\n console.log(e); // eslint-disable-line\r\n resolve({});\r\n });\r\n }\r\n });\r\n}\r\n\r\nfunction transformAdgroupData(data) { // eslint-disable-line\r\n if (!data || !_.isArray(data)) {\r\n return Promise.resolve([]);\r\n }\r\n\r\n return Promise.resolve(getAdsCount(data))\r\n .then((adsCountMap) => {\r\n let adgroupData = _.filter(data, (adgroup) => {\r\n // filter SSC which has 1 product ad and 1 responsive ad if IsResponsiveAdEnabledForSSC is true\r\n // filter SSC which has 1 product ad if IsResponsiveAdEnabledForSSC is false\r\n return EntitySelectorService.shouldKeepSmartShoppingCampaignAdGroup(adgroup, adsCountMap);\r\n });\r\n\r\n const isSmartShoppingCampaign = _.chain(adgroupData)\r\n .result('0')\r\n .result('Campaign')\r\n .result('CampaignSubType')\r\n .value() === 'ShoppingSmartAds';\r\n\r\n adgroupData = adgroupData.map((item) => {\r\n return _.extend({\r\n name: item.Name,\r\n status: item.Status,\r\n campaignName: item.Campaign.Name,\r\n adsCountMap,\r\n }, item);\r\n });\r\n\r\n return {\r\n totalCount: isSmartShoppingCampaign ? adgroupData.length : data.totalCount,\r\n items: adgroupData,\r\n };\r\n });\r\n}\r\n\r\nexport default function getAdgroupData(queryText = '', pageNumber = 0, pageSize = PAGE_SIZE, campaignId) {\r\n const isDSAMixedModeCampaignEnabled = _.result(config.get('Permissions'), 'IsDSAMixedModeCampaignEnabled', false);\r\n\r\n const signleQuoteTerminatedQuery = queryText.replace('\\'', '\\'\\'');\r\n\r\n const query = {\r\n $expand: 'Campaign($select=Id,Name,CampaignType,CampaignSubType,CampaignSettings)',\r\n $select: `Id, Name, Status, Language, DisplayBiddingStrategyType${isDSAMixedModeCampaignEnabled ? ', AdGroupType' : ''}`,\r\n $skip: pageNumber * pageSize,\r\n $top: pageSize,\r\n $count: true,\r\n $filter: `contains(Name, '${signleQuoteTerminatedQuery}')`,\r\n };\r\n\r\n if (campaignId) {\r\n query.entitySet = edmCampaign.currentAccount.Campaigns.$withKey(Number(campaignId)).AdGroups.toJSON();\r\n }\r\n\r\n return jsdata.AdGroup.findAll({\r\n query,\r\n }).then((data) => {\r\n return transformAdgroupData(data);\r\n }).then((data) => {\r\n return data;\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignSelectorView as AdgroupSelectorView } from '@bingads-webui-campaign-react/campaign-selector';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport getAdgroupData from '@bingads-webui-campaign-legacy/crud-ad/view/adgroup-selector-repository';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/campaign-creation-advanced');\r\n\r\nconst PAGESIZE = 10;\r\n\r\nexport default class AdgroupSelectorProxy {\r\n constructor({\r\n campaignId,\r\n onEventTrigger,\r\n getCustomizedData,\r\n } = {}) {\r\n this.campaignId = campaignId;\r\n this.onEventTrigger = onEventTrigger;\r\n this.getCustomizedData = getCustomizedData || null;\r\n }\r\n\r\n fecthAdgroupData(query, pageNumber, pageSize, adgroupSelectorView) {\r\n const selectorContainer = adgroupSelectorView && adgroupSelectorView.$('.ba-campaign-selector');\r\n const uiBlockContainer = selectorContainer.hasClass('open') ? selectorContainer.find('.dropdown-menu') : selectorContainer;\r\n\r\n if (this.getCustomizedData === null) {\r\n return getAdgroupData(query, pageNumber, pageSize, this.campaignId).finally(withUiBlock(uiBlockContainer));\r\n } else {\r\n return this.getCustomizedData(query, pageNumber, pageSize, this.campaignId).finally(withUiBlock(uiBlockContainer));\r\n }\r\n }\r\n\r\n getAdgroupSelectorView() {\r\n\r\n const adgroupSelectorView = new AdgroupSelectorView({\r\n i18n,\r\n fetch: ({ query = '', pageNumber = 0 }) => {\r\n return this.fecthAdgroupData(query, pageNumber, PAGESIZE, adgroupSelectorView);\r\n },\r\n pageSize: PAGESIZE,\r\n stringKeys: {\r\n emptyListContent: 'No results to display.',\r\n listHeader: 'Available ad groups: {{itemCount}}',\r\n selectEntity: 'Select an ad group',\r\n },\r\n });\r\n\r\n adgroupSelectorView.on('selected-campaign', (selectedItem) => {\r\n if (_.isFunction(this.onEventTrigger)) {\r\n this.onEventTrigger('selected-campaign', selectedItem);\r\n }\r\n });\r\n\r\n return adgroupSelectorView;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport EntitySelectorService from '@bingads-webui-static-legacy/entity-selector-service';\r\n\r\nconst CAMPAIGN_PAGE_SIZE = 10;\r\nconst ADGROUP_PAGE_SIZE = 6;\r\n\r\nfunction transformCampaignData(data) {\r\n if (!data || !_.isArray(data)) {\r\n return [];\r\n }\r\n\r\n const campaignData = data.map((item) => {\r\n return _.extend({\r\n name: item.Name,\r\n status: item.Status,\r\n }, item);\r\n });\r\n\r\n return {\r\n totalCount: data.totalCount,\r\n items: campaignData,\r\n };\r\n}\r\n\r\nfunction getAdsCount(adgroupData, campaign) {\r\n return new Promise((resolve) => {\r\n if (campaign && campaign.CampaignSubType !== 'ShoppingSmartAds') {\r\n resolve({});\r\n } else if (adgroupData && adgroupData.length === 0) {\r\n resolve({});\r\n } else {\r\n const entitySelectorService = new EntitySelectorService();\r\n\r\n entitySelectorService.getAdsCount(adgroupData, campaign, pageContext.CurrentAccount, pageContext.CurrentCustomer)\r\n .then((adsCountMap) => {\r\n resolve(adsCountMap);\r\n })\r\n .catch((e) => {\r\n // error handling\r\n console.log(e); // eslint-disable-line\r\n resolve({});\r\n });\r\n }\r\n });\r\n}\r\n\r\nfunction transformAdgroupData(data, campaign) { // eslint-disable-line\r\n if (!data || !_.isArray(data)) {\r\n Promise.resolve([]);\r\n }\r\n\r\n return Promise.resolve(getAdsCount(data, campaign))\r\n .then((adsCountMap) => {\r\n let adgroupData = _.filter(data, (adgroup) => {\r\n // filter SSC which has 1 product ad and 1 responsive ad if IsResponsiveAdEnabledForSSC is true\r\n // filter SSC which has 1 product ad if IsResponsiveAdEnabledForSSC is false\r\n return EntitySelectorService.shouldKeepSmartShoppingCampaignAdGroup(adgroup, adsCountMap);\r\n });\r\n\r\n const isSmartShoppingCampaign = _.chain(campaign)\r\n .result('CampaignSubType')\r\n .value() === 'ShoppingSmartAds';\r\n\r\n adgroupData = adgroupData.map((item) => {\r\n return _.extend({\r\n name: item.Name,\r\n status: item.Status,\r\n campaignName: item.Campaign.Name,\r\n adsCountMap,\r\n }, item);\r\n });\r\n\r\n return {\r\n // for SSC, the only ad group may be filtered out due to ad size limit\r\n totalCount: isSmartShoppingCampaign ? adgroupData.length : data.totalCount,\r\n items: adgroupData,\r\n };\r\n });\r\n}\r\n\r\nexport function getCampaignData(queryText = '', pageNumber = 0, pageSize = CAMPAIGN_PAGE_SIZE) {\r\n\r\n const signleQuoteTerminatedQuery = queryText.replace('\\'', '\\'\\'');\r\n\r\n const query = {\r\n $select: 'Id, Name, Status, CampaignType, CampaignSubType, CampaignSettings',\r\n $skip: pageNumber * pageSize,\r\n $top: pageSize,\r\n $filter: `contains(Name, '${signleQuoteTerminatedQuery}') and (CampaignType ne Enum.CampaignType'Smart') and (CampaignType ne Enum.CampaignType'PerformanceMax')`,\r\n };\r\n\r\n return jsdata.Campaign.findAll({\r\n query,\r\n }).then((data) => {\r\n return transformCampaignData(data);\r\n });\r\n}\r\n\r\nexport function getAdgroupData(queryText = '', pageNumber = 0, pageSize = ADGROUP_PAGE_SIZE, scopeParentItem) {\r\n const isDSAMixedModeCampaignEnabled = _.result(config.get('Permissions'), 'IsDSAMixedModeCampaignEnabled', false);\r\n\r\n const signleQuoteTerminatedQuery = queryText.replace('\\'', '\\'\\'');\r\n\r\n const query = {\r\n $expand: 'Campaign($select=Id,Name,CampaignType,CampaignSubType,CampaignSettings)',\r\n $select: `Id, Name, Status, Language, DisplayBiddingStrategyType${isDSAMixedModeCampaignEnabled ? ', AdGroupType' : ''}`,\r\n $skip: pageNumber * pageSize,\r\n $top: pageSize,\r\n $count: true,\r\n $filter: `contains(Name, '${signleQuoteTerminatedQuery}')`,\r\n };\r\n\r\n if (scopeParentItem) {\r\n query.entitySet = edmCampaign.currentAccount.Campaigns.$withKey(Number(scopeParentItem.Id)).AdGroups.toJSON();\r\n }\r\n\r\n return jsdata.AdGroup.findAll({\r\n query,\r\n }).then((data) => {\r\n return transformAdgroupData(data, scopeParentItem);\r\n }).then((data) => {\r\n return data;\r\n });\r\n}\r\n\r\n","import _ from 'underscore';\r\nimport { CampaignAdgroupSelectorView } from '@bingads-webui-campaign-react/campaign-adgroup-selector';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport { getCampaignData, getAdgroupData } from '@bingads-webui-campaign-legacy/crud-ad/view/campaign-adgroup-selector-repository';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/campaign-adgroup-selector');\r\n\r\nconst CAMPAIGN_PAGESIZE = 10;\r\nconst ADGROUP_PAGESIZE = 6;\r\n\r\nexport default class CampaignAdgroupSelectorProxy {\r\n constructor({\r\n onCampaignSelect = _.noop,\r\n onAdGroupSelect = _.noop,\r\n }) {\r\n this.onCampaignSelect = onCampaignSelect;\r\n this.onAdGroupSelect = onAdGroupSelect;\r\n }\r\n\r\n fecthCampaignData({\r\n query = '', pageNumber = 0, pageSize = CAMPAIGN_PAGESIZE,\r\n }, campaignAdgroupSelectorView) {\r\n const selectorContainer = campaignAdgroupSelectorView && campaignAdgroupSelectorView.$('.ba-campaign-adgroup-selector');\r\n const uiBlockContainer = selectorContainer.hasClass('open') ? selectorContainer.find('.dropdown-menu') : selectorContainer;\r\n\r\n return getCampaignData(query, pageNumber, pageSize).finally(withUiBlock(uiBlockContainer));\r\n }\r\n\r\n fecthAdgroupData({\r\n query = '', pageNumber = 0, pageSize = ADGROUP_PAGESIZE, scopeParentItem = null,\r\n }, campaignAdgroupSelectorView) {\r\n const selectorContainer = campaignAdgroupSelectorView && campaignAdgroupSelectorView.$('.ba-campaign-adgroup-selector');\r\n const uiBlockContainer = selectorContainer.hasClass('open') ? selectorContainer.find('.dropdown-menu') : selectorContainer;\r\n\r\n return getAdgroupData(query, pageNumber, pageSize, scopeParentItem).finally(withUiBlock(uiBlockContainer));\r\n }\r\n\r\n getCampaignAdgroupSelectorView() {\r\n const campaignAdgroupSelectorView = new CampaignAdgroupSelectorView({\r\n campaign: {\r\n pageSize: CAMPAIGN_PAGESIZE,\r\n onFetch: (args) => {\r\n return this.fecthCampaignData(args, campaignAdgroupSelectorView);\r\n },\r\n },\r\n adgroup: {\r\n pageSize: ADGROUP_PAGESIZE,\r\n onFetch: (args) => {\r\n return this.fecthAdgroupData(args, campaignAdgroupSelectorView);\r\n },\r\n },\r\n i18n,\r\n });\r\n\r\n campaignAdgroupSelectorView.on('selected-campaign', (selectedItem) => {\r\n this.onCampaignSelect(selectedItem);\r\n });\r\n\r\n campaignAdgroupSelectorView.on('selected-adgroup', (selectedItem) => {\r\n this.onAdGroupSelect(selectedItem);\r\n });\r\n\r\n return campaignAdgroupSelectorView;\r\n }\r\n}\r\n\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-ad/viewmodel/index';\r\nimport template from '@bingads-webui-campaign-legacy/crud-ad/template/index.pug';\r\nimport AdEditorView from '@bingads-webui-campaign-legacy/crud-ad/view/adEditor';\r\nimport AdgroupSelectorProxy from '@bingads-webui-campaign-legacy/crud-ad/view/adgroup-selector-proxy';\r\nimport CampaignAdgroupSelectorProxy from '@bingads-webui-campaign-legacy/crud-ad/view/campaign-adgroup-selector-proxy';\r\nimport { PerfMarkerFactory } from '@bingads-webui/performance-marker';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { isXandrDisplayAdsCampaign } from '@bingads-webui-campaign-react/constants';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\nconst i18nGlobal = window.globalLegacyI18n.get('component/i18n/loader!legacy/global');\r\n\r\nconst saveIds = {\r\n ExpandedText: 'omniture-exta-save',\r\n};\r\n\r\nconst saveCreateIds = {\r\n ExpandedText: 'omniture-exta-save-and-create-another',\r\n};\r\n\r\nconst permissions = config.get('Permissions') || {};\r\n\r\nexport default class View extends Backbone.View {\r\n initialize({\r\n newI18n,\r\n model = null,\r\n campaignId = null,\r\n adGroupId = null,\r\n adGroupType = null,\r\n campaignType = null,\r\n campaignSubType = null,\r\n biddingStrategyType = '',\r\n isSaveToServer = true, // whether or not saving the ad to server when user clicks save button\r\n isTraditionalChinese = false, // is current adgroup with traditional chinese\r\n appLookupDisabled = false,\r\n developerName = '',\r\n campaignDomain = '',\r\n isDynamicDescriptionEnabled = false,\r\n isFeedBasedCampaign = null,\r\n firstTextAdModel = {},\r\n firstExpandedTextAdModel = {},\r\n firstResponsiveSearchAdModel = {},\r\n isForVNext = false,\r\n inlineSuggestionsEnabled = false,\r\n adsCountMap = {},\r\n showSaveAndCreateAnother = true,\r\n isOpenCreatePanel = false,\r\n shouldSendOpportunityLog = () => false,\r\n logOpportunity,\r\n parentPerfMarker,\r\n serverContext,\r\n preferenceService,\r\n loadClipchampPlayer,\r\n } = {}) {\r\n let perfMarker;\r\n\r\n if (parentPerfMarker) {\r\n perfMarker = parentPerfMarker.createChild('Create_Ad_From_Grid', { autoEnd: true, isActiveChild: false });\r\n } else {\r\n perfMarker = PerfMarkerFactory.createMarker('Create_Ad_From_Grid', { autoEnd: true });\r\n }\r\n\r\n perfMarker.willInit();\r\n\r\n this.isForVNext = isForVNext;\r\n this.model = model;\r\n this.campaignSubType = campaignSubType;\r\n this.showSaveAndCreateAnother = showSaveAndCreateAnother;\r\n\r\n const hasWebsiteImageOptedInObservable = ko.observable(true);\r\n\r\n this.adEditor = new AdEditorView({\r\n newI18n,\r\n model,\r\n campaignId,\r\n adGroupId,\r\n adGroupType,\r\n campaignType,\r\n campaignSubType,\r\n biddingStrategyType,\r\n isSaveToServer,\r\n isTraditionalChinese,\r\n appLookupDisabled,\r\n developerName,\r\n showInline: true,\r\n campaignDomain,\r\n isDynamicDescriptionEnabled,\r\n isFeedBasedCampaign,\r\n firstTextAdModel,\r\n firstExpandedTextAdModel,\r\n firstResponsiveSearchAdModel,\r\n perfMarker,\r\n isForVNext,\r\n serverContext,\r\n preferenceService,\r\n inlineSuggestionsEnabled,\r\n adsCountMap,\r\n showSaveAndCreateAnother,\r\n isOpenCreatePanel,\r\n hasWebsiteImageOptedInObservable,\r\n loadClipchampPlayer,\r\n });\r\n\r\n this.viewModel = new ViewModel({\r\n scope: this.adEditor.viewModel.scope,\r\n hideFooter: this.adEditor.viewModel.hideFooter,\r\n isXandrVideoAd: this.adEditor.isXandrVideoAd,\r\n isMultiAdFormatDisplayAd: this.adEditor.isMultiAdFormatDisplayAd,\r\n isMultiAdFormatVideoAd: this.adEditor.isMultiAdFormatVideoAd,\r\n isForVNext,\r\n setAdGroupType: this.setAdGroupType.bind(this),\r\n setIsDisplayPlusNativeEditAdEditor: this.setIsDisplayPlusNativeEditAdEditor.bind(this),\r\n permissions,\r\n });\r\n\r\n this.viewModel.hasWebsiteImageOptedIn = hasWebsiteImageOptedInObservable;\r\n\r\n this.adEditor.on('created updated', (ad) => {\r\n this.trigger('save', ad);\r\n if (shouldSendOpportunityLog()) {\r\n logOpportunity({ context: { campaignId: ad.Campaign.Id, adGroupId: ad.AdGroup.Id, adId: ad.Id } });\r\n }\r\n });\r\n\r\n this.adEditor.on('close', () => {\r\n this.trigger('close');\r\n });\r\n\r\n this.setAnalyticsId(this.adEditor._type);\r\n this.adEditor.on('type', (type) => {\r\n this.setAnalyticsId(type);\r\n });\r\n\r\n this.viewModel.errors = this.adEditor.viewModel.errors;\r\n this.setTitle(model);\r\n\r\n if (isForVNext && this.viewModel.showAdGroups) {\r\n if (this.viewModel.showCampaignLevel) {\r\n const adgroupSelectorProxy = new AdgroupSelectorProxy({\r\n campaignId,\r\n onEventTrigger: (key, selectedAdGroup) => {\r\n this.trigger('adgroup selected', selectedAdGroup);\r\n\r\n if (_.get(selectedAdGroup, 'Campaign.CampaignType') !== 'LinkedIn') {\r\n this.viewModel.onAdGroupSelect(selectedAdGroup);\r\n }\r\n },\r\n });\r\n\r\n this.adgroupSelector = adgroupSelectorProxy.getAdgroupSelectorView();\r\n } else {\r\n const campaignAdgroupSelectorProxy = new CampaignAdgroupSelectorProxy({\r\n onCampaignSelect: (selectedCampaign) => {\r\n this.viewModel.onCampaignSelect(selectedCampaign);\r\n },\r\n onAdGroupSelect: (selectedAdGroup) => {\r\n this.trigger('adgroup selected', selectedAdGroup);\r\n\r\n if (_.get(selectedAdGroup, 'Campaign.CampaignType') !== 'LinkedIn') {\r\n this.viewModel.onAdGroupSelect(selectedAdGroup);\r\n }\r\n },\r\n });\r\n\r\n this.adgroupSelector = campaignAdgroupSelectorProxy.getCampaignAdgroupSelectorView();\r\n }\r\n }\r\n }\r\n\r\n setAdGroupType(adGroupType) {\r\n const isDSAMixedModeCampaignEnabled = _.result(config.get('Permissions'), 'IsDSAMixedModeCampaignEnabled', false);\r\n\r\n if (isDSAMixedModeCampaignEnabled) {\r\n const originalAdEditorScope = this.adEditor.viewModel.scope();\r\n\r\n this.adEditor.viewModel.scope(_.extend({}, originalAdEditorScope, {\r\n adGroupType,\r\n }));\r\n }\r\n }\r\n\r\n setIsDisplayPlusNativeEditAdEditor(isDisplayPlusNativeEdit) {\r\n this.adEditor.viewModel.isDisplayPlusNativeEdit(isDisplayPlusNativeEdit);\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .appEditor-save-container .save': 'save',\r\n 'click .appEditor-save-container .cancel': 'cancel',\r\n 'click .save-create-another': 'saveAndCreateAnother',\r\n };\r\n }\r\n\r\n render() {\r\n this.$el.empty().append(template({\r\n i18n,\r\n i18nGlobal,\r\n isForVNext: this.isForVNext,\r\n showSaveAndCreateAnother: this.showSaveAndCreateAnother,\r\n isDisplayPlusDisplayAd: permissions.dynamic.DisplayPlusCopilotAssetGeneration && isXandrDisplayAdsCampaign(this.campaignSubType),\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n if (this.isForVNext && this.viewModel.showAdGroups) {\r\n this.$('.adgroup-selector').empty().append(this.adgroupSelector.render().$el);\r\n }\r\n this.$('.ad-panel').append(this.adEditor.render().el);\r\n\r\n return this;\r\n }\r\n\r\n remove() {\r\n this.adEditor.remove();\r\n super.remove();\r\n }\r\n\r\n save() {\r\n this.adEditor.save();\r\n }\r\n\r\n saveAndCreateAnother() {\r\n this.adEditor.saveAndCreateAnother();\r\n this.setTitle(null); // Creating new ad, title should be set to \"Create\"\r\n }\r\n\r\n cancel() {\r\n this.trigger('close');\r\n this.adEditor.trigger('cancel');\r\n }\r\n\r\n setTitle(model) {\r\n this.viewModel.adEditorTitle(_.isEmpty(model) ? i18n.get('CampaignCreate_AdSectionTitle') : i18nGlobal.get('Ad_EditAd'));\r\n }\r\n\r\n setAnalyticsId(type) {\r\n this.viewModel.saveAnalyticsId(saveIds[type]);\r\n this.viewModel.saveCreateAnalyticsId(saveCreateIds[type]);\r\n }\r\n}\r\n","import ko from 'knockout';\r\n\r\nexport default class ViewModel {\r\n constructor(options = {}) {\r\n this.options = options;\r\n this.isTextareaEmpty = ko.observable(true);\r\n\r\n this.isKeywordPlannerEnabled = ko.observable(false);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport Promise from 'bluebird';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport template from '@bingads-webui-campaign-legacy/crud-keywords/template/create-inline-recommendation.pug';\r\nimport CreateView from '@bingads-webui-campaign-legacy/crud-keywords/view/create';\r\nimport KeywordPlannerView from '@bingads-webui-campaign-legacy/crud-adgroup/view/keywordPlanner';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/crud-keywords/viewmodel/create-inline-recommendation';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport * as criterionLoader from '@bingads-webui-campaign-legacy/base-targets/util/criterionLoader';\r\nimport { keywordPlannerSupportedLanguages } from '@bingads-webui-campaign-legacy/location-targets/util/constants';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/campaign-creation-advanced');\r\n\r\nexport default class View extends Backbone.View {\r\n initialize(options = {}) {\r\n this.options = options;\r\n\r\n this.createView = new CreateView({});\r\n this.keywordPlannerView = new KeywordPlannerView({\r\n mode: 'keywordsOnly',\r\n scenario: 'repair keyword creation',\r\n });\r\n this.keywordPlannerView.on({\r\n 'addKeyword': (newKeyword) => {\r\n this.createView.addSuggestion([newKeyword]);\r\n },\r\n });\r\n\r\n this.viewmodel = new ViewModel({\r\n adGroup: this.options.adGroup,\r\n });\r\n\r\n let textarea = this.createView.parser.keywordsTextareaVal;\r\n\r\n this.textAreaSubscription = textarea.subscribe(() => {\r\n this.viewmodel.isTextareaEmpty(this.createView.isEmpty());\r\n });\r\n\r\n this.keywordPlannerView.viewmodel.gridData([]); // Get rid of any suggestions for previous ad group\r\n this.keywordPlannerView.emptySearchTeams();\r\n this.initializeSuggestions();\r\n }\r\n\r\n render() {\r\n this.$el.html(\r\n template({ i18n })\r\n );\r\n\r\n ko.applyBindings(this.viewmodel, this.$('.add-keywords-root')[0]);\r\n\r\n this.createView.render();\r\n this.$('.parser').append(this.createView.el);\r\n this.createView.parser.isAfterFirstInteraction(false);\r\n\r\n this.keywordPlannerView.render();\r\n this.$('.keyword-planner-inline').append(this.keywordPlannerView.el);\r\n\r\n return this;\r\n }\r\n\r\n initializeSuggestions() {\r\n const {\r\n adGroupId,\r\n campaignId,\r\n } = this.options.adGroup;\r\n\r\n const getLandingPageUrl = jsdata.Ad.findAll({\r\n limit: 1,\r\n offset: 0,\r\n query: { $select: 'DisplayUrl,DestinationUrl,FinalUrls' },\r\n }, {\r\n entitySet: edmCampaign.currentAccount.Campaigns.$withKey(Number(campaignId)).AdGroups.$withKey(Number(adGroupId)).Ads,\r\n cacheResponse: false,\r\n });\r\n const campaignParams = {\r\n entitySet: edmCampaign.currentAccount.Campaigns,\r\n bypassCache: true,\r\n queryParameters: {\r\n query: {\r\n $select: 'Languages',\r\n },\r\n },\r\n };\r\n const adGroupParams = {\r\n entitySet: edmCampaign.currentAccount.Campaigns.$withKey(Number(campaignId)).AdGroups,\r\n bypassCache: true,\r\n queryParameters: {\r\n query: {\r\n $select: 'Language',\r\n },\r\n },\r\n };\r\n\r\n Promise.all([\r\n criterionLoader.load(campaignId, adGroupId, ['RadiusCriterion', 'LocationCriterion']),\r\n criterionLoader.load(campaignId, null, ['RadiusCriterion', 'LocationCriterion']),\r\n getLandingPageUrl,\r\n jsdata.Campaign.find(Number(campaignId), campaignParams),\r\n jsdata.AdGroup.find(Number(adGroupId), adGroupParams),\r\n ])\r\n .spread((campaignLocationRes, adGroupLocationRes, landingPageUrlRes, campaignLanguageRes, adGroupLanguageRes) => {\r\n const languages = (adGroupLanguageRes.Language && [keywordPlannerSupportedLanguages[adGroupLanguageRes.Language]]) ||\r\n (!_.isEmpty(campaignLanguageRes.Languages) && campaignLanguageRes.Languages) ||\r\n [30];\r\n\r\n this.viewmodel.isKeywordPlannerEnabled(KeywordPlannerView.isLanguageSupported(languages));\r\n this.keywordPlannerView.setLanguages(languages); // default is English\r\n\r\n let locationTargets = _.filter(campaignLocationRes, (item) => { // Ad group targeting takes priority\r\n return item.Criterion && item['@odata.type'] === '#Model.BiddableAdGroupCriterion';\r\n });\r\n\r\n if (locationTargets.length === 0) {\r\n locationTargets = _.filter(adGroupLocationRes, (item) => { // If there's no ad group targeting, try campaign\r\n return item.Criterion && item['@odata.type'] === '#Model.BiddableCampaignCriterion';\r\n });\r\n }\r\n this.keywordPlannerView.setLocationTargeting(_.pluck(locationTargets, 'Criterion'));\r\n\r\n if (_.isArray(landingPageUrlRes) && _.isObject(_.first(landingPageUrlRes))) {\r\n let landingPageUrl = landingPageUrlRes[0].FinalUrls[0] || landingPageUrlRes[0].DestinationUrl;\r\n\r\n if (_.isString(landingPageUrl) && !this.keywordPlannerView.viewmodel.allLocationsUnsupported() && this.keywordPlannerView.viewmodel.gridData().length === 0) {\r\n this.keywordPlannerView.onSearch({ url: landingPageUrl });\r\n }\r\n }\r\n })\r\n .finally(withUiBlock(this.$('.keyword-planner-inline')));\r\n }\r\n\r\n getKeywords() {\r\n if (!this.createView.parser.validate()) {\r\n return false;\r\n }\r\n\r\n return this.createView.getChangedKeywords({\r\n Id: this.options.adGroup.adGroupId,\r\n });\r\n }\r\n\r\n getSuggestionsAdded() {\r\n return this.createView.keywordSuggestionsAdded;\r\n }\r\n\r\n cancel() {\r\n this.textAreaSubscription.dispose();\r\n this.keywordPlannerView.off();\r\n\r\n this.$('.add-keywords-root').remove();\r\n }\r\n}\r\n","/* eslint-disable */\r\nimport * as _AdapterView from '@bingads-webui-campaign-legacy/griddownload/view/adapter';\r\nexport default _AdapterView.DownloadViewV1;\r\n\r\n","import _ from 'underscore';\r\nimport jsdata from '@bingads-webui-campaign-legacy/hotel-center-js-data/index';\r\nimport edm from '@bingads-webui-campaign-legacy/hotel-center-edm/index';\r\n\r\nconst getQueryOptions = (params) => {\r\n const queryOptions = {};\r\n\r\n if (!params) {\r\n return queryOptions;\r\n }\r\n\r\n if (params.filterText) {\r\n queryOptions.where = _.defaults(queryOptions.where || {}, {\r\n Name: {\r\n $contains: params.filterText,\r\n },\r\n });\r\n }\r\n\r\n if (params.take) {\r\n queryOptions.limit = params.take;\r\n queryOptions.offset = params.skip || 0;\r\n }\r\n\r\n return queryOptions;\r\n};\r\n\r\nexport class HotelCenterEntitySelectorService {\r\n get useInjectedAdgroupFetch() {\r\n return true;\r\n }\r\n getCampaigns(options) {\r\n const jsDataOptions = {\r\n cacheResponse: false,\r\n };\r\n\r\n const queryOptions = getQueryOptions(options);\r\n\r\n jsdata.SubAccount.findAll(queryOptions, jsDataOptions)\r\n .then((items) => {\r\n const results = {\r\n data: _.map(items, (subAccount) => ({\r\n Type: 'Campaign',\r\n Id: subAccount.Id,\r\n Name: subAccount.Name,\r\n // Status as defined in the map in '@bingads-webui-static-legacy/schema/campaign/entityStatus'\r\n Status: subAccount.Status === 'Active' ? 121 : 123,\r\n })),\r\n total: items.totalCount,\r\n HasPaged: true,\r\n };\r\n\r\n options.success(results);\r\n }).catch((error) => options.fail(error));\r\n }\r\n getAdgroups(options) {\r\n const jsDataOptions = {\r\n cacheResponse: false,\r\n };\r\n\r\n const queryOptions = getQueryOptions(options);\r\n\r\n if (options.data && options.data.campaignId) {\r\n jsDataOptions.entitySet = edm.currentAccount.SubAccounts.$withKey(options.data.campaignId).HotelGroups;\r\n }\r\n jsdata.HotelGroup.findAll(queryOptions, jsDataOptions)\r\n .then((items) => {\r\n const results = {\r\n data: _.map(items, (item) => ({\r\n Type: 'AdGroup',\r\n Id: item.Id,\r\n Name: item.Name,\r\n // Status as defined in the map in '@bingads-webui-static-legacy/schema/adgroup/entityStatus'\r\n Status: item.Status === 'Active' ? 141 : 143,\r\n Campaign: {\r\n Id: item.SubAccountId,\r\n Name: item.SubAccountName,\r\n },\r\n })),\r\n total: items.totalCount,\r\n };\r\n\r\n options.success(results);\r\n }).catch((error) => options.fail(error));\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport DataStore from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport { getSharedColumns, getDeliveryColumn } from '@bingads-webui-campaign-legacy/bingadsgrid/vnext/shared/columns';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { helpers, constants } from '@bingads-webui/projection-grid-toolbar';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport sortableHeaderTemplate from '@bingads-webui-campaign-legacy/common-grid-config/column/sortableHeaderTemplate.pug';\r\nimport { getGridName } from '@bingads-webui-campaign/inline-download-grids-metadata';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport * as putil from '@bingads-webui/primitive-utilities';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/hotel-center');\r\nconst s$i18n = window.globalLegacyI18n.get('$/schema-i18n!hotel-center');\r\nconst AdExtensionAssociationSchema = window.globalLegacySchema.get('AdExtensionAssociation');\r\n\r\nexport default class GridConfig {\r\n constructor({\r\n adextensionType,\r\n columns,\r\n excludedColumns = [],\r\n deleteAssociation,\r\n editExtension,\r\n addExtension,\r\n gridContainer,\r\n toolbarContainer,\r\n associationType,\r\n typeString,\r\n selection = true,\r\n heroButtonText = i18n.get('AdExtensionsSummary_Create_AdExtension'),\r\n dataSourceGenerator,\r\n adExtensionTabPerfMarker,\r\n isForVNext = false,\r\n customHeaderOffset,\r\n }) {\r\n const headerRefreshCache = 'x-ms-refreshcampaigncache';\r\n\r\n this.name = getGridName('AdExtensionAssociation', {\r\n AdExtensionType: adextensionType,\r\n AssociationType: associationType,\r\n });\r\n this.legacyGridName = this.name;\r\n if (!isForVNext) {\r\n this.el = gridContainer;\r\n }\r\n this.tableClasses = ['table', 'table-bordered'];\r\n this.scrolling = {\r\n virtualized: true,\r\n viewport: $('.callout-extension-table-page-container'),\r\n header: {\r\n type: 'sticky',\r\n offset: customHeaderOffset || (() => $('.navbar-fixed-top').height()),\r\n },\r\n };\r\n\r\n this.sortableHeader = {\r\n template: sortableHeaderTemplate,\r\n };\r\n\r\n this.hasCampaignNameColumn = associationType !== 'Account';\r\n this.hasAdGroupNameColumn = associationType === 'HotelGroup';\r\n\r\n const deliveryColumn = getDeliveryColumn({ isForVNext, i18n });\r\n const sharedColumns = [];\r\n\r\n const entityColumns = [\r\n // eslint-disable-next-line no-extra-parens\r\n ...(this.hasCampaignNameColumn ? [bingadsGridColumn({\r\n name: 'SubAccountName',\r\n property: (item) => {\r\n return _.result(item.VerticalSubAccount, 'Name', '');\r\n },\r\n type: 'string',\r\n sortable: 'VerticalSubAccount/Name',\r\n title: s$i18n.type('SubAccount'),\r\n bodyClasses: ['col-SubAccountName'],\r\n })] : []),\r\n\r\n // eslint-disable-next-line no-extra-parens\r\n ...(this.hasAdGroupNameColumn ? [bingadsGridColumn({\r\n name: 'HotelGroupName',\r\n property: (item) => {\r\n return _.result(item.VerticalHotelGroup, 'Name', '');\r\n },\r\n type: 'string',\r\n sortable: 'VerticalHotelGroup/Name',\r\n title: s$i18n.type('HotelGroup'),\r\n bodyClasses: ['col-HotelGroupName'],\r\n })] : []),\r\n ];\r\n\r\n const idColumn = [bingadsGridColumn({\r\n name: 'AdExtensionId',\r\n property: {\r\n get(item) {\r\n return putil.get(item, 'AdExtension.Id');\r\n },\r\n key: 'AdExtension',\r\n },\r\n sortable: 'AdExtension/Id',\r\n title: i18n.get('ColumnName_AdExtensionId'),\r\n })];\r\n\r\n this.columns = columns.concat(getSharedColumns(sharedColumns));\r\n this.columns = this.columns.concat([deliveryColumn]);\r\n this.columns = this.columns.concat(entityColumns);\r\n this.columns = this.columns.concat(idColumn);\r\n\r\n if (!_.isEmpty(excludedColumns)) {\r\n this.columns = _.reject(this.columns, (col) => _.contains(excludedColumns, col.name));\r\n }\r\n\r\n this.plugins = {\r\n a11y: { i18n },\r\n performanceLog: {\r\n appConfig: config,\r\n logger,\r\n },\r\n perfMarker: {\r\n appConfig: config,\r\n marker: adExtensionTabPerfMarker,\r\n },\r\n filter: {\r\n },\r\n toolbar: helpers.singleToolbar({\r\n container: toolbarContainer,\r\n items: ((defaultItems) => {\r\n if (adextensionType === 'AutomatedAdExtension') {\r\n return _.filter(defaultItems, (item) =>\r\n _.contains(['hero-button', 'button-download', 'dropdown-segment', 'dropdown-column-chooser', 'filter-menu'], item.id)\r\n );\r\n }\r\n return defaultItems;\r\n })([\r\n {\r\n id: 'hero-button',\r\n type: 'button',\r\n text: heroButtonText,\r\n classes: ['btn', 'btn-primary'],\r\n onClick: addExtension,\r\n disabled: pageContext.Permissions.IsReadOnlyUser || (config.get('CurrentAccountInActive') === true),\r\n }, {\r\n type: 'dropdown',\r\n id: 'dropdown-extension-edit',\r\n button: {\r\n text: i18n.get('AdExtensionsSummary_EditButton'),\r\n classes: ['btn', 'btn-secondary'],\r\n attributes: { tabindex: '0' },\r\n },\r\n menu: {\r\n items: [\r\n {\r\n iconLeft: 'icon-status-delete',\r\n id: 'delete-association',\r\n text: i18n.get('AdExtensionsSummary_DeleteButton'),\r\n onClick: deleteAssociation,\r\n }, {\r\n type: 'dropdown-divider',\r\n }, {\r\n id: 'edit-an-extension',\r\n text: i18n.get('AdExtensionsSummary_ExtensionEdit'),\r\n onClick: editExtension,\r\n },\r\n ],\r\n },\r\n },\r\n ]),\r\n }),\r\n\r\n dateFilter: {\r\n state,\r\n isOdataActionSource: true,\r\n edm: edmCampaign,\r\n addDateChangeListener: (handler) => {\r\n if (window.App.views.Summary) {\r\n window.App.views.Summary.bindDateFilterChangeHandler(handler, true);\r\n }\r\n },\r\n comparisonColumns: [\r\n 'PeriodPerformanceMetrics',\r\n 'PerformanceMetricsChange',\r\n 'PerformanceMetricsChangePercentage',\r\n ],\r\n },\r\n\r\n pagination: {\r\n pageSize: 50,\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n pageSizeText: i18n.getString('Grid_ShowRows'),\r\n },\r\n placeholder: {\r\n // Message for no data at all.\r\n container: '.noresult-container',\r\n text: i18n.getString('HotelCenter_Intelligence_AdExtensions_Grid_NoActiveAdExtensions').replace('{0}', typeString),\r\n },\r\n };\r\n\r\n this.rows = {\r\n headRows: [\r\n helpers.toolbarRow(constants.DEFAULT_TOOLBAR_NAME),\r\n 'column-header-rows',\r\n ],\r\n };\r\n\r\n const entitySet = edmCampaign.currentAccount;\r\n\r\n this.dataSource = _.isFunction(dataSourceGenerator) ? dataSourceGenerator(entitySet) : {\r\n type: 'jsdata',\r\n entity: DataStore[AdExtensionAssociationSchema.name],\r\n options: {\r\n entitySet: entitySet.AdExtensionAssociations['Default.GridData'].$call({\r\n gridDataParameters: {},\r\n associationType,\r\n adExtensionTypes: [adextensionType],\r\n }),\r\n cacheResponse: false,\r\n headers: {\r\n [headerRefreshCache]: true,\r\n },\r\n },\r\n query: {\r\n $select: 'AdExtension',\r\n $expand: 'AdExtension,VerticalSubAccount,VerticalHotelGroup',\r\n $filter: 'AdExtension/Status eq Enum.AdExtensionStatus\\'Active\\'',\r\n },\r\n schema: AdExtensionAssociationSchema,\r\n };\r\n\r\n if (selection) {\r\n this.selection = {\r\n selectable: (item) => {\r\n return item && item.isAggregateRow !== true;\r\n },\r\n };\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport default class SubAccountAssociationsRequestFactory {\r\n setEntityIds(options, scope) {\r\n options.entitySet = options.entitySet.Campaigns.$withKey(scope.campaignId);\r\n }\r\n\r\n generateDestroyRequest(ids, scope) {\r\n return [{\r\n 'adExtensionAssociations': this.getBatchRequest(ids, scope),\r\n }];\r\n }\r\n\r\n generateUpdateRequest(ids, scopes) {\r\n return [{\r\n 'adExtensionAssociations': _.chain(scopes)\r\n .map((scope) => this.getBatchRequest(ids, scope))\r\n .flatten(true)\r\n .value(),\r\n }];\r\n }\r\n\r\n getBatchRequest(idList, scope) {\r\n return _.map(idList, (id) => ({\r\n Type: 'SubAccount',\r\n EntityId: scope.campaignId,\r\n AdExtensionId: id,\r\n }));\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport default class HotelGroupAssociationsRequestFactory {\r\n setEntityIds(options, scope) {\r\n options.entitySet = options.entitySet.Campaigns.$withKey(scope.campaignId);\r\n options.entitySet = options.entitySet.AdGroups.$withKey(scope.adGroupId);\r\n }\r\n\r\n generateDestroyRequest(ids, scope) {\r\n return [{\r\n 'adExtensionAssociations': this.getBatchRequest(ids, scope),\r\n }];\r\n }\r\n\r\n generateUpdateRequest(ids, scopes) {\r\n return [{\r\n 'adExtensionAssociations': _.chain(scopes)\r\n .map((scope) => this.getBatchRequest(ids, scope))\r\n .flatten(true)\r\n .value(),\r\n }];\r\n }\r\n\r\n getBatchRequest(idList, scope) {\r\n return _.map(idList, (id) => ({\r\n Type: 'HotelGroup',\r\n EntityId: scope.adGroupId,\r\n AdExtensionId: id,\r\n }));\r\n }\r\n}\r\n","import AssociationsRepository from '@bingads-webui-campaign-legacy/adextension-shared/service/repos/associations';\r\nimport SubAccountAssociationsRequestFactory from '@bingads-webui-campaign-legacy/hotel-center-ad-extensions/shared/service/subAccountAssociationsRequestFactory';\r\nimport HotelGroupAssociationsRequestFactory from '@bingads-webui-campaign-legacy/hotel-center-ad-extensions/shared/service/hotelGroupAssociationsRequestFactory';\r\n\r\nexport class HotelAssociationsRepository extends AssociationsRepository {\r\n constructor(options) {\r\n super(options);\r\n this._schema = options.schema;\r\n this.requestFactory = new SubAccountAssociationsRequestFactory();\r\n // overriding default Hotel Center batch URL with MT batch URL.\r\n // 'odata.mt_batch_url' is the name of the key in the component/config/index\r\n // set in AdsAppUI\\private\\UI\\Assets\\campaignui\\feature\\hotel-center\\js\\bootstrap\\index.js\r\n this.batchURL = 'odata.mt_batch_url';\r\n }\r\n\r\n createRequestFactory(entityType) {\r\n if (entityType === 'adgroup') {\r\n this.requestFactory = new HotelGroupAssociationsRequestFactory();\r\n } else if (entityType === 'campaign') {\r\n this.requestFactory = new SubAccountAssociationsRequestFactory();\r\n }\r\n }\r\n}\r\n","/* eslint no-param-reassign: 0 */\r\n\r\nimport _ from 'underscore';\r\nimport ExtensionsRepository from '@bingads-webui-campaign-legacy/adextension-shared/service/repos/extensions';\r\nimport { HotelAssociationsRepository } from './hotel-center-associations-repository';\r\n\r\nconst baseSchema = window.globalLegacySchema.get('AdExtension');\r\n\r\nconst standardProperties = [baseSchema.key, 'Scheduling'];\r\nconst commonProperties = _.difference(_.keys(baseSchema.properties), standardProperties);\r\n\r\nexport class HotelCenterAdExtensionsRepository {\r\n constructor(options) {\r\n let ownedProperties = _.difference(_.keys(options.schema.properties), commonProperties);\r\n\r\n options = _.extend({\r\n afterChangeComitted: _.noop,\r\n extensionDataFormatter: _.partial(_.map, _, _.partial(_.pick, _, ownedProperties)),\r\n associationsDataFormatter: _.partial(_.pluck, _, 'AdExtension'),\r\n }, options);\r\n\r\n this.extension = new ExtensionsRepository(options);\r\n this.association = new HotelAssociationsRepository(options);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui/primitive-utilities';\r\n\r\nexport function attrsProcessor(attrs, associationType, accountId) {\r\n if (_.isArray(attrs)) {\r\n _.each(attrs, (item) => {\r\n const associationAdgroupId = putil.get(item, 'VerticalHotelGroup.Id');\r\n const associationCampaignId = putil.get(item, 'VerticalSubAccount.Id');\r\n const associationAccountId = accountId;\r\n const adextensionId = putil.get(item, 'AdExtension.Id');\r\n const adextensionStatus = putil.get(item, 'AdExtension.Status');\r\n // associationAdgroupId will be string for hotelcenter.\r\n const Id = (associationAdgroupId === '0' ? 0 : associationAdgroupId) || associationCampaignId || associationAccountId;\r\n\r\n item.Id = `${Id}_${associationType}_${adextensionId}`;\r\n //update delivery status when ad extension deleted, it's a work around in UI side, MT should fix it, bug id 574059\r\n if (adextensionStatus === 'Deleted') {\r\n item.AdExtension.Delivery = 'AdExtensionAssociationDeleted';\r\n }\r\n });\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport * as putil from '@bingads-webui/primitive-utilities';\r\nimport { toolbarPlugin, constants } from '@bingads-webui/projection-grid-toolbar';\r\nimport { dateFilterPlugin as newDateFilterPlugin } from '@bingads-webui-campaign/projection-grid-date-filter';\r\nimport { paginationPlugin as newPaginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { uiBlockerPlugin as newUiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { assistedSelectionPlugin as newAssistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport { performanceLogPlugin, perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { pgridFactory } from '@bingads-webui-campaign/pgrid-factory';\r\nimport { appendLearnMoreLink } from '@bingads-webui-component-legacy/help/index';\r\nimport fetchPreferenceConfig from '@bingads-webui-campaign-legacy/bingadsgrid/service/fetch-preference-config';\r\nimport template from '@bingads-webui-campaign-legacy/hotel-center-ad-extensions/shared/template/hotel-extension-page.pug';\r\nimport NewGridConfig from '@bingads-webui-campaign-legacy/hotel-center-ad-extensions/shared/viewmodel/new-grid-config';\r\nimport { HotelAssociationsRepository } from '@bingads-webui-campaign-legacy/hotel-center-ad-extensions/shared/service/hotel-center-associations-repository';\r\nimport { HotelCenterAdExtensionsRepository } from '@bingads-webui-campaign-legacy/hotel-center-ad-extensions/shared/service/repository';\r\n\r\nimport ExtensionsRepository from '@bingads-webui-campaign-legacy/adextension-shared/service/repos/extensions';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport Promise from 'bluebird';\r\nimport { AdExtensionDeliveryStatusPopupFactory } from '@bingads-webui-campaign-legacy/adextension-shared/view/delivery/adextension-delivery-status-popup-factory';\r\nimport { attrsProcessor as defaultAttrsProcessor }\r\n from '@bingads-webui-campaign-legacy/hotel-center-ad-extensions/shared/view/Hotel-center-base-ad-extension-helper';\r\nimport popup from '@bingads-webui-component-legacy/dialog/popup';\r\n// eslint-disable-next-line\r\nimport _bingads_webui_component_legacy_timezonemapper_index from '@bingads-webui-component-legacy/timezonemapper/index';\r\n// eslint-disable-next-line\r\nconst { getTimeZoneForDateRangeText } = _bingads_webui_component_legacy_timezonemapper_index;\r\nimport preferencesService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport eventDispatcher from '@bingads-webui-component-legacy/event-dispatcher/index';\r\nimport cacheManager from '@bingads-webui-campaign-legacy/cache-manager/index';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\nconst ENTITY_MAP = { AdGroup: 'VerticalHotelGroup', Campaign: 'VerticalSubAccount' };\r\n\r\n\r\nconst headerRefreshCache = 'x-ms-refreshcampaigncache';\r\nlet deliveryAlertId;\r\n\r\n/* @this: ViewClassName */\r\nfunction updateFlagRefreshCache(operator) {\r\n const { options } = this.grid.gridView.get('dataSource');\r\n\r\n if (operator === 'remove' && _.has(options.headers, headerRefreshCache)) {\r\n delete options.headers[headerRefreshCache];\r\n }\r\n if (operator === 'add' && !_.has(options.headers, headerRefreshCache)) {\r\n options.headers[headerRefreshCache] = true;\r\n }\r\n}\r\n\r\n/* @this: ViewClassName */\r\nfunction expandToolBar(view) {\r\n this.$('.editor__container').html(view.$el);\r\n\r\n // show editor\r\n this.$('.editor__container').show();\r\n // hide the toolbar with empty view, which will have blank height\r\n this.grid.toolbar.gridToolbarGroup.hideAllToolbars();\r\n // on cancel event\r\n view.on('cancel', () => {\r\n updateFlagRefreshCache.call(this, 'add');\r\n this.grid.toolbar.gridToolbarGroup.showAllToolbars();\r\n this.$('.editor__container').hide();\r\n view.remove();\r\n this.grid.gridView.refresh(true);\r\n });\r\n\r\n // on save event\r\n view.on('save', () => {\r\n view.trigger('cancel');\r\n });\r\n}\r\n\r\nfunction checkDeliveryStatus(deliveryStatus) {\r\n let deletedStatuses = ['AssociationDeleted', 'AdExtensionAssociationDeleted'];\r\n\r\n if (_.contains(deletedStatuses, deliveryStatus)) {\r\n deliveryAlertId = window.App.views.alertCenter.showError(i18n.getString('AdExtension_EditDeletedAssociation_Error'));\r\n return false;\r\n }\r\n return true;\r\n}\r\n/* @this: ViewInstantiateEditor */\r\nfunction openAssociationsEditor({\r\n entityType,\r\n currentCampaignId,\r\n currentAdgroupId,\r\n adExtensionId,\r\n editFromGrid,\r\n campaignName,\r\n adgroupName,\r\n}) {\r\n const options = {\r\n entityType,\r\n associationType: this.associationType,\r\n // when isStringFormatId is true, string format is used for Default.Disassociate and Default.Associate calls\r\n isStringFormatId: true,\r\n campaignId: currentCampaignId,\r\n adgroupId: currentAdgroupId,\r\n adExtensionId,\r\n editFromGrid,\r\n campaignName,\r\n adgroupName,\r\n usePanel: false,\r\n disableScheduling: true,\r\n repositoryFactory: ({ schema, updateContext }) => new HotelCenterAdExtensionsRepository({\r\n schema,\r\n afterChangeComitted() {\r\n if (_.isFunction(updateContext)) {\r\n updateContext(['AccountAdExtensionsGrid', 'CampaignAdExtensionsGrid', 'AdGroupAdExtensionsGrid']);\r\n }\r\n },\r\n }),\r\n };\r\n\r\n if (this.isUINext) {\r\n this.createAssociationEditorForUiNext(options);\r\n return null;\r\n }\r\n\r\n let view = this.instantiateEditor(options);\r\n\r\n expandToolBar.call(this, view.render());\r\n return view;\r\n}\r\n/* @this: ViewClassName */\r\nfunction editAssociations() {\r\n const selectedItems = this.grid.gridView.selectedItems();\r\n\r\n if (_.isEmpty(selectedItems)) {\r\n popup.alert(i18n.getString('Grid_RowSelectionRequired'));\r\n return false;\r\n }\r\n // check choosed column numbers\r\n if (selectedItems.length > 1) {\r\n popup.alert(i18n.getString('AdExtensions_Edit_SelectOneRow'));\r\n return false;\r\n }\r\n\r\n const selectedItem = selectedItems[0];\r\n\r\n if (!checkDeliveryStatus(selectedItem.AdExtension.Delivery)) {\r\n return false;\r\n }\r\n const selectedCampaignId = putil.get(selectedItem, 'VerticalSubAccount.Id');\r\n const selectedAdgroupId = putil.get(selectedItem, 'VerticalHotelGroup.Id');\r\n const campaignName = putil.get(selectedItem, 'VerticalSubAccount.Name');\r\n const adgroupName = putil.get(selectedItem, 'VerticalHotelGroup.Name');\r\n\r\n this.editor = openAssociationsEditor.call(this, {\r\n entityType: this.associationType.toLowerCase(),\r\n currentCampaignId: selectedCampaignId,\r\n currentAdgroupId: selectedAdgroupId,\r\n adExtensionId: selectedItem.AdExtension.Id,\r\n editFromGrid: true,\r\n campaignName,\r\n adgroupName,\r\n });\r\n\r\n return true;\r\n}\r\n/* @this: ViewClassName */\r\nfunction getBulkDeleteItems() {\r\n const selectedItems = this.grid.gridView.selectedItems();\r\n\r\n if (_.isEmpty(selectedItems)) {\r\n popup.alert(i18n.getString('Grid_RowSelectionRequired'));\r\n return [];\r\n }\r\n const deleteMessage = i18n.getString('AdExtensionsSummary_DeleteConfirmation');\r\n\r\n if (!popup.confirm(deleteMessage)) {\r\n return false;\r\n }\r\n return _.map(selectedItems, (selectedItem) => {\r\n const selectedCampaignId = putil.get(selectedItem, 'VerticalSubAccount.Id');\r\n const selectedAdgroupId = putil.get(selectedItem, 'VerticalHotelGroup.Id');\r\n const selectedId = putil.get(selectedItem, 'AdExtension.Id');\r\n\r\n return {\r\n where: {\r\n campaignId: selectedCampaignId,\r\n adGroupId: selectedAdgroupId,\r\n id: {\r\n in: [selectedId],\r\n },\r\n },\r\n };\r\n });\r\n}\r\n/* @this: ViewClassName */\r\nfunction deleteAssociations() {\r\n const deletedItems = getBulkDeleteItems.call(this);\r\n\r\n if (_.isEmpty(deletedItems)) {\r\n return false;\r\n }\r\n\r\n // use odata directly\r\n const associations = new HotelAssociationsRepository({\r\n schema: this.schema,\r\n associationsDataFormatter: this.associationsDataFormatter,\r\n afterChangeComitted: this.afterChangeComitted,\r\n });\r\n\r\n const mappingAssociationType = this.associationType.toLowerCase() === 'subaccount' ? 'campaign' : 'adgroup';\r\n\r\n associations.createRequestFactory(mappingAssociationType);\r\n\r\n associations.destroyAllByOdata(deletedItems).then(() => {\r\n updateFlagRefreshCache.call(this, 'add');\r\n this.grid.gridView.refresh(true);\r\n });\r\n\r\n return true;\r\n\r\n}\r\n\r\nconst getDefaultPlugins = ({\r\n isUINext,\r\n pluginFactories,\r\n gridOptions,\r\n}) => _.compact([\r\n {\r\n plugin: pluginFactories.a11yPlugin,\r\n config: gridOptions.plugins.a11y,\r\n },\r\n {\r\n plugin: pluginFactories.performanceLogPlugin,\r\n config: gridOptions.plugins.performanceLog,\r\n },\r\n {\r\n plugin: pluginFactories.perfMarkerPlugin,\r\n config: gridOptions.plugins.perfMarker,\r\n },\r\n {\r\n plugin: pluginFactories.toolbarPlugin,\r\n config: gridOptions.plugins.toolbar,\r\n },\r\n !isUINext && {\r\n plugin: pluginFactories.newDateFilterPlugin,\r\n config: gridOptions.plugins.dateFilter,\r\n },\r\n {\r\n plugin: pluginFactories.newPaginationPlugin,\r\n config: gridOptions.plugins.pagination,\r\n },\r\n {\r\n plugin: pluginFactories.placeholderPlugin,\r\n config: gridOptions.plugins.placeholder,\r\n },\r\n {\r\n plugin: pluginFactories.newUiBlockerPlugin,\r\n config: {\r\n el: isUINext ? $('.callout-extension-table-page-container').get(0) : null,\r\n },\r\n },\r\n {\r\n plugin: pluginFactories.newAssistedSelectionPlugin,\r\n },\r\n]);\r\n\r\nexport default class HotelCenterBaseAdExtensionAssociationsView extends Backbone.View {\r\n initialize({\r\n instantiateEditor,\r\n adextensionType,\r\n columns,\r\n schema,\r\n excludedColumns = [],\r\n associationType,\r\n typeString,\r\n customizedFilterList,\r\n dataPostProcess,\r\n selection,\r\n heroButtonText,\r\n filterListProcessor,\r\n overThresholdErrorMessage,\r\n perfMarker,\r\n isUINext = false,\r\n createAssociationEditorForUiNext = _.noop,\r\n extendPlugins = () => [],\r\n preferenceConfig,\r\n viewport,\r\n customHeaderOffset,\r\n }) {\r\n this.campaignId = state.get('campaign_id');\r\n this.adgroupId = state.get('adgroup_id');\r\n this.instantiateEditor = instantiateEditor;\r\n this.adextensionType = adextensionType || schema.name;\r\n this.columns = columns;\r\n this.schema = schema;\r\n this.excludedColumns = excludedColumns;\r\n this.associationType = associationType;\r\n this.typeString = typeString;\r\n this.customizedFilterList = customizedFilterList;\r\n this.dataPostProcess = dataPostProcess;\r\n this.extensionsRepo = new ExtensionsRepository({\r\n schema,\r\n });\r\n this.selection = selection;\r\n this.heroButtonText = heroButtonText;\r\n this.filterListProcessor = filterListProcessor;\r\n this.overThresholdErrorMessage = overThresholdErrorMessage;\r\n this.deleteAssociation = _.bind(deleteAssociations, this);\r\n this.editExtension = _.bind(editAssociations, this);\r\n this.disableScheduling = true;\r\n this.perfMarker = perfMarker;\r\n this.isUINext = isUINext;\r\n this.createAssociationEditorForUiNext = createAssociationEditorForUiNext;\r\n this.extendPlugins = extendPlugins;\r\n this.viewport = viewport;\r\n this.customHeaderOffset = customHeaderOffset;\r\n this.preferenceConfig = preferenceConfig;\r\n this.isInitialGrid = true;\r\n if (this.isUINext) {\r\n this.prepareGrid({});\r\n }\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .grid-table .glyph-container .status_icon': 'showAdExtensionRejectReasons',\r\n };\r\n }\r\n\r\n showAdExtensionRejectReasons(event) {\r\n this.deliveryStatusPopupFactory.showRejectionPopup(event);\r\n event.stopPropagation();\r\n $(document).one('click', this.deliveryStatusPopupFactory.closeRejectionPopup);\r\n }\r\n\r\n createAssociations() {\r\n this.editor = openAssociationsEditor.call(this, {\r\n entityType: this.associationType.toLowerCase(),\r\n currentCampaignId: this.campaignId,\r\n currentAdgroupId: this.adgroupId,\r\n });\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n render({\r\n dataSourceGenerator,\r\n attrsProcessor = defaultAttrsProcessor,\r\n shouldNotShowGrid = false,\r\n } = {}) {\r\n this.$el.html(this.template({\r\n appendLearnMoreLink,\r\n associationType: this.associationType.toLowerCase(),\r\n accountTimeZoneText: getTimeZoneForDateRangeText(),\r\n shouldNotShowGrid,\r\n isUINext: this.isUINext,\r\n }));\r\n this.$('.editor__container').hide();\r\n\r\n if (shouldNotShowGrid) {\r\n return this;\r\n }\r\n\r\n if (this.isUINext) {\r\n this.$('.grid-table').empty().append(this.grid.gridView.render().$el);\r\n } else {\r\n this.prepareGrid({\r\n dataSourceGenerator,\r\n attrsProcessor,\r\n });\r\n }\r\n\r\n return this;\r\n }\r\n\r\n prepareGrid({\r\n dataSourceGenerator,\r\n attrsProcessor = defaultAttrsProcessor,\r\n }) {\r\n const configParams = {\r\n toolbarContainer: this.$('.grid-toolbar-container'),\r\n gridContainer: this.$('.grid-table'),\r\n adextensionType: this.adextensionType,\r\n columns: this.columns,\r\n excludedColumns: this.excludedColumns,\r\n addExtension: _.bind(this.createAssociations, this),\r\n deleteAssociation: this.deleteAssociation,\r\n editExtension: this.editExtension,\r\n associationType: this.associationType,\r\n typeString: this.typeString,\r\n customizedFilterList: this.customizedFilterList,\r\n selection: this.selection,\r\n heroButtonText: this.heroButtonText,\r\n dataSourceGenerator,\r\n filterListProcessor: this.filterListProcessor,\r\n disableScheduling: this.disableScheduling,\r\n adExtensionTabPerfMarker: this.perfMarker,\r\n isForVNext: this.isUINext,\r\n customHeaderOffset: this.customHeaderOffset,\r\n };\r\n\r\n const config = new NewGridConfig(configParams);\r\n\r\n this.filterConfig = config.filterConfig;\r\n\r\n config.dataSource.options.afterFindAll = (resources, attrs) => {\r\n if (attrs && _.isArray(attrs.errors)) {\r\n const error = _.first(attrs.errors);\r\n\r\n if (error && error.Code && error.Code === 'TooMuchDataToDownload') {\r\n config.plugins.placeholder = _.extend(config.plugins.placeholder, {\r\n asyncCallback: () => Promise.resolve(true),\r\n asyncEmptyText: this.overThresholdErrorMessage,\r\n });\r\n } else if (!_.isArray(attrs)) {\r\n return [];\r\n }\r\n } else if (!_.isArray(attrs)) {\r\n return [];\r\n }\r\n\r\n attrsProcessor(attrs, this.associationType, state.get('account_id'));\r\n\r\n if (!_.isUndefined(this.dataPostProcess)) {\r\n return this.dataPostProcess(attrs);\r\n }\r\n\r\n updateFlagRefreshCache.call(this, 'remove');\r\n\r\n return attrs;\r\n };\r\n\r\n if (this.isUINext) {\r\n this.setupGrid(config);\r\n } else {\r\n this.gridPromise = fetchPreferenceConfig(config).then(() => {\r\n this.setupGrid(config);\r\n });\r\n }\r\n }\r\n\r\n setupGrid(config) {\r\n const pluginFactories = {\r\n toolbarPlugin,\r\n newDateFilterPlugin,\r\n newPaginationPlugin,\r\n newUiBlockerPlugin,\r\n a11yPlugin,\r\n newAssistedSelectionPlugin,\r\n perfMarkerPlugin,\r\n placeholderPlugin,\r\n performanceLogPlugin,\r\n };\r\n\r\n const defaultPlugins = getDefaultPlugins({\r\n isUINext: this.isUINext,\r\n pluginFactories,\r\n gridOptions: config,\r\n });\r\n\r\n const extendedPlugins = this.extendPlugins();\r\n\r\n this.grid = pgridFactory({\r\n gridConfig: config,\r\n plugins: defaultPlugins.concat(extendedPlugins),\r\n preferenceConfig: this.preferenceConfig || {},\r\n });\r\n\r\n this.grid.gridView.render();\r\n\r\n this.deliveryStatusPopupFactory = new AdExtensionDeliveryStatusPopupFactory({\r\n grid: this.grid,\r\n type: this.adextensionType,\r\n overrideEntities: ENTITY_MAP,\r\n overrideAssociationType: this.associationType,\r\n BidataNotRequired: true,\r\n });\r\n\r\n this.grid.gridView.on('didUpdate', (changes) => {\r\n if (this.isInitialGrid) {\r\n this.isInitialGrid = false;\r\n } else if (_.has(changes, 'sortableHeader')) {\r\n const orderby = _.result(changes.query, 'orderby') || _.result(this.grid.gridView.get('query'), 'orderby');\r\n const sortableHeader = changes.sortableHeader;\r\n const preference = { sortInfo: { orderby, sortableHeader } };\r\n\r\n preferencesService.setAtUserLevel({ Name: `WebApp.CampaignUI.${config.name}`, Data: preference });\r\n }\r\n // update toolbar\r\n // disabled Edit dropdown button if there is no data\r\n const toolbarEditor = this.grid.toolbar.gridToolbarGroup.toolbarWithName(constants.DEFAULT_TOOLBAR_NAME);\r\n const editMenuId = 'dropdown-extension-edit';\r\n const itemsCount = this.grid.gridView.getItemCount();\r\n\r\n toolbarEditor.set(editMenuId, { disabled: itemsCount === 0 });\r\n });\r\n\r\n this.grid.gridView.on('didReload', () => {\r\n this.grid.gridView.deselectAll();\r\n if (deliveryAlertId) {\r\n window.App.views.alertCenter.dismiss(deliveryAlertId);\r\n }\r\n });\r\n\r\n eventDispatcher.on('page-title.update-status', () => {\r\n cacheManager.invalidate('AdExtensionAssociation');\r\n this.grid.gridView.refresh(true);\r\n });\r\n }\r\n\r\n removeRejectionPopup() {\r\n const rejectionContainer = document.getElementById('rejectionContainer');\r\n\r\n if (rejectionContainer && rejectionContainer.style && rejectionContainer.style.display !== 'none') {\r\n $('#rejectionContainer').css('display', 'none');\r\n $.gridPopup.ResetImage(); //eslint-disable-line\r\n }\r\n }\r\n\r\n remove() {\r\n if (this.grid) {\r\n this.grid.gridView.remove();\r\n this.grid.toolbar.gridToolbarGroup.remove();\r\n this.grid.pagination.remove();\r\n }\r\n\r\n if (this.editor) {\r\n this.editor.remove();\r\n }\r\n this.removeRejectionPopup();\r\n\r\n if (this.deliveryStatusPopupFactory) {\r\n $(document).off('click', this.deliveryStatusPopupFactory.closeRejectionPopup);\r\n }\r\n\r\n super.remove();\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport {\r\n HotelCenterAssignment as hotelCenterAssignmentLoader,\r\n} from '@bingads-webui-campaign/hotel-center-assignment';\r\n\r\n// Import the dependencies to ensure they are loaded\r\nimport * as viewAdapter from '@bingads-webui-campaign-legacy/griddownload/view/adapter';\r\nimport * as hotelCenterEdm from '@bingads-webui-campaign-legacy/hotel-center-edm/index';\r\nimport hotelCenterJsData from '@bingads-webui-campaign-legacy/hotel-center-js-data/index';\r\nimport * as crossPageSelectAll from '@bingads-webui-component-legacy/bingads-grid/plugin/cross-page-select-all/index';\r\nimport * as sharedColumn from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport * as schemaUtil from '@bingads-webui-component-legacy/bingads-grid/shared/schema-util';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport appConfig from '@bingads-webui-component-legacy/config/index';\r\nimport * as customUserInfoPreferences from '@bingads-webui-component-legacy/bingads-grid/service/custom-userinfo-preferences';\r\nimport campaignJsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport * as dateFilterPreferences from '@bingads-webui-component-legacy/bingads-grid/service/date-filter-preferences';\r\n\r\nconst i18nHotelCenter = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst hotelCenterComponentI18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/hotel-center');\r\nconst hotelCenterSharedI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared');\r\n\r\n\r\nconst HotelCenterAssignmentDeps = {\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center': i18nHotelCenter,\r\n 'campaignui/feature/griddownload/view/adapter': viewAdapter,\r\n 'campaignui/feature/hotel-center-edm/index': hotelCenterEdm,\r\n 'campaignui/feature/hotel-center-js-data/index': hotelCenterJsData,\r\n 'component/bingads-grid/plugin/cross-page-select-all/index': crossPageSelectAll,\r\n 'component/bingads-grid/shared/column': sharedColumn,\r\n 'component/bingads-grid/shared/schema-util': schemaUtil,\r\n 'component/i18n/loader!campaignui/feature/hotel-center': hotelCenterComponentI18n,\r\n 'component/state/index': state,\r\n 'component/config/index': appConfig,\r\n 'component/bingads-grid/service/custom-userinfo-preferences': customUserInfoPreferences,\r\n 'component/js-data-campaign/index': campaignJsData,\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared': hotelCenterSharedI18n,\r\n 'PageContext': pageContext,\r\n 'component/bingads-grid/service/date-filter-preferences': dateFilterPreferences,\r\n};\r\n\r\n// Inject the dependencies\r\nexport const HotelCenterAssignment = hotelCenterAssignmentLoader(HotelCenterAssignmentDeps).then(_.property('HotelCenterAssignment'));\r\n","import AssociationContainer from '@bingads-webui-campaign-legacy/adextension-associations-container/view/index';\r\nimport CalloutAssociationEditor from '@bingads-webui-campaign-legacy/adextension-callout/view/associationsEditor';\r\nimport _ from 'underscore';\r\nimport HotelCenterBaseAdExtensionView from '@bingads-webui-campaign-legacy/hotel-center-ad-extensions/shared/view/hotel-center-base-adextension-view';\r\nimport { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport gridRowTemplate from '@bingads-webui-campaign-legacy/adextension-callout/template/gridRowTemplate.pug';\r\nimport { HotelCenterEntitySelectorService } from '@bingads-webui-campaign-legacy/hotel-center-ad-extensions/shared/service/hotel-center-entity-selector-service';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/adextensions');\r\nconst CalloutAdExtensionSchema = window.globalLegacySchema.get('CalloutAdExtension');\r\n\r\nexport class CalloutAdExtensionAssociationsView extends HotelCenterBaseAdExtensionView {\r\n initialize({\r\n associationType,\r\n typeString,\r\n perfMarker,\r\n isNewEntitySelector,\r\n i18nHotelCenter,\r\n }) {\r\n super.initialize({\r\n associationType,\r\n schema: CalloutAdExtensionSchema,\r\n isNewEntitySelector,\r\n instantiateEditor(associationOption) {\r\n const options = _.clone(associationOption);\r\n\r\n options.AssociationEditor = CalloutAssociationEditor;\r\n options.findScope = (association) => (scope) => {\r\n return (association.Type === 'SubAccount' && scope.campaignId === association.EntityId) ||\r\n (association.Type === 'HotelGroup' && scope.adGroupId === association.EntityId);\r\n };\r\n\r\n options.i18nKeys = {\r\n title: 'AdExtensions_Callout_Editor_Title',\r\n multiSelectSubtitle: [],\r\n AdgroupSelectorEntityTypeAdgroups: 'AdgroupSelector_EntityType_Hotelgroups',\r\n AdgroupSelectorEntityTypeCampaigns: 'AdgroupSelector_EntityType_Subaccounts',\r\n AdExtensionsMultiSelectSelectCampaigns: 'AdExtensions_MultiSelect_Select_Subaccounts',\r\n AdExtensionsMultiSelectSelectAdgroups: 'AdExtensions_MultiSelect_Select_Hotelgroups',\r\n };\r\n\r\n const editorOptions = {\r\n i18nKeys: {\r\n subtitle: [],\r\n ErrorGridEntityAdgroupColumn: 'ErrorGrid_Entity_HotelGroup_Column',\r\n ErrorGridEntityCampaignColumn: 'ErrorGrid_Entity_SubAccount_Column',\r\n // eslint-disable-next-line camelcase\r\n delete_confirm: 'AdExtensions_Callout_Delete_Warning_Hotel',\r\n // eslint-disable-next-line camelcase\r\n AdExtensions_Edit_Warning: 'AdExtensions_Edit_Warning_Hotel',\r\n },\r\n };\r\n\r\n // TODO: converting entity type back to Campaign UI entities to reuse\r\n // association container's and editor's code\r\n options.entityType = options.entityType === 'subaccount' ? 'campaign' : 'adgroup';\r\n options.entitySelectorService = new HotelCenterEntitySelectorService();\r\n options.maxSelectedItemsCount = 2;\r\n options.isNewEntitySelector = isNewEntitySelector;\r\n options.i18nHotelCenter = i18nHotelCenter;\r\n\r\n return new AssociationContainer(options, editorOptions);\r\n },\r\n columns: [bingadsGridColumn({\r\n name: 'AdExtension',\r\n property: (item) => {\r\n if (item.isAggregateRow) {\r\n return item.AdExtension;\r\n } else {\r\n return _.pick(item.AdExtension, 'Text');\r\n }\r\n },\r\n template: (local) => {\r\n if (_.isEmpty(local.value)) {\r\n return '';\r\n } else if (typeof local.value !== 'object') {\r\n return local.value;\r\n }\r\n return gridRowTemplate({\r\n data: {\r\n Text: local.value.Text,\r\n },\r\n });\r\n },\r\n type: 'string',\r\n sortable: false,\r\n title: i18n.get('ErrorGrid_AdExtension_Column'),\r\n helpId: 'Page_CampaignGrids_AdExtensions', // TODO: Update with Hotel Center help id\r\n bodyClasses: ['col-AdExtension'],\r\n })],\r\n typeString,\r\n overThresholdErrorMessage: i18n.get('AdExtensions_CalloutExtensions_OverThresholdMessage'),\r\n perfMarker,\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport {\r\n HotelCenterIntelligence as hotelCenterIntelligenceLoader,\r\n} from '@bingads-webui-campaign/hotel-center-intelligence';\r\n\r\n// Import the dependencies to ensure they are loaded\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport * as hotelCenterEdm from '@bingads-webui-campaign-legacy/hotel-center-edm/index';\r\nimport hotelCenterJsData from '@bingads-webui-campaign-legacy/hotel-center-js-data/index';\r\nimport * as adapter from '@bingads-webui-campaign-legacy/griddownload/view/adapter';\r\nimport azureUpload from '@bingads-webui-component-legacy/azure-upload/index';\r\nimport * as sharedColumn from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport * as toast from '@bingads-webui-component-legacy/toast/index';\r\nimport * as calloutExtensionAssociation from '@bingads-webui-campaign-legacy/hotel-center-ad-extensions/callout/callout-adextension-associations-view';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport * as dateFilterPreferences from '@bingads-webui-component-legacy/bingads-grid/service/date-filter-preferences';\r\nimport * as segmentationPerferences from '@bingads-webui-component-legacy/bingads-grid/service/segmentation-preferences';\r\nimport * as servicePreference from '@bingads-webui-component-legacy/preference/service/index';\r\nimport * as customeridtype from '@bingads-webui-component-legacy/edm-campaign/customeridtype';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\n\r\n\r\nconst hotelCenterI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst hotelCenterShared = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared');\r\n\r\nconst HotelCenterIntelligenceDeps = {\r\n 'PageContext': pageContext,\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center': hotelCenterI18n,\r\n 'campaignui/feature/hotel-center-edm/index': hotelCenterEdm,\r\n 'campaignui/feature/hotel-center-js-data/index': hotelCenterJsData,\r\n 'campaignui/feature/griddownload/view/adapter': adapter,\r\n 'component/azure-upload/index': azureUpload,\r\n 'component/bingads-grid/shared/column': sharedColumn,\r\n 'component/toast/index': toast,\r\n 'campaignui/feature/hotel-center-ad-extensions/callout/callout-adextension-associations-view': calloutExtensionAssociation,\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared': hotelCenterShared,\r\n 'component/state/index': state,\r\n 'component/bingads-grid/service/date-filter-preferences': dateFilterPreferences,\r\n 'component/bingads-grid/service/segmentation-preferences': segmentationPerferences,\r\n 'component/preference/service/index': servicePreference,\r\n 'component/edm-campaign/customeridtype': customeridtype,\r\n 'component/config/index': config,\r\n};\r\n\r\n// Inject the dependencies\r\nexport const HotelCenterIntelligence = hotelCenterIntelligenceLoader(HotelCenterIntelligenceDeps).then(\r\n (hotelCenterIntelligence) => _.pick(hotelCenterIntelligence, 'FeedStatus', 'FeedUpload', 'MatchReport', 'ShareOfVoice', 'BookingReport', 'CalloutExtensionsView'));\r\n","import {\r\n HotelCenterOverview as hotelCenterOverviewLoader,\r\n} from '@bingads-webui-campaign/hotel-center-overview';\r\nimport { getHotelCenterShared } from '@bingads-webui-campaign/hotel-center-shared';\r\n\r\n// Import the dependencies to ensure they are loaded\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport * as detailMapper from '@bingads-webui-campaign-legacy/bulk-operation/edit-detail/detail-mapper';\r\nimport bulkEditJob from '@bingads-webui-campaign-legacy/bulk-operation/util/bulk-edit-job';\r\nimport * as downloadViewAdapter from '@bingads-webui-campaign-legacy/griddownload/view/adapter';\r\nimport * as hotelCenterEdm from '@bingads-webui-campaign-legacy/hotel-center-edm/index';\r\nimport hotelCenterJsData from '@bingads-webui-campaign-legacy/hotel-center-js-data/index';\r\nimport * as columnChooser from '@bingads-webui-component-legacy/bingads-grid/plugin/column-chooser';\r\nimport * as crossPageSelectAll from '@bingads-webui-component-legacy/bingads-grid/plugin/cross-page-select-all/index';\r\nimport * as newPerformanceLog from '@bingads-webui-component-legacy/bingads-grid/plugin/new-performance-log';\r\nimport * as sharedColumn from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport * as schemaUtil from '@bingads-webui-component-legacy/bingads-grid/shared/schema-util';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport * as popupEditor from '@bingads-webui-component-legacy/grid-customized-popup-editor/index';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport * as toast from '@bingads-webui-component-legacy/toast/index';\r\nimport * as preferenceService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport jsDataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport * as dateFilterPreferences from '@bingads-webui-component-legacy/bingads-grid/service/date-filter-preferences';\r\nimport * as segmentationPreferences from '@bingads-webui-component-legacy/bingads-grid/service/segmentation-preferences';\r\nimport * as columnChooserPreferences from '@bingads-webui-component-legacy/bingads-grid/service/column-chooser-preferences';\r\n\r\n\r\nconst hotelCenterI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst hotelCenterSchemaI18n = window.globalLegacyI18n.get('$/schema-i18n!hotel-center');\r\nconst hotelCenterSharedI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared');\r\nconst hotelCenterUtils = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-utils');\r\n\r\nconst HotelCenterOverviewDeps = {\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center': hotelCenterI18n,\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared': hotelCenterSharedI18n,\r\n 'PageContext': pageContext,\r\n 'campaignui/feature/bulk-operation/edit-detail/detail-mapper': detailMapper,\r\n 'campaignui/feature/bulk-operation/util/bulk-edit-job': bulkEditJob,\r\n 'campaignui/feature/griddownload/view/adapter': downloadViewAdapter,\r\n 'campaignui/feature/hotel-center-edm/index': hotelCenterEdm,\r\n 'campaignui/feature/hotel-center-js-data/index': hotelCenterJsData,\r\n 'component/bingads-grid/plugin/column-chooser': columnChooser,\r\n 'component/bingads-grid/plugin/cross-page-select-all/index': crossPageSelectAll,\r\n 'component/bingads-grid/plugin/new-performance-log': newPerformanceLog,\r\n 'component/bingads-grid/shared/column': sharedColumn,\r\n 'component/bingads-grid/shared/schema-util': schemaUtil,\r\n 'component/config/index': config,\r\n 'component/grid-customized-popup-editor/index': popupEditor,\r\n 'component/humanize/decimal': decimal,\r\n 'component/state/index': state,\r\n 'component/toast/index': toast,\r\n 'component/preference/service/index': preferenceService,\r\n '$/schema-i18n!hotel-center': hotelCenterSchemaI18n,\r\n 'component/js-data-campaign/index': jsDataCampaign,\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-utils': hotelCenterUtils,\r\n 'component/bingads-grid/service/date-filter-preferences': dateFilterPreferences,\r\n 'component/bingads-grid/service/segmentation-preferences': segmentationPreferences,\r\n 'component/bingads-grid/service/column-chooser-preferences': columnChooserPreferences,\r\n};\r\n\r\nexport const HotelCenterOverview = hotelCenterOverviewLoader(HotelCenterOverviewDeps);\r\nexport const { userCountryService } = getHotelCenterShared({ state, i18n: hotelCenterSharedI18n });\r\n","import _ from 'underscore';\r\nimport {\r\n SetupView as setupViewLoader,\r\n} from '@bingads-webui-campaign/hotel-center-setup';\r\n\r\n// Import the dependencies to ensure they are loaded\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport * as toast from '@bingads-webui-component-legacy/toast/index';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport hotelCenterJsData from '@bingads-webui-campaign-legacy/hotel-center-js-data/index';\r\nimport * as hotelCenterEdm from '@bingads-webui-campaign-legacy/hotel-center-edm/index';\r\n\r\nconst hotelCenterSharedI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared');\r\nconst hotelCenterSetupI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-setup');\r\n\r\nconst SetupViewDeps = {\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-setup': hotelCenterSetupI18n,\r\n 'component/config/index': config,\r\n 'component/toast/index': toast,\r\n 'PageContext': pageContext,\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared': hotelCenterSharedI18n,\r\n 'component/state/index': state,\r\n 'campaignui/feature/hotel-center-js-data/index': hotelCenterJsData,\r\n 'campaignui/feature/hotel-center-edm/index': hotelCenterEdm,\r\n};\r\n\r\n\r\n// Inject the dependencies\r\nexport const HotelCenteSetup = setupViewLoader(SetupViewDeps).then(_.property('SetupView'));\r\n","// Import the dependencies to ensure they are loaded\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport { getHotelCenterUtils } from '@bingads-webui-campaign/hotel-center-utils';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-utils');\r\n\r\n// Inject the dependencies\r\nexport const {\r\n bidUtils,\r\n bidMultiplierUtils,\r\n dateUtils,\r\n inlineDownloadUtils,\r\n} = getHotelCenterUtils({ pageContext, state, i18n });\r\n","import dateFilter from '@bingads-webui-static-legacy/app/state/hotelcenter-dateFilter';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport Promise from 'bluebird';\r\nimport edm from '@bingads-webui-campaign-legacy/hotel-center-edm/index';\r\nimport jsdata from '@bingads-webui-campaign-legacy/hotel-center-js-data/index';\r\n\r\nconst getProvisionedUrl = (cid, aid) => `${config.get('odata.url')}Travel/V1/Customers(${cid})/Accounts(${aid})/Default.IsProvisioned`;\r\n\r\nexport const fetchDbProvisionStatus = () => new Promise((resolve, reject) => {\r\n const cid = state.get('advertisercustomer_id') || state.get('customer_id');\r\n const aid = state.get('account_id');\r\n const url = getProvisionedUrl(cid, aid);\r\n\r\n return $.ajax({\r\n url,\r\n type: 'GET',\r\n headers: {\r\n Authorization: `CCMTSmallToken ${pageContext.Token}`,\r\n },\r\n }).then((isHotelAdsDBPilotEnabled) => {\r\n resolve({ isHotelAdsDBPilotEnabled });\r\n }, reject);\r\n});\r\n\r\n\r\nexport const bootstrapDateFilter = () => dateFilter\r\n .getFilterPromise(['TravelShared', 'HotelCenterFeedStatusGrid', 'HotelCenterProcessedReconGrid'])\r\n .then((filterValues) => {\r\n _.each(filterValues, (filter) => {\r\n const name = filter.name;\r\n\r\n if (name.match('Shared$')) {\r\n state.set('$daterange', filter.value);\r\n } else {\r\n state.set('$daterange'.concat(name), filter.value);\r\n }\r\n });\r\n });\r\n\r\nexport const getTotalSubaccounts = () => {\r\n const options = {\r\n entitySet: edm.currentCustomer.SubAccounts,\r\n cacheResponse: false,\r\n };\r\n\r\n const query = {\r\n limit: 6,\r\n offset: 0,\r\n };\r\n\r\n return jsdata.SubAccount.findAll(query, options).then((subAccounts) => {\r\n return Promise.resolve(subAccounts);\r\n });\r\n};\r\n\r\n// add all the bootstrap for hotel center here\r\nexport const bootstrapHotelCenter = () => fetchDbProvisionStatus()\r\n .then((dbProvisionStatus) => {\r\n const { isHotelAdsDBPilotEnabled: dbProvisionResult } = dbProvisionStatus;\r\n let isHotelAdsDBPilotEnabled = dbProvisionResult;\r\n\r\n if (_.isObject(dbProvisionResult)) {\r\n isHotelAdsDBPilotEnabled = dbProvisionResult.value;\r\n }\r\n\r\n if (isHotelAdsDBPilotEnabled) {\r\n return bootstrapDateFilter()\r\n .then(() => getTotalSubaccounts())\r\n .then((subAccounts) => {\r\n const pageId = subAccounts.totalCount === 0 ? 'setup' : 'overview';\r\n\r\n return Promise.resolve({ isPageReady: true, pageId, subAccounts, isHotelAdsDBPilotEnabled });\r\n });\r\n }\r\n return Promise.resolve({ isHotelAdsDBPilotEnabled });\r\n });\r\n\r\n","import * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\n\r\nexport function getLocalizedMessage(errorCode) {\r\n return i18nErrors.getString(`ErrorNumber_${errorCode}`) || i18n.get('Import_FailedStatus');\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\n\r\nimport summaryDataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport summaryGridsActionMap from '@bingads-webui-static-legacy/summary/SummaryGridsActionMap';\r\n\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\n\r\nimport instrumentationSetting from '@bingads-webui-static-legacy/instrumentation/campaignSchemaAndSetting';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport * as importErrorLocalizer from '@bingads-webui-campaign-legacy/import-campaigns/shared/import-error-code-helper';\r\nimport * as safeJson from '@bingads-webui/safe-json';\r\n\r\nimport ImportFailureDetailsTableView from '@bingads-webui-campaign-legacy/import-campaigns/view/import-failure-details-table';\r\nimport errorHelper from '@bingads-webui-campaign-legacy/scheduled-import/view/import-task-engine-error-helper';\r\n\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport * as cookie from '@bingads-webui/cookie';\r\nimport { queryify } from '@bingads-webui/url-util';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\n\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nconst getGoogleCampaignsUrlTmpl =\r\n '/ImportSession/GoogleCampaigns(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 getImportPreviewUrlTmpl =\r\n '/ImportSession/ImportPreview(CustomerId=:customer_id,AccountId=:account_id)';\r\nconst getImportSummaryUrlTmpl =\r\n '/ImportSession/ImportSubmittedCounts(CustomerId=:customer_id,AccountId=:account_id)';\r\n\r\nfunction getGoogleCampaigns(sessionId, googleCustomerId) {\r\n let url = _.template(getGoogleCampaignsUrlTmpl)({ SessionId: sessionId });\r\n\r\n url = queryify(url, {\r\n googleCustomerId,\r\n });\r\n return odata.get(url)\r\n .then((data) => {\r\n return _.filter(data, (campaign) => {\r\n return campaign.Status !== 'Draft' && campaign.Status !== 'Delete';\r\n });\r\n });\r\n}\r\n\r\nfunction getGoogleAccounts(sessionId) {\r\n let url = _.template(getGoogleAccountsUrlTmpl)({ SessionId: sessionId });\r\n let result = { Accounts: null, Campaigns: null };\r\n\r\n return odata.get(url)\r\n .then((accounts) => {\r\n result.Accounts = accounts;\r\n\r\n if (accounts && accounts.length === 1) {\r\n return getGoogleCampaigns(sessionId, accounts[0].CustomerId);\r\n } else {\r\n return null;\r\n }\r\n })\r\n .then((campaigns) => {\r\n result.Campaigns = campaigns;\r\n return result;\r\n });\r\n}\r\n\r\nfunction scrollToTop(view) {\r\n if (view) {\r\n let body = $('body')[0];\r\n\r\n if (body) {\r\n let isScrollbar = body.scrollHeight > body.clientHeight;\r\n\r\n if (isScrollbar) {\r\n $(window).scrollTop(view.offset().top);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction goBack(data) {\r\n if (!data) {\r\n const url = $('#referrer').val();\r\n\r\n if (url && url.length > 0) {\r\n $.advertiser.redirect(url);\r\n } else {\r\n // Fallback for IE8, as it does not set the referrer property\r\n window.history.back();\r\n }\r\n }\r\n}\r\n\r\nfunction removeView(view) {\r\n if (view) {\r\n view.remove();\r\n view = null; //eslint-disable-line no-param-reassign\r\n }\r\n}\r\n\r\nfunction showODataError() {\r\n $.advertiser.showJsonErrors({\r\n 'Message': importErrorLocalizer.getLocalizedMessage(-1),\r\n });\r\n}\r\n\r\nfunction getCustomerId() {\r\n return $.advertiser.getUrlParameter('cid');\r\n}\r\n\r\nfunction logException(err) {\r\n let msg;\r\n\r\n if (err.message) {\r\n msg += err.message;\r\n }\r\n if (err.stack) {\r\n let 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 console.error(msg); // eslint-disable-line\r\n }\r\n\r\n msg = msg || JSON.stringify(err); // for response of XMLHttpRequest, \"{\"readyState\":0,\"responseText\":\"\",\"status\":0,\"statusText\":\"error\",\"headers\":{}}\"\r\n\r\n logger.logError('/campaign/importcampaign', msg);\r\n}\r\n\r\nfunction startPollingUntilImportStarted(taskItemExecutionId, completeCallBack = _.noop, showLoadingIcon = true, isMultiAccount = false) {\r\n const MAX_FAILED_ATTEMPTS = 5;\r\n let failedTimes = 0;\r\n let wrappedCompleteCallBack = completeCallBack;\r\n\r\n if (showLoadingIcon) {\r\n wrappedCompleteCallBack = _.wrap(completeCallBack, (func) => {\r\n func();\r\n $.advertiser.hideLoadingPanel();\r\n });\r\n }\r\n\r\n function checkStatus() {\r\n const url = `/Customers()/${isMultiAccount ? '' : 'Accounts()/'}TaskItemExecutions(${taskItemExecutionId})`;\r\n\r\n odata.get(url)\r\n .then((data) => {\r\n if (data.Status === 'PendingExecution') {\r\n setTimeout(checkStatus, 2000);\r\n } else {\r\n wrappedCompleteCallBack();\r\n }\r\n })\r\n .catch((err) => {\r\n failedTimes++;\r\n logException(err);\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n `StartPollingUntilImportStarted: polling, failedTimes: ${failedTimes}`);\r\n if (failedTimes === MAX_FAILED_ATTEMPTS) {\r\n wrappedCompleteCallBack();\r\n } else {\r\n setTimeout(checkStatus, 2000);\r\n }\r\n });\r\n }\r\n\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n 'StartPollingUntilImportStarted: start polling');\r\n if (showLoadingIcon) {\r\n $.advertiser.showLoadingPanel();\r\n }\r\n setTimeout(checkStatus, 2000);\r\n}\r\n\r\nconst editImportCookieName = 'EditImport';\r\nconst currentUserName = _.propertyOf(config.get('CurrentUser'))('Name');\r\n\r\nlet cookieHelperForEditImport = {\r\n createCookie(taskItemId, sessionId) {\r\n if (taskItemId && sessionId) {\r\n const cookieValue = {\r\n [currentUserName]: {\r\n [taskItemId]: sessionId,\r\n },\r\n };\r\n let expire = new Date();\r\n\r\n expire.setTime(expire.getTime() + (2 * 60 * 1000)); // 2 mins\r\n\r\n cookie.set(editImportCookieName, JSON.stringify(cookieValue), expire, '/');\r\n } else {\r\n logger.logError('/campaign/importcampaign', `unexpected value. taskItemId: ${taskItemId}, sessionId: ${sessionId}`);\r\n }\r\n },\r\n\r\n deleteCookie() {\r\n cookie.set(editImportCookieName, '', new Date(), '/');\r\n },\r\n\r\n getSessionId(taskItemId) {\r\n let editImportCookie = cookie.get(editImportCookieName);\r\n\r\n if (editImportCookie) {\r\n editImportCookie = safeJson.parseSync(editImportCookie);\r\n if (editImportCookie && editImportCookie[currentUserName]) {\r\n return _.propertyOf(editImportCookie[currentUserName])(taskItemId);\r\n } else {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO,\r\n '/campaign/importcampaign', `EditImport cookie doesn't have info for ${currentUserName}`);\r\n }\r\n } else {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO,\r\n '/campaign/importcampaign', 'Failed to fetch cookie EditImport');\r\n }\r\n\r\n return null;\r\n },\r\n};\r\n\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\n/* @this ImportState */\r\nfunction getSummaryCounts(successCallback) {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n `Start to get import summary counts for importId: ${this.importId}`);\r\n\r\n if (this.useOdata) {\r\n const url = queryify(getImportSummaryUrlTmpl, { importId: this.importId });\r\n\r\n odata.get(url)\r\n .then((counts) => {\r\n if (_.isFunction(successCallback)) {\r\n successCallback({\r\n Counts: counts,\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n window.App.views.alertCenter.showError(i18nErrors.getString('ErrorNumber_-1'));\r\n $.advertiser.hideLoadingPanel(); // hide the loading panel shown in polling\r\n });\r\n } else {\r\n const urls = this.options.urls;\r\n\r\n $.advertiser.ajaxPost({\r\n url: urls.getSummaryUrl,\r\n ignoreBeforeAjax: true,\r\n hideLoadingPanelOnSuccess: false,\r\n data: {\r\n importId: this.importId,\r\n rurl: urls.rurl,\r\n },\r\n traditional: true,\r\n onSuccess: successCallback,\r\n });\r\n }\r\n}\r\n\r\nclass ImportState {\r\n constructor(options) {\r\n this.options = options || {};\r\n this.currentAccountId = config.get('CurrentAccount').Id;\r\n this.currentUserId = config.get('CurrentUser').Id;\r\n this.customerId = getCustomerId();\r\n this.isUpdatedImportUIForSignUpEnabled = config.get('Permissions') && config.get('Permissions').IsUpdatedImportUIForSignUpEnabled;\r\n this.useOdata = false; // stop the work of migrating to Odata. This part is included in SPA work.\r\n }\r\n\r\n cancelImport(successCallback) {\r\n let callBack = _.isFunction(successCallback) ? successCallback : _.noop;\r\n\r\n if (this.importId && this.importId > 0) {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n `Cancel the import id:${this.importId}, aid:${this.currentAccountId}, cid:${this.customerId}`);\r\n\r\n return $.advertiser.ajaxPost({\r\n data: {\r\n importId: this.importId,\r\n },\r\n url: '/Campaign/ImportCampaign/CancelCurrentImport',\r\n onSuccess: callBack,\r\n });\r\n } else {\r\n callBack();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n pollStatus(successCallback, importFailCallback, scheduledImportOptions) {\r\n let timeOut;\r\n let failedAttempts = 0;\r\n let MAX_FAILED_ATTEMPTS = 5;\r\n let lastCallCompleted = true;\r\n let taskItemExecutionId = scheduledImportOptions && scheduledImportOptions.Id;\r\n\r\n const scheduleForm = this.scheduleForm;\r\n const importOptions = this.importOptions;\r\n\r\n let _activeView = this._activeView;\r\n let importId = this.importId;\r\n const { isFileImport, statuses, unblockTitle, unblockText, unblockLink, urls } = this.options;\r\n const aid = this.currentAccountId;\r\n const cid = this.customerId;\r\n const uid = this.currentUserId;\r\n\r\n function createStatusInfo(currentStatus) {\r\n if (currentStatus) {\r\n let statusList = {\r\n status: statuses,\r\n currentStatusOrder: currentStatus.Order,\r\n };\r\n let container = $('
');\r\n\r\n $('#importStatusSteps').tmpl(statusList).appendTo(container);\r\n return container.html();\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function getUnblockText(currentStatus) {\r\n const statusInfo = createStatusInfo(currentStatus);\r\n\r\n return `${unblockTitle}
${unblockText}

${unblockLink}${statusInfo}`;\r\n }\r\n\r\n function onUnblockSuccess(data) {\r\n if (data && data.RedirectUrl) {\r\n $.advertiser.redirect(data.RedirectUrl);\r\n }\r\n }\r\n\r\n function attachUnblockHandler() {\r\n $('#unblockImportLink').click(() => {\r\n // Stop polling for status\r\n clearInterval(timeOut);\r\n $.advertiser.ajaxPost({\r\n url: urls.unblockUrl,\r\n data: {\r\n importId,\r\n isFileImport,\r\n },\r\n traditional: true,\r\n onSuccess: onUnblockSuccess,\r\n });\r\n });\r\n\r\n $('#historyLink').click(() => {\r\n // Stop polling for status\r\n clearInterval(timeOut);\r\n $.advertiser.ajaxPost({\r\n url: urls.unblockUrl,\r\n data: {\r\n importId,\r\n isFileImport,\r\n },\r\n traditional: true,\r\n onSuccess: () => {\r\n window.location.href = `/Campaign/Campaigns?cid=${cid}&uid=${uid}&aid=${aid}#customer/${cid}/account/${aid}/importschedule`;\r\n },\r\n });\r\n });\r\n }\r\n\r\n function unattachUnblockHandler() {\r\n $('#unblockImportLink').unbind('click');\r\n $('#historyLink').unbind('click');\r\n }\r\n\r\n function shouldStopPolling(data) {\r\n //Do not continue to import summary when we get ImportStatus === ValidationCompleted (used for file import) for run now import via task engine\r\n //All other statuses are valid ends for a run now import, so continue to import summary/import fail.\r\n //Bug fix for 1449835: ImportStatus may return something incorrect when TaskItemExecutionStatus = PendingExecution. Do not halt polling in that scenario.\r\n let importComplete = data.Status === 'Complete' || data.Status === 'Failed' ||\r\n data.Status === 'Cancelled' || data.TaskItemExecutionStatus === 'Failed' || !!data.ErrorCode;\r\n\r\n if (isFileImport) {\r\n importComplete = importComplete || data.Status === 'ValidationCompleted';\r\n }\r\n return data.TaskItemExecutionStatus !== 'PendingExecution' && importComplete;\r\n }\r\n\r\n /* @this ImportState */\r\n function onStatusCheckSuccess(data) {\r\n if (data && !data.Errors) {\r\n if (!importId) {\r\n this.importId = importId = data.ImportId;\r\n }\r\n // Reset the counter for the failed attempts\r\n failedAttempts = 0;\r\n if (data.Status) {\r\n // Update the loading indicator with the current import status\r\n let status = statuses[data.Status];\r\n\r\n if (status && status.Text.length > 0) {\r\n $.advertiser.loadingPanel.updateText(getUnblockText(status));\r\n attachUnblockHandler();\r\n }\r\n\r\n if (shouldStopPolling(data)) {\r\n clearInterval(timeOut);\r\n unattachUnblockHandler();\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n `onStatusCheckSuccess: polling finished, import status: ${data.Status}, \\\r\ntask status: ${data.TaskItemExecutionStatus}, error code: ${data.ErrorCode}, import id: ${importId}`);\r\n if (data.Status === 'Failed' || data.TaskItemExecutionStatus === 'Failed' || !!data.ErrorCode) {\r\n // Add logging for failed import status #1224009\r\n let prefix = 'ImportCampaignFailed';\r\n\r\n if (isFileImport) {\r\n prefix = `${prefix} file import`;\r\n } else {\r\n prefix = `${prefix} Google import`;\r\n }\r\n\r\n logger.logMessage([constants.LOGCATEGORY.ERROR],\r\n constants.LOGLEVEL.INFO,\r\n '/campaign/importcampaign',\r\n `${prefix}, ImportId : ${data.ImportId}`);\r\n\r\n // For scheduled import run now, we need to set the data's message in order for the import fail callback\r\n // to trigger unblocking the screen and the error message toast.\r\n data.Message = importErrorLocalizer.getLocalizedMessage(data.ErrorCode || data.FailureReason);\r\n if (_.isFunction(importFailCallback)) {\r\n importFailCallback(data);\r\n } else {\r\n this.onImportFail(data);\r\n }\r\n } else if (data.Status === 'Cancelled') {\r\n // This code path should not be hit ideally but adding safety net, otherwise UI keeps on polling for status indefinitly\r\n goBack();\r\n } else if ($.isFunction(successCallback)) {\r\n if (!isFileImport && data && data.ImportId) {\r\n getSummaryCounts.call(this, successCallback);\r\n } else {\r\n successCallback(data);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function onStatusCheckFailure(data) {\r\n failedAttempts++;\r\n // Stop polling if there are five successive failures\r\n if (failedAttempts === MAX_FAILED_ATTEMPTS) {\r\n clearInterval(timeOut);\r\n $.advertiser.hideLoadingPanel();\r\n $.advertiser.showJsonErrors((data && data.Errors) || importErrorLocalizer.getLocalizedMessage(-1));\r\n\r\n let viewName = _activeView && _activeView.name();\r\n\r\n logger.logError('/campaign/importcampaign', `polling failed with Json errors, current view name: ${viewName}`);\r\n if (viewName === 'OptionsView') {\r\n importOptions.setDisable(true);\r\n } else if (viewName === 'SchedulingView') {\r\n scheduleForm.setErrorView();\r\n }\r\n }\r\n }\r\n\r\n function onStatusCheckComplete() {\r\n lastCallCompleted = true;\r\n }\r\n\r\n\r\n /* @this ImportState */\r\n function checkStatus() {\r\n if (lastCallCompleted) {\r\n lastCallCompleted = false;\r\n\r\n if (taskItemExecutionId) {\r\n const url = `/Customers()/Accounts()/TaskItemExecutions(${taskItemExecutionId})`;\r\n\r\n odata.get(url)\r\n .then((rawData = {}) => {\r\n if (!importId || importId === 0) {\r\n this.importId = importId = rawData.ImportId;\r\n }\r\n let obj = {\r\n Status: rawData.ImportStatus,\r\n ImportType: rawData.Type,\r\n ImportId: rawData.ImportId,\r\n TaskItemExecutionStatus: rawData.Status,\r\n ErrorCode: rawData.ErrorCode,\r\n ErrorDetail: rawData.ErrorDetail,\r\n };\r\n\r\n onStatusCheckSuccess.call(this, obj);\r\n }).catch((err) => {\r\n logException(err);\r\n onStatusCheckFailure();\r\n }).finally(() => {\r\n onStatusCheckComplete();\r\n });\r\n } else {\r\n const url = $.advertiser.setUrlParameter('importId', importId, urls.getStatusUrl);\r\n\r\n $.advertiser.ajaxGet({\r\n url,\r\n traditional: true,\r\n ignoreBeforeAjax: true,\r\n hideLoadingPanelOnSuccess: false,\r\n onSuccess: onStatusCheckSuccess.bind(this),\r\n onJsonError: onStatusCheckFailure,\r\n onAjaxComplete: onStatusCheckComplete,\r\n });\r\n }\r\n }\r\n }\r\n\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign', 'start polling');\r\n $.advertiser.showLoadingPanel();\r\n timeOut = setInterval(checkStatus.bind(this), 1000);\r\n }\r\n\r\n //This is temporarily not being used as we discovered a bug with polling import status in continue import scenarios\r\n //this way.\r\n fetchTaskItemExecutionIdAndPollStatus(successCallback) {\r\n let url = '/Customers()/Accounts()/TaskItemExecutions?%24top=1&%24count=true&%24expand=TaskItem&%24filter=TaskItem%2FType+eq+Enum.TaskItemType%27Import%27';\r\n\r\n odata.get(url).bind(this)\r\n .then((response) => {\r\n if (response && _.first(response.value) && _.first(response.value).Id) {\r\n this.pollStatus(successCallback, '', {\r\n Id: _.first(response.value).Id,\r\n });\r\n } else {\r\n showODataError();\r\n }\r\n }).catch((err) => {\r\n logException(err);\r\n showODataError();\r\n });\r\n }\r\n\r\n createImportTaskItem(data, successCallback, signupMode = false) {\r\n let url = '/Customers()/Accounts()/TaskItems?%24expand=TaskItemExecutions';\r\n\r\n $.advertiser.showLoadingPanel();\r\n odata.post(url, { data }).bind(this)\r\n .then((response) => {\r\n if (signupMode && this.isUpdatedImportUIForSignUpEnabled) {\r\n if (_.isFunction(successCallback)) {\r\n successCallback(data);\r\n }\r\n } else {\r\n this.pollStatus(successCallback, '', {\r\n Id: response.TaskItemExecutions[0].Id,\r\n });\r\n }\r\n }).catch((err) => {\r\n logger.endActivity(instrumentationSetting.ACTIVITYNAME.ExecuteImportPreviewTaskItem);\r\n logger.endActivity(instrumentationSetting.ACTIVITYNAME.ExecuteImportTaskItem);\r\n logException(err);\r\n $.advertiser.hideLoadingPanel();\r\n showODataError();\r\n });\r\n }\r\n\r\n expandView(importView) {\r\n this._activeView = importView;\r\n importView.expandView();\r\n }\r\n\r\n openActiveView() {\r\n if (!this._activeView) {\r\n return false;\r\n }\r\n\r\n let viewName = this._activeView.name();\r\n\r\n switch (viewName) {\r\n case 'AccountView':\r\n this.googleLogin.collapseView();\r\n break;\r\n case 'CampaignView':\r\n this.selectAccount.collapseView(true);\r\n break;\r\n case 'OptionsView':\r\n if (this.options.isFileImport) {\r\n this.fileUpload.collapseView();\r\n this.columnMatching.collapseView(true);\r\n } else {\r\n this.selectAccount.collapseView(true);\r\n this.selectCampaign.collapseView(true);\r\n }\r\n break;\r\n case 'ImportPreviewView':\r\n this.fileUpload.collapseView();\r\n this.columnMatching.collapseView(true);\r\n this.importOptions.collapseView(true);\r\n break;\r\n case 'ColumnMatchingView':\r\n this.fileUpload.collapseView();\r\n break;\r\n case 'SchedulingView':\r\n this.selectAccount.collapseView(true);\r\n this.selectCampaign.collapseView(true);\r\n this.importOptions.collapseView(true);\r\n break;\r\n default: break;\r\n }\r\n this.expandView(this._activeView);\r\n return true;\r\n }\r\n\r\n showErrorInGoogleLogin(msg) {\r\n if (msg) {\r\n $.advertiser.campaignImport.logoutGoogle();\r\n\r\n this.googleLogin.expandView();\r\n this.selectAccount.collapseView();\r\n this.selectCampaign.collapseView();\r\n this.importOptions.collapseView();\r\n if (this.scheduleForm) {\r\n this.scheduleForm.collapseView();\r\n }\r\n this.googleLogin.showAuthError(msg);\r\n } else {\r\n window.App.views.alertCenter.showError(i18nErrors.getString('ErrorNumber_-1'));\r\n }\r\n }\r\n\r\n onAuthError(errorCode) {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n `Receive an auth error: ${errorCode}`);\r\n const msg = errorHelper.getErrorDetailsMessage(errorCode);\r\n\r\n this.showErrorInGoogleLogin(msg);\r\n }\r\n\r\n onGoogleOdataError(err) {\r\n let code;\r\n let msg;\r\n const googleLoginAccount = this.googleLogin.getSummaryInfo().LoginInfo;\r\n\r\n if (err.body) {\r\n code = _.propertyOf(err.body[0])('Code');\r\n }\r\n\r\n switch (code) {\r\n case 'GoogleSyncNotAdWordsUser':\r\n msg = i18n.get('CampaignImport_GSyncNotAdsUser').replace('{0}', googleLoginAccount);\r\n break;\r\n case 'GoogleSyncInvalidCustomerId':\r\n msg = i18n.get('CampaignImport_GSyncInvalidCustomerId');\r\n break;\r\n case 'GoogleSyncOAuthTokenRevoked':\r\n msg = i18n.get('CampaignImport_GSyncOAuthTokenRevoked');\r\n break;\r\n case 'GoogleSyncWebExceptionTimeout':\r\n msg = i18n.get('CampaignImport_GSyncOperationTimeout');\r\n break;\r\n case code === 'GoogleSyncAccountNotSetUp':\r\n msg = i18n.get('CampaignImport_GSyncAccountNotSetUp').replace('{0}', googleLoginAccount);\r\n break;\r\n case 'GoogleSyncUserIsNotAuthorized':\r\n msg = i18n.get('CampaignImport_GSyncAuthorizationError');\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.showErrorInGoogleLogin(msg);\r\n }\r\n\r\n onImportFail(data) {\r\n if (!this._activeView) {\r\n if (this.options.isFileImport && this.importOptions) {\r\n this.expandView(this.importOptions);\r\n } else if (this.scheduleForm) {\r\n this.expandView(this.scheduleForm);\r\n }\r\n }\r\n const viewName = this._activeView && this._activeView.name();\r\n\r\n $('.grid-edit-icon').hide(); //hide edit icons.\r\n\r\n if (viewName === 'OptionsView') {\r\n this.importOptions.setDisable(true);\r\n }\r\n\r\n if (data && data.Message) {\r\n let errorCode = data.FailureReason || data.ErrorCode;\r\n let failureDetailsIncludeErrorCode = data.FailureDetails && safeJson.parseSync(data.FailureDetails);\r\n let errorDetail;\r\n\r\n if (failureDetailsIncludeErrorCode) {\r\n errorDetail = failureDetailsIncludeErrorCode.ErrorCode === errorCode ? failureDetailsIncludeErrorCode.ErrorDetail : '';\r\n } else {\r\n errorDetail = data.ErrorDetail;\r\n }\r\n\r\n if (errorCode === 17015) {\r\n let errorView = new ImportFailureDetailsTableView({\r\n message: data.Message,\r\n data: errorDetail,\r\n failureReason: errorCode,\r\n }).render();\r\n\r\n if (viewName === 'OptionsView') {\r\n // if it is options view, importCampaign.js will handle the render/remove of the error view.\r\n this.importFailureDetailsTableView = errorView;\r\n\r\n $('#ImportOptions .error-panel').html(this.importFailureDetailsTableView.el);\r\n $('#ImportOptionsSection #Cancel').focus();\r\n } else if (viewName === 'SchedulingView') {\r\n // scheduling view will handle the render/remove of the error view\r\n this.scheduleForm.setErrorView(errorView);\r\n $('#ScheduleFormView .btn-cancel').focus();\r\n } else {\r\n $.advertiser.showJsonErrors(data);\r\n }\r\n } else if (errorHelper.isGoogleAuthError(data.ErrorCode)) {\r\n this.onAuthError(data.ErrorCode);\r\n } else {\r\n $.advertiser.showJsonErrors(data);\r\n }\r\n\r\n $.advertiser.hideLoadingPanel();\r\n $.advertiser.loadingPanel.updateText($('#loadingText').val());\r\n }\r\n }\r\n\r\n showImportSummary() {\r\n /* @this ImportState */\r\n function onSuccess(data) {\r\n if (!data.Errors || this.useOdata) {\r\n if (this.options.isFileImport) {\r\n data.FileUpload = this.fileUpload.getSummaryInfo();\r\n data.ColumnMatching = this.columnMatching.getSummaryInfo();\r\n } else {\r\n data.Login = this.googleLogin.getSummaryInfo();\r\n data.Account = this.selectAccount.getSummaryInfo();\r\n data.Campaign = this.selectCampaign.getSummaryInfo();\r\n }\r\n\r\n data.ImportOptions = this.importOptions.getSummaryInfo();\r\n this.importSummary.bindData(data);\r\n $('#ImportEditViews').hide();\r\n this.expandView(this.importSummary);\r\n $.advertiser.hideLoadingPanel();\r\n }\r\n }\r\n\r\n if (this.options.uxMode === 'signup' && this.isUpdatedImportUIForSignUpEnabled) {\r\n $.advertiser.signup.selectAccountSuccess();\r\n $('#ImportSummarySection').show();\r\n $('#LoginDisclaimer').hide();\r\n $('#EditLoginSummary').hide();\r\n $.advertiser.hideLoadingPanel();\r\n this.selectCampaign.collapseView(true);\r\n this.importSummary.enableAddPayment({\r\n url: this.options.urls.rurl,\r\n customerId: this.customerId,\r\n accountId: this.currentAccountId,\r\n });\r\n\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n 'Sign up user in new sign up UI pilot has reached import summary message');\r\n } else {\r\n getSummaryCounts.call(this, onSuccess.bind(this));\r\n }\r\n }\r\n\r\n onImportOptionsSuccess(data) {\r\n /* @this ImportState */\r\n function onImportPreviewSuccess(result) {\r\n if ((result && !result.Errors) || this.useOdata) {\r\n this.importPreview.bindData(result);\r\n this.importOptions.collapseView(true);\r\n this.expandView(this.importPreview);\r\n } else {\r\n $.advertiser.ajaxError();\r\n }\r\n }\r\n\r\n const isFileImport = this.options.isFileImport;\r\n\r\n // Status in data has two options: ValidationComplete and Complete. Complete, we don't show preview.\r\n if (this.isContinueImport && data && data.Status === 'Complete') {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n 'Import is Complete in continue import. Start to show import summary.');\r\n this.showImportSummary();\r\n if (!isFileImport && this.options.uxMode !== 'signup') {\r\n $('#NewImportSummarySection').hide();\r\n $('#ImportSummarySection').show();\r\n }\r\n return;\r\n }\r\n\r\n if (isFileImport) {\r\n if (this.useOdata) {\r\n const url = queryify(getImportPreviewUrlTmpl, { importId: this.importId });\r\n\r\n odata.get(url) // no need ui blocker as polling already has.\r\n .then((result) => {\r\n onImportPreviewSuccess.call(this, { Data: result });\r\n })\r\n .catch(() => {\r\n window.App.views.alertCenter.showError(i18nErrors.getString('ErrorNumber_-1'));\r\n $.advertiser.hideLoadingPanel();\r\n });\r\n } else {\r\n $.advertiser.ajaxPost({\r\n url: this.options.urls.getImportPreviewUrl,\r\n data: {\r\n importId: this.importId,\r\n },\r\n traditional: true,\r\n ignoreBeforeAjax: true,\r\n hideLoadingPanelOnSuccess: false,\r\n onSuccess: onImportPreviewSuccess.bind(this),\r\n });\r\n }\r\n } else {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n 'Start to show import summary for google import.');\r\n this.showImportSummary();\r\n }\r\n }\r\n}\r\n\r\nfunction createStateInstance(options) {\r\n return new ImportState(options);\r\n}\r\n\r\nfunction invalidateGridCacheAfterCompleteImport() {\r\n // Need to invalidate cache after an import is completed.\r\n // We don't make a specific request or navigate to a new page when that happens\r\n // so do it manually here. Otherwise, the Campaign grid may not fetch\r\n // newly imported entities\r\n let contextsToUpdate = summaryGridsActionMap.getActionMapping('completeimport');\r\n\r\n if (contextsToUpdate && contextsToUpdate.dependentIds) {\r\n summaryDataContextManager.updateContext(contextsToUpdate.dependentIds);\r\n } else {\r\n throw new Error('Could not find completeimport action mapping');\r\n }\r\n}\r\n\r\nexport {\r\n getGoogleCampaigns,\r\n getGoogleAccounts,\r\n createStateInstance,\r\n scrollToTop,\r\n goBack,\r\n removeView,\r\n showODataError,\r\n getCustomerId,\r\n logException,\r\n startPollingUntilImportStarted,\r\n invalidateGridCacheAfterCompleteImport,\r\n cookieHelperForEditImport,\r\n};\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport UploadService from '@bingads-webui-component-legacy/azure-upload/index';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport setting from '@bingads-webui-static-legacy/instrumentation/campaignSchemaAndSetting';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/instrumentation';\r\nimport * as safeJSON from '@bingads-webui/safe-json';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nvar i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\nvar upload = (function (options) {\r\n options = options || ({});\r\n if (!options.file) {\r\n logger.logError('import-campaigns/azureUploader', 'Unexpected error: options.file is not set!');\r\n return Promise.reject();\r\n }\r\n var file = options.file;\r\n if (file.size === 0) {\r\n return Promise.reject({\r\n 'localizedError': i18n.get('FileImport_Upload_InvalidFile')\r\n });\r\n }\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'import-campaigns/azureUploader', 'Start file import using new approach, file name: ' + file.name + ', size: ' + file.size + 'bytes, type: ' + file.type);\r\n var allowedExtensions = ['.csv', '.tsv', '.xlsx', '.zip'];\r\n var uploadService = new UploadService({\r\n file: options.file,\r\n validateFunc: function (ext) {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'import-campaigns/azureUploader', 'File extension is ' + ext);\r\n return ext && _.contains(allowedExtensions, ext);\r\n }\r\n });\r\n return uploadService.start().then(function (data) {\r\n var urlWithoutSas = data && data.slice(0, data.indexOf('?'));\r\n var message = 'Uploaded successfully. File name: ' + options.file.name + ', size: ' + options.file.size + 'bytes, blobUrl: ' + urlWithoutSas;\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'import-campaigns/azureUploader', message);\r\n return Promise.resolve(data);\r\n }).catch(function (err) {\r\n err = err || ({});\r\n if (err.ValidatationFailed) {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'import-campaigns/azureUploader', 'The file extension is not supported.');\r\n return Promise.reject({\r\n 'localizedError': i18n.get('FileImport_Upload_InvalidFileExtension')\r\n });\r\n } else {\r\n var message;\r\n if (err.stack) {\r\n message = 'Message: ' + err.message + '.\\t Stack: ' + err.stack;\r\n } else {\r\n message = 'Error: ' + safeJSON.stringifySync(err);\r\n }\r\n logger.logError('import-campaigns/azureUploader', message);\r\n if (err.customizedCategory === 'NotSupported') {\r\n err = {\r\n 'localizedError': i18n.get('FileImport_Upload_UnSupportedBrowser')\r\n };\r\n } else if (err.customizedCategory === 'ReadUploadFailed') {\r\n err = {\r\n 'localizedError': i18n.get('FileImport_Upload_FailedMessage')\r\n };\r\n }\r\n return Promise.reject(err);\r\n }\r\n }).finally(function () {\r\n logger.endActivity();\r\n });\r\n}).asLoggingStart(setting.ACTIVITYNAME.ImportCampaignsClickToUploadFile, setting.SCENARIONAME.ImportCampaignsFileUpload);\r\nexport default {\r\n upload: upload\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport { FileImportPage } from '@bingads-webui-campaign/file-import-page';\r\n\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\n\r\nimport azureUploader from '../azureUploader';\r\nimport { createDeps, getBlacklist } from './shared-dependencies';\r\n\r\nfunction getImportTemplateUrl({ config }) {\r\n const Permissions = config.get('Permissions');\r\n let fileName = 'ImportTemplateWithAdExtensions.csv';\r\n\r\n if (Permissions.IsDSAMixedModeCampaignEnabled) {\r\n if (Permissions.IsEnhancedShoppingCampaignAllowed) {\r\n fileName = 'ImportTemplateWithAdExtensionsAndBSCAndAdGroupType.csv';\r\n } else {\r\n fileName = 'ImportTemplateWithAdExtensionsAndAdGroupType.csv';\r\n }\r\n } else if (Permissions.IsEnhancedShoppingCampaignAllowed) {\r\n fileName = 'ImportTemplateWithAdExtensionsAndBSC.csv';\r\n }\r\n const TemplatesPathUrl = config.get('TemplatesPathUrl');\r\n\r\n const importTemplateUrl = `${TemplatesPathUrl}Import/${fileName}`;\r\n\r\n return importTemplateUrl;\r\n}\r\n\r\nexport function initFileImportPage(settings) {\r\n const commonDeps = createDeps(settings);\r\n const deps = _.extend(commonDeps, {\r\n azureUploader: azureUploader.upload,\r\n i18nErrors,\r\n importTemplateUrl: getImportTemplateUrl(commonDeps),\r\n defaultLogActivity: commonDeps.logActivities.clickOnImportFromFile,\r\n });\r\n\r\n deps.logActivities = _.extend(deps.logActivities, {\r\n renderImportColumnMatching: deps.scenarios.fileimport.renderImportColumnMatching.create(),\r\n renderImportOptions: deps.scenarios.fileimport.renderImportOptions.create(),\r\n renderImportPreview: deps.scenarios.fileimport.renderImportPreview.create(),\r\n renderImportSummary: deps.scenarios.fileimport.renderImportSummary.create(),\r\n });\r\n\r\n return new FileImportPage({\r\n deps,\r\n el: settings.isForVNext ? undefined : '#ImportPage',\r\n options: {\r\n currentStep: 'file-upload-step',\r\n importId: settings.importId,\r\n subFieldsBlacklist: getBlacklist(),\r\n },\r\n });\r\n}\r\n","import Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport { GoogleImportPage } from '@bingads-webui-campaign/google-import-page';\r\nimport { MultiAccountGoogleImportPage } from '@bingads-webui-campaign/account-import-page';\r\n\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { UetTagSelectorView } from '@bingads-webui-campaign-legacy/audiences/components/uet-tag/index';\r\nimport '@bingads-webui-static-legacy/extension/promise/withUiBlock';\r\n\r\nimport { createDeps, getBlacklist } from './shared-dependencies';\r\nimport { cookieHelperForEditImport } from '../shared/import-helper';\r\n\r\nfunction initGapi(settings) {\r\n return Promise.resolve(createDeps(settings));\r\n}\r\n\r\nexport function initDeps(settings) {\r\n return initGapi(settings).then((commonDeps) => {\r\n if (settings.isMultiAccountImport) {\r\n // eslint-disable-next-line no-param-reassign\r\n edm.customerIdType.useAdvertiserCustomerId = false;\r\n }\r\n\r\n const deps = _.extend(commonDeps, {\r\n edm,\r\n google: window.google,\r\n jsData,\r\n defaultLogActivity: commonDeps.logActivities.clickOnImportFromGoogleAdWords,\r\n });\r\n\r\n return deps;\r\n });\r\n}\r\n\r\nexport function initGoogleImportDeps(settings) {\r\n\r\n return initGapi(settings).then((commonDeps) => {\r\n if (settings.isMultiAccountImport) {\r\n // eslint-disable-next-line no-param-reassign\r\n edm.customerIdType.useAdvertiserCustomerId = false;\r\n }\r\n\r\n const deps = _.extend(commonDeps, {\r\n edm,\r\n google: window.google,\r\n jsData,\r\n defaultLogActivity: commonDeps.logActivities.clickOnImportFromGoogleAdWords,\r\n cookieHelperForEditImport,\r\n UetTagSelectorView,\r\n subFieldsBlacklist: getBlacklist(),\r\n });\r\n\r\n deps.logScenario = deps.scenarios.googleimport;\r\n\r\n deps.logActivities = _.extend(deps.logActivities, {\r\n renderSelectAdWordsAccount: deps.scenarios.googleimport.renderSelectAdWordsAccount.create(),\r\n renderImportOptions: deps.scenarios.googleimport.renderImportOptions.create(),\r\n renderSelectAdWordsCampaigns: deps.scenarios.googleimport.renderSelectAdWordsCampaigns.create(),\r\n renderImportSummary: deps.scenarios.googleimport.renderImportSummary.create(),\r\n\r\n // signals, atomic signals are not defined here\r\n logInAccount: deps.scenarios.googleimport.logInAccount.create(),\r\n selectAccount: deps.scenarios.googleimport.selectAccount.create(),\r\n selectCampaign: deps.scenarios.googleimport.selectCampaign.create(),\r\n configureOptions: deps.scenarios.googleimport.configureOptions.create(),\r\n completeSchedule: deps.scenarios.googleimport.completeSchedule.create(),\r\n });\r\n\r\n return deps;\r\n });\r\n}\r\n\r\nexport function initGoogleImportPage(settings) {\r\n return initGoogleImportDeps(settings).then((deps) => {\r\n return settings.isMultiAccountImport ? new MultiAccountGoogleImportPage({\r\n deps,\r\n el: settings.isForVNext ? undefined : '#ImportPage',\r\n options: {\r\n currentStep: 'bing-account-title-step',\r\n importId: settings.importId,\r\n taskItemId: settings.taskItemId,\r\n subFieldsBlacklist: getBlacklist(),\r\n },\r\n }) : new GoogleImportPage({\r\n deps,\r\n el: settings.isForVNext ? undefined : '#ImportPage',\r\n options: {\r\n currentStep: 'google-login-step',\r\n importId: settings.importId,\r\n taskItemId: settings.taskItemId,\r\n subFieldsBlacklist: getBlacklist(),\r\n },\r\n });\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { FacebookImportPage } from '@bingads-webui-campaign/facebook-import-page';\r\nimport { loadFacebookSdk, getEnvironment } from '@bingads-webui-campaign/import-shared-repositories';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport timeZoneMapper from '@bingads-webui-component-legacy/timezonemapper/index';\r\nimport { UetTagSelectorView } from '@bingads-webui-campaign-legacy/audiences/components/uet-tag/index';\r\nimport '@bingads-webui-static-legacy/extension/promise/withUiBlock';\r\nimport { createDeps } from './shared-dependencies';\r\nimport { cookieHelperForEditImport } from '../shared/import-helper';\r\n\r\nexport function initFacebookImportDeps(settings) {\r\n // not fetch FB login SDK in local test env with test token used\r\n // this is to decrease the API call for FB to stablize automation tests\r\n const currentEnv = getEnvironment(document.domain);\r\n const loadSDK = currentEnv === 'LOCAL' && settings.token ? () => Promise.resolve() : loadFacebookSdk;\r\n\r\n return loadSDK().then((sdk) => {\r\n const commonDeps = createDeps(settings);\r\n let deps = _.extend(commonDeps, {\r\n edm,\r\n jsData,\r\n timeZoneMapper,\r\n defaultLogActivity: commonDeps.logActivities.clickOnImportFromFacebook,\r\n cookieHelperForEditImport,\r\n UetTagSelectorView,\r\n });\r\n\r\n // if sdk is not undefined then add it into deps\r\n if (!_.isUndefined(sdk)) {\r\n deps = _.extend(deps, {\r\n FB: sdk,\r\n });\r\n }\r\n\r\n deps.logScenario = deps.scenarios.facebookimport;\r\n\r\n deps.logActivities = _.extend(deps.logActivities, {\r\n renderSelectAdWordsAccount: deps.scenarios.facebookimport.renderSelectAdWordsAccount.create(),\r\n renderImportOptions: deps.scenarios.facebookimport.renderImportOptions.create(),\r\n renderSelectAdWordsCampaigns: deps.scenarios.facebookimport.renderSelectAdWordsCampaigns.create(),\r\n renderImportSummary: deps.scenarios.facebookimport.renderImportSummary.create(),\r\n\r\n // signals, atomic signals are not defined here\r\n logInAccount: deps.scenarios.facebookimport.logInAccount.create(),\r\n selectAccount: deps.scenarios.facebookimport.selectAccount.create(),\r\n selectCampaign: deps.scenarios.facebookimport.selectCampaign.create(),\r\n configureOptions: deps.scenarios.facebookimport.configureOptions.create(),\r\n completeSchedule: deps.scenarios.facebookimport.completeSchedule.create(),\r\n });\r\n return deps;\r\n });\r\n}\r\n\r\nexport function initFacebookImportPage(settings) {\r\n return initFacebookImportDeps(settings).then((deps) => {\r\n return new FacebookImportPage({\r\n deps,\r\n options: {\r\n currentStep: 'facebook-login-step',\r\n importId: settings.importId,\r\n taskItemId: settings.taskItemId,\r\n },\r\n });\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport timeZoneMapper from '@bingads-webui-component-legacy/timezonemapper/index';\r\nimport jsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { UetTagSelectorView } from '@bingads-webui-campaign-legacy/audiences/components/uet-tag/index';\r\nimport '@bingads-webui-static-legacy/extension/promise/withUiBlock';\r\n\r\nimport { createDeps } from './shared-dependencies';\r\nimport { cookieHelperForEditImport } from '../shared/import-helper';\r\n\r\n\r\nexport function initAmazonImportDeps(settings) {\r\n const commonDeps = createDeps(settings);\r\n const deps = _.extend(commonDeps, {\r\n edm,\r\n jsData,\r\n timeZoneMapper,\r\n defaultLogActivity: commonDeps.logActivities.clickOnImportFromAmazonSPA,\r\n cookieHelperForEditImport,\r\n UetTagSelectorView,\r\n });\r\n\r\n deps.logScenario = deps.scenarios.amazonimport;\r\n\r\n deps.logActivities = _.extend(deps.logActivities, {\r\n renderSelectAmazonAccount: deps.scenarios.amazonimport.renderSelectAmazonAccount.create(),\r\n renderImportOptions: deps.scenarios.amazonimport.renderImportOptions.create(),\r\n renderSelectAmazonCampaigns: deps.scenarios.amazonimport.renderSelectAmazonCampaigns.create(),\r\n renderImportSummary: deps.scenarios.amazonimport.renderImportSummary.create(),\r\n\r\n // signals, atomic signals are not defined here\r\n logInAccount: deps.scenarios.amazonimport.logInAccount.create(),\r\n selectAccount: deps.scenarios.amazonimport.selectAccount.create(),\r\n selectCampaign: deps.scenarios.amazonimport.selectCampaign.create(),\r\n configureOptions: deps.scenarios.amazonimport.configureOptions.create(),\r\n completeSchedule: deps.scenarios.amazonimport.completeSchedule.create(),\r\n });\r\n\r\n return deps;\r\n}\r\n","import _ from 'underscore';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport timeZoneMapper from '@bingads-webui-component-legacy/timezonemapper/index';\r\nimport jsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { UetTagSelectorView } from '@bingads-webui-campaign-legacy/audiences/components/uet-tag/index';\r\nimport '@bingads-webui-static-legacy/extension/promise/withUiBlock';\r\n\r\nimport { createDeps } from './shared-dependencies';\r\nimport { cookieHelperForEditImport } from '../shared/import-helper';\r\n\r\n\r\nexport function initPinterestImportDeps(settings) {\r\n const commonDeps = createDeps(settings);\r\n const deps = _.extend(commonDeps, {\r\n edm,\r\n jsData,\r\n timeZoneMapper,\r\n defaultLogActivity: commonDeps.logActivities.clickOnImportFromPinterestSPA,\r\n cookieHelperForEditImport,\r\n UetTagSelectorView,\r\n });\r\n\r\n deps.logScenario = deps.scenarios.pinterestimport;\r\n\r\n return deps;\r\n}\r\n","import config from '@bingads-webui-component-legacy/config/index';\r\nimport { getBlackList } from '@bingads-webui-campaign/import-components';\r\nexport function getBlacklist() {\r\n const permissions = config.get('Permissions') || {};\r\n\r\n return getBlackList(permissions);\r\n}\r\n","\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\n\r\nexport const statusOrderToBlockerTitleMap = [{\r\n Text: i18n.getString('Import_QueueStatus'),\r\n}, {\r\n Text: i18n.getString('Import_UploadStatus'),\r\n}, {\r\n Text: i18n.getString('Import_ValidationInProgressStatus'),\r\n}, {\r\n Text: i18n.getString('Import_ValidationCompletedStatus'),\r\n}, {\r\n Text: i18n.getString('Import_BulkFileGenerateInProgressStatus'),\r\n}, {\r\n Text: i18n.getString('Import_SubmitStatus'),\r\n}, {\r\n Text: i18n.getString('CampaignImport_Completed'),\r\n}];\r\n\r\nexport const statusKeyToOrderMap = {\r\n PendingExecution: 0,\r\n NotStarted: 1,\r\n UploadInProgress: 1,\r\n ValidationInProgress: 2,\r\n ValidationCompleted: 3,\r\n BulkFileGenerateInProgress: 4,\r\n SubmitInProgress: 5,\r\n Complete: 6,\r\n};\r\n","import _ from 'underscore';\r\n\r\nimport { generateCombinedSchemaObject } from '@bingads-webui-campaign/import-components';\r\nimport { formatCoupon } from '@bingads-webui-campaign/recommendation-core';\r\n\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { FilterStorageFactory } from '@bingads-webui-campaign/filter-storage';\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\nimport * as timeZoneEnumMapper from '@bingads-webui-component-legacy/timezonemapper/enumMapper';\r\nimport timeZoneMapper from '@bingads-webui-component-legacy/timezonemapper/index';\r\nimport doubleListBox from '@bingads-webui-static-legacy/shared/view/doubleListBox';\r\nimport accountSelectionLists from '@bingads-webui-static-legacy/bulk-edit/model/download/accountSelectionLists';\r\nimport dateUtil from '@bingads-webui-component-legacy/humanize/date';\r\n\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport { statusKeyToOrderMap, statusOrderToBlockerTitleMap } from './statuses';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\nconst i18nAmdLoader = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/import-campaigns');\r\n\r\n_.templateSettings = {\r\n interpolate: /\\{\\{(.+?)\\}\\}/g,\r\n};\r\n\r\nconst scenarios = {\r\n amazonimport: instrumentation.importFromAmazonSPA.create(),\r\n pinterestimport: instrumentation.importFromPinterestSPA.create(),\r\n facebookimport: instrumentation.importFromFacebookSPA.create(),\r\n fileimport: instrumentation.importFromFileSPA.create(),\r\n googleimport: instrumentation.importFromGoogleAdWordsSPA.create(),\r\n continueImport: instrumentation.continueImportSPA.create(),\r\n};\r\nconst activities = {\r\n clickOnImportFromFacebook: scenarios.facebookimport.clickOnImportFromFacebookSPA.create(),\r\n clickOnImportFromAmazonSPA: scenarios.amazonimport.clickOnImportFromAmazonSPA.create(),\r\n clickOnImportFromPinterestSPA: scenarios.pinterestimport.clickOnImportFromPinterestSPA.create(),\r\n clickOnImportFromFile: scenarios.fileimport.clickOnImportFromFileSPA.create(),\r\n clickOnImportFromGoogleAdWords: scenarios.googleimport.clickOnImportFromGoogleAdWordsSPA.create(),\r\n loadContinueImport: scenarios.continueImport.loadContinueImportSPA.create(),\r\n};\r\n\r\nexport function createDeps(settings) {\r\n const { coupon, currency, preferenceService } = settings;\r\n const deps = {\r\n check: (dependencyName) => {\r\n if (!dependencyName || _.has(deps, dependencyName)) {\r\n return true;\r\n } else {\r\n throw new Error(`Missing dependency: ${dependencyName}`);\r\n }\r\n },\r\n config,\r\n i18n,\r\n i18nAmdLoader,\r\n i18nErrors,\r\n odata,\r\n timeZoneEnumMapper,\r\n timeZoneMapper,\r\n statusKeyToOrderMap,\r\n statusOrderToBlockerTitleMap,\r\n schema: generateCombinedSchemaObject(),\r\n alertCenter: window.App.views.alertCenter,\r\n logActivities: activities,\r\n scenarios,\r\n doubleListBox,\r\n accountSelectionLists,\r\n dateUtil,\r\n };\r\n\r\n const campaignFilterFactory = new FilterStorageFactory({\r\n preferenceService,\r\n featureName: 'CampaignsGrid',\r\n });\r\n const adGroupFilterFactory = new FilterStorageFactory({\r\n preferenceService,\r\n featureName: 'AdgroupGrid',\r\n });\r\n const adFilterFactory = new FilterStorageFactory({\r\n preferenceService,\r\n featureName: 'AdGrid',\r\n });\r\n\r\n deps.campaignFilterStore = campaignFilterFactory.create('editableFilter', {\r\n filterEntityOptions: {\r\n entitySchema: { name: 'Campaign' },\r\n },\r\n });\r\n deps.adgroupFilterStore = adGroupFilterFactory.create('editableFilter', {\r\n filterEntityOptions: {\r\n entitySchema: { name: 'AdGroup' },\r\n },\r\n });\r\n deps.adFilterStore = adFilterFactory.create('editableFilter', {\r\n filterEntityOptions: {\r\n entitySchema: { name: 'Ad' },\r\n },\r\n });\r\n\r\n return _.extend(\r\n deps,\r\n settings,\r\n coupon && {\r\n coupon: formatCoupon({\r\n i18n: i18nAmdLoader,\r\n coupon,\r\n currency,\r\n }),\r\n }\r\n );\r\n}\r\n\r\nexport { getBlacklist } from './options-blacklist';\r\n","export default {\r\n SearchTermGridId: 'KeywordsSearchTerm',\r\n AuctionInsightsGridId: 'tdAuctionInsightsGrid',\r\n CampaignTabId: 'Campaign',\r\n AdGroupTabId: 'AdGroup',\r\n AdsTabId: 'Ads',\r\n KeywordsTabId: 'Keywords',\r\n ProductsGroupId: 'ProductGroups',\r\n FlattenProductsGroupId: 'FlattenAdGroupLevelProductGroups',\r\n AudienceTabId: 'AudiencesAssociation',\r\n AdExtensionsTabId: 'AdExtensions',\r\n ChangeHistoryTabId: 'ChangeHistory',\r\n DimensionsTabId: 'Bidimensions',\r\n AdGroupStatusFilterColumnName: 'AdGroupStatus',\r\n KeywordNameFilterColumnName: 'KeywordName',\r\n LocationsTabId: 'Locations',\r\n DevicesTabId: 'Devices',\r\n AdScheduleTabId: 'AdSchedule',\r\n DemographicsTabId: 'Demographics',\r\n AdDescriptionFilterColumnName: 'AdDescription',\r\n AdExtensionCampaignAssociationStatus: 'AdExtensionCampaignAssociationStatus',\r\n AdExtensionAssociationStatus: 'AdExtensionAssociationStatus',\r\n KeywordMatchTypeColumnName: 'MatchType',\r\n\r\n CampaignEntity: 'Campaign',\r\n AdGroupEntity: 'AdGroup',\r\n AdEntity: 'Ad',\r\n KeywordEntity: 'Keyword',\r\n SearchTermEntity: 'SearchTerm',\r\n AuctionInsightEntity: 'AuctionInsight',\r\n AudiencesAssociationEntity: 'AdGroupAudienceAssociation',\r\n\r\n AccountEdmEntity: 'Accounts',\r\n AdGroupCriterionEdmEntity: 'AdGroupCriterions',\r\n CampaignCriterionEdmEntity: 'CampaignCriterions',\r\n CampaignEdmEntity: 'Campaigns',\r\n DynamicSearchAdsEdmEntity: 'DynamidSearchAds',\r\n AdGroupEdmEntity: 'AdGroups',\r\n AdEdmEntity: 'Ads',\r\n KeywordEdmEntity: 'Keywords',\r\n ClickMetricId: 1,\r\n NoneMetricId: -1,\r\n};\r\n","import _ from 'underscore';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/inline-chart');\r\n\r\nconst { IsViewThroughConversionEnabled } = PageContext.Permissions;\r\n\r\nexport default class InlineChartDropDownOption {\r\n constructor({filterOptionId} = {filterOptionId: []}) {\r\n this.filterOptionId = filterOptionId;\r\n }\r\n\r\n fetch() {\r\n let result = {\r\n data: _.compact([{\r\n id: 1,\r\n value: i18n.get('ColumnName_Clicks'),\r\n }, {\r\n id: 0,\r\n value: i18n.get('ColumnName_CostPerConversion'),\r\n }, {\r\n id: 2,\r\n value: i18n.get('ColumnName_CPA'),\r\n }, {\r\n id: 3,\r\n value: i18n.get('ColumnName_Conversions'),\r\n }, {\r\n id: 4,\r\n value: i18n.get('ColumnName_CTR'),\r\n }, {\r\n id: 5,\r\n value: i18n.get('TrendAreaChart_AxisY'),\r\n }, {\r\n id: 6,\r\n value: i18n.get('ColumnName_Spend'),\r\n }, {\r\n id: 7,\r\n value: i18n.get('Chart_AvgPosition'),\r\n }, {\r\n id: 8,\r\n value: i18n.get('ColumnName_ConversionRate'),\r\n }, {\r\n id: 9,\r\n value: i18n.get('ColumnName_Revenue'),\r\n }, {\r\n id: 10,\r\n value: i18n.get('ColumnName_ROAS'),\r\n }, {\r\n id: 11,\r\n value: i18n.get('ColumnName_AllConversionCPA'),\r\n }, {\r\n id: 12,\r\n value: i18n.get('ColumnName_AllConversions'),\r\n }, {\r\n id: 13,\r\n value: i18n.get('ColumnName_AllConversionRate'),\r\n }, {\r\n id: 14,\r\n value: i18n.get('ColumnName_AllConversionAdvertiserReportedRevenue'),\r\n }, {\r\n id: 15,\r\n value: i18n.get('ColumnName_AllConversionRevenueOnAdSpend'),\r\n }, IsViewThroughConversionEnabled && {\r\n id: 16,\r\n value: i18n.get('ColumnName_ViewThroughConversions'),\r\n }]),\r\n };\r\n\r\n if (_.isArray(this.filterOptionId) && this.filterOptionId.length !== 0) {\r\n const resultData = result.data;\r\n\r\n result.data = _.filter(resultData, (item) => {\r\n return !_.contains(this.filterOptionId, item.id);\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/inline-chart');\r\n\r\nexport default class GranularityDropDownOption extends Backbone.Collection {\r\n constructor(option) {\r\n super();\r\n this.usingNewDatefilter = option && option.usingNewDatefilter;\r\n let dateObj = {};\r\n\r\n return state.getPromise('$daterange')\r\n .then((daterange) => {\r\n dateObj.dateRange = this.usingNewDatefilter ? daterange : window.App.views.Summary.dateFilter.ko_model.appliedRange();\r\n dateObj.comparedDateRange = this.usingNewDatefilter ? daterange.compared : window.App.views.Summary.dateFilter.ko_model.appliedComparedRange();\r\n\r\n let mainDateDiff = this._calculateDiff(dateObj.dateRange);\r\n let comparedDateDiff = this._calculateDiff(dateObj.comparedDateRange);\r\n let now = new Date();\r\n // we only support hourly data for a sliding 6 months window\r\n let hourlyStartDate = new Date(now.setMonth(now.getMonth() - 6));\r\n let hourlyOptionDisabled = mainDateDiff > 0 || (comparedDateDiff ? comparedDateDiff > 0 : false) ||\r\n !(dateObj.dateRange.start > hourlyStartDate) ||\r\n !(dateObj.comparedDateRange ? dateObj.comparedDateRange.start > hourlyStartDate : true);\r\n let dailyOptionDisabled = this._calculateDisabled(mainDateDiff, 1, 30) || (comparedDateDiff ? this._calculateDisabled(comparedDateDiff, 1, 30) : false);\r\n let weeklyOptionDisabled = this._calculateDisabled(mainDateDiff, 7, 210) || (comparedDateDiff ? this._calculateDisabled(comparedDateDiff, 7, 210) : false);\r\n let monthlyOptionDisabled = this._calculateDisabled(mainDateDiff, 31, 900) || (comparedDateDiff ? this._calculateDisabled(comparedDateDiff, 31, 900) : false);\r\n let quarterlyOptionDisabled = this._calculateDisabled(mainDateDiff, 90, Infinity) || (comparedDateDiff ? this._calculateDisabled(comparedDateDiff, 90, Infinity) : false);\r\n let allOptionsDisabled = hourlyOptionDisabled && dailyOptionDisabled &&\r\n weeklyOptionDisabled && monthlyOptionDisabled && quarterlyOptionDisabled;\r\n\r\n if (allOptionsDisabled) {\r\n let longerPeriod = comparedDateDiff > mainDateDiff ? comparedDateDiff : mainDateDiff;\r\n\r\n dailyOptionDisabled = this._calculateDisabled(longerPeriod, 1, 30);\r\n weeklyOptionDisabled = this._calculateDisabled(longerPeriod, 7, 210);\r\n monthlyOptionDisabled = this._calculateDisabled(longerPeriod, 31, 900);\r\n quarterlyOptionDisabled = this._calculateDisabled(longerPeriod, 90, Infinity);\r\n }\r\n\r\n return {\r\n data: [{\r\n id: 0,\r\n value: i18n.get('InlineChart_Granularity_Hourly'),\r\n enumValue: 'Hour',\r\n disabled: hourlyOptionDisabled,\r\n }, {\r\n id: 1,\r\n value: i18n.get('InlineChart_Granularity_Daily'),\r\n enumValue: 'Day',\r\n disabled: dailyOptionDisabled,\r\n }, {\r\n id: 2,\r\n value: i18n.get('InlineChart_Granularity_Weekly'),\r\n enumValue: 'Week',\r\n disabled: weeklyOptionDisabled,\r\n }, {\r\n id: 3,\r\n value: i18n.get('InlineChart_Granularity_Monthly'),\r\n enumValue: 'Month',\r\n disabled: monthlyOptionDisabled,\r\n }, {\r\n id: 4,\r\n value: i18n.get('InlineChart_Granularity_Quarterly'),\r\n disabled: quarterlyOptionDisabled,\r\n enumValue: 'Quarter',\r\n }],\r\n };\r\n });\r\n }\r\n\r\n _calculateDiff (dateRange) {\r\n if (dateRange) {\r\n let startDate = new Date(dateRange.start);\r\n let endDate = new Date(dateRange.end);\r\n let timeDiff = Math.abs(endDate.getTime() - startDate.getTime());\r\n\r\n return Math.round(timeDiff / (1000 * 3600 * 24));\r\n }\r\n return null;\r\n }\r\n\r\n _calculateDisabled (dateDiff, min, max) {\r\n return dateDiff < min || dateDiff > max;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport DelegateAdapter from '@bingads-webui-component-legacy/js-data-delegate/adapter';\r\n\r\nclass ChartDelegateAdapter extends DelegateAdapter {\r\n // All of the methods shown here must return a promise\r\n\r\n // \"definition\" is a resource definition that would\r\n // be returned by DS#defineResource\r\n\r\n // \"options\" would be the options argument that\r\n // was passed into the DS method that is calling\r\n // the adapter method\r\n\r\n convertToDateObj(dateString) {\r\n let dateParsedArray = dateString.split('-');\r\n let year = dateParsedArray[0];\r\n let month = dateParsedArray[1] - 1;\r\n let day = dateParsedArray[2];\r\n\r\n return new Date(year, month, day, 0, 0, 0);\r\n }\r\n\r\n numberOfDataPoints(request) {\r\n let sd = this.convertToDateObj(request.startDate);\r\n let ed = this.convertToDateObj(request.endDate);\r\n\r\n switch (request.granularity) {\r\n case 'Day':\r\n return Math.round((ed - sd) / (1000 * 60 * 60 * 24)) + 1; // make sure it's 30 data points when the date range is 1-30 (30 minus 1 is 29 so have to plus 1)\r\n case 'Week':\r\n return Math.round((ed - sd) / (1000 * 60 * 60 * 24 * 7));\r\n case 'Month':\r\n return Math.round((ed - sd) / (1000 * 60 * 60 * 24 * 30));\r\n case 'Quarter':\r\n return Math.round((ed - sd) / (1000 * 60 * 60 * 24 * 90)) + 1; // make sure it's counting 1 extra quarter e.g 2013-12-20 -> 2016-12-20 is 13 quarters, not 12\r\n default:\r\n return Math.round((ed - sd) / (1000 * 60 * 60));\r\n }\r\n }\r\n\r\n prependZero(numb) {\r\n return numb < 10 ? `0${numb}` : numb;\r\n }\r\n\r\n generateFormattedDateString(date) {\r\n return `${date.getYear() + 1900}-${this.prependZero(date.getMonth() + 1)}-${this.prependZero(date.getDate())}T${this.prependZero(date.getHours())}:${this.prependZero(date.getMinutes())}:${this.prependZero(date.getSeconds())}-08:00`;\r\n }\r\n\r\n generateMockData(request) {\r\n let rtnData = [];\r\n let chartDropdownOptions = [\r\n 'AverageCPC',\r\n 'Clicks',\r\n 'CPA',\r\n 'Conversions',\r\n 'CTR',\r\n 'Impressions',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'ConversionRate',\r\n 'AdvertiserReportedRevenue',\r\n 'RevenueOnAdSpend',\r\n 'AllConversionCPA',\r\n 'AllConversions',\r\n 'AllConversionRate',\r\n 'AllConversionAdvertiserReportedRevenue',\r\n 'AllConversionRevenueOnAdSpend',\r\n 'ViewThroughConversions',\r\n 'ViewThroughConversionsRevenue',\r\n 'ViewThroughConversionsCPA',\r\n 'ViewThroughConversionsReturnOnAdSpend',\r\n 'ViewThroughConversionsRate',\r\n ];\r\n\r\n _.each(chartDropdownOptions, (metricOption) => {\r\n let obj = {\r\n MetricName: metricOption,\r\n PrimaryDataPoints: [],\r\n ComparisonDataPoints: [],\r\n };\r\n let dateObj = this.convertToDateObj(request.startDate);\r\n\r\n this._fillData(request, obj.PrimaryDataPoints, dateObj);\r\n // fill in pop data\r\n if (request.compareStartDate) {\r\n this._fillData(request, obj.ComparisonDataPoints, dateObj);\r\n }\r\n\r\n rtnData.push(obj);\r\n });\r\n\r\n return rtnData;\r\n }\r\n\r\n _fillData(request, dataPoints, dateObj) {\r\n if (request.granularity === 'Hour') {\r\n let day = dateObj.getDate();\r\n\r\n for (let i = 0; i < 24; i++) {\r\n // make sure if it's hourly, it doesn't exceed to the next day\r\n // this happens when there's the daylight savings time change\r\n if (dateObj.getDate() !== day) {\r\n break;\r\n }\r\n\r\n dataPoints.push({\r\n 'DateTime': this.generateFormattedDateString(dateObj),\r\n 'Value': Math.floor(Math.random() * 100),\r\n });\r\n dateObj.addHour(1);\r\n }\r\n } else if (request.granularity === 'Day') {\r\n let numbOfdataPoints = this.numberOfDataPoints(request);\r\n\r\n for (let i = 0; i < numbOfdataPoints; i++) {\r\n dataPoints.push({\r\n 'DateTime': this.generateFormattedDateString(dateObj),\r\n 'Value': Math.floor(Math.random() * 100),\r\n });\r\n dateObj.addDay(1);\r\n }\r\n } else if (request.granularity === 'Week') {\r\n let numbOfdataPoints = this.numberOfDataPoints(request);\r\n\r\n for (let i = 0; i < numbOfdataPoints; i++) {\r\n dataPoints.push({\r\n 'DateTime': this.generateFormattedDateString(dateObj),\r\n 'Value': Math.floor(Math.random() * 100),\r\n });\r\n dateObj.addDay(7);\r\n }\r\n } else if (request.granularity === 'Month') {\r\n let numbOfdataPoints = this.numberOfDataPoints(request);\r\n\r\n for (let i = 0; i < numbOfdataPoints; i++) {\r\n dataPoints.push({\r\n 'DateTime': this.generateFormattedDateString(dateObj),\r\n 'Value': Math.floor(Math.random() * 100),\r\n });\r\n dateObj.addMonth(1);\r\n }\r\n } else if (request.granularity === 'Quarter') {\r\n let numbOfdataPoints = this.numberOfDataPoints(request);\r\n\r\n for (let i = 0; i < numbOfdataPoints; i++) {\r\n dataPoints.push({\r\n 'DateTime': this.generateFormattedDateString(dateObj),\r\n 'Value': Math.floor(Math.random() * 100),\r\n });\r\n // use setMonth and getMonth because the addMonth function doesn't work\r\n dateObj.setMonth(dateObj.getMonth() + 3);\r\n }\r\n }\r\n }\r\n\r\n findAll(request) {\r\n // Must resolve the promise with the found items\r\n return new Promise((resolve /*, reject */) => {\r\n resolve(this.generateMockData(request));\r\n });\r\n }\r\n\r\n}\r\n\r\nexport default ChartDelegateAdapter;\r\n","import _ from 'underscore';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/inline-chart');\r\n\r\nexport function toODataMetricName(metric) {\r\n let metricMapping = {\r\n 0: 'AverageCPC',\r\n 1: 'Clicks',\r\n 2: 'CPA',\r\n 3: 'Conversions',\r\n 4: 'CTR',\r\n 5: 'Impressions',\r\n 6: 'Spend',\r\n 7: 'AveragePosition',\r\n 8: 'ConversionRate',\r\n 9: 'AdvertiserReportedRevenue',\r\n 10: 'RevenueOnAdSpend',\r\n 11: 'AllConversionCPA',\r\n 12: 'AllConversions',\r\n 13: 'AllConversionRate',\r\n 14: 'AllConversionAdvertiserReportedRevenue',\r\n 15: 'AllConversionRevenueOnAdSpend',\r\n 16: 'ViewThroughConversions',\r\n };\r\n\r\n let allMetrics = metric.toString().split(',');\r\n let ret = _.map(allMetrics, (m) => {\r\n return metricMapping[m] ? metricMapping[m] : m;\r\n });\r\n\r\n return `${ret}`;\r\n}\r\n\r\nexport function getMetricLocalizedNameForOdata(metric) {\r\n let convertedString = '';\r\n\r\n switch (metric) {\r\n case 0:\r\n convertedString = i18n.get('ColumnName_CostPerConversion');\r\n break;\r\n case 1:\r\n convertedString = i18n.get('ColumnName_Clicks');\r\n break;\r\n case 2:\r\n convertedString = i18n.get('ColumnName_CPA');\r\n break;\r\n case 3:\r\n convertedString = i18n.get('ColumnName_Conversions');\r\n break;\r\n case 4:\r\n convertedString = i18n.get('ColumnName_CTR');\r\n break;\r\n case 5:\r\n convertedString = i18n.get('TrendAreaChart_AxisY');\r\n break;\r\n case 6:\r\n convertedString = i18n.get('ColumnName_Spend');\r\n break;\r\n case 7:\r\n convertedString = i18n.get('Chart_AvgPosition');\r\n break;\r\n case 8:\r\n convertedString = i18n.get('ColumnName_ConversionRate');\r\n break;\r\n case 9:\r\n convertedString = i18n.get('ColumnName_Revenue');\r\n break;\r\n case 10:\r\n convertedString = i18n.get('ColumnName_ROAS');\r\n break;\r\n case 11:\r\n convertedString = i18n.get('ColumnName_AllConversionCPA');\r\n break;\r\n case 12:\r\n convertedString = i18n.get('ColumnName_AllConversions');\r\n break;\r\n case 13:\r\n convertedString = i18n.get('ColumnName_AllConversionRate');\r\n break;\r\n case 14:\r\n convertedString = i18n.get('ColumnName_AllConversionAdvertiserReportedRevenue');\r\n break;\r\n case 15:\r\n convertedString = i18n.get('ColumnName_AllConversionRevenueOnAdSpend');\r\n break;\r\n case 16:\r\n convertedString = i18n.get('ColumnName_ViewThroughConversions');\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return convertedString;\r\n}\r\n\r\nexport function toUIMetricId(metricName) {\r\n let chartNameTable = {};\r\n\r\n chartNameTable.AverageCPC = 0;\r\n chartNameTable.Clicks = 1;\r\n chartNameTable.CPA = 2;\r\n chartNameTable.Conversions = 3;\r\n chartNameTable.ClickThruRate = 4;\r\n chartNameTable.Impressions = 5;\r\n chartNameTable.Spent = 6;\r\n chartNameTable.AveragePosition = 7;\r\n chartNameTable.ConversionRate = 8;\r\n chartNameTable.AdvertiserReportedRevenue = 9;\r\n chartNameTable.RevenueOnAdSpend = 10;\r\n chartNameTable.AllConversionCPA = 11;\r\n chartNameTable.AllConversions = 12;\r\n chartNameTable.AllConversionRate = 13;\r\n chartNameTable.AllConversionAdvertiserReportedRevenue = 14;\r\n chartNameTable.AllConversionRevenueOnAdSpend = 15;\r\n chartNameTable.ViewThroughConversions = 16;\r\n\r\n return chartNameTable[metricName];\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport ChartDelegateAdapter from '@bingads-webui-campaign-legacy/inline-chart/chartdelegateadapter';\r\nimport odataFilterConverter from '@bingads-webui-static-legacy/odata-filter-converter';\r\nimport * as chartNameConverter from '@bingads-webui-campaign-legacy/inline-chart/chartnameconverter';\r\nimport { getParameter } from '@bingads-webui/url-util';\r\nimport * as cookie from '@bingads-webui/cookie';\r\nimport Constants from '@bingads-webui-campaign-legacy/inline-chart/constants';\r\nimport instrument from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport instrumentConsts from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\n\r\nconst { IsCustomerHierarchyEnabled } = (PageContext && PageContext.Permissions) || {};\r\n\r\nclass DataProvider {\r\n constructor() {\r\n this.p$jsdata = undefined;\r\n }\r\n\r\n fetchData(context, metric) {\r\n let request = this._generateRequest(context, metric);\r\n\r\n //TODO[tedlee]: remove this approach of using query string parameter before GA\r\n let useInlineChartMockData = !!(getParameter('useInlineChartMockData', window.location.href) === 'true') ||\r\n cookie.get('useInlineChartMockData') === 'true';\r\n\r\n if (useInlineChartMockData) {\r\n this.p$jsdata = this._fetchDataUsingMockDBAdapter(request);\r\n } else {\r\n this.p$jsdata = this._fetchDataUsingOdataAdapter(request, context.refreshGridData);\r\n }\r\n return this.p$jsdata;\r\n }\r\n\r\n /**\r\n * @param {Object} context - an object passed from viewmodel layer that contains date filter info, grid filter info, level and tab Id, and time grain.\r\n * @param {String} metric - an optional parameter that specifies which metric to request.\r\n * @return {Object} an request object for adapter layer to construct actual odata/mockdata request.\r\n */\r\n _generateRequest(context, metric) {\r\n let request = {};\r\n let transformedMetric = `'${chartNameConverter.toODataMetricName(metric)}'`;\r\n\r\n _.extend(request, {\r\n parentLevels: context.parentLevels, //[{name: 'Campaigns', id: 21223784}, { name: 'AdGroups', id: 654321}],\r\n edmEntity: context.currentEntity ? this._getEntityCollectionName(context.currentEntity) : Constants.CampaignEdmEntity,\r\n entity: context.currentEntity ? context.currentEntity : Constants.CampaignEntity,\r\n startDate: context && context.period ? this._formatDateString(context.period().start) : null,\r\n endDate: context && context.period ? this._formatDateString(context.period().end) : null,\r\n compareStartDate: context && context.period && context.period().compared ? this._formatDateString(context.period().compared.start) : null,\r\n compareEndDate: context && context.period && context.period().compared ? this._formatDateString(context.period().compared.end) : null,\r\n granularity: context.granularity && context.granularity() ? context.granularity() : 'Day', //TODO: Day\r\n metrics: transformedMetric,\r\n filters: context.filter(),\r\n movingAverage: context.isMovingAverageOn(),\r\n });\r\n return request;\r\n }\r\n\r\n _fetchDataUsingOdataAdapter(request, forceRefresh) {\r\n let filter = null;\r\n const filtersTypeString = typeof request.filters === 'string';\r\n\r\n // filter out the filters that has empty values, and log them\r\n let filtersToUse = filtersTypeString || !request.filters ?\r\n request.filters :\r\n _.select(request.filters, (filterExpression) => {\r\n const valueValid = !_.isEmpty(filterExpression.Values) && !_.contains(filterExpression.Values, ''); // no empty values\r\n\r\n if (!valueValid && instrument.logError) {\r\n instrument.logError('inlineChartV2/filterForFetch',\r\n `there are invalid values, requested filters are ${JSON.stringify(filterExpression)}`);\r\n }\r\n\r\n return valueValid; // filter out the empty values here\r\n });\r\n\r\n if (filtersToUse) {\r\n if (filtersTypeString) {\r\n filter = decodeURIComponent(filtersToUse);\r\n } else {\r\n filter = decodeURIComponent(odataFilterConverter.convertToURLParam(filtersToUse, request.entity));\r\n }\r\n\r\n // Note: temporary log added for analyzing filter expression mismatching issue.\r\n if (instrument.logMessage) {\r\n let filterRequested;\r\n\r\n if (filtersTypeString) {\r\n filterRequested = `{ \"type\" : \"string\", \"value\" : \"${filtersToUse}\" }`;\r\n } else {\r\n filterRequested = `{ \"type\" : \"object\", \"value\" : \"${JSON.stringify(filtersToUse[0])}\" }`;\r\n }\r\n\r\n instrument.logMessage([instrumentConsts.LOGCATEGORY.TRACE],\r\n instrumentConsts.LOGLEVEL.INFO,\r\n 'inlineChartV2/filterForFetch',\r\n `{ \"entity\" : \"${request.entity}\", \"filter\" : \"${filter}\", \"request\" : \"${filterRequested}\" }`);\r\n }\r\n } else {\r\n filter = {};\r\n }\r\n\r\n if (!_.isEmpty(filter)) {\r\n //filter generated from odataFilterConvert starts with '$filter='. Remove this substring.\r\n filter = filter.slice(8);\r\n }\r\n\r\n return jsdata.PerformanceTimeSeries.findAll({\r\n where: filter,\r\n entitySet: this._getScope(request).toJSON(),\r\n }, {\r\n headers: {\r\n 'x-ms-refreshcampaigncache': !!forceRefresh,\r\n },\r\n // bypass cache, as inline chart needs data aligned with grid, we need always update to date here\r\n // use bypassCache instead of cacheResponse as elsewhere (performance card) may cache the response\r\n bypassCache: true,\r\n }).then((result) => {\r\n if (!_.isEmpty(result.errors)) {\r\n return Promise.reject(result);\r\n }\r\n return this._prepareData(request, result);\r\n });\r\n }\r\n\r\n _fetchDataUsingMockDBAdapter(request) {\r\n let mockDataAdapter = new ChartDelegateAdapter('mockdb');\r\n\r\n return mockDataAdapter.findAll(request).then((result) => {\r\n return this._prepareData(request, result);\r\n });\r\n }\r\n\r\n _formatDateString(dateStr) {\r\n let leftPadding = (s) => {\r\n return s.length === 1 ? `0${s}` : s;\r\n };\r\n const dt = new Date(Date.parse(dateStr));\r\n const year = `${dt.getFullYear()}`;\r\n const month = `${dt.getMonth() + 1}`;\r\n const day = `${dt.getDate()}`;\r\n\r\n return `${year}-${leftPadding(month)}-${leftPadding(day)}`;\r\n }\r\n\r\n _prepareData(request, results) {\r\n let transformChartPoints = (series) => {\r\n let ret = {};\r\n\r\n let convertData = (point, isPrimaryData) => {\r\n if (isPrimaryData) {\r\n ret.PrimaryData = ret.PrimaryData || [];\r\n } else {\r\n ret.ComparisonData = ret.ComparisonData || [];\r\n }\r\n\r\n // Because the data-time is based on campaign time zone by default,\r\n // ideally, the format of data-time string in OData response should not\r\n // contain time zone part. In case it does, we should remove it.\r\n // e.g. \"2016-11-11T00:00:00-08:00\" -> \"2016-11-11T00:00:00\"\r\n point.DateTime = point.DateTime.substring(0, 19);\r\n\r\n // Then since chart is based on UTC, we need shift the date-time string to UTC,\r\n // otherwise, it will be treated as client's local time zone which is wrong.\r\n // e.g. \"2016-11-11T00:00:00\" -> \"2016-11-11T00:00:00Z\"\r\n point.DateTime = point.DateTime + 'Z'; // eslint-disable-line\r\n\r\n let dateTime = new Date(point.DateTime);\r\n\r\n if (isPrimaryData) {\r\n ret.PrimaryData.push([dateTime.getTime(), point.Value]);\r\n } else {\r\n ret.ComparisonData.push([dateTime.getTime(), point.Value]);\r\n }\r\n };\r\n\r\n _.each(series.PrimaryDataPoints, (point) => {\r\n convertData(point, true);\r\n });\r\n\r\n _.each(series.ComparisonDataPoints, (point) => {\r\n convertData(point, false);\r\n });\r\n\r\n return ret;\r\n };\r\n\r\n\r\n let ret = {};\r\n\r\n _.each(results, (series) => {\r\n let chartName = chartNameConverter.toUIMetricId(series.MetricName);\r\n\r\n ret[chartName] = {};\r\n ret[chartName] = transformChartPoints(series);\r\n });\r\n\r\n return ret;\r\n }\r\n\r\n _getScope(request) {\r\n let navigation = null;\r\n\r\n navigation = this._getNavigation(request.edmEntity);\r\n\r\n _.each(request.parentLevels, (nav) => {\r\n if (nav && _.isString(nav.id)) {\r\n nav.id = parseInt(nav.id);\r\n }\r\n navigation = navigation[nav.name].$withKey(nav.id);\r\n });\r\n\r\n if (request && request.edmEntity) {\r\n navigation = navigation[request.edmEntity];\r\n }\r\n\r\n let entitySet = navigation[IsCustomerHierarchyEnabled && request.edmEntity === 'Accounts' ? 'Default.HierarchicalPerformanceTimeSeries' : 'Default.PerformanceTimeSeries'].$call({\r\n granularity: `Enum.Granularity'${request.granularity}'`,\r\n startDate: request.startDate,\r\n endDate: request.endDate,\r\n comparisonStartDate: request.compareStartDate ? request.compareStartDate : null,\r\n comparisonEndDate: request.compareEndDate ? request.compareEndDate : null,\r\n metrics: request.metrics,\r\n // [tedled]: put movingAverage as false for now. will make it reflect the checkbox's selection\r\n movingAverage: request.movingAverage,\r\n });\r\n\r\n return entitySet;\r\n }\r\n\r\n _getNavigation(entityType) {\r\n switch (entityType) {\r\n case Constants.AccountEdmEntity:\r\n return edmCampaign.currentCustomer;\r\n case Constants.DynamicSearchAdsEdmEntity:\r\n // placeholder for DSA. This has to be changed.\r\n return edmCampaign.currentCustomer;\r\n case Constants.CampaignEdmEntity:\r\n return edmCampaign.currentAccount;\r\n default:\r\n return edmCampaign.currentAccount;\r\n }\r\n }\r\n\r\n _getEntityCollectionName(name) {\r\n let nameMapping = {\r\n Campaign: Constants.CampaignEdmEntity,\r\n Keyword: Constants.KeywordEdmEntity,\r\n Account: Constants.AccountEdmEntity,\r\n NegativeKeyword: Constants.KeywordEdmEntity, // Negative keywords also show keyword performance trend\r\n NegativeKeywordList: Constants.KeywordEdmEntity, // Negative keyword lists also show keyword performance trend\r\n AdGroup: Constants.AdGroupEdmEntity,\r\n Ad: Constants.AdEdmEntity,\r\n CampaignCriterion: Constants.CampaignCriterionEdmEntity,\r\n AdGroupCriterion: Constants.AdGroupCriterionEdmEntity,\r\n };\r\n\r\n if (nameMapping[name]) {\r\n return nameMapping[name];\r\n }\r\n return name;\r\n }\r\n}\r\n\r\nexport\r\ndefault DataProvider;\r\n","import state from '@bingads-webui-component-legacy/state/index';\r\n\r\nexport default {\r\n\r\n // returns current level\r\n // it is one of the three values: \"Account\", \"Campaign\" and \"AdGroup\"\r\n get currentLevel() {\r\n if (state.get('adgroup_id')) {\r\n return 'AdGroup';\r\n } else if (state.get('campaign_id')) {\r\n return 'Campaign';\r\n } else {\r\n return 'Account';\r\n }\r\n },\r\n};\r\n","import _ from 'underscore';\r\nimport BPromise from 'bluebird';\r\nimport { PreferencesSubadapter } from '@bingads-webui-component-legacy/bingads-grid/service/preference-subadapter';\r\nimport { store, adapter } from '@bingads-webui-component-legacy/bingads-grid/service/grid-preferences';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\n\r\nexport let InlineChart = store.definitions.InlineChart;\r\n\r\n// To avoid 'Duplicated subadapter registration' error in new UI when we inject feature bundles\r\nif (_.isUndefined(InlineChart)) {\r\n InlineChart = store.defineResource('InlineChart');\r\n adapter.registerSubadapter('InlineChart', new PreferencesSubadapter({\r\n Resource: InlineChart,\r\n prefix({\r\n where: {\r\n project = 'CampaignUI',\r\n } = {},\r\n } = {}) {\r\n if (_.some([project], _.negate(_.isString))) {\r\n throw new Error('Invalid where clause');\r\n }\r\n\r\n return `WebApp.${project}.InlineChart`;\r\n },\r\n\r\n serialize(attrs) {\r\n const { id, project, inlineChartData } = attrs;\r\n\r\n if (_.some(project, _.negate(_.isString))) {\r\n throw new Error('Invalid attributes');\r\n }\r\n\r\n return {\r\n Id: id,\r\n Name: `WebApp.${project}.InlineChart`,\r\n Data: inlineChartData,\r\n Type: 'object',\r\n Version: 1,\r\n };\r\n },\r\n\r\n deserialize(data) {\r\n const match = data.Name.match(/^WebApp\\.(\\w+)\\.InlineChart/);\r\n\r\n if (!match) {\r\n throw new Error('Invalid preference name');\r\n }\r\n\r\n const project = match.slice(1);\r\n const inlineChartData = data.Data;\r\n const id = data.Id;\r\n\r\n return { id, project, inlineChartData };\r\n },\r\n }));\r\n}\r\n\r\n/*\r\n * This funciont gets inline chart specific preference data, and returns\r\n * promise with resolved data. If key is injected as parameter, it will\r\n * return the speicific key value inside the inline chart preference\r\n * Otherwise, it returns all key/value pairs saved for inline charts.\r\n * eg) getInlineChartInfo('CampaignUI', 'Campaign-showChart')\r\n * => promise with true/false result\r\n * getInlineChartInfo('CampaignUI')\r\n * => promise with set of key/values stored in preference\r\n*/\r\nexport function getInlineChartInfo(key = null, project = 'CampaignUI') {\r\n return InlineChart.findAll({\r\n where: { project },\r\n }).then((record) => {\r\n if (record.length === 0) {\r\n InlineChart.create({ inlineChartData: {}, project }, {\r\n path: config.get('odata.path'),\r\n });\r\n }\r\n const keyRecord = key ? record[0].inlineChartData[key] : record[0];\r\n\r\n return BPromise.resolve(record.length ? keyRecord : _.noop());\r\n });\r\n}\r\n\r\n/*\r\n * This funciont sets inline chart specific preference data, and returns\r\n * promise with resolved data. If provided key in passed parameter exists in preference\r\n * already, then it will update the value. Otherwise it will create a new key/value pair.\r\n * eg) setInlineChartInfo('{\r\n * 'Campaign-showChart': true,\r\n * }', 'CampaignUI')\r\n * => a 'Campaign-showChart' key is created/updated on preference service\r\n*/\r\nexport function setInlineChartInfo(item, project = 'CampaignUI') {\r\n return getInlineChartInfo().then((record) => {\r\n const inlineChartInfo = _.result(record, 'inlineChartData');\r\n const newinlineChartInfo = inlineChartInfo ? _.extend({}, inlineChartInfo, item) : item;\r\n\r\n if (record && !_.isEmpty(newinlineChartInfo)) {\r\n return InlineChart.update(record.id, { inlineChartData: newinlineChartInfo });\r\n } else {\r\n return InlineChart.create({ inlineChartData: newinlineChartInfo, project }, {\r\n path: config.get('odata.path'),\r\n });\r\n }\r\n });\r\n}\r\n","/* eslint-disable quotes */\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport InlineChartDropDownOption from '@bingads-webui-campaign-legacy/inline-chart/model/inlinechartdropdownoption';\r\nimport GranularityDropDownOption from '@bingads-webui-campaign-legacy/inline-chart/model/granularityDropdownOption';\r\nimport DataProvider from '@bingads-webui-campaign-legacy/inline-chart/chartdataprovider';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport CampaignState from '@bingads-webui-campaign-legacy/campaign-state/index';\r\nimport * as chartNameConverter from '@bingads-webui-campaign-legacy/inline-chart/chartnameconverter';\r\nimport { getInlineChartInfo, setInlineChartInfo } from '@bingads-webui-campaign-legacy/inline-chart/inline-chart-preferences';\r\nimport instrument from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport instrumentSetting from '@bingads-webui-static-legacy/instrumentation/campaignSchemaAndSetting';\r\nimport instrumentConsts from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/instrumentation'; // eslint-disable-line\r\nimport $ from 'jquery';\r\nimport BluebirdPromise from 'bluebird';\r\nimport Highcharts from 'highcharts';\r\nimport Constants from '@bingads-webui-campaign-legacy/inline-chart/constants';\r\nimport * as allColors from '@bingads-webui-campaign-legacy/performance-graph/graph/color';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/inline-chart');\r\n\r\nexport default class InlineChartViewModel {\r\n constructor(options) {\r\n // chart context\r\n this.learnMoreLabel = i18n.get('LearnMoreLinkText');\r\n this.isUsingVnextGrid = options.isUsingVnextGrid;\r\n this.entityType = options.entityType;\r\n this.tab = options.tab;\r\n this.currentEntity = ko.observable(null);\r\n this.filter = ko.observable(null);\r\n this.period = ko.observable(null);\r\n this.granularity = ko.observable(null);\r\n this.isMovingAverageChecked = ko.observable(false);\r\n this.primaryMetricId = ko.observable(0);\r\n this.secondaryMetricId = ko.observable(0);\r\n this.parentLevels = ko.observable([]);\r\n this.project = 'CampaignUI';\r\n\r\n this.chartDataProvider = new DataProvider();\r\n this.showChart = ko.observable(true);\r\n this.chartTitle = ko.observable();\r\n this.isDataAvailable = ko.observable(false);\r\n this.noDataText = ko.observable(i18n.get('BI_Chart_NoData'));\r\n this.isComparisonDataMissing = ko.observable(false);\r\n this.comparisonDataMissingText = ko.observable(i18n.get('BI_Chart_Missing_ComparisonData'));\r\n this.showMovingAverageText = ko.observable(i18n.get('BI_Chart_Show_MovingAverage'));\r\n this.newFeatureLabel = ko.observable(i18n.get('New_Feature_Label'));\r\n this.isChartLoading = ko.observable(true);\r\n this.isGranularityShowing = ko.observable(true);\r\n this.xAxisStartValue = ko.observable(null);\r\n this.xAxisEndValue = ko.observable(null);\r\n this.comparedXAxisStartValue = ko.observable(null);\r\n this.comparedXAxisEndValue = ko.observable(null);\r\n this.hideToolbar = ko.observable(false);\r\n this.hideToggleIcon = ko.observable(false);\r\n this.isDataFetchingDone = false;\r\n\r\n if (this.isUsingVnextGrid) {\r\n state.getPromise('$daterange').then((result) => {\r\n this.period(result);\r\n });\r\n }\r\n\r\n this.isPopOn = ko.computed(() => {\r\n return this.period() ? this.period().compared != null : false;\r\n }, this);\r\n\r\n this.isMovingAverageVisible = ko.computed(() => {\r\n if (this.granularity() !== 'Day') {\r\n return false;\r\n }\r\n\r\n let startDate;\r\n let endDate;\r\n let daysBetween;\r\n let oneDayMillisecondFrame = 1000 * 60 * 60 * 24;\r\n\r\n if (this.isUsingVnextGrid) {\r\n startDate = this.period().start;\r\n endDate = this.period().end;\r\n } else if (window.App && window.App.views && window.App.views.Summary && window.App.views.Summary.dateFilter && window.App.views.Summary.dateFilter.ko_model && this.granularity() === 'Day') {\r\n startDate = window.App.views.Summary.dateFilter.ko_model.appliedRange().start;\r\n endDate = window.App.views.Summary.dateFilter.ko_model.appliedRange().end;\r\n }\r\n\r\n if (startDate && endDate) {\r\n daysBetween = Math.round((endDate - startDate) / oneDayMillisecondFrame);\r\n\r\n if (this.isPopOn() || daysBetween > 31) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }, this);\r\n\r\n this.isMovingAverageOn = ko.computed(() => {\r\n if (this.isMovingAverageVisible()) {\r\n return this.isMovingAverageChecked();\r\n } else {\r\n return false;\r\n }\r\n }, this);\r\n\r\n this.granularityOptions = ko.observable(null);\r\n this.granularityId = 0;\r\n\r\n this.primaryMetricOptions = ko.observable(null);\r\n this.secondaryMetricOptions = ko.observable(null);\r\n\r\n // cached chart data that's used to render chart for different metric\r\n this.cachedChartData = {};\r\n\r\n this._getChartDataWhenSubscribed(this.granularity);\r\n this._getChartDataWhenSubscribed(this.isMovingAverageOn);\r\n\r\n this.startDate = ko.computed(() => {\r\n return this.period() ? this.period().start : null;\r\n }, this);\r\n\r\n this.endDate = ko.computed(() => {\r\n return this.period() ? this.period().end : null;\r\n }, this);\r\n\r\n this.comparedStartDate = ko.computed(() => {\r\n return this.period() && this.period().compared ? this.period().compared.start : null;\r\n }, this);\r\n\r\n this.comparedEndDate = ko.computed(() => {\r\n return this.period() && this.period().compared ? this.period().compared.end : null;\r\n }, this);\r\n\r\n this.primaryData = ko.observableArray();\r\n this.secondaryData = ko.observableArray();\r\n this.selectedPrimaryCategory = ko.observable();\r\n this.selectedSecondaryCategory = ko.observable();\r\n\r\n this.maxDate = new Date(9999, 12, 31);\r\n\r\n this.needUpdateChart = false;\r\n this.chartUpdatingPromise = null;\r\n\r\n if (window.App && window.App.on) {\r\n window.App.on('log-validation-method', (method) => {\r\n instrument.logMessage(\r\n [instrumentConsts.LOGCATEGORY.TRACE],\r\n instrumentConsts.LOGLEVEL.INFO,\r\n 'inlineChartV2/validateFilter',\r\n `method called: ${method}`);\r\n });\r\n }\r\n\r\n this.queueAsync = BluebirdPromise.resolve();\r\n\r\n _.bindAll(this,\r\n 'onPrimaryMetricSelected',\r\n 'onSecondaryMetricSelected',\r\n 'onShowChartButtonClick',\r\n 'onMovingAverageClick',\r\n 'onGranularitySelected',\r\n 'reloadChartData',\r\n 'formatDate',\r\n 'calculatePercentageDiff',\r\n '_getQuarter',\r\n '_getChartDataWhenSubscribed',\r\n '_updateChart',\r\n '_getChartData',\r\n '_refreshAllCharts',\r\n '_setCategoryAndData',\r\n '_metricSelectedHandler',\r\n '_alignDataForComparison',\r\n '_getChartTitle',\r\n '_getChartDataForMetric',\r\n '_logChartData',\r\n '_validateFilter',\r\n '_logCurrentFilterInfo'\r\n );\r\n }\r\n\r\n onPrimaryMetricSelected(event) {\r\n const prefObj = {};\r\n\r\n this.primaryMetricId(event.id);\r\n this._metricSelectedHandler(this.primaryData, this.selectedPrimaryCategory, allColors.primary, event);\r\n\r\n prefObj[`${PageContext.CurrentTabId}-primaryMetric`] = this.selectedPrimaryCategory().id;\r\n if (setInlineChartInfo) {\r\n setInlineChartInfo(prefObj, this.project);\r\n }\r\n }\r\n\r\n onSecondaryMetricSelected(event) {\r\n const prefObj = {};\r\n\r\n this.secondaryMetricId(event.id);\r\n this._metricSelectedHandler(this.secondaryData, this.selectedSecondaryCategory, allColors.secondary, event);\r\n\r\n prefObj[`${PageContext.CurrentTabId}-secondaryMetric`] = this.selectedSecondaryCategory().id;\r\n if (setInlineChartInfo) {\r\n setInlineChartInfo(prefObj, this.project);\r\n }\r\n }\r\n\r\n onShowChartButtonClick() {\r\n const prefObj = {};\r\n\r\n this.showChart(!this.showChart());\r\n prefObj[`${PageContext.CurrentTabId}-showChart`] = this.showChart();\r\n\r\n if (setInlineChartInfo) {\r\n setInlineChartInfo(prefObj, this.project).then(() => {\r\n if (this.showChart()) {\r\n this.reloadChartData(this.filter(), this.currentEntity());\r\n }\r\n });\r\n }\r\n }\r\n\r\n onMovingAverageClick() {\r\n const prefObj = {};\r\n\r\n this.isMovingAverageChecked(!this.isMovingAverageChecked());\r\n prefObj[`${PageContext.CurrentTabId}-showMovingAverage`] = this.isMovingAverageChecked();\r\n\r\n if (setInlineChartInfo) {\r\n setInlineChartInfo(prefObj, this.project);\r\n }\r\n return true;\r\n }\r\n\r\n onGranularitySelected(event) {\r\n if (this.showChart()) {\r\n const prefObj = {};\r\n\r\n this.granularity(event.enumValue);\r\n this.granularityId = event.id;\r\n\r\n prefObj[`${PageContext.CurrentTabId}-granularity`] = event.enumValue;\r\n if (setInlineChartInfo) {\r\n setInlineChartInfo(prefObj, this.project);\r\n }\r\n }\r\n }\r\n\r\n // DateRange, Pop and Filter and other grid changes will trigger reloadChartData\r\n reloadChartData(filter, entity, forceRefresh) {\r\n this.parentLevels(this._getParentLevels());\r\n\r\n let filterObj = filter;\r\n let entityObj = entity || this.entityType || this._getDefaultEntityBaseOnParentLevels(this.parentLevels());\r\n\r\n this.forceRefresh = forceRefresh;\r\n\r\n // if entity is search term or auction insight, set entity to be empty for default and set filter to empty\r\n if (entityObj === Constants.SearchTermEntity || entityObj === Constants.AuctionInsightEntity || entityObj === Constants.AudiencesAssociationEntity) {\r\n entityObj = '';\r\n filterObj = {};\r\n }\r\n\r\n let filterUrlParam;\r\n\r\n // At line 291, filterUrlParam as a string may be set to this.filter\r\n // onShowChartButtonClick would get the string by calling this.filter() and pass it in the current function\r\n if (_.isString(filter)) {\r\n filterUrlParam = filter;\r\n } else {\r\n const filterString = filterObj && filterObj.odataV4 ? filterObj.odataV4({ ignoreCase: false }) : '';\r\n\r\n filterUrlParam = encodeURI(filterString ? `$filter=${filterString}` : '');\r\n }\r\n\r\n // When there is no filter applied, PerformanceTimeSerieis request for all entities(Adsgroup, Ads, Kewords)\r\n // needs to query on Campaign entity inorder to improve MT performance.\r\n // the PerformanceData fetched is for Account or Campaign based on the parent level.\r\n // We skip this optimization for AccountSummary and demographics tab as they need to use the\r\n // speicified entity.\r\n if (this.isUsingVnextGrid &&\r\n !filterUrlParam &&\r\n entityObj !== 'Accounts' &&\r\n entityObj !== 'CampaignCriterions' &&\r\n entityObj !== 'AdGroupCriterions') {\r\n // No filters set default base entity.\r\n entityObj = this._getDefaultEntityBaseOnParentLevels(this.parentLevels());\r\n }\r\n\r\n this.currentEntity(entityObj);\r\n\r\n // Handles filter and showChart\r\n this.filter(this.isUsingVnextGrid ? filterUrlParam : this._validateFilter(filterObj));\r\n if (getInlineChartInfo) {\r\n getInlineChartInfo().then((result) => {\r\n const prefObj = result ? result.inlineChartData : {};\r\n\r\n this.showChart(_.isUndefined(prefObj[`${PageContext.CurrentTabId}-showChart`]) ?\r\n true :\r\n prefObj[`${PageContext.CurrentTabId}-showChart`]);\r\n if (this.showChart()) {\r\n let func = () => {\r\n let flagUpdateChart = true;\r\n let p$granularityOptions = new GranularityDropDownOption({\r\n usingNewDatefilter: this.isUsingVnextGrid,\r\n });\r\n let dateRange = state.getPromise('$daterange');\r\n\r\n BluebirdPromise.all([p$granularityOptions, dateRange]).then((promiseResults) => {\r\n const granularityOptions = promiseResults[0];\r\n const dateRangeRes = promiseResults[1];\r\n\r\n this.chartTitle(this._getChartTitle());\r\n\r\n if (this.isUsingVnextGrid) {\r\n this.period(dateRangeRes);\r\n } else {\r\n // handle date range (including Pop)\r\n const dateRangeObj = {};\r\n\r\n if (window.App && window.App.views && window.App.views.Summary && window.App.views.Summary.dateFilter && window.App.views.Summary.dateFilter.ko_model) {\r\n dateRangeObj.start = window.App.views.Summary.dateFilter.ko_model.appliedRange().start;\r\n dateRangeObj.end = window.App.views.Summary.dateFilter.ko_model.appliedRange().end;\r\n dateRangeObj.compared = window.App.views.Summary.dateFilter.ko_model.appliedComparedRange();\r\n }\r\n this.period(dateRangeObj);\r\n }\r\n\r\n // Reload Pop\r\n // Recover original value from preference service\r\n const showMovingAverageInPref = prefObj[`${PageContext.CurrentTabId}-showMovingAverage`] || true;\r\n\r\n this.isMovingAverageChecked(showMovingAverageInPref !== null && showMovingAverageInPref !== '' ? showMovingAverageInPref === 'true' : false);\r\n\r\n // Reload granularity\r\n let granularityInPref = prefObj[`${PageContext.CurrentTabId}-granularity`] || 'Day';\r\n let granularityItemArray = $.grep(granularityOptions.data, (e) => {\r\n return !e.disabled && e.enumValue === granularityInPref;\r\n });\r\n let granularityItem = granularityItemArray[0];\r\n\r\n //Get available granularity based on date range\r\n let firstEnabledGranularity = 0;\r\n\r\n for (firstEnabledGranularity = 0; firstEnabledGranularity < granularityOptions.data.length; firstEnabledGranularity++) {\r\n if (granularityOptions.data[firstEnabledGranularity] && !granularityOptions.data[firstEnabledGranularity].disabled) {\r\n break;\r\n }\r\n }\r\n\r\n // if there's no supported granularity, show an error message\r\n if (firstEnabledGranularity >= granularityOptions.data.length) {\r\n this.isChartLoading(false);\r\n this.isDataAvailable(false);\r\n this.isGranularityShowing(false);\r\n\r\n flagUpdateChart = false;\r\n } else {\r\n this.granularity(granularityItem ? granularityItem.enumValue : granularityOptions.data[firstEnabledGranularity].enumValue);\r\n this.granularityId = granularityItem ? granularityItem.id : granularityOptions.data[firstEnabledGranularity].id;\r\n this.granularityOptions(granularityOptions.data);\r\n this.isGranularityShowing(true);\r\n\r\n flagUpdateChart = true;\r\n }\r\n\r\n // Reload metrics\r\n const metricOptions = new InlineChartDropDownOption().fetch();\r\n const primaryMetric = prefObj[`${PageContext.CurrentTabId}-primaryMetric`];\r\n const primaryIdInPref = _.isUndefined(primaryMetric) || _.isNull(primaryMetric) || !_.find(metricOptions.data, {id: primaryMetric}) ?\r\n Constants.ClickMetricId : primaryMetric;\r\n const secondaryMetric = prefObj[`${PageContext.CurrentTabId}-secondaryMetric`];\r\n const secondaryIdInPref = _.isUndefined(secondaryMetric) || _.isNull(secondaryMetric) || !_.find(metricOptions.data, {id: secondaryMetric}) ?\r\n Constants.NoneMetricId : secondaryMetric;\r\n\r\n if (!(_.isUndefined(primaryIdInPref) || _.isNull(primaryIdInPref))) {\r\n this.primaryMetricId(parseInt(primaryIdInPref));\r\n }\r\n if (!(_.isUndefined(secondaryIdInPref) || _.isNull(secondaryIdInPref))) {\r\n this.secondaryMetricId(parseInt(secondaryIdInPref));\r\n }\r\n\r\n const isAgeOrGenderTab = this.tab === \"Age\" || this.tab === \"Gender\";\r\n\r\n this.primaryMetricOptions(new InlineChartDropDownOption({filterOptionId: isAgeOrGenderTab ? [2] : []}).fetch());\r\n\r\n let secondaryMetricOptions = new InlineChartDropDownOption({filterOptionId: isAgeOrGenderTab ? [2] : []}).fetch();\r\n\r\n secondaryMetricOptions.data.unshift({ id: -1, value: i18n.get('InlineChart_Metric_None') });\r\n this.secondaryMetricOptions(secondaryMetricOptions);\r\n\r\n this.isMovingAverageChecked(!!prefObj[`${PageContext.CurrentTabId}-showMovingAverage`]);\r\n\r\n // Update chart\r\n if (flagUpdateChart) {\r\n return this._updateChart();\r\n } else {\r\n return null;\r\n }\r\n });\r\n };\r\n\r\n if (instrument.asLoggingStart) {\r\n return instrument.asLoggingStart(func, instrumentSetting.ACTIVITYNAME.InlineChartV2ReloadChart, instrumentSetting.SCENARIONAME.InlineChartV2ReloadChart)();\r\n } else {\r\n return func();\r\n }\r\n } else {\r\n return null;\r\n }\r\n });\r\n }\r\n }\r\n\r\n formatDate(timestamp) {\r\n if (timestamp) {\r\n switch (this.granularity()) {\r\n case 'Hour':\r\n return Highcharts.dateFormat('%H:%M %m/%d/%Y', timestamp);\r\n case 'Day':\r\n return Highcharts.dateFormat('%a %m/%d/%Y', timestamp);\r\n case 'Week':\r\n return `Week of ${Highcharts.dateFormat('%b %d, %Y', timestamp)}`;\r\n case 'Month':\r\n return Highcharts.dateFormat('%b %Y', timestamp);\r\n case 'Quarter':\r\n return `Q${this._getQuarter(new Date(timestamp))} ${Highcharts.dateFormat('%Y', timestamp)}`;\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n calculatePercentageDiff(selectedCategory) {\r\n if (selectedCategory && selectedCategory.id === -1) {\r\n return '';\r\n }\r\n let metricData = this.cachedChartData[selectedCategory.id];\r\n let primarySum = 0;\r\n let comparisonSum = 0;\r\n let primaryAvg = 0;\r\n let comparisonAvg = 0;\r\n let value = 0;\r\n\r\n _.each(metricData.PrimaryData, (dataObj) => {\r\n if (dataObj) {\r\n primarySum = primarySum + dataObj[1];\r\n }\r\n });\r\n _.each(metricData.ComparisonData, (dataObj) => {\r\n if (dataObj) {\r\n comparisonSum = comparisonSum + dataObj[1];\r\n }\r\n });\r\n\r\n if (metricData.PrimaryData && metricData.ComparisonData) {\r\n primaryAvg = primarySum / metricData.PrimaryData.length;\r\n comparisonAvg = comparisonSum / metricData.ComparisonData.length;\r\n let avgDiff = Math.round((primaryAvg - comparisonAvg) * 100 / comparisonAvg);\r\n\r\n value = _.isNaN(avgDiff) ? 'infinity' : avgDiff;\r\n }\r\n\r\n return value === 'infinity' || value >= 0 ? ` (+${value}%)` : ` (${value}%)`;\r\n }\r\n\r\n _getQuarter(dateObj) {\r\n if (dateObj) {\r\n switch (dateObj.getUTCMonth()) {\r\n case 0:\r\n case 1:\r\n case 2:\r\n return 1;\r\n case 3:\r\n case 4:\r\n case 5:\r\n return 2;\r\n case 6:\r\n case 7:\r\n case 8:\r\n return 3;\r\n case 9:\r\n case 10:\r\n case 11:\r\n return 4;\r\n default:\r\n return -1;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n _getChartDataWhenSubscribed(event) {\r\n event.subscribe(() => {\r\n let func = () => {\r\n return this._updateChart();\r\n };\r\n\r\n if (instrument.asLoggingStart) {\r\n return instrument.asLoggingStart(func, instrumentSetting.ACTIVITYNAME.InlineChartV2ReloadChart, instrumentSetting.SCENARIONAME.InlineChartV2ReloadChart)();\r\n } else {\r\n return func();\r\n }\r\n });\r\n }\r\n\r\n // validate the filter\r\n // right now only verify the case when filter value is undefined\r\n _validateFilter(filter) {\r\n if (!filter) {\r\n return filter;\r\n }\r\n\r\n _.each(filter, (obj) => {\r\n // validate the value. exclude the 'undefined' value\r\n if (obj.Values && obj.Values.length > 0) {\r\n let values = [];\r\n\r\n _.each(obj.Values, (value) => {\r\n if (value !== undefined) {\r\n values.push(value);\r\n } else if (instrument.logMessage) {\r\n instrument.logMessage(\r\n [instrumentConsts.LOGCATEGORY.TRACE],\r\n instrumentConsts.LOGLEVEL.INFO,\r\n 'inlineChartV2/validateFilter',\r\n `undefined filter value detected. filter: ${JSON.stringify(filter)}`);\r\n }\r\n });\r\n\r\n obj.Values = values;\r\n }\r\n\r\n // exclude this filter since there's no filter value\r\n if (obj.Values && obj.Values.length === 0) {\r\n return;\r\n }\r\n });\r\n\r\n return filter;\r\n }\r\n\r\n _updateChart() {\r\n this.isDataFetchingDone = false;\r\n\r\n // Clean old data before fetching the new data\r\n this.primaryData([]);\r\n this.secondaryData([]);\r\n\r\n this.needUpdateChart = true;\r\n\r\n this.chartUpdatingPromise = this.queueAsync.then(() => {\r\n if (!this.needUpdateChart) {\r\n return;\r\n }\r\n\r\n this.needUpdateChart = false;\r\n\r\n // Prepare chart context\r\n let chartContext = {\r\n currentEntity: this.currentEntity(),\r\n parentLevels: this.parentLevels(),\r\n filter: this.filter,\r\n period: this.period,\r\n granularity: this.granularity,\r\n isMovingAverageOn: this.isMovingAverageOn,\r\n refreshGridData: this.forceRefresh,\r\n };\r\n\r\n // Note: temporary log added for analyzing filter expression mismatching issue.\r\n if (instrument.logMessage) {\r\n instrument.logMessage([instrumentConsts.LOGCATEGORY.TRACE],\r\n instrumentConsts.LOGLEVEL.INFO,\r\n 'inlineChartV2/updateChartWithFilterASync',\r\n `{ \"entity\" : \"${chartContext.currentEntity}\", \"filter\" : \"${JSON.stringify(chartContext.filter())}\" }`);\r\n }\r\n\r\n // Fetch data\r\n this._getChartData(chartContext, 'All').then((result) => {\r\n this.isDataFetchingDone = true;\r\n\r\n this.isDataAvailable(result && result[0] && result[0].PrimaryData && result[0].PrimaryData.length !== 0);\r\n this.isComparisonDataMissing(!(result && result[0] && result[0].ComparisonData && result[0].ComparisonData.length !== 0));\r\n this.noDataText(i18n.get('BI_Chart_NoData'));\r\n\r\n if (this.isDataAvailable()) {\r\n let xAxisStartDate = result[0].PrimaryData[0][0];\r\n let xAxisEndDate = result[0].PrimaryData[result[0].PrimaryData.length - 1][0];\r\n\r\n this.xAxisStartValue(this.formatDate(xAxisStartDate));\r\n this.xAxisEndValue(this.formatDate(xAxisEndDate));\r\n if (this.isComparisonDataMissing()) {\r\n this.comparedXAxisStartValue(null);\r\n this.comparedXAxisEndValue(null);\r\n } else {\r\n this.comparedXAxisStartValue(this.formatDate(this.comparedStartDate()));\r\n this.comparedXAxisEndValue(this.formatDate(this.comparedEndDate()));\r\n }\r\n } else {\r\n this.xAxisStartValue(null);\r\n this.xAxisEndValue(null);\r\n this.comparedXAxisStartValue(null);\r\n this.comparedXAxisEndValue(null);\r\n }\r\n\r\n //massage data to align charts if number of data points are different in case of pop or moving average\r\n if (this.isPopOn()) {\r\n this._alignDataForComparison(result);\r\n }\r\n\r\n // cache the result\r\n this.cachedChartData = result;\r\n this._refreshAllCharts(result);\r\n\r\n this._logChartData();\r\n }).then(() => {\r\n // loading succeeded\r\n this.isChartLoading(false);\r\n this.noDataText(i18n.get('BI_Chart_NoData'));\r\n if (instrument.endActivity) {\r\n instrument.endActivity(instrumentSetting.ACTIVITYNAME.InlineChartV2ReloadChart);\r\n }\r\n }, (err) => {\r\n const errorCode = _.result(_.first(_.result(err, 'errors')), 'Code');\r\n\r\n // loading failed\r\n this.isChartLoading(false);\r\n this.noDataText(i18n.get(`BI_Chart_Error_${errorCode}`) || i18n.get('BI_Chart_Error'));\r\n this.isDataAvailable(false);\r\n this.xAxisStartValue(null);\r\n this.xAxisEndValue(null);\r\n this.comparedXAxisStartValue(null);\r\n this.comparedXAxisEndValue(null);\r\n\r\n if (instrument.endActivity) {\r\n instrument.endActivity(instrumentSetting.ACTIVITYNAME.InlineChartV2ReloadChart, false);\r\n }\r\n throw err;\r\n });\r\n });\r\n\r\n return this.chartUpdatingPromise;\r\n }\r\n\r\n _getChartData(context, metric) {\r\n this.isChartLoading(true);\r\n\r\n return this.chartDataProvider.fetchData(context, metric);\r\n }\r\n\r\n _refreshAllCharts(chartData) {\r\n this._setCategoryAndData(chartData, this.selectedPrimaryCategory(), allColors.primary, this.primaryData);\r\n this._setCategoryAndData(chartData, this.selectedSecondaryCategory(), allColors.secondary, this.secondaryData);\r\n }\r\n\r\n _setCategoryAndData(chartData, selectedCategory, colors, data) {\r\n if (selectedCategory && selectedCategory.id !== -1) {\r\n let currentData = chartData[selectedCategory.id];\r\n let primaryData = {\r\n data: currentData.PrimaryData,\r\n };\r\n let comparisonData = {\r\n data: currentData.ComparisonData,\r\n };\r\n let rtnData = [];\r\n\r\n if (primaryData && primaryData.data) {\r\n primaryData.category = selectedCategory.id;\r\n primaryData.name = chartNameConverter.getMetricLocalizedNameForOdata(selectedCategory.id);\r\n primaryData.color = colors.original;\r\n rtnData.push(primaryData);\r\n }\r\n\r\n if (comparisonData && comparisonData.data) {\r\n comparisonData.category = selectedCategory.id;\r\n comparisonData.name = chartNameConverter.getMetricLocalizedNameForOdata(selectedCategory.id);\r\n comparisonData.xAxis = 1;\r\n comparisonData.color = colors.comparative;\r\n rtnData.push(comparisonData);\r\n }\r\n\r\n if (colors === allColors.secondary && selectedCategory.id !== -1) {\r\n primaryData.yAxis = 1;\r\n comparisonData.yAxis = 1;\r\n }\r\n\r\n data(rtnData);\r\n }\r\n }\r\n\r\n _metricSelectedHandler(dataObservable, categoryObservable, colors, metric) {\r\n if (metric.id === '-1') {\r\n this.dataObservable([]);\r\n } else {\r\n categoryObservable(metric);\r\n let currentData = this._getChartDataForMetric(metric.id, colors.original);\r\n let primaryData = {\r\n data: currentData.length > 0 ? currentData[0].PrimaryData : null,\r\n };\r\n let comparisonData = {\r\n data: currentData.length > 0 ? currentData[0].ComparisonData : null,\r\n };\r\n let rtnData = [];\r\n\r\n if (primaryData && primaryData.data) {\r\n primaryData.category = metric.id;\r\n primaryData.name = chartNameConverter.getMetricLocalizedNameForOdata(metric.id);\r\n primaryData.color = colors.original;\r\n rtnData.push(primaryData);\r\n }\r\n\r\n if (comparisonData && comparisonData.data) {\r\n comparisonData.name = chartNameConverter.getMetricLocalizedNameForOdata(metric.id);\r\n comparisonData.category = metric.id;\r\n comparisonData.xAxis = 1;\r\n comparisonData.color = colors.comparative;\r\n rtnData.push(comparisonData);\r\n }\r\n\r\n if (colors === allColors.secondary && categoryObservable().id !== -1) {\r\n primaryData.yAxis = 1;\r\n comparisonData.yAxis = 1;\r\n }\r\n\r\n dataObservable(rtnData);\r\n }\r\n this._logChartData();\r\n }\r\n\r\n _alignDataForComparison(dataSet) {\r\n let keys = Object.keys(dataSet);\r\n\r\n _.each(keys, (key) => {\r\n let metricData = dataSet[key];\r\n\r\n if (metricData.PrimaryData && metricData.ComparisonData && metricData.PrimaryData.length !== metricData.ComparisonData.length) {\r\n let shortermetricData = metricData.PrimaryData.length > metricData.ComparisonData.length ? metricData.ComparisonData : metricData.PrimaryData;\r\n let longermetricData = metricData.PrimaryData.length < metricData.ComparisonData.length ? metricData.ComparisonData : metricData.PrimaryData;\r\n let diff = Math.abs(metricData.PrimaryData.length - metricData.ComparisonData.length);\r\n\r\n for (let i = 0; i < diff; i++) {\r\n let diff1 = longermetricData[shortermetricData.length][0] - longermetricData[shortermetricData.length - 1][0];\r\n let dayAfter = shortermetricData[shortermetricData.length - 1][0] + diff1;\r\n\r\n shortermetricData.push([dayAfter, null]);\r\n }\r\n }\r\n\r\n // Current Mt returns last day of month, instead of first day of month.\r\n // Because last day of month\r\n if (this.granularity() === 'Month' || this.granularity() === 'Quarter' ) {\r\n let dayInMillisec = 60 * 60 * 24 * 1000;\r\n\r\n for (let i = 0; i < metricData.PrimaryData.length - 1; i++) {\r\n let primaryDataDateDiff = (metricData.PrimaryData[i + 1][0] - metricData.PrimaryData[i][0]) / dayInMillisec;\r\n let comparisonDataDateDiff = (metricData.ComparisonData[i + 1][0] - metricData.ComparisonData[i][0]) / dayInMillisec;\r\n\r\n if (comparisonDataDateDiff > primaryDataDateDiff) {\r\n metricData.PrimaryData[i + 1][0] += dayInMillisec;\r\n } else if (comparisonDataDateDiff < primaryDataDateDiff) {\r\n metricData.ComparisonData[i + 1][0] += dayInMillisec;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n _getChartTitle() {\r\n let currentLevel = CampaignState.currentLevel;\r\n\r\n if (currentLevel === 'Account') {\r\n return i18n.get('BI_Chart_AccountLevel');\r\n } else if (currentLevel === 'Campaign') {\r\n return i18n.get('BI_Chart_CampaignLevel');\r\n } else {\r\n return i18n.get('BI_Chart_AdGroupLevel');\r\n }\r\n }\r\n\r\n _getChartDataForMetric(metricId, colorRGB) {\r\n if (this.cachedChartData && this.cachedChartData[metricId]) {\r\n let result = this.cachedChartData[metricId];\r\n\r\n result.category = metricId;\r\n result.color = colorRGB;\r\n\r\n return [result];\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n _getParentLevels() {\r\n let currentCampaign = PageContext.CurrentCampaign;\r\n let currentAdGroup = PageContext.CurrentAdGroup;\r\n let parentLevels = [];\r\n\r\n if (currentCampaign) {\r\n parentLevels.push({name: Constants.CampaignEdmEntity, id: currentCampaign.Id});\r\n }\r\n if (currentAdGroup) {\r\n parentLevels.push({name: Constants.AdGroupEdmEntity, id: currentAdGroup.Id});\r\n }\r\n\r\n return parentLevels;\r\n }\r\n\r\n _getDefaultEntityBaseOnParentLevels(parentLevels) {\r\n let entity = Constants.CampaignEntity;\r\n\r\n if (parentLevels && parentLevels.constructor === Array && parentLevels.length > 0) {\r\n if (parentLevels[parentLevels.length - 1].name === Constants.AdGroupEdmEntity) {\r\n entity = Constants.AdEntity;\r\n } else if (parentLevels[parentLevels.length - 1].name === Constants.CampaignEdmEntity) {\r\n entity = Constants.AdGroupEntity;\r\n }\r\n }\r\n\r\n return entity;\r\n }\r\n\r\n _logChartData() {\r\n if (instrument.logMessage) {\r\n if (this.isUsingVnextGrid) {\r\n instrument.logMessage(\r\n [instrumentConsts.LOGCATEGORY.TRACE],\r\n instrumentConsts.LOGLEVEL.INFO,\r\n 'inlineChartV2/updateChart',\r\n `{ \"entity\": \"${this.currentEntity()}\", \"metric1\": \"${this.primaryData().length > 0 ? this.primaryData()[0].name : ''}\", \"metric2\": \"${this.secondaryData().length > 0 ? this.secondaryData()[0].name : ''}\", \"dateRange\": \"${state.get('$daterange').text}\", \"pop\": \"${state.get('$daterange').compared ? state.get('$daterange').compared.text : ''}\", \"movingAverage\": \"${this.isMovingAverageOn()}\" }`);\r\n } else {\r\n instrument.logMessage(\r\n [instrumentConsts.LOGCATEGORY.TRACE],\r\n instrumentConsts.LOGLEVEL.INFO,\r\n 'inlineChartV2/updateChart',\r\n `{ \"entity\": \"${this.currentEntity()}\", \"metric1\": \"${this.primaryData().length > 0 ? this.primaryData()[0].name : ''}\", \"metric2\": \"${this.secondaryData().length > 0 ? this.secondaryData()[0].name : ''}\", \"dateRange\": \"${window.App.views.Summary.dateFilter.ko_model.appliedRange().key}\", \"pop\": \"${window.App.views.Summary.dateFilter.ko_model.appliedComparedRange() ? window.App.views.Summary.dateFilter.ko_model.appliedComparedRange().key : ''}\", \"movingAverage\": \"${this.isMovingAverageOn()}\" }`);\r\n }\r\n }\r\n }\r\n\r\n _logCurrentFilterInfo(filterObj) {\r\n if (instrument.logMessage) {\r\n instrument.logMessage(\r\n [instrumentConsts.LOGCATEGORY.TRACE],\r\n instrumentConsts.LOGLEVEL.INFO,\r\n 'inlineChartV2/wrongFilterSelected',\r\n `{ \"customerId\": \"${PageContext.CurrentCustomer.Id}\", \"accountId\": \"${PageContext.CurrentAccount.Id}\", \"currentTab\": \"${PageContext.CurrentTabId}\", \"filter\": \"${JSON.stringify(filterObj)}\" }`);\r\n }\r\n }\r\n}\r\n/* eslint-enable quotes */\r\n","\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/inline-chart');\r\n\r\nexport default function numericSymbolFormatter(tickValue, tickInterval, numberFormatter, decimalPoint, thousandsSeparator) {\r\n let sign = tickValue < 0 ? '-' : '';\r\n let formattedNumber = `${tickValue}`;\r\n\r\n let absTickValue = Math.abs(tickValue);\r\n let absTickInterval = Math.abs(tickInterval);\r\n\r\n let numericSymbolKeys = [{\r\n val: 1e12,\r\n key: 'InlineChart_NumericalAbbreviation_Trillion',\r\n }, {\r\n val: 1e9,\r\n key: 'InlineChart_NumericalAbbreviation_Billion',\r\n }, {\r\n val: 1e6,\r\n key: 'InlineChart_NumericalAbbreviation_Million',\r\n }, {\r\n val: 1e3,\r\n key: 'InlineChart_NumericalAbbreviation_Thousand',\r\n }];\r\n\r\n if (absTickInterval >= 1000) {\r\n //when tick interval is >= 1000, treat all y-axis values as whole numbers\r\n for (let i = 0; i < numericSymbolKeys.length; ++i) {\r\n if (absTickInterval >= numericSymbolKeys[i].val ) {\r\n formattedNumber = `${sign}${numberFormatter( absTickValue / numericSymbolKeys[i].val, 0, decimalPoint, thousandsSeparator)}${i18n.get(numericSymbolKeys[i].key)}`;\r\n break;\r\n }\r\n }\r\n } else if (Math.floor(absTickValue) === absTickValue) {\r\n //integer value < 1000, render as whole number without any decimals\r\n formattedNumber = `${sign}${numberFormatter(absTickValue, 0, decimalPoint, thousandsSeparator)}`;\r\n } else {\r\n let absTickValueStr = `${absTickValue}`;\r\n //here we relay on the fact that if we don't change the precision of floating point in javascript,\r\n //javascript engine will format a floating number appropriately. That is,\r\n //String(1.01) should output '1.01', instead of something like '1.010000000000000000000002'\r\n\r\n let dotIdx = absTickValueStr.indexOf('.');\r\n let isOneDecimalValue = dotIdx > 0 && dotIdx === absTickValueStr.length - 2;\r\n\r\n if (isOneDecimalValue) {\r\n // one decimal value, such as 1.2, 0.5, render with one decimal\r\n formattedNumber = `${sign}${numberFormatter(absTickValue, 1, decimalPoint, thousandsSeparator)}`;\r\n } else {\r\n // two decimal value, render with two decimals\r\n formattedNumber = `${sign}${numberFormatter(absTickValue, 2, decimalPoint, thousandsSeparator)}`;\r\n }\r\n }\r\n\r\n return formattedNumber;\r\n}\r\n","/* eslint-disable newline-after-var */\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Backbone from 'backbone';\r\nimport Highcharts from 'highcharts';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport ko from 'knockout';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport inlineChartTemplate from '@bingads-webui-campaign-legacy/inline-chart/template/inlinechart.pug';\r\nimport DropdownView from '@bingads-webui-component-legacy/dropdown/dropdownview';\r\nimport ChartView from '@bingads-webui-component-legacy/chart/chartview';\r\nimport InlineChartViewModel from '@bingads-webui-campaign-legacy/inline-chart/viewmodel/inlinechartviewmodel';\r\nimport BluebirdPromise from 'bluebird';\r\nimport numericSymbolFormatter from '@bingads-webui-campaign-legacy/inline-chart/numericsymbolformatter';\r\nimport Constants from '@bingads-webui-campaign-legacy/inline-chart/constants';\r\nimport instrument from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport instrumentConsts from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport * as allColors from '@bingads-webui-campaign-legacy/performance-graph/graph/color';\r\nconst legacy$ = $;\r\nexport default class InlineChartView extends Backbone.View {\r\n constructor(options = {}) {\r\n super(options);\r\n\r\n _.bindAll(this,\r\n 'initialize',\r\n 'render',\r\n '_onGridPageLoading',\r\n '_onGridPageLoadingNewGrid',\r\n '_onShowChartChanged',\r\n '_onGranularityOptionsChanged',\r\n '_onPrimaryMetricOptionsChanged',\r\n '_onSecondaryMetricOptionsChanged',\r\n '_onPrimaryDataChanged',\r\n '_onSecondaryDataChanged',\r\n '_onTabChange',\r\n '_toggleOldNewInlineChart',\r\n '_showNewChartOnCurrentTab',\r\n '_showOldChartOnCurrentTab',\r\n '_toggleToolbar',\r\n '_insertToolBarIfNeeded',\r\n '_updateMetricDropdownDiff',\r\n '_round',\r\n '_numberWithCommas',\r\n '_redrawChart'\r\n );\r\n\r\n this.needRedraw = false;\r\n\r\n this.queueAsync = BluebirdPromise.resolve();\r\n\r\n // Create view model\r\n this.inlineChartViewModel = new InlineChartViewModel({\r\n isUsingVnextGrid: options.isUsingVnextGrid,\r\n entityType: options.entityType,\r\n tab: options.tab,\r\n });\r\n\r\n // hookup with view model property changed events\r\n this.inlineChartViewModel.showChart.subscribe(this._onShowChartChanged);\r\n this.inlineChartViewModel.granularityOptions.subscribe(this._onGranularityOptionsChanged);\r\n this.inlineChartViewModel.primaryMetricOptions.subscribe(this._onPrimaryMetricOptionsChanged);\r\n this.inlineChartViewModel.secondaryMetricOptions.subscribe(this._onSecondaryMetricOptionsChanged);\r\n this.inlineChartViewModel.primaryData.subscribe(this._onPrimaryDataChanged);\r\n this.inlineChartViewModel.secondaryData.subscribe(this._onSecondaryDataChanged);\r\n\r\n this.onGridPageLoadingHandler = (e, args) => {\r\n this._onGridPageLoading(e, args);\r\n };\r\n\r\n this.onTabChangeHandler = () => {\r\n this._onTabChange();\r\n };\r\n\r\n legacy$(document).on('grid-page-loading', this.onGridPageLoadingHandler);\r\n\r\n legacy$(document).on('onSummaryPageTabChange', this.onTabChangeHandler);\r\n\r\n this.render(options);\r\n }\r\n\r\n render() {\r\n if (this.$el.length) {\r\n this.$el.html(inlineChartTemplate());\r\n\r\n ko.applyBindings(this.inlineChartViewModel, this.$el[0]);\r\n\r\n this._toggleOldNewInlineChart();\r\n\r\n this._insertToolBarIfNeeded();\r\n\r\n if (this.options.isUsingVnextGrid) {\r\n if (this.options.tab !== 'campaign') {\r\n this._onGridPageLoadingNewGrid(this.options.filter);\r\n }\r\n } else if (legacy$.triggeredGridPageLoading) {\r\n // the 'grid-page-loading' event has been triggered before bind\r\n this._onGridPageLoading(null, legacy$.triggeredGridPageLoading);\r\n }\r\n\r\n let resizeWidth = () => {\r\n // make the chart area the same width as the title area which contains the POP control\r\n let pageTitle = $('.campaignContentContainer section.page-title');\r\n\r\n if (pageTitle && pageTitle.length > 0) {\r\n // make the chart area the same width as the title area which contains the POP control\r\n let chartContainer = this.$('.chart-container');\r\n\r\n // Since pageTitle can have negative margin, border or padding,\r\n // chartContainer's width should be set accordingly.\r\n let pageTitleInclusiveWidth = pageTitle.width() +\r\n parseFloat(pageTitle.css('marginLeft')) +\r\n parseFloat(pageTitle.css('marginRight')) +\r\n parseFloat(pageTitle.css('paddingLeft')) +\r\n parseFloat(pageTitle.css('paddingRight')) +\r\n parseFloat(pageTitle.css('border-left-width')) +\r\n parseFloat(pageTitle.css('border-right-width'));\r\n\r\n if (chartContainer && chartContainer.length > 0) {\r\n chartContainer.width(pageTitleInclusiveWidth);\r\n }\r\n\r\n let highChartContainer = this.$('#highcharts-container');\r\n\r\n let chartConainerWidthDifference = 60;\r\n\r\n if (highChartContainer && highChartContainer.length > 0) {\r\n // highchart container has to be smaller because it has some left margin\r\n highChartContainer.width(pageTitleInclusiveWidth - chartConainerWidthDifference);\r\n }\r\n }\r\n };\r\n\r\n $(window).on('resize', resizeWidth);\r\n $(window).triggerHandler('resize');\r\n }\r\n }\r\n\r\n _onGridPageLoading(e, args) {\r\n if (this._showNewChartOnCurrentTab() &&\r\n (!(args.commandType === 'Paging' || args.commandType === 'Sorting') ||\r\n args.grid.RefreshGridData)) {\r\n // handle filter\r\n let filterObj;\r\n let filterEntity = '';\r\n\r\n if (args.filter && args.filter.length) {\r\n if (instrument.logMessage) {\r\n instrument.logMessage(\r\n [instrumentConsts.LOGCATEGORY.TRACE],\r\n instrumentConsts.LOGLEVEL.INFO,\r\n 'inlineChartV2/filterPassedIn',\r\n `{ \"filter\" : \"${args.filter[0].Value}\" }`);\r\n }\r\n\r\n filterObj = JSON.parse(args.filter[0].Value);\r\n filterEntity = args.filter[0].Entity;\r\n }\r\n\r\n this.inlineChartViewModel.reloadChartData(filterObj ? filterObj.FilterExpressions : {}, filterEntity || this.options.entityType, args.RefreshGridData);\r\n }\r\n }\r\n\r\n _onGridPageLoadingNewGrid(filters) {\r\n state.getPromise('$daterange')\r\n .then((daterange) => {\r\n this.inlineChartViewModel.period(daterange);\r\n this.inlineChartViewModel.reloadChartData(filters);\r\n });\r\n }\r\n\r\n _onShowChartChanged() {\r\n // manually toggle the global toolbar when toggling the chart area\r\n if (this.inlineChartViewModel.showChart()) {\r\n this.$('.btn-toolbar > .grid-groupmenu-container').show();\r\n this.$('.btn-toolbar > .grid-custommenu-container').show();\r\n } else {\r\n this.$('.btn-toolbar > .grid-groupmenu-container').hide();\r\n this.$('.btn-toolbar > .grid-custommenu-container').hide();\r\n }\r\n }\r\n\r\n _onGranularityOptionsChanged() {\r\n ko.cleanNode(this.$('#granularity-dropdown')[0]);\r\n this.granularityDropdown = new DropdownView({\r\n el: this.$('#granularity-dropdown').first(),\r\n defaultOption: this.inlineChartViewModel.granularityId,\r\n dropDownOptions: this.inlineChartViewModel.granularityOptions(),\r\n onDropDownChanged: this.inlineChartViewModel.onGranularitySelected,\r\n });\r\n }\r\n\r\n _onPrimaryMetricOptionsChanged() {\r\n ko.cleanNode(this.$('#main-primary-dropdown')[0]);\r\n\r\n this.primaryMetricDropdown = new DropdownView({\r\n el: this.$('#main-primary-dropdown').first(),\r\n dropDownOptions: this.inlineChartViewModel.primaryMetricOptions().data,\r\n defaultOption: this.inlineChartViewModel.primaryMetricId(),\r\n onDropDownChanged: this.inlineChartViewModel.onPrimaryMetricSelected,\r\n onPopEnabled: this.inlineChartViewModel.calculatePercentageDiff,\r\n });\r\n }\r\n\r\n _onSecondaryMetricOptionsChanged() {\r\n ko.cleanNode(this.$('#main-secondary-dropdown')[0]);\r\n\r\n this.secondaryMetricDropdown = new DropdownView({\r\n el: this.$('#main-secondary-dropdown').first(),\r\n dropDownOptions: this.inlineChartViewModel.secondaryMetricOptions().data,\r\n defaultOption: this.inlineChartViewModel.secondaryMetricId(),\r\n onDropDownChanged: this.inlineChartViewModel.onSecondaryMetricSelected,\r\n onPopEnabled: this.inlineChartViewModel.calculatePercentageDiff,\r\n });\r\n }\r\n\r\n _onPrimaryDataChanged() {\r\n this._redrawChart();\r\n }\r\n\r\n _onSecondaryDataChanged() {\r\n this._redrawChart();\r\n }\r\n\r\n _isDataFetchingDone() {\r\n return this.inlineChartViewModel.isDataFetchingDone;\r\n }\r\n\r\n _redrawChart() {\r\n // There are multiple events which can trigger chart redrawing (primaryData and secondaryData changed),\r\n // to avoid the chart being redrawn multiple times frequently, we defer the redrawing to the next\r\n // execution cycle so that we redraw the view after all events are triggered.\r\n this.needRedraw = true;\r\n\r\n this.queueAsync.then(() => {\r\n if (!this._isDataFetchingDone()) {\r\n // Data is not ready yet, skip redraw\r\n return;\r\n }\r\n\r\n if (!this.needRedraw) {\r\n // The view has been redrawn already, skip redraw\r\n return;\r\n }\r\n\r\n this.needRedraw = false;\r\n\r\n // Bump up chart-iteration every time the chart is redrawn\r\n let chartIteration = parseInt(this.$('.chart-container').attr('chart-iteration'));\r\n\r\n let chartRedrawMarker = instrument.logActivityDurationMarker(\r\n `InlineChart.Redraw.Iteration-${chartIteration}`\r\n );\r\n\r\n this.$('.chart-container').attr('chart-iteration', chartIteration + 1);\r\n\r\n let self = this;\r\n new ChartView({\r\n el: this.$('#highcharts-container')[0],\r\n showWeekend: this.granularityDropdown.koModel.selectedItem().enumValue === 'Day',\r\n highchartsOptions: {\r\n series: this.inlineChartViewModel.primaryData().concat(this.inlineChartViewModel.secondaryData()),\r\n tooltip: {\r\n formatter() {\r\n let primaryPoints = [];\r\n let comparisonPoints = [];\r\n let tempHtml = '';\r\n\r\n _.each(this.points, (point) => {\r\n switch (point.color) {\r\n case allColors.primary.original:\r\n primaryPoints.push(point);\r\n break;\r\n case allColors.primary.comparative:\r\n comparisonPoints.push(point);\r\n break;\r\n case allColors.secondary.original:\r\n primaryPoints.push(point);\r\n break;\r\n case allColors.secondary.comparative:\r\n comparisonPoints.push(point);\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n if (primaryPoints.length > 0) {\r\n tempHtml = `
${self.inlineChartViewModel.formatDate(this.x)}`;\r\n _.each(primaryPoints, (point) => {\r\n tempHtml = `${tempHtml}
${point.series.name}: ${self._numberWithCommas(self._round(point.y), point.series.name)}${self._isPercentNeeded(point) ? '%' : ''}`;\r\n });\r\n }\r\n\r\n if (comparisonPoints.length > 0) {\r\n tempHtml = self.inlineChartViewModel.isMovingAverageOn() ?\r\n `${tempHtml}
Moving average` :\r\n `${tempHtml}
${self.inlineChartViewModel.formatDate(comparisonPoints[0].x)}`;\r\n _.each(comparisonPoints, (point) => {\r\n tempHtml = `${tempHtml}
${point.series.name}: ${self._numberWithCommas(self._round(point.y), point.series.name)}${self._isPercentNeeded(point) ? '%' : ''}`;\r\n });\r\n }\r\n\r\n return tempHtml;\r\n },\r\n },\r\n yAxis: [{\r\n labels: {\r\n formatter() {\r\n let tickInterval = this.axis.tickInterval;\r\n let decimalPoint = Highcharts.getOptions().lang.decimalPoint;\r\n let thousandsSeparator = ',';\r\n\r\n if ( self.inlineChartViewModel.selectedPrimaryCategory() && self.inlineChartViewModel.selectedPrimaryCategory().id === 4 ) {\r\n return `${numericSymbolFormatter(this.value, tickInterval, Highcharts.numberFormat, decimalPoint, thousandsSeparator)}%`;\r\n }\r\n return `${numericSymbolFormatter(this.value, tickInterval, Highcharts.numberFormat, decimalPoint, thousandsSeparator)}`;\r\n },\r\n },\r\n }, {\r\n labels: {\r\n formatter() {\r\n let tickInterval = this.axis.tickInterval;\r\n let decimalPoint = Highcharts.getOptions().lang.decimalPoint;\r\n let thousandsSeparator = ',';\r\n\r\n if ( self.inlineChartViewModel.selectedSecondaryCategory() && self.inlineChartViewModel.selectedSecondaryCategory().id === 4 ) {\r\n return `${numericSymbolFormatter(this.value, tickInterval, Highcharts.numberFormat, decimalPoint, thousandsSeparator)}%`;\r\n }\r\n return `${numericSymbolFormatter(this.value, tickInterval, Highcharts.numberFormat, decimalPoint, thousandsSeparator)}`;\r\n },\r\n },\r\n }],\r\n },\r\n }).render();\r\n\r\n this._updateMetricDropdownDiff();\r\n\r\n chartRedrawMarker.markEnd();\r\n });\r\n }\r\n\r\n _onTabChange() {\r\n this._toggleOldNewInlineChart();\r\n }\r\n\r\n _isPercentNeeded(point) {\r\n if ((point.color === allColors.primary.original || point.color === allColors.primary.comparative ) && this.inlineChartViewModel.selectedPrimaryCategory().id === 4) {\r\n return true;\r\n } else if ((point.color === allColors.secondary.original || point.color === allColors.secondary.comparative) && this.inlineChartViewModel.selectedSecondaryCategory().id === 4) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n _toggleOldNewInlineChart() {\r\n // toggle the new and old inline chart based on current tab\r\n if (this._showNewChartOnCurrentTab()) {\r\n $('#bi-chartToggleContainer').hide();\r\n $('#chart-container').hide();\r\n\r\n this.$el.find('.chartToggle').show();\r\n $('.globalToolBarPanel').show();\r\n if (this.inlineChartViewModel.showChart()) {\r\n this.$('.chart-container').show();\r\n }\r\n } else if (this._showOldChartOnCurrentTab()) {\r\n $('#bi-chartToggleContainer').show();\r\n $('#chart-container').show();\r\n\r\n $('.globalToolBarPanel').hide();\r\n this.$('.chart-container').hide();\r\n } else {\r\n this.$el.find('.chartToggle').hide();\r\n $('#bi-chartToggleContainer').hide();\r\n $('#chart-container').hide();\r\n\r\n $('.globalToolBarPanel').hide();\r\n this.$('.chart-container').hide();\r\n }\r\n\r\n this._toggleToolbar();\r\n\r\n $('#bi-status-text').hide();\r\n }\r\n\r\n _toggleToolbar() {\r\n if (this._showNewChartOnCurrentTab()) {\r\n if (this.options.hideChartToolbar) {\r\n this.inlineChartViewModel.hideToolbar(true);\r\n } else {\r\n this.inlineChartViewModel.hideToolbar(false);\r\n }\r\n this.inlineChartViewModel.hideToggleIcon(false);\r\n } else {\r\n this.inlineChartViewModel.hideToolbar(true);\r\n this.inlineChartViewModel.hideToggleIcon(true);\r\n }\r\n }\r\n\r\n _showNewChartOnCurrentTab() {\r\n let tabsWithNewInlineCharts = [Constants.CampaignTabId, Constants.AdGroupTabId, Constants.ProductsGroupId, Constants.FlattenProductsGroupId, Constants.AdsTabId, Constants.KeywordsTabId,\r\n Constants.LocationsTabId, Constants.AdScheduleTabId, Constants.DevicesTabId, Constants.AudienceTabId, Constants.DemographicsTabId, Constants.SearchTermGridId];\r\n let entitiesUsingNewInlineCharts = [Constants.AccountEdmEntity];\r\n\r\n return entitiesUsingNewInlineCharts.indexOf(this.options.entityType) > -1 ||\r\n tabsWithNewInlineCharts.indexOf(PageContext.CurrentTabId) > -1;\r\n }\r\n\r\n _showOldChartOnCurrentTab() {\r\n let tabsWithOldInlineCharts = [Constants.ChangeHistoryTabId];\r\n\r\n if (tabsWithOldInlineCharts.indexOf(PageContext.CurrentTabId) > -1) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n _insertToolBarIfNeeded() {\r\n let globalToolBar = $('.navbar-tertiary > .btn-toolbar > .globalToolBar');\r\n let globalToolBarPanel = $('.navbar-tertiary > .globalToolBarPanel');\r\n\r\n if (globalToolBar && globalToolBar.length > 0) {\r\n globalToolBar.appendTo(this.$('.btn-toolbar'));\r\n }\r\n\r\n if (globalToolBarPanel && globalToolBarPanel.length > 0) {\r\n globalToolBarPanel.insertAfter(this.$('.btn-toolbar'));\r\n }\r\n }\r\n\r\n _updateMetricDropdownDiff() {\r\n if (this.primaryMetricDropdown) {\r\n this.primaryMetricDropdown.koModel.showDiff(\r\n this.inlineChartViewModel.primaryData().length &&\r\n (this.inlineChartViewModel.isPopOn() || this.inlineChartViewModel.isMovingAverageOn()));\r\n\r\n this.primaryMetricDropdown.koModel.triggerShowDifference();\r\n }\r\n\r\n if (this.secondaryMetricDropdown) {\r\n this.secondaryMetricDropdown.koModel.showDiff(\r\n this.inlineChartViewModel.secondaryData().length &&\r\n (this.inlineChartViewModel.isPopOn() || this.inlineChartViewModel.isMovingAverageOn()));\r\n\r\n this.secondaryMetricDropdown.koModel.triggerShowDifference();\r\n }\r\n }\r\n\r\n _round (num) {\r\n return Math.round(num * 100) / 100;\r\n }\r\n\r\n _numberWithCommas(num, seriesName) {\r\n let numberWithCommas = num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n let metricInvolvingCost = ['AverageCPC', 'CPA', 'Spent', 'Revenue', 'CTR'];\r\n\r\n if (metricInvolvingCost.indexOf(seriesName) > -1 || numberWithCommas !== '0') {\r\n let dotIndex = numberWithCommas.indexOf('.');\r\n return numberWithCommas.length - dotIndex === 2 && dotIndex !== -1 ? `${numberWithCommas}0` : numberWithCommas;\r\n }\r\n return numberWithCommas;\r\n }\r\n\r\n remove() {\r\n super.remove();\r\n legacy$(document).off('grid-page-loading', this.onGridPageLoadingHandler);\r\n legacy$(document).off('onSummaryPageTabChange', this.onTabChangeHandler);\r\n }\r\n}\r\n","import Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport { convertSelectionDateRangeToState } from '@bingads-webui-campaign/date-range-utilities';\r\nimport { getGridName, getGridPage, getGridColumnNames, getGridColumnConversions } from '@bingads-webui-campaign/inline-download-grids-metadata';\r\nimport { setSegType } from '@bingads-webui-component-legacy/bingads-grid/service/segmentation-preferences';\r\nimport { Columns } from '@bingads-webui-component-legacy/bingads-grid/service/column-chooser-preferences';\r\n// Here it uses different name with date-filter we are using\r\n// import { setFilter } from '@bingads-webui-component-legacy/bingads-grid/service/filter-preferences';\r\n// import preferencesService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { buildColumnConversions } from '@bingads-webui-campaign/column-conversions';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/campaign-date-filter');\r\nconst permissions = config.get('permissions');\r\nconst { dynamic = {} } = permissions;\r\nconst {\r\n ColumnConversion: IsColumnConversionEnabled,\r\n PartialConversions: IsPartialConversionsEnabled,\r\n} = dynamic;\r\n\r\nconst selectQueryPrefix = '$select=';\r\n\r\nconst ColumnConversionNotEnabledFeatures = {\r\n 'summary_tab_combinations': true,\r\n};\r\n\r\nfunction setGridPreference({\r\n Entity,\r\n SegmentationTypes: [SegmentationType = 'None'],\r\n Selection,\r\n}) {\r\n const {\r\n QueryString,\r\n } = Selection;\r\n const gridName = getGridName(Entity, Selection);\r\n const queries = QueryString.split('&');\r\n const properties = _.find(queries, (query) => query.indexOf(selectQueryPrefix) === 0)\r\n .substr(selectQueryPrefix.length)\r\n .split(',')\r\n .map((property) => property.split('/'));\r\n\r\n const columns = getGridColumnNames(Entity, properties, Selection);\r\n\r\n return Promise.all([\r\n Columns.findAll({\r\n where: {\r\n name: 'Custom',\r\n project: 'CampaignUI',\r\n grid: gridName,\r\n },\r\n }).then(([customColumn]) => {\r\n if (customColumn) {\r\n if (IsColumnConversionEnabled) {\r\n const columnConversions = getGridColumnConversions(Entity, Selection, { withPartialConversion: IsPartialConversionsEnabled && !ColumnConversionNotEnabledFeatures[gridName] });\r\n const { applyColumnConversions } = buildColumnConversions(columnConversions);\r\n const patchedColumns = applyColumnConversions(columns);\r\n\r\n return Columns.update(customColumn.id, { columns: patchedColumns });\r\n }\r\n\r\n return Columns.update(customColumn.id, { columns });\r\n }\r\n // when no column chooser for the grid, customColumn doesn't exist\r\n return null;\r\n }),\r\n setSegType(gridName, SegmentationType),\r\n ]);\r\n}\r\n\r\nfunction setDateRangeForNewUI(Rule, {\r\n convertSelectionDateRangeToDateFilter,\r\n restoreDateFilter,\r\n}) {\r\n const {\r\n DateRange,\r\n ComparisonDateRange,\r\n } = Rule.Selection;\r\n\r\n const dateFilter = convertSelectionDateRangeToDateFilter({\r\n DateRange,\r\n ComparisonDateRange,\r\n });\r\n\r\n restoreDateFilter(dateFilter);\r\n}\r\n\r\nfunction setPreferenceByReportEmailRuleForAccountsSummary(Rule, options = {}) {\r\n if (options.isForNewUI) {\r\n setDateRangeForNewUI(Rule, options);\r\n }\r\n return setGridPreference(Rule);\r\n}\r\n\r\nfunction setPreferenceByReportEmailRuleForCampaigns(Rule, options = {}) {\r\n const {\r\n DateRange,\r\n ComparisonDateRange,\r\n } = Rule.Selection;\r\n\r\n if (options.isForNewUI) {\r\n setDateRangeForNewUI(Rule, options);\r\n } else {\r\n const dateRange = convertSelectionDateRangeToState({\r\n Selection: {\r\n DateRange,\r\n ComparisonDateRange,\r\n },\r\n i18n,\r\n });\r\n\r\n state.set('$daterange', dateRange);\r\n window.App.views.Summary.dateFilter.initializePreference(dateRange);\r\n window.App.views.Summary.dateFilter.save();\r\n }\r\n\r\n return setGridPreference(Rule);\r\n}\r\n\r\nfunction setPreferenceByReportEmailRuleForHotelCenter(Rule, options = {}) {\r\n if (options.isForNewUI) {\r\n setDateRangeForNewUI(Rule, options);\r\n }\r\n return setGridPreference(Rule);\r\n}\r\n\r\nexport default function setPreferenceByReportEmailRule(ReportEmailRule, options) {\r\n switch (getGridPage(ReportEmailRule.Entity, ReportEmailRule.Selection)) {\r\n case 'AccountsSummary':\r\n return setPreferenceByReportEmailRuleForAccountsSummary(ReportEmailRule, options);\r\n case 'HotelCenter':\r\n return setPreferenceByReportEmailRuleForHotelCenter(ReportEmailRule, options);\r\n case 'Campaigns':\r\n default:\r\n return setPreferenceByReportEmailRuleForCampaigns(ReportEmailRule, options);\r\n }\r\n}\r\n","import {\r\n getGridPage,\r\n getGridRoute,\r\n getGridRouteForNewUI,\r\n} from '@bingads-webui-campaign/inline-download-grids-metadata';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport setPreferenceByReportEmailRule from '@bingads-webui-campaign-legacy/bingadsgrid/service/set-preference-by-report-email-rule';\r\n\r\nconst AccountsSummary = 'AccountsSummary';\r\nconst Campaigns = 'Campaigns';\r\nconst currentPage = edm.currentAccount ? Campaigns : AccountsSummary;\r\n\r\nexport default function createSimilar(reportId, {\r\n isForNewUI,\r\n getUrlSearch,\r\n scopeHistoryPush,\r\n i18n,\r\n convertSelectionDateRangeToDateFilter,\r\n restoreDateFilter,\r\n serverContext,\r\n} = {}) {\r\n return jsdata.TaskItem\r\n .find(reportId, {\r\n entitySet: edm.currentAccount ? edm.currentAccount.TaskItems : edm.currentCustomer.TaskItems,\r\n })\r\n .then((Rule) => {\r\n const {\r\n Entity,\r\n Selection,\r\n } = Rule;\r\n\r\n if (!isForNewUI) {\r\n const page = getGridPage(Entity, Selection);\r\n\r\n if (currentPage !== page) {\r\n window.location = `${page}#reports/create_similar/${Rule.Id}`;\r\n return null;\r\n }\r\n }\r\n\r\n return setPreferenceByReportEmailRule(Rule, isForNewUI ? { isForNewUI: true, i18n, convertSelectionDateRangeToDateFilter, restoreDateFilter } : {})\r\n .then(() => {\r\n state.set('$ReportEmailRule', Rule);\r\n if (isForNewUI) {\r\n const route = getGridRouteForNewUI({ getUrlSearch, entity: Entity, selection: Selection, serverContext });\r\n\r\n scopeHistoryPush(route);\r\n } else {\r\n window.App.navigate(getGridRoute(Entity, Selection));\r\n }\r\n });\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\n\r\nexport default function loadEmails({allUsersType}) {\r\n const params = allUsersType === 'Customer' ? {\r\n cid: state.get('customer_id'),\r\n uid: state.get('user_id'),\r\n } : {\r\n cid: state.get('customer_id'),\r\n uid: state.get('user_id'),\r\n aid: state.get('account_id'),\r\n };\r\n\r\n const queryString = new URLSearchParams(params).toString();\r\n\r\n return fetch(`/campaign/users/loadEmails?${queryString}`, { method: 'GET' })\r\n .then((response) => response.json())\r\n .then((emails) => {\r\n if (_.isArray(emails)) {\r\n return emails;\r\n }\r\n\r\n const error = new Error();\r\n\r\n error.response = emails;\r\n throw error;\r\n });\r\n}\r\n","export const getImportButtonOptions = (i18n, importChannelType, lazyInject, view) =>\r\n ['start_import', {\r\n id: 'start_import',\r\n type: 'button',\r\n iconLeftGlyphName: 'ba-Add',\r\n text: i18n.getString('Import_ImportCenter_StartImport'),\r\n classes: ['btn-primary'],\r\n onClick: () => {\r\n // lazyInject is for schedule grid and view is for log grid.\r\n const router = lazyInject ? lazyInject().backboneGridView.router : view.router;\r\n\r\n router.navigateToRoute(importChannelType.toLowerCase());\r\n },\r\n }];\r\n","\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\n\r\nexport { i18n };\r\n","import _ from 'underscore';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\n\r\n\r\nfunction createParentRowForBatchedImports(batchImportGroup) {\r\n const firstInBatchIndex = batchImportGroup.length - 1;\r\n const parent = cloneDeep(batchImportGroup[firstInBatchIndex]);\r\n\r\n delete parent.Id; // remove Id, otherwise, it will make data-key duplicated.\r\n const statisticFields = parent.EntityStatistics ? parent.EntityStatistics.Values.length : 0;\r\n let initStatistics = [];\r\n const entityStatisticChangeTypes = ['Additions', 'Changes', 'Deletions', 'Errors', 'Total'];\r\n const initialEntity = {};\r\n let isBatchStillInProgress = false;\r\n let hasAnyBatchedImportFailed = false;\r\n let hasAnyBatchedImportBeenCancelled = false;\r\n let successCount = 0;\r\n let errorCount = 0;\r\n\r\n _.each(entityStatisticChangeTypes, (key) => {\r\n initialEntity[key] = 0;\r\n });\r\n\r\n for (let index = 0; index < statisticFields; index++) {\r\n initStatistics.push(_.clone(initialEntity));\r\n }\r\n\r\n if (parent.EntityStatistics) {\r\n initStatistics = _.object(parent.EntityStatistics.Keys, initStatistics);\r\n }\r\n\r\n const combinedStatistics = _.reduce(batchImportGroup, (memo, importResult) => {\r\n if (parent.EntityStatistics && importResult.EntityStatistics) {\r\n const entityStatisticMap = _.object(importResult.EntityStatistics.Keys, importResult.EntityStatistics.Values);\r\n\r\n _.each(importResult.EntityStatistics.Keys, (entityType) => {\r\n if (memo[entityType]) {\r\n _.each(entityStatisticChangeTypes, (key) => {\r\n memo[entityType][key] += entityStatisticMap[entityType][key];\r\n });\r\n } else {\r\n memo[entityType] = _.clone(entityStatisticMap[entityType]);\r\n }\r\n });\r\n }\r\n\r\n if (importResult.ErrorCode) {\r\n hasAnyBatchedImportFailed = true;\r\n }\r\n\r\n if (importResult.ImportStatus === 'Cancelled') {\r\n hasAnyBatchedImportBeenCancelled = true;\r\n }\r\n\r\n if (importResult.ImportStatus === 'InProgress' || importResult.Status === 'PendingExecution') {\r\n isBatchStillInProgress = true;\r\n }\r\n\r\n if (_.isNumber(importResult.SuccessCount)) {\r\n successCount += importResult.SuccessCount;\r\n }\r\n\r\n if (_.isNumber(importResult.ErrorCount)) {\r\n errorCount += importResult.ErrorCount;\r\n }\r\n\r\n return memo;\r\n }, initStatistics);\r\n\r\n if (parent.EntityStatistics) {\r\n parent.EntityStatistics.Values = _.values(combinedStatistics);\r\n }\r\n\r\n if (isBatchStillInProgress) {\r\n parent.Status = 'PendingExeuction';\r\n }\r\n\r\n if (hasAnyBatchedImportBeenCancelled) {\r\n parent.ImportStatus = 'Cancelled';\r\n }\r\n\r\n if (hasAnyBatchedImportFailed) {\r\n parent.ErrorCode = -1;\r\n }\r\n\r\n parent.SuccessCount = successCount;\r\n parent.ErrorCount = errorCount;\r\n parent.TotalCount = successCount + errorCount;\r\n parent.ImportName = parent.ImportName || i18n.getString('CampaignImport_GSyncConnect');\r\n parent.ErrorFileIdentifier = null;\r\n parent.CampaignSplitStatus = 0;\r\n parent.CampaignSplitBatchIndex = 0;\r\n parent.CampaignSplitBatchCount = null;\r\n parent.IsBatchParent = true;\r\n\r\n return parent;\r\n}\r\n\r\nexport function processBatchedImports(data) {\r\n const groupedByBatch = _.values(_.groupBy(data, (importResult) => {\r\n if (importResult.CampaignSplitGuid) {\r\n return importResult.CampaignSplitGuid;\r\n }\r\n return importResult.Id;\r\n }));\r\n const sortedGroupedList = _.sortBy(groupedByBatch, (group) => {\r\n const minDateIndex = group.length - 1; // data is returned in reverse date order, last element is earliest\r\n\r\n return new Date(group[minDateIndex].StartDateTime);\r\n });\r\n const sortedGroupWithParentList = _.map(sortedGroupedList, (group) => {\r\n if (group.length > 1) {\r\n const parent = createParentRowForBatchedImports(group);\r\n const processedGroup = _.map(group, (importResult) => {\r\n const indexTemplate = i18n.getString('Alert_CarouselPagination');\r\n const indexText = _.template(indexTemplate)({\r\n page: importResult.CampaignSplitBatchIndex,\r\n total: importResult.CampaignSplitBatchCount,\r\n });\r\n\r\n importResult.ImportName = `${i18n.getString('CampaignImport_GSyncConnect')} ${indexText}`;\r\n importResult.IsChildBatch = true;\r\n\r\n return importResult;\r\n }).reverse();\r\n\r\n processedGroup.unshift(parent);\r\n\r\n return processedGroup;\r\n }\r\n return group;\r\n });\r\n\r\n return _.flatten(sortedGroupWithParentList.reverse());\r\n}\r\n\r\nexport function processMultiAccountBatchedImports(data) {\r\n const groupedByAccount = _.map(data, (item) => {\r\n item.ImportName = item.TaskItem.Name || i18n.getString('CampaignImport_MultiAccount_GSyncConnect');\r\n item.isCustomerLevel = true;\r\n let processedItem = [item];\r\n\r\n _.each(item.ImportResultList, (accountitem) => {\r\n accountitem.Id = accountitem.TaskId;\r\n accountitem.IsChildAccountTask = true;\r\n const indexTemplate = i18n.getString('Alert_CarouselPagination');\r\n const indexText = _.template(indexTemplate)({\r\n page: accountitem.MultiAccountTaskIndex,\r\n total: accountitem.MultiAccountTaskCount,\r\n });\r\n\r\n accountitem.ImportName = `${i18n.getString('CampaignImport_Account')} ${indexText}`;\r\n });\r\n processedItem = processedItem.concat(processBatchedImports(item.ImportResultList));\r\n return processedItem;\r\n });\r\n\r\n return _.flatten(groupedByAccount);\r\n}\r\n","import config from '@bingads-webui-component-legacy/config/index';\r\n\r\nconst permissions = config.get('Permissions') || {};\r\nconst testTypeSuffix = permissions.IsUseImportTestTypeForImportTaskExecutionEnabled ? 'Test' : '';\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","import _ from 'underscore';\r\nimport edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\n\r\nimport { showError, showSuccess } from '@bingads-webui-component-legacy/toast/index';\r\nimport createImportTaskItemHelper from '@bingads-webui-campaign-legacy/import-campaigns/shared/import-task-item-helper';\r\n\r\nimport { processBatchedImports, processMultiAccountBatchedImports } from './batched-import-processor';\r\nimport * as consts from './import-log-constants';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\n\r\nimport { IMPORT_TYPE } from '@bingads-webui-campaign-legacy/scheduled-import/view/import-type';\r\n\r\nconst schema = window.globalLegacySchema.get('ImportResult');\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\n\r\n//Max int, used to fetch all task items executions for file import and combined imports (16 bit signed int)\r\nconst MAX_TASK_ITEM_COUNT = 32767;\r\n\r\n// processes batched imports and filters out error imports if needed\r\nfunction processData(isMultiAccount, data) {\r\n return isMultiAccount ?\r\n processMultiAccountBatchedImports(data) :\r\n processBatchedImports(data);\r\n}\r\n\r\nexport function getImportLogDataSourceConfig({ isMultiAccount, isFacebookImport = false, isAmazonImport = false, isPinterestImport = false, supportedImportTypes }) {\r\n if (isMultiAccount) {\r\n // eslint-disable-next-line no-param-reassign\r\n edm.customerIdType.useAdvertiserCustomerId = false;\r\n }\r\n return isMultiAccount ? {\r\n type: 'js-data',\r\n entity: jsData.TaskItemExecution,\r\n schema,\r\n query: {\r\n $expand: 'TaskItem',\r\n $filter: consts.FILTER_MULTIACCOUNT_IMPORT,\r\n },\r\n options: {\r\n entitySet: edm.currentCustomer.TaskItemExecutions,\r\n afterFindAll: (resources, data) => {\r\n const processedData = processData(isMultiAccount, data);\r\n\r\n // ensure that grid still has access to total odata count\r\n _.extend(processedData, {\r\n totalCount: data.totalCount,\r\n });\r\n return processedData;\r\n },\r\n },\r\n } : {\r\n type: 'js-data',\r\n entity: jsData.TaskItemExecution,\r\n options: {\r\n entitySet: edm.currentAccount.TaskItemExecutions,\r\n cacheResponse: false,\r\n afterFindAll: (resource, data) => {\r\n const processedData = processData(isMultiAccount, data);\r\n\r\n // ensure that grid still has access to total odata count\r\n _.extend(processedData, {\r\n totalCount: data.totalCount,\r\n });\r\n return processedData;\r\n },\r\n },\r\n schema,\r\n query: {\r\n $expand: 'TaskItem',\r\n $filter: (() => {\r\n if (supportedImportTypes[IMPORT_TYPE.facebookimport] && isFacebookImport) {\r\n return consts.FILTER_FACEBOOK_IMPORT;\r\n }\r\n if (supportedImportTypes[IMPORT_TYPE.amazonImport] && isAmazonImport) {\r\n return consts.FILTER_AMAZON_IMPORT;\r\n }\r\n if (supportedImportTypes[IMPORT_TYPE.pinterestImport] && isPinterestImport) {\r\n return consts.FILTER_PINTEREST_IMPORT;\r\n }\r\n return consts.FILTER_IMPORT;\r\n })(),\r\n },\r\n };\r\n}\r\n\r\nexport function getMemoryDataSourceConfig() {\r\n return {\r\n type: 'memory',\r\n schema,\r\n data: null,\r\n };\r\n}\r\n\r\nexport function updateMemoryGrid(view) {\r\n view.currentGrid.gridView.trigger('willUpdate');\r\n jsData.TaskItemExecution\r\n .findAll({\r\n query: {\r\n $expand: 'TaskItem',\r\n $filter: consts.FILTER_FILE_IMPORT,\r\n $top: MAX_TASK_ITEM_COUNT,\r\n },\r\n }, {\r\n bypassCache: true,\r\n cacheResponse: false,\r\n entitySet: edm.currentAccount.TaskItemExecutions,\r\n }).then((data) => {\r\n view.currentGrid.gridView.patch({\r\n dataSource: {\r\n data: processData(view.isMultiAccount, data),\r\n },\r\n });\r\n view.currentGrid.gridView.trigger('didUpdate');\r\n });\r\n}\r\n\r\nexport function updateTaskItemSessionId(taskId, sessionId = null, logMsg) {\r\n let adWordsSessionId = sessionId;\r\n\r\n if (!adWordsSessionId) {\r\n adWordsSessionId = createImportTaskItemHelper.getGoogleImportInfoFromCookie().googleSessionId;\r\n }\r\n\r\n if (adWordsSessionId) {\r\n jsData.TaskItem.find(taskId, {\r\n cacheResponse: false,\r\n }).then((taskItem) => {\r\n return jsData.TaskItem.update(taskId, _.extend(taskItem, {\r\n AdWordsImportContext: _.extend(taskItem.AdWordsImportContext, {\r\n SessionId: adWordsSessionId,\r\n AdWordsSessionUserId: _.propertyOf(config.get('CurrentUser'))('Id'),\r\n SessionType: taskItem.AdWordsImportContext.SessionType === 'CloudImport' ? null : taskItem.AdWordsImportContext.SessionType,\r\n }),\r\n // patch request need to reset ImportUserPreferences to undefined, otherwise, MT will meet issue.\r\n ImportUserPreferences: undefined,\r\n }));\r\n }).then(() => {\r\n if (logMsg) {\r\n logMsg(constants.LOGCATEGORY.TRACE, 'login Google_Credentials_Update_Success');\r\n }\r\n\r\n showSuccess(i18n.get('Scheduled_Import_GAuth_Edit_Success'));\r\n }).catch((error) => {\r\n if (logMsg) {\r\n logMsg(constants.LOGCATEGORY.TRACE, `Google_Credentials_Update_Error: ${JSON.stringify(error)}`);\r\n }\r\n\r\n showError(i18n.get('GenericErrorMessage'));\r\n });\r\n } else {\r\n if (logMsg) {\r\n logMsg(constants.LOGCATEGORY.TRACE, 'No_Session_Id');\r\n }\r\n\r\n showError(i18n.get('GenericErrorMessage'));\r\n }\r\n}\r\n\r\nexport function findImportTaskItem(id) {\r\n return jsData.TaskItem.find(id, {\r\n cacheResponse: false,\r\n });\r\n}\r\n","import downloadService from '@bingads-webui-component-legacy/download/index';\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\n\r\nexport default function download(identifier, type) {\r\n const url = `/BulkUploadFiles/GetBulkFileUrl(CustomerId=:customer_id,FileIdentifier=${identifier},BulkFileType=${type})`;\r\n\r\n odata.get(url)\r\n .then((data) => {\r\n downloadService.download(data);\r\n })\r\n .catch((err) => {\r\n window.App.views.alertCenter.showError(i18n.get('GenericErrorMessage'));\r\n instrumentation.logError('import campaign download', JSON.stringify(err));\r\n });\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport { ImportOptionsSummaryBuilder } from '@bingads-webui-campaign/google-import-page';\r\nimport { ImportOptionsSummaryBuilder as FileImportOptionsSummaryBuilder, parseModelToImportUserPreference, parseJsonFormatImportOptions, getFacebookImportOptionBlackList } from '@bingads-webui-campaign/import-components';\r\nimport { getSubFieldsBlackList as getFileImportOptionBlackList } from '@bingads-webui-campaign/file-import-page';\r\nimport { getSubFieldsBlackList as getAmazonImportOptionBlackList } from '@bingads-webui-campaign/amazon-import';\r\nimport { getSubFieldsBlackList as getPinterestImportOptionBlackList } from '@bingads-webui-campaign/pinterest-import';\r\n\r\nimport creatorColumnTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/creator-column.pug';\r\nimport freqColumnTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/freq-column.pug';\r\nimport importTypeTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/import-type.pug';\r\nimport nameTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/import-log-name.pug';\r\nimport { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport { importSummaryColDataToTemplate } from '@bingads-webui-campaign-legacy/scheduled-import/view/shared-column-configs/import-summary-col';\r\nimport actionsLogTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/import-log-actions.pug';\r\nimport preferencesLogTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/import-settings-col.pug';\r\n\r\nimport config1 from '@bingads-webui-component-legacy/config/index';\r\nimport dateUtil from '@bingads-webui-component-legacy/humanize/date';\r\nimport { IMPORT_TYPE } from '@bingads-webui-campaign-legacy/scheduled-import/view/import-type';\r\nimport { getImportButtonOptions } from './import-center-options';\r\n\r\nconst amdI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/import-campaigns');\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\nconst i18nGlobal = window.globalLegacyI18n.get('component/i18n/loader!legacy/global');\r\n\r\nconst permissions = config1.get('Permissions');\r\nconst importSettingsSummaryBuilder = new ImportOptionsSummaryBuilder({ i18n });\r\nconst fileImportSettingsSummaryBuilder = new FileImportOptionsSummaryBuilder({ i18n });\r\n\r\n// import option black lists\r\nconst fileImportOptionBlackList = getFileImportOptionBlackList(permissions);\r\nconst facebookImportOptionBlackList = getFacebookImportOptionBlackList(permissions);\r\nconst amazonImportOptionBlackList = getAmazonImportOptionBlackList(permissions);\r\nconst pinterestImportOptionBlackList = getPinterestImportOptionBlackList(permissions);\r\n\r\nfunction getDropdownItemConfig(view, name, text, isFirstDropdownOption) {\r\n return {\r\n name,\r\n type: 'buttonMenuItem',\r\n text: i18n.getString(text),\r\n action: {\r\n viewFactory: () => {\r\n view.setErrorFilterPredicate(isFirstDropdownOption);\r\n view.refreshGrid();\r\n },\r\n setMenuTitle: i18n.getString(text),\r\n },\r\n };\r\n}\r\n\r\nfunction getLegacyToolbarConfig(view) {\r\n return {\r\n container: view.$('.log-toolbar'),\r\n items: [\r\n {\r\n name: 'logselect',\r\n type: 'dropdown',\r\n isNewFeature: false,\r\n level: 1,\r\n title: i18n.getString('AutomatedRules_RulesHistoryGrid_AllLogs'),\r\n items: [\r\n getDropdownItemConfig(view, 'all', 'AutomatedRules_RulesHistoryGrid_AllLogs', true),\r\n getDropdownItemConfig(view, 'changeorerror', 'Scheduled_Import_Logs_With_Errors', false),\r\n ],\r\n },\r\n {\r\n name: 'refresh',\r\n type: 'button',\r\n text: i18n.getString('CampaignImport_Refresh'),\r\n leftIconClass: 'spritedimage refresh-icon',\r\n action: () => {\r\n view.refreshGrid();\r\n },\r\n }],\r\n };\r\n}\r\n\r\nfunction getGridSwitchDropdownItem(view, text, isGoogleImport) {\r\n return {\r\n key: text,\r\n value: isGoogleImport,\r\n text,\r\n classes: 'grid-menu',\r\n };\r\n}\r\n\r\nfunction getVNextToolbarConfig(view) {\r\n const config = [];\r\n\r\n // if not in import center and not multi account and not smart account and not up smart account's log grid\r\n if (view.importChannelType === undefined && !view.isMultiAccount && !view.isSmartAccount && !view.isUPSmartAccount) {\r\n const filterText = {\r\n [IMPORT_TYPE.facebookimport]: i18n.getString('Scheduled_Import_Logs_Facebook_Imports'),\r\n [IMPORT_TYPE.amazonImport]: i18n.getString('Scheduled_Import_Logs_Amazon_Imports'),\r\n [IMPORT_TYPE.pinterestImport]: i18n.getString('Scheduled_Import_Logs_Pinterest_Imports'),\r\n [IMPORT_TYPE.fileimport]: i18n.getString('Scheduled_Import_Logs_File_Imports'),\r\n }[view.importType] || i18n.getString('Scheduled_Import_Logs_Google_Imports');\r\n\r\n const items = _.compact([\r\n view.supportedImportTypes[IMPORT_TYPE.googleimport] && {\r\n text: i18n.getString('Scheduled_Import_Logs_Google_Imports'),\r\n className: 'google-log-grid',\r\n onClick: () => {\r\n view.setImportType(IMPORT_TYPE.googleimport);\r\n view.updateToolbarTextForVNext(i18n.getString('Scheduled_Import_Logs_Google_Imports'));\r\n },\r\n },\r\n view.supportedImportTypes[IMPORT_TYPE.facebookimport] && {\r\n text: i18n.getString('Scheduled_Import_Logs_Facebook_Imports'),\r\n className: 'facebook-log-grid',\r\n onClick: () => {\r\n view.setImportType(IMPORT_TYPE.facebookimport);\r\n view.updateToolbarTextForVNext(i18n.getString('Scheduled_Import_Logs_Facebook_Imports'));\r\n },\r\n },\r\n view.supportedImportTypes[IMPORT_TYPE.amazonImport] && {\r\n text: i18n.getString('Scheduled_Import_Logs_Amazon_Imports'),\r\n className: 'amazon-log-grid',\r\n onClick: () => {\r\n view.setImportType(IMPORT_TYPE.amazonImport);\r\n view.updateToolbarTextForVNext(i18n.getString('Scheduled_Import_Logs_Amazon_Imports'));\r\n },\r\n },\r\n view.supportedImportTypes[IMPORT_TYPE.pinterestImport] && {\r\n text: i18n.getString('Scheduled_Import_Logs_Pinterest_Imports'),\r\n className: 'pinterest-log-grid',\r\n onClick: () => {\r\n view.setImportType(IMPORT_TYPE.pinterestImport);\r\n\r\n view.updateToolbarTextForVNext(i18n.getString('Scheduled_Import_Logs_Pinterest_Imports'));\r\n },\r\n },\r\n {\r\n text: i18n.getString('Scheduled_Import_Logs_File_Imports'),\r\n className: 'file-log-grid',\r\n onClick: () => {\r\n view.setImportType(IMPORT_TYPE.fileimport);\r\n view.updateToolbarTextForVNext(i18n.getString('Scheduled_Import_Logs_File_Imports'));\r\n },\r\n },\r\n ]);\r\n\r\n if (items.length > 1) {\r\n config.push(['logselect', {\r\n id: 'logselect',\r\n type: 'dropdown',\r\n button: {\r\n text: filterText,\r\n },\r\n menu: {\r\n items,\r\n },\r\n }]);\r\n }\r\n\r\n }\r\n if (view.importChannelType !== undefined) {\r\n const importButtonOptions = getImportButtonOptions(i18n, view.importChannelType, null, view);\r\n\r\n config.push(importButtonOptions);\r\n }\r\n config.push(['refresh', {\r\n id: 'refresh_log',\r\n type: 'button',\r\n iconLeftGlyphName: 'ba-Refresh',\r\n text: i18n.getString('CampaignImport_Refresh'),\r\n onClick: () => {\r\n view.refreshGrid();\r\n },\r\n }]);\r\n\r\n return _.reduce(\r\n config,\r\n (map, [key, value]) => {\r\n map.set(key, value);\r\n return map;\r\n },\r\n new Map(),\r\n );\r\n}\r\n\r\nexport function getToolbarConfig(view) {\r\n if (view.isForVNext) {\r\n return getVNextToolbarConfig(view);\r\n }\r\n return getLegacyToolbarConfig(view);\r\n}\r\n\r\nfunction mapTypeToString(type, isAutomated, isCustomerLevel, multiAccountTaskGuid, supportedImportTypes) {\r\n if (isCustomerLevel) {\r\n return isAutomated ?\r\n i18n.get('Scheduled_Import_MutliAccount_Type') :\r\n i18n.get('Scheduled_Import_MutliAccount_RunNow_Type');\r\n } else if (multiAccountTaskGuid) {\r\n return isAutomated ?\r\n i18n.get('Scheduled_Import_MutliAccount_Task_Type') :\r\n i18n.get('Scheduled_Import_MutliAccount_Task_RunNow_Type');\r\n } else if (isAutomated && type === 'GoogleAPIImport') {\r\n return i18n.get('Scheduled_Import_Type');\r\n } else if (type === 'GoogleAPIImport') {\r\n return i18n.get('Scheduled_Import_RunNow_Type');\r\n } else if (supportedImportTypes[IMPORT_TYPE.facebookimport] && isAutomated && type === 'FacebookImport') {\r\n return i18n.get('Scheduled_Import_Type_Facebook');\r\n } else if (supportedImportTypes[IMPORT_TYPE.facebookimport] && type === 'FacebookImport') {\r\n return i18n.get('Scheduled_Import_RunNow_Type_Facebook');\r\n } else if (supportedImportTypes[IMPORT_TYPE.amazonImport] && isAutomated && type === 'AmazonImport') {\r\n return i18n.get('Scheduled_Import_Type_Amazon');\r\n } else if (supportedImportTypes[IMPORT_TYPE.amazonImport] && type === 'AmazonImport') {\r\n return i18n.get('Scheduled_Import_RunNow_Type_Amazon');\r\n } else if (supportedImportTypes[IMPORT_TYPE.pinterestImport] && isAutomated && type === 'PinterestImport') {\r\n return i18n.get('Scheduled_Import_Type_Pinterest');\r\n } else if (supportedImportTypes[IMPORT_TYPE.pinterestImport] && type === 'PinterestImport') {\r\n return i18n.get('Scheduled_Import_RunNow_Type_Pinterest');\r\n }\r\n return i18n.get('Scheduled_Import_File_Type');\r\n}\r\n\r\nfunction getColumnsConfig(view) {\r\n let columns = _.compact([bingadsGridColumn({\r\n name: 'StartTime',\r\n title: 'ImprovedAdScheduling_Column_Heading_Start_Time',\r\n property: _.identity,\r\n bodyClasses: ['col-StartTime'],\r\n template: (local) => {\r\n return freqColumnTmpl({\r\n Freq: amdI18n.formatDate(new Date(local.value.StartedAt), { datetime: 'full' }),\r\n IsChildBatch: local.value.IsChildBatch,\r\n IsChildAccountTask: local.value.IsChildAccountTask,\r\n });\r\n },\r\n i18n: i18nGlobal,\r\n }), bingadsGridColumn({\r\n name: 'Name',\r\n title: 'Scheduled_Import_Name',\r\n property: _.identity,\r\n bodyClasses: ['col-Name'],\r\n template: (local) => {\r\n const fileName = decodeURIComponent(local.value.UploadFileName);\r\n const fileNameExists = local.value.Type === 'FileBasedImport' && fileName && fileName !== 'null';\r\n let name;\r\n\r\n if (fileNameExists) {\r\n name = fileName;\r\n } else {\r\n name = local.value.ImportName;\r\n }\r\n\r\n return nameTmpl({\r\n ariaLabel: name && i18n.get('Download_Import_File').replace('{{fileName}}', name),\r\n fileNameExists,\r\n name: name || i18nGlobal.get('QualityScore_NA'),\r\n IsChildBatch: local.value.IsChildBatch,\r\n IsChildAccountTask: local.value.IsChildAccountTask,\r\n });\r\n },\r\n i18n,\r\n }), bingadsGridColumn({\r\n name: 'CreatedBy',\r\n title: 'AutomatedRules_RulesManagementGrid_CreatedBy',\r\n property: _.identity,\r\n bodyClasses: ['col-CreatedBy'],\r\n template: (local) => {\r\n if (local.value.TaskItem) {\r\n return creatorColumnTmpl({\r\n Creator: local.value.TaskItem.ModifiedBy && local.value.TaskItem.ModifiedBy.Name,\r\n DateTime: dateUtil.format(new Date(local.value.TaskItem.CreatedAt), 'dddd, MMMM d, yyyy', config1.get('culture')),\r\n Time: dateUtil.format(new Date(local.value.TaskItem.CreatedAt), 'hh:mm:ss tt', config1.get('culture')),\r\n });\r\n }\r\n return i18n.get('Import_Log_Grid_Created_By_Dash');\r\n },\r\n i18n,\r\n }), view.isUPSmartAccount ? null : bingadsGridColumn({\r\n name: 'ImportSettings',\r\n title: 'Import_ImportSettings_Header',\r\n property: _.identity,\r\n helpId: 'pop_BA_Import_ImportSettings',\r\n bodyClasses: ['col-ImportSettings'],\r\n template: (local) => {\r\n const importSettings = local.value.ImportUserPreference;\r\n const parsedValue = importSettings && JSON.parse(importSettings);\r\n const options = parsedValue && parseModelToImportUserPreference(parseJsonFormatImportOptions({ options: parsedValue }));\r\n const showSmartType = !view.isMultiAccount && view.isForVNext && permissions.IsSmartImportEnabled && local.value.TaskItem.IsSmartImport;\r\n let enabledOptions;\r\n let settingsText;\r\n\r\n if (local.value.Type === 'GoogleAPIImport' ||\r\n view.isMultiAccount ||\r\n (view.supportedImportTypes[IMPORT_TYPE.facebookimport] && local.value.Type === 'FacebookImport') ||\r\n (view.supportedImportTypes[IMPORT_TYPE.amazonImport] && local.value.Type === 'AmazonImport') ||\r\n (view.supportedImportTypes[IMPORT_TYPE.pinterestImport] && local.value.Type === 'PinterestImport')) {\r\n const importOptionBlackList = {\r\n 'FacebookImport': facebookImportOptionBlackList,\r\n 'AmazonImport': amazonImportOptionBlackList,\r\n 'PinterestImport': pinterestImportOptionBlackList,\r\n }[local.value.Type] || [];\r\n\r\n if (options && importOptionBlackList.length) {\r\n enabledOptions = {};\r\n _.map(options, (option, key) => {\r\n if (!_.contains(importOptionBlackList, key)) {\r\n enabledOptions[key] = option;\r\n }\r\n });\r\n } else {\r\n enabledOptions = options;\r\n }\r\n\r\n settingsText = enabledOptions && importSettingsSummaryBuilder.generateSummaryFromSelectedOptions(enabledOptions, true);\r\n } else {\r\n if (options && fileImportOptionBlackList.length) {\r\n enabledOptions = {};\r\n _.map(options, (option, key) => {\r\n if (!_.contains(fileImportOptionBlackList, key)) {\r\n enabledOptions[key] = option;\r\n }\r\n });\r\n } else {\r\n enabledOptions = options;\r\n }\r\n\r\n settingsText = enabledOptions && fileImportSettingsSummaryBuilder.generateSummaryFromSelectedOptions(enabledOptions, true);\r\n }\r\n\r\n\r\n return preferencesLogTmpl({\r\n showSmartType,\r\n showTooltipIcon: !!parsedValue,\r\n settingsText: settingsText || i18nGlobal.get('QualityScore_NA'),\r\n importSettingsLabel: i18n.get('Import_ImportSettings_Header'),\r\n i18n,\r\n });\r\n },\r\n i18n,\r\n }), bingadsGridColumn({\r\n name: 'ImportType',\r\n title: 'AudiencesGrid_Header_Type',\r\n property: _.identity,\r\n bodyClasses: ['col-ImportType'],\r\n helpId: 'pop_BA_Import_HistoryType',\r\n template: (local) => {\r\n let importSourceAccountInfo;\r\n\r\n if (local.value.GoogleAccountName && local.value.GoogleCustomerId) {\r\n importSourceAccountInfo = `${local.value.GoogleAccountName} (${local.value.GoogleCustomerId})`;\r\n } else if (local.value.GoogleAccountName) {\r\n importSourceAccountInfo = local.value.GoogleAccountName;\r\n } else if (view.supportedImportTypes[IMPORT_TYPE.facebookimport] || view.supportedImportTypes[IMPORT_TYPE.amazonImport] || view.supportedImportTypes[IMPORT_TYPE.pinterestImport]) {\r\n if (local.value.ExternalAccountName && local.value.ExternalCustomerId) {\r\n importSourceAccountInfo = `${local.value.ExternalAccountName} (${local.value.ExternalCustomerId})`;\r\n } else if (local.value.ExternalAccountName) {\r\n importSourceAccountInfo = local.value.ExternalAccountName;\r\n }\r\n }\r\n\r\n return importTypeTmpl({\r\n Type: mapTypeToString(\r\n local.value.Type,\r\n local.value.IsAutomated,\r\n local.value.isCustomerLevel,\r\n local.value.MultiAccountTaskGuid,\r\n view.supportedImportTypes,\r\n ),\r\n IsGoogleImport: local.value.Type === 'GoogleAPIImport' || view.isMultiAccount,\r\n IsFacebookImport: view.supportedImportTypes[IMPORT_TYPE.facebookimport] && local.value.Type === 'FacebookImport',\r\n IsAmazonImport: view.supportedImportTypes[IMPORT_TYPE.amazonImport] && local.value.Type === 'AmazonImport',\r\n IsPinterestImport: view.supportedImportTypes[IMPORT_TYPE.pinterestImport] && local.value.Type === 'PinterestImport',\r\n ImportSourceAccountInfo: importSourceAccountInfo,\r\n });\r\n },\r\n i18n: i18nGlobal,\r\n }), bingadsGridColumn({\r\n name: 'Summary',\r\n title: 'AutomatedRules_RulesHistoryGrid_Summary',\r\n property: _.identity,\r\n bodyClasses: ['col-Summary'],\r\n helpId: 'pop_BA_Import_HistorySummary',\r\n template: (local) => importSummaryColDataToTemplate(local.value, i18n),\r\n i18n,\r\n }), bingadsGridColumn({\r\n name: 'Error',\r\n title: 'Scheduled_Import_History_Actions_Header',\r\n property: _.identity,\r\n bodyClasses: ['col-Error'],\r\n helpId: 'pop_BA_Import_History_Action',\r\n template: (local) => {\r\n const hasError = (local.value.ErrorCount && local.value.ErrorFileIdentifier) ||\r\n (local.value.EntityStatistics && _.any(local.value.EntityStatistics.Values, (stat) => stat.HasWarning === true));\r\n const hasErrorSummary = permissions && permissions.dynamic && permissions.dynamic.ImportNewErrorSummaryDownloadLink && hasError && local.value.ErrorSummaryFileIdentifier !== null;\r\n const hasPreview = (local.value.ImportStatus === 'ValidationCompleted') && local.value.Status === 'Completed';\r\n const hasErrorCode = permissions && permissions.dynamic && permissions.dynamic.TokenInvalidImportNotification && local.value.ErrorCode !== null;\r\n\r\n if (hasError) {\r\n view.logColumns({\r\n column: 'Import_History_Action',\r\n isMultiAccount: view.isMultiAccount,\r\n columnData: local.value,\r\n action: 'has',\r\n message: 'error file',\r\n });\r\n }\r\n\r\n if (hasErrorSummary) {\r\n view.logColumns({\r\n column: 'Import_History_Action',\r\n isMultiAccount: view.isMultiAccount,\r\n columnData: local.value,\r\n action: 'has',\r\n message: 'error summary file',\r\n });\r\n }\r\n\r\n return actionsLogTmpl({\r\n hasError,\r\n hasErrorSummary,\r\n hasPreview,\r\n i18n,\r\n hasErrorCode,\r\n errorDetailsLabel: i18n.getString('Grid_ErrorDetails'),\r\n });\r\n },\r\n i18n,\r\n })]);\r\n\r\n return columns;\r\n}\r\n\r\nexport class GoogleImportLogConfig {\r\n constructor(view) {\r\n _.extend(this, {\r\n name: 'GoogleImportLogGrid',\r\n el: view.$('.googleImportLogGrid'),\r\n dataSource: view.getImportLogDataSourceConfig(view),\r\n columns: getColumnsConfig(view),\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': i18n.get('Scheduled_Import_History_Logs_Title') },\r\n pluginsConfig: {\r\n toolbar: getToolbarConfig(view),\r\n },\r\n plugins: {\r\n a11y: { i18n },\r\n uiBlocker: {\r\n el: view.$('.googleImportLogGrid'),\r\n },\r\n placeholder: {}, // use placeholder plugin to hide PageSize dropdown\r\n pagination: {\r\n pageSizeText: i18nGlobal.getString('Grid_ShowRows'),\r\n },\r\n perfMarker: {\r\n appConfig: config1,\r\n gridMarker: view.perfMarker,\r\n },\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport class FacebookImportLogConfig {\r\n constructor(view) {\r\n _.extend(this, {\r\n name: 'FacebookImportLogGrid',\r\n el: view.$('.facebookImportLogGrid'),\r\n dataSource: view.getImportLogDataSourceConfig({isForVNext: true, isFacebookImport: true, supportedImportTypes: view.supportedImportTypes }),\r\n columns: getColumnsConfig(view),\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': i18n.get('Scheduled_Import_History_Logs_Title') },\r\n pluginsConfig: {\r\n toolbar: getToolbarConfig(view),\r\n },\r\n plugins: {\r\n a11y: { i18n },\r\n uiBlocker: {\r\n el: view.$('.facebookImportLogGrid'),\r\n },\r\n placeholder: {}, // use placeholder plugin to hide PageSize dropdown\r\n pagination: {\r\n pageSizeText: i18nGlobal.getString('Grid_ShowRows'),\r\n },\r\n perfMarker: {\r\n appConfig: config1,\r\n gridMarker: view.perfMarker,\r\n },\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport class AmazonImportLogConfig {\r\n constructor(view) {\r\n _.extend(this, {\r\n name: 'AmazonImportLogGrid',\r\n el: view.$('.amazonImportLogGrid'),\r\n dataSource: view.getImportLogDataSourceConfig({isForVNext: true, isAmazonImport: true, supportedImportTypes: view.supportedImportTypes }),\r\n columns: getColumnsConfig(view),\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': i18n.get('Scheduled_Import_History_Logs_Title') },\r\n pluginsConfig: {\r\n toolbar: getToolbarConfig(view),\r\n },\r\n plugins: {\r\n a11y: { i18n },\r\n uiBlocker: {\r\n el: view.$('.amazonImportLogGrid'),\r\n },\r\n placeholder: {}, // use placeholder plugin to hide PageSize dropdown\r\n pagination: {\r\n pageSizeText: i18nGlobal.getString('Grid_ShowRows'),\r\n },\r\n perfMarker: {\r\n appConfig: config1,\r\n gridMarker: view.perfMarker,\r\n },\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport class PinterestImportLogConfig {\r\n constructor(view) {\r\n _.extend(this, {\r\n name: 'PinterestImportLogGrid',\r\n el: view.$('.pinterestImportLogGrid'),\r\n dataSource: view.getImportLogDataSourceConfig({isForVNext: true, isPinterestImport: true, supportedImportTypes: view.supportedImportTypes }),\r\n columns: getColumnsConfig(view),\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': i18n.get('Scheduled_Import_History_Logs_Title') },\r\n pluginsConfig: {\r\n toolbar: getToolbarConfig(view),\r\n },\r\n plugins: {\r\n a11y: { i18n },\r\n uiBlocker: {\r\n el: view.$('.pinterestImportLogGrid'),\r\n },\r\n placeholder: {}, // use placeholder plugin to hide PageSize dropdown\r\n pagination: {\r\n pageSizeText: i18nGlobal.getString('Grid_ShowRows'),\r\n },\r\n perfMarker: {\r\n appConfig: config1,\r\n gridMarker: view.perfMarker,\r\n },\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport class FileImportLogConfig {\r\n constructor(view) {\r\n _.extend(this, {\r\n name: 'FileImportLogGrid',\r\n el: view.$('.fileImportLogGrid'),\r\n dataSource: view.getMemoryDataSourceConfig(),\r\n columns: getColumnsConfig(view).filter((item) => {\r\n return item.name !== 'CreatedBy';\r\n }), // we don't show CreatedBy column for file import since it has no such data\r\n tableClasses: ['table', 'table-bordered'],\r\n plugins: {\r\n a11y: { i18n },\r\n uiBlocker: {\r\n el: view.$('.fileImportLogGrid'),\r\n },\r\n placeholder: {}, // use placeholder plugin to hide PageSize dropdown\r\n pagination: {\r\n pageSizeText: i18nGlobal.getString('Grid_ShowRows'),\r\n },\r\n perfMarker: {\r\n appConfig: config1,\r\n gridMarker: view.perfMarker,\r\n },\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport function getGridSwitchToolbarConfig(view) {\r\n return {\r\n classes: ['log-toolbar', 'grid-toolbar'],\r\n items: view.supportedImportTypes[IMPORT_TYPE.googleimport] && Object.keys(view.supportedImportTypes).length === 1 ? [{\r\n type: 'button',\r\n text: i18n.getString('CampaignImport_Refresh'),\r\n iconLeft: ['spiritedimage', 'refresh-icon'],\r\n onClick: () => {\r\n view.refreshGrid();\r\n },\r\n }] : [{\r\n type: 'selector',\r\n classes: ['grid-groupmenu-container', 'dropdown', 'grid-toolbar-front-theme'],\r\n button: {\r\n classes: ['grid-menu-container', 'grid-colchooser', 'dropdown-toggle'],\r\n iconRight: ['spritedimage toolbar-icon icon-arrowdown-normal'],\r\n },\r\n items: [\r\n getGridSwitchDropdownItem(view, i18n.getString('Scheduled_Import_Logs_Google_Imports'), true),\r\n getGridSwitchDropdownItem(view, i18n.getString('Scheduled_Import_Logs_File_Imports'), false),\r\n ],\r\n onChange: (item) => {\r\n view.setImportType(item.value);\r\n },\r\n },\r\n {\r\n type: 'button',\r\n text: i18n.getString('CampaignImport_Refresh'),\r\n iconLeft: ['spiritedimage', 'refresh-icon'],\r\n onClick: () => {\r\n view.refreshGrid();\r\n },\r\n }],\r\n };\r\n}\r\n","import ko from 'knockout';\r\n\r\nexport default function ViewModel() {\r\n this.showGoogleImportGrid = ko.observable(false);\r\n this.showFacebookImportGrid = ko.observable(false);\r\n this.showAmazonImportGrid = ko.observable(false);\r\n this.showPinterestImportGrid = ko.observable(false);\r\n this.showFileImportGrid = ko.observable(false);\r\n this.isFirstSwitch = ko.observable(true);\r\n\r\n this.showNoGoogleImportMsg = ko.observable(false);\r\n this.showNoFileImportMsg = ko.observable(false);\r\n this.showNoFacebookImportMsg = ko.observable(false);\r\n this.showNoAmazonImportMsg = ko.observable(false);\r\n this.showNoPinterestImportMsg = ko.observable(false);\r\n}\r\n","import Backbone from 'backbone';\r\n\r\nimport importSettingsTooltipTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/import-settings-tooltip.pug';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\n\r\nexport class ImportSettingsTooltipView extends Backbone.View {\r\n initialize({ formView }) {\r\n this.formView = formView;\r\n }\r\n\r\n render() {\r\n this.$el.html(importSettingsTooltipTmpl({\r\n i18n,\r\n }));\r\n\r\n this.$('.panel-body').append(this.formView.render().$el);\r\n\r\n return this;\r\n }\r\n\r\n remove() {\r\n this.formView.remove();\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport 'bootstrap';\r\nimport $ from 'jquery';\r\nimport ko from 'knockout';\r\nimport Promise from 'bluebird';\r\nimport _ from '@bingads-webui-component-legacy/extension/underscore';\r\n\r\nimport { GoogleLoginRepository, FacebookImportRepository, loadFacebookSdk } from '@bingads-webui-campaign/import-shared-repositories';\r\nimport { PinterestLoginRepository, PinterestImportRepository } from '@bingads-webui-campaign/pinterest-import';\r\nimport { dismissCallout } from '@bingads-webui-campaign/import-callout';\r\nimport { handleGoogleLoginAuthError, handleFacebookLoginError, handlePinterestLoginError } from '@bingads-webui-campaign/imports-core';\r\nimport { createDisabledUETSelectorClass } from '@bingads-webui-campaign/import-components';\r\nimport { ToolbarView } from '@bingads-webui/toolbar';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport download from '@bingads-webui-campaign-legacy/import-campaigns/shared/download';\r\nimport showGooglePopup from '@bingads-webui-campaign-legacy/import-campaigns/shared/showGoogleLoginPopup';\r\nimport headerTemplateConfig from '@bingads-webui-campaign-legacy/bingadsgrid/config-preprocessor/header-template-config';\r\nimport { AmazonImportLogConfig, GoogleImportLogConfig, FacebookImportLogConfig, FileImportLogConfig, PinterestImportLogConfig, getGridSwitchToolbarConfig, getToolbarConfig } from '@bingads-webui-campaign-legacy/scheduled-import/view/import-log-grid-config';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport tmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/import-log-grid.pug';\r\nimport toolTipTmpl from '@bingads-webui-campaign-legacy/import-campaigns/template/lastImportTable/toolTip.pug';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/scheduled-import/viewmodel/import-log-grid';\r\nimport { showError, showSuccess } from '@bingads-webui-component-legacy/toast/index';\r\nimport jsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport pgrid from '@bingads-webui-component-legacy/github/modules/projection-grid/module/projection-grid';\r\nimport UIBlocker from '@bingads-webui-component-legacy/uiblocker/service/uiBlocker';\r\nimport $http from '@bingads-webui-component-legacy/http/channel/core';\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\nimport { queryify } from '@bingads-webui/url-util';\r\nimport '@bingads-webui-static-legacy/extension/promise/withUiBlock';\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\nimport { perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\n\r\nimport { getBlacklist } from '@bingads-webui-campaign-legacy/import-campaigns/spa/options-blacklist';\r\nimport { ImportSettingsTooltipView } from '@bingads-webui-campaign-legacy/scheduled-import/view/import-settings-tooltip';\r\n\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\n\r\nimport { IMPORT_TYPE, IMPORT_TYPE_TO_IMPORT_NAME } from '@bingads-webui-campaign-legacy/scheduled-import/view/import-type';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\n\r\nconst permissions = config.get('Permissions') || {};\r\n\r\nfunction debouncedVersion(func) { // prevent multiple click\r\n return _.debounce(func, 2000, true);\r\n}\r\n\r\nconst logMsg = (category, msg) => logger.logMessage([category], constants.LOGLEVEL.INFO, '/campaign/importcampaign', msg);\r\nconst logColumns = ({column, isMultiAccount, columnData, action, message}) => {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign', `column:${column}, ExecutionId:${isMultiAccount ? columnData.MultiAccountTaskExecutionId : columnData.Id}, ImportId:${columnData.ImportId}, TaskId:${columnData.TaskId}, MultiAccountTaskId:${isMultiAccount ? columnData.MultiAccountTaskId : null}, Action:${action}, Mes:${message}`);\r\n};\r\n\r\nexport default class View extends Backbone.View {\r\n initialize(options = {}) {\r\n if (options.perfMarker) {\r\n this.perfMarker = options.perfMarker.createChild('Import_Log_Grid_Load');\r\n this.perfMarker.willInit();\r\n }\r\n this.importType = options.importType;\r\n this.viewModel = new ViewModel();\r\n this.isMultiAccount = options.isMultiAccount;\r\n this.isSmartAccount = options.isSmartAccount || false; // default value is used for MAE\r\n this.isUPSmartAccount = options.isUPSmartAccount || false; // default value is used for MAE\r\n this.supportedImportTypes = options.supportedImportTypes || { [IMPORT_TYPE.googleimport]: IMPORT_TYPE_TO_IMPORT_NAME[IMPORT_TYPE.googleimport] }; // default value is used for MAE\r\n this.isForVNext = options.isForVNext;\r\n this.importChannelType = options.importChannelType;\r\n this.scope = options.scope;\r\n this.toolbarConfig = getToolbarConfig(this);\r\n this.updateToolbarTextForVNext = options.updateToolbarTextForVNext;\r\n this.router = options.router;\r\n this.getImportLogDataSourceConfig = options.getImportLogDataSourceConfig;\r\n this.getMemoryDataSourceConfig = options.getMemoryDataSourceConfig;\r\n this.updateTaskItemSessionId = options.updateTaskItemSessionId;\r\n this.findImportTaskItem = options.findImportTaskItem;\r\n this.updateMemoryGrid = options.updateMemoryGrid;\r\n this.overridingEvent = options.overridingEvent;\r\n this.importOptionsFormLoader = options.importOptionsFormLoader;\r\n this.summaryTableLoader = options.summaryTableLoader;\r\n this.uetTagSelectorViewLoader = options.uetTagSelectorViewLoader;\r\n this.newI18n = options.newI18n;\r\n this.logColumns = logColumns;\r\n }\r\n\r\n events() {\r\n return _.defaults({}, this.overridingEvent, {\r\n 'click .import-settings.icon-info': 'showImportSettings',\r\n 'click .import-summary.icon-info, .import-actions.learn-more': 'showSummaryDetails',\r\n 'click .googleLogin': 'showGoogleLoginPopup',\r\n 'click .facebookLogin': 'showFacebookLoginPopup',\r\n 'click .pinterestLogin': 'showPinterestLoginPopup',\r\n 'click .download-error': 'downloadErrorFile',\r\n 'click .download-error-summary': 'downloadErrorSummaryFile',\r\n 'click .download-file': 'downloadUploadedFile',\r\n 'keypress input': 'onKeyPressed',\r\n 'click .btn__preview': debouncedVersion(this.previewAnImport),\r\n 'click .btn__cancel': debouncedVersion(this.cancelAnImport),\r\n });\r\n }\r\n\r\n refreshGrid() {\r\n if (this.viewModel.showGoogleImportGrid()) {\r\n if (this.googleImportGridRendered) {\r\n this.googleImportGrid.gridView.refresh(true);\r\n } else {\r\n this.googleImportGridRendered = true;\r\n this.googleImportGrid.gridView.render();\r\n }\r\n } else if (this.viewModel.showFacebookImportGrid()) {\r\n if (this.facebookImportGridRendered) {\r\n this.facebookImportGrid.gridView.refresh(true);\r\n } else {\r\n this.facebookImportGridRendered = true;\r\n this.facebookImportGrid.gridView.render();\r\n }\r\n } else if (this.viewModel.showAmazonImportGrid()) {\r\n if (this.amazonImportGridRendered) {\r\n this.amazonImportGrid.gridView.refresh(true);\r\n } else {\r\n this.amazonImportGridRendered = true;\r\n this.amazonImportGrid.gridView.render();\r\n }\r\n } else if (this.viewModel.showPinterestImportGrid()) {\r\n if (this.pinterestImportGridRendered) {\r\n this.pinterestImportGrid.gridView.refresh(true);\r\n } else {\r\n this.pinterestImportGridRendered = true;\r\n this.pinterestImportGrid.gridView.render();\r\n }\r\n } else {\r\n this.updateMemoryGrid(this);\r\n }\r\n }\r\n\r\n setImportType(importType = IMPORT_TYPE.googleimport) {\r\n if ((this.viewModel.showGoogleImportGrid() && importType === IMPORT_TYPE.googleimport) ||\r\n (this.viewModel.showFacebookImportGrid() && importType === IMPORT_TYPE.facebookimport) ||\r\n (this.viewModel.showAmazonImportGrid() && importType === IMPORT_TYPE.amazonImport) ||\r\n (this.viewModel.showPinterestImportGrid() && importType === IMPORT_TYPE.pinterestImport)) {\r\n // already displaying correct grid\r\n return;\r\n }\r\n\r\n this.importType = importType;\r\n\r\n // hide old grid, set new, and update new\r\n this.viewModel.showGoogleImportGrid(importType === IMPORT_TYPE.googleimport);\r\n this.viewModel.showFacebookImportGrid(importType === IMPORT_TYPE.facebookimport);\r\n this.viewModel.showAmazonImportGrid(importType === IMPORT_TYPE.amazonImport);\r\n this.viewModel.showPinterestImportGrid(importType === IMPORT_TYPE.pinterestImport);\r\n this.currentGrid = {\r\n [IMPORT_TYPE.googleimport]: this.googleImportGrid,\r\n [IMPORT_TYPE.facebookimport]: this.facebookImportGrid,\r\n [IMPORT_TYPE.amazonImport]: this.amazonImportGrid,\r\n [IMPORT_TYPE.pinterestImport]: this.pinterestImportGrid,\r\n }[importType] || this.fileImportGrid;\r\n this.refreshGrid();\r\n }\r\n\r\n setErrorFilterPredicate(showAllImports) {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n `Setting filter in import log grid. Show all imports: ${showAllImports}`);\r\n\r\n // for legacy UI, ignore facebook import settings\r\n this.importType = showAllImports ? IMPORT_TYPE.googleimport : IMPORT_TYPE.fileimport;\r\n\r\n if (showAllImports) {\r\n this.predicate = () => true;\r\n } else {\r\n this.predicate = (execution) => execution.ErrorCount > 0 || (execution.Status === 'Failed' && execution.ImportStatus !== 'Cancelled');\r\n }\r\n }\r\n\r\n onKeyPressed(event) {\r\n const RETURN_CODE = 13;\r\n\r\n if (event.which === RETURN_CODE) {\r\n event.preventDefault();\r\n const pageText = this.currentGrid.pagination.$('input.form-control.page-number-input');\r\n\r\n if (pageText) {\r\n this.currentGrid.pagination.viewModel.pageNumberText(pageText.val());\r\n }\r\n }\r\n }\r\n\r\n showGoogleLoginPopup(e) {\r\n logMsg(constants.LOGCATEGORY.TRACE, 'click Google_Sign_In_Link');\r\n\r\n const data = this.getColumnData(e);\r\n\r\n dismissCallout();\r\n\r\n if (permissions.UseJsGapiClientOnImportLogGrid) {\r\n logMsg(constants.LOGCATEGORY.TRACE, `GSILocal: ${permissions.dynamic.GSILocal}`);\r\n window.require(['ext/google/gsi'], () => {\r\n const google = window.google;\r\n const taskId = data.TaskId;\r\n\r\n const loginRepo = new GoogleLoginRepository({\r\n deps: {\r\n google,\r\n GSILocal: permissions.dynamic.GSILocal,\r\n },\r\n });\r\n\r\n new Promise((resolve, reject) => {\r\n loginRepo.googleSignIn({\r\n onSuccess: resolve,\r\n onFail: reject,\r\n useConsentPrompt: true,\r\n });\r\n }).then(({ code }) => {\r\n logMsg(constants.LOGCATEGORY.TRACE, 'login Google_Sign_In_Success');\r\n\r\n const getGoogleSessionUrlTmpl =\r\n 'ImportSession/StartGoogleSession(CustomerId=:customer_id,AccountId=:account_id)?authCode={{AuthCode}}&redirectUri=postmessage';\r\n const requestUrl = _.template(getGoogleSessionUrlTmpl)({ AuthCode: code });\r\n\r\n odata.post(requestUrl, { data: ''})\r\n .then((sessionId) => {\r\n return this.updateTaskItemSessionId(taskId, sessionId, logMsg);\r\n });\r\n })\r\n .catch((error) => {\r\n logMsg(constants.LOGCATEGORY.TRACE,\r\n `failed to login to google on logs grid with gsi, err: ${JSON.stringify(error)}`);\r\n\r\n // do not show any error message if the popup is closed by user\r\n if (error && error.authErrors === 'popup_closed') {\r\n return;\r\n }\r\n\r\n // show Google login error message\r\n showError(handleGoogleLoginAuthError(error, this.newI18n));\r\n })\r\n .finally(withUiBlock());\r\n });\r\n } else {\r\n showGooglePopup(`/campaign/GoogleOAuth2/DirectToGoogleAuthorizationServer?cid=${config.get('CurrentCustomer').Id}&uid=${config.get('CurrentUser').Id}&aid=${config.get('CurrentAccount').Id}&userId=${encodeURIComponent(data.GoogleAccountName)}`, 'GoogleOAuth', 450, 650, _.partial(this.updateTaskItemSessionId, data.TaskId));\r\n }\r\n }\r\n\r\n showFacebookLoginPopup(e) {\r\n logMsg(constants.LOGCATEGORY.TRACE, 'click Facebook_Sign_In_Link');\r\n\r\n const {TaskId: taskId} = this.getColumnData(e) || {};\r\n const currentUser = config.get('CurrentUser');\r\n\r\n dismissCallout();\r\n\r\n loadFacebookSdk().then((sdk) => {\r\n if (sdk === null) {\r\n logMsg(constants.LOGCATEGORY.ERROR, 'Failed to load Facebook script.');\r\n return;\r\n }\r\n\r\n const facebookRepo = new FacebookImportRepository({ deps: {\r\n FB: sdk,\r\n odata,\r\n config,\r\n defaultLogActivity: {\r\n trace: (msg) => logMsg(constants.LOGCATEGORY.TRACE, msg),\r\n error: (msg) => logMsg(constants.LOGCATEGORY.ERROR, msg),\r\n },\r\n i18n,\r\n edm: { currentAccount: {} },\r\n jsData,\r\n }});\r\n\r\n facebookRepo.login({\r\n onSuccess: ({accessToken}) => {\r\n logMsg(constants.LOGCATEGORY.TRACE, 'login Facebook_Sign_In_Success');\r\n\r\n facebookRepo.refreshScheduledFacebookImportTaskItemSessionId(\r\n accessToken,\r\n taskId,\r\n currentUser,\r\n ).then(() => {\r\n logMsg(constants.LOGCATEGORY.TRACE, 'login Facebook_Credentials_Update_Success');\r\n\r\n showSuccess(i18n.get('Scheduled_Import_Facebook_GAuth_Edit_Success'));\r\n }).catch((error) => {\r\n logMsg(constants.LOGCATEGORY.TRACE, `Facebook_Credentials_Update_Error: ${JSON.stringify(error)}`);\r\n\r\n showError(i18n.get('GenericErrorMessage'));\r\n });\r\n },\r\n onPermissionsDeclined: ({ declinedScopesAndDesc = [], userID}) => {\r\n const declinedPerms = declinedScopesAndDesc.map((ds) => ds.name).join(', ');\r\n\r\n logMsg(constants.LOGCATEGORY.TRACE,\r\n `user (${userID}) decliened permissions: ${declinedPerms || ''}, could not editing import`);\r\n\r\n // show permission error\r\n showError(handleFacebookLoginError({ authErrors: 'FacebookImport_Permission_Denied_Error' }, this.newI18n));\r\n },\r\n onFail: (error) => {\r\n logMsg(constants.LOGCATEGORY.ERROR,\r\n `could not sign into Facebook for editing import: ${JSON.stringify(error)}`);\r\n\r\n // do not show any error message if the popup is closed by user\r\n if (error && error.status === 'unknown') {\r\n return;\r\n }\r\n\r\n // show Facebook login error message\r\n showError(handleFacebookLoginError(error, this.newI18n));\r\n },\r\n rerequest: true,\r\n });\r\n });\r\n }\r\n\r\n showPinterestLoginPopup(e) {\r\n logMsg(constants.LOGCATEGORY.TRACE, 'click Pinterest_Sign_In_Link');\r\n\r\n const { TaskId: taskId } = this.getColumnData(e) || {};\r\n const currentUser = config.get('CurrentUser');\r\n\r\n dismissCallout();\r\n\r\n const pinterestLoginRepo = new PinterestLoginRepository(config);\r\n const deps = {\r\n odata,\r\n config,\r\n defaultLogActivity: {\r\n trace: (msg) => logMsg(constants.LOGCATEGORY.TRACE, msg),\r\n error: (msg) => logMsg(constants.LOGCATEGORY.ERROR, msg),\r\n },\r\n i18n,\r\n edm: { currentAccount: {} },\r\n jsData,\r\n };\r\n const pinterestImportRepo = new PinterestImportRepository({ deps });\r\n\r\n pinterestLoginRepo.login()\r\n .then((authCode) => {\r\n logMsg(constants.LOGCATEGORY.TRACE, 'login Pinterest_Sign_In_Success');\r\n\r\n return pinterestImportRepo.startPinterestSession(authCode);\r\n })\r\n .then((sessionId) => {\r\n return this.findImportTaskItem(taskId).then((taskItem) => {\r\n const data = {\r\n ...taskItem,\r\n PinterestImportContext: {\r\n ...taskItem.PinterestImportContext,\r\n SessionId: sessionId,\r\n PinterestSessionUserId: (currentUser && currentUser.Id) || taskItem.PinterestImportContext.PinterestSessionUserId,\r\n },\r\n };\r\n\r\n return pinterestImportRepo.updateScheduledImportTaskItem(data, taskId);\r\n });\r\n })\r\n .then(() => {\r\n logMsg(constants.LOGCATEGORY.TRACE, 'login Pinterest_Credentials_Update_Success');\r\n\r\n showSuccess(i18n.get('Scheduled_Import_Pinterest_GAuth_Edit_Success'));\r\n })\r\n .catch((res) => {\r\n logMsg(constants.LOGCATEGORY.ERROR,\r\n `could not sign into Pinterest for editing import: ${JSON.stringify(res)}`);\r\n\r\n // do not show any error message if the popup is closed by user\r\n if (res && res.error === 'popup_closed_by_user') {\r\n return;\r\n }\r\n\r\n // show Pinterest login error message\r\n showError(handlePinterestLoginError(res, this.newI18n));\r\n });\r\n }\r\n\r\n render() {\r\n this.$el.html(tmpl({\r\n noGoogleImportMsg: i18n.get('Scheduled_Import_Log_Empty_GoogleImport'),\r\n noFacebookImportMsg: i18n.get('Scheduled_Import_Log_Empty_FacebookImport'),\r\n noAmazonImportMsg: i18n.get('Scheduled_Import_Log_Empty_AmazonImport'),\r\n noPinterestImportMsg: i18n.get('Scheduled_Import_Log_Empty_PinterestImport'),\r\n noFileImportMsg: i18n.get('Scheduled_Import_Log_Empty_FileImport'),\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this.googleImportGrid = this.initGrid(new GoogleImportLogConfig(this));\r\n this.fileImportGrid = this.initGrid(new FileImportLogConfig(this));\r\n\r\n this.fileImportGrid.gridView.render();\r\n\r\n // render facebook import log grid\r\n if (this.supportedImportTypes[IMPORT_TYPE.facebookimport]) {\r\n this.facebookImportGrid = this.initGrid(new FacebookImportLogConfig(this));\r\n // this.facebookImportGrid.gridView.render();\r\n }\r\n\r\n if (this.supportedImportTypes[IMPORT_TYPE.amazonImport]) {\r\n this.amazonImportGrid = this.initGrid(new AmazonImportLogConfig(this));\r\n }\r\n\r\n if (this.supportedImportTypes[IMPORT_TYPE.pinterestImport]) {\r\n this.pinterestImportGrid = this.initGrid(new PinterestImportLogConfig(this));\r\n }\r\n\r\n // select grid based on importType\r\n switch (this.importType) {\r\n case IMPORT_TYPE.facebookimport:\r\n this.currentGrid = this.facebookImportGrid;\r\n this.viewModel.showFacebookImportGrid(true);\r\n break;\r\n case IMPORT_TYPE.amazonImport:\r\n this.currentGrid = this.amazonImportGrid;\r\n this.viewModel.showAmazonImportGrid(true);\r\n break;\r\n case IMPORT_TYPE.pinterestImport:\r\n this.currentGrid = this.pinterestImportGrid;\r\n this.viewModel.showPinterestImportGrid(true);\r\n break;\r\n case IMPORT_TYPE.fileimport:\r\n this.currentGrid = this.fileImportGrid;\r\n this.viewModel.showFileImportGrid(true);\r\n break;\r\n default:\r\n this.currentGrid = this.googleImportGrid;\r\n this.viewModel.showGoogleImportGrid(true);\r\n break;\r\n }\r\n\r\n this.currentGrid.gridView.render();\r\n\r\n if (!this.isForVNext) {\r\n this.toolbar = new ToolbarView(getGridSwitchToolbarConfig(this)).render();\r\n this.$('.log-toolbar').append(this.toolbar.$el);\r\n }\r\n\r\n this.refreshGrid();\r\n\r\n return this;\r\n }\r\n\r\n initGrid(gridConfig) {\r\n let grid = pgrid.factory({ vnext: true })\r\n .use(perfMarkerPlugin)\r\n .use(a11yPlugin)\r\n .use(paginationPlugin)\r\n .use(placeholderPlugin)\r\n .use(uiBlockerPlugin);\r\n\r\n grid = grid.create(_.flow([headerTemplateConfig])(gridConfig));\r\n\r\n this.initUpdateFinishedEventListener(grid);\r\n\r\n return grid;\r\n }\r\n\r\n initUpdateFinishedEventListener(grid) {\r\n grid.gridView.on('didUpdate', () => {\r\n const hasNoResult = grid.gridView.countRows === 0;\r\n\r\n // make sure pagination does not render before first file import grid loads\r\n if (this.viewModel.isFirstSwitch() && !this.viewModel.showGoogleImportGrid() && !this.viewModel.showFacebookImportGrid() && !this.viewModel.showAmazonImportGrid() && !this.viewModel.showPinterestImportGrid()) {\r\n this.viewModel.isFirstSwitch(false);\r\n }\r\n\r\n this.viewModel.showNoGoogleImportMsg(this.importType === IMPORT_TYPE.googleimport && hasNoResult);\r\n this.viewModel.showNoFacebookImportMsg(this.importType === IMPORT_TYPE.facebookimport && hasNoResult);\r\n this.viewModel.showNoAmazonImportMsg(this.importType === IMPORT_TYPE.amazonImport && hasNoResult);\r\n this.viewModel.showNoPinterestImportMsg(this.importType === IMPORT_TYPE.pinterestImport && hasNoResult);\r\n this.viewModel.showNoFileImportMsg(this.importType === IMPORT_TYPE.fileimport && hasNoResult);\r\n });\r\n }\r\n\r\n showImportSettings(e) {\r\n if ($(e.currentTarget).data('showTooltip')) {\r\n // there is already tooltip showing.\r\n return;\r\n }\r\n\r\n const target = e.target;\r\n let tooltipView;\r\n let $targetTooltip;\r\n const columnData = this.getColumnData(e);\r\n const $parent = $(target).parent();\r\n const eventName = _.uniqueId('click.import.log.grid.');\r\n const subFieldsBlacklist = getBlacklist();\r\n\r\n if (columnData.Type === 'FileBasedImport') {\r\n subFieldsBlacklist.push('ImportAccountUrlOptions');\r\n subFieldsBlacklist.push('ImportDeletedEntities');\r\n subFieldsBlacklist.push('ImportNewOption_ImportNewAudienceTargets');\r\n subFieldsBlacklist.push('ImportUpdateEntityPreference_UpdateAudienceTargets');\r\n subFieldsBlacklist.push('ImportUET');\r\n subFieldsBlacklist.push('AssociatedUETTagId');\r\n }\r\n\r\n const options = JSON.parse(columnData.ImportUserPreference);\r\n\r\n function hideTooltip(event) {\r\n if (($(event.target).is($(target)) ||\r\n $(event.target).closest('[role=tooltip]', $parent).length) &&\r\n !$(event.target).closest('.close-image', $parent).length) {\r\n return true;\r\n }\r\n\r\n $(document).off(eventName);\r\n $(e.currentTarget).data('showTooltip', false);\r\n if ($targetTooltip) {\r\n $targetTooltip.tooltip('destroy');\r\n }\r\n tooltipView.remove();\r\n tooltipView = null;\r\n $targetTooltip = null;\r\n return false;\r\n }\r\n\r\n function showTooltip() {\r\n $(e.currentTarget).data('showTooltip', true);\r\n $targetTooltip = $(e.currentTarget).tooltip({\r\n html: true,\r\n title: tooltipView.el,\r\n template: toolTipTmpl({ i18n }),\r\n });\r\n $targetTooltip.tooltip('show');\r\n $parent.find('.closeimage').focus();\r\n\r\n $(document).on(eventName, hideTooltip);\r\n }\r\n\r\n this.importOptionsFormLoader.then(({ ImportOptionsForm }) => {\r\n this.uetTagSelectorViewLoader\r\n .then(({ UetTagSelectorView }) => {\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\r\n findAndReplaceSuffixSchema.name = 'SearchAndReplaceForFinalURLSuffix';\r\n tooltipView = new ImportSettingsTooltipView({\r\n formView: new ImportOptionsForm({\r\n jsonFormatImportOptions: options,\r\n deps: {\r\n i18n,\r\n config,\r\n schema: {\r\n ImportUpdateEntityPreference,\r\n ImportUserPreferences,\r\n LandingPageAppendPreference: ImportAppendDestUrlPreference,\r\n LandingPageReplacePreference: ImportSearchAndReplaceDestUrlPreference,\r\n AppendTrackingTemplatePreference: AppendPreferencesForTrackingTemplate,\r\n SearchAndReplacePreferencesForTrackingTemplate,\r\n ImportPrefixAndSuffixForStringProperty,\r\n ImportSearchAndReplaceForStringProperty,\r\n ImportAdjustmentForNumericProperty,\r\n SearchAndReplaceForCustomParameters: searchAndReplaceSchema,\r\n SearchAndReplaceForFinalURLSuffix: findAndReplaceSuffixSchema,\r\n },\r\n subFieldsBlacklist,\r\n isCustomerLevel: !!columnData.isCustomerLevel,\r\n isMultiAccountImport: this.isMultiAccount,\r\n UetTagSelectorView: createDisabledUETSelectorClass(UetTagSelectorView),\r\n },\r\n }),\r\n }).render();\r\n\r\n _.each(tooltipView.$('input[type=\"checkbox\"], input[type=\"text\"], select.input'), (input) => {\r\n $(input).attr('disabled', 'disabled');\r\n });\r\n\r\n tooltipView.$('#AdExtensionOptionsNoBmcMessage').hide();\r\n\r\n showTooltip();\r\n });\r\n });\r\n }\r\n\r\n showSummaryDetails(e) {\r\n this.summaryTableLoader.then(({ showSummaryDetailsPopup }) => {\r\n showSummaryDetailsPopup(e, this.getColumnData(e), i18n, this.findImportTaskItem);\r\n });\r\n }\r\n\r\n getColumnData(e) {\r\n return this.currentGrid.gridView.itemOfElement(e.target);\r\n }\r\n\r\n downloadErrorFile(e) {\r\n let data = this.getColumnData(e);\r\n\r\n logColumns({\r\n column: 'Import_History_Action',\r\n isMultiAccount: this.isMultiAccount,\r\n columnData: data,\r\n action: 'click',\r\n message: 'error file download link'\r\n });\r\n\r\n if (data && data.ErrorFileIdentifier) {\r\n download(data.ErrorFileIdentifier, 'ImportErrorFile');\r\n } else {\r\n logColumns({\r\n column: 'Import_History_Action',\r\n isMultiAccount: this.isMultiAccount,\r\n columnData: data,\r\n action: 'error',\r\n message: 'no error file data'\r\n });\r\n showError(i18n.get('GenericErrorMessage'));\r\n }\r\n }\r\n\r\n downloadErrorSummaryFile(e) {\r\n let data = this.getColumnData(e);\r\n\r\n logColumns({\r\n column: 'Import_History_Action',\r\n isMultiAccount: this.isMultiAccount,\r\n columnData: data,\r\n action: 'click',\r\n message: 'error summary file download link'\r\n });\r\n\r\n if (data && data.ErrorSummaryFileIdentifier) {\r\n download(data.ErrorSummaryFileIdentifier, 'ImportErrorFile');\r\n } else {\r\n logColumns({\r\n column: 'Import_History_Action',\r\n isMultiAccount: this.isMultiAccount,\r\n columnData: data,\r\n action: 'error',\r\n message: 'no error summary file data'\r\n });\r\n showError(i18n.get('GenericErrorMessage'));\r\n }\r\n }\r\n\r\n downloadUploadedFile(e) {\r\n let data = this.getColumnData(e);\r\n\r\n if (data && data.UploadFileIdentifier) {\r\n download(data.UploadFileIdentifier, 'ImportFile');\r\n } else {\r\n showError(i18n.get('GenericErrorMessage'));\r\n }\r\n }\r\n\r\n previewAnImport(e) {\r\n const data = this.getColumnData(e);\r\n\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n `Preview an import from log grid, import id: ${data.ImportId}`);\r\n\r\n if (this.isForVNext) {\r\n this.router.navigateToRoute('fileimport', { importId: data.ImportId });\r\n } else {\r\n const fileImportContinueUrl = '/campaign/ImportCampaign.m/FileImport';\r\n const redirectUrl = queryify(fileImportContinueUrl, { importId: data.ImportId });\r\n\r\n // redirect to file import page\r\n window.location.href = redirectUrl;\r\n }\r\n }\r\n\r\n cancelAnImport(e) {\r\n // Odata call is not ready yet. Use WCF call to unblock for the moment.\r\n const data = this.getColumnData(e);\r\n const blockerElem = this.$('.importLogGrid');\r\n\r\n this.UIBlockerToken = UIBlocker.block(blockerElem);\r\n\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n `Cancel an import from log grid, import id: ${data.ImportId}`);\r\n\r\n $http.post({\r\n url: '/campaign/ImportCampaign.m/CancelCurrentImport',\r\n data: {\r\n importId: data.ImportId,\r\n __RequestVerificationToken: $('input[name=\"__RequestVerificationToken\"]').val(),\r\n },\r\n contentType: 'application/x-www-form-urlencoded',\r\n }).bind(this).finally(() => {\r\n UIBlocker.unblock(blockerElem, this.UIBlockerToken);\r\n })\r\n .then(() => {\r\n this.refreshGrid();\r\n }).catch(() => {\r\n showError(i18n.get('GenericErrorMessage'));\r\n });\r\n }\r\n\r\n remove(...args) {\r\n this.googleImportGrid.gridView.remove();\r\n this.googleImportGrid.pagination.remove();\r\n if (this.facebookImportGrid && this.facebookImportGrid.gridView) {\r\n this.facebookImportGrid.gridView.remove();\r\n }\r\n if (this.facebookImportGrid && this.facebookImportGrid.pagination) {\r\n this.facebookImportGrid.pagination.remove();\r\n }\r\n if (this.amazonImportGrid && this.amazonImportGrid.gridView) {\r\n this.amazonImportGrid.gridView.remove();\r\n }\r\n if (this.amazonImportGrid && this.amazonImportGrid.pagination) {\r\n this.amazonImportGrid.pagination.remove();\r\n }\r\n if (this.pinterestImportGrid && this.pinterestImportGrid.gridView) {\r\n this.pinterestImportGrid.gridView.remove();\r\n }\r\n if (this.pinterestImportGrid && this.pinterestImportGrid.pagination) {\r\n this.pinterestImportGrid.pagination.remove();\r\n }\r\n this.fileImportGrid.gridView.remove();\r\n this.fileImportGrid.pagination.remove();\r\n\r\n if (this.toolbar) {\r\n this.toolbar.remove();\r\n }\r\n\r\n super.remove(...args);\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nfunction isRedirected(windowObj) {\r\n try {\r\n if (windowObj.hasOwnProperty('isAuthSucceed')) {\r\n return true;\r\n }\r\n return false;\r\n } catch (e) {\r\n return false;\r\n }\r\n}\r\n\r\nexport default function(url, title, w, h, callback = _.noop, errorMessage = '') {\r\n const windowWidth = w || 450;\r\n const windowHeight = h || 650;\r\n\r\n let documentElement = document.documentElement;\r\n let screen = window.screen;\r\n\r\n // Multi Screen Popup Positioning (http://stackoverflow.com/a/16861050)\r\n // Credit: http://www.xtf.dk/2011/08/center-new-popup-window-even-on.html\r\n // Fixes dual-screen position Most browsers Firefox\r\n let dualScreenLeft = window.screenLeft === undefined ? screen.left : window.screenLeft;\r\n let dualScreenTop = window.screenTop === undefined ? window.screenTop : screen.top;\r\n\r\n let width = window.innerWidth || documentElement.clientWidth || screen.width;\r\n let height = window.innerHeight || documentElement.clientHeight || screen.height;\r\n\r\n\r\n let left = ((width - windowWidth) / 2) + dualScreenLeft;\r\n let top = ((height - windowHeight) / 2) + dualScreenTop;\r\n\r\n let newWindow = window.open(url, title, `resizable=yes, height=${windowHeight},width=${windowWidth},left=${left},top=${top}`);\r\n\r\n newWindow.focus();\r\n let timer = setInterval(() => {\r\n if (newWindow.closed) {\r\n window.clearInterval(timer);\r\n } else if (isRedirected(newWindow)) {\r\n window.clearInterval(timer);\r\n if (newWindow.isAuthSucceed === true) {\r\n callback(newWindow.googleAccount); //eslint-disable-line\r\n } else {\r\n callback(errorMessage); //eslint-disable-line\r\n }\r\n newWindow.close();\r\n }\r\n }, 100);\r\n}\r\n","import Promise from 'bluebird';\r\nimport _ from 'underscore';\r\n\r\nimport { getMemoryDataSourceConfig, getImportLogDataSourceConfig, updateTaskItemSessionId, findImportTaskItem, updateMemoryGrid } from './import-log-datasource-handler';\r\nimport ImportLogGridBase from './import-log-grid-base';\r\n\r\nexport default class View extends ImportLogGridBase {\r\n constructor(options = {}) {\r\n super(_.defaults(options, {\r\n getImportLogDataSourceConfig,\r\n getMemoryDataSourceConfig,\r\n updateTaskItemSessionId,\r\n findImportTaskItem,\r\n updateMemoryGrid,\r\n importOptionsFormLoader: new Promise((resolve) => {\r\n import(/* webpackMode: 'eager' */ '@bingads-webui-campaign/import-components').then((importOptions) => {\r\n resolve(importOptions);\r\n });\r\n }),\r\n summaryTableLoader: new Promise((resolve) => {\r\n import(/* webpackMode: 'eager' */ '@bingads-webui-campaign-legacy/scheduled-import/view/shared-column-configs/import-summary-col').then((summaryTable) => {\r\n resolve(summaryTable);\r\n });\r\n }),\r\n uetTagSelectorViewLoader: new Promise((resolve) => {\r\n import(/* webpackMode: 'eager' */ '@bingads-webui-campaign-legacy/audiences/components/uet-tag/index').then((uetTagSelector) => {\r\n resolve(uetTagSelector);\r\n });\r\n }),\r\n }));\r\n }\r\n}\r\n","import config from '@bingads-webui-component-legacy/config/index';\r\n\r\nconst permissions = config.get('Permissions');\r\n\r\nconst TEST_TYPE_SUFFIX = permissions && permissions.IsUseImportTestTypeForImportTaskExecutionEnabled ? 'Test' : '';\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","import _ from 'underscore';\r\n\r\nimport { ACCOUNT_MODE } from '@bingads-webui-campaign/campaign-ui-common';\r\nimport { supportedRecommendationTypesList, importRecommendationListNameMap, importChannelNameMap } from '@bingads-webui-campaign/import-callout';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport dateUtil from '@bingads-webui-component-legacy/humanize/date';\r\nimport { showError } from '@bingads-webui-component-legacy/toast/index';\r\n\r\nimport odata from '@bingads-webui-static-legacy/communication/channel/odata';\r\nimport { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport statusColumnTmpl from '@bingads-webui-campaign-legacy/bingadsgrid/template/status-column.pug';\r\nimport creatorColumnTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/creator-column.pug';\r\nimport { importFreqColDataToTemplate } from '@bingads-webui-campaign-legacy/scheduled-import/view/shared-column-configs/import-freq-col';\r\nimport linkTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/link.pug';\r\nimport modeTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/import-mode.pug';\r\nimport nameTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/import-schedule-name.pug';\r\nimport acctTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/adwords-account-column.pug';\r\nimport taskTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/import-task-item-list-column.pug';\r\nimport runNowStatusColumnTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/import-schedule-run-now-status.pug';\r\nimport idTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/import-id.pug';\r\n\r\nimport popup from '@bingads-webui-component-legacy/dialog/popup';\r\n\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport instrumentationConstants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport instrumentation2 from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport { showPauseScheduledImportDialog } from '@bingads-webui-campaign/import-shared-utils';\r\n\r\n\r\nimport * as constants from '@bingads-webui-campaign-legacy/scheduled-import/view/import-schedule-constants';\r\n\r\nimport { IMPORT_TYPE, IMPORT_TYPE_TO_IMPORT_NAME, getDefaultImportTypeOfFilter, getSupportedImportTypes } from '@bingads-webui-campaign-legacy/scheduled-import/view/import-type';\r\nimport { getImportButtonOptions } from './import-center-options';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\nconst i18nGlobal = window.globalLegacyI18n.get('component/i18n/loader!legacy/global');\r\n\r\n// value from AccountStatus enum\r\nconst INACTIVE_STATUS = 32;\r\n\r\nconst permissions = config.get('Permissions');\r\n\r\nexport const preferenceUploadButtonConfig = ({\r\n legacyI18n, lazyInject, publicPath, showTopOfGridPanel, disabled, perfMarker,\r\n}) => {\r\n return {\r\n id: 'upload_file',\r\n type: 'button',\r\n iconLeftGlyphName: 'ba-Upload',\r\n text: legacyI18n.getString('Import_PreferenceUpload_Button_Upload'),\r\n disabled,\r\n onClick: () => {\r\n const logTrace = (action, message) => {\r\n instrumentation.logMessage([instrumentationConstants.LOGCATEGORY.TRACE], instrumentationConstants.LOGLEVEL.INFO, '/campaign/importcampaign', `Import_Preference_Upload ${action} ${message}`);\r\n };\r\n\r\n logTrace('click', 'Upload_Import_Preference_Button');\r\n import(/* webpackMode: \"eager\" */'@bingads-webui-campaign-legacy/scheduled-import/view/preference-upload').then((preferenceUploadViewModule) => {\r\n const gridToolbar = lazyInject().gridToolbar;\r\n const preferenceUploadView = new preferenceUploadViewModule.PreferenceUploadView({\r\n i18n: legacyI18n,\r\n publicPath,\r\n logTrace,\r\n perfMarker,\r\n }).render();\r\n\r\n logTrace('render', 'Import_Preference_Upload_Panel');\r\n showTopOfGridPanel(preferenceUploadView);\r\n gridToolbar.gridToolbarGroup.hideAllToolbars();\r\n window.scrollTo(0, 0);\r\n\r\n preferenceUploadView.on('cancel', () => {\r\n logTrace('click', 'Cancel_Or_Close_Button');\r\n preferenceUploadView.remove();\r\n gridToolbar.gridToolbarGroup.showAllToolbars();\r\n });\r\n });\r\n },\r\n };\r\n};\r\n\r\nlet batchEditStatus = function(gridView, items, value, isMultiAccount, isForVNext, adoptResumeScheduleRecommendation) {\r\n if (items.length === 0) {\r\n popup.alert(i18nGlobal.getString('Grid_RowSelectionRequired'));\r\n return;\r\n }\r\n\r\n const ruleUrlTmpl = (ruleId) => {\r\n return `/Advertiser/Customers()/${isMultiAccount ? '' : 'Accounts()/'}TaskItems({{ruleId}})`.replace('{{ruleId}}', ruleId);\r\n };\r\n\r\n const action = {\r\n type: 'Patch',\r\n data: {\r\n '@odata.type': isMultiAccount ? '#Model.MultiAccountGoogleImportTaskItem' : '#Model.ImportTaskItem',\r\n State: value,\r\n },\r\n };\r\n let batchRequest = [];\r\n let index = 0;\r\n\r\n for (index; index < items.length; index++) {\r\n const item = items[index];\r\n const state = item && item.State && item.State.toString();\r\n\r\n if (state && state !== 'Deleted') {\r\n const url = ruleUrlTmpl(item.Id);\r\n\r\n batchRequest.push({\r\n type: action.type,\r\n data: _.extend({ Type: item.Type }, action.data),\r\n url,\r\n });\r\n }\r\n }\r\n\r\n if (_.size(batchRequest) > 0) {\r\n odata.ajaxBatch(batchRequest, (err, textStatus, data) => {\r\n if (err) {\r\n showError(i18n.get('GenericErrorMessage'));\r\n }\r\n if (data.some((item) => {\r\n return item.status === 200;\r\n })) {\r\n gridView.refresh(true);\r\n if (isForVNext) {\r\n gridView.deselectAll();\r\n }\r\n\r\n // adopt import callout card recommendation\r\n if (adoptResumeScheduleRecommendation) {\r\n adoptResumeScheduleRecommendation(value, items);\r\n }\r\n }\r\n });\r\n }\r\n};\r\n\r\nlet emailMapper = function(notificationType) {\r\n let arr = [\r\n { value: 'None', text: i18n.get('AutomatedRules_NotificationType_None')},\r\n { value: 'OnChange, OnError', text: i18n.get('AutomatedRules_NotificationType_OnChangeOrError')},\r\n { value: 'OnError', text: i18n.get('AutomatedRules_NotificationType_OnError')},\r\n { value: 'Always', text: i18n.get('Scheduled_Import_NotificationType_Always')},\r\n ];\r\n let result = _.find(arr, (obj) => obj.value === notificationType);\r\n\r\n return result ? result.text : null;\r\n};\r\n\r\nfunction updateToolbarText(toolbarConfig, filterText) {\r\n const filterConfig = toolbarConfig.get('filter');\r\n\r\n filterConfig.button.text = filterText;\r\n\r\n config.set('filter', filterConfig);\r\n}\r\n\r\nexport function getToolbarConfigForVNext(scope, lazyInject, importChannelType, showTopOfGridPanel, publicPath, perfMarker) {\r\n const isMultiAccount = scope && scope.values && scope.values.aid === undefined;\r\n const isSmartAccount = config.get('CurrentAccount').AccountMode === ACCOUNT_MODE.SMART;\r\n const isUPSmartAccount = config.get('CurrentAccount').AccountMode === ACCOUNT_MODE.UNIFIED_SMART;\r\n const isImportPausedCampaignNotificationEnabled = permissions && permissions.dynamic.ImportPausedCampaignNotification;\r\n\r\n // get supported import types based on permissions and account status\r\n const supportedImportTypes = getSupportedImportTypes({ permissions, isMultiAccount, isSmartAccount, isUPSmartAccount });\r\n\r\n const isMixedImports = importChannelType === undefined;\r\n const isGoogleImportOnly = importChannelType === IMPORT_TYPE.googleimport;\r\n const isFacebookImportOnly = importChannelType === IMPORT_TYPE.facebookimport;\r\n const isAmazonImportOnly = importChannelType === IMPORT_TYPE.amazonImport;\r\n const isPinterestImportOnly = importChannelType === IMPORT_TYPE.pinterestImport;\r\n\r\n let historyGridFilterTitles;\r\n\r\n if (isMixedImports) {\r\n historyGridFilterTitles = _.extend({\r\n googleAll: supportedImportTypes[IMPORT_TYPE.googleimport] && Object.keys(supportedImportTypes).length === 1 ? i18n.getString('Scheduled_Import_All_Imports') : i18n.getString('Scheduled_Import_All_Google_Imports'),\r\n googleDeleted: supportedImportTypes[IMPORT_TYPE.googleimport] && Object.keys(supportedImportTypes).length === 1 ? i18n.getString('Scheduled_Import_Filter_Deleted') : i18n.getString('Scheduled_Import_All_Google_But_Deleted_Imports'),\r\n }, supportedImportTypes[IMPORT_TYPE.facebookimport] ? {\r\n facebookAll: i18n.getString('Scheduled_Import_All_Facebook_Imports'),\r\n facebookDeleted: i18n.getString('Scheduled_Import_All_Facebook_But_Deleted_Imports'),\r\n } : {}, supportedImportTypes[IMPORT_TYPE.amazonImport] ? {\r\n amazonAll: i18n.getString('Scheduled_Import_All_Amazon_Imports'),\r\n amazonDeleted: i18n.getString('Scheduled_Import_All_Amazon_But_Deleted_Imports'),\r\n } : {}, supportedImportTypes[IMPORT_TYPE.pinterestImport] ? {\r\n pinterestAll: i18n.getString('Scheduled_Import_All_Pinterest_Imports'),\r\n pinterestDeleted: i18n.getString('Scheduled_Import_All_Pinterest_But_Deleted_Imports'),\r\n } : {});\r\n } else {\r\n historyGridFilterTitles = _.extend({\r\n googleAll: i18n.getString('Scheduled_Import_All_Imports'),\r\n googleDeleted: i18n.getString('Scheduled_Import_Filter_Deleted'),\r\n }, supportedImportTypes[IMPORT_TYPE.facebookimport] ? {\r\n facebookAll: i18n.getString('Scheduled_Import_All_Imports'),\r\n facebookDeleted: i18n.getString('Scheduled_Import_Filter_Deleted'),\r\n } : {}, supportedImportTypes[IMPORT_TYPE.amazonImport] ? {\r\n amazonAll: i18n.getString('Scheduled_Import_All_Imports'),\r\n amazonDeleted: i18n.getString('Scheduled_Import_Filter_Deleted'),\r\n } : {}, supportedImportTypes[IMPORT_TYPE.pinterestImport] ? {\r\n pinterestAll: i18n.getString('Scheduled_Import_All_Imports'),\r\n pinterestDeleted: i18n.getString('Scheduled_Import_Filter_Deleted'),\r\n } : {});\r\n }\r\n\r\n // set default dropdown button filter text\r\n const importTypeOfFilter = getDefaultImportTypeOfFilter({\r\n isMultiAccount,\r\n importType: isMixedImports ? scope.values.importType : importChannelType,\r\n supportedImportTypes,\r\n });\r\n const filterText = {\r\n [IMPORT_TYPE.facebookimport]: historyGridFilterTitles.facebookDeleted,\r\n [IMPORT_TYPE.amazonImport]: historyGridFilterTitles.amazonDeleted,\r\n [IMPORT_TYPE.pinterestImport]: historyGridFilterTitles.pinterestDeleted,\r\n }[importTypeOfFilter] || historyGridFilterTitles.googleDeleted;\r\n\r\n return {\r\n toolbarSelectedConfig: _.reduce([\r\n ['edit', {\r\n id: 'edit',\r\n type: 'dropdown',\r\n iconLeftGlyphName: 'ba-Edit',\r\n button: {\r\n text: i18nGlobal.getString('LocationTargeting_SectionEdit'),\r\n },\r\n menu: {\r\n items: [\r\n {\r\n name: 'enable',\r\n type: 'button',\r\n iconLeft: ['icon-status-active'],\r\n iconLeftGlyphName: 'ba-RadioBullet2',\r\n text: i18n.getString('AutomatedRules_RulesManagementGrid_EnableRule'),\r\n onClick: () => {\r\n const { grid: { gridView }, isMultiAccount: ima, adoptResumeScheduleRecommendation } = lazyInject().backboneGridView;\r\n\r\n batchEditStatus(gridView, gridView.selectedItems(), 'Active', ima, true, adoptResumeScheduleRecommendation);\r\n },\r\n }, {\r\n name: 'pause',\r\n type: 'button',\r\n iconLeft: ['icon-status-pause'],\r\n iconLeftGlyphName: 'ba-PauseListView12',\r\n text: i18n.getString('AutomatedRules_RulesManagementGrid_PauseRule'),\r\n onClick: () => {\r\n const gridView = lazyInject().backboneGridView.grid.gridView;\r\n const taskIds = gridView.selectedItems().map((v) => v.Id);\r\n const { activity } = instrumentation2.createScenarioAndActivity({\r\n scenarioName: 'ImportScheduleAndLog',\r\n activityName: 'BulkPauseSchedule',\r\n });\r\n\r\n activity.trace({ taskIds, isImportPausedCampaignNotificationEnabled });\r\n\r\n if (isImportPausedCampaignNotificationEnabled) {\r\n showPauseScheduledImportDialog({\r\n i18n,\r\n type: 'pause',\r\n taskIds,\r\n onContinue: () => {\r\n batchEditStatus(gridView, gridView.selectedItems(), 'Paused', lazyInject().backboneGridView.isMultiAccount, true);\r\n },\r\n activity,\r\n });\r\n return;\r\n }\r\n batchEditStatus(gridView, gridView.selectedItems(), 'Paused', lazyInject().backboneGridView.isMultiAccount, true);\r\n },\r\n }, {\r\n name: 'delete',\r\n type: 'button',\r\n iconLeft: ['icon-status-delete'],\r\n iconLeftGlyphName: 'ba-Delete',\r\n text: i18n.getString('AutomatedRules_RulesManagementGrid_DeleteRule'),\r\n onClick: () => {\r\n const gridView = lazyInject().backboneGridView.grid.gridView;\r\n const taskIds = gridView.selectedItems().map((v) => v.Id);\r\n const { activity } = instrumentation2.createScenarioAndActivity({\r\n scenarioName: 'ImportScheduleAndLog',\r\n activityName: 'BulkDeleteSchedule',\r\n });\r\n\r\n activity.trace({ taskIds, isImportPausedCampaignNotificationEnabled });\r\n if (isImportPausedCampaignNotificationEnabled) {\r\n showPauseScheduledImportDialog({\r\n i18n,\r\n type: 'delete',\r\n taskIds: gridView.selectedItems().map((v) => v.Id),\r\n onContinue: () => {\r\n batchEditStatus(gridView, gridView.selectedItems(), 'Deleted', lazyInject().backboneGridView.isMultiAccount, true);\r\n },\r\n activity,\r\n });\r\n return;\r\n }\r\n // eslint-disable-next-line no-alert\r\n if (!confirm(i18n.getString('Scheduled_Import_DeleteConfirm'))) {\r\n return;\r\n }\r\n batchEditStatus(gridView, gridView.selectedItems(), 'Deleted', lazyInject().backboneGridView.isMultiAccount, true);\r\n },\r\n }],\r\n },\r\n }],\r\n ['expander', {\r\n type: 'expander',\r\n }],\r\n ['button-clear-selection', {\r\n type: 'button-clear-selection',\r\n }],\r\n ],\r\n (map, [key, value]) => {\r\n map.set(key, value);\r\n return map;\r\n }\r\n , new Map()),\r\n toolbarUnselectedConfig: _.reduce(_.compact([\r\n !isMixedImports && getImportButtonOptions(i18n, importChannelType, lazyInject),\r\n !isMixedImports && ['upload', preferenceUploadButtonConfig({\r\n legacyI18n: i18n,\r\n lazyInject,\r\n publicPath,\r\n showTopOfGridPanel,\r\n disabled: permissions && permissions.IsReadOnlyUser,\r\n perfMarker,\r\n })],\r\n ['filter', {\r\n id: 'filter',\r\n type: 'dropdown',\r\n button: {\r\n text: filterText,\r\n },\r\n menu: {\r\n items: _.compact([\r\n (isMixedImports || isGoogleImportOnly) && {\r\n name: 'google-all',\r\n type: 'button',\r\n text: historyGridFilterTitles.googleAll,\r\n onClick: () => {\r\n lazyInject().backboneGridView.grid.gridView.set({\r\n dataSource: {\r\n query: {\r\n // eslint-disable-next-line no-nested-ternary\r\n $filter: lazyInject().backboneGridView.isMultiAccount ? constants.FILTER_ALL_ITEMS_MULTIACCOUNT : constants.FILTER_ALL_ITEMS,\r\n },\r\n },\r\n });\r\n lazyInject().backboneGridView.isFiltered = false;\r\n lazyInject().backboneGridView.importTypeOfFilter = IMPORT_TYPE.googleimport;\r\n lazyInject().updateUnselectedToolbarConfig(updateToolbarText(lazyInject().getUnselectedToolbarConfig(), historyGridFilterTitles.googleAll));\r\n },\r\n },\r\n (isMixedImports || isGoogleImportOnly) && {\r\n name: 'google-deleted',\r\n type: 'buttonMenuItem',\r\n text: historyGridFilterTitles.googleDeleted,\r\n onClick: () => {\r\n lazyInject().backboneGridView.grid.gridView.set({\r\n dataSource: {\r\n query: {\r\n // eslint-disable-next-line no-nested-ternary\r\n $filter: lazyInject().backboneGridView.isMultiAccount ? constants.FILTER_ALL_BUT_DELETED_MULTIACCOUNT : constants.FILTER_ALL_BUT_DELETED,\r\n },\r\n },\r\n });\r\n lazyInject().backboneGridView.isFiltered = true;\r\n lazyInject().backboneGridView.importTypeOfFilter = IMPORT_TYPE.googleimport;\r\n lazyInject().updateUnselectedToolbarConfig(updateToolbarText(lazyInject().getUnselectedToolbarConfig(), historyGridFilterTitles.googleDeleted));\r\n },\r\n },\r\n supportedImportTypes[IMPORT_TYPE.facebookimport] && (isFacebookImportOnly || isMixedImports) && {\r\n name: 'facebook-all',\r\n type: 'button',\r\n text: historyGridFilterTitles.facebookAll,\r\n onClick: () => {\r\n lazyInject().backboneGridView.grid.gridView.set({\r\n dataSource: {\r\n query: {\r\n $filter: constants.FILTER_ALL_FACEBOOK_ITEMS,\r\n },\r\n },\r\n });\r\n lazyInject().backboneGridView.isFiltered = false;\r\n lazyInject().backboneGridView.importTypeOfFilter = IMPORT_TYPE.facebookimport;\r\n lazyInject().updateUnselectedToolbarConfig(updateToolbarText(lazyInject().getUnselectedToolbarConfig(), historyGridFilterTitles.facebookAll));\r\n },\r\n },\r\n supportedImportTypes[IMPORT_TYPE.facebookimport] && (isFacebookImportOnly || isMixedImports) && {\r\n name: 'facebook-deleted',\r\n type: 'buttonMenuItem',\r\n text: historyGridFilterTitles.facebookDeleted,\r\n onClick: () => {\r\n lazyInject().backboneGridView.grid.gridView.set({\r\n dataSource: {\r\n query: {\r\n $filter: constants.FILTER_ALL_BUT_DELETED_FACEBOOK_ITEMS,\r\n },\r\n },\r\n });\r\n lazyInject().backboneGridView.isFiltered = true;\r\n lazyInject().backboneGridView.importTypeOfFilter = IMPORT_TYPE.facebookimport;\r\n lazyInject().updateUnselectedToolbarConfig(updateToolbarText(lazyInject().getUnselectedToolbarConfig(), historyGridFilterTitles.facebookDeleted));\r\n },\r\n },\r\n supportedImportTypes[IMPORT_TYPE.amazonImport] && (isAmazonImportOnly || isMixedImports) && {\r\n name: 'amazon-all',\r\n type: 'button',\r\n text: historyGridFilterTitles.amazonAll,\r\n onClick: () => {\r\n lazyInject().backboneGridView.grid.gridView.set({\r\n dataSource: {\r\n query: {\r\n $filter: constants.FILTER_ALL_AMAZON_ITEMS,\r\n },\r\n },\r\n });\r\n lazyInject().backboneGridView.isFiltered = false;\r\n lazyInject().backboneGridView.importTypeOfFilter = IMPORT_TYPE.amazonImport;\r\n lazyInject().updateUnselectedToolbarConfig(updateToolbarText(lazyInject().getUnselectedToolbarConfig(), historyGridFilterTitles.amazonAll));\r\n },\r\n },\r\n supportedImportTypes[IMPORT_TYPE.amazonImport] && (isAmazonImportOnly || isMixedImports) && {\r\n name: 'amazon-deleted',\r\n type: 'buttonMenuItem',\r\n text: historyGridFilterTitles.amazonDeleted,\r\n onClick: () => {\r\n lazyInject().backboneGridView.grid.gridView.set({\r\n dataSource: {\r\n query: {\r\n $filter: constants.FILTER_ALL_BUT_DELETED_AMAZON_ITEMS,\r\n },\r\n },\r\n });\r\n lazyInject().backboneGridView.isFiltered = true;\r\n lazyInject().backboneGridView.importTypeOfFilter = IMPORT_TYPE.amazonImport;\r\n lazyInject().updateUnselectedToolbarConfig(updateToolbarText(lazyInject().getUnselectedToolbarConfig(), historyGridFilterTitles.amazonDeleted));\r\n },\r\n },\r\n supportedImportTypes[IMPORT_TYPE.pinterestImport] && (isPinterestImportOnly || isMixedImports) && {\r\n name: 'pinterest-all',\r\n type: 'button',\r\n text: historyGridFilterTitles.pinterestAll,\r\n onClick: () => {\r\n lazyInject().backboneGridView.grid.gridView.set({\r\n dataSource: {\r\n query: {\r\n $filter: constants.FILTER_ALL_PINTEREST_ITEMS,\r\n },\r\n },\r\n });\r\n lazyInject().backboneGridView.isFiltered = false;\r\n lazyInject().backboneGridView.importTypeOfFilter = IMPORT_TYPE.pinterestImport;\r\n lazyInject().updateUnselectedToolbarConfig(updateToolbarText(lazyInject().getUnselectedToolbarConfig(), historyGridFilterTitles.pinterestAll));\r\n },\r\n },\r\n supportedImportTypes[IMPORT_TYPE.pinterestImport] && (isPinterestImportOnly || isMixedImports) && {\r\n name: 'pinterest-deleted',\r\n type: 'buttonMenuItem',\r\n text: historyGridFilterTitles.pinterestDeleted,\r\n onClick: () => {\r\n lazyInject().backboneGridView.grid.gridView.set({\r\n dataSource: {\r\n query: {\r\n $filter: constants.FILTER_ALL_BUT_DELETED_PINTEREST_ITEMS,\r\n },\r\n },\r\n });\r\n lazyInject().backboneGridView.isFiltered = true;\r\n lazyInject().backboneGridView.importTypeOfFilter = IMPORT_TYPE.pinterestImport;\r\n lazyInject().updateUnselectedToolbarConfig(updateToolbarText(lazyInject().getUnselectedToolbarConfig(), historyGridFilterTitles.pinterestDeleted));\r\n },\r\n },\r\n ]),\r\n },\r\n }],\r\n ['refresh', {\r\n id: 'refresh_schedule',\r\n type: 'button',\r\n iconLeftGlyphName: 'ba-Refresh',\r\n text: i18n.getString('CampaignImport_Refresh'),\r\n onClick: () => {\r\n lazyInject().backboneGridView.grid.gridView.refresh(true);\r\n },\r\n }],\r\n ]),\r\n (map, [key, value]) => {\r\n map.set(key, value);\r\n return map;\r\n }, new Map()),\r\n };\r\n}\r\n\r\nfunction getPluginsConfig(view) {\r\n return {\r\n toolbar: {\r\n container: view.$('.history-toolbar'),\r\n items: [\r\n {\r\n name: 'edit',\r\n type: 'dropdown',\r\n title: i18nGlobal.getString('LocationTargeting_SectionEdit'),\r\n level: 1,\r\n isNewFeature: false,\r\n items: [\r\n {\r\n name: 'enable',\r\n type: 'buttonMenuItem',\r\n leftIconClass: 'icon-status-active',\r\n text: i18n.getString('AutomatedRules_RulesManagementGrid_EnableRule'),\r\n action: (gridView) => {\r\n return view.batchEditCallback ?\r\n view.batchEditCallback(gridView, gridView.selectedItems(), 'Active') :\r\n batchEditStatus(gridView, gridView.selectedItems(), 'Active', view.isMultiAccount);\r\n },\r\n }, {\r\n name: 'pause',\r\n type: 'buttonMenuItem',\r\n leftIconClass: 'icon-status-pause',\r\n text: i18n.getString('AutomatedRules_RulesManagementGrid_PauseRule'),\r\n action: (gridView) => {\r\n return view.batchEditCallback ?\r\n view.batchEditCallback(gridView, gridView.selectedItems(), 'Paused') :\r\n batchEditStatus(gridView, gridView.selectedItems(), 'Paused', view.isMultiAccount);\r\n },\r\n }, {\r\n name: 'delete',\r\n type: 'buttonMenuItem',\r\n leftIconClass: 'icon-status-delete',\r\n text: i18n.getString('AutomatedRules_RulesManagementGrid_DeleteRule'),\r\n action: (gridView) => {\r\n return view.batchEditCallback ?\r\n view.batchEditCallback(gridView, gridView.selectedItems(), 'Deleted') :\r\n batchEditStatus(gridView, gridView.selectedItems(), 'Deleted', view.isMultiAccount);\r\n },\r\n }],\r\n }, {\r\n name: 'historyfilter',\r\n type: 'dropdown',\r\n title: i18n.getString('Scheduled_Import_Filter_Deleted'),\r\n level: 1,\r\n isNewFeature: false,\r\n items: [\r\n {\r\n name: 'all',\r\n type: 'buttonMenuItem',\r\n text: i18n.getString('Scheduled_Import_All_Imports'),\r\n action: {\r\n viewFactory: () => {\r\n view.grid.gridView.set({\r\n dataSource: {\r\n query: {\r\n $filter: view.isMultiAccount ? constants.FILTER_ALL_ITEMS_MULTIACCOUNT : constants.FILTER_ALL_ITEMS,\r\n },\r\n },\r\n });\r\n view.isFiltered = false;\r\n },\r\n setMenuTitle: {\r\n text: i18n.getString('Scheduled_Import_All_Imports'),\r\n pos: 1,\r\n },\r\n },\r\n }, {\r\n name: 'deleted',\r\n type: 'buttonMenuItem',\r\n text: i18n.getString('Scheduled_Import_Filter_Deleted'),\r\n action: {\r\n viewFactory: () => {\r\n view.grid.gridView.set({\r\n dataSource: {\r\n query: {\r\n $filter: view.isMultiAccount ? constants.FILTER_ALL_BUT_DELETED_MULTIACCOUNT : constants.FILTER_ALL_BUT_DELETED,\r\n },\r\n },\r\n });\r\n view.isFiltered = true;\r\n },\r\n setMenuTitle: {\r\n text: i18n.getString('Scheduled_Import_Filter_Deleted'),\r\n pos: 1,\r\n },\r\n },\r\n }],\r\n }, {\r\n name: 'refresh',\r\n type: 'button',\r\n text: i18n.getString('CampaignImport_Refresh'),\r\n leftIconClass: 'spritedimage refresh-icon',\r\n action: () => {\r\n view.grid.gridView.refresh(true);\r\n },\r\n }],\r\n },\r\n };\r\n}\r\n\r\nfunction getColumnsConfig(isMultiAccount, isForVNext, importChannelType, isSmartAccount, isUPSmartAccount, supportedImportTypes) {\r\n let columns = _.compact([bingadsGridColumn({\r\n name: 'State',\r\n property: _.identity,\r\n title: 'AutomatedRules_RulesManagementGrid_Status',\r\n helpId: 'pop_BA_Import_ScheduleStatus',\r\n bodyClasses: ['col-State'],\r\n sortable: {\r\n key: 'State',\r\n },\r\n template: (local) => {\r\n const tmp = local.value.IsAutoFrequency || local.value.Cron ? statusColumnTmpl : runNowStatusColumnTmpl;\r\n\r\n return tmp({\r\n Status: local.value.State,\r\n i18n: i18nGlobal,\r\n });\r\n },\r\n i18n,\r\n }), (importChannelType !== undefined || (permissions && permissions.dynamic && permissions.dynamic.ImportPreferenceUpload && !isMultiAccount)) && bingadsGridColumn({\r\n name: 'Id',\r\n property: _.identity,\r\n title: 'Scheduled_Import_Task_ID',\r\n bodyClasses: ['col-Id'],\r\n template: (local) => {\r\n return idTmpl({\r\n id: local.value.Id,\r\n });\r\n },\r\n i18n,\r\n }), bingadsGridColumn({\r\n name: 'Name',\r\n property: 'Name',\r\n title: 'Scheduled_Import_Name',\r\n bodyClasses: ['col-Name'],\r\n template: (local) => {\r\n return nameTmpl({\r\n Name: local.value || i18nGlobal.get('QualityScore_NA'),\r\n });\r\n },\r\n i18n,\r\n }), bingadsGridColumn({\r\n name: 'CreatedBy',\r\n title: 'AutomatedRules_RulesManagementGrid_CreatedBy',\r\n property: _.identity,\r\n bodyClasses: ['col-CreatedBy'],\r\n template: (local) => {\r\n return creatorColumnTmpl({\r\n Creator: local.value.ModifiedBy && local.value.ModifiedBy.Name,\r\n DateTime: dateUtil.format(new Date(local.value.CreatedAt), 'dddd, MMMM d, yyyy', config.get('culture')),\r\n Time: dateUtil.format(new Date(local.value.CreatedAt), 'hh:mm:ss tt', config.get('culture')),\r\n });\r\n },\r\n i18n,\r\n }), isMultiAccount ? bingadsGridColumn({\r\n name: 'ImportTaskItemList',\r\n property: 'ImportTaskItemList',\r\n title: 'Import_LastImport_AdWordsAccount',\r\n bodyClasses: ['col-AdWordsImportContext'],\r\n template: () => {\r\n return taskTmpl({\r\n i18n,\r\n className: 'import-schedule-accounts',\r\n });\r\n },\r\n i18n,\r\n }) : bingadsGridColumn({\r\n name: 'AdWordsImportContext',\r\n property: supportedImportTypes[IMPORT_TYPE.facebookimport] || supportedImportTypes[IMPORT_TYPE.amazonImport] || supportedImportTypes[IMPORT_TYPE.pinterestImport] ? (item) => {\r\n return item.AdWordsImportContext || item.FacebookImportContext || item.AmazonImportContext || item.PinterestImportContext;\r\n } : 'AdWordsImportContext',\r\n title: (() => {\r\n const IsFacebookImportEnabled = supportedImportTypes[IMPORT_TYPE.facebookimport];\r\n const IsAmazonImportEnabled = supportedImportTypes[IMPORT_TYPE.amazonImport];\r\n const IsPinterestImportEnabled = supportedImportTypes[IMPORT_TYPE.pinterestImport];\r\n\r\n if (supportedImportTypes[IMPORT_TYPE.googleimport] && Object.keys(supportedImportTypes).length === 1) {\r\n return i18n.get('Import_LastImport_AdWordsAccount');\r\n } else if (IsFacebookImportEnabled || IsAmazonImportEnabled || IsPinterestImportEnabled) {\r\n let enabledImportTypes = 'Google';\r\n\r\n if (importChannelType === undefined) {\r\n enabledImportTypes = enabledImportTypes.concat(IsFacebookImportEnabled ? '/Meta' : '')\r\n .concat(IsAmazonImportEnabled ? '/Amazon' : '')\r\n .concat(IsPinterestImportEnabled ? '/Pinterest' : '');\r\n } else if (IsFacebookImportEnabled && importChannelType === IMPORT_TYPE.facebookimport) {\r\n enabledImportTypes = 'Meta';\r\n } else if (IsAmazonImportEnabled && importChannelType === IMPORT_TYPE.amazonImport) {\r\n enabledImportTypes = 'Amazon';\r\n } else if (IsPinterestImportEnabled && importChannelType === IMPORT_TYPE.pinterestImport) {\r\n enabledImportTypes = 'Pinterest';\r\n }\r\n return i18n.get('Import_LastImport_AdWordsAccount_Dynamic').replace('{0}', enabledImportTypes);\r\n }\r\n\r\n return i18n.get('Import_LastImport_AdWordsAccount');\r\n })(),\r\n bodyClasses: ['col-AdWordsImportContext'],\r\n template: (local) => {\r\n const context = local.value || {};\r\n let accountNumber;\r\n\r\n if (context.CustomerId) {\r\n accountNumber = `(${context.CustomerId})`;\r\n } else if ((supportedImportTypes[IMPORT_TYPE.facebookimport] || supportedImportTypes[IMPORT_TYPE.pinterestImport]) && context.AccountId) {\r\n accountNumber = `(${context.AccountId})`;\r\n } else if (supportedImportTypes[IMPORT_TYPE.amazonImport] && context.ProfileId) {\r\n accountNumber = `(${context.ProfileId})`;\r\n } else {\r\n accountNumber = '';\r\n }\r\n\r\n return acctTmpl({\r\n EmailAddress: context.AccountName || i18n.get('Import_LastImport_Dash'),\r\n AccountNumber: accountNumber,\r\n });\r\n },\r\n }), bingadsGridColumn({\r\n name: 'Frequency',\r\n property: _.identity,\r\n title: 'AutomatedRules_RuleAuthoring_Filter',\r\n helpId: 'pop_BA_Import_ScheduleWhen',\r\n bodyClasses: ['col-Frequency'],\r\n template: (local) => importFreqColDataToTemplate(local.value, i18n),\r\n i18n,\r\n }), permissions.IsSmartImportEnabled && !isMultiAccount && !isUPSmartAccount ? bingadsGridColumn({\r\n name: 'Mode',\r\n property: _.identity,\r\n title: 'Scheduled_Import_Mode_Column',\r\n bodyClasses: ['col-Mode'],\r\n template: (local) => {\r\n return modeTmpl({\r\n mode: local.value.IsSmartImport ? i18n.get('Scheduled_Import_Mode_Smart') : i18n.get('Scheduled_Import_Mode_Advanced'),\r\n });\r\n },\r\n i18n,\r\n }) : null, bingadsGridColumn({\r\n name: 'NotificationType',\r\n title: 'AutomatedRules_RulesManagementGrid_EmailNotification',\r\n property: 'NotificationType',\r\n helpId: 'pop_BA_Import_ScheduleEmail',\r\n bodyClasses: ['col-NotificationType'],\r\n template: (local) => {\r\n return emailMapper(local.value);\r\n },\r\n i18n,\r\n }), bingadsGridColumn({\r\n name: 'Action',\r\n title: 'AutomatedRules_RulesManagementGrid_Action',\r\n property: _.identity,\r\n helpId: 'pop_BA_Import_ScheduleAction',\r\n bodyClasses: ['col-Action'],\r\n template: (local) => {\r\n // since vNext has been GAed, smart import schedules are allowed to edit.\r\n const columnData = local.value;\r\n const allowEdit = !permissions.IsReadOnlyUser && (isMultiAccount || (config.get('CurrentAccount').Status !== INACTIVE_STATUS));\r\n const enableRunNowButton = (columnData.IsAutoFrequency || columnData.Cron) && columnData.State !== 'Deleted' && allowEdit;\r\n\r\n const importRecommendationListName = importRecommendationListNameMap(columnData);\r\n const importChannel = importChannelNameMap(importRecommendationListName);\r\n const supportedRecommendationTypes = supportedRecommendationTypesList();\r\n\r\n const logTrace = (action, type) => {\r\n instrumentation.logMessage([instrumentationConstants.LOGCATEGORY.TRACE], instrumentationConstants.LOGLEVEL.INFO, '/campaign/importcampaign', `Import_Recommendation ${columnData.Id} ${action} ${type} ${importChannel}`);\r\n };\r\n\r\n let showRecommendation;\r\n\r\n if (importRecommendationListName) {\r\n if (columnData[importRecommendationListName] && columnData[importRecommendationListName].length !== 0) {\r\n columnData[importRecommendationListName] = _.filter(\r\n columnData[importRecommendationListName],\r\n (recommendationType) => {\r\n const ifTypeSupported = supportedRecommendationTypes[importRecommendationListName].indexOf(recommendationType) !== -1;\r\n\r\n if (!ifTypeSupported) {\r\n logTrace('not_supported_in_UI', `${recommendationType}`);\r\n }\r\n return ifTypeSupported;\r\n },\r\n );\r\n }\r\n\r\n showRecommendation = isForVNext && permissions.IsSmartImportEnabled && columnData[importRecommendationListName] &&\r\n columnData[importRecommendationListName].length !== 0;\r\n\r\n if (showRecommendation) {\r\n if (isSmartAccount) {\r\n logTrace('belongTo', 'Smart_Campaigns_Import');\r\n } else if (isUPSmartAccount) {\r\n logTrace('belongTo', 'ESC_Import');\r\n }\r\n\r\n logTrace('has', columnData[importRecommendationListName]);\r\n }\r\n }\r\n\r\n return linkTmpl({\r\n edit: allowEdit && !isSmartAccount ? i18nGlobal.get('LocationTargeting_SectionEdit') : '',\r\n runNow: enableRunNowButton ? i18n.get('Import_RunNow') : '',\r\n dash: i18n.get('Import_LastImport_Dash'),\r\n recommendationText: i18n.get('Scheduled_Import_Recommendation_Text'),\r\n showRecommendation,\r\n });\r\n },\r\n i18n,\r\n })]);\r\n\r\n return columns;\r\n}\r\n\r\nexport class ImportScheduleGridConfig {\r\n constructor(view) {\r\n _.extend(this, {\r\n name: `${IMPORT_TYPE_TO_IMPORT_NAME[view.importTypeOfFilter] || IMPORT_TYPE_TO_IMPORT_NAME[IMPORT_TYPE.googleimport]}ImportScheduleGrid`,\r\n el: view.$('.importHistoryGrid'),\r\n dataSource: view.getDataSourceConfig(view),\r\n pluginsConfig: view.isForVNext ? {} : getPluginsConfig(view),\r\n plugins: {\r\n a11y: { i18n },\r\n uiBlocker: {\r\n el: view.$('.importHistoryGrid'),\r\n },\r\n placeholder: {},\r\n pagination: {\r\n pageSizeText: i18nGlobal.getString('Grid_ShowRows'),\r\n },\r\n perfMarker: {\r\n appConfig: config,\r\n gridMarker: view.perfMarker,\r\n },\r\n },\r\n rows: {\r\n classes: {\r\n 'disable': () => {\r\n return false;\r\n },\r\n },\r\n },\r\n columns: getColumnsConfig(view.isMultiAccount, view.isForVNext, view.importChannelType, view.isSmartAccount, view.isUPSmartAccount, view.supportedImportTypes),\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': i18n.get('Scheduled_Import_History_Page_Title') },\r\n selection: {\r\n enabled: true,\r\n },\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport { ImportTaskItem, MultiAccountGoogleImportTaskItem } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsdataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { IMPORT_TYPE } from '@bingads-webui-campaign-legacy/scheduled-import/view/import-type';\r\nimport UpdateStatusView from '@bingads-webui-component-legacy/update-status/view/index';\r\nimport { showPauseScheduledImportDialog } from '@bingads-webui-campaign/import-shared-utils';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport * as constants from './import-schedule-constants';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\n\r\nexport function getImportScheduleDataSourceConfig({ isMultiAccount, importTypeOfFilter }) {\r\n if (isMultiAccount) {\r\n // eslint-disable-next-line no-param-reassign\r\n edmCampaign.customerIdType.useAdvertiserCustomerId = false;\r\n }\r\n\r\n // set default data query filter text\r\n let filterText;\r\n\r\n if (isMultiAccount) {\r\n filterText = constants.FILTER_ALL_BUT_DELETED_MULTIACCOUNT;\r\n } else {\r\n filterText = {\r\n [IMPORT_TYPE.facebookimport]: constants.FILTER_ALL_BUT_DELETED_FACEBOOK_ITEMS,\r\n [IMPORT_TYPE.amazonImport]: constants.FILTER_ALL_BUT_DELETED_AMAZON_ITEMS,\r\n [IMPORT_TYPE.pinterestImport]: constants.FILTER_ALL_BUT_DELETED_PINTEREST_ITEMS,\r\n }[importTypeOfFilter] || constants.FILTER_ALL_BUT_DELETED;\r\n }\r\n\r\n return {\r\n type: 'js-data',\r\n entity: jsdataCampaign.TaskItem,\r\n schema: isMultiAccount ? MultiAccountGoogleImportTaskItem : ImportTaskItem,\r\n query: {\r\n // eslint-disable-next-line no-nested-ternary\r\n $filter: filterText,\r\n },\r\n options: {\r\n entitySet: isMultiAccount ? edmCampaign.currentCustomer.TaskItems : edmCampaign.currentAccount.TaskItems,\r\n cacheResponse: false,\r\n },\r\n };\r\n}\r\n\r\nfunction getJsDataOptions({ isMultiAccount }) {\r\n if (isMultiAccount) {\r\n // eslint-disable-next-line no-param-reassign\r\n edmCampaign.customerIdType.useAdvertiserCustomerId = false;\r\n }\r\n\r\n return {\r\n adapter: 'odata',\r\n entitySet: isMultiAccount ? edmCampaign.currentCustomer.TaskItems : edmCampaign.currentAccount.TaskItems,\r\n urlParameters: {\r\n $expand: 'TaskItemExecutions',\r\n },\r\n };\r\n}\r\n\r\nexport function createRunNowImport({ body, isMultiAccount }) {\r\n return jsdataCampaign.TaskItem.create(body, getJsDataOptions({ isMultiAccount }));\r\n}\r\n\r\nexport function createUpdateStatusView(view, model) {\r\n const { permissions } = model;\r\n\r\n return new UpdateStatusView(_.defaults({\r\n Id: model.Id,\r\n Grid: view.grid,\r\n Model: model,\r\n Status: model.State.valueOf(),\r\n beforeChange: (value, columnView, e) => {\r\n const { activity } = instrumentation.createScenarioAndActivity({\r\n scenarioName: 'ImportScheduleAndLog',\r\n activityName: 'InlineUpdateScheduleStatus',\r\n });\r\n\r\n const isImportPausedCampaignNotificationEnabled = permissions && permissions.dynamic.ImportPausedCampaignNotification;\r\n\r\n activity.trace({ taskId: model.Id, updateToStatus: value, isImportPausedCampaignNotificationEnabled });\r\n\r\n if (isImportPausedCampaignNotificationEnabled && ['Paused', 'Deleted'].includes(value)) {\r\n return showPauseScheduledImportDialog({\r\n i18n,\r\n type: value === 'Paused' ? 'pause' : 'delete',\r\n taskIds: [model.Id],\r\n onContinue: () => {\r\n columnView.changeStatus(value, e);\r\n },\r\n activity,\r\n });\r\n }\r\n return false;\r\n },\r\n afterChange: (e, value) => {\r\n view.grid.gridView.refresh(true);\r\n if (value !== model.State) {\r\n view.adoptResumeScheduleRecommendation(value, [model]);\r\n }\r\n },\r\n useStateInsteadOfStatus: true,\r\n addImportTypeToStatusUpdate: true,\r\n ignoreEmptyId: true,\r\n }, getJsDataOptions(view), {\r\n schema: view.isMultiAccount ? MultiAccountGoogleImportTaskItem : ImportTaskItem,\r\n }));\r\n}\r\n\r\n","import _ from 'underscore';\r\n\r\nconst levelClasses = {\r\n 0: ['grid-toolbar-highlight'],\r\n 1: ['grid-toolbar-front-theme'],\r\n 2: [],\r\n};\r\n\r\nexport const getClassesByLevel = (level) => {\r\n if (_.has(levelClasses, level)) {\r\n return levelClasses[level];\r\n }\r\n return [];\r\n};\r\n\r\nexport const getClassNameByLevel = (level) => getClassesByLevel(level).join(' ');\r\n\r\nexport const updateTool = (view, config) => {\r\n view.$el.addClass(_.union(getClassesByLevel(config.level), config.classes).join(' '));\r\n};\r\n","import _ from 'underscore';\r\nimport Button from '@bingads-webui-component-legacy/grid-toolbar/button';\r\nimport ButtonMenuItem from '@bingads-webui-component-legacy/grid-toolbar/buttonMenuItem';\r\nimport DividerMenuItem from '@bingads-webui-component-legacy/grid-toolbar/dividerMenuItem';\r\nimport DropDown from '@bingads-webui-component-legacy/grid-toolbar/dropdown';\r\nimport HeaderMenuItem from '@bingads-webui-component-legacy/grid-toolbar/headerMenuItem';\r\nimport {updateTool} from '@bingads-webui-campaign-legacy/bingadsgrid/shared/update-tool';\r\n\r\nlet factoryContainer = null;\r\n\r\nconst processAction = (action, toolBarView, gridView) => {\r\n if (_.isFunction(action)) {\r\n action(gridView);\r\n } else if (_.isObject(action)) {\r\n let view = action.viewFactory(gridView);\r\n\r\n view = view && view.render();\r\n\r\n if (action.setMenuTitle) {\r\n toolBarView.setMenuTitle(action.setMenuTitle);\r\n }\r\n\r\n if (_.isEmpty(view)) {\r\n return;\r\n }\r\n\r\n toolBarView.expand(view.el);\r\n if (action.shouldHideToolbar) {\r\n toolBarView.hideToolbar();\r\n }\r\n\r\n view.once('close', (arg) => {\r\n view.remove();\r\n toolBarView.showToolbar();\r\n if (arg && arg.refresh === true) {\r\n gridView.projection.update({\r\n deep: true,\r\n });\r\n }\r\n });\r\n view.once('createNew', (arg) => {\r\n view.remove();\r\n if (arg && arg.refresh === true) {\r\n gridView.projection.update({\r\n deep: true,\r\n });\r\n }\r\n processAction(action, toolBarView, gridView);\r\n });\r\n }\r\n};\r\n\r\nconst buttonMenuItemFactory = (btnMenuItemConfig, toolBarView, gridView) => {\r\n const toolItem = new ButtonMenuItem(btnMenuItemConfig);\r\n\r\n toolItem.on('click', _.partial(processAction, btnMenuItemConfig.action, toolBarView, gridView));\r\n toolItem.on('click:link', _.partial(processAction, btnMenuItemConfig.linkAction, toolBarView, gridView));\r\n\r\n updateTool(toolItem, btnMenuItemConfig);\r\n\r\n return toolItem;\r\n};\r\n\r\nconst buttonFactory = (btnConfig, toolBarView, gridView) => {\r\n const toolItem = new Button(btnConfig);\r\n\r\n toolItem.on('click', _.partial(processAction, btnConfig.action, toolBarView, gridView));\r\n\r\n updateTool(toolItem, btnConfig);\r\n\r\n return toolItem;\r\n};\r\n\r\nconst dropDownFactory = (dropdownConfig, toolBarView, gridView) => {\r\n const menuItems = _.map(dropdownConfig.items, (item) => {\r\n if (_.has(factoryContainer, item.type)) {\r\n let tmpView = factoryContainer[item.type](item, toolBarView, gridView);\r\n\r\n updateTool(tmpView, item);\r\n return tmpView;\r\n }\r\n return null;\r\n });\r\n\r\n let tmpDropdown = new DropDown({\r\n title: dropdownConfig.title,\r\n menuItems: _.compact(menuItems),\r\n isNewFeature: dropdownConfig.isNewFeature,\r\n isAvailable: dropdownConfig.isAvailable,\r\n });\r\n\r\n updateTool(tmpDropdown, dropdownConfig);\r\n\r\n return tmpDropdown;\r\n};\r\n\r\nconst dividerMenuItemFactory = () => {\r\n return new DividerMenuItem();\r\n};\r\n\r\nconst headerMenuItemFactory = (headerMenuItemConfig) => {\r\n return new HeaderMenuItem(headerMenuItemConfig);\r\n};\r\n\r\nfactoryContainer = {\r\n 'button': buttonFactory,\r\n 'dropdown': dropDownFactory,\r\n 'buttonMenuItem': buttonMenuItemFactory,\r\n 'dividerMenuItem': dividerMenuItemFactory,\r\n 'headerMenuItem': headerMenuItemFactory,\r\n};\r\n\r\nexport default factoryContainer;\r\n","import _ from 'underscore';\r\nimport GridToolbar from '@bingads-webui-component-legacy/grid-toolbar/gridToolbar';\r\nimport factoryContainer from '@bingads-webui-campaign-legacy/bingadsgrid/shared/control-factory';\r\nimport {updateTool} from '@bingads-webui-campaign-legacy/bingadsgrid/shared/update-tool';\r\n\r\nexport default function (toolNameList = []) {\r\n const dependencies = ['config', 'gridView'].concat(toolNameList);\r\n\r\n return function(definePlugin) {\r\n return definePlugin('toolbar', dependencies, (...args) => {\r\n const config = args.shift();\r\n\r\n const gridView = args.shift();\r\n const toolItems = args;\r\n\r\n let toolbarConfig = {\r\n el: config.pluginsConfig.toolbar.container,\r\n items: _.size(config.pluginsConfig.toolbar.items) > 0 ? [] : toolItems,\r\n };\r\n\r\n const toolBarView = new GridToolbar(toolbarConfig);\r\n\r\n const configToolItems = _.map(config.pluginsConfig.toolbar.items, (item) => {\r\n if (_.isString(item)) {\r\n const index = _.indexOf(toolNameList, item);\r\n\r\n if (index >= 0) {\r\n let tmpItem = toolItems[index];\r\n\r\n if (tmpItem) {\r\n updateTool(tmpItem, config.pluginsConfig[item]);\r\n }\r\n return tmpItem;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n if (_.has(factoryContainer, item.type)) {\r\n return factoryContainer[item.type](item, toolBarView, gridView);\r\n }\r\n return null;\r\n });\r\n\r\n toolBarView.appendItems(_.compact(configToolItems));\r\n toolBarView.items.forEach((item) => {\r\n if (item.onAttachToolbar) {\r\n item.onAttachToolbar(toolBarView);\r\n }\r\n });\r\n return toolBarView;\r\n });\r\n };\r\n}\r\n","import ko from 'knockout';\r\n\r\nexport default function ViewModel() {\r\n this.showNoGoogleImportMsg = ko.observable(false);\r\n this.showNoFacebookImportMsg = ko.observable(false);\r\n this.showNoFilteredImportMsg = ko.observable(false);\r\n this.showNoAmazonImportMsg = ko.observable(false);\r\n this.showNoPinterestImportMsg = ko.observable(false);\r\n}\r\n","import { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport projectionGrid from 'projection-grid';\r\n\r\nexport class ImportScheduleAccountsDetailView extends DeterministicWrapperView {\r\n viewFactory({\r\n i18n,\r\n data,\r\n }) {\r\n const columns = [{\r\n bodyClasses: 'googleAccount',\r\n name: 'googleAccount',\r\n title: i18n.get('GoogleImport_MicrosoftAdvertising_GoogleAccounts'),\r\n }, {\r\n bodyClasses: 'bingAccount',\r\n name: 'bingAccount',\r\n title: i18n.get('GoogleImport_SelectMultiGoogleAccount_ImportToBingAccount'),\r\n }];\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","import Backbone from 'backbone';\r\nimport Promise from 'bluebird';\r\nimport $ from 'jquery';\r\nimport ko from 'knockout';\r\nimport _ from '@bingads-webui-component-legacy/extension/underscore';\r\n\r\nimport { GoogleLoginRepository, FacebookImportRepository, loadFacebookSdk } from '@bingads-webui-campaign/import-shared-repositories';\r\nimport { AmazonLoginRepository, AmazonImportRepository } from '@bingads-webui-campaign/amazon-import';\r\nimport { PinterestLoginRepository, PinterestImportRepository } from '@bingads-webui-campaign/pinterest-import';\r\nimport { handleGoogleLoginAuthError, handleFacebookLoginError, handleAmazonLoginError, handlePinterestLoginError } from '@bingads-webui-campaign/imports-core';\r\nimport { importRecommendationListNameMap, importChannelNameMap } from '@bingads-webui-campaign/import-callout';\r\nimport { perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\n\r\nimport { PopoverView, contents } from '@bingads-webui/popover';\r\nimport { set } from '@bingads-webui/cookie';\r\n\r\nimport headerTemplateConfig from '@bingads-webui-campaign-legacy/bingadsgrid/config-preprocessor/header-template-config';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { ImportScheduleGridConfig } from '@bingads-webui-campaign-legacy/scheduled-import/view/import-schedule-grid-config';\r\nimport tmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/import-schedule-grid.pug';\r\nimport toolbarPlugin from '@bingads-webui-campaign-legacy/bingadsgrid/plugin/toolbar';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/scheduled-import/viewmodel/import-schedule-grid';\r\nimport cacheManager from '@bingads-webui-campaign-legacy/cache-manager/index';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { notificationApi } from '@bingads-webui-react/notification-center';\r\n\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport downloadService from '@bingads-webui-component-legacy/download/index';\r\nimport pgrid from '@bingads-webui-component-legacy/github/modules/projection-grid/module/projection-grid';\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\nimport { showError } from '@bingads-webui-component-legacy/toast/index';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport UIBlocker from '@bingads-webui-component-legacy/uiblocker/service/uiBlocker';\r\n\r\nimport createImportTaskItemHelper from '@bingads-webui-campaign-legacy/import-campaigns/shared/import-task-item-helper';\r\n\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\n\r\nimport { ImportScheduleAccountsDetailView } from '@bingads-webui-campaign-legacy/scheduled-import/view/import-schedule-accounts-detail-view';\r\n\r\nimport { logException, startPollingUntilImportStarted,\r\n cookieHelperForEditImport } from '@bingads-webui-campaign-legacy/import-campaigns/shared/import-helper';\r\n\r\nimport { IMPORT_TYPE, IMPORT_TYPE_TO_IMPORT_NAME } from '@bingads-webui-campaign-legacy/scheduled-import/view/import-type';\r\n\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/import-campaigns');\r\n\r\nconst permissions = config.get('Permissions');\r\nconst GSILocal = permissions && permissions.dynamic && permissions.dynamic.GSILocal;\r\nconst CNMarketExpansion = permissions && permissions.dynamic && permissions.dynamic.CNMarketExpansion;\r\nconst BaiduFileImport = permissions && permissions.dynamic && permissions.dynamic.BaiduFileImport;\r\n\r\nconst promisifyStartPollingUntilImportStarted = ({\r\n taskItemExecutionId,\r\n showLoadingIcon,\r\n isMultiAccount,\r\n}) => {\r\n return new Promise((resolve) => {\r\n startPollingUntilImportStarted(taskItemExecutionId, resolve, showLoadingIcon, isMultiAccount);\r\n });\r\n};\r\n\r\nfunction gapiSignInSuccess(callback, newI18n, authCode) {\r\n const urlTmpl = 'ImportSession/StartGoogleSession(CustomerId=:advertisercustomer_id,AccountId=:account_id)?authCode={{AuthCode}}&redirectUri=postmessage';\r\n const url = _.template(urlTmpl)({ AuthCode: authCode.code });\r\n\r\n odata.post(url, { data: '' })\r\n .then((sessionId) => {\r\n if (sessionId) {\r\n callback(sessionId, true);\r\n return;\r\n } else {\r\n // show error\r\n showError(handleGoogleLoginAuthError({ authErrors: 'sign_in_error_offline_access' }, newI18n));\r\n }\r\n });\r\n}\r\n\r\nconst logMsg = (category, msg) => instrumentation.logMessage([category], constants.LOGLEVEL.INFO, '/campaign/importcampaign', msg);\r\n\r\nfunction reloginToGoogle(callback, newI18n) {\r\n window.require(['ext/google/gsi'], () => {\r\n logMsg(constants.LOGCATEGORY.TRACE, `GSILocal: ${GSILocal}`);\r\n const loginRepo = new GoogleLoginRepository({ deps: { google: window.google, GSILocal }});\r\n\r\n const blockerElem = document.documentElement;\r\n const UIBlockerToken = UIBlocker.block(blockerElem);\r\n\r\n new Promise((resolve, reject) => {\r\n loginRepo.googleSignIn({\r\n onSuccess: resolve,\r\n onFail: reject,\r\n });\r\n }).then(_.partial(gapiSignInSuccess, callback, newI18n))\r\n .catch((error) => {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n `could not sign into AdWords for editing import: ${error && error.authErrors}`);\r\n\r\n // do not show any error message if the popup is closed by user\r\n if (error && error.authErrors === 'popup_closed') {\r\n return;\r\n }\r\n\r\n // show Google login error message\r\n showError(handleGoogleLoginAuthError(error, newI18n));\r\n }).finally(() => {\r\n UIBlocker.unblock(blockerElem, UIBlockerToken);\r\n });\r\n });\r\n}\r\n\r\nfunction reloginToAmazon(callback, newI18n) {\r\n const amazonLoginRepo = new AmazonLoginRepository();\r\n const deps = {\r\n odata,\r\n config,\r\n defaultLogActivity: {\r\n trace: (msg) => logMsg(constants.LOGCATEGORY.TRACE, msg),\r\n error: (msg) => logMsg(constants.LOGCATEGORY.ERROR, msg),\r\n },\r\n i18n,\r\n edm: { currentAccount: {} },\r\n };\r\n const amazonImportRepo = new AmazonImportRepository({ deps });\r\n\r\n amazonLoginRepo.login()\r\n .then((authCode) => amazonImportRepo.startAmazonSession(authCode, true))\r\n .then((sessionId) => {\r\n if (sessionId) {\r\n callback(sessionId, true);\r\n return;\r\n } else {\r\n // show error\r\n showError(handleAmazonLoginError({ error: 'amazon_already_signed_out' }, newI18n));\r\n }\r\n })\r\n .catch((res) => {\r\n logMsg(constants.LOGCATEGORY.ERROR,\r\n `could not sign into Amazon for editing import: ${res}`);\r\n\r\n // it seems that no error will return if the popup is closed by user\r\n // show Amazon login error message\r\n showError(handleAmazonLoginError(res, newI18n));\r\n });\r\n}\r\n\r\nfunction reloginToFacebook(callback, newI18n) {\r\n loadFacebookSdk().then((sdk) => {\r\n if (sdk === null) {\r\n logMsg(constants.LOGCATEGORY.ERROR, 'Failed to load Facebook script.');\r\n return;\r\n }\r\n\r\n const deps = {\r\n FB: sdk,\r\n odata,\r\n config,\r\n defaultLogActivity: {\r\n trace: (msg) => logMsg(constants.LOGCATEGORY.TRACE, msg),\r\n error: (msg) => logMsg(constants.LOGCATEGORY.ERROR, msg),\r\n },\r\n i18n,\r\n edm: { currentAccount: {} },\r\n };\r\n const facebookRepo = new FacebookImportRepository({ deps });\r\n let hasReLoggedIn = false;\r\n const login2FB = () => {\r\n if (hasReLoggedIn) {\r\n return;\r\n }\r\n hasReLoggedIn = true;\r\n facebookRepo.login({\r\n onSuccess: ({accessToken}) => {\r\n facebookRepo.startFacebookSession(accessToken).then(({ sessionId }) => {\r\n if (sessionId) {\r\n callback(sessionId, true);\r\n return;\r\n } else {\r\n // show error\r\n showError(handleFacebookLoginError({ authErrors: 'FacebookImport_Signin_General_Error' }, newI18n));\r\n }\r\n });\r\n },\r\n onPermissionsDeclined: ({ declinedScopesAndDesc = [], userID}) => {\r\n const declinedPerms = declinedScopesAndDesc.map((ds) => ds.name).join(', ');\r\n\r\n logMsg(constants.LOGCATEGORY.TRACE,\r\n `user (${userID}) decliened permissions: ${declinedPerms || ''}, could not editing import`);\r\n\r\n // show permission error\r\n showError(handleFacebookLoginError({ authErrors: 'FacebookImport_Permission_Denied_Error' }, newI18n));\r\n },\r\n onFail: (error) => {\r\n logMsg(constants.LOGCATEGORY.ERROR,\r\n `could not sign into Facebook for editing import: ${error && error.authErrors}`);\r\n\r\n // do not show any error message if the popup is closed by user\r\n if (error && error.status === 'unknown') {\r\n return;\r\n }\r\n\r\n // show Facebook login error message\r\n showError(handleFacebookLoginError(error, newI18n));\r\n },\r\n });\r\n };\r\n\r\n // logout first, then login again\r\n facebookRepo.logout({onSuccess: login2FB, onFail: login2FB});\r\n });\r\n}\r\n\r\nfunction reloginToPinterest(callback, newI18n) {\r\n const pinterestLoginRepo = new PinterestLoginRepository(config);\r\n const deps = {\r\n odata,\r\n config,\r\n defaultLogActivity: {\r\n trace: (msg) => logMsg(constants.LOGCATEGORY.TRACE, msg),\r\n error: (msg) => logMsg(constants.LOGCATEGORY.ERROR, msg),\r\n },\r\n i18n,\r\n edm: { currentAccount: {} },\r\n };\r\n const pinterestImportRepo = new PinterestImportRepository({ deps });\r\n\r\n pinterestLoginRepo.login()\r\n .then((authCode) => pinterestImportRepo.startPinterestSession(authCode))\r\n .then((sessionId) => {\r\n if (sessionId) {\r\n callback(sessionId, true);\r\n return;\r\n } else {\r\n // show error\r\n showError(handlePinterestLoginError({ error: 'pinterest_already_signed_out' }, newI18n));\r\n }\r\n })\r\n .catch((res) => {\r\n logMsg(constants.LOGCATEGORY.ERROR,\r\n `could not sign into Pinterest for editing import: ${res}`);\r\n\r\n // do not show any error message if the popup is closed by user\r\n if (res && res.error === 'popup_closed_by_user') {\r\n return;\r\n }\r\n\r\n // show Pinterest login error message\r\n showError(handlePinterestLoginError(res, newI18n));\r\n });\r\n}\r\n\r\nfunction gapiSignInMultiAccountSuccess(callback, newI18n, authCode) {\r\n const urlTmpl = 'ImportSession/StartGoogleSession(CustomerId=:customer_id,AccountId={{AccountId}})?authCode={{AuthCode}}&redirectUri=postmessage';\r\n const url = _.template(urlTmpl)({ AccountId: config.get('CurrentAccount').Id, AuthCode: authCode.code });\r\n\r\n odata.post(url, { data: '' })\r\n .then((sessionId) => {\r\n if (sessionId) {\r\n callback(sessionId, true);\r\n return;\r\n } else {\r\n // show error\r\n showError(handleGoogleLoginAuthError({ authErrors: 'sign_in_error_offline_access' }, newI18n));\r\n }\r\n });\r\n}\r\n\r\nexport default class View extends Backbone.View {\r\n initialize(options = {}) {\r\n if (options.perfMarker) {\r\n this.perfMarker = options.perfMarker.createChild('Import_Schedule_Grid_Load');\r\n this.perfMarker.willInit();\r\n }\r\n this.viewModel = new ViewModel();\r\n this.isMultiAccount = options.isMultiAccount;\r\n this.isSmartAccount = options.isSmartAccount || false; // default value is used for MAE\r\n this.isUPSmartAccount = options.isUPSmartAccount || false; // default value is used for MAE\r\n this.supportedImportTypes = options.supportedImportTypes || { [IMPORT_TYPE.googleimport]: IMPORT_TYPE_TO_IMPORT_NAME[IMPORT_TYPE.googleimport] }; // default value is used for MAE\r\n this.isForVNext = options.isForVNext;\r\n this.vNextToolbarPlugin = options.vNextToolbarPlugin;\r\n this.router = options.router;\r\n this.getDataSourceConfig = options.getDataSourceConfig;\r\n this.createRunNowImport = options.createRunNowImport;\r\n this.createUpdateStatusView = options.createUpdateStatusView;\r\n this.batchEditCallback = options.batchEditCallback;\r\n this.overridingEvent = options.overridingEvent;\r\n this.isFiltered = false;\r\n this.importTypeOfFilter = options.importTypeOfFilter;\r\n this.importChannelType = options.importChannelType;\r\n this.adoptResumeScheduleRecommendation = (status, scheduleItems) => options.adoptResumeScheduleRecommendation(\r\n odata,\r\n {\r\n trace: (msg) => logMsg(constants.LOGCATEGORY.TRACE, msg),\r\n error: (msg) => logMsg(constants.LOGCATEGORY.ERROR, msg),\r\n },\r\n status,\r\n scheduleItems,\r\n );\r\n this.newI18n = options.newI18n;\r\n\r\n // pilot logs\r\n logMsg(constants.LOGCATEGORY.TRACE, `CNMarketExpansion: ${CNMarketExpansion}`);\r\n logMsg(constants.LOGCATEGORY.TRACE, `BaiduFileImport: ${BaiduFileImport}`);\r\n }\r\n\r\n events() {\r\n return _.defaults({}, this.overridingEvent, {\r\n 'click .col-State .statuschangehover': 'changeStatus',\r\n 'click .edit-task': this.isMultiAccount ? 'editMultiAccountImportTaskItem' : 'editImportTaskItem',\r\n 'click .run-now': this.isMultiAccount ?\r\n _.debounce(this.runMultiAccountImportNow.bind(this), 1000, true) :\r\n _.debounce(this.runImportNow.bind(this), 1000, true),\r\n 'click .download-file': 'downloadUploadedFile',\r\n 'keypress input': 'onKeyPressed',\r\n 'click .import-schedule-accounts-detail': 'viewAccountsDetails',\r\n });\r\n }\r\n\r\n viewAccountsDetails(event) {\r\n let model = this.getColumnData(event);\r\n\r\n const data = _.map(model.ImportTaskItemList, ({\r\n AccountName,\r\n AccountNumber,\r\n AdWordsImportContext: { AccountName: googleAccount, CustomerId },\r\n }) => ({\r\n googleAccount: `${googleAccount} (${CustomerId})`,\r\n bingAccount: `${AccountName} (${AccountNumber})`,\r\n }));\r\n\r\n const targetRect = event.target.getBoundingClientRect();\r\n\r\n new PopoverView({\r\n target: this.$(event.target),\r\n position: {\r\n isAbsolute: true,\r\n left: targetRect.right,\r\n top: targetRect.top,\r\n },\r\n containerClassName: ['GoogleAdsAccountView'],\r\n }).setContent(new contents.TitledContent()\r\n .setTitle('')\r\n .setBody(new ImportScheduleAccountsDetailView({i18n, data})));\r\n }\r\n\r\n onKeyPressed(event) {\r\n const RETURN_CODE = 13;\r\n\r\n if (event.which === RETURN_CODE) {\r\n event.preventDefault();\r\n const pageText = this.grid.pagination.$('input.form-control.page-number-input');\r\n\r\n if (pageText) {\r\n this.grid.pagination.viewModel.pageNumberText(pageText.val());\r\n }\r\n }\r\n }\r\n\r\n changeStatus(e) {\r\n e.stopPropagation();\r\n let model = this.getColumnData(e);\r\n\r\n if (this.updateStatusView) {\r\n this.updateStatusView.remove();\r\n this.updateStatusView = null;\r\n }\r\n\r\n this.updateStatusView = this.createUpdateStatusView(this, {\r\n ...model,\r\n permissions,\r\n }).render();\r\n\r\n $(e.target).closest('td', this.el).append(this.updateStatusView.el);\r\n }\r\n\r\n getColumnData(e) {\r\n return this.grid.gridView.itemOfElement(e.target);\r\n }\r\n\r\n clickStatusIcon() {\r\n this.indicator = true;\r\n }\r\n\r\n checkEditButton() {\r\n const selectedItems = this.grid.gridView.selectedItems();\r\n const editDropDown = this.grid.toolbar.items[0];\r\n const enableEdit = _.find(selectedItems, (item) => {\r\n return item && item.State.toString() !== 'Deleted';\r\n });\r\n\r\n if (enableEdit) {\r\n editDropDown.enable();\r\n } else {\r\n editDropDown.disable();\r\n }\r\n }\r\n\r\n renderGrid(gridConfig, useQuickFilter) {\r\n this.grid = pgrid\r\n .factory({ vnext: true })\r\n .use(perfMarkerPlugin)\r\n .use(a11yPlugin)\r\n .use(paginationPlugin)\r\n .use(placeholderPlugin)\r\n .use(uiBlockerPlugin)\r\n .use(assistedSelectionPlugin);\r\n\r\n if (useQuickFilter) {\r\n this.grid = this.grid.use(toolbarPlugin(['quickFilter']));\r\n } else if (this.isForVNext) {\r\n this.grid = this.grid.use(this.vNextToolbarPlugin.plugin);\r\n } else {\r\n this.grid = this.grid.use(toolbarPlugin());\r\n }\r\n\r\n this.grid = this.grid.create(_.flow([headerTemplateConfig])(gridConfig));\r\n if (!this.isForVNext) {\r\n this.grid.toolbar.render();\r\n }\r\n this.grid.gridView.render();\r\n\r\n this.grid.gridView.on('didUpdate', () => {\r\n const hasNoResult = this.grid.gridView.countRows === 0;\r\n const filterCheck = this.isFiltered;\r\n\r\n this.viewModel.showNoGoogleImportMsg(this.importTypeOfFilter === IMPORT_TYPE.googleimport && !filterCheck && hasNoResult);\r\n this.viewModel.showNoFacebookImportMsg(this.importTypeOfFilter === IMPORT_TYPE.facebookimport && !filterCheck && hasNoResult);\r\n this.viewModel.showNoAmazonImportMsg(this.importTypeOfFilter === IMPORT_TYPE.amazonImport && !filterCheck && hasNoResult);\r\n this.viewModel.showNoPinterestImportMsg(this.importTypeOfFilter === IMPORT_TYPE.pinterestImport && !filterCheck && hasNoResult);\r\n this.viewModel.showNoFilteredImportMsg(filterCheck && hasNoResult);\r\n\r\n if (!this.isForVNext) {\r\n this.checkEditButton();\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n this.$el.html(tmpl({\r\n noImportMsgHeader: i18n.get('Scheduled_Import_History_EmptyHeader'),\r\n noGoogleImportMsg: i18n.get('Scheduled_Import_History_EmptyBody'),\r\n noFacebookImportMsg: i18n.get('Scheduled_Import_History_EmptyBody_Facebook'),\r\n noAmazonImportMsg: i18n.get('Scheduled_Import_History_EmptyBody_Amazon'),\r\n noPinterestImportMsg: i18n.get('Scheduled_Import_History_EmptyBody_Pinterest'),\r\n noFilteredImportMsg: i18n.get('Grid_NoFilteredRecords'),\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n const gridConfig = new ImportScheduleGridConfig(this);\r\n\r\n this.renderGrid(gridConfig, false);\r\n if (!this.isForVNext) {\r\n this.grid.gridView.on('didSelect', this.checkEditButton.bind(this));\r\n }\r\n\r\n return this;\r\n }\r\n\r\n handleActionForScheduledImport(model, callback, isRunnow = false) {\r\n if (!model || (!model.AdWordsImportContext && !model.FacebookImportContext && !model.AmazonImportContext && !model.PinterestImportContext)) {\r\n instrumentation.logMessage([constants.LOGCATEGORY.ERROR], constants.LOGLEVEL.INFO, '/campaign/importcampaign', 'Bad model or context');\r\n return;\r\n }\r\n\r\n const currentUserId = _.propertyOf(config.get('CurrentUser'))('Id');\r\n const isFacebookImport = this.supportedImportTypes[IMPORT_TYPE.facebookimport] && model && model['@odata.type'] === '#Model.FacebookTaskItem';\r\n const isAmazonImport = this.supportedImportTypes[IMPORT_TYPE.amazonImport] && model && model['@odata.type'] === '#Model.AmazonImportTaskItem';\r\n const isPinterestImport = this.supportedImportTypes[IMPORT_TYPE.pinterestImport] && model && model['@odata.type'] === '#Model.PinterestImportTaskItem';\r\n\r\n if (model.ModifiedBy.Id === currentUserId) {\r\n if (isFacebookImport) {\r\n callback(model.FacebookImportContext.SessionId);\r\n return;\r\n } else if (isAmazonImport) {\r\n callback(model.AmazonImportContext.SessionId);\r\n return;\r\n } else if (isPinterestImport) {\r\n callback(model.PinterestImportContext.SessionId);\r\n return;\r\n } else if (isRunnow || (model.AdWordsImportContext && model.AdWordsImportContext.SessionType !== 'CloudImport')) {\r\n // Add login confirmation if the task is from MAE to relogin the user into webui\r\n // Run now job of MAE can trigger directly.\r\n callback(model.AdWordsImportContext.SessionId);\r\n return;\r\n }\r\n }\r\n\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n ` Session Type:${model && model.AdWordsImportContext && model.AdWordsImportContext.SessionType}\r\n ModifiedById: ${model && model.ModifiedBy.Id}\r\n currentUserId: ${currentUserId}\r\n isFacebookImport: ${isFacebookImport}\r\n isAmazonImport: ${isAmazonImport}\r\n isPinterestImport: ${isPinterestImport}\r\n `);\r\n\r\n // ask user to relogin\r\n if (isFacebookImport) {\r\n reloginToFacebook(callback, this.newI18n);\r\n } else if (isAmazonImport) {\r\n reloginToAmazon(callback, this.newI18n);\r\n } else if (isPinterestImport) {\r\n reloginToPinterest(callback, this.newI18n);\r\n } else {\r\n reloginToGoogle(callback, this.newI18n);\r\n }\r\n }\r\n\r\n handleActionForMultiAccountScheduledImport(model, callback) {\r\n const currentUserId = _.propertyOf(config.get('CurrentUser'))('Id');\r\n\r\n if (model.ModifiedBy.Id === currentUserId) {\r\n callback(model.SessionId);\r\n return;\r\n } else {\r\n window.require(['ext/google/gsi'], () => {\r\n logMsg(constants.LOGCATEGORY.TRACE, `GSILocal: ${GSILocal}`);\r\n const loginRepo = new GoogleLoginRepository({ deps: { google: window.google, GSILocal }});\r\n\r\n new Promise((resolve, reject) => {\r\n loginRepo.googleSignIn({\r\n onSuccess: resolve,\r\n onFail: reject,\r\n });\r\n }).then(_.partial(gapiSignInMultiAccountSuccess, callback, this.newI18n))\r\n .catch((error) => {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/AccountsSummary',\r\n `could not sign into AdWords for editing import: ${error && error.authErrors}`);\r\n\r\n // do not show any error message if the popup is closed by user\r\n if (error && error.authErrors === 'popup_closed') {\r\n return;\r\n }\r\n\r\n // show Google login error message\r\n showError(handleGoogleLoginAuthError(error, this.newI18n));\r\n })\r\n .finally(withUiBlock());\r\n });\r\n }\r\n }\r\n\r\n editImportTaskItem(e) {\r\n const model = this.getColumnData(e);\r\n\r\n this.goToGoogleImportWizard({\r\n model,\r\n });\r\n }\r\n\r\n goToGoogleImportWizard({\r\n model, importStep = '',\r\n }) {\r\n const aid = state.get('account_id');\r\n const cid = state.get('customer_id');\r\n const uid = state.get('user_id');\r\n const taskItemId = model.Id;\r\n let navigator = null;\r\n\r\n if (this.isForVNext) {\r\n let routeName;\r\n\r\n if (this.supportedImportTypes[IMPORT_TYPE.facebookimport] && model['@odata.type'] === '#Model.FacebookTaskItem') {\r\n routeName = 'facebookimport';\r\n } else if (this.supportedImportTypes[IMPORT_TYPE.amazonImport] && model['@odata.type'] === '#Model.AmazonImportTaskItem') {\r\n routeName = 'amazonimport';\r\n } else if (this.supportedImportTypes[IMPORT_TYPE.pinterestImport] && model['@odata.type'] === '#Model.PinterestImportTaskItem') {\r\n routeName = 'pinterestimport';\r\n } else {\r\n routeName = 'googleimport';\r\n }\r\n\r\n const params = { taskItemId };\r\n\r\n if (_.isString(importStep) && !_.isEmpty(importStep)) {\r\n params.importStep = importStep;\r\n }\r\n\r\n navigator = _.partial(this.router.navigateToRoute, routeName, params);\r\n } else {\r\n const returnUrl = `/Campaign/ImportCampaign/GoogleImport?cid=${cid}&uid=${uid}&aid=${aid}&taskItemId=${taskItemId}`;\r\n\r\n navigator = _.partial(this.navigateToUrl, returnUrl);\r\n }\r\n\r\n this.handleActionForScheduledImport(model, _.partial(this.setDestination, navigator, taskItemId));\r\n }\r\n\r\n editMultiAccountImportTaskItem(e) {\r\n const model = this.getColumnData(e);\r\n const cid = state.get('customer_id');\r\n const uid = state.get('user_id');\r\n const taskItemId = model.Id;\r\n let navigator = null;\r\n\r\n if (this.isForVNext) {\r\n navigator = _.partial(this.router.navigateToRoute, 'googleimport');\r\n } else {\r\n const returnUrl = `/Campaign/AccountsSummary?cid=${cid}&uid=${uid}#customer/${cid}/import-accounts/googleImport`;\r\n\r\n navigator = _.partial(this.navigateToUrl, returnUrl);\r\n }\r\n\r\n // reserve task item id in cookie\r\n set('multi-account-scheduled-import-task-item-id', taskItemId);\r\n this.handleActionForMultiAccountScheduledImport(model, _.partial(this.setDestination, navigator, taskItemId));\r\n }\r\n\r\n setDestination(navigator, taskItemId, sessionId, ifUpdated) {\r\n if (ifUpdated) {\r\n cookieHelperForEditImport.createCookie(taskItemId, sessionId);\r\n } else {\r\n cookieHelperForEditImport.deleteCookie();\r\n }\r\n\r\n navigator();\r\n }\r\n\r\n navigateToUrl(url) {\r\n window.location.href = url;\r\n }\r\n\r\n downloadUploadedFile(e) {\r\n let data = this.getColumnData(e);\r\n\r\n if (this.isFileImportODataMigrationEnabled && data && data.FileImportContext && data.FileImportContext.FilePath) {\r\n downloadService.download(data.FileImportContext.FilePath);\r\n } else {\r\n showError(i18n.get('GenericErrorMessage'));\r\n }\r\n }\r\n\r\n runImportNow(e) {\r\n const model = this.getColumnData(e);\r\n\r\n this.handleActionForScheduledImport(model, _.partial(this.runImportNowInternal, model).bind(this), true);\r\n }\r\n\r\n // save import settings in edit panel\r\n saveImportSettingsInEditPanel({ columnData, updateData, edm, jsData, closeEditPanel }) {\r\n this.handleActionForScheduledImport(columnData, _.partial(this.editTaskSaveInternal, columnData, updateData, edm, jsData, closeEditPanel).bind(this));\r\n }\r\n\r\n editTaskSaveInternal(model, updateData, edm, jsData, closeEditPanel, sessionId) {\r\n const taskItemOptions = {\r\n adapter: 'odata',\r\n entitySet: this.isMultiAccount ?\r\n edm.currentCustomer.TaskItems : edm.currentAccount.TaskItems,\r\n };\r\n\r\n const taskItemId = model.Id;\r\n const data = _.extend({}, model,\r\n model['@odata.type'] === '#Model.ImportTaskItem' ? {\r\n AdWordsImportContext: _.extend({}, model.AdWordsImportContext, {\r\n AdWordsSessionUserId: _.propertyOf(config.get('CurrentUser'))('Id'),\r\n SessionId: sessionId,\r\n SessionType: model.AdWordsImportContext.SessionType === 'CloudImport' ? null : model.AdWordsImportContext.SessionType,\r\n }),\r\n } : null, model['@odata.type'] === '#Model.FacebookTaskItem' ? {\r\n FacebookImportContext: _.extend({}, model.FacebookImportContext, {\r\n FacebookSessionUserId: _.propertyOf(config.get('CurrentUser'))('Id'),\r\n SessionId: sessionId,\r\n }),\r\n } : null,\r\n { ImportUserPreferences: undefined },\r\n updateData,\r\n );\r\n\r\n jsData.TaskItem.update(taskItemId, data, taskItemOptions).then(() => {\r\n closeEditPanel();\r\n this.grid.gridView.refresh(true);\r\n }).catch((error) => {\r\n logMsg(constants.LOGCATEGORY.ERROR, `edit task failed due to: ${error}`);\r\n }).finally(withUiBlock(\r\n /* target */ $('.schedule-setting-editor-panel .panel-content'),\r\n /* loadingText */ undefined,\r\n /* shouldFocus */ undefined,\r\n /* delayedLoading */ undefined,\r\n /* overlayZIndex */ '1010',\r\n ));\r\n }\r\n\r\n applyAdCustomizerFeedRecommendation(columnData, notificationString, edm, jsData, recommendationType) {\r\n const updateData = {\r\n ImportUserPreference: _.extend({}, columnData.ImportUserPreference, {\r\n UpdateAdCustomizerFeeds: true,\r\n ImportNewAdCustomizerFeeds: true,\r\n }),\r\n };\r\n\r\n this.handleActionForScheduledImport(columnData, _.partial(this.applyRecommendationInternal, columnData, updateData, notificationString, edm, jsData, recommendationType).bind(this));\r\n }\r\n\r\n applySetMinBidValueAdjustRecommendation(columnData, notificationString, edm, jsData, recommendationType) {\r\n const updateData = {\r\n ImportUserPreference: _.extend({}, columnData.ImportUserPreference, {\r\n SetLowerBidsToAdCenterMinBids: true,\r\n }),\r\n };\r\n\r\n this.handleActionForScheduledImport(columnData, _.partial(this.applyRecommendationInternal, columnData, updateData, notificationString, edm, jsData, recommendationType).bind(this));\r\n }\r\n\r\n applyCurrencyConversionRecommendation(columnData, notificationString, edm, jsData, recommendationType) {\r\n const updateData = {\r\n ImportUserPreference: _.extend({}, columnData.ImportUserPreference, {\r\n EnableAutoCurrencyConversion: true,\r\n }),\r\n };\r\n\r\n this.handleActionForScheduledImport(columnData, _.partial(this.applyRecommendationInternal, columnData, updateData, notificationString, edm, jsData, recommendationType).bind(this));\r\n }\r\n\r\n applyAutoFrequencyRecommendation(columnData, notificationString, edm, jsData, recommendationType) {\r\n const updateData = {\r\n Cron: null,\r\n IsAutoFrequency: true,\r\n };\r\n\r\n this.handleActionForScheduledImport(columnData, _.partial(this.applyRecommendationInternal, columnData, updateData, notificationString, edm, jsData, recommendationType).bind(this));\r\n }\r\n\r\n applyGetGoogleAdsPermissionRecommendation(columnData, notificationString, edm, jsData, recommendationType) {\r\n const callback = (sessionId) => {\r\n this.handleActionForScheduledImport(columnData, _.partial(this.applyRecommendationInternal, columnData, null, notificationString, edm, jsData, recommendationType, sessionId).bind(this));\r\n };\r\n\r\n // relogin to google to refresh the token\r\n reloginToGoogle(callback, this.newI18n);\r\n }\r\n\r\n applyAccessTokenExpiringRecommendation(columnData, notificationString, edm, jsData, recommendationType) {\r\n const callback = (sessionId) => {\r\n this.handleActionForScheduledImport(columnData, _.partial(this.applyRecommendationInternal, columnData, null, notificationString, edm, jsData, recommendationType, sessionId).bind(this));\r\n };\r\n\r\n // relogin to facebook to refresh the token\r\n reloginToFacebook(callback, this.newI18n);\r\n }\r\n\r\n applyRecommendationInternal(model, updateData, notificationString, edm, jsData, recommendationType, sessionId) {\r\n const taskItemOptions = {\r\n adapter: 'odata',\r\n entitySet: this.isMultiAccount ?\r\n edm.currentCustomer.TaskItems : edm.currentAccount.TaskItems,\r\n };\r\n\r\n const taskItemId = model.Id;\r\n const data = _.extend({}, model,\r\n model['@odata.type'] === '#Model.ImportTaskItem' ? {\r\n AdWordsImportContext: _.extend({}, model.AdWordsImportContext, {\r\n AdWordsSessionUserId: _.propertyOf(config.get('CurrentUser'))('Id'),\r\n SessionId: sessionId,\r\n SessionType: model.AdWordsImportContext.SessionType === 'CloudImport' ? null : model.AdWordsImportContext.SessionType,\r\n }),\r\n } : null, model['@odata.type'] === '#Model.FacebookTaskItem' ? {\r\n FacebookImportContext: _.extend({}, model.FacebookImportContext, {\r\n FacebookSessionUserId: _.propertyOf(config.get('CurrentUser'))('Id'),\r\n SessionId: sessionId,\r\n }),\r\n } : null,\r\n { ImportUserPreferences: undefined },\r\n updateData,\r\n );\r\n\r\n const importChannel = importChannelNameMap(importRecommendationListNameMap(model));\r\n\r\n jsData.TaskItem.update(taskItemId, data, taskItemOptions).then(() => {\r\n this.grid.gridView.refresh(true);\r\n notificationApi.showInfo(notificationString);\r\n logMsg(constants.LOGCATEGORY.TRACE, `Import_Recommendation ${taskItemId} apply_success ${recommendationType} ${importChannel}`);\r\n }).catch((error) => {\r\n logMsg(constants.LOGCATEGORY.ERROR, `Import_Recommendation ${taskItemId} apply_fail ${recommendationType} ${error} ${importChannel}`);\r\n });\r\n }\r\n\r\n runMultiAccountImportNow(e) {\r\n const model = this.getColumnData(e);\r\n\r\n this.handleActionForMultiAccountScheduledImport(model, _.partial(this.runMultiAccountImportNowInternal, model).bind(this));\r\n }\r\n\r\n runImportNowInternal(model, sessionId) {\r\n if (this.supportedImportTypes[IMPORT_TYPE.facebookimport] && model['@odata.type'] === '#Model.FacebookTaskItem') {\r\n const isSmartImportWizardJob = model.IsSmartImport === true || model.IsSmartImport === false;\r\n const facebookBody = _.extend(\r\n _.pick(model, '@odata.type', 'AccountId', 'Type', 'TimeZoneId', 'AdGroupMedium', 'NotificationMedium', 'CultureName', 'UserName', 'AccountName'),\r\n {\r\n AdGroupMedium: 'Search', // TODO: MT bug? MT reponse with '0'\r\n FacebookImportContext: _.extend({}, model.FacebookImportContext, {\r\n '@odata.type': '#Model.FacebookImportContext',\r\n SessionId: sessionId,\r\n FacebookSessionUserId: _.propertyOf(config.get('CurrentUser'))('Id'),\r\n }),\r\n ImportType: `FacebookImport${permissions && permissions.IsUseImportTestTypeForImportTaskExecutionEnabled ? 'Test' : ''}`,\r\n ImportUserPreference: model.ImportUserPreference,\r\n State: 'Active',\r\n NotificationType: 'None',\r\n }, isSmartImportWizardJob && { // pass IsAutoFrequency as false, IsSmartImport and Name if it is from smart import workflow (smart/expert)\r\n IsAutoFrequency: false,\r\n IsSmartImport: model.IsSmartImport,\r\n Name: model.Name,\r\n });\r\n\r\n this.triggerRunNowImportTask(facebookBody, model.Id);\r\n return;\r\n } else if (this.supportedImportTypes[IMPORT_TYPE.amazonImport] && model['@odata.type'] === '#Model.AmazonImportTaskItem') {\r\n const amazonBody = _.extend(\r\n _.pick(model, '@odata.type', 'AccountId', 'Type', 'TimeZoneId', 'AdGroupMedium', 'NotificationMedium', 'CultureName', 'UserName', 'AccountName'),\r\n {\r\n AdGroupMedium: 'Search', // TODO: MT bug? MT reponse with '0'\r\n AmazonImportContext: _.extend({}, model.AmazonImportContext, {\r\n '@odata.type': '#Model.AmazonImportContext',\r\n SessionId: sessionId,\r\n }),\r\n ImportType: `AmazonImport${permissions && permissions.IsUseImportTestTypeForImportTaskExecutionEnabled ? 'Test' : ''}`,\r\n ImportUserPreference: model.ImportUserPreference,\r\n State: 'Active',\r\n NotificationType: 'None',\r\n IsAutoFrequency: false,\r\n IsSmartImport: model.IsSmartImport,\r\n Name: model.Name,\r\n });\r\n\r\n this.triggerRunNowImportTask(amazonBody, model.Id);\r\n return;\r\n } else if (this.supportedImportTypes[IMPORT_TYPE.pinterestImport] && model['@odata.type'] === '#Model.PinterestImportTaskItem') {\r\n const pinterestBody = _.extend(\r\n _.pick(model, '@odata.type', 'AccountId', 'Type', 'TimeZoneId', 'AdGroupMedium', 'NotificationMedium', 'CultureName', 'UserName', 'AccountName'),\r\n {\r\n AdGroupMedium: 'Search',\r\n PinterestImportContext: _.extend({}, model.PinterestImportContext, {\r\n '@odata.type': '#Model.PinterestImportContext',\r\n SessionId: sessionId,\r\n PinterestSessionUserId: _.propertyOf(config.get('CurrentUser'))('Id'),\r\n }),\r\n ImportType: `PinterestImport${permissions && permissions.IsUseImportTestTypeForImportTaskExecutionEnabled ? 'Test' : ''}`,\r\n ImportUserPreference: model.ImportUserPreference,\r\n State: 'Active',\r\n NotificationType: 'None',\r\n IsAutoFrequency: false,\r\n IsSmartImport: model.IsSmartImport,\r\n Name: model.Name,\r\n });\r\n\r\n this.triggerRunNowImportTask(pinterestBody, model.Id);\r\n return;\r\n }\r\n\r\n const adWordsImportContext = model.AdWordsImportContext;\r\n let body;\r\n\r\n const isSmartImportWizardJob = permissions.IsSmartImportEnabled && (model.IsSmartImport === true || model.IsSmartImport === false);\r\n const isSmartCampaignOnlyJob = model.IsSmartCampaignOnly === true || model.IsSmartCampaignOnly === false;\r\n const isPmaxRecommendationJob = model.DefaultImportSettings === 'PMaxRecommendation'; // if pmax import recommendation task\r\n\r\n if (isPmaxRecommendationJob) {\r\n logMsg(constants.LOGCATEGORY.TRACE, {\r\n TaskType: 'PmaxRecommendationImportTask',\r\n TaskId: model.Id,\r\n Event: 'Trigger runnow button',\r\n });\r\n }\r\n\r\n try {\r\n body = createImportTaskItemHelper.prepareGoogleImport(_.extend({\r\n importUserPreferences: model.ImportUserPreferences,\r\n notificationType: model.NotificationType,\r\n timeZoneId: model.TimeZoneId,\r\n market: model.CustomerMarket,\r\n language: model.Language,\r\n adGroupMedium: model.AdGroupMedium,\r\n googleCustomerId: adWordsImportContext.CustomerId,\r\n loginCustomerId: adWordsImportContext.LoginCustomerId,\r\n campaignIds: adWordsImportContext.CampaignIds,\r\n googleEntitiesBlobName: adWordsImportContext.GoogleEntitiesBlobName,\r\n // if there is a new sessionId, reset value from 'CloudImport' into null.\r\n // same user triagger a runnow job for BAE task from webui, it will keep origin SessionType, SessionId.\r\n sessionType: adWordsImportContext.SessionId !== sessionId && adWordsImportContext.SessionType === 'CloudImport' ? null : adWordsImportContext.SessionType,\r\n initialAdWordsAccount: {\r\n sessionId,\r\n googleAccountName: adWordsImportContext.AccountName,\r\n },\r\n }, isSmartImportWizardJob && { // pass IsAutoFrequency as false, IsSmartImport and Name if it is from smart import workflow (smart/expert)\r\n IsAutoFrequency: false,\r\n IsSmartImport: model.IsSmartImport,\r\n Name: model.Name,\r\n }, isSmartCampaignOnlyJob && {\r\n IsSmartCampaignOnly: model.IsSmartCampaignOnly,\r\n }, model.IsEscImport && {\r\n IsEscImport: model.IsEscImport,\r\n }, isPmaxRecommendationJob && {\r\n DefaultImportSettings: model.DefaultImportSettings, // pass default import settings for MT to generate customized preferences\r\n }));\r\n } catch (err) {\r\n logException(err);\r\n throw err;\r\n }\r\n\r\n body = _.extend(body, {\r\n State: 'Active',\r\n NotificationType: 'None',\r\n });\r\n\r\n if (model.ImportUserPreference) {\r\n body = _.extend(body, {\r\n ImportUserPreference: model.ImportUserPreference,\r\n ImportUserPreferences: undefined,\r\n });\r\n }\r\n\r\n this.triggerRunNowImportTask(body, model.Id);\r\n }\r\n\r\n runMultiAccountImportNowInternal(model, sessionId) {\r\n let body;\r\n\r\n try {\r\n body = createImportTaskItemHelper.prepareMultiAccountGoogleImport({\r\n importUserPreference: model.ImportUserPreference,\r\n importTaskItemList: model.ImportTaskItemList,\r\n notificationType: model.NotificationType,\r\n timeZoneId: model.TimeZoneId,\r\n loginCustomerId: model.ImportTaskItemList[0].AdWordsImportContext.LoginCustomerId,\r\n sessionId,\r\n });\r\n } catch (err) {\r\n logException(err);\r\n throw err;\r\n }\r\n\r\n body = _.extend(body, {\r\n State: 'Active',\r\n NotificationType: 'None',\r\n });\r\n\r\n this.triggerRunNowImportTask(body, model.Id);\r\n }\r\n\r\n triggerRunNowImportTask(body, originalTaskId) {\r\n this.grid.gridView.trigger('willUpdate');\r\n this.createRunNowImport({\r\n body,\r\n isMultiAccount: this.isMultiAccount,\r\n })\r\n .then((data) => {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n 'disable cache for campaign grid after runnow');\r\n cacheManager.invalidate('Campaign');\r\n\r\n const taskItemExecutionId = data.TaskItemExecutions[0].Id;\r\n\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n `successfuly trigger a run now import with task execution id: ${taskItemExecutionId}, original task id: ${originalTaskId}`);\r\n return promisifyStartPollingUntilImportStarted({\r\n taskItemExecutionId,\r\n showLoadingIcon: false,\r\n isMultiAccount: this.isMultiAccount,\r\n });\r\n })\r\n .then(() => {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign',\r\n 'successfuly start the run now import');\r\n this.grid.gridView.refresh(true);\r\n this.trigger('didRunNowImport');\r\n })\r\n .catch((err) => {\r\n this.handleGridErrors(err);\r\n })\r\n .finally(withUiBlock(this.grid.gridView.$el));\r\n }\r\n\r\n handleGridErrors(err) {\r\n this.grid.gridView.trigger('didUpdate');\r\n logException(err);\r\n let msg = i18n.get('GenericErrorMessage');\r\n\r\n if (_.propertyOf(_.first(err.errors))('Code') === 'TaskThrottlingLimitReached') {\r\n msg = i18n.get('Error_Import_ActiveImportLimit');\r\n }\r\n showError(msg);\r\n }\r\n\r\n remove(...args) {\r\n this.grid.gridView.remove();\r\n if (!this.isForVNext) {\r\n this.grid.toolbar.remove();\r\n }\r\n this.grid.pagination.remove();\r\n super.remove(...args);\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport { getImportScheduleDataSourceConfig, createRunNowImport, createUpdateStatusView } from './import-schedule-grid-data-source';\r\nimport ImportScheduleGridBase from './import-schedule-grid-base';\r\n\r\nexport default class View extends ImportScheduleGridBase {\r\n constructor(options = {}) {\r\n super(_.defaults(options, {\r\n getDataSourceConfig: getImportScheduleDataSourceConfig,\r\n createRunNowImport,\r\n createUpdateStatusView,\r\n }));\r\n }\r\n}\r\n","import Promise from 'bluebird';\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\n\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport dateUtil from '@bingads-webui-component-legacy/humanize/date';\r\n\r\nexport const getBlobUploadUrl = async ({ fileExtension = 'csv' }) => {\r\n const odataOptions = {\r\n cacheResponse: false,\r\n url: `/BulkUploadFiles/GetBlobUploadUrl(CustomerId=:customer_id,BulkFileType=21,FileExtension=${fileExtension})`,\r\n };\r\n\r\n const res = await odata.get(odataOptions);\r\n\r\n return res;\r\n};\r\n\r\nasync function postTask({\r\n BlobName, fileName, TaskType, SasUrl, UploadDateTime = null,\r\n}) {\r\n const permissions = config.get('Permissions') || {};\r\n const testTypeSuffix = permissions.IsUseImportTestTypeForImportTaskExecutionEnabled ? 'Test' : '';\r\n\r\n const odataOptions = {\r\n cacheResponse: false,\r\n url: '/Customers(:customer_id)/TaskItems?$expand=TaskItemExecutions',\r\n data: {\r\n '@odata.type': '#Model.ImportPreferenceBulkUpdateTaskItem',\r\n Name: `ImportPreferenceBulkUpdate-${dateUtil.format(new Date(), 'yyyy-MM-dd')}`,\r\n Type: `ImportPreferenceBulkUpdate${testTypeSuffix}`,\r\n Cron: '',\r\n FileIdentifier: BlobName,\r\n SasUrl,\r\n TaskType,\r\n UploadedFileName: fileName,\r\n UploadDateTime,\r\n },\r\n };\r\n\r\n const res = await odata.post(odataOptions);\r\n\r\n return res;\r\n}\r\n\r\nexport const postPreviewTask = async ({ BlobName, fileName, SasUrl }) => {\r\n const res = await postTask({\r\n BlobName, fileName, TaskType: 'Preview', SasUrl,\r\n });\r\n\r\n return res;\r\n};\r\n\r\nexport const postCommitTask = async ({\r\n BlobName, fileName, UploadDateTime, SasUrl,\r\n}) => {\r\n const res = await postTask({\r\n BlobName, fileName, TaskType: 'Commit', SasUrl, UploadDateTime,\r\n });\r\n\r\n return res;\r\n};\r\n\r\nexport const pollExecutionResult = ({ id }) => {\r\n const odataOptions = {\r\n cacheResponse: false,\r\n url: `/Customers(:customer_id)/TaskItemExecutions(${id})`,\r\n };\r\n\r\n return new Promise((resolve) => {\r\n const timer = setInterval(() => {\r\n odata.get(odataOptions).then((res) => {\r\n if (res.Status === 'Completed' || res.Status === 'Failed') {\r\n clearInterval(timer);\r\n resolve(res);\r\n }\r\n });\r\n }, 5000);\r\n });\r\n};\r\n","\r\nexport const PREFERENCE_UPLOAD_STATUS = {\r\n NotStart: 1,\r\n Upload: 2,\r\n Preview: 3,\r\n Apply: 4,\r\n Previewed: 5,\r\n Applied: 6,\r\n Error: 7,\r\n};\r\n","// TODO: confirm with MT and PM about the error messages\r\nexport const PREFERENCE_UPLOAD_ERROR_MAP = {\r\n InvalidImportPreferenceBulkUpdateTaskType: 'Import_PreferenceUpload_Invalid_Task_Type',\r\n ImportPreferenceBulkUpdateUploadFileSizeExceeded: 'Import_PreferenceUpload_Upload_File_Size_Exceeded',\r\n ImportPreferenceBulkUpdateBlobDownloadError: 'Import_PreferenceUpload_Blob_Download_Error',\r\n ImportPreferenceBulkUpdateBlobUploadError: 'Import_PreferenceUpload_Blob_Upload_Error',\r\n ImportPreferenceBulkUpdateFileFormatInvalid: 'Import_PreferenceUpload_File_Format_Invalid',\r\n ImportPreferenceBulkUpdateFileIsEmpty: 'Import_PreferenceUpload_File_Is_Empty',\r\n ImportPreferenceBulkUpdateFileMissingHeaderRow: 'Import_PreferenceUpload_File_Missing_HeaderRow',\r\n ImportPreferenceBulkUpdateColumnTaskIdNotFound: 'Import_PreferenceUpload_Column_Task_Id_Not_Found',\r\n ImportPreferenceBulkUpdateColumnAccountIdNotFound: 'Import_PreferenceUpload_Column_Account_Id_Not_Found',\r\n ImportPreferenceBulkUpdateColumnPreferenceNotFound: 'Import_PreferenceUpload_Column_Preference_Not_Found',\r\n ImportPreferenceBulkUpdateColumnImportTypeNotFound: 'Import_PreferenceUpload_Column_Import_Type_Not_Found',\r\n ImportPreferenceBulkUpdateParseFailedInvalidValuesInDataRows: 'Import_PreferenceUpload_Parse_Failed_Invalid_Values_In_DataRows',\r\n};\r\n","/* eslint-disable no-unused-vars */\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { ProgressIndicator } from '@fluentui/react/lib/ProgressIndicator';\r\nimport { FilePayload } from '@bingads-webui/azure-upload';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { iframeDownload } from '@bingads-webui/download-service';\r\nimport { FilePicker } from '@bingads-webui/file-picker';\r\nimport { PerfMarkerFactory } from '@bingads-webui/performance-marker';\r\nimport UploadService from '@bingads-webui-component-legacy/azure-upload/index';\r\nimport { getBlobUploadUrl, postPreviewTask, postCommitTask, pollExecutionResult } from '@bingads-webui-campaign-legacy/scheduled-import/service/preference-upload-api';\r\n\r\nimport preferenceUploadTemplate from '../template/preference-upload.pug';\r\nimport { PREFERENCE_UPLOAD_STATUS } from './preference-upload-status';\r\nimport { PREFERENCE_UPLOAD_ERROR_MAP } from './preference-upload-error-maps';\r\n\r\nexport class PreferenceUploadView extends DeterministicView {\r\n initialize({\r\n i18n,\r\n publicPath,\r\n logTrace,\r\n perfMarker,\r\n }) {\r\n this.i18n = i18n;\r\n this.publicPath = publicPath;\r\n this.logTrace = logTrace;\r\n this.perfMarker = perfMarker;\r\n if (this.perfMarker) {\r\n this.renderPerfMarker = this.perfMarker.createChild('Import_Preference_Upload_First_Render');\r\n this.renderPerfMarker.willInit();\r\n }\r\n this.FilePicker = FilePicker;\r\n this.title = i18n.getString('Import_PreferenceUpload_Title');\r\n this.description = i18n.getString('Import_PreferenceUpload_Description');\r\n this.PREFERENCE_UPLOAD_STATUS = PREFERENCE_UPLOAD_STATUS;\r\n this.initFilePicker();\r\n\r\n this.defaultState = {\r\n status: PREFERENCE_UPLOAD_STATUS.NotStart,\r\n isApplyEnabled: false,\r\n hideFilePicker: false,\r\n isPreviewEnabled: false,\r\n uploading: false,\r\n showSummaryGrid: false,\r\n downloadPath: '',\r\n progressPercentage: 0,\r\n errorMessage: null,\r\n };\r\n this.setState(this.defaultState);\r\n this.progressTitle = {\r\n [PREFERENCE_UPLOAD_STATUS.Upload]: this.i18n.getString('Schedule_Import_Preference_Upload_Status_Upload'),\r\n [PREFERENCE_UPLOAD_STATUS.Apply]: this.i18n.getString('Schedule_Import_Preference_Upload_Status_Apply'),\r\n [PREFERENCE_UPLOAD_STATUS.Preview]: this.i18n.getString('Schedule_Import_Preference_Upload_Status_Preview'),\r\n };\r\n }\r\n\r\n clearError() {\r\n this.setState({ errorMessage: null });\r\n }\r\n\r\n initFilePicker() {\r\n this.filePicker = new this.FilePicker({\r\n theme: 'default',\r\n className: 'preference-upload-file-picker',\r\n allowedFileExtensions: ['.csv'],\r\n i18n: this.i18n,\r\n validator: () => {\r\n this.setState({ isPreviewEnabled: true });\r\n this.clearError();\r\n },\r\n displayFilePath: 'filename',\r\n }).render();\r\n this.filePicker.on('error.extension', () => {\r\n this.logTrace('error_in_file_upload', 'Not_Supported_File_Extension');\r\n\r\n this.setState({ isPreviewEnabled: false });\r\n });\r\n this.filePicker.on('cleared', () => {\r\n this.setState({ isPreviewEnabled: false });\r\n this.clearError();\r\n });\r\n }\r\n\r\n get template() {\r\n return preferenceUploadTemplate;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .cancel, .close-panel': () => {\r\n this.trigger('cancel');\r\n },\r\n 'click .upload-and-preview': () => this.uploadAndPreview(),\r\n 'click .apply-changes': () => this.apply(),\r\n 'click .helpLink.download-template': 'downloadTemplate',\r\n 'click .download-results': () => this.downloadResults(),\r\n };\r\n }\r\n\r\n // Download sample file\r\n downloadTemplate(event) {\r\n this.logTrace('click', 'Sample_File_Download_Button');\r\n\r\n event.stopPropagation();\r\n event.preventDefault();\r\n const templateUrl = `${this.publicPath}files/templates/Import/ImportPreferenceBulkUpdate_Sample.csv`;\r\n\r\n iframeDownload(templateUrl);\r\n }\r\n\r\n async uploadAndPreview() {\r\n this.logTrace('click', 'Upload_And_Preview_Button');\r\n\r\n if (this.perfMarker) {\r\n this.previewPerfMarker = this.perfMarker.createChild('Import_Preference_Upload_Preview_Fetch_Data');\r\n this.previewPerfMarker.willInit();\r\n this.previewPerfMarker.willFetchData();\r\n }\r\n\r\n // TODO: progress indicator improvement\r\n this.setState({ uploading: true, hideFilePicker: true, progressPercentage: 0, status: PREFERENCE_UPLOAD_STATUS.Upload });\r\n const file = this.filePicker.fileObject;\r\n const fileExtension = new FilePayload({\r\n file,\r\n }).getFileExtension();\r\n\r\n try {\r\n const { SasUrl, BlobName } = await getBlobUploadUrl({ fileExtension });\r\n\r\n const uploadService = new UploadService({\r\n blobSetting: {\r\n SasUrl,\r\n blobName: BlobName,\r\n },\r\n file,\r\n });\r\n\r\n // Uploading\r\n this.logTrace('preview', 'Uploading');\r\n\r\n await uploadService.start();\r\n this.setState({ progressPercentage: 0.2 });\r\n\r\n // Previewing\r\n this.logTrace('preview', 'Previewing');\r\n\r\n this.setState({ status: PREFERENCE_UPLOAD_STATUS.Preview });\r\n const previewTask = await postPreviewTask({ BlobName, fileName: file.name, SasUrl});\r\n\r\n this.setState({ progressPercentage: 0.4});\r\n\r\n // Get preview result\r\n this.logTrace('preview', 'Get_Preview_Task_Result');\r\n\r\n const taskId = previewTask.TaskItemExecutions[0].Id;\r\n let previewResult = await pollExecutionResult({ id: taskId });\r\n\r\n this.setState({ progressPercentage: 1 });\r\n this.onUploadFinish(previewResult, true);\r\n } catch (e) {\r\n this.logTrace('error_in_preview_stage', JSON.stringify(e));\r\n\r\n // TODO: confirm with MT about returned error structure\r\n const state = _.defaults({ errorMessage: this.getErrorMessage() }, this.defaultState);\r\n\r\n this.setState(state);\r\n }\r\n }\r\n\r\n async apply() {\r\n if (this.perfMarker) {\r\n this.applyPerfMarker = this.perfMarker.createChild('Import_Preference_Upload_Apply_Fetch_Data');\r\n this.applyPerfMarker.willInit();\r\n this.applyPerfMarker.willFetchData();\r\n }\r\n\r\n this.logTrace('click', 'Apply_Button');\r\n\r\n this.setState({ progressPercentage: 0, uploading: true });\r\n this.clearError();\r\n\r\n const { commitTaskSasUrl, BlobName, fileName, UploadDateTime } = this.getState();\r\n\r\n this.setState({ status: PREFERENCE_UPLOAD_STATUS.Apply });\r\n\r\n try {\r\n // Processing\r\n this.logTrace('apply', 'Processing');\r\n\r\n const commitTask = await postCommitTask({ BlobName, fileName, SasUrl: commitTaskSasUrl, UploadDateTime });\r\n\r\n this.setState({ progressPercentage: 0.4});\r\n\r\n // Get apply result\r\n this.logTrace('apply', 'Get_Apply_Task_Result');\r\n\r\n const taskId = commitTask.TaskItemExecutions[0].Id;\r\n let commitResult = await pollExecutionResult({ id: taskId });\r\n\r\n this.setState({ progressPercentage: 1 });\r\n this.onUploadFinish(commitResult, false);\r\n } catch (e) {\r\n this.logTrace('error_in_apply_stage', JSON.stringify(e));\r\n\r\n // TODO: confirm with MT about returned error structure\r\n const state = _.defaults({ errorMessage: this.getErrorMessage() }, this.defaultState);\r\n\r\n this.setState(state);\r\n }\r\n }\r\n\r\n\r\n onUploadFinish(res, isPreview) {\r\n if (this.previewPerfMarker) {\r\n this.previewPerfMarker.done();\r\n }\r\n\r\n if (this.applyPerfMarker) {\r\n this.applyPerfMarker.done();\r\n }\r\n\r\n const status = isPreview ? PREFERENCE_UPLOAD_STATUS.Previewed : PREFERENCE_UPLOAD_STATUS.Applied;\r\n const state = {\r\n successCount: res.SuccessCount,\r\n errorCount: res.ErrorCount,\r\n status,\r\n showSummaryGrid: true,\r\n downloadPath: res.OutputFileSasURL || '',\r\n uploading: false,\r\n };\r\n const logStage = isPreview ? 'preview' : 'apply';\r\n\r\n this.logTrace(`${logStage}`, `Success_Count:${state.successCount},Error_Count:${state.errorCount}`);\r\n\r\n if (res.Errors && res.Errors.length) {\r\n this.logTrace(`error_in_${logStage}_result`, `${res.Errors[0].Code}`);\r\n\r\n // TODO: confirm with MT about if it may return multiple error codes\r\n _.extend(state, {\r\n errorMessage: this.getErrorMessage(res.Errors[0].Code),\r\n });\r\n }\r\n\r\n if (isPreview) {\r\n _.extend(state, {\r\n isApplyEnabled: res.SuccessCount > 0,\r\n BlobName: res.FileIdentifier,\r\n fileName: res.InputFileName,\r\n commitTaskSasUrl: res.OutputFileSasURL,\r\n UploadDateTime: res.UploadDateTime,\r\n });\r\n }\r\n\r\n this.setState(state);\r\n }\r\n\r\n downloadResults() {\r\n this.logTrace('click', 'Download_Results_File_Button');\r\n\r\n const { downloadPath } = this.getState();\r\n\r\n iframeDownload(downloadPath);\r\n }\r\n\r\n getErrorMessage(err) {\r\n // don't show warning level error messages since it may be confused for customer\r\n if (err === 'ImportPreferenceBulkUpdateSmartImportWillChangeToExpertImport') {\r\n return null;\r\n }\r\n\r\n if (PREFERENCE_UPLOAD_ERROR_MAP[err] !== undefined) {\r\n return this.i18n.getString(PREFERENCE_UPLOAD_ERROR_MAP[err]);\r\n }\r\n\r\n // Default error\r\n return this.i18n.getString('Import_PreferenceUpload_Error_RequestFailed');\r\n }\r\n\r\n renderTrunk() {\r\n if (this.renderPerfMarker) {\r\n this.renderPerfMarker.willRender();\r\n }\r\n\r\n super.renderTrunk();\r\n\r\n this.$('.preference-upload-file-picker-placeholder').html(this.filePicker.$el);\r\n\r\n const { progressPercentage, status, uploading } = this.getState();\r\n\r\n if (uploading) {\r\n ReactDOM.render(\r\n , this.$('.progress-container').get(0));\r\n }\r\n\r\n if (this.renderPerfMarker) {\r\n this.renderPerfMarker.done();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n return super.remove();\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport timeZoneMapper from '@bingads-webui-component-legacy/timezonemapper/index';\r\nimport dateUtil from '@bingads-webui-component-legacy/humanize/date';\r\nimport adSchedulingOptions from '@bingads-webui-campaign-legacy/adextension-shared/viewmodel/adSchedulingOptions';\r\nimport freqColumnTmpl from '@bingads-webui-campaign-legacy/scheduled-import/template/freq-column.pug';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\n\r\nconst i18nGlobal = window.globalLegacyI18n.get('component/i18n/loader!legacy/global');\r\n\r\nlet dayMapper = function(dayOfTheWeek) {\r\n let arr = [\r\n i18nGlobal.getString('DayOfWeek_Sunday'),\r\n i18nGlobal.getString('DayOfWeek_Monday'),\r\n i18nGlobal.getString('DayOfWeek_Tuesday'),\r\n i18nGlobal.getString('DayOfWeek_Wednesday'),\r\n i18nGlobal.getString('DayOfWeek_Thursday'),\r\n i18nGlobal.getString('DayOfWeek_Friday'),\r\n i18nGlobal.getString('DayOfWeek_Saturday'),\r\n ];\r\n\r\n return arr[parseInt(dayOfTheWeek)];\r\n};\r\n\r\nlet hourMapper = function(hourString) {\r\n let hour = parseInt(hourString);\r\n let hourObj = _.find(adSchedulingOptions.fromHourOptions, (obj) => obj.val === hour);\r\n\r\n return hourObj && hourObj.twelveHourDisplay ? hourObj.twelveHourDisplay : null;\r\n};\r\n\r\nlet frequencyMapper = function(cron, i18n) {\r\n if (cron && cron.split && cron !== '') {\r\n let arr = cron.split(' ');\r\n\r\n if (arr.length === 6) {\r\n const numOfBlank = _.reduce(arr, (memo, char) => {\r\n return memo + (char === '*' ? 1 : 0);\r\n }, 0);\r\n\r\n if (numOfBlank === 1) {\r\n return i18n.getString('Scheduled_Import_OnceTemplate')\r\n .replace('{0}', i18n.getString('AutomatedRules_FrequencyGrain_Once'))\r\n .replace('{1}', dateUtil.format(new Date(`${arr[3]}/${arr[2]}/${arr[5]}`), 'MM/d/yyyy', config.get('culture')))\r\n .replace('{2}', hourMapper(arr[1]));\r\n }\r\n if (arr[2] !== '*') {\r\n return i18n.getString('AutomatedRules_Frequency_MonthlyTemplate')\r\n .replace('{0}', i18n.getString('AutomatedRules_FrequencyGrain_Monthly'))\r\n .replace('{1}', arr[2])\r\n .replace('{2}', hourMapper(arr[1]));\r\n }\r\n if (arr[4] !== '*') {\r\n return i18n.getString('AutomatedRules_Frequency_WeeklyTemplate')\r\n .replace('{0}', i18n.getString('AutomatedRules_FrequencyGrain_Weekly'))\r\n .replace('{1}', dayMapper(arr[4]))\r\n .replace('{2}', hourMapper(arr[1]));\r\n }\r\n return i18n.getString('AutomatedRules_Frequency_DailyTemplate')\r\n .replace('{0}', i18n.getString('AutomatedRules_FrequencyGrain_Daily'))\r\n .replace('{1}', hourMapper(arr[1]));\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport function importFreqColDataToTemplate({\r\n IsAutoFrequency: isAuto,\r\n TimeZoneId,\r\n Cron: frequency,\r\n}, i18n) {\r\n if (!_.isNumber(TimeZoneId)) {\r\n // eslint-disable-next-line no-param-reassign\r\n TimeZoneId = config.get('AccountTimeZone');\r\n }\r\n\r\n let result = _.find(timeZoneMapper.getTimeZoneOptions(), (obj) => obj.index === TimeZoneId.toString());\r\n\r\n return freqColumnTmpl({\r\n i18n,\r\n isAuto,\r\n Freq: frequencyMapper(frequency, i18n),\r\n TimeZone: result ? result.text : null,\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport timezonemapper from '@bingads-webui-component-legacy/timezonemapper/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport { queryify } from '@bingads-webui/url-util';\r\nimport { defaultBidForShoppingCampaign } from '@bingads-webui-campaign-legacy/budget/shared/defaultBid';\r\nimport * as i18nErrors from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\n\r\nexport function getProductData(shouldShowPlaceholderStoreIfExists = false) {\r\n let url = queryify('/Campaign/NewCampaign/GetProductScope', {\r\n aid: state.get('account_id'),\r\n cid: state.get('customer_id'),\r\n uid: state.get('user_id'),\r\n });\r\n\r\n if (shouldShowPlaceholderStoreIfExists) {\r\n url = `${url}&storeTypes=placeholder`;\r\n }\r\n\r\n const params = {\r\n url,\r\n adapter: 'legacy',\r\n // We shouldn't cache the response when showing placeholder stores.\r\n // If we do, there will be a bug when the user goes from campaign settings to creation.\r\n // The bug will be that the user sees draft stores in campaign creation since it reads from cache.\r\n bypassCache: shouldShowPlaceholderStoreIfExists,\r\n cacheResponse: !shouldShowPlaceholderStoreIfExists,\r\n };\r\n\r\n return jsdata.Product.find('MetaData', params).then((productData) => {\r\n // need to filter out all coop stores.\r\n return _.extend({}, productData, {\r\n ProductCollectionAccounts: productData.ProductCollectionAccounts.filter((item) => !item.IsCoOpStore && !item.IsGlobalStore),\r\n });\r\n });\r\n}\r\n\r\n\r\nconst defaultAdGroupName = 'Ad group #1';\r\n\r\nfunction getAdGroup({ campaignName, adgroupId, campaignId, startDate, endDate }) {\r\n const adgroup = {\r\n Campaign: {\r\n Id: campaignId,\r\n },\r\n Id: adgroupId,\r\n SearchBid: adgroupId == null ? 1 /* defaultBidForShoppingCampaign() */ : null, //FIXME: defaultBidForShoppingCampaign returns `undefined` for not mapped currencies and breaks SSC creation\r\n CampaignName: campaignName,\r\n Name: defaultAdGroupName,\r\n Status: 'Active',\r\n StartDate: startDate,\r\n EndDate: endDate,\r\n };\r\n\r\n return adgroup;\r\n}\r\n\r\nfunction getAd(campaignName) {\r\n const productAd = {\r\n CampaignName: campaignName,\r\n AdGroupName: defaultAdGroupName,\r\n PromotionalText: '',\r\n };\r\n\r\n return productAd;\r\n}\r\n\r\nfunction getProductPartition(campaignName) {\r\n return {\r\n // bid amount is a mandatory field in MT API, so here we need to set a default bid amount.\r\n // this value is useless for downstream as smart shopping campaign is auto bidding.\r\n BidAmount: 1, // defaultBidForShoppingCampaign(), //FIXME: defaultBidForShoppingCampaign returns `undefined` for not mapped currencies and breaks SSC creation\r\n ProductCondition: 'All',\r\n ProductValue: '',\r\n CampaignName: campaignName,\r\n AdGroupName: defaultAdGroupName,\r\n IsExcluded: false,\r\n IsLeaf: 'Unit',\r\n Status: 'Paused',\r\n };\r\n}\r\n\r\nfunction formatCriterions(campaignTargetingModel, campaignName) {\r\n let dayTimeCriterions = [];\r\n\r\n if (campaignTargetingModel.adScheduleModel) {\r\n dayTimeCriterions = campaignTargetingModel.adScheduleModel.dayTimeRanges;\r\n }\r\n let locationCriterions = [];\r\n let deletedLocationCriterions = [];\r\n\r\n if (campaignTargetingModel.locationTargets) {\r\n locationCriterions = campaignTargetingModel.locationTargets.locations;\r\n deletedLocationCriterions = campaignTargetingModel.locationTargets.deletedLocations;\r\n }\r\n let result = dayTimeCriterions;\r\n\r\n result = result.concat(locationCriterions).concat(deletedLocationCriterions).map((criterion) => {\r\n return _.extend({}, criterion, { CampaignName: campaignName });\r\n });\r\n return result.sort((__, b) => {\r\n if (b.Status === 'Delete') {\r\n return 1;\r\n }\r\n return -1;\r\n });\r\n}\r\n\r\nexport function bulkUpsertSmartShoppingCampaign({\r\n model,\r\n campaignId = null,\r\n adgroupId = null,\r\n}) {\r\n const timeZone = timezonemapper.getAccountTimeZone();\r\n const { adScheduleUseSearcherTimeZone } = model.campaignTargeting.adScheduleModel;\r\n const campaignName = model.campaignSetting.Name;\r\n const criterions = formatCriterions(model.campaignTargeting, campaignName);\r\n const startDate = model.campaignTargeting && model.campaignTargeting.adScheduleModel ?\r\n model.campaignTargeting.adScheduleModel.startDate : null;\r\n const endDate = model.campaignTargeting && model.campaignTargeting.adScheduleModel ?\r\n model.campaignTargeting.adScheduleModel.endDate : null;\r\n\r\n let shoppingSettingModel = { ...model.shoppingSetting };\r\n\r\n // Pick fields for feed label\r\n if (shoppingSettingModel.FeedLabel && shoppingSettingModel.FeedLabel.length > 0) {\r\n shoppingSettingModel = _.omit(shoppingSettingModel, 'SalesCountry');\r\n } else if (shoppingSettingModel.SalesCountry) {\r\n shoppingSettingModel = _.omit(shoppingSettingModel, 'FeedLabel');\r\n } else {\r\n shoppingSettingModel = _.omit(shoppingSettingModel, ['FeedLabel', 'SalesCountry']);\r\n }\r\n\r\n let smartShoppingModel = _.extend({}, model.campaignSetting, shoppingSettingModel, {\r\n AdScheduleUseSearcherTimeZone: adScheduleUseSearcherTimeZone,\r\n CampaignCriterions: criterions,\r\n TimeZone: timeZone,\r\n CampaignType: 'Shopping',\r\n CampaignSubType: 'ShoppingSmartAds',\r\n Priority: 'Highest',\r\n Languages: ['All'],\r\n });\r\n\r\n smartShoppingModel = _.omit(smartShoppingModel, ['BudgetId']);\r\n const adgroupToCreate = getAdGroup({ campaignName, adgroupId, campaignId, startDate, endDate });\r\n\r\n smartShoppingModel = _.extend({}, smartShoppingModel, {\r\n AdGroups: [adgroupToCreate],\r\n ProductAds: [getAd(campaignName)],\r\n ProductPartitions: [getProductPartition(campaignName)],\r\n Id: campaignId,\r\n });\r\n // if adgroup is created, no need to update default product ad and product group.\r\n if (adgroupId != null) {\r\n smartShoppingModel = _.omit(smartShoppingModel, ['ProductAds', 'ProductPartitions']);\r\n }\r\n\r\n return jsdata.ShoppingCampaign.create(smartShoppingModel, {\r\n adapter: 'bulk',\r\n cacheResponse: false,\r\n }).then((data) => {\r\n const result = {\r\n campaignId: data.Id,\r\n adgroupId: data.AdGroups && data.AdGroups.length ? data.AdGroups[0].Id : '',\r\n createdCampaign: data,\r\n campaignName: data.Name,\r\n };\r\n\r\n return result;\r\n }).catch((response) => {\r\n i18nErrors.getPartial(response, ['AdGroups', 'CampaignProductScope', 'CampaignCriterions'], 'newcampaign');\r\n throw response;\r\n });\r\n}\r\n\r\nexport function bulkUpdateSmartShoppingCampaign({ campaignId, model }) {\r\n const { adScheduleUseSearcherTimeZone } = model.adScheduleModel || {};\r\n let formatModel = _.omit(_.extend({}, model, {\r\n CampaignType: 'Shopping',\r\n CampaignSubType: 'ShoppingSmartAds',\r\n Priority: 'Highest',\r\n Languages: ['All'],\r\n Id: campaignId,\r\n AdScheduleUseSearcherTimeZone: adScheduleUseSearcherTimeZone,\r\n }), ['locationTargets', 'adScheduleModel']);\r\n // must use the campaign name after modified. or the bulk upsert API will return criterion error.\r\n const criterions = formatCriterions(model, formatModel.Name);\r\n\r\n formatModel.CampaignCriterions = criterions;\r\n\r\n // Pick fields for feed label\r\n if (formatModel.FeedLabel && formatModel.FeedLabel.length > 0) {\r\n formatModel.SalesCountry = 'delete_value';\r\n } else if (formatModel.SalesCountry) {\r\n formatModel.FeedLabel = 'delete_value';\r\n } else {\r\n formatModel.SalesCountry = 'delete_value';\r\n formatModel.FeedLabel = 'delete_value';\r\n }\r\n\r\n return jsdata.ShoppingCampaign.create(formatModel, {\r\n adapter: 'bulk',\r\n cacheResponse: false,\r\n }).catch((response) => {\r\n i18nErrors.getPartial(response, ['AdGroups', 'CampaignProductScope', 'CampaignCriterions'], 'newcampaign');\r\n throw response;\r\n });\r\n}\r\n\r\nexport function getCampaign(campaignId) {\r\n const params = {\r\n queryParameters: {\r\n entitySet: edmCampaign.currentAccount.Campaigns,\r\n expand: ['Budget', 'CampaignConversionGoal/Goals'],\r\n },\r\n bypassCache: true,\r\n };\r\n\r\n return jsdata.Campaign.find(campaignId, params);\r\n}\r\n\r\nexport function createAdGroupWithDefaulSettings(campaign) {\r\n return jsdata.AdGroup\r\n .create({\r\n Name: defaultAdGroupName,\r\n Campaign: {\r\n Id: campaign.Id,\r\n },\r\n SearchBid: defaultBidForShoppingCampaign(),\r\n Status: 'Active',\r\n ProductAds: [\r\n {\r\n CampaignName: campaign.Name ? campaign.Name : campaign.name,\r\n AdGroupName: defaultAdGroupName,\r\n PromotionalText: '',\r\n },\r\n ],\r\n }, { adapter: 'bulk', cacheResponse: false });\r\n}\r\n","import Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport template from '@bingads-webui-campaign-legacy/shopping-campaign/template/campaign-creation/smart-shopping-campaign-creation.pug';\r\nimport CampaignSettingsView from '@bingads-webui-campaign-legacy/crud-campaign/view/create';\r\nimport ShoppingSettingsView from '@bingads-webui-campaign-legacy/shopping-campaign/view/campaign-creation/shopping-settings';\r\nimport CampaignTargetingView from '@bingads-webui-campaign-legacy/campaign-targeting/view/campaign-targeting';\r\nimport summaryDataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport * as scrollUtil from '@bingads-webui-component-legacy/extension/scrollTo';\r\n// eslint-disable-next-line\r\nimport _bingads_webui_component_legacy_legacy_router_index from '@bingads-webui-component-legacy/legacy-router/index';\r\n// eslint-disable-next-line\r\nconst router = _bingads_webui_component_legacy_legacy_router_index.legacyRouter;\r\nimport ModalManager from '@bingads-webui-component-legacy/dialog/modalManager';\r\nimport * as i18nError from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport * as gmcToMMCGridDeps from '@bingads-webui-campaign-react/gmc-to-mmc-mapping-grid-shared';\r\n\r\nconst isBSCSmartImportEnabled = pageContext && pageContext.Permissions && pageContext.Permissions.IsBSCSmartImportEnabled;\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/shopping-campaign');\r\n\r\nconst modalManager = new ModalManager(i18n.get('Browser_Reload_AlertMessage'));\r\n\r\nexport default class View extends Backbone.View {\r\n initialize({\r\n deps,\r\n }) {\r\n this.deps = deps;\r\n this.template = template;\r\n this.campaignSettingsView = null;\r\n this.shoppingSettingsView = null;\r\n this.campaignTargetingView = null;\r\n this.cachedModel = {\r\n campaignSettings: {},\r\n shoppingSettings: {},\r\n campaignTargeting: {\r\n locationTargets: {},\r\n adScheduleModel: {},\r\n },\r\n };\r\n this.navigateToRoute = router.navigateToRoute;\r\n this.campaignId = null;\r\n this.adgroupId = null;\r\n this.campaignName = null;\r\n\r\n this.initModalManager();\r\n }\r\n\r\n initModalManager() {\r\n modalManager.on();\r\n\r\n window.App && window.App.router_new.on('route', () => { // eslint-disable-line\r\n if (modalManager.active) {\r\n modalManager.off();\r\n }\r\n });\r\n }\r\n\r\n renderSubViews(productData, editMode, campaignInfo) {\r\n this.campaignSettingsPlaceholder = this.$el.find('.campaign-settings');\r\n this.shoppingSettingsPlaceholder = this.$el.find('.shopping-settings');\r\n this.campaignTargetingPlaceholder = this.$el.find('.campaign-targeting');\r\n\r\n // init campaign settings\r\n this.campaignSettingsView = this.renderCampaignSettingsView();\r\n this.campaignSettingsPlaceholder.empty().append(this.campaignSettingsView.$el);\r\n // init shopping settings\r\n this.shoppingSettingsView = this.renderShoppingSettingsView(productData, editMode);\r\n this.shoppingSettingsPlaceholder.empty().append(this.shoppingSettingsView.$el);\r\n // init campaign targeting\r\n this.campaignTargetingView = this.renderCampaignTargetingView(editMode, campaignInfo);\r\n this.campaignTargetingPlaceholder.empty().append(this.campaignTargetingView.$el);\r\n }\r\n\r\n renderCampaignSettingsView() {\r\n return new CampaignSettingsView(_.extend({\r\n scenario: 'smart-shopping-campaign-creation-workflow',\r\n showLanguage: false,\r\n campaignType: 'shopping',\r\n campaignSubType: 'ShoppingSmartAds',\r\n Id: this.campaignId,\r\n isNotAudienceCampaign: true,\r\n }, this.cachedModel.campaignSettings)).render();\r\n }\r\n\r\n renderShoppingSettingsView(productData, editMode = false) {\r\n return new ShoppingSettingsView({\r\n data: productData,\r\n campaignType: 'Shopping',\r\n campaignSubType: 'ShoppingSmartAds',\r\n model: this.cachedModel.shoppingSettings,\r\n editMode,\r\n // For BSC Import, we will show some information if the smart shopping campaign has a placeholder store associated to it\r\n shouldShowPlaceholderStoreIfExists: isBSCSmartImportEnabled && editMode,\r\n deps: {\r\n gmcToMMCGridDeps,\r\n i18nNewDesign: this.deps.i18nNewDesign,\r\n },\r\n }).render();\r\n }\r\n\r\n renderCampaignTargetingView(editMode, campaignInfo = {}) {\r\n const { AdScheduleUseSearcherTimeZone: adScheduleUseSearcherTimeZone } = campaignInfo;\r\n\r\n this.cachedModel.campaignTargeting.adScheduleModel.adScheduleUseSearcherTimeZone = adScheduleUseSearcherTimeZone;\r\n return new CampaignTargetingView({\r\n deps: {\r\n eventDelegator: this.deps.eventDelegator,\r\n },\r\n model: this.cachedModel.campaignTargeting,\r\n campaignId: this.campaignId,\r\n adgroupId: this.adgroupId,\r\n showDateSettings: !editMode,\r\n }).render();\r\n }\r\n\r\n navigateToCampaignSummaryPage(isEditMode) {\r\n modalManager.off();\r\n const { campaignId, campaignName } = this;\r\n\r\n if (campaignId) {\r\n if (isEditMode) {\r\n // eslint-disable-next-line camelcase\r\n this.navigateToRoute('campaign_adgroup', { campaign_id: campaignId });\r\n } else {\r\n this.navigateToRoute('campaign');\r\n }\r\n\r\n summaryDataContextManager.getContext('/campaign/NewCampaign/Create?');\r\n if (this.deps.eventDelegator) {\r\n this.deps.eventDelegator.trigger(\r\n isEditMode ? 'campaignUpdated' : 'campaignCreated', {\r\n data: [{\r\n Id: Number(campaignId),\r\n Name: campaignName,\r\n AccountId: pageContext.CurrentAccount.Id,\r\n CampaignType: 2,\r\n CampaignSubType: 12,\r\n }]});\r\n }\r\n } else {\r\n this.navigateToRoute('campaign');\r\n }\r\n }\r\n\r\n refreshCampaignTargetingView() {\r\n this.campaignTargetingView.remove();\r\n this.campaignTargetingView = this.renderCampaignTargetingView();\r\n this.campaignTargetingPlaceholder.empty().append(this.campaignTargetingView.el);\r\n }\r\n\r\n handleApiErrors(response) {\r\n if (!response || response === 'exclusion error') {\r\n return null;\r\n }\r\n\r\n const errors = _.chain(response.errors).map((error) => error.Error).uniq().value();\r\n\r\n if (response.entity && response.entity.Id) {\r\n //the campaign is saved to server\r\n this.campaignId = response.entity.Id;\r\n this.campaignSettingsView.ko_model.Id(response.entity.Id); // eslint-disable-line\r\n }\r\n\r\n let campaignErrors = _.reject(response.entity.errors, (error) => {\r\n return _.contains(['TrackingUrlTemplate', 'UrlCustomParameters'], error.property);\r\n });\r\n\r\n if (campaignErrors.length) {\r\n this.campaignSettingsView.handleApiErrors(campaignErrors);\r\n } else {\r\n const bulkApiErrors = i18nError.getBulkApiErrors(response.errors);\r\n const errMsg = bulkApiErrors && bulkApiErrors[0] && bulkApiErrors[0].message ?\r\n bulkApiErrors[0].message : document.querySelector('#internalErrorMsg').value;\r\n\r\n window.App.views.alertCenter.showError(errMsg);\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n getValue() {\r\n const campaignSetting = this.campaignSettingsView.getData();\r\n const shoppingSetting = this.shoppingSettingsView.viewModel.toObject();\r\n const campaignTargeting = this.campaignTargetingView.getValue();\r\n\r\n if (campaignSetting && shoppingSetting && campaignTargeting) {\r\n const model = {\r\n campaignSetting,\r\n shoppingSetting,\r\n campaignTargeting,\r\n };\r\n\r\n return model;\r\n }\r\n return false;\r\n }\r\n\r\n scrollToErrors() {\r\n let errors = this.$('.error, .is-error')\r\n .filter(':visible');\r\n\r\n errors = errors.filter((index) => {\r\n const err = errors.eq(index);\r\n\r\n return err.text() !== '';\r\n });\r\n\r\n scrollUtil.scrollAndCenter(errors);\r\n }\r\n\r\n remove() {\r\n if (this.campaignSettingsView) {\r\n this.campaignSettingsView.remove();\r\n }\r\n if (this.campaignTargetingView) {\r\n this.campaignTargetingView.remove();\r\n }\r\n if (this.shoppingSettingsView) {\r\n this.shoppingSettingsView.remove();\r\n }\r\n super.remove();\r\n }\r\n}\r\n","import instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\n\r\nexport class SSCInstrumentation {\r\n constructor() {\r\n const scenario = instrumentation.oldUISmartShoppingCampaignCreationScenario.create();\r\n\r\n this.activity = scenario.SSCCreationActivity.create();\r\n }\r\n\r\n signal(message) {\r\n try {\r\n const str = JSON.stringify(message);\r\n\r\n this.activity.signal(str);\r\n } catch (e) {\r\n console.log(e.stack); // eslint-disable-line\r\n }\r\n }\r\n\r\n sendEnterPageLog() {\r\n this.signal({\r\n messageType: 'ENTER_PAGE',\r\n });\r\n }\r\n\r\n sendCreateCampaignSucceededLog(campaignId) {\r\n this.signal({\r\n messageType: 'CAMPAIGN_CREATED',\r\n campaignId,\r\n });\r\n }\r\n\r\n sendCreateCampaignErrorLog(errors) {\r\n this.signal({\r\n messageType: 'CAMPAIGN_CREATION_FAILED',\r\n });\r\n errors.forEach((err) => {\r\n this.signal({\r\n messageType: 'CAMPAIGN_CREATION_ERROR',\r\n error: err,\r\n });\r\n });\r\n }\r\n\r\n sendValidationErrorLog(validationError) {\r\n this.signal({\r\n messageType: 'CAMPAIGN_CREATION_VALIDATION_FAILED',\r\n });\r\n Object.keys(validationError).forEach((property) => {\r\n const errorList = validationError[property];\r\n\r\n if (errorList && errorList.length) {\r\n errorList.forEach((err) => {\r\n if (err) {\r\n this.signal({\r\n messageType: 'CAMPAIGN_CREATION_VALIDATION_ERROR',\r\n property,\r\n error: err,\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n sendCancelCreationLog() {\r\n this.signal({\r\n messageType: 'CANCEL',\r\n });\r\n }\r\n\r\n sendPageError(stack) {\r\n this.signal({\r\n messageType: 'PAGE_ERROR',\r\n stack,\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport template from '@bingads-webui-campaign-legacy/shopping-campaign/template/campaign-creation/smart-shopping-campaign-creation.pug';\r\nimport { getProductData, bulkUpdateSmartShoppingCampaign, getCampaign } from '@bingads-webui-campaign-legacy/shopping-campaign/service/campaign-creation/service'; // eslint-disable-line\r\nimport timezonemapper from '@bingads-webui-component-legacy/timezonemapper/index';\r\nimport AdvancedSettingsView from '@bingads-webui-campaign-legacy/advanced-settings/view/advancedSettings';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport { loadMap } from '@bingads-webui-campaign-legacy/dashboard-page/service/load-map';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport Promise from 'bluebird';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { GoalSelectorView } from '@bingads-webui-campaign-react/goal-selector/src/view';\r\nimport SmartShoppingBase from './smart-shopping-base';\r\nimport { SSCInstrumentation } from './ssc-instrumentation';\r\n\r\nconst isBSCSmartImportEnabled = pageContext && pageContext.Permissions && pageContext.Permissions.IsBSCSmartImportEnabled;\r\nconst i18n = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/shopping-campaign');\r\n\r\n\r\nexport default class View extends SmartShoppingBase {\r\n initialize(options) {\r\n super.initialize(options);\r\n this.campaignId = options.campaignId;\r\n this.sscInstrumentation = new SSCInstrumentation();\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .btn-save': 'save',\r\n 'click .btn-cancel': 'cancel',\r\n };\r\n }\r\n\r\n render() {\r\n const unblock = withUiBlock(this.$el);\r\n\r\n // For BSC Import, we will show some information in campaign settings\r\n // if the smart shopping campaign has a placeholder store associated to it.\r\n const shouldShowPlaceholderStoreIfExists = isBSCSmartImportEnabled;\r\n\r\n Promise.all([\r\n getCampaign(this.campaignId),\r\n getProductData(shouldShowPlaceholderStoreIfExists),\r\n loadMap(),\r\n ]).then(([campaignInfo, productData]) => {\r\n unblock();\r\n this.cachedModel = _.extend(this.cachedModel, {\r\n campaignSettings: _.pick(campaignInfo, ['Name', 'BiddingScheme', 'Budget', 'CampaignCashback']),\r\n shoppingSettings: _.extend({}, _.result(campaignInfo, 'CampaignSettings', [{}])[0], {\r\n CampaignSubType: 'ShoppingSmartAds',\r\n }),\r\n });\r\n this.campaign = campaignInfo;\r\n this.campaignName = campaignInfo.Name;\r\n this.$el.html(template({ i18n, isStoreNotValid: false })).addClass('smart-shopping-settings');\r\n this.renderSubViews(productData, true, campaignInfo);\r\n this.advancedSettingsViewPlaceholder = this.$el.find('.advanced-settings');\r\n this.advancedSettingsView = this.renderAdvancedSettingsView(campaignInfo);\r\n this.advancedSettingsViewPlaceholder.empty().append(this.advancedSettingsView.$el);\r\n this.renderGoalSelector(campaignInfo);\r\n }).catch((e) => {\r\n this.sscInstrumentation.sendPageError(e.stack);\r\n const errMsg = document.querySelector('#internalErrorMsg').value;\r\n\r\n window.App.views.alertCenter.showError(errMsg);\r\n throw e;\r\n });\r\n return this;\r\n }\r\n\r\n renderAdvancedSettingsView(campaignInfo) {\r\n return new AdvancedSettingsView({\r\n campaignId: this.campaignId,\r\n level: 'campaign',\r\n scenario: 'smart-shopping-campaign',\r\n TimeZone: timezonemapper.getAccountTimeZone(),\r\n model: campaignInfo,\r\n nativeAdsCampaignBid: _.result(this.campaign, 'NativeBidAdjustment') || 0,\r\n campaignType: 'shopping',\r\n collapseAdvancedSettings: this.isSponsoredCampaign,\r\n }).render();\r\n }\r\n\r\n validate() {\r\n const isFeedFilterValid = this.shoppingSettingsView.isFeedLabelEnabled ? this.shoppingSettingsView.validateFeedFilter() : true;\r\n\r\n return super.getValue() && this.advancedSettingsView.validate() && isFeedFilterValid;\r\n }\r\n\r\n renderGoalSelector(campaign) {\r\n const cashbackSettings = _.result(campaign, 'CampaignCashback');\r\n const hasCashbackSettings = cashbackSettings &&\r\n (cashbackSettings.PersonalizedOffersEnabled === true ||\r\n cashbackSettings.MonthlyBudget > 0);\r\n const isSPA = campaign.CampaignSubType === 'ShoppingSponsoredProductAd';\r\n\r\n const enableGoalSelector = !isSPA && !hasCashbackSettings;\r\n\r\n if (enableGoalSelector) {\r\n this.goalSelectionView = new GoalSelectorView({\r\n i18n: i18n.realI18n,\r\n pageSize: 10,\r\n isMultiMode: true,\r\n isHideSaveBar: true,\r\n campaign,\r\n jsdata,\r\n state,\r\n });\r\n this.$('.conversion-goal-selection').empty().html(this.goalSelectionView.render().el);\r\n } else {\r\n this.$('.conversion-goal-section').empty();\r\n }\r\n }\r\n getValue() {\r\n if (this.validate()) {\r\n const value = super.getValue();\r\n let model = _.extend({}, value.campaignSetting, value.shoppingSetting, value.campaignTargeting);\r\n const advancedSettings = this.advancedSettingsView.getValues();\r\n\r\n model = _.extend(model, advancedSettings.urlOptions);\r\n if (this.goalSelectionView) {\r\n model.CampaignConversionGoalAssociations =\r\n this.goalSelectionView.convertToMTFormat(this.campaignId);\r\n }\r\n return model;\r\n }\r\n return false;\r\n }\r\n\r\n handleApiErrors(response) {\r\n super.handleApiErrors(response);\r\n if (response.entity && response.entity.Id) {\r\n this.advancedSettingsView.setData(response);\r\n this.advancedSettingsView.handleErrors(response);\r\n }\r\n }\r\n\r\n save() {\r\n const model = this.getValue();\r\n\r\n if (model) {\r\n const unblock = withUiBlock();\r\n\r\n bulkUpdateSmartShoppingCampaign({\r\n campaignId: this.campaignId,\r\n model,\r\n })\r\n .then((data) => {\r\n unblock();\r\n this.campaignName = data.Name;\r\n this.advancedSettingsView.setData(data);\r\n this.navigateToCampaignSummaryPage(true);\r\n })\r\n .catch((response) => {\r\n unblock();\r\n this.handleApiErrors(response);\r\n this.scrollToErrors();\r\n });\r\n } else {\r\n this.scrollToErrors();\r\n }\r\n }\r\n\r\n cancel() {\r\n this.navigateToCampaignSummaryPage(true);\r\n }\r\n\r\n remove() {\r\n super.remove();\r\n if (this.advancedSettingsView) {\r\n this.advancedSettingsView.remove();\r\n }\r\n }\r\n}\r\n","import BaseViewModel from '../common/base';\r\n\r\nclass ViewModel extends BaseViewModel {\r\n constructor() {\r\n super();\r\n\r\n this.configSchema(this);\r\n }\r\n}\r\n\r\nexport default ViewModel;\r\n","/*eslint new-cap:0 */\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport template from '@bingads-webui-campaign-legacy/shopping-campaign/template/campaign-creation/update.pug';\r\nimport CreateView from '@bingads-webui-campaign-legacy/shopping-campaign/view/campaign-creation/index';\r\nimport ViewModel from '@bingads-webui-campaign-legacy/shopping-campaign/viewmodel/campaign-creation/update';\r\nimport { getODataErrors } from '@bingads-webui-component-legacy/api-errors-campaign/index';\r\nimport jsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport withUiBlock from '@bingads-webui-component-legacy/uiblocker/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport Promise from 'bluebird';\r\nimport { getFeedData as GetFeedData } from '@bingads-webui-campaign/audience-campaign-creation-wizard';\r\nimport { isMSStoreAdsCampaign } from '@bingads-webui-campaign-react/ms-store-ads-common';\r\n\r\nconst permissions = config.get('Permissions') || {};\r\nconst isEnabledDynamicFeedCampaign = permissions.IsEnabledForDynamicFeedCampaign;\r\n\r\nexport default class View extends Backbone.View {\r\n initialize({\r\n deps,\r\n perfMarker,\r\n ccJsData,\r\n }) {\r\n if (perfMarker) {\r\n this.campaignScopeAllSettingsPerfMarker = perfMarker.createChild('CampaignScope_AllSettings_EditShoppingCampaign');\r\n }\r\n\r\n this.mark('willInit');\r\n this.campaignId = Number(state.get('campaign_id'));\r\n this.deps = deps;\r\n this.ccJsData = ccJsData;\r\n this.viewModel = new ViewModel();\r\n }\r\n\r\n render() {\r\n this.$el.html(template());\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this.hideUIBlocker = withUiBlock();\r\n this.mark('willFetchData');\r\n Promise.all(isEnabledDynamicFeedCampaign ? [this.getCampaign(), this.getFeedData()] : [this.getCampaign()])\r\n .then(([campaign, feed = null]) => {\r\n this.mark('willRender');\r\n const isMSStoreAdsGAWorkflow = isMSStoreAdsCampaign(campaign);\r\n\r\n this.shoppingCampaignView = new CreateView({ campaign, deps: this.deps, feed, isSettingsPage: true, isMSStoreAdsGAWorkflow, ccJsData: this.ccJsData });\r\n this.$('.update-container').html(this.shoppingCampaignView.render().el);\r\n })\r\n .finally(() => {\r\n this.hideUIBlocker();\r\n this.mark('done');\r\n })\r\n .catch(({ errors }) => {\r\n this.viewModel.errors.add(getODataErrors(errors));\r\n });\r\n\r\n return this;\r\n }\r\n\r\n getCampaign() {\r\n const params = {\r\n queryParameters: {\r\n entitySet: edmCampaign.currentAccount.Campaigns,\r\n expand: ['Budget', 'CampaignConversionGoal/Goals'],\r\n },\r\n bypassCache: true,\r\n };\r\n\r\n return jsData.Campaign.find(this.campaignId, params);\r\n }\r\n\r\n getFeedData({ $top = 10000, $skip = 0 } = {}) {\r\n return GetFeedData({ $top, $skip, permissions });\r\n }\r\n\r\n remove() {\r\n if (this.shoppingCampaignView) {\r\n this.shoppingCampaignView.remove();\r\n }\r\n super.remove();\r\n }\r\n\r\n mark(perfMarkerEvent) {\r\n if (this.campaignScopeAllSettingsPerfMarker) {\r\n this.campaignScopeAllSettingsPerfMarker[perfMarkerEvent]();\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport BaseModel from '@bingads-webui-campaign-legacy/bulk-operation/util/bulk-edit-job';\r\n\r\nexport default class ChangeBidAdjustmentModel extends BaseModel {\r\n initialize() {\r\n this.defaults = _.extend({}, BaseModel.prototype.defaults, {\r\n Entity: 'CampaignCriterion',\r\n BatchAction: {\r\n Actions: [{\r\n '@odata.type': '#Model.NumericAction',\r\n Property: 'BidAdjustment',\r\n ActionType: 'SetToAmount',\r\n Value: '',\r\n }],\r\n },\r\n });\r\n }\r\n}\r\n","import ko from 'knockout';\r\nimport BaseViewModel from '@bingads-webui-static-legacy/bulk-edit/viewmodel/bulkEditJob';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/targeting-settings');\r\n\r\nexport default class ViewModel {\r\n constructor(options) {\r\n BaseViewModel.call(this);\r\n this.settingView = options.settingView;\r\n this.showButtonBar = ko.observable(true);\r\n this.showCloseButton = ko.observable(false);\r\n this.selectedEntityCount(options.model.get('selectedEntityCount'));\r\n this.entity = options.entity;\r\n this.gridType = options.gridType;\r\n this.crossPageSelectAll = options.crossPageSelectAll;\r\n this.titleText = ko.computed(() =>\r\n i18n.getString(`BulkEdit_${this.gridType}_ChangeBidTitle`, {selectCount: this.selectedEntityCount()}), this);\r\n this.entityNameHeader = ko.computed(() =>\r\n i18n.getString(`BulkEdit_${this.gridType}_EntityNameHeader`), this);\r\n this.bulkEditInfo = ko.computed(() =>\r\n i18n.getString(`BulkEdit_${this.gridType}_BulkEditInfo`), this);\r\n this.showAdgroupSelectedAllMixInheritWarning = ko.computed(() => {\r\n if (this.entity === 'AdGroupCriterion' && this.crossPageSelectAll.isAllSelected) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n this.validate = () => {\r\n return this.settingView.validate();\r\n };\r\n }\r\n}\r\n","import { getLocationDisplayName, getDayTimeDisplayName, getDeviceDisplayName } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/targeting-settings');\r\n\r\nexport function getDisplayName(entity) {\r\n if (entity.DeviceName) {\r\n return getDeviceDisplayName(i18n, { Criterion: entity });\r\n } else if (entity.Day) {\r\n return getDayTimeDisplayName(i18n, { Criterion: entity });\r\n } else {\r\n return getLocationDisplayName({ Criterion: entity });\r\n }\r\n}\r\n\r\nexport function getSelectedEntityIdStrings(gridView) {\r\n return _.map(gridView.selectedItems(), (obj) => {\r\n if (obj.LevelOfDetails === 'AdGroup') {\r\n const campaignId = obj.Campaign ? obj.Campaign.Id : $.advertiser.getUrlParameter('cmpid');\r\n\r\n return `CampaignId=${campaignId},AdGroupId=${obj.AdGroup.Id},TargetGroupDetailId=${obj.Id}`;\r\n } else {\r\n return `CampaignId=${obj.Campaign.Id},TargetGroupDetailId=${obj.Id}`;\r\n }\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport decimalNumber from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport BaseView from '@bingads-webui-static-legacy/bulk-edit/view/bulkEditJob';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport { BidAdjustmentView } from '@bingads-webui-campaign/bid-adjustment';\r\nimport template from '@bingads-webui-static-legacy/bulk-edit/template/settings/changeBid.pug';\r\nimport ChangeBidAdjustmentViewModel from './change-bid-adjustment-viewmodel';\r\nimport filterConverter from '@bingads-webui-static-legacy/odata-filter-converter';\r\nimport { getSelectedEntityIdStrings } from '../helpers';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/targeting-settings');\r\n\r\nfunction formatBid(rows, formatEntityString) {\r\n if (rows) {\r\n _.each(rows, (value) => {\r\n value.data = [];\r\n value.EntityKeyObject = {};\r\n\r\n _.each(value.EntityKey, (obj) => {\r\n value.EntityKeyObject[obj.Key] = obj.Value;\r\n });\r\n\r\n let name = '';\r\n\r\n if (_.isFunction(formatEntityString)) {\r\n name = formatEntityString(value.EntityKeyObject);\r\n }\r\n value.data.push({value: name, isHtml: false});\r\n\r\n if (value.Changes && value.Changes.length) {\r\n value.data.push({value: decimalNumber.fromFloatToPercentString(value.Changes[0].OriginalValue, 0), isHtml: false});\r\n value.data.push({value: decimalNumber.fromFloatToPercentString(value.Changes[0].NewValue, 0), isHtml: false});\r\n } else {\r\n value.data.push({value: '', isHtml: false});\r\n value.data.push({value: '', isHtml: false});\r\n }\r\n });\r\n }\r\n return rows;\r\n}\r\n\r\nexport default class ChangeBidAdjustmentView extends BaseView {\r\n initialize(options) {\r\n this.options = options || {};\r\n this.entity = options.entity;\r\n super.initialize(options);\r\n this.gridType = options.gridType;\r\n this.customValidators = options.customValidators;\r\n this.formatEntityString = options.formatEntityString;\r\n this.checkInheritTargets = options.checkInheritTargets;\r\n this.template = template;\r\n this.settingView = new BidAdjustmentView({\r\n value: 0,\r\n i18n,\r\n showButtons: false,\r\n customValidators: this.customValidators,\r\n });\r\n // eslint-disable-next-line camelcase\r\n this.ko_model = new ChangeBidAdjustmentViewModel({\r\n entity: this.entity,\r\n model: this.model,\r\n settingView: this.settingView,\r\n gridType: this.gridType,\r\n crossPageSelectAll: this.grid.pgridPlugins.crossPageSelectAll,\r\n });\r\n }\r\n\r\n render(options) {\r\n super.render(options);\r\n this.$('#bid-adjustment-bulk-edit').empty().html(this.settingView.render().el);\r\n return this;\r\n }\r\n\r\n setAction(simulateResults) {\r\n // not use PreviewEntityIds but use PreviewCompositeIds for this feature.\r\n this.model.unset('PreviewEntityIds');\r\n this.model.unset('PreviewCompositeIds');\r\n if (simulateResults) {\r\n if (this.grid.pgridPlugins.crossPageSelectAll.isAllSelected) {\r\n this.model.set('PreviewCompositeIds', getSelectedEntityIdStrings(this.grid.gridView));\r\n }\r\n }\r\n\r\n const action = {\r\n Actions: [{\r\n '@odata.type': '#Model.NumericAction',\r\n Property: 'BidAdjustment',\r\n ActionType: 'SetToAmount',\r\n Value: this.settingView && this.settingView.currentModel ?\r\n this.settingView.currentModel.BidMultiplier : '',\r\n }],\r\n };\r\n\r\n const selectedItems = this.grid.gridView.selectedItems();\r\n\r\n // bid bulk edit log\r\n // TODO: will improve later\r\n logger.logMessage(\r\n 'ClientTrace',\r\n { name: 'Info', value: 0 },\r\n 'AdScheduleGridView.bidBulkEdit',\r\n `changeBidValue:${action.Actions[0].Value},selectedItems:${JSON.stringify(selectedItems)}}`,\r\n );\r\n\r\n this.model.set('BatchAction', action);\r\n this.model.set('Entity', this.entity);\r\n }\r\n\r\n formatErrors(errors) {\r\n return formatBid(errors, this.formatEntityString);\r\n }\r\n\r\n formatPreviewResults(results) {\r\n return formatBid(results, this.formatEntityString);\r\n }\r\n\r\n getFilterURLParam(filter, entity) {\r\n // New UI: replace the filterState with filterService, how the filterService/filterState used?\r\n let conditionString;\r\n\r\n if (this.grid.filterState) {\r\n conditionString = this.grid.filterState.getAllFilters().odataV4({ignoreCase: false});\r\n } else {\r\n conditionString = this.grid.filterService.getCombinedFilter().odataV4({ignoreCase: false});\r\n }\r\n let result;\r\n\r\n // This is for chaining the id rules with Criterion\r\n if (filter.idBased) {\r\n const idString = filterConverter.convert(filter.FilterExpressions, entity).$filter;\r\n const conditionRegex = /isof\\(Criterion, 'Model.[\\w]+Criterion'\\)/g;\r\n const conditionFragment = conditionString.match(conditionRegex);\r\n let conditionFragmentALl = conditionFragment[0];\r\n\r\n // location has 2 criterions\r\n if (conditionFragment.length > 1) {\r\n conditionFragmentALl = `${conditionFragmentALl} or ${conditionFragment[1]}`;\r\n }\r\n\r\n result = `(${conditionFragmentALl}) and (${idString})`;\r\n } else {\r\n result = conditionString;\r\n }\r\n\r\n return `$filter=(${encodeURIComponent(result)})`;\r\n }\r\n\r\n getIdFilter() {\r\n const FilterExpressions = [];\r\n\r\n if (this.grid.pgridPlugins.crossPageSelectAll.isAllSelected === false) {\r\n FilterExpressions.push({\r\n SelectedColumn: 'IdString',\r\n SelectedOperator: 'Equal',\r\n Values: getSelectedEntityIdStrings(this.grid.gridView),\r\n });\r\n }\r\n\r\n return {\r\n FilterExpressions,\r\n };\r\n }\r\n\r\n makeChanges(simulateResults) {\r\n // when view by ad group and not select all, we need to check if there is any inherit records.\r\n if (this.entity === 'AdGroupCriterion' && !this.grid.pgridPlugins.crossPageSelectAll.isAllSelected) {\r\n const selectedItems = this.grid.gridView.selectedItems();\r\n\r\n if (_.isFunction(this.checkInheritTargets)) {\r\n const inheritResult = this.checkInheritTargets(selectedItems, false);\r\n\r\n if (inheritResult) {\r\n return;\r\n }\r\n }\r\n }\r\n super.makeChanges(simulateResults);\r\n }\r\n}\r\n","import ChangeCashbackPercentView from '@bingads-webui-static-legacy/bulk-edit/view/demographics/changeCashbackPercent';\r\nimport tmpl from '@bingads-webui-static-legacy/bulk-edit/template/targeting/changeCashbackPercent.pug';\r\nimport filterConverter from '@bingads-webui-static-legacy/odata-filter-converter';\r\nimport decimalNumber from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport _ from 'underscore';\r\nimport { getSelectedEntityIdStrings } from '../helpers';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/targeting-settings');\r\n\r\nfunction formatBid(rows, formatEntityString) {\r\n if (rows) {\r\n _.each(rows, (value) => {\r\n value.data = [];\r\n value.EntityKeyObject = {};\r\n\r\n _.each(value.EntityKey, (obj) => {\r\n value.EntityKeyObject[obj.Key] = obj.Value;\r\n });\r\n\r\n let name = '';\r\n\r\n if (_.isFunction(formatEntityString)) {\r\n name = formatEntityString(value.EntityKeyObject);\r\n }\r\n value.data.push({value: name, isHtml: false});\r\n\r\n if (value.Changes && value.Changes.length) {\r\n let newValue = value.Changes[0].NewValue;\r\n\r\n if (+newValue === -1 || newValue === '') {\r\n newValue = i18n.getString('Campaign_Cashback_Offer_Scope_InheritFromParent');\r\n } else {\r\n newValue = decimalNumber.fromFloatToPercentString(newValue, 2);\r\n }\r\n\r\n const originalValue = value.Changes[0].OriginalValue;\r\n\r\n value.data.push({\r\n value: originalValue === '' || +originalValue === -1 ?\r\n i18n.getString('Campaign_Cashback_Offer_Scope_InheritFromParent') :\r\n decimalNumber.fromFloatToPercentString(value.Changes[0].OriginalValue, 2),\r\n isHtml: false,\r\n });\r\n value.data.push({value: newValue, isHtml: false});\r\n } else {\r\n value.data.push({value: '', isHtml: false});\r\n value.data.push({value: '', isHtml: false});\r\n }\r\n });\r\n }\r\n return rows;\r\n\r\n}\r\n\r\nexport class ChangeTargetingCashbackPercentView extends ChangeCashbackPercentView {\r\n initialize(options) {\r\n super.initialize(options);\r\n this.template = tmpl;\r\n }\r\n\r\n setAction(simulateResults) {\r\n // not use PreviewEntityIds but use PreviewCompositeIds for this feature.\r\n this.model.unset('PreviewEntityIds');\r\n this.model.unset('PreviewCompositeIds');\r\n if (simulateResults) {\r\n if (this.grid.pgridPlugins.crossPageSelectAll.isAllSelected) {\r\n this.model.set('PreviewCompositeIds', getSelectedEntityIdStrings(this.grid.gridView));\r\n }\r\n }\r\n\r\n const action = {\r\n Actions: [{\r\n '@odata.type': '#Model.NumericAction',\r\n Property: 'CashbackAdjustment',\r\n ActionType: 'SetToAmount',\r\n Value: this.ko_model.getCashbackPercentValueByAction(),\r\n }],\r\n };\r\n\r\n this.model.set('BatchAction', action);\r\n this.model.set('Entity', this.entity);\r\n }\r\n\r\n getFilterURLParam(filter, entity) {\r\n // New UI: replace the filterState with filterService, how the filterService/filterState used?\r\n let conditionString;\r\n\r\n if (this.grid.filterState) {\r\n conditionString = this.grid.filterState.getAllFilters().odataV4({ignoreCase: false});\r\n } else {\r\n conditionString = this.grid.filterService.getCombinedFilter().odataV4({ignoreCase: false});\r\n }\r\n let result;\r\n\r\n // This is for chaining the id rules with Criterion\r\n if (filter.idBased) {\r\n const idString = filterConverter.convert(filter.FilterExpressions, entity).$filter;\r\n const conditionRegex = /isof\\(Criterion, 'Model.[\\w]+Criterion'\\)/g;\r\n const conditionFragment = conditionString.match(conditionRegex);\r\n let conditionFragmentALl = conditionFragment[0];\r\n\r\n // location has 2 criterions\r\n if (conditionFragment.length > 1) {\r\n conditionFragmentALl = `${conditionFragmentALl} or ${conditionFragment[1]}`;\r\n }\r\n\r\n result = `(${conditionFragmentALl}) and (${idString})`;\r\n } else {\r\n result = conditionString;\r\n }\r\n\r\n return `$filter=(${encodeURIComponent(result)})`;\r\n }\r\n\r\n getIdFilter() {\r\n const FilterExpressions = [];\r\n\r\n if (this.grid.pgridPlugins.crossPageSelectAll.isAllSelected === false) {\r\n FilterExpressions.push({\r\n SelectedColumn: 'IdString',\r\n SelectedOperator: 'Equal',\r\n Values: getSelectedEntityIdStrings(this.grid.gridView),\r\n });\r\n }\r\n\r\n return {\r\n FilterExpressions,\r\n };\r\n }\r\n\r\n makeChanges(simulateResults) {\r\n // when view by ad group and not select all, we need to check if there is any inherit records.\r\n if (this.entity === 'AdGroupCriterion' && !this.grid.pgridPlugins.crossPageSelectAll.isAllSelected) {\r\n const selectedItems = this.grid.gridView.selectedItems();\r\n\r\n if (_.isFunction(this.checkInheritTargets)) {\r\n const inheritResult = this.checkInheritTargets(selectedItems, false);\r\n\r\n if (inheritResult) {\r\n return;\r\n }\r\n }\r\n }\r\n super.makeChanges(simulateResults);\r\n }\r\n\r\n formatErrors(errors) {\r\n return formatBid(errors, this.formatEntityString);\r\n }\r\n\r\n formatPreviewResults(results) {\r\n return formatBid(results, this.formatEntityString);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { shouldSupportCashbackSettings } from '@bingads-webui-campaign/personalized-offer-shared';\r\nimport ChangeBidAdjustmentModel from './change-bid-adjustment/change-bid-adjustment-model';\r\nimport ChangeBidAdjustmentView from './change-bid-adjustment/change-bid-adjustment-view';\r\nimport { ChangeTargetingCashbackPercentView } from './change-cashback-percent/change-cashback-percent-view';\r\nimport ChangeCashbackPercentModel from '@bingads-webui-static-legacy/bulk-edit/model/demographics/changeCashbackPercent';\r\nimport popup from '@bingads-webui-component-legacy/dialog/popup';\r\nimport { showAlert } from './common-alert/index';\r\nimport appConfig from '@bingads-webui-component-legacy/config/index';\r\nimport { isDeprecatedLocation } from '@bingads-webui-campaign-legacy/location-targets/util/locationTargetDeprecationHelper';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/targeting-settings');\r\n\r\nexport default (definePlugin) => definePlugin('bidAdjustmentBulkEdit', [\r\n 'config',\r\n 'gridView',\r\n 'toolbar',\r\n 'pagination',\r\n 'crossPageSelectAll',\r\n 'filter',\r\n 'filterState',\r\n], (config, gridView, toolbar, pagination, crossPageSelectAll, filter, filterState) => {\r\n const pluginName = 'bidAdjustmentBulkEdit';\r\n let pluginConfig = _.result(config.plugins, pluginName, {});\r\n const isForVNext = _.result(pluginConfig, 'isForVNext', false);\r\n let toolbarEditor;\r\n let filterService;\r\n\r\n if (isForVNext) {\r\n // Currently, VNext toolbar, toolbarWithItem return toolbarEditor directly\r\n toolbarEditor = toolbar.gridToolbarGroup.toolbarWithItem();\r\n // Implicit dependency\r\n filterService = _.result(config, 'filterService', {});\r\n } else {\r\n const menuId = 'bulk-edit-bid-multiplier';\r\n\r\n toolbarEditor = toolbar.gridToolbarGroup.toolbarWithItem(menuId);\r\n pluginConfig = _.findWhere(toolbarEditor.options.items, { id: menuId });\r\n }\r\n\r\n function noneSelectedAndAlert(count) {\r\n if (count < 1) {\r\n popup.alert(i18n.getString('Grid_RowSelectionRequired'));\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function getGridSelectionCount() {\r\n return crossPageSelectAll.isAllSelected ?\r\n crossPageSelectAll.viewModel.totalRowsTotalPageCount() :\r\n gridView.selectedKeys().length;\r\n }\r\n\r\n function smartShoppingCampaignSelected(items) {\r\n return _.some(items, (item) => {\r\n return _.chain(item)\r\n .result('Campaign')\r\n .result('CampaignSubType')\r\n .value() === 'ShoppingSmartAds';\r\n });\r\n }\r\n\r\n /// return false if all are physical records\r\n /// return true if some are inherit or all inherit but not belong to 1 ad group\r\n /// return adgroupItems list if all are belong to 1 ad group\r\n function checkInheritTargets(selectedItems, editable = true) {\r\n const campaignItems = _.reject(selectedItems, (obj) => obj.LevelOfDetails === 'AdGroup');\r\n\r\n if (campaignItems.length === selectedItems.length && editable) {\r\n const adgroupItems = _.reject(campaignItems, (obj) => obj.AdGroupId !== campaignItems[0].AdGroupId);\r\n\r\n if (campaignItems.length === adgroupItems.length) {\r\n return adgroupItems;\r\n } else {\r\n showAlert({\r\n i18n,\r\n title: i18n.getString('BulkEdit_BidAdjustment_Invalid_Alert_Title'),\r\n messageDetails: i18n.getString(`BulkEdit_BidAdjustment_Inherit_NotSameAdGroup_${pluginConfig.gridType}`),\r\n });\r\n return true;\r\n }\r\n } else if (campaignItems.length > 0) {\r\n showAlert({\r\n i18n,\r\n title: i18n.getString('BulkEdit_BidAdjustment_Invalid_Alert_Title'),\r\n messageDetails: i18n.getString(`BulkEdit_BidAdjustment_MixInheritWarning_${pluginConfig.gridType}`),\r\n });\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function checkDeprecatedLocations() {\r\n const selectedItems = gridView.selectedItems();\r\n const deprecatedLocationSelected = _.some(selectedItems, (item) => isDeprecatedLocation(item.Criterion));\r\n\r\n if (deprecatedLocationSelected) {\r\n showAlert({\r\n i18n,\r\n title: i18n.getString('BulkEdit_BidAdjustment_Invalid_Alert_Title'),\r\n messageDetails: i18n.getString('BulkEdit_BidAdjustment_DeprecatedWarning_Locations'),\r\n });\r\n }\r\n\r\n return deprecatedLocationSelected;\r\n }\r\n\r\n function renderView(view) {\r\n view.listenTo(gridView, 'didSelect', () => {\r\n view.updateSelectedEntityCount(getGridSelectionCount());\r\n });\r\n\r\n view.render();\r\n view.$el.find(':input:enabled:first').focus();\r\n }\r\n\r\n function expandToolBar(view) {\r\n let gridContainer;\r\n let gridToolbar;\r\n let editorContainer;\r\n\r\n if (isForVNext) {\r\n gridView.overrideWith(view);\r\n } else {\r\n gridContainer = gridView.$el.closest('.settings-view');\r\n gridToolbar = gridContainer.find('.grid-toolbar');\r\n editorContainer = gridContainer.find('.bulkedit-container');\r\n\r\n editorContainer.html(view.$el);\r\n editorContainer.show();\r\n gridToolbar.hide();\r\n }\r\n toolbar.gridToolbarGroup.hideAllToolbars();\r\n\r\n view.on('hide', () => {\r\n if (isForVNext) {\r\n gridView.overrideWith(null);\r\n } else {\r\n gridToolbar.show();\r\n editorContainer.hide();\r\n }\r\n toolbar.gridToolbarGroup.showAllToolbars();\r\n view.remove();\r\n gridView.deselectAll();\r\n gridView.refresh(true);\r\n });\r\n }\r\n\r\n function showBulkEditor(type = 'BidMultiplier') {\r\n let bulkEditView;\r\n\r\n if (noneSelectedAndAlert(getGridSelectionCount()) || checkDeprecatedLocations()) {\r\n return;\r\n }\r\n\r\n // when view by ad group and not select all, we need to check if there is any inherit records.\r\n if (pluginConfig.entity === 'AdGroupCriterion' && !crossPageSelectAll.isAllSelected) {\r\n const selectedItems = gridView.selectedItems();\r\n const inheritResult = checkInheritTargets(selectedItems);\r\n\r\n if (_.isArray(inheritResult)) {\r\n if (smartShoppingCampaignSelected(selectedItems)) {\r\n showAlert({\r\n i18n,\r\n title: i18n.getString('BulkEdit_BidAdjustment_Invalid_Alert_Title'),\r\n messageDetails: i18n.getString('BulkEdit_BidAdjustment_NoSmartShoppingCampaign'),\r\n });\r\n return;\r\n }\r\n gridView.trigger('editInherited', inheritResult);\r\n }\r\n if (inheritResult) {\r\n return;\r\n }\r\n }\r\n\r\n let grid;\r\n\r\n if (isForVNext) {\r\n grid = {\r\n gridView,\r\n pgridPlugins: {\r\n pagination,\r\n crossPageSelectAll,\r\n },\r\n filterService,\r\n };\r\n } else {\r\n grid = {\r\n gridView,\r\n pgridPlugins: {\r\n pagination,\r\n crossPageSelectAll,\r\n filter,\r\n },\r\n filterState,\r\n };\r\n }\r\n\r\n if (type === 'BidMultiplier') {\r\n bulkEditView = new ChangeBidAdjustmentView({\r\n model: new ChangeBidAdjustmentModel({\r\n selectedEntityCount: getGridSelectionCount(),\r\n }),\r\n grid,\r\n entity: _.isEmpty(pluginConfig.entity) ? 'CampaignCriterion' : pluginConfig.entity,\r\n gridType: pluginConfig.gridType,\r\n customValidators: pluginConfig.customValidators,\r\n formatEntityString: pluginConfig.formatEntityString,\r\n checkInheritTargets,\r\n onOperationSuccess: () => {\r\n gridView.deselectAll();\r\n },\r\n isForVNext,\r\n });\r\n } else {\r\n bulkEditView = new ChangeTargetingCashbackPercentView({\r\n model: new ChangeCashbackPercentModel({\r\n selectedEntityCount: getGridSelectionCount(),\r\n }),\r\n grid,\r\n entity: _.isEmpty(pluginConfig.entity) ? 'CampaignCriterion' : pluginConfig.entity,\r\n gridType: pluginConfig.gridType,\r\n customValidators: pluginConfig.customValidators,\r\n formatEntityString: pluginConfig.formatEntityString,\r\n checkInheritTargets,\r\n onOperationSuccess: () => {\r\n gridView.deselectAll();\r\n },\r\n isForVNext,\r\n });\r\n }\r\n\r\n renderView(bulkEditView);\r\n expandToolBar(bulkEditView);\r\n }\r\n\r\n function updateToolbar() {\r\n if (isForVNext) {\r\n toolbarEditor.update({\r\n type: 'button',\r\n id: 'bulk-edit-bid-multiplier',\r\n text: i18n.getString('TargetingSettings_Grid_Bulk_Edit_Bid_Multiplier'),\r\n classes: ['btn-link'],\r\n iconLeftGlyphName: 'ba-Edit',\r\n onClick: () => {\r\n showBulkEditor();\r\n },\r\n });\r\n\r\n const { IsPersonalizedOffersEnabled } = appConfig.get('Permissions');\r\n const currentCampaign = appConfig.get('CurrentCampaign');\r\n const showBulkEditCashbackPercentButton = (currentCampaign == null ||\r\n shouldSupportCashbackSettings(currentCampaign, appConfig.get('Permissions'))) && IsPersonalizedOffersEnabled;\r\n\r\n if (showBulkEditCashbackPercentButton) {\r\n toolbarEditor.update({\r\n type: 'button',\r\n id: 'bulk-edit-cashback-percent',\r\n text: i18n.getString('TargetingSettings_Grid_Bulk_Edit_CashbackPercent'),\r\n classes: ['btn-link'],\r\n iconLeftGlyphName: 'ba-Edit',\r\n onClick: () => {\r\n showBulkEditor('CashbackPercent');\r\n },\r\n });\r\n }\r\n } else {\r\n toolbarEditor.update({\r\n type: 'button',\r\n id: 'bulk-edit-bid-multiplier',\r\n text: i18n.getString('TargetingSettings_Grid_Bulk_Edit_Bid_Multiplier'),\r\n classes: ['btn', 'btn-secondary'],\r\n onClick: () => {\r\n showBulkEditor('BidMultiplier');\r\n },\r\n });\r\n }\r\n }\r\n\r\n updateToolbar();\r\n\r\n gridView.on('didUpdate', () => {\r\n updateToolbar();\r\n });\r\n});\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport popup from '@bingads-webui-component-legacy/dialog/popup';\r\nimport DataStore from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport eventDispatcher from '@bingads-webui-component-legacy/event-dispatcher/index';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport gridFilterSerializer from '@bingads-webui-campaign-legacy/bulk-operation/util/grid-filter-serializer';\r\nimport summaryDataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport { showAlert } from './common-alert/index';\r\n\r\nconst i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/targeting-settings');\r\n\r\nexport default (definePlugin) => definePlugin('removeBulkEdit', [\r\n 'config',\r\n 'gridView',\r\n 'toolbar',\r\n 'crossPageSelectAll',\r\n 'filterState',\r\n], (config, gridView, toolbar, crossPageSelectAll, filterState) => {\r\n const menuId = 'bulk-edit-remove';\r\n const toolbarEditor = toolbar.gridToolbarGroup.toolbarWithItem(menuId);\r\n const pluginConfig = _.isUndefined(toolbarEditor.options) ?\r\n _.result(config.plugins, 'removeBulkEdit', {}) :\r\n _.findWhere(toolbarEditor.options.items, { id: menuId });\r\n\r\n let filterService;\r\n\r\n const isForVNext = pluginConfig.isForVNext;\r\n\r\n if (isForVNext) {\r\n filterService = _.result(config, 'filterService', {});\r\n }\r\n function noneSelectedAndAlert(count) {\r\n if (count < 1) {\r\n popup.alert(i18n.getString('Grid_RowSelectionRequired'));\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function getGridSelectionCount() {\r\n return crossPageSelectAll.isAllSelected ?\r\n crossPageSelectAll.viewModel.totalRowsTotalPageCount() :\r\n gridView.selectedKeys().length;\r\n }\r\n\r\n function pollStatus (taskId, successCb, failedCb) {\r\n DataStore.BulkEditSession.find(taskId, {cacheResponse: false}).then((response) => {\r\n successCb(response);\r\n })\r\n .catch(failedCb);\r\n }\r\n\r\n function processResponse (completeCB, failedCB, progressCB, response) {\r\n if (_.contains(['Completed', 'CompletedWithErrors'], response.Status)) {\r\n completeCB(response);\r\n } else if (_.contains(['Failed', 'Aborted', 'Expired'], response.Status)) {\r\n failedCB(response);\r\n } else { //task is inprogress or pending\r\n progressCB(response);\r\n setTimeout(_.partial(pollStatus, response.Id, _.partial(processResponse, completeCB, failedCB, progressCB), failedCB), 500);\r\n }\r\n return response;\r\n }\r\n\r\n function getDateRange () {\r\n try {\r\n const dateRange = state.get('$daterange');\r\n const startdate = (dateRange.start || dateRange.RangeStartDate).toISOString();\r\n const enddate = (dateRange.end || dateRange.RangeEndDate).toISOString();\r\n\r\n return `startdate=${startdate}&enddate=${enddate}`;\r\n } catch (e) {\r\n return '';\r\n }\r\n }\r\n\r\n function getQueryString (projection) {\r\n const dateRange = getDateRange();\r\n let query = '';\r\n const IdStrings = projection.IdString;\r\n\r\n if (_.isEmpty(projection)) {\r\n return dateRange;\r\n }\r\n\r\n if (projection.filters) {\r\n query = projection.filters.odataV4({ ignoreCase: false });\r\n }\r\n\r\n if (_.size(IdStrings) > 0) { //select some ids will distinguish it when new grid support select cross page\r\n const idStringsFilters = _.map(IdStrings, (obj) => {\r\n if (_.isUndefined(obj.AdGroupId)) {\r\n return `IdString eq 'CampaignId=${obj.CampaignId},TargetGroupDetailId=${obj.TargetGroupDetailId}'`;\r\n } else {\r\n return `IdString eq 'CampaignId=${obj.CampaignId},AdGroupId=${obj.AdGroupId},TargetGroupDetailId=${obj.TargetGroupDetailId}'`;\r\n }\r\n }).join(' or ');\r\n\r\n if (_.isEmpty(query)) {\r\n query = idStringsFilters;\r\n } else {\r\n query = `(${query}) and (${idStringsFilters})`;\r\n }\r\n }\r\n query = $.param({$filter: `${query}`});\r\n\r\n return `${query}&${dateRange}`;\r\n }\r\n\r\n function getParams(projection, batchActions, entity, campaignId, adgroupId) {\r\n return {\r\n BatchAction: batchActions,\r\n Description: crossPageSelectAll.isAllSelected ?\r\n gridFilterSerializer.toDescription(isForVNext ? filterService.getCombinedFilter() : filterState.getFilter() ) : JSON.stringify({ idsCount: getGridSelectionCount() }),\r\n Entity: entity,\r\n Selection: {\r\n QueryString: getQueryString(projection),\r\n CampaignId: campaignId,\r\n AdGroupId: adgroupId,\r\n },\r\n };\r\n }\r\n\r\n function bulkEditChange(options) {\r\n let params = options.params;\r\n\r\n let opt = _.defaults({}, options, {\r\n campaignId: null,\r\n adgroupId: null,\r\n completeCB: _.noop,\r\n failedCB: _.noop,\r\n progressCB: _.noop,\r\n });\r\n\r\n let process = _.partial(processResponse, opt.completeCB, opt.failedCB, opt.progressCB);\r\n\r\n let urlParameters = {$expand: 'BulkEditResults'};\r\n\r\n if (_.isEmpty(params)) {\r\n params = getParams(opt.projection, opt.batchActions, opt.entity, opt.campaignId, opt.adgroupId);\r\n }\r\n\r\n return DataStore.BulkEditSession.create(params, {\r\n urlParameters,\r\n cacheResponse: false,\r\n }).then(process)\r\n .catch(opt.failedCB);\r\n }\r\n\r\n function deleteTargets() {\r\n if (noneSelectedAndAlert(getGridSelectionCount())) {\r\n return;\r\n }\r\n\r\n // when view by ad group and not select all, we need to check if there is any inherit records.\r\n if (pluginConfig.entity.indexOf('AdGroupCriterion') >= 0 && !crossPageSelectAll.isAllSelected) {\r\n const selectedItems = gridView.selectedItems();\r\n\r\n const campaignItems = _.reject(selectedItems, (obj) => obj.LevelOfDetails === 'AdGroup');\r\n\r\n if (campaignItems.length > 0) {\r\n showAlert({\r\n i18n,\r\n title: i18n.getString('BulkEdit_Delete_Invalid_Alert_Title'),\r\n messageDetails: i18n.getString(`BulkEdit_Delete_Warning_${pluginConfig.gridType}`),\r\n });\r\n return;\r\n }\r\n }\r\n\r\n let confirmationMessage = '';\r\n\r\n confirmationMessage = i18n.getString('BulkEdit_Delete_Confirmation');\r\n if (pluginConfig.entity.indexOf('AdGroupCriterion') >= 0 && crossPageSelectAll.isAllSelected) {\r\n confirmationMessage = confirmationMessage.concat('\\n', i18n.getString('BulkEdit_Delete_SelectedAll_MixInheritWarning'));\r\n }\r\n\r\n if (!confirm(confirmationMessage)) { // eslint-disable-line no-alert\r\n return;\r\n }\r\n\r\n // invalidate cache\r\n switch (pluginConfig.entity) {\r\n case 'CampaignCriterion':\r\n case 'NegativeCampaignCriterion':\r\n summaryDataContextManager.emitter.trigger('invalidate', 'CampaignSettingsGrid');\r\n break;\r\n case 'AdGroupCriterion':\r\n case 'NegativeAdGroupCriterion':\r\n summaryDataContextManager.emitter.trigger('invalidate', 'AdGroupSettingsGrid');\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n const batchActions = {\r\n Actions: [{\r\n '@odata.type': '#Model.TextAction',\r\n ActionType: 'Set',\r\n Property: 'Status',\r\n Value: 'Deleted',\r\n }]};\r\n\r\n bulkEditChange({\r\n projection: {\r\n IdString: crossPageSelectAll.isAllSelected ? null : _.map(gridView.selectedItems(), (obj) => {\r\n return {\r\n CampaignId: obj.Campaign ? obj.Campaign.Id : Number(pluginConfig.view.options.campaignId),\r\n AdGroupId: obj.LevelOfDetails === 'AdGroup' ? obj.AdGroup.Id : undefined,\r\n TargetGroupDetailId: obj.Id,\r\n };\r\n }),\r\n // eslint-disable-next-line no-nested-ternary\r\n filters: crossPageSelectAll.isAllSelected ? isForVNext ? filterService.getCombinedFilter() : filterState.getAllFilters() : undefined,\r\n },\r\n batchActions,\r\n entity: pluginConfig.entity,\r\n campaignId: Number(pluginConfig.view.options.campaignId),\r\n adgroupId: Number(pluginConfig.view.options.adgroupId),\r\n completeCB: (response) => {\r\n if (response.SuccessRowCount === response.TotalRowCount) {\r\n window.App.views.alertCenter.toastConfirmation(i18n.getString('BulkEdit_Delete_Success', {\r\n success: response.SuccessRowCount,\r\n total: response.TotalRowCount,\r\n }));\r\n } else {\r\n window.App.views.alertCenter.toastWarning(i18n.getString('BulkEdit_Delete_Partial_Success', {\r\n success: response.SuccessRowCount,\r\n total: response.TotalRowCount,\r\n }));\r\n }\r\n gridView.deselectAll();\r\n gridView.refresh(true);\r\n eventDispatcher.trigger('targeting-settings:bulkRemoved', gridView);\r\n },\r\n failedCB: () => {\r\n gridView.deselectAll();\r\n window.App.views.alertCenter.toastError(i18n.getString('BulkEdit_Delete_Failed'));\r\n },\r\n }).withUiBlock(pluginConfig.view.$el);\r\n }\r\n\r\n function updateToolbar() {\r\n if (isForVNext) {\r\n toolbarEditor.update({\r\n type: 'button',\r\n id: menuId,\r\n text: i18n.getString('Button_Delete'),\r\n iconLeftGlyphName: 'ba-Delete',\r\n classes: ['btn-link'],\r\n onClick: () => {\r\n deleteTargets();\r\n },\r\n });\r\n } else {\r\n toolbarEditor.update({\r\n type: 'button',\r\n id: menuId,\r\n text: i18n.getString('TargetingSettings_Remove'),\r\n classes: ['btn', 'btn-secondary'],\r\n onClick: () => {\r\n deleteTargets();\r\n },\r\n });\r\n }\r\n }\r\n\r\n updateToolbar();\r\n});\r\n","import Backbone from 'backbone';\r\nimport template from './common-alert-template.pug';\r\n\r\nexport default class View extends Backbone.View {\r\n initialize(options = {}) {\r\n this.options = options;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click input.btn-default': '_ok',\r\n };\r\n }\r\n\r\n _ok() {\r\n this.trigger('ok');\r\n }\r\n\r\n render({\r\n i18n,\r\n messageDetails,\r\n learnMoreId = '',\r\n }) {\r\n this.$el.html(template({\r\n i18n,\r\n messageDetails,\r\n learnMoreId,\r\n }));\r\n\r\n return this;\r\n }\r\n}\r\n","import { decorate } from '@bingads-webui/dialog';\r\nimport commonAlert from './common-alert';\r\n\r\nconst CommonAlertDialog = decorate(commonAlert);\r\n\r\nexport function showAlert ({\r\n i18n,\r\n title = '',\r\n messageDetails,\r\n learnMoreId = '',\r\n}) {\r\n let alertView = new CommonAlertDialog({\r\n dialogOptions: {\r\n title,\r\n maxWidth: 658,\r\n },\r\n i18n,\r\n messageDetails,\r\n learnMoreId,\r\n }).render();\r\n\r\n alertView.center();\r\n\r\n alertView.bind('ok', () => {\r\n alertView.destroy();\r\n alertView = null;\r\n });\r\n}\r\n","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (data, getIconClass, getMediaUrl) {pug_html = pug_html + \"\\u003Cdiv class=\\\"appListItem\\\"\\u003E\";\nif (!!data.MediaUrl) {\npug_html = pug_html + \"\\u003Cimg\" + (\" class=\\\"appListIcon\\\"\"+pug.attr(\"src\", getMediaUrl(data), true, true)) + \"\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"appListIcon\",getIconClass(data)], [false,true]), false, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"appListItem-text\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = data.AppPlatform) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cbr\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = data.DisplayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"data\" in locals_for_with?locals_for_with.data:typeof data!==\"undefined\"?data:undefined,\"getIconClass\" in locals_for_with?locals_for_with.getIconClass:typeof getIconClass!==\"undefined\"?getIconClass:undefined,\"getMediaUrl\" in locals_for_with?locals_for_with.getMediaUrl:typeof getMediaUrl!==\"undefined\"?getMediaUrl:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, i18nKeys) {pug_mixins[\"selectedItemsContainer\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"campaign-adgroup-list\\\"\\u003E\\u003Cdiv data-bind=\\\"foreach: scopes().slice(0,selectedItemsLimit)\\\"\\u003E\\u003Cdiv class=\\\"selection-item truncated\\\"\\u003E\\u003Cspan data-bind=\\\"text: adGroupName.length>0 ? campaignName + " > " + adGroupName : campaignName, attr: {title: adGroupName.length>0 ? campaignName + " > " + adGroupName : campaignName}\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"remaining-items-text\\\" data-bind=\\\"visible: scopes().length>selectedItemsLimit, text: remainingItemsText()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"bulkedit\\\"\\u003E\\u003Cdiv class=\\\"panel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\"\\u003E\\u003Ch3 class=\\\"panel-title\\\" data-bind=\\\"visible: !isEditMode()\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get(i18nKeys.title)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh3\\u003E\\u003Ch3 class=\\\"panel-title\\\" data-bind=\\\"visible: isEditMode()\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get(i18nKeys.editTitle)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh3\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"panel-subtitle-container\\\" data-bind=\\\"visible: !isEditMode()\\\"\\u003E\";\n// iterate i18nKeys.subtitle\n;(function(){\n var $$obj = i18nKeys.subtitle;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var subTitle = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Ch5\\u003E\" + (null == (pug_interp = i18n.get(subTitle)) ? \"\" : pug_interp) + \"\\u003C\\u002Fh5\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var subTitle = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Ch5\\u003E\" + (null == (pug_interp = i18n.get(subTitle)) ? \"\" : pug_interp) + \"\\u003C\\u002Fh5\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"campaignAdgroupSelection col-sm-3\\\" data-bind=\\\"visible: isMultiSelect && showSelection && scopes().length>0 && showEditor()\\\"\\u003E\";\npug_mixins[\"selectedItemsContainer\"]();\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"associations\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"i18nKeys\" in locals_for_with?locals_for_with.i18nKeys:typeof i18nKeys!==\"undefined\"?i18nKeys:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (OptionalDisplayTextForSingleImageAdExtensions, _TL_, i18n, i18nGlobal, isRecommendation, newI18n, readOnly) {\n\n\n\n\n\n\n\n\n\n\n\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-horizontal img-editor image-ad-extension-v2-edit\\\"\\u003E\\u003Cdiv class=\\\"imgEditor-form form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"col-sm-4 control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Image_Dialog_Field_AltText_NEW')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"helpbutton\\\" topic=\\\"pop_BA_ImageExtension_Name\\\" type=\\\"helppopup\\\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cinput\" + (\" class=\\\"form-control text\\\"\"+pug.attr(\"placeholder\", i18n.getString('AdExtensions_Image_Editor_NameMax'), true, true)+\" type=\\\"text\\\" maxlength=\\\"35\\\" required=\\\"required\\\" data-bind=\\\"textInput: displayText, css: { error: !displayTextIsValid() }\\\"\"+pug.attr(\"aria-label\", i18n.getString('AdExtensions_Image_Dialog_Field_AltText_NEW'), true, true)+\" aria-describedby=\\\"ImgExtension_DisplayText_Error\\\"\") + \"\\u003E\\u003Cdiv\" + (\" class=\\\"error\\\"\"+\" id=\\\"ImgExtension_DisplayText_Error\\\"\"+pug.attr(\"data-bind\", 'text: !displayTextIsValid() ? \"' + (OptionalDisplayTextForSingleImageAdExtensions ? i18n.getString('AdExtensions_Image_Editor_InvalidNonoptionalDisplayText') : i18n.getString('AdExtensions_Image_Editor_InvalidAltText_PS4N')) + '\" : \"\"', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"col-sm-4 control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Image_Dialog_Field_Image_AltText')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"helpbutton\\\" topic=\\\"pop_BA_ImageExtension_AltText\\\" type=\\\"helppopup\\\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"span alt-text-description\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Image_Editor_ImageAltTextDescription')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cinput\" + (\" class=\\\"form-control text\\\"\"+pug.attr(\"placeholder\", i18n.getString('AdExtensions_Image_Editor_ImageAltTextMax'), true, true)+\" type=\\\"text\\\" maxlength=\\\"90\\\" required=\\\"false\\\" data-bind=\\\"textInput: altText, css: { error: !altTextIsValid() }\\\"\"+pug.attr(\"aria-label\", i18n.getString('AdExtensions_Image_Dialog_Field_Image_AltText'), true, true)+\" aria-describedby=\\\"ImgExtension_AltText_Error\\\"\") + \"\\u003E\\u003Cdiv\" + (\" class=\\\"error\\\"\"+\" id=\\\"ImgExtension_AltText_Error\\\"\"+pug.attr(\"data-bind\", 'text: !altTextIsValid() ? \"' + i18n.getString('AdExtensions_Image_Editor_Invalid_ImageAltText') + '\" : \"\"', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"extension-editor__extra\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (!isRecommendation) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"col-sm-4 control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Image_Eligibility_Label')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"helpbutton\\\" topic=\\\"pop_BA_ImageExtension_Eligibility\\\" type=\\\"helppopup\\\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"checkbox single-eligible\\\"\\u003E\\u003Cinput class=\\\"single-eligible-checkbox\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: isSingleEligible\\\" role=\\\"checkbox\\\"\\u003E\\u003Cdiv class=\\\"text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Image_Eligibility_Single_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"checkbox multi-eligible\\\"\\u003E\\u003Cinput class=\\\"multi-eligible-checkbox\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: isMultiEligible\\\" role=\\\"checkbox\\\"\\u003E\\u003Cdiv class=\\\"text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Image_Eligibility_Multi_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (\" class=\\\"error\\\"\"+\" id=\\\"ImgExtension_Eligibility_Error\\\"\"+pug.attr(\"data-bind\", 'text: !isEligibilityValid() ? \"' + i18n.getString('AdExtensions_Image_Editor_InvalidEligibility') + '\" : \"\"', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"scheduling\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"image-extension-image-experience\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert alert-info\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Created_Latency')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"visible: errorMessages() && errorMessages().length > 0\\\"\\u003E\\u003Cul data-bind=\\\"foreach:errorMessages\\\" role=\\\"alert\\\"\\u003E\\u003Cli\\u003E\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"save-bar imgeditor-save-container\\\"\\u003E\";\nif (isRecommendation) {\npug_html = pug_html + \"\\u003Cbutton\" + (\" class=\\\"btn btn-primary\\\"\"+\" type=\\\"button\\\" data-bind=\\\"click: apply\\\"\"+pug.attr(\"disabled\", readOnly, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = newI18n.getString(_TL_('Apply'))) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cbutton class=\\\"btn btn-primary\\\" type=\\\"button\\\" data-bind=\\\"click: save\\\" aria-describedby=\\\"ImgExtension_AltText_Error ImgExtension_DestUrl_Error\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18nGlobal.getString('Button_Save')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbutton class=\\\"btn btn-default\\\" type=\\\"button\\\" data-bind=\\\"click: cancel\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18nGlobal.getString('Button_Cancel')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"OptionalDisplayTextForSingleImageAdExtensions\" in locals_for_with?locals_for_with.OptionalDisplayTextForSingleImageAdExtensions:typeof OptionalDisplayTextForSingleImageAdExtensions!==\"undefined\"?OptionalDisplayTextForSingleImageAdExtensions:undefined,\"_TL_\" in locals_for_with?locals_for_with._TL_:typeof _TL_!==\"undefined\"?_TL_:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"i18nGlobal\" in locals_for_with?locals_for_with.i18nGlobal:typeof i18nGlobal!==\"undefined\"?i18nGlobal:undefined,\"isRecommendation\" in locals_for_with?locals_for_with.isRecommendation:typeof isRecommendation!==\"undefined\"?isRecommendation:undefined,\"newI18n\" in locals_for_with?locals_for_with.newI18n:typeof newI18n!==\"undefined\"?newI18n:undefined,\"readOnly\" in locals_for_with?locals_for_with.readOnly:typeof readOnly!==\"undefined\"?readOnly:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (OptionalDisplayTextForSingleImageAdExtensions, i18n, i18nGlobal, readOnly, systemGenerated) {\n\n\n\n\n\n\n\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-horizontal imgEditor-container-edit-ps4n image-ad-extension-v2-edit\\\"\\u003E\";\nif (systemGenerated) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert alert-info alert-center-align form-group\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_NotEditable_SystemGenerated')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"imgEditor-form form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"col-sm-4 control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Image_Dialog_Field_AltText_NEW')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"helpbutton\\\" topic=\\\"pop_BA_ImageExtension_Name\\\" type=\\\"helppopup\\\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cinput\" + (\" class=\\\"form-control text\\\"\"+pug.attr(\"placeholder\", i18n.getString('AdExtensions_Image_Editor_NameMax'), true, true)+\" type=\\\"text\\\" maxlength=\\\"35\\\" required=\\\"required\\\" data-bind=\\\"textInput: displayText, css: { error: !displayTextIsValid() }\\\"\"+pug.attr(\"aria-label\", i18n.getString('AdExtensions_Image_Dialog_Field_AltText_NEW'), true, true)+\" aria-describedby=\\\"ImgExtension_DisplayText_Error\\\"\"+pug.attr(\"disabled\", readOnly, true, true)) + \"\\u003E\\u003Cdiv class=\\\"error\\\" id=\\\"ImgExtension_DisplayText_Error\\\" data-bind=\\\"visible: !displayTextIsValid()\\\"\\u003E\" + (pug.escape(null == (pug_interp = OptionalDisplayTextForSingleImageAdExtensions ? i18n.getString('AdExtensions_Image_Editor_InvalidNonoptionalDisplayText') : i18n.getString('AdExtensions_Image_Editor_InvalidAltText_PS4N')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"col-sm-4 control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Image_Dialog_Field_Image_AltText')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"helpbutton\\\" topic=\\\"pop_BA_ImageExtension_AltText\\\" type=\\\"helppopup\\\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"span alt-text-description\\\"\\u003E\" + (pug.escape(null == (pug_interp = systemGenerated ? i18n.getString('AdExtensions_Image_Editor_ImageAltTextDescriptionForSystemGenerated') : i18n.getString('AdExtensions_Image_Editor_ImageAltTextDescription')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cinput\" + (\" class=\\\"form-control text\\\"\"+pug.attr(\"placeholder\", i18n.getString('AdExtensions_Image_Editor_ImageAltTextMax'), true, true)+\" type=\\\"text\\\" maxlength=\\\"90\\\" required=\\\"false\\\" data-bind=\\\"textInput: altText, css: { error: !altTextIsValid() }\\\"\"+pug.attr(\"aria-label\", i18n.getString('AdExtensions_Image_Dialog_Field_Image_AltText'), true, true)+\" aria-describedby=\\\"ImgExtension_AltText_Error\\\"\"+pug.attr(\"disabled\", readOnly, true, true)) + \"\\u003E\\u003Cdiv\" + (\" class=\\\"error\\\"\"+\" id=\\\"ImgExtension_AltText_Error\\\"\"+pug.attr(\"data-bind\", 'text: !altTextIsValid() ? \"' + i18n.getString('AdExtensions_Image_Editor_Invalid_ImageAltText') + '\" : \"\"', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"visible: description() && description().length > 0\\\"\\u003E\\u003Clabel class=\\\"control-label col-sm-4\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Image_Dialog_Field_Description')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cinput\" + (\" class=\\\"form-control text\\\"\"+pug.attr(\"placeholder\", i18n.getString('AdExtensions_Image_Editor_DescriptionMax'), true, true)+\" type=\\\"text\\\" maxlength=\\\"100\\\" data-bind=\\\"value: description, valueUpdate: "input"\\\"\"+pug.attr(\"aria-label\", i18n.getString('AdExtensions_Image_Dialog_Field_Description'), true, true)+pug.attr(\"disabled\", true, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"extension-editor__extra\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"col-sm-4 control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Image_Eligibility_Label')) ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"helpbutton\\\" topic=\\\"pop_BA_ImageExtension_Eligibility\\\" type=\\\"helppopup\\\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"checkbox single-eligible\\\"\\u003E\\u003Cinput\" + (\" class=\\\"single-eligible-checkbox\\\"\"+\" type=\\\"checkbox\\\" data-bind=\\\"checked: isSingleEligible\\\" role=\\\"checkbox\\\"\"+pug.attr(\"disabled\", readOnly, true, true)) + \"\\u003E\\u003Cdiv class=\\\"text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Image_Eligibility_Single_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"checkbox multi-eligible\\\"\\u003E\\u003Cinput\" + (\" class=\\\"multi-eligible-checkbox\\\"\"+\" type=\\\"checkbox\\\" data-bind=\\\"checked: isMultiEligible\\\" role=\\\"checkbox\\\"\"+pug.attr(\"disabled\", readOnly, true, true)) + \"\\u003E\\u003Cdiv class=\\\"text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Image_Eligibility_Multi_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (\" class=\\\"error\\\"\"+\" id=\\\"ImgExtension_Eligibility_Error\\\"\"+pug.attr(\"data-bind\", 'text: !isEligibilityValid() ? \"' + i18n.getString('AdExtensions_Image_Editor_InvalidEligibility') + '\" : \"\"', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"scheduling\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"image-extension-image-experience\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert alert-info form-group\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('AdExtensions_Edited_Latency')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"visible: errorMessages() && errorMessages().length > 0\\\"\\u003E\\u003Cul data-bind=\\\"foreach:errorMessages\\\" role=\\\"alert\\\"\\u003E\\u003Cli\\u003E\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"save-bar form-group imgeditor-save-container\\\"\\u003E\\u003Cbutton\" + (\" class=\\\"btn btn-primary\\\"\"+\" type=\\\"button\\\" data-bind=\\\"click: save\\\"\"+pug.attr(\"disabled\", readOnly, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18nGlobal.getString('Button_Save')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"btn btn-default\\\" type=\\\"button\\\" data-bind=\\\"click: cancel\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18nGlobal.getString('Button_Cancel')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"OptionalDisplayTextForSingleImageAdExtensions\" in locals_for_with?locals_for_with.OptionalDisplayTextForSingleImageAdExtensions:typeof OptionalDisplayTextForSingleImageAdExtensions!==\"undefined\"?OptionalDisplayTextForSingleImageAdExtensions:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"i18nGlobal\" in locals_for_with?locals_for_with.i18nGlobal:typeof i18nGlobal!==\"undefined\"?i18nGlobal:undefined,\"readOnly\" in locals_for_with?locals_for_with.readOnly:typeof readOnly!==\"undefined\"?readOnly:undefined,\"systemGenerated\" in locals_for_with?locals_for_with.systemGenerated:typeof systemGenerated!==\"undefined\"?systemGenerated:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (convertCurrencyCode, data) {pug_html = pug_html + \"\\u003Cdiv class=\\\"itemTemplate-text\\\"\\u003E\\u003Cul\\u003E\";\n// iterate data.TableRows\n;(function(){\n var $$obj = data.TableRows;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var tableRow = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cli class=\\\"price-adextension-item\\\" style=\\\"text-overflow: ellipsis;overflow: hidden;\\\"\\u003E\\u003Ca\" + (\" class=\\\"price-adextension-header\\\"\"+pug.attr(\"href\", tableRow.FinalUrls[0], true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = tableRow.Header) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' - ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"price-adextension-description\\\"\\u003E\" + (pug.escape(null == (pug_interp = tableRow.Description + ' ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"price-adextension-price-info\\\"\\u003E\" + (pug.escape(null == (pug_interp = convertCurrencyCode(tableRow.CurrencyCode) + tableRow.Price) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fli\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var tableRow = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cli class=\\\"price-adextension-item\\\" style=\\\"text-overflow: ellipsis;overflow: hidden;\\\"\\u003E\\u003Ca\" + (\" class=\\\"price-adextension-header\\\"\"+pug.attr(\"href\", tableRow.FinalUrls[0], true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = tableRow.Header) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' - ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"price-adextension-description\\\"\\u003E\" + (pug.escape(null == (pug_interp = tableRow.Description + ' ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"price-adextension-price-info\\\"\\u003E\" + (pug.escape(null == (pug_interp = convertCurrencyCode(tableRow.CurrencyCode) + tableRow.Price) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fli\\u003E\";\n }\n }\n}).call(this);\n\nif (data.moreString) {\npug_html = pug_html + \"\\u003Cli class=\\\"price-adextension-more-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = data.moreString) ? \"\" : pug_interp)) + \"\\u003C\\u002Fli\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"convertCurrencyCode\" in locals_for_with?locals_for_with.convertCurrencyCode:typeof convertCurrencyCode!==\"undefined\"?convertCurrencyCode:undefined,\"data\" in locals_for_with?locals_for_with.data:typeof data!==\"undefined\"?data:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (value) {pug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = value.$total.text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, isShowDisclaimerBannerEnabled) {pug_mixins[\"koErrors\"] = pug_interp = function(id, cssClass){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"class\", pug.classes([cssClass ? cssClass : 'alert alert-danger'], [true]), false, true)+\" data-bind=\\\"visible: errors().length > 0, foreach: errors, attr: {"aria-hidden": errors().length == 0}\\\"\"+pug.attr(\"id\", id ? id : 'KoErrors', true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Cdiv data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koValidationError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"data-bind\", 'visible: !' + item + '.isValid(), foreach: ' + item + '.errors, attr: {\"aria-hidden\": ' + item + '.isValid()}', true, true)+pug.attr(\"id\", id ? id : item + 'ValidationError', true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli role=\\\"presentation\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"koCharactersRemaining\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"remaining-hint help-block\\\"\\u003E\\u003Cspan\" + (pug.attr(\"data-bind\", 'text:' + item + '.char_rem', true, true)+pug.attr(\"id\", id ? id : item + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003Cdiv class=\\\"adgroup-settings-page\\\"\\u003E\\u003Cdiv class=\\\"adgroup-settings-container\\\" data-bind=\\\"visible: dataLoaded\\\"\\u003E\\u003C!--ko ifnot: isNewUI()--\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AdGroupSetting_SectionTitle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh3\\u003E\\u003Chr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003Cdiv class=\\\"adgroup-settings form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Ch5 class=\\\"adgroup-settings__name-label col-sm-2 control-label\\\"\\u003E\\u003Clabel id=\\\"AdGroupSettings_AdGroup_Name_Label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AdGroup_Label_Name')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_CampaignCreate_Keywords_AdGroupName', i18n.get('AdGroup_Label_Name'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh5\\u003E\\u003Cdiv class=\\\"col-sm-4\\\"\\u003E\\u003Cinput class=\\\"name form-control\\\" data-bind=\\\"value: Name, valueUpdate: "input", css: {"validation-error": !Name.isValid()}\\\" type=\\\"text\\\" aria-labelledby=\\\"AdGroupSettings_AdGroup_Name_Label\\\" aria-describedby=\\\"Name_CharactersRemaining\\\"\\u003E\";\npug_mixins[\"koCharactersRemaining\"]('Name');\npug_html = pug_html + \"\\u003Cdiv class=\\\"clear\\\"\\u003E\";\npug_mixins[\"koValidationError\"]('Name');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--ko if: shouldShowAdGroupType--\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Ch5 class=\\\"adgroup-settings__adgroup-type-label col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AdGroupType_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_DSA_AdGroupType', i18n.get('AdGroupType_Label'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh5\\u003E\\u003Cdiv class=\\\"col-sm-4 adgroup-type\\\" data-bind=\\\"text: adGroupTypeString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko if: enableLanguageSelection()--\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Ch5 class=\\\"adgroup-settings__language-selector-label col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Campaign_Language')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_Settings_Language', i18n.get('LanguageLabelText'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh5\\u003E\\u003Cdiv class=\\\"col-sm-4 adgroup-language\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko if: !hideLanguage() && !enableLanguageSelection()--\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Ch5 class=\\\"adgroup-settings__language-label col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Campaign_Language')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_AdGroup_Settings_Language', i18n.get('LanguageLabelText'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh5\\u003E\\u003Cdiv class=\\\"col-sm-4\\\"\\u003E\\u003Cdiv class=\\\"adgroup-settings__language form-control-static\\\" data-bind=\\\"text: languageString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--\\u002Fko--\\u003E\\u003Cdiv class=\\\"bidding-strategy__container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"cpg-adgroup-type__container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--ko if: supportCashbackSettings--\\u003E\\u003Cdiv class=\\\"cashback-settings-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Cdiv class=\\\"advanced-settings-section\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"bid-block\\\"\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('SectionTitle_SetBids')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh3\\u003E\\u003Chr\\u003E\\u003Cdiv class=\\\"bid-section\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"cpg-bid-section__container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ch3 class=\\\"adgroup-targets__label type-bold\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('SectionTitle_AdgroupTargets')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh3\\u003E\\u003Chr\\u003E\\u003Cdiv class=\\\"adgroup-targets clearfix\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (isShowDisclaimerBannerEnabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert alert-info form-group page-alert\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (null == (pug_interp = i18n.get('Targeting_Disclaimer')) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C!--ko if: showHighLatencyAlert()--\\u003E\\u003Cdiv class=\\\"alert alert-info form-group page-alert\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('TargetingSettings_OnSave_HighLantency_Text')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--\\u002Fko--\\u003E\\u003Cdiv class=\\\"alert alert-info form-group page-alert\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AdGroups_Latency')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"save-bar form-group\\\"\\u003E\\u003C!--ko ifnot: isNewUI()--\\u003E\\u003Cinput\" + (\" class=\\\"btn-save btn btn-primary\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.get('Button_Save'), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"btn-cancel btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.get('Button_Cancel'), true, true)) + \"\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko if: isNewUI()--\\u003E\\u003Cbutton\" + (\" class=\\\"btn-save btn btn-primary\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.get('Button_Save'), true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Button_Save')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cbutton\" + (\" class=\\\"btn-cancel btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.get('Button_Cancel'), true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Button_Cancel')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isShowDisclaimerBannerEnabled\" in locals_for_with?locals_for_with.isShowDisclaimerBannerEnabled:typeof isShowDisclaimerBannerEnabled!==\"undefined\"?isShowDisclaimerBannerEnabled:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (column, containerType, label, name, popupId) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"grid-header-\" + containerType], [true]), false, true)) + \"\\u003E\";\nif (column.$orderby) {\nif (column.$orderby.dir > 0) {\npug_html = pug_html + \"\\u003Cspan class=\\\"grid-asc\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan class=\\\"grid-des\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\n}\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"grid-header-text\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", label, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\nif (popupId) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-subheader-text\\\"\\u003E\";\npug_mixins[\"popupHelp\"](popupId);\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"column\" in locals_for_with?locals_for_with.column:typeof column!==\"undefined\"?column:undefined,\"containerType\" in locals_for_with?locals_for_with.containerType:typeof containerType!==\"undefined\"?containerType:undefined,\"label\" in locals_for_with?locals_for_with.label:typeof label!==\"undefined\"?label:undefined,\"name\" in locals_for_with?locals_for_with.name:typeof name!==\"undefined\"?name:undefined,\"popupId\" in locals_for_with?locals_for_with.popupId:typeof popupId!==\"undefined\"?popupId:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (Status, i18n, noHover) {var statusIconLabel\nif (i18n) {\nswitch (Status){\ncase 'Deleted':\nstatusIconLabel = i18n.getString('EntityStatus_Deleted')\n break;\ncase 'Paused':\nstatusIconLabel = i18n.getString('EntityStatus_Paused')\n break;\ndefault:\nstatusIconLabel = i18n.getString('EntityStatus_Active')\n break;\n}\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-cell\\\"\\u003E\";\nif (!Status) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusHeader_icon clickable\\\" tabindex=\\\"0\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (Status === 'Deleted') {\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"statusicondisplay\\\"\"+pug.attr(\"aria-label\", statusIconLabel, true, true)) + \"\\u003E\\u003Cdiv class=\\\"statusDeleted_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (noHover) {\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"statusicondisplay\\\"\"+pug.attr(\"aria-label\", statusIconLabel, true, true)) + \"\\u003E\";\nif (Status === 'Paused') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusPaused_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusEnabled_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"statuschangehover statusicondisplay clickable\\\"\"+\" tabindex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", statusIconLabel, true, true)) + \"\\u003E\";\nif (Status === 'Paused') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusPaused_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusEnabled_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"Status\" in locals_for_with?locals_for_with.Status:typeof Status!==\"undefined\"?Status:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"noHover\" in locals_for_with?locals_for_with.noHover:typeof noHover!==\"undefined\"?noHover:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (DeliveryTemplates, isForVNext) {if (isForVNext) {\nvar statusTypeClass = DeliveryTemplates.status === 'error' ? 'status-error' : (DeliveryTemplates.status === 'warning' ? 'status-warning' : 'status-info')\nvar needsPopup = DeliveryTemplates.hasGlyph || DeliveryTemplates.status === 'error' || DeliveryTemplates.status === 'warning'\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"delivery-info\",`${needsPopup ? 'trigger-popup' : ''}`], [false,true]), false, true)) + \"\\u003E\";\nif ((DeliveryTemplates.status === 'error')) {\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"status-icon iconba iconba-ErrorBadge\\\"\"+pug.attr(\"title\", DeliveryTemplates.i18n.getString('DeliveryStatusIcon_Tooltip_Error'), true, true)+pug.attr(\"aria-label\", DeliveryTemplates.i18n.getString('DeliveryStatusIcon_Tooltip_Error'), true, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse\nif ((DeliveryTemplates.status === 'warning')) {\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"status-icon iconba iconba-Warning\\\"\"+pug.attr(\"title\", DeliveryTemplates.i18n.getString('DeliveryStatusIcon_Tooltip_Warning'), true, true)+pug.attr(\"aria-label\", DeliveryTemplates.i18n.getString('DeliveryStatusIcon_Tooltip_Warning'), true, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nif (DeliveryTemplates.hasGlyph) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"status-column\",\"clickable\",statusTypeClass], [false,false,true]), false, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = DeliveryTemplates.i18n.getString(DeliveryTemplates.deliveryStatus)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"status-column\",statusTypeClass], [false,true]), false, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = DeliveryTemplates.i18n.getString(DeliveryTemplates.deliveryStatus)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"layout-marked-element status-row\\\"\\u003E\\u003Cdiv class=\\\"mark-container\\\"\\u003E\";\nif ((DeliveryTemplates.status === 'error')) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"status-icon\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"status_error spritedimagealign\\\"\"+pug.attr(\"title\", DeliveryTemplates.i18n.getString('DeliveryStatusIcon_Tooltip_Error'), true, true)+pug.attr(\"aria-label\", DeliveryTemplates.i18n.getString('DeliveryStatusIcon_Tooltip_Error'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif ((DeliveryTemplates.status === 'warning')) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"status-icon\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"status_warning spritedimagealign\\\"\"+pug.attr(\"title\", DeliveryTemplates.i18n.getString('DeliveryStatusIcon_Tooltip_Warning'), true, true)+pug.attr(\"aria-label\", DeliveryTemplates.i18n.getString('DeliveryStatusIcon_Tooltip_Warning'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"decorated-element\\\"\\u003E\\u003Cdiv class=\\\"status-column\\\"\\u003E\" + (pug.escape(null == (pug_interp = DeliveryTemplates.i18n.getString(DeliveryTemplates.deliveryStatus)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif ((DeliveryTemplates.hasGlyph)) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"glyph-container\\\"\\u003E\\u003Cdiv class=\\\"status-image\\\"\\u003E\\u003Cdiv class=\\\"status_icon gridDetailsImage spritedimagealign clickable\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"DeliveryTemplates\" in locals_for_with?locals_for_with.DeliveryTemplates:typeof DeliveryTemplates!==\"undefined\"?DeliveryTemplates:undefined,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, isMMAForRetailEnabled, isNotAudienceCampaign, isShowDisclaimerBannerEnabled, title) {pug_mixins[\"koErrors\"] = pug_interp = function(id, cssClass){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"class\", pug.classes([cssClass ? cssClass : 'alert alert-danger'], [true]), false, true)+\" data-bind=\\\"visible: errors().length > 0, foreach: errors, attr: {"aria-hidden": errors().length == 0}\\\"\"+pug.attr(\"id\", id ? id : 'KoErrors', true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Cdiv data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003Cdiv class=\\\"campaign-settings-page\\\"\\u003E\\u003Cdiv class=\\\"setting-container\\\" data-bind=\\\"visible: dataLoaded\\\"\\u003E\\u003C!--ko ifnot: isNewUI()--\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh3\\u003E\\u003Chr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003Cdiv class=\\\"campaign-update\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"budget-settings\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (isNotAudienceCampaign) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"advanced-settings-section\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (isMMAForRetailEnabled) {\npug_html = pug_html + \"\\u003Ch3 class=\\\"type-bold\\\" data-bind=\\\"visible: hasStore\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('ShoppingCampaign_ShoppingSetting_SectionTitle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_MMA_Enable', i18n.get('ShoppingCampaign_ShoppingSetting_SectionTitle'), i18n);\npug_html = pug_html + \"\\u003C\\u002Fh3\\u003E\\u003Chr data-bind=\\\"visible: hasStore\\\"\\u003E\\u003Cdiv class=\\\"shopping-settings\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('SectionTitle_CampaignTargets')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh3\\u003E\\u003Chr\\u003E\\u003Cdiv class=\\\"campaign-targets clearfix\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003C!--ko ifnot: isNewUI()--\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('SectionTitle_AdvancedSettings')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh3\\u003E\\u003Chr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003Cdiv class=\\\"advanced-settings-section\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"conversion-goal-section\\\"\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Campaign_Goals_Section_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh3\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Campaign_Goals_Help_Text')) ? \"\" : pug_interp)) + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"HelpTopic\\\" href=\\\"javascript:void(0);\\\" query=\\\"help:app54814\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cdiv class=\\\"conversion-goal-selection\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--ko if: showGoalRemoveAlert()--\\u003E\\u003Cdiv class=\\\"alert alert-warning form-group page-alert\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Campaign_Conversion_Goal_Remove_Warning')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E \\u003Ca target=\\\"_blank\\\" href=\\\"https:\\u002F\\u002Fhelp.ads.microsoft.com\\u002F#apex\\u002Fads\\u002Fen\\u002F60138\\u002F2\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--\\u002Fko--\\u003E\";\nif (isShowDisclaimerBannerEnabled && isNotAudienceCampaign) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert alert-info form-group page-alert\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (null == (pug_interp = i18n.get('Targeting_Disclaimer')) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C!--ko if: showHighLatencyAlert()--\\u003E\\u003Cdiv class=\\\"alert alert-info form-group page-alert\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('TargetingSettings_OnSave_HighLantency_Text')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!--\\u002Fko--\\u003E\\u003Cdiv class=\\\"alert alert-info form-group page-alert\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Campaigns_Latency')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cbutton class=\\\"btn btn-primary btn-save\\\" type=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Button_Save')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"btn btn-default btn-cancel\\\" type=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Button_Cancel')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isMMAForRetailEnabled\" in locals_for_with?locals_for_with.isMMAForRetailEnabled:typeof isMMAForRetailEnabled!==\"undefined\"?isMMAForRetailEnabled:undefined,\"isNotAudienceCampaign\" in locals_for_with?locals_for_with.isNotAudienceCampaign:typeof isNotAudienceCampaign!==\"undefined\"?isNotAudienceCampaign:undefined,\"isShowDisclaimerBannerEnabled\" in locals_for_with?locals_for_with.isShowDisclaimerBannerEnabled:typeof isShowDisclaimerBannerEnabled!==\"undefined\"?isShowDisclaimerBannerEnabled:undefined,\"title\" in locals_for_with?locals_for_with.title:typeof title!==\"undefined\"?title:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + (\"\\u003Cdiv class=\\\"campaign-targeting\\\"\\u003E\\u003Cdiv class=\\\"location-targets-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"adschedule-targets-container\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"control-label col-sm-2\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ColumnName_AdSchedule')) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_Targeting_DayTime', i18n.getString('ColumnName_AdSchedule'), i18n);\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-10\\\"\\u003E\\u003Cdiv class=\\\"ad-schedule\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Ch3\\u003E\\u003Cstrong\\u003E\" + (pug.escape(null == (pug_interp = model.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fstrong\\u003E\\u003C\\u002Fh3\\u003E\\u003Cdiv class=\\\"popover-body\\\"\\u003E\";\nif (model.subtitle) {\npug_html = pug_html + \"\\u003Cp\\u003E\" + (pug.escape(null == (pug_interp = model.subtitle) ? \"\" : pug_interp)) + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" query=\\\"app54544\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", view.i18n.getString('LearnMore'), true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('LearnMore')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fp\\u003E\";\n}\npug_html = pug_html + \"\\u003Cul class=\\\"account-list text-nowrap\\\"\\u003E\";\nif (model.value.Accounts) {\n// iterate model.value.Accounts\n;(function(){\n var $$obj = model.value.Accounts;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var account = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cli\\u003E\" + (pug.escape(null == (pug_interp = account.Name) ? \"\" : pug_interp)) + \" (\" + (pug.escape(null == (pug_interp = account.Number) ? \"\" : pug_interp)) + \") - \\u003Cstrong\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('Ad_Account')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fstrong\\u003E\\u003C\\u002Fli\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var account = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cli\\u003E\" + (pug.escape(null == (pug_interp = account.Name) ? \"\" : pug_interp)) + \" (\" + (pug.escape(null == (pug_interp = account.Number) ? \"\" : pug_interp)) + \") - \\u003Cstrong\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('Ad_Account')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fstrong\\u003E\\u003C\\u002Fli\\u003E\";\n }\n }\n}).call(this);\n\n}\nif (model.value.Customers) {\n// iterate model.value.Customers\n;(function(){\n var $$obj = model.value.Customers;\n if ('number' == typeof $$obj.length) {\n for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) {\n var customer = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cli\\u003E\" + (pug.escape(null == (pug_interp = customer.Name) ? \"\" : pug_interp)) + \" (\" + (pug.escape(null == (pug_interp = customer.Number) ? \"\" : pug_interp)) + \") - \\u003Cstrong\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('Manager_Account')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fstrong\\u003E\\u003C\\u002Fli\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index1 in $$obj) {\n $$l++;\n var customer = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cli\\u003E\" + (pug.escape(null == (pug_interp = customer.Name) ? \"\" : pug_interp)) + \" (\" + (pug.escape(null == (pug_interp = customer.Number) ? \"\" : pug_interp)) + \") - \\u003Cstrong\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('Manager_Account')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fstrong\\u003E\\u003C\\u002Fli\\u003E\";\n }\n }\n}).call(this);\n\n}\nif (model.footerText) {\npug_html = pug_html + \"\\u003Cp\\u003E\" + (pug.escape(null == (pug_interp = model.footerText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fp\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, label, labelledBy, text, topic) {var attrs = { query: 'help:' + topic, href: 'javascript:void(0)' };\ntext = text || i18n.getString('ConversionTracking_Learn_More');\nif (labelledBy) {\nattrs['aria-labelledby'] = labelledBy + ' ' + labelledBy + '__self';\nattrs['id'] = labelledBy + '__self';\n} else {\nattrs['aria-label'] = label || text;\n}\npug_html = pug_html + \"\\u003Ca\" + (pug.attrs(pug.merge([{\"class\": \"HelpTopic\"},attrs]), true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"label\" in locals_for_with?locals_for_with.label:typeof label!==\"undefined\"?label:undefined,\"labelledBy\" in locals_for_with?locals_for_with.labelledBy:typeof labelledBy!==\"undefined\"?labelledBy:undefined,\"text\" in locals_for_with?locals_for_with.text:typeof text!==\"undefined\"?text:undefined,\"topic\" in locals_for_with?locals_for_with.topic:typeof topic!==\"undefined\"?topic:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (a11yId, customExtensionEntranceText, helpLinkTemplate, i18n, isActiveTrackingStatus, isAudiencesLibrary, isClarityGoal, isInPilot, isNoRecentConversions, isTrackingStatusColumn, isUETAllTagsDashboard, isUETDashboardEnabled, isUETDashboardPhase2Enabled, isUnverifiedOrInactive, testType, trackingStatusMessagePrefix, value) {pug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"tracking-status-popover\\\"\"+pug.attr(\"id\", a11yId('tracking-status-popover'), true, true)) + \"\\u003E\\u003Cdiv class=\\\"tracking-status-popover__message\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString(trackingStatusMessagePrefix + value)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\nif ((testType === 'DestinationGoal' || testType === 'EventGoal' || (isInPilot && testType === 'ProductConversionGoal') || (isUETDashboardPhase2Enabled && isUETAllTagsDashboard && isUnverifiedOrInactive) || (isUETDashboardEnabled && isAudiencesLibrary && isUnverifiedOrInactive)) && (value !== 'InactiveDueToTagUnavailable')) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"entrances\\\"\\u003E\";\nif (isTrackingStatusColumn && isUETDashboardEnabled && isUnverifiedOrInactive) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"entrance-button-default uetdashboard\\\"\\u003E\\u003Cspan class=\\\"entrance-text-default\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_Goals_ViewDashboard')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"entrance-button extension\\\"\\u003E\\u003Cspan class=\\\"entrance-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = (customExtensionEntranceText || i18n.getString('UnifiedEventTracking_Goals_TestInAdvisorExtension'))) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (isTrackingStatusColumn && isUETDashboardEnabled && isNoRecentConversions) {\nif (!isClarityGoal) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"entrance-button-default extension\\\"\\u003E\\u003Cspan class=\\\"entrance-text-default\\\"\\u003E\" + (pug.escape(null == (pug_interp = (customExtensionEntranceText || i18n.getString('UnifiedEventTracking_Goals_TestInAdvisorExtension'))) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"entrance-button uetdashboard\\\"\\u003E\\u003Cspan class=\\\"entrance-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_Goals_ViewDashboard')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (isTrackingStatusColumn && isUETDashboardPhase2Enabled && isUnverifiedOrInactive) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"entrance-button-default uetdashboard\\\"\\u003E\\u003Cspan class=\\\"entrance-text-default\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_Goals_ViewDashboard')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"entrance-button extension\\\"\\u003E\\u003Cspan class=\\\"entrance-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = (customExtensionEntranceText || i18n.getString('UnifiedEventTracking_Goals_TestInAdvisorExtension'))) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\nif (!isActiveTrackingStatus(value)) {\nvar helpLink = helpLinkTemplate({\ni18n: i18n,\ntopic: 'app51206',\nlabelledBy: a11yId('tracking-status-popover'),\ntext: i18n.getString('UETTags_Grid_Troubleshoot'),\n});\npug_html = pug_html + \"\\u003Cdiv class=\\\"tracking-status-popover__troubleshoot\\\"\\u003E\" + (null == (pug_interp = helpLink) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"a11yId\" in locals_for_with?locals_for_with.a11yId:typeof a11yId!==\"undefined\"?a11yId:undefined,\"customExtensionEntranceText\" in locals_for_with?locals_for_with.customExtensionEntranceText:typeof customExtensionEntranceText!==\"undefined\"?customExtensionEntranceText:undefined,\"helpLinkTemplate\" in locals_for_with?locals_for_with.helpLinkTemplate:typeof helpLinkTemplate!==\"undefined\"?helpLinkTemplate:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isActiveTrackingStatus\" in locals_for_with?locals_for_with.isActiveTrackingStatus:typeof isActiveTrackingStatus!==\"undefined\"?isActiveTrackingStatus:undefined,\"isAudiencesLibrary\" in locals_for_with?locals_for_with.isAudiencesLibrary:typeof isAudiencesLibrary!==\"undefined\"?isAudiencesLibrary:undefined,\"isClarityGoal\" in locals_for_with?locals_for_with.isClarityGoal:typeof isClarityGoal!==\"undefined\"?isClarityGoal:undefined,\"isInPilot\" in locals_for_with?locals_for_with.isInPilot:typeof isInPilot!==\"undefined\"?isInPilot:undefined,\"isNoRecentConversions\" in locals_for_with?locals_for_with.isNoRecentConversions:typeof isNoRecentConversions!==\"undefined\"?isNoRecentConversions:undefined,\"isTrackingStatusColumn\" in locals_for_with?locals_for_with.isTrackingStatusColumn:typeof isTrackingStatusColumn!==\"undefined\"?isTrackingStatusColumn:undefined,\"isUETAllTagsDashboard\" in locals_for_with?locals_for_with.isUETAllTagsDashboard:typeof isUETAllTagsDashboard!==\"undefined\"?isUETAllTagsDashboard:undefined,\"isUETDashboardEnabled\" in locals_for_with?locals_for_with.isUETDashboardEnabled:typeof isUETDashboardEnabled!==\"undefined\"?isUETDashboardEnabled:undefined,\"isUETDashboardPhase2Enabled\" in locals_for_with?locals_for_with.isUETDashboardPhase2Enabled:typeof isUETDashboardPhase2Enabled!==\"undefined\"?isUETDashboardPhase2Enabled:undefined,\"isUnverifiedOrInactive\" in locals_for_with?locals_for_with.isUnverifiedOrInactive:typeof isUnverifiedOrInactive!==\"undefined\"?isUnverifiedOrInactive:undefined,\"testType\" in locals_for_with?locals_for_with.testType:typeof testType!==\"undefined\"?testType:undefined,\"trackingStatusMessagePrefix\" in locals_for_with?locals_for_with.trackingStatusMessagePrefix:typeof trackingStatusMessagePrefix!==\"undefined\"?trackingStatusMessagePrefix:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (appendLearnMoreLink, view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"form-inline\\\"\\u003E\\u003Cdiv class=\\\"summarypage-bifreshtime\\\"\\u003E\" + (null == (pug_interp = view.stampNotes) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"summarypage-bifreshtime\\\"\\u003E\";\nif (view.accountTimeZoneText) {\npug_html = pug_html + (null == (pug_interp = appendLearnMoreLink(view.i18n.get('MRCAccredited_Label') + ' ' + view.accountTimeZoneText, 'ext54483')) ? \"\" : pug_interp);\n}\nelse {\npug_html = pug_html + (null == (pug_interp = view.i18n.get('MRCAccredited_Label')) ? \"\" : pug_interp);\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"appendLearnMoreLink\" in locals_for_with?locals_for_with.appendLearnMoreLink:typeof appendLearnMoreLink!==\"undefined\"?appendLearnMoreLink:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (isForVNext, unassigned) {if (isForVNext) {\npug_html = pug_html + \"\\u003Cspan class=\\\"goals-grid__category-detail cell-with-popover clickable\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = unassigned) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"pull-left goals-grid__category-unassigned\\\"\\u003E\" + (pug.escape(null == (pug_interp = unassigned) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"pull-right btn btn-flat goals-grid__category-detail\\\"\\u003E\\u003Cdiv class=\\\"category-image status-image status_icon clickable\\\" type=\\\"button\\\" tabindex=\\\"0\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined,\"unassigned\" in locals_for_with?locals_for_with.unassigned:typeof unassigned!==\"undefined\"?unassigned:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (a11yId, popupMessage) {pug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"goal-read-only-popover\\\"\"+pug.attr(\"id\", a11yId('goal-read-only-popover'), true, true)) + \"\\u003E\\u003Cdiv class=\\\"goal-read-only-popover__message\\\"\\u003E\" + (pug.escape(null == (pug_interp = popupMessage) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"a11yId\" in locals_for_with?locals_for_with.a11yId:typeof a11yId!==\"undefined\"?a11yId:undefined,\"popupMessage\" in locals_for_with?locals_for_with.popupMessage:typeof popupMessage!==\"undefined\"?popupMessage:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (a11yId, i18n) {var message = i18n.getString('ConversionGoals_Grid_SmartGoal_Popover_Msg')\nvar learnMoreI18n = i18n.getString('ConversionGoals_Grid_SmartGoal_Popover_Learnmore')\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"goal-type-popover\\\"\"+pug.attr(\"id\", a11yId('goal-type-popover'), true, true)) + \"\\u003E\\u003Cdiv class=\\\"goal-type-popover__message\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = message) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E \\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"https:\\u002F\\u002Fhelp.ads.microsoft.com\\u002F#apex\\u002Fads\\u002Fen\\u002F52099\\u002F-1\\\" query=\\\"hlp_BA_CONC_SmartGoals.htm\\\"\"+pug.attr(\"aria-label\", learnMoreI18n, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = learnMoreI18n) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"a11yId\" in locals_for_with?locals_for_with.a11yId:typeof a11yId!==\"undefined\"?a11yId:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (ariaLabel, isForVNext, value) {if (isForVNext) {\npug_html = pug_html + \"\\u003Cspan class=\\\"goals-grid__smart-goal cell-with-popover clickable\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"pull-left goals-grid__smart-goal text-left\\\"\\u003E\" + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"pull-right btn btn-flat goals-grid__smart-goal\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"status_icon clickable\\\"\"+\" type=\\\"button\\\" tabindex=\\\"0\\\"\"+pug.attr(\"aria-label\", ariaLabel, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"ariaLabel\" in locals_for_with?locals_for_with.ariaLabel:typeof ariaLabel!==\"undefined\"?ariaLabel:undefined,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (ariaLabel, goalSuggestionAriaLabel, isAutoGoal, isForVNext, isNonSupportGoal, isReadOnly, name, showGoalSuggestion) {if (showGoalSuggestion && !isAutoGoal && !isNonSupportGoal) {\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"conversion-goals-light-bulb clickable\\\"\"+\" type=\\\"button\\\" tabindex=\\\"0\\\"\"+pug.attr(\"aria-label\", goalSuggestionAriaLabel, true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nif (isForVNext && isAutoGoal) {\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"goals-grid__goal-isAutoGoal clickable\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"aria-label\", ariaLabel, true, true)+\" role=\\\"button\\\" tabindex=\\\"0\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse\nif (isForVNext && !isReadOnly && !isNonSupportGoal) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"edit-goal-link\\\"\"+\" href=\\\"javascript:;\\\"\"+pug.attr(\"aria-label\", ariaLabel, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse\nif (isReadOnly) {\npug_html = pug_html + \"\\u003Cspan class=\\\"goals-grid__goal-readonly cell-with-popover clickable\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse\nif (isNonSupportGoal) {\npug_html = pug_html + \"\\u003Cspan class=\\\"goals-grid__goal-nonsupportGoal cell-with-popover clickable\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp));\n}}.call(this,\"ariaLabel\" in locals_for_with?locals_for_with.ariaLabel:typeof ariaLabel!==\"undefined\"?ariaLabel:undefined,\"goalSuggestionAriaLabel\" in locals_for_with?locals_for_with.goalSuggestionAriaLabel:typeof goalSuggestionAriaLabel!==\"undefined\"?goalSuggestionAriaLabel:undefined,\"isAutoGoal\" in locals_for_with?locals_for_with.isAutoGoal:typeof isAutoGoal!==\"undefined\"?isAutoGoal:undefined,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined,\"isNonSupportGoal\" in locals_for_with?locals_for_with.isNonSupportGoal:typeof isNonSupportGoal!==\"undefined\"?isNonSupportGoal:undefined,\"isReadOnly\" in locals_for_with?locals_for_with.isReadOnly:typeof isReadOnly!==\"undefined\"?isReadOnly:undefined,\"name\" in locals_for_with?locals_for_with.name:typeof name!==\"undefined\"?name:undefined,\"showGoalSuggestion\" in locals_for_with?locals_for_with.showGoalSuggestion:typeof showGoalSuggestion!==\"undefined\"?showGoalSuggestion:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (isForVNext, value) {if (isForVNext) {\npug_html = pug_html + \"\\u003Cspan class=\\\"goals-grid__revenue-detail cell-with-popover clickable\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"pull-left goals-grid__revenue-unassigned text-left\\\"\\u003E\" + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"pull-right btn btn-flat goals-grid__revenue-detail\\\"\\u003E\\u003Cdiv class=\\\"revenue-image status-image status_icon clickable\\\" type=\\\"button\\\" tabindex=\\\"0\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (isReadOnly, s$i18n, value) {var i18nValue = s$i18n.value('Goal', 'Status', value)\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-cell\\\"\\u003E\";\nif (!isReadOnly) {\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"statuschangehover statusicondisplay clickable\\\"\"+\" tabindex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"title\", i18nValue, true, true)+pug.attr(\"aria-label\", i18nValue, true, true)) + \"\\u003E\";\nif (value === 'Removed') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusPaused_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusEnabled_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\nif (value === 'Removed') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusPaused_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusEnabled_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"isReadOnly\" in locals_for_with?locals_for_with.isReadOnly:typeof isReadOnly!==\"undefined\"?isReadOnly:undefined,\"s$i18n\" in locals_for_with?locals_for_with.s$i18n:typeof s$i18n!==\"undefined\"?s$i18n:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (IsUETDashboardEnabled, i18n, value) {pug_html = pug_html + \"\\u003Cdiv class=\\\"goals-grid-tag-id-cell\\\"\\u003E\";\nif (IsUETDashboardEnabled) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"link-tag-id\\\"\"+\" href=\\\"javascript:void(0)\\\"\"+pug.attr(\"id\", 'tagId4Tags_' + value, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = value + ' ') ? \"\" : pug_interp)) + \"\\u003Ca\" + (\" class=\\\"link-tag\\\"\"+\" href=\\\"javascript:void(0)\\\"\"+pug.attr(\"id\", 'tagId4Tags_' + value, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ConversionGoals_Grid_LinkViewTag')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"IsUETDashboardEnabled\" in locals_for_with?locals_for_with.IsUETDashboardEnabled:typeof IsUETDashboardEnabled!==\"undefined\"?IsUETDashboardEnabled:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (isActiveTrackingStatus, isForVNext, s$i18n, value) {var statusText = s$i18n.value('Goal', 'TrackingStatus', value);\nvar statusClass = 'uet-tags-grid__tracking-status--' + (isActiveTrackingStatus(value) ? 'active' : 'inactive');\nif (isForVNext) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"tracking-status\",\"cell-with-popover\",\"uet-tags-grid__tracking-status-detail\",\"clickable\",statusClass], [false,false,false,false,true]), false, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = statusText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"pull-left\",\"uet-tags-grid__tracking-status\",statusClass], [false,false,true]), false, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = statusText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"pull-right btn btn-flat uet-tags-grid__tracking-status-detail\\\"\\u003E\\u003Cdiv class=\\\"status-image status_icon clickable\\\" type=\\\"button\\\" tabindex=\\\"0\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"isActiveTrackingStatus\" in locals_for_with?locals_for_with.isActiveTrackingStatus:typeof isActiveTrackingStatus!==\"undefined\"?isActiveTrackingStatus:undefined,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined,\"s$i18n\" in locals_for_with?locals_for_with.s$i18n:typeof s$i18n!==\"undefined\"?s$i18n:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (a11yId, popupMessage) {pug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"unassigned-category-popover\\\"\"+pug.attr(\"id\", a11yId('unassigned-category-popover'), true, true)) + \"\\u003E\\u003Cdiv class=\\\"unassigned-category-popover__message\\\"\\u003E\" + (pug.escape(null == (pug_interp = popupMessage) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"a11yId\" in locals_for_with?locals_for_with.a11yId:typeof a11yId!==\"undefined\"?a11yId:undefined,\"popupMessage\" in locals_for_with?locals_for_with.popupMessage:typeof popupMessage!==\"undefined\"?popupMessage:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (a11yId, i18n) {pug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"unassigned-revenue-popover\\\"\"+pug.attr(\"id\", a11yId('unassigned-revenue-popover'), true, true)) + \"\\u003E\\u003Cdiv class=\\\"unassigned-revenue-popover__message\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ConversionGoals_Grid_Revenue_Unassigned_Msg_1')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ConversionGoals_Grid_Revenue_Unassigned_Msg_2_bold')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ConversionGoals_Grid_Revenue_Unassigned_Msg_3')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ConversionGoals_Grid_Revenue_Unassigned_Msg_4_bold')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ConversionGoals_Grid_Revenue_Unassigned_Msg_5')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ConversionGoals_Grid_Revenue_Unassigned_Msg_6_bold')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ConversionGoals_Grid_Revenue_Unassigned_Msg_7')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"a11yId\" in locals_for_with?locals_for_with.a11yId:typeof a11yId!==\"undefined\"?a11yId:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (errorRows, hasAcrossAllAccountsOfflineConversionGoal, hasError, hasUploadError, i18n, isNewUI, successRows, totalRows, type) {pug_mixins[\"resultsView\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"upload-results\\\"\\u003E\\u003Cdiv class=\\\"upload-result-row\\\"\\u003E\\u003Cdiv class=\\\"status_success spritedimagealign\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"result-row\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_HistoryGrid_ChangesCount', { count: totalRows })) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"upload-result-row\\\"\\u003E\\u003Cdiv class=\\\"status_success spritedimagealign\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"result-row\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_HistoryGrid_SuccessCount', { count: successRows })) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"upload-result-row\\\"\\u003E\\u003Cdiv class=\\\"status_error spritedimagealign\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"result-row\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_HistoryGrid_ErrorCount', { count: errorRows })) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"changeview\\\"\\u003E\";\nif (type === 'preview') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Ch3 class=\\\"type-bold panel-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Import_ImportPreview_TableTitle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh3\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\";\nif (isNewUI) {\npug_mixins[\"resultsView\"]();\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"bingadsgrid preview-grid\\\"\\u003E\\u003Cdiv class=\\\"grid-table\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (hasError) {\npug_html = pug_html + \"\\u003Ca class=\\\"link-errors\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_DownloadErrorsOnly_Button')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"row action-bar\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cbutton class=\\\"btn btn-primary btn-apply\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_ApplyChanges_Button')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"btn btn-default btn-discard\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_Discard_Button')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (type === 'scheduled-preview') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Ch3 class=\\\"type-bold panel-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Import_ImportPreview_TableTitle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh3\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\";\nif (isNewUI) {\npug_mixins[\"resultsView\"]();\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"bingadsgrid preview-grid\\\"\\u003E\\u003Cdiv class=\\\"grid-table\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row action-bar\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\";\nif (!hasUploadError) {\npug_html = pug_html + \"\\u003Cbutton class=\\\"btn btn-primary btn-results\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_DownloadAllResults_Button')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\nif (hasError) {\npug_html = pug_html + \"\\u003Cbutton class=\\\"btn btn-default btn-errors\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_DownloadErrorsOnly_Button')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\n}\n}\npug_html = pug_html + \"\\u003Cbutton class=\\\"btn btn-default btn-close\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_Close_Button')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (type === 'review') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Ch3 class=\\\"type-bold panel-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_ChangesViewTitle_AppliedChanges')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh3\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\";\nif (isNewUI) {\npug_mixins[\"resultsView\"]();\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"bingadsgrid changes-grid\\\"\\u003E\\u003Cdiv class=\\\"grid-table\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (hasAcrossAllAccountsOfflineConversionGoal) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Ch4\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_OfflineConversionGoalCurrencyCustomScope')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh4\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"row action-bar\\\"\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cbutton class=\\\"btn btn-primary btn-results\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_DownloadAllResults_Button')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\nif (hasError) {\npug_html = pug_html + \"\\u003Cbutton class=\\\"btn btn-default btn-errors\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_DownloadErrorsOnly_Button')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbutton class=\\\"btn btn-default btn-close\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_UploadConversions_Close_Button')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"errorRows\" in locals_for_with?locals_for_with.errorRows:typeof errorRows!==\"undefined\"?errorRows:undefined,\"hasAcrossAllAccountsOfflineConversionGoal\" in locals_for_with?locals_for_with.hasAcrossAllAccountsOfflineConversionGoal:typeof hasAcrossAllAccountsOfflineConversionGoal!==\"undefined\"?hasAcrossAllAccountsOfflineConversionGoal:undefined,\"hasError\" in locals_for_with?locals_for_with.hasError:typeof hasError!==\"undefined\"?hasError:undefined,\"hasUploadError\" in locals_for_with?locals_for_with.hasUploadError:typeof hasUploadError!==\"undefined\"?hasUploadError:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isNewUI\" in locals_for_with?locals_for_with.isNewUI:typeof isNewUI!==\"undefined\"?isNewUI:undefined,\"successRows\" in locals_for_with?locals_for_with.successRows:typeof successRows!==\"undefined\"?successRows:undefined,\"totalRows\" in locals_for_with?locals_for_with.totalRows:typeof totalRows!==\"undefined\"?totalRows:undefined,\"type\" in locals_for_with?locals_for_with.type:typeof type!==\"undefined\"?type:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (value) {if (value.isPending) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-content-container\\\"\\u003E\\u003Cdiv class=\\\"action_pending\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.i18n.getString('UnifiedEventTracking_UploadConversions_PendingText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (value.shouldDisable) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"results\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (value.hasError) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"results-row\\\"\\u003E\\u003Ca\" + (\" class=\\\"btn-results\\\"\"+pug.attr(\"data-id\", value.resultsId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value.i18n.getString('UnifiedEventTracking_UploadConversions_DownloadAll_Button')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Ca\" + (\" class=\\\"btn-errors\\\"\"+pug.attr(\"data-id\", value.errorsId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value.i18n.getString('UnifiedEventTracking_UploadConversions_DownloadErrors_Button')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"btn-results\\\"\"+pug.attr(\"data-id\", value.resultsId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value.i18n.getString('UnifiedEventTracking_UploadConversions_DownloadResults_Button')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}}.call(this,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (value) {pug_html = pug_html + \"\\u003Cdiv class=\\\"grid-content-container\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.datetime) ? \"\" : pug_interp)) + \"\\u003Cbr\\u003E\" + (pug.escape(null == (pug_interp = value.user) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (value) {if (value.isPending) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"information-popup-container\\\"\\u003E\\u003Cdiv class=\\\"status-row\\\"\\u003E\\u003Cdiv class=\\\"mark-container\\\"\\u003E\\u003Cdiv class=\\\"status-icon\\\"\\u003E\\u003Cdiv class=\\\"status_pending spritedimagealign\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"decorated-element\\\"\\u003E\\u003Cdiv class=\\\"status-column\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.i18n.getString('UnifiedEventTracking_UploadConversions_HistoryGrid_Processing')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (!value.isCompleted) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-content-container\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.status) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"information-popup-container\\\"\\u003E\\u003Cdiv class=\\\"status-row\\\"\\u003E\\u003Cdiv class=\\\"mark-container\\\"\\u003E\\u003Cdiv class=\\\"status-icon\\\"\\u003E\\u003Cdiv class=\\\"status_success spritedimagealign\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"decorated-element\\\"\\u003E\\u003Cdiv class=\\\"status-column\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.i18n.getString('UnifiedEventTracking_UploadConversions_HistoryGrid_SuccessCount', { count: value.successCount })) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (value.errorCount > 0) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"status-row\\\"\\u003E\\u003Cdiv class=\\\"mark-container\\\"\\u003E\\u003Cdiv class=\\\"status-icon\\\"\\u003E\\u003Cdiv class=\\\"status_error spritedimagealign\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"decorated-element\\\"\\u003E\\u003Cdiv class=\\\"status-column\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.i18n.getString('UnifiedEventTracking_UploadConversions_HistoryGrid_ErrorCount', { count: value.errorCount })) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (value) {if (value.shouldDisable) {\npug_html = pug_html + \"\\u003Cspan class=\\\"inactive-grey-bg\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"btn-file clickable\\\"\"+pug.attr(\"data-id\", value.identifier, true, true)+\" tabindex=\\\"0\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = value.name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}}.call(this,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv class=\\\"history-grid bingadsgrid\\\"\\u003E\\u003Cdiv class=\\\"grid-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-noresult grid-nodata-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (Object, i18n, value) {pug_html = pug_html + \"\\u003Cdiv\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UETTags_Event_Grid_ParametersPopupMessage')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cbr\\u003E\";\n// iterate Object.keys(value)\n;(function(){\n var $$obj = Object.keys(value);\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var key = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv\\u003E\" + (pug.escape(null == (pug_interp = key + ': ' + value[key]) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var key = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv\\u003E\" + (pug.escape(null == (pug_interp = key + ': ' + value[key]) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n}.call(this,\"Object\" in locals_for_with?locals_for_with.Object:typeof Object!==\"undefined\"?Object:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, val) {if (val !== '-')\n{\nlet vals = val.split(',')\nif (vals.length > 2)\n{\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = vals[0]) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' and ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"uet-tags-test-table__parameters-tag\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = `${vals.length - 1}`) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"uet-tags-test-table__parameters-tag\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UETTags_Event_Grid_ColumnOthers')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse if (vals.length === 2)\n{\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = vals[0]) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' and ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"uet-tags-test-table__parameters-tag\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = `${vals.length - 1}`) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"uet-tags-test-table__parameters-tag\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UETTags_Event_Grid_ColumnOther')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse\n{\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = val) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\n}}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"val\" in locals_for_with?locals_for_with.val:typeof val!==\"undefined\"?val:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_html = pug_html + \"\\u003Ca class=\\\"uet-tags-dashboard-grid__data-view-tag\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UETTags_Event_Grid_ColumnExportData')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, value) {pug_html = pug_html + \"\\u003Cdiv\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UETTags_Event_Grid_ParametersPopupMessage')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cbr\\u003E\";\n// iterate value\n;(function(){\n var $$obj = value;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var val = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv\\u003E\" + (pug.escape(null == (pug_interp = val) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var val = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv\\u003E\" + (pug.escape(null == (pug_interp = val) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, value) {if (value.length > 2) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = value[0]) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' and ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"uet-tags-dashboard-grid__parameters-tag\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.length-1) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"uet-tags-dashboard-grid__parameters-tag\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UETTags_Event_Grid_ColumnOthers')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse\nif (value.length === 2) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = value[0]) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' and ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"uet-tags-dashboard-grid__parameters-tag\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = value.length-1) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"uet-tags-dashboard-grid__parameters-tag\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UETTags_Event_Grid_ColumnOther')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse\nif (value.length === 1) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = value[0]) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = '-') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"form-label-container col-sm-4\\\"\\u003E\\u003Clabel class=\\\"control-label\\\" id=\\\"Form-SharedLibrary-Tag-Sharing-Label\\\" for=\\\"Form-SharedLibrary-Tag-Sharing\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('SharedLibrary_Scope_Label_Sharing')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"helpbutton\\\" type=\\\"helppopup\\\" topic=\\\"pop_BA_UET_Hierarchies_Sharing\\\" href=\\\"javascript:void(0)\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"manageRemarketingListContainer\\\" id=\\\"Form-SharedLibrary-Tag-Sharing\\\" aria-labelledby=\\\"Form-SharedLibrary-Tag-Sharing-Label\\\" aria-required=\\\"false\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, isEdit) {pug_html = pug_html + \"\\u003Cdiv class=\\\"panel uet-tags-grid__tag-creator\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (isEdit) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_Tags_EditTagPanelTitle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_Tags_CreateTagPanelTitle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-body uet-tags__form-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\"\\u003E\\u003Cbutton class=\\\"btn btn-primary btn-tag-create-save\\\" type=\\\"button\\\" data-analyticsid=\\\"omniture-UET-create-tag-save\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_Create')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"btn btn-default btn-tag-create-cancel\\\" type=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UnifiedEventTracking_Cancel')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isEdit\" in locals_for_with?locals_for_with.isEdit:typeof isEdit!==\"undefined\"?isEdit:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, manageScopePermission) {pug_html = pug_html + \"\\u003Ca class=\\\"uet-tags-grid__action-view-tag\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UETTags_Grid_LinkViewTag')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\nif (manageScopePermission) {\npug_html = pug_html + \"\\u003Ca class=\\\"uet-tags-grid__action-manage-sharing-scope\\\" href=\\\"javascript:void(0)\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UETTags_Grid_ManageScope_Action')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"manageScopePermission\" in locals_for_with?locals_for_with.manageScopePermission:typeof manageScopePermission!==\"undefined\"?manageScopePermission:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (ariaLabel, disabled, value) {if (disabled) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"uet-tags-grid__link-audience\\\"\"+\" href=\\\"javascript:void(0)\\\"\"+pug.attr(\"aria-label\", ariaLabel, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}}.call(this,\"ariaLabel\" in locals_for_with?locals_for_with.ariaLabel:typeof ariaLabel!==\"undefined\"?ariaLabel:undefined,\"disabled\" in locals_for_with?locals_for_with.disabled:typeof disabled!==\"undefined\"?disabled:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (className, isForVNext, text) {if (isForVNext) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"cell-with-popover\",\"clickable\",className + '-detail'], [false,false,true]), false, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"status_icon\",\"clickable\",\"gridDetailsImage\",className + '-detail'], [false,false,false,true]), false, true)+\" type=\\\"button\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}}.call(this,\"className\" in locals_for_with?locals_for_with.className:typeof className!==\"undefined\"?className:undefined,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined,\"text\" in locals_for_with?locals_for_with.text:typeof text!==\"undefined\"?text:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (ariaLabel, disabled, value) {if (disabled) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"uet-tags-grid__link-goals\\\"\"+\" href=\\\"javascript:void(0)\\\"\"+pug.attr(\"aria-label\", ariaLabel, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}}.call(this,\"ariaLabel\" in locals_for_with?locals_for_with.ariaLabel:typeof ariaLabel!==\"undefined\"?ariaLabel:undefined,\"disabled\" in locals_for_with?locals_for_with.disabled:typeof disabled!==\"undefined\"?disabled:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (IsUETDashboardPhase2Enabled, ariaLabel, isEditable, isReadOnly, name) {if (isEditable && !isReadOnly) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"edit-tag-link\\\"\"+\" href=\\\"javascript:;\\\"\"+pug.attr(\"aria-label\", ariaLabel, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\nif (IsUETDashboardPhase2Enabled) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"pull-right span edit-tag-btn\\\"\\u003E\\u003Ci class=\\\"glyphicon glyphicon-pencil\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}\nelse\nif (isReadOnly) {\npug_html = pug_html + \"\\u003Cspan class=\\\"tag-grid__tag-readonly cell-with-popover clickable\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp));\n}}.call(this,\"IsUETDashboardPhase2Enabled\" in locals_for_with?locals_for_with.IsUETDashboardPhase2Enabled:typeof IsUETDashboardPhase2Enabled!==\"undefined\"?IsUETDashboardPhase2Enabled:undefined,\"ariaLabel\" in locals_for_with?locals_for_with.ariaLabel:typeof ariaLabel!==\"undefined\"?ariaLabel:undefined,\"isEditable\" in locals_for_with?locals_for_with.isEditable:typeof isEditable!==\"undefined\"?isEditable:undefined,\"isReadOnly\" in locals_for_with?locals_for_with.isReadOnly:typeof isReadOnly!==\"undefined\"?isReadOnly:undefined,\"name\" in locals_for_with?locals_for_with.name:typeof name!==\"undefined\"?name:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (IsUETDashboardEnabled, value) {pug_html = pug_html + \"\\u003Cdiv class=\\\"grid-tag-id-cell\\\"\\u003E\";\nif (IsUETDashboardEnabled) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"link-tag-id\\\"\"+\" href=\\\"javascript:void(0)\\\"\"+pug.attr(\"id\", 'tagId4Tags_' + value, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"IsUETDashboardEnabled\" in locals_for_with?locals_for_with.IsUETDashboardEnabled:typeof IsUETDashboardEnabled!==\"undefined\"?IsUETDashboardEnabled:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (a11yId, popupMessage) {pug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"tag-read-only-popover\\\"\"+pug.attr(\"id\", a11yId('tag-read-only-popover'), true, true)) + \"\\u003E\\u003Cdiv class=\\\"tag-read-only-popover__message\\\"\\u003E\" + (pug.escape(null == (pug_interp = popupMessage) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"a11yId\" in locals_for_with?locals_for_with.a11yId:typeof a11yId!==\"undefined\"?a11yId:undefined,\"popupMessage\" in locals_for_with?locals_for_with.popupMessage:typeof popupMessage!==\"undefined\"?popupMessage:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (isActiveTrackingStatus, isForVNext, s$i18n, value) {var statusText = s$i18n.value('Tag', 'TrackingStatus', value);\nvar statusClass = 'uet-tags-grid__tracking-status--' + (isActiveTrackingStatus(value) ? 'active' : 'inactive');\nif (isForVNext) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"tracking-status\",\"cell-with-popover\",\"uet-tags-grid__tracking-status-detail\",\"clickable\",statusClass], [false,false,false,false,true]), false, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = statusText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"pull-left\",\"uet-tags-grid__tracking-status\",statusClass], [false,false,true]), false, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = statusText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"pull-right btn btn-flat uet-tags-grid__tracking-status-detail\\\"\\u003E\\u003Cdiv class=\\\"status-image status_icon clickable\\\" type=\\\"button\\\" tabindex=\\\"0\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"isActiveTrackingStatus\" in locals_for_with?locals_for_with.isActiveTrackingStatus:typeof isActiveTrackingStatus!==\"undefined\"?isActiveTrackingStatus:undefined,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined,\"s$i18n\" in locals_for_with?locals_for_with.s$i18n:typeof s$i18n!==\"undefined\"?s$i18n:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, i18nGlobal, isForVNext, showSaveAndCreateAnother) {pug_mixins[\"koErrors\"] = pug_interp = function(id, cssClass){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"class\", pug.classes([cssClass ? cssClass : 'alert alert-danger'], [true]), false, true)+\" data-bind=\\\"visible: errors().length > 0, foreach: errors, attr: {"aria-hidden": errors().length == 0}\\\"\"+pug.attr(\"id\", id ? id : 'KoErrors', true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Cdiv data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-horizontal\\\"\\u003E\\u003Cdiv data-bind=\\\"attr:{class: containerClass}\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" data-bind=\\\"text: adEditorTitle\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body-ad\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"visible: errors().length > 0\\\"\\u003E\";\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"visible: showAdGroups\\\"\\u003E\\u003Clabel class=\\\"col-sm-2 control-label\\\" data-bind=\\\"attr: {id:selectorLabelId}\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18nGlobal.get('CampaignAdGroupSelector_SelectAdGroup')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-4 adgroup-selector\\\"\\u003E\";\nif (!isForVNext) {\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"campaignAdgroupSelectorControl: selectedCampaigns, adgroupObservable: selectedAdgroups, scope: scopeContext, showAdgroupSelector: showAdGroups, selectorLabelId:selectorLabelId\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"ad-panel\\\" data-bind=\\\"visible: showEditor() && allowAdCreation()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"p\\\" data-bind=\\\"visible: showEditor() && !allowAdCreation()\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Ad_Cannot_Create_Ad_For_This_campaign')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer save-bar appEditor-save-container\\\" data-bind=\\\"visible: !isDisplayAdWithCopilot() && !isXandrVideoAd() && !isMultiAdFormatDisplayAd() && !isMultiAdFormatVideoAd() && !hideFooter()\\\"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-primary save\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18nGlobal.get('Button_Save'), true, true)+\" data-bind=\\\"enable: showEditor() && allowAdCreation() && hasWebsiteImageOptedIn(), attr: { "data-analyticsid": saveAnalyticsId() }\\\"\") + \"\\u003E\";\nif (showSaveAndCreateAnother) {\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"save-create-another btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.get('Ad_SaveCreate'), true, true)+\" data-bind=\\\"visible: !hideSaveAndCreateAnother(), enable: showEditor() && allowAdCreation() && hasWebsiteImageOptedIn(), attr: { "data-analyticsid": saveCreateAnalyticsId() }\\\"\") + \"\\u003E\";\n}\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"btn btn-default cancel\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18nGlobal.get('Button_Cancel'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"i18nGlobal\" in locals_for_with?locals_for_with.i18nGlobal:typeof i18nGlobal!==\"undefined\"?i18nGlobal:undefined,\"isForVNext\" in locals_for_with?locals_for_with.isForVNext:typeof isForVNext!==\"undefined\"?isForVNext:undefined,\"showSaveAndCreateAnother\" in locals_for_with?locals_for_with.showSaveAndCreateAnother:typeof showSaveAndCreateAnother!==\"undefined\"?showSaveAndCreateAnother:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;\n\n\n\npug_html = pug_html + \"\\u003Cdiv class=\\\"add-keywords-root\\\"\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4\\\"\\u003E\\u003Cdiv class=\\\"parser\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-1\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-7\\\" data-bind=\\\"visible: isKeywordPlannerEnabled()\\\"\\u003E\\u003Cdiv class=\\\"keyword-planner-inline\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (associationType, isUINext) {pug_html = pug_html + \"\\u003Cdiv class=\\\"bingadsgrid adextensions-grid\\\"\\u003E\\u003Cdiv railviewid=\\\"AdExtensions_Load\\\" style=\\\"display: none\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([associationType + '__container'], [true]), false, true)) + \"\\u003E\\u003Cdiv class=\\\"grid-toolbar-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"filter-bar\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"editor__container bulkedit-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Cdiv class=\\\"grid-table\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-pagination-control\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"noresult-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"filter-noresult-container\\\" style=\\\"display:none\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (!isUINext) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"pager\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"associationType\" in locals_for_with?locals_for_with.associationType:typeof associationType!==\"undefined\"?associationType:undefined,\"isUINext\" in locals_for_with?locals_for_with.isUINext:typeof isUINext!==\"undefined\"?isUINext:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv class=\\\"btn-toolbar\\\" data-bind=\\\"visible: !hideToolbar()\\\"\\u003E\\u003Cdiv class=\\\"btn-group chartToggle\\\" data-bind=\\\"visible: !hideToggleIcon()\\\"\\u003E\\u003Cbutton class=\\\"btn btn-square\\\" id=\\\"bi-chartToggle\\\" type=\\\"button\\\" title=\\\"Show graph\\\" data-bind=\\\"click: onShowChartButtonClick\\\"\\u003E\\u003Cdiv class=\\\"chart-icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"chart-container\\\" data-bind=\\\"visible: showChart()\\\" chart-iteration=\\\"0\\\"\\u003E\\u003Ctable class=\\\"cbTable\\\" id=\\\"chartTable\\\" data-bind=\\\"visible: !isChartLoading()\\\"\\u003E\\u003Ctbody\\u003E\\u003Ctr\\u003E\\u003Ctd class=\\\"chartDropdowns\\\" id=\\\"chartDropdowns\\\" colspan=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"chart_ctc_title chart_biz\\\"\\u003E\\u003Cspan id=\\\"chartTitle\\\" data-bind=\\\"text: chartTitle\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"helpbutton chart_viz\\\" id=\\\"chart-helpicon\\\" data-bind=\\\"attr: { 'aria-label': learnMoreLabel}\\\" type=\\\"helppopup\\\" topic=\\\"Page_Campaigns_AccountPerformance\\\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\" aria-labelledby=\\\"chart-helpicon chartTitle\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cdiv class=\\\"inline-block metricVsSpan\\\" data-bind=\\\"visible: (isPopOn() || isMovingAverageOn()) && isComparisonDataMissing()\\\"\\u003E\\u003Cspan data-bind=\\\"comparisonDataMissingText()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"dropdown-inline inline-block\\\"\\u003E\\u003Cdiv id=\\\"bi_ctc_dropdowns\\\"\\u003E\\u003Cspan class=\\\"metricColorLine primary-line\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"metricColorLine primary-comparison-line\\\" data-bind=\\\"visible: isPopOn()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"dropdown-container\\\" id=\\\"main-primary-dropdown\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"metricVsSpan\\\"\\u003Evs\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"metricColorLine secondary-line\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"metricColorLine secondary-comparison-line\\\" data-bind=\\\"visible: isPopOn()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"dropdown-container\\\" id=\\\"main-secondary-dropdown\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"dropdown-container\\\" id=\\\"granularity-dropdown-container\\\" data-bind=\\\"visible: isGranularityShowing()\\\"\\u003E\\u003Cdiv class=\\\"dropdown-container\\\" id=\\\"granularity-dropdown\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"inline-block\\\" id=\\\"bi-moving-average\\\" data-bind=\\\"visible: isMovingAverageVisible()\\\"\\u003E\\u003Cinput class=\\\"ma-checkbox\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: isMovingAverageOn(), click: onMovingAverageClick, attr: {'aria-label': showMovingAverageText, 'aria-checked': isMovingAverageOn() ? 'true' : 'false'}\\\"\\u003E\\u003Cspan id=\\\"ShowMovingAverageLabel\\\" data-bind=\\\"text: showMovingAverageText\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"helpbutton\\\" id=\\\"chart-helpicon-PMA\\\" type=\\\"helppopup\\\" topic=\\\"pop_BA_PerformanceMovingAverage\\\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\" aria-labelledby=\\\"chart-helpicon-PMA ShowMovingAverageLabel\\\" data-bind=\\\"attr: { 'aria-label': learnMoreLabel}\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003Ctr id=\\\"chartMainArea\\\"\\u003E\\u003Ctd class=\\\"chartTableColumn1\\\" data-bind=\\\"visible: isDataAvailable()\\\"\\u003E\\u003Cdiv id=\\\"highcharts-container\\\" style=\\\"height: 105px;\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv id=\\\"charts-label\\\"\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-md-4\\\"\\u003E\\u003Cspan class=\\\"xAxisLabelLeft primary-date\\\" data-bind=\\\"text: xAxisStartValue()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-md-4 col-md-offset-4\\\"\\u003E\\u003Cspan class=\\\"xAxisLabelRight primary-date\\\" data-bind=\\\"text: xAxisEndValue()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\" data-bind=\\\"if: isPopOn()\\\"\\u003E\\u003Cdiv class=\\\"col-md-4\\\"\\u003E\\u003Cspan class=\\\"xAxisLabelLeft compared-date\\\" data-bind=\\\"text: comparedXAxisStartValue()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-md-4 col-md-offset-4\\\"\\u003E\\u003Cspan class=\\\"xAxisLabelRight compared-date\\\" data-bind=\\\"text: comparedXAxisEndValue()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003Cdiv class=\\\"spinner\\\" data-bind=\\\"visible: isChartLoading()\\\"\\u003E\\u003Cdiv class=\\\"spinner-icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"chart-no-data-container\\\" data-bind=\\\"visible: !isChartLoading() && !isDataAvailable()\\\"\\u003E\\u003Cdiv class=\\\"chart-no-data-label\\\"\\u003E\\u003Cspan data-bind=\\\"html: noDataText()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (AccountNumber, EmailAddress) {pug_html = pug_html + \"\\u003Cp\\u003E\" + (pug.escape(null == (pug_interp = EmailAddress) ? \"\" : pug_interp)) + \"\\u003Cbr\\u003E\" + (pug.escape(null == (pug_interp = AccountNumber) ? \"\" : pug_interp)) + \"\\u003C\\u002Fp\\u003E\";}.call(this,\"AccountNumber\" in locals_for_with?locals_for_with.AccountNumber:typeof AccountNumber!==\"undefined\"?AccountNumber:undefined,\"EmailAddress\" in locals_for_with?locals_for_with.EmailAddress:typeof EmailAddress!==\"undefined\"?EmailAddress:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (id) {pug_html = pug_html + \"\\u003Cp\\u003E\" + (pug.escape(null == (pug_interp = id) ? \"\" : pug_interp)) + \"\\u003C\\u002Fp\\u003E\";}.call(this,\"id\" in locals_for_with?locals_for_with.id:typeof id!==\"undefined\"?id:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (errorDetailsLabel, hasError, hasErrorCode, hasErrorSummary, hasPreview, i18n) {pug_html = pug_html + \"\\u003Cdiv class=\\\"status-row\\\"\\u003E\";\nif (hasError) {\npug_html = pug_html + \"\\u003Ca class=\\\"download-error\\\" role=\\\"button\\\" tabindex=\\\"0\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_LastImport_DownloadErrorFile')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\nif (hasErrorSummary) {\npug_html = pug_html + \"\\u003Cspan\\u003E  |  \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"download-error-summary\\\" role=\\\"button\\\" tabindex=\\\"0\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_LastImport_DownloadErrorSummaryFile')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\n}\nelse\nif (hasPreview) {\npug_html = pug_html + \"\\u003Ca class=\\\"btn__preview\\\" role=\\\"button\\\" tabindex=\\\"0\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('CampaignImport_ButtonPreview')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan\\u003E | \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"btn__cancel\\\" role=\\\"button\\\" tabindex=\\\"0\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('CampaignImport_ButtonCancel')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse\nif (hasErrorCode) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"import-actions learn-more\\\"\"+\" role=\\\"button\\\" tabindex=\\\"0\\\" href=\\\"javascript:void(0);\\\" data-toggle=\\\"tooltip\\\" data-trigger=\\\"manual\\\" data-placement=\\\"left\\\"\"+pug.attr(\"aria-label\", errorDetailsLabel, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Scheduled_Import_History_Actions_LearnMore')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_LastImport_Dash')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"errorDetailsLabel\" in locals_for_with?locals_for_with.errorDetailsLabel:typeof errorDetailsLabel!==\"undefined\"?errorDetailsLabel:undefined,\"hasError\" in locals_for_with?locals_for_with.hasError:typeof hasError!==\"undefined\"?hasError:undefined,\"hasErrorCode\" in locals_for_with?locals_for_with.hasErrorCode:typeof hasErrorCode!==\"undefined\"?hasErrorCode:undefined,\"hasErrorSummary\" in locals_for_with?locals_for_with.hasErrorSummary:typeof hasErrorSummary!==\"undefined\"?hasErrorSummary:undefined,\"hasPreview\" in locals_for_with?locals_for_with.hasPreview:typeof hasPreview!==\"undefined\"?hasPreview:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (noAmazonImportMsg, noFacebookImportMsg, noFileImportMsg, noGoogleImportMsg, noPinterestImportMsg) {pug_html = pug_html + \"\\u003Cdiv class=\\\"section-item form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"log-toolbar\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"all-log-grids bingadsgrid importLogGrid\\\"\\u003E\\u003Cdiv class=\\\"grid-table bulk-status-grid googleImportLogGrid\\\" data-bind=\\\"visible: showGoogleImportGrid()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-table bulk-status-grid facebookImportLogGrid\\\" data-bind=\\\"visible: showFacebookImportGrid()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-table bulk-status-grid amazonImportLogGrid\\\" data-bind=\\\"visible: showAmazonImportGrid()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-table bulk-status-grid pinterestImportLogGrid\\\" data-bind=\\\"visible: showPinterestImportGrid()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-table bulk-status-grid fileImportLogGrid\\\" data-bind=\\\"visible: !showGoogleImportGrid() && !showFacebookImportGrid() && !showAmazonImportGrid() && !showPinterestImportGrid()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-nodata-container\\\" data-bind=\\\"style: { display: showNoGoogleImportMsg() || showNoFileImportMsg() || showNoFacebookImportMsg() || showNoAmazonImportMsg() || showNoPinterestImportMsg() ? "inline" : "none" }\\\"\\u003E\\u003Cdiv class=\\\"grid-nodata-more\\\" data-bind=\\\"visible: showNoGoogleImportMsg\\\"\\u003E\" + (pug.escape(null == (pug_interp = noGoogleImportMsg) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-nodata-more\\\" data-bind=\\\"visible: showNoFileImportMsg\\\"\\u003E\" + (pug.escape(null == (pug_interp = noFileImportMsg) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-nodata-more\\\" data-bind=\\\"visible: showNoFacebookImportMsg\\\"\\u003E\" + (pug.escape(null == (pug_interp = noFacebookImportMsg) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-nodata-more\\\" data-bind=\\\"visible: showNoAmazonImportMsg\\\"\\u003E\" + (pug.escape(null == (pug_interp = noAmazonImportMsg) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-nodata-more\\\" data-bind=\\\"visible: showNoPinterestImportMsg\\\"\\u003E\" + (pug.escape(null == (pug_interp = noPinterestImportMsg) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"page-control\\\"\\u003E\\u003Cdiv class=\\\"google-pager-container\\\" data-bind=\\\"visible: showGoogleImportGrid()\\\"\\u003E\\u003Cdiv class=\\\"google-log-pager\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"facebook-pager-container\\\" data-bind=\\\"visible: showFacebookImportGrid()\\\"\\u003E\\u003Cdiv class=\\\"facebook-log-pager\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"amazon-pager-container\\\" data-bind=\\\"visible:showAmazonImportGrid()\\\"\\u003E\\u003Cdiv class=\\\"amazon-log-pager\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"pinterest-pager-container\\\" data-bind=\\\"visible:showPinterestImportGrid()\\\"\\u003E\\u003Cdiv class=\\\"pinterest-log-pager\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"file-pager-container\\\" data-bind=\\\"visible: !isFirstSwitch() && !showGoogleImportGrid() && !showFacebookImportGrid() && !showAmazonImportGrid() && !showPinterestImportGrid()\\\"\\u003E\\u003Cdiv class=\\\"file-log-pager\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"noAmazonImportMsg\" in locals_for_with?locals_for_with.noAmazonImportMsg:typeof noAmazonImportMsg!==\"undefined\"?noAmazonImportMsg:undefined,\"noFacebookImportMsg\" in locals_for_with?locals_for_with.noFacebookImportMsg:typeof noFacebookImportMsg!==\"undefined\"?noFacebookImportMsg:undefined,\"noFileImportMsg\" in locals_for_with?locals_for_with.noFileImportMsg:typeof noFileImportMsg!==\"undefined\"?noFileImportMsg:undefined,\"noGoogleImportMsg\" in locals_for_with?locals_for_with.noGoogleImportMsg:typeof noGoogleImportMsg!==\"undefined\"?noGoogleImportMsg:undefined,\"noPinterestImportMsg\" in locals_for_with?locals_for_with.noPinterestImportMsg:typeof noPinterestImportMsg!==\"undefined\"?noPinterestImportMsg:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (mode) {pug_html = pug_html + \"\\u003Cp\\u003E\" + (pug.escape(null == (pug_interp = mode) ? \"\" : pug_interp)) + \"\\u003C\\u002Fp\\u003E\";}.call(this,\"mode\" in locals_for_with?locals_for_with.mode:typeof mode!==\"undefined\"?mode:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (noAmazonImportMsg, noFacebookImportMsg, noFilteredImportMsg, noGoogleImportMsg, noImportMsgHeader, noPinterestImportMsg) {pug_html = pug_html + \"\\u003Cdiv class=\\\"section-item form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"history-toolbar\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-table importHistoryGrid bingadsgrid\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-nodata-container\\\" data-bind=\\\"style: { display: showNoGoogleImportMsg() || showNoFacebookImportMsg() || showNoFilteredImportMsg() || showNoAmazonImportMsg() || showNoPinterestImportMsg() ? "inline" : "none" }\\\"\\u003E\\u003Cdiv class=\\\"grid-nodata\\\" data-bind=\\\"visible: showNoGoogleImportMsg() || showNoFacebookImportMsg() || showNoAmazonImportMsg() || showNoPinterestImportMsg()\\\"\\u003E\" + (pug.escape(null == (pug_interp = noImportMsgHeader) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-nodata-more\\\" data-bind=\\\"visible: showNoGoogleImportMsg\\\"\\u003E\" + (pug.escape(null == (pug_interp = noGoogleImportMsg) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-nodata-more\\\" data-bind=\\\"visible: showNoFacebookImportMsg\\\"\\u003E\" + (pug.escape(null == (pug_interp = noFacebookImportMsg) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-nodata-more\\\" data-bind=\\\"visible: showNoAmazonImportMsg\\\"\\u003E\" + (pug.escape(null == (pug_interp = noAmazonImportMsg) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-nodata-more\\\" data-bind=\\\"visible: showNoPinterestImportMsg\\\"\\u003E\" + (pug.escape(null == (pug_interp = noPinterestImportMsg) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-nodata-more\\\" data-bind=\\\"visible: showNoFilteredImportMsg\\\"\\u003E\" + (pug.escape(null == (pug_interp = noFilteredImportMsg) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"page-control\\\"\\u003E\\u003Cdiv class=\\\"history-pager\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv id=\\\"history-edit-panel\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"noAmazonImportMsg\" in locals_for_with?locals_for_with.noAmazonImportMsg:typeof noAmazonImportMsg!==\"undefined\"?noAmazonImportMsg:undefined,\"noFacebookImportMsg\" in locals_for_with?locals_for_with.noFacebookImportMsg:typeof noFacebookImportMsg!==\"undefined\"?noFacebookImportMsg:undefined,\"noFilteredImportMsg\" in locals_for_with?locals_for_with.noFilteredImportMsg:typeof noFilteredImportMsg!==\"undefined\"?noFilteredImportMsg:undefined,\"noGoogleImportMsg\" in locals_for_with?locals_for_with.noGoogleImportMsg:typeof noGoogleImportMsg!==\"undefined\"?noGoogleImportMsg:undefined,\"noImportMsgHeader\" in locals_for_with?locals_for_with.noImportMsgHeader:typeof noImportMsgHeader!==\"undefined\"?noImportMsgHeader:undefined,\"noPinterestImportMsg\" in locals_for_with?locals_for_with.noPinterestImportMsg:typeof noPinterestImportMsg!==\"undefined\"?noPinterestImportMsg:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (Name) {pug_html = pug_html + \"\\u003Cp class=\\\"truncated\\\"\\u003E\" + (pug.escape(null == (pug_interp = Name) ? \"\" : pug_interp)) + \"\\u003Cbr\\u003E\\u003C\\u002Fp\\u003E\";}.call(this,\"Name\" in locals_for_with?locals_for_with.Name:typeof Name!==\"undefined\"?Name:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (Status, i18n) {var statusIconLabel\nif (i18n) {\nswitch (Status){\ncase 'Deleted':\nstatusIconLabel = i18n.getString('EntityStatus_Deleted')\n break;\ncase 'Paused':\nstatusIconLabel = i18n.getString('EntityStatus_Paused')\n break;\ndefault:\nstatusIconLabel = i18n.getString('EntityStatus_Active')\n break;\n}\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-cell\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"statusicondisplay\\\"\"+pug.attr(\"aria-label\", statusIconLabel, true, true)) + \"\\u003E\";\nif (Status === 'Paused') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusPaused_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (Status === 'Deleted') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusDeleted_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusEnabled_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"Status\" in locals_for_with?locals_for_with.Status:typeof Status!==\"undefined\"?Status:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, importSettingsLabel, settingsText, showSmartType, showTooltipIcon) {pug_html = pug_html + \"\\u003Cdiv class=\\\"information-popup-container\\\"\\u003E\\u003Cdiv class=\\\"status-row\\\"\\u003E\";\nif (showSmartType) {\npug_html = pug_html + (pug.escape(null == (pug_interp = i18n.get('Scheduled_Import_Smart_Type_In_Settings')) ? \"\" : pug_interp)) + \"\\u003Cbr\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"settingsText\\\"\\u003E\" + (pug.escape(null == (pug_interp = settingsText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\nif (showTooltipIcon) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"glyph-container\\\"\\u003E\\u003Cdiv class=\\\"status-image\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"status_icon gridDetailsImage spritedimagealign import-settings icon-info clickable\\\"\"+\" data-toggle=\\\"tooltip\\\" tabindex=\\\"0\\\" data-trigger=\\\"manual\\\" data-placement=\\\"left\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", importSettingsLabel, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"importSettingsLabel\" in locals_for_with?locals_for_with.importSettingsLabel:typeof importSettingsLabel!==\"undefined\"?importSettingsLabel:undefined,\"settingsText\" in locals_for_with?locals_for_with.settingsText:typeof settingsText!==\"undefined\"?settingsText:undefined,\"showSmartType\" in locals_for_with?locals_for_with.showSmartType:typeof showSmartType!==\"undefined\"?showSmartType:undefined,\"showTooltipIcon\" in locals_for_with?locals_for_with.showTooltipIcon:typeof showTooltipIcon!==\"undefined\"?showTooltipIcon:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_html = pug_html + \"\\u003Cdiv class=\\\"panel panel-white\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\"\\u003E\\u003Ch4 class=\\\"panel-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Import_ImportSettings_Header')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh4\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (className, i18n) {pug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('GoogleImport_MicrosoftAdvertising_MultipleAccounts')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"status_icon\",\"clickable\",\"gridDetailsImage\",className + '-detail'], [false,false,false,true]), false, true)+\" type=\\\"button\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", i18n.get('Grid_DetailsButtonText'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";}.call(this,\"className\" in locals_for_with?locals_for_with.className:typeof className!==\"undefined\"?className:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (ImportSourceAccountInfo, IsAmazonImport, IsFacebookImport, IsGoogleImport, IsPinterestImport, Type) {pug_html = pug_html + \"\\u003Cp\\u003E\" + (pug.escape(null == (pug_interp = Type) ? \"\" : pug_interp)) + \"\\u003Cbr\\u003E\";\nif (IsGoogleImport || IsFacebookImport || IsAmazonImport || IsPinterestImport) {\npug_html = pug_html + (pug.escape(null == (pug_interp = ImportSourceAccountInfo) ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C\\u002Fp\\u003E\";}.call(this,\"ImportSourceAccountInfo\" in locals_for_with?locals_for_with.ImportSourceAccountInfo:typeof ImportSourceAccountInfo!==\"undefined\"?ImportSourceAccountInfo:undefined,\"IsAmazonImport\" in locals_for_with?locals_for_with.IsAmazonImport:typeof IsAmazonImport!==\"undefined\"?IsAmazonImport:undefined,\"IsFacebookImport\" in locals_for_with?locals_for_with.IsFacebookImport:typeof IsFacebookImport!==\"undefined\"?IsFacebookImport:undefined,\"IsGoogleImport\" in locals_for_with?locals_for_with.IsGoogleImport:typeof IsGoogleImport!==\"undefined\"?IsGoogleImport:undefined,\"IsPinterestImport\" in locals_for_with?locals_for_with.IsPinterestImport:typeof IsPinterestImport!==\"undefined\"?IsPinterestImport:undefined,\"Type\" in locals_for_with?locals_for_with.Type:typeof Type!==\"undefined\"?Type:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (dash, edit, recommendationText, runNow, showRecommendation) {if (edit) {\nif (showRecommendation) {\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"insight_icon import-recommondation icon-info clickable\\\"\"+\" data-toggle=\\\"tooltip\\\" tabindex=\\\"0\\\" data-trigger=\\\"manual\\\" data-placement=\\\"left\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", recommendationText, true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Ca class=\\\"edit-task\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = edit) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\nif (runNow) {\npug_html = pug_html + \"\\u003Cspan\\u003E | \\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"run-now\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = runNow) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\n}\nelse\nif (runNow) {\npug_html = pug_html + \"\\u003Ca class=\\\"run-now\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = runNow) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = dash) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}}.call(this,\"dash\" in locals_for_with?locals_for_with.dash:typeof dash!==\"undefined\"?dash:undefined,\"edit\" in locals_for_with?locals_for_with.edit:typeof edit!==\"undefined\"?edit:undefined,\"recommendationText\" in locals_for_with?locals_for_with.recommendationText:typeof recommendationText!==\"undefined\"?recommendationText:undefined,\"runNow\" in locals_for_with?locals_for_with.runNow:typeof runNow!==\"undefined\"?runNow:undefined,\"showRecommendation\" in locals_for_with?locals_for_with.showRecommendation:typeof showRecommendation!==\"undefined\"?showRecommendation:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"preference-upload-form panel form-horizontal\\\"\\u003E\\u003Cform class=\\\"preferenceupload\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"preference-upload-description\\\"\\u003E\\u003Cspan class=\\\"description-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.description) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"HelpTopic\\\" query=\\\"help:ext60175\\\" href=\\\"javascript:void(0);\\\" role=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('Learn_more_link_text')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"preference-upload preference-create\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"uploadRow form-group\\\"\"+pug.attr(\"hidden\", model.hideFilePicker, true, true)) + \"\\u003E\\u003Clabel class=\\\"col-sm-3 control-label label-width\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('Import_PreferenceUpload_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-6 preference-upload-file-picker-placeholder\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('Import_PreferenceUpload_AcceptFormat_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E \\u003Ca class=\\\"helpLink clickable download-template\\\" href=\\\"#\\\" role=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('Import_PreferenceUpload_SampleFile_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (\" class=\\\"progress-container\\\"\"+pug.attr(\"hidden\", !model.uploading, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (\" class=\\\"preference-upload-summary-grid\\\"\"+pug.attr(\"hidden\", (!model.showSummaryGrid||model.uploading), true, true)) + \"\\u003E\\u003Ctable border=\\\"1\\\" bordercolor=\\\"#ddd\\\"\\u003E\\u003Cthead\\u003E\\u003Ctr\\u003E\\u003Cth\\u003E\\u003C\\u002Fth\\u003E\\u003Cth class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('Import_PreferenceUpload_Preview_Success')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fth\\u003E\\u003Cth class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('Import_PreferenceUpload_Preview_Error')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003Ctr\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Fthead\\u003E\\u003Cthead\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody\\u003E\\u003Ctr\\u003E\\u003Ctd class=\\\"grid-cell-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString(model.status === view.PREFERENCE_UPLOAD_STATUS.Applied ? 'Import_PreferenceUpload_Preview_Item_Changes' : 'Import_PreferenceUpload_Preview_Expected_Item_Changes')) ? \"\" : pug_interp)) + \"\\u003C\\u002Ftd\\u003E\\u003Ctd class=\\\"grid-cell-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.successCount) ? \"\" : pug_interp)) + \"\\u003C\\u002Ftd\\u003E\\u003Ctd class=\\\"grid-cell-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.errorCount) ? \"\" : pug_interp)) + \"\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003Ctr\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003Ctbody\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003Ctable\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (model.errorMessage != null) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert alert-warning\\\"\\u003E\\u003Cspan class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"errorMsg\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.errorMessage) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (\" class=\\\"panel-footer\\\"\"+pug.attr(\"hidden\", model.uploading, true, true)) + \"\\u003E\";\nif (model.status === view.PREFERENCE_UPLOAD_STATUS.NotStart) {\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"upload-and-preview btn btn-primary\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('Import_PreferenceUpload_Button_UploadAndPreview'), true, true)+pug.attr(\"disabled\", !model.isPreviewEnabled, true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"cancel btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('Import_PreferenceUpload_Button_Cancel'), true, true)) + \"\\u003E\";\n}\nelse\nif (model.status === view.PREFERENCE_UPLOAD_STATUS.Previewed) {\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"apply-changes btn btn-primary\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('Import_PreferenceUpload_Button_Apply'), true, true)+pug.attr(\"disabled\", !model.isApplyEnabled, true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"download-results btn btn-default\\\"\"+pug.attr(\"type\", (model.downloadPath === ''?'hidden':'button'), true, true)+pug.attr(\"value\", view.i18n.getString('Import_PreferenceUpload_Button_Download'), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"cancel btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('Import_PreferenceUpload_Button_Cancel'), true, true)) + \"\\u003E\";\n}\nelse\nif (model.status === view.PREFERENCE_UPLOAD_STATUS.Applied) {\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"download-results btn btn-primary\\\"\"+pug.attr(\"type\", (model.downloadPath === ''?'hidden':'button'), true, true)+pug.attr(\"value\", view.i18n.getString('Import_PreferenceUpload_Button_Download'), true, true)+pug.attr(\"hidden\", (model.downloadPath === ''), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"close-panel btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('Import_PreferenceUpload_Button_Close'), true, true)) + \"\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"cancel btn btn-primary\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('Import_PreferenceUpload_Button_Cancel'), true, true)) + \"\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fform\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, isResponsiveAdForSSCEnabled, isStoreNotValid, scenario) {\n\n\n\nif (scenario === 'creation') {\npug_html = pug_html + \"\\u003Ch1\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('SmartShoppingCampaign_Header_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh1\\u003E\";\n}\nif (isStoreNotValid) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('ShoppingCampaign_NoBMCAccount_Message')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"bmc_url_link\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('ShoppingCampaign_BmcURL_Text')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003C!-- koErrors--\\u003E\\u003Ch3 class=\\\"type-bold campaign-settings-title\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('ShoppingCampaign_CampaignSetting_SectionTitle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh3\\u003E\\u003Chr\\u003E\\u003Cdiv class=\\\"campaign-settings\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('ShoppingCampaign_ShoppingSetting_SectionTitle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh3\\u003E\\u003Chr\\u003E\\u003Cdiv class=\\\"shopping-settings\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('SectionTitle_CampaignTargeting')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh3\\u003E\\u003Chr\\u003E\\u003Cdiv class=\\\"campaign-targeting clearfix\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (scenario === 'creation') {\nif (isResponsiveAdForSSCEnabled) {\npug_html = pug_html + \"\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('SectionTitle_ResponsiveAd')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh3\\u003E\\u003Chr\\u003E\\u003Cdiv class=\\\"responsive-ad clearfix\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}\nelse {\npug_html = pug_html + \"\\u003Ch3 class=\\\"type-bold advaced-settings-title\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('SectionTitle_AdvancedSettings')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh3\\u003E\\u003Chr\\u003E\\u003Cdiv class=\\\"advanced-settings clearfix\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"conversion-goal-section\\\"\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Campaign_Goals_Section_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fh3\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Campaign_Goals_Help_Text')) ? \"\" : pug_interp)) + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp)) + \"\\u003Ca class=\\\"HelpTopic\\\" href=\\\"javascript:void(0);\\\" query=\\\"help:app54814\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('LearnMoreLinkText')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cdiv class=\\\"conversion-goal-selection\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"save-bar form-group create-smart-shopping-campaign-save-bar\\\"\\u003E\";\nif (!isStoreNotValid) {\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"btn-save btn btn-primary\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.get('ShoppingCampaign_Button_Save'), true, true)) + \"\\u003E\";\n}\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"btn-cancel btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.get('ShoppingCampaign_Button_Cancel'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isResponsiveAdForSSCEnabled\" in locals_for_with?locals_for_with.isResponsiveAdForSSCEnabled:typeof isResponsiveAdForSSCEnabled!==\"undefined\"?isResponsiveAdForSSCEnabled:undefined,\"isStoreNotValid\" in locals_for_with?locals_for_with.isStoreNotValid:typeof isStoreNotValid!==\"undefined\"?isStoreNotValid:undefined,\"scenario\" in locals_for_with?locals_for_with.scenario:typeof scenario!==\"undefined\"?scenario:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_mixins[\"koErrors\"] = pug_interp = function(id, cssClass){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cul\" + (pug.attr(\"class\", pug.classes([cssClass ? cssClass : 'alert alert-danger'], [true]), false, true)+\" data-bind=\\\"visible: errors().length > 0, foreach: errors, attr: {"aria-hidden": errors().length == 0}\\\"\"+pug.attr(\"id\", id ? id : 'KoErrors', true, true)) + \"\\u003E\\u003Cli\\u003E\\u003Cdiv data-bind=\\\"html: $data\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003Cdiv class=\\\"update-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, learnMoreId, messageDetails) {pug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = messageDetails) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\nif ((learnMoreId)) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+pug.attr(\"query\", learnMoreId, true, true)+\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Learn_more_link_text')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"save-bar form-group\\\"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.getString('Button_Ok'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"learnMoreId\" in locals_for_with?locals_for_with.learnMoreId:typeof learnMoreId!==\"undefined\"?learnMoreId:undefined,\"messageDetails\" in locals_for_with?locals_for_with.messageDetails:typeof messageDetails!==\"undefined\"?messageDetails:undefined));;return pug_html;};\nmodule.exports = template;"],"names":["defaultIconClasses","getIconClass","extension","AppPlatform","getMediaUrl","mediaUrl","MediaUrl","adExtensionConfig","config","get","AdExtension","AppExtensionIconBaseUrl","indexOf","$url","universalItemTemplate","arg0","rawItemTemplate","extend","i18n","window","globalLegacyI18n","ViewModel","_createClass","options","_this","_classCallCheck","this","scope","ko","campaignId","adGroupId","adgroupId","scopes","entitySelectorService","i18nKeys","showCampaigns","entityType","showAdGroups","showSelector","maximumSelectedEntities","predicates","campaign","predicate","CampaignType","adgroup","operand","operator","value","toggleEditor","showEditor","scopeContext","isMultiSelect","showSelection","subtitle","multiSelectSubtitle","selectedItemsLimit","maxDisplayedEntities","remainingItemsText","campaignAdgroupLimitText","count","length","isEditMode","selectedCampaigns","selectedAdgroups","subscribe","newCampaign","_","Id","campaignName","Name","name","adGroupName","current","newCampaignId","newAdgroup","Campaign","newAdgroupId","CampaignAdgroupSelectorI18n","campaignFilter","adgroupNoHotelFilter","View","_Backbone$View","_callSuper","arguments","_inherits","key","editorOptions","undefined","defaultOptions","editTitle","editLabel","IsBulkAdExtensionAssociationAllowed","extensionCampaignTypeCheck","scopeService","getScope","ko_model","Number","editor","AssociationEditor","hasSubTitle","showErrorsInline","adgroupName","isNewEntitySelector","show","_this2","$el","html","templateNew","selectorView","proxy","createCampaignView","i18nHotelCenter","render","createCampaignAdgroupView","currentCampaignFilter","currentAdgroupnFilter","pageContext","Permissions","dynamic","PerformanceMaxCampaigns","pmaxSupportedExtentions","adExtensionType","UnifiedAppAds","appSupportedExtensions","HotelCampaign","hotelSupportedExtentions","concat","CampaignSelectorProxy","onSelectDone","selectedCampaign","jsData","jsdata","edmCampaign","withUiBlocker","uiBlockContainer","withUiBlock","isMultiMode","optionalCampaignFilter","optionalAdgroupFilter","getCampaignSelectorView","AdgroupSelectorProxy","selectedAdGroup","getAdgroupSelectorView","CampaignAdgroupSelectorProxy","onCampaignSelect","onAdGroupSelect","onMultiSelectedDone","getCampaignAdgroupSelectorView","$","append","el","find","newScope","trigger","newScopes","on","param","isEdit","undelegateEvents","empty","remove","Backbone","i18nGlobal","ImageAdExtensionSchema","globalLegacySchema","odataToken","odataPath","odataRootUrl","permissions","IsAADUser","PageContext","_permissions$dynamic","_permissions$dynamic2","OptionalDisplayTextForSingleImageAdExtensions","ImageFittingForImageAnnotation","ImageFittingForImageExtension","ImageFittingExlcudeMAE","ImageFittingUnifiedImageROI","IsTransparentImageAnnotationEnabled","oDataConfig","oDataPath","oDataToken","ExtensionEditor","_backbone$View","perfMarker","PerfMarkerFactory","createMarker","autoEnd","willInit","createNew","isRecommendation","recommendation","AltText","DisplayText","Description","DestinationUrl","ImageUrl","MobileFinalUrls","FinalUrls","UrlCustomParameters","TrackingUrlTemplate","Images","Scheduling","EligibleLayout","SingleAndMulti","_objectSpread","systemGenerated","SourceType","readOnly","Unset","Single","viewModel","_createViewModel","extensionsRepo","ImageAdExtensionsRepository","schema","isFinal","url","upgradedUrlView","UpgradedUrl","finalMobileUrl","trackingTemplate","finalUrlSuffix","FinalUrlSuffix","customParameters","urlOptionsEnabled","isMobilePreferred","placeholderEnabled","useUrlOptionsV2","landingPageUrlRequired","showUurlTestTool","destinationURLDisabled","subscribeToUrlChanged","callback","urlEditor","setFullUrl","fullUrl","setError","errorStr","schedulingView","SchedulingView","labelClass","controlClass","model","imageList","isImageFittingEnabled","aid","targetAccountId","state","cid","AdvertiserCustomerID","promise","Promise","getAssetEnhancementSettings","then","result","AssetAIEnhancementOptout","assetEnhancementSettingsPromise","imageListLoadPromise","dataModelUtil","getImageListFromMTImagesAsync","hasImageUrl","getAutoCroppedImages","originalImageToCrop","Width","Height","Text","IdString","Src","ImageSourceStr","StockImages","ThumbnailURL","WebsiteImages","ImageURL","isRecommendedImage","onImageListChanged","bind","template","creatorTemplate","editorTemplate","imageAspectRatios","newI18n","renderExtensionImagesControl","replaceWith","_this3","imagesControlOptions","odata","genericImage","image191to1","text","isForVNext","isStockPhotoEnabled","instrumentation","preferencesService","setImageControlSetText","imageControlSetText","setImageControlSetEligibleLayout","imageControlSetEligibleLayout","setImageControlsValidate","imageControlsValidate","serverContext","CurrentCustomer","CurrentAccount","CurrentUser","Token","ServicesEndpoints","ClientCenterUIAPI","imagesControlNode","React","props","_jsx","ServerContext","Provider","children","ExtensionImagesControl","ReactDOM","onDisplayTextUpdated","displayText","onEligibleLayoutUpdated","eligibleLayout","imageExperienceView","_superPropGet","_this4","id","errorMessages","handleErrors","_handleErrors","existingExtension","displayTextIsValid","altTextInternal","altTextIsValid","shouldAltTextMatchDisplayText","description","destinationUrl","error","save","_add","_update","apply","applyRecommendation","newImageExtensionInfo","AlternativeText","altText","FinalURL","getValues","finalUrl","MobileURL","mobileUrl","isValid","validate","cancel","_cancel","_modelIsValid","isSingleEligible","isMultiEligible","Multi","read","isEligibilityValid","write","newValue","clearAllErrors","getImagesFromImageList","ImageIds","map","assetLink","Asset","toObject","_this5","extensionData","_getDataForSave","update","savedExtension","fetchedExtension","finally","_this6","create","newExtension","createdExtension","displayTextToValidate","trim","altTextToValidate","schedulingValid","finalUrlTestRegEx","RegExp","mobileUrlTestRegEx","urlErrors","finalUrlUrl","test","push","getString","handleApiErrors","urlViewIsValid","imagesValid","errors","errorMsgList","toString","backbone","moreCount","size","data","TableRows","slice","moreString","convertCurrencyCode","getUseTotalsPlugin","_ref$dynamic","AdExtensionsAudienceAdsTotals","PerformanceMaxCampaignsPhaseTwoCrossNetwork","showAdExtensionRejectionReasons","type","overrideAssociationType","BidataNotRequired","event","adextension","_ref","extensionId","version","args","App","cmpid","adgid","replace","queryify","_url","setUrlParameter","ajaxPost","ignoreBeforeAjax","dataType","onSuccess","Callback","onsuccessEventData","rowId","AdExtensionDeliveryStatusPopupFactory","_DeliveryStatusPopupF","_ref2","grid","_ref2$overrideEntitie","overrideEntities","_ref2$overrideAssocia","_ref2$BidataNotRequir","showAdExtensionRejectionReasonsHandler","handler","entityMap","AdGroup","getEventTargetModel","Version","DeliveryStatusPopupFactory","adextensionGridColumn","bingadsGridColumn","sortable","title","helpId","bodyClasses","property","userProperty","item","$total","userTemplate","local","totalsTemplate","SiteLinks","adGroupI18n","isNewUI","isDSAMixedModeCampaignEnabled","_ref$supportCashbackS","supportCashbackSettings","koSchema","properties","dataLoaded","hideLanguage","campaignType","AdGroupType","shouldShowAdGroupType","languageString","keyToUse","Language","adGroupTypeString","enableLanguageSelection","showHighLatencyAlert","backRouteName","isArabicEnabled","IsArabicLanguageEnabledInMultipleLanguage","isSimplifiedChineseEnabled","IsSimplifiedChineseLanguageEnabledInMultipleLanguage","isSponsoredPilotEnabled","IsSPAv2Enabled","isManualBiddingDeprecationEnabled","IsManualBiddingDeprecationEnabled","IsDSAMixedModeCampaignEnabled","adGroupScopePerfMarker","createChild","mark","router","deps","CurrentCampaign","isMSStoreAdsGAWorkflow","isMSStoreAdsCampaign","navigateToRoute","scenario","activity","adGroupSettings","dynamicPermissions","showDisclaimerBanner","isMranEcpcEnabled","isMranTroasEnabled","locationTargetsView","LocationTargetsView","level","CurrentAdGroup","popupIds","Location","showInitialUiBlocker","showPhysicalIntentView","physicalIntent","physicalIntentOptions","PeopleIn","languageLocationConnector","LanguageLocationConnector","bidView","advancedSettingsView","adDistributionView","viewmodel","useCampaignSettings","setLanguageSet","languages","adDistribution","syndEnum","BingYahooAndSearchPartners","isSyndicationAllowed","AdvancedSettingsView","nativeAdsCampaignBid","NativeBidAdjustment","nativeAdsAdgroupBid","multimediaAdsCampaignBid","MultiMediaAdBidAdjustment","multimediaAdsAdgroupBid","Languages","TimeZone","campaignSubType","isSponsoredCampaign","campaignBiddingStrategy","BiddingScheme","Type","campaignAdScheduleUseSearcherTimeZone","AdScheduleUseSearcherTimeZone","isSPBCampaign","CampaignCashback","IsPromotionsForBrands","AdDistribution","CampaignSubType","showCpgAdGroupType","Settings","BidOption","biddingStrategyView","BiddingStrategyView","biddingStrategyType","campaignBiddingStrategyType","biddingStrategyTypes","costPerSale","notShowBidView","hide","BidView","showTrafficEstimation","resetIsAutoBidding","enableArabic","enableSimplifiedChinese","withInheritOption","i18nStrings","SaveWarning","language","IsAdsGlobalizationPhase1Enabled","IsAdsGlobalizationPhase2Enabled","IsAdsGlobalizationPhase6Enabled","IsAdsGlobalizationPhase2JapanEnabled","IsDomesticSimplifiedChineseEnabled","IsAdsGlobalizationPhase9Enabled","IsAdsGlobalizationPhase9VIEnabled","languageSelector","LanguageSettingView","eventDispatcher","newLanguage","cpgAdGroupType","AdGroupBidType","cpgBidSection","CpgBidSection","adGroupTargetInfo","AudienceTargetInfo","resourceName","listenToLocationCriterion","useLocationControl","initAudienceAssociationView","campaignTargetInfo","fetchCriterions","adGroupTargetsView","AudienceAdvancedTargetSettings","viewContext","accountCurrencyCode","AccountCurrencyCode","currentCampaign","currentAdGroup","currentLevelTargetInfo","parentLevelTargetInfo","initialLoadTask","CashbackPercent","CouponsEnabled","CashbackScope","ParentLevelCashbackPercent","ParentLevelCashbackScope","ParentCouponsEnabled","cashbackSettingsView","CashbackSettings","showCashbackBudget","showEnableCashbackSettingsCheckbox","showInheritFromParentOption","isCashbackScopeReadonly","showCoupon","decimal","validateCashbackPercent","formattedValue","fromLocalToFloat","toggleCashbackPercentColumns","adScheduleView","isShowDisclaimerBannerEnabled","hideUIBlocker","uiBlocker","entitySet","AdGroups","bypassCache","queryParameters","currentAccount","Campaigns","expand","loadMap","shouldSupportCashbackSettings","mutableModel","MutableModel","context","memo","mutables","Medium","hasChanges","AdRotation","RotationType","SearchBid","ContentBid","setModel","initCashbackSettingsView","renderLanguageSelector","renderCpgAdGroupType","renderBidView","i18nNewDesign","renderBiddingStrategy","addEventListener","renderAdvancedSettings","medium","renderLocationTargets","renderAdGroupTargets","add","catch","logger","logMessage","constants","LOGCATEGORY","TRACE","LOGLEVEL","INFO","JSON","stringify","val","checkIMAReachPromise","adGroupCriterions","getLocationCriterion","changedLocationCriterions","CriterionType","hasLocationChanged","locationCriterions","getAllAdGroupLocationCriterion","IsIMAReachRepresentationPhase1Enabled","locationsInfo","getLocationsInfo","showIMAReachModal","onYes","deliveryChannel","isIMAReachModalShow","locationTargets","keepAllLocations","locations","c","Status","campaignCriterions","inheritInfo","getLocationsInfoFromCampaignCriterions","intent","adGroupTargetsData","getAllLocations","adGroupCriterionsWithoutIntent","getCampaignLocationCriterions","overrideInfo","deletedLocations","getData","adGroupTargetsCriterions","clearApiErrors","params","isCostPerSaleCampaign","advancedSettings","targets","deviceTargets","ageTargets","genderTargets","scheduling","target","AdGroupCriterions","urlOptions","netWorkOptions","adRotation","dateSettings","nativeAds","multimediaAds","adScheduleUseSearcherTimeZone","set","getIncremental","chunks","groupBy","index","Math","floor","toArray","batchedParams","reqs","batch","adapter","cacheResponse","overrideResponse","processResponse","responses","mergedAdGroupCriterions","dest","res","response","setData","logAdGroupPersonalizedOffers","signal","exclusionsUpdated","saveExtensions","summaryDataContextManager","getContext","CampaignId","AccountId","Bidding","campaign_id","adgroup_id","clear","i18nErrors","entity","adgroupErrors","handleApiErrorsForAdGroupLevel","stopListening","perfMarkerEvent","audiencesi18n","AudienceBaseColumn","_ProjectionGridBaseCo","Column","helpAriaLabel","Property","columnConversion","ProjectionGridBaseColumn","selectedCampaignId","selectedAdgroupId","campaignSettings","DataStore","findStrictCache","isEmptySelector","columns","column","headerTemplate","containerType","headerBuilder","columnInfo","isSubHeader","subColTitle","label","$orderby","dir","popupId","formatDate","date","dateUtil","format","formatDateForGridDataParameters","gridConfig","sortInfoKey","getPromise","fetchPaginationConfig","getCustomColumnsPreference","getSegPreference","spread","dateRange","queryConfig","pageSize","orderbyInfo","sortableHeader","pageable","isDataFetchManagerSource","query","dataSource","plugins","gridDataParameters","CustomColumns","DateRange","StartDate","start","EndDate","end","compared","ComparisonDateRange","gridData","edm","$call","toJSON","pagination","endDate","startDate","endDate2","startDate2","comparisonEndDate","comparisonStartDate","segType","getSegType","segmentationType","segmentTimeChecker","isTimeRangeValid","SegmentationTypes","orderby","formatDateInQuery","formatDateInEntitySet","parseDate","dateString","parse","defaultComparisonColumns","definePlugin","gridView","events","pluginConfig","_pluginConfig$compari","comparisonColumns","originalQuery","currentDateRange","queryParams","isOdataActionSource","select","root","identifyEntitySet","action","navigation","source","RangeStartDate","RangeEndDate","parameters","changeEntitySet","addDateRangeToQueryParams","call","views","Summary","bindDateFilterChangeHandler","e","newDateRange","firstRange","secondRange","convertForComparison","range","dates","comparedStart","comparedEnd","dateRangeEquals","refresh","getCurrentDateRange","p$getCurrentDateRange","defineGridPlugin","_ref$method","method","_ref$contexts","contexts","path","putil","headers","_defineProperty","contextsToUpdate","union","legacyGridName","compact","updateContext","s$i18n","withoutColumns","names","reject","contains","getAriaLabelTextTemplate","getPerformanceMetrics","helpAriaLabelTextTemplate","_config$get","IsViewThroughConversionEnabled","IsViewThroughConversionsRevenueEnabled","_config$get$dynamic","IsPartialConversionsEnabled","PartialConversions","IsColumnConversionEnabled","ColumnConversion","usePartialConversions","sourceColumnName","sourceSortableProperty","targetSortableProperty","_toConsumableArray","getDeliveryStatus","DeliveryStatus","GeoCodeStatus","ret","deliveryStatus","status","GeoStatus","hasGlyph","getDeliveryColumn","isEmpty","Delivery","deliveryStatusTemplate","DeliveryTemplates","IsAppealable","getEntityColumns","statusIconColumnTemplate","pick","IsDeleted","defaults","Performance","Conversions","applyPartialConversionColumnName","getColumnChooser","choosers","appendList","blackList","clone","chain","difference","getPerformanceColumnChooser","getConversionsColumnChooser","combinedBlackList","getSharedColumns","filter","performanceMetrics","biColumns","getSharedCustomizedColumns","items","pluck","each","ariaLabel","verification","isNumber","customizedTemplate","parentName","BaseCampaignName","associationType","isDeleted","legacyGlobalI18n","schemaI18nCampaign","appConfig","stateManager","getCreatedBy","getFrequency","getExpression","getNotificationType","getEditLink","jsdataCampaign","preferenceService","sessionStore","getFilters","cacheService","dataContextManager","customColumnPreference","noData","getDateTime","offset","getTimezoneOffset","offsetStr","kendo","abs","taskItem","modifiedBy","ModifiedBy","modifiedAt","Date","ModifiedAt","datetime","Cron","cronString","timeZone","cronParser","hourString","hour","year","month","dayOfMonth","frequency","ONCE","toLocaleDateString","MONTHLY","WEEKLY","dayOfWeek","DAILY","HOURLY","TimeZoneId","Selection","DateRangePreset","toLowerCase","NotificationType","ruleAuthoringOptions","emailOptions","OnChangeOrError","tempModel","JobModel","desc","odataParser","getRuleSelection","summary","Actions","isEmailRule","getJobDescription","actionName","State","getStartTime","jobModel","getDescription","targetTab","queryParts","getScopeCallback","routeArgs","routeUrl","gridFilterSerializer","fromDescription","entityObj","FilterExpressions","toQueryString","ID","navigate","join","router_new","legacy_tab_to_url","getSelection","vnextInfo","selection","getJobSelection","scopeCallback","idBased","header","footer","isForVnext","entityToObject","entityKey","keys","values","getCampaignLink","getUiNextCampaignLink","_scope$values","getAdgroupLink","AdGroupId","AdTitle","AdType","subPath","getUiNextAdgroupLink","_scope$values2","entityKeyMap","getEntityKeyField","getEntityWrapper","entityKeyField","bulkEditResult","EntityKey","entityName","moreTitleHint","dictionary","AdHeadlines","getTitlePreviewFromJson","getMoreTitleHintFromJson","CampaignName","adGroup","AdgroupName","getEntity","keyword","Keyword","ad","normalizeErrorMsg","origin","msg","includes","splitStr","charAt","toUpperCase","splitErrorMsg","getStatusText","mapEntityErrors","success","HasError","Errors","attemptedValue","attempted","formatEntityValue","Changes","getCopyPasteStatusText","getResultValue","isNew","isCopyPaste","campaignUrl","campaignAriaLabel","adGroupUrl","adGroupAriaLabel","getOldValue","getNewValue","hasStore","isStoreValid","showGoalRemoveAlert","isEnabledDynamicFeedCampaign","IsEnabledForDynamicFeedCampaign","isCPGForBSCEnabled","IsCPGForBSCEnabled","isBSCSmartImportEnabled","IsBSCSmartImportEnabled","isPredictiveMatchingEnabled","PredictiveMatching","campaignScopeAllSettingsPerfMarker","isMMAForRetailEnabled","IsMMAForRetailEnabled","ccJsData","activityLogger","providerId","setting","ProductCollectionAccounts","store","Value","isAudienceDynamicFeedBasedCampaign","editMode","shouldShowPlaceholderStoreIfExists","campaignProductScopeId","CampaignCriterionsData","hasAnyStores","IsGlobalStore","IsCoOpStore","checkIfStoreValid","shoppingSettingsView","ShoppingSettingsView","isSponsoredSettings","isSearchCampaign","isMMAForRetailWorkflow","uid","urlQueryStringObject","Product","isNotAudienceCampaign","audienceTargetInfo","loadCriterionsTask","campaignTargetsView","createView","loadBudgetTask","budget","isSPA","isCPS","PersonalizedOffersEnabled","MonthlyBudget","goalSelectionView","GoalSelectorView","realI18n","isHideSaveBar","turnOnRemoveAlert","shouldShowWarning","checked","CampaignSettings","CreateView","showLanguage","usePanel","renderConversionGoalSelection","isEnablePersonalizedOffersChecked","onEnablePersonalizedOfferCheckboxChange","onCashbackPercentChange","selectedBidStrategy","onSelectedBidStrategyChange","renderCampaignTargets","getProductData","renderShoppingSettings","hasFilteredProducts","CampaignProductScope","destroy","parentId","advancedSettingsValues","AutoTargetingEnabled","criterion","hasValidStore","isFeedProductFilterEnabled","isFeedFilterChecked","FeedLabel","SalesCountry","getProductScope","ProviderId","campaignTargetsData","campaignTargetsCriterions","CampaignCriterions","automatedCTA","vanityUrlSettings","CampaignConversionGoalAssociations","convertToMTFormat","allLocations","getParams","getAllLocationCriterions","mergedCampaignCriterions","createScenarioAndActivity","scenarioName","activityName","showBudgetBidCampaignNotifications","campaignItemList","oldBudget","Budget","newBudget","oldBidStrategy","newBidStrategy","logCampaignPersonalizedOffers","saveTargetingSource","destroyProductScoeIfNeed","Amount","toFixed","trace","DomainName","Source","LanguageCode","DynamicDescriptionEnabled","tasks","_this5$createView$get","getLocationRecommendationsStatus","targetedLocationRecommendations","dismissedLocationRecommendations","httpUtils","odataOptions","host","BingAdsAdInsightWebApiUri","SessionId","customerId","accountId","recommendationType","channel","applyRecommendations","recommendations","dismissRecommendations","processItems","hasOwnProperty","subEntity","campaignErrors","scrollToErrors","scrollUtils","errorElements","campaignGoalSeletorView","adScheduleModel","showDateSettings","needRestore","eventDelegator","criterionLoader","campaignTargets","formattedDayTimeRanges","formatLoadedCriterions","renderSubViews","_ref$adScheduleModel","_adScheduleModel$dayT","dayTimeRanges","renderLocationTargetsView","renderAdScheduleView","criterions","String","Criterion","BidAdjustment","OriginalBidAdjustment","DayTimeCriterion","_this$locationTargets","_this$adScheduleView","_len","Array","_key","hideAudience","setLocationData","existingLocations","targetOption","targetOptions","bundleOrDefaultMarket","splits","split","day","adDayTimeRanges","schedulingRows","Day","StartHour","FromHour","StartMinute","FromMinute","adSchedulingOptions","minuteToReadMap","EndHour","ToHour","EndMinute","ToMinute","_this$options","_this$options$showDat","formatModel","adGroupStatus","formatSchedulingRows","AdScheduleView","showBidAdjustmentColumn","timeZoneMapper","getAccountTimeZone","deletedDayTimeCriterions","currentCampaignId","getPropertyValidationErrors","locationTargetsData","populateParentField","removeNegativeId","deletedDayTimeCb","adDateSetting","getDateSettings","hasEndDate","getAdScheduleUseSearcherTimeZone","cloneDeep","AccountListView","_DeterministicView","footerText","setState","accountListTemplate","DeterministicView","isActiveTrackingStatusForUet","isActiveTrackingStatusForGoals","showTrackingStatusDetails","className","isActiveTrackingStatus","trackingStatusMessagePrefix","customTitle","customExtensionEntranceText","a11yIdPrefix","PopoverView","position","positions","relativeToTableRow","marginBottom","height","setContent","contents","TitledContent","setTitle","setBody","trackingStatusPopoverTemplate","helpLinkTemplate","troubleshootTopic","TrackingStatus","a11yId","suffix","testType","DeliveryStatusToCategoryMap","globalConfig","Eligible","AdGroupAudienceAssociationPaused","AdGroupAudienceAssociationExcluded","AdGroupCriterionPaused","AdGroupCriterionExcluded","New","EditorialApprovedLimited","EditorialApprovedLimitedAppealRejected","LowSupply","LowQuality","NegativeKeywordConflicts","BidBelowFirstPageBid","BudgetSuggestions","AutoBiddingLimitedByNotEnoughConversions","AutoBiddingLimitedByNotEnoughRevenue","AutoBiddingLimitedInventoryLimit","AutoBiddingLimitedMaxCPCRestriction","AutoBiddingLimitedBudgetRestriction","AutoBiddingLimitedUnAttainableTarget","AutoBiddingPortfolioBidStrategyTrainingStatus","AutoBiddingLearning","CreditCardExpired","IOExceeded","PaymentInformationMissing","InvalidFinancialStatusOther","CampaignSuspended","CampaignBudgetPaused","DomainLanguageNotSupported","AdGroupExpired","EditorialRejected","EditorialAppealRejected","CampaignDeleted","StoreIdNotAssociated","AdGroupTargetingTooNarrow","VideoExtensionVideoProcessingFailed","VideoExtensionVideoTooSmall","VideoExtensionVideoAspectRatioInvalid","VideoExtensionVideoDurationInvalid","VideoExtensionThumbnailProcessingFailed","VideoExtensionThumbnailTooSmall","VideoExtensionThumbnailAspectInvalid","CampaignUserPaused","AdGroupUserPaused","AdGroupDraft","AdGroupPrivacyPending","AdUserPaused","EditorialPending","AssociationDeleted","KeywordUserPaused","EditorialUnderAppeal","UrlInvalid","ApplicationNotFound","ApplicationDestinationUrlMismatch","PendingMetadataSync","ProductTargetUserPaused","AdExtensionDeleted","AdExtensionAssociationDeleted","AdNotPresent","AdNotActive","VideoExtensionProcessing","updateDeliveryStatusOptionForFilter","deliveryStatusOption","enumSet","mockI18n","_getDeliveryStatusCat","groupedItems","enumSetToUse","localized","categoryEnumValuesMap","enumValue","enumValues","category","mappedValues","mapEnumValueForFilter","categoryName","itemLocalized","getDeliveryStatusCategoryForFilter","enum","operators","selectionConfig","enabled","headClasses","goalInPilotingMap","OfflineConversionGoal","InStoreTransactionGoal","MultiStageGoal","getErrorMessage","errorCode","defaultMessage","TagWithSameNameAlreadyExistsUnderCustomer","InvalidTagName","TagNameNullOrEmpty","InvalidTagDescription","MaxUetTagPerCustomerLimitReached","CustomerUnderMigration","SharedLibraryUserPermissionDenied","UpdateFailedForIsClarityTagEnabled","cleanAlerts","alertIds","alertId","alertCenter","dismiss","processTypeEnumForGoals","propertyName","filterEnumValuesFromProperty","processTypeBooleanForGoals","chooseType","IsAccountLevel","parseConversion","parseInt","deParseConversion","minutes","tempPeriod","Minutes","Hours","days","hours","Error","getConversionWindowPeriodInMinutes","getDefWithAccountInfo","goalItem","accountInfo","isInternalUser","IsInternalUser","CCBaseUrl","showUnAssignedDetails","htmlContent","getColumnChooserConfig","columnConfig","_ref$permissions","columnConversions","getColumnConversions","columnNames","locked","categories","startsWith","_ref3","selectOption","_ref4","_ref5","selected","customToolbarIcon","Columns","ColumnsResource","SelectedColumns","SelectedColumnsResource","getConversionWindow","lookbackWindowInMinutes","windowInMins","hrs","mins","getColumnConfig","_ref7","newi18n","isViewThroughConversionEnabled","IsUETDashboardEnabled","UETDashboard","IsAllowAutoGoalWizard","AllowAutoGoalWizard","_ref8","tag","statusTemplate","isReadOnly","IsReadOnly","_ref9","goal","nameTemplate","goalName","showGoalSuggestion","goalSuggestionAriaLabel","isNonSupportGoal","isAutoGoal","IsAutoGoal","_ref10","smartGoalTemplate","_ref11","_ref12","acctname","Title","_ref13","_ref14","ConversionCountType","_ref15","LookbackWindowInMinutes","_ref16","unassigned","categoryColumnTemplate","_TL_","_ref17","attributionModelTypeStr","_ref18","_ref19","_ref20","_ref6","tagIdTemplate","getTagIdLink","_ref21","trackingStatusTemplate","_ref22","GoalValueType","revenueTemplate","GoalPerformanceMetrics","Revenue","getTimeZoneForDateRangeText","_bingads_webui_component_legacy_timezonemapper_index","PerfDataExplanationView","stampNotes","appendLearnMoreLink","accountTimeZoneText","locals","explanationTemplate","perfDataExplanationPlugin","perfDataExplanationView","appendFootRows","view","classes","GridConfig","preferenceConfig","_ref$options","customHeaderOffset","viewport","tableName","gridName","Goal","primaryKey","Goals","$expand","scrolling","attributes","virtualized","tableClasses","tableAttributes","rows","headRows","helpers","singleToolbarHeadRows","directionIndex","sortableHeaderTemplate","single","validateOrder","ConversionGoalsGrid","_DeterministicWrapper","initializeInstrumentation","$blocker","pgridFactory","pluginFactories","_ref$extendPlugins","extendPlugins","filterService","showPopup","setShowAutoGoalDrawer","resource","isInitialGrid","defaultPlugins","columnChooserConfig","plugin","perfMarkerPlugin","marker","a11yPlugin","assistedSelectionPlugin","dateFilterPlugin","performanceLogPlugin","columnChooserPlugin","paginationPlugin","availablePageSizes","enableRandomPage","pageNumberLabelText","pageSizeText","totalPageCountText","resetPageNumberOnSort","uiBlockerPlugin","placeholderPlugin","container","filteredContainer","filteredEmptyText","ignoreFilters","$in","toolbarPlugin","singleToolbar","onClick","disabled","button","menu","selectedItems","fromGoalEdit","iconLeft","updateAllStatus","getDefaultPlugins","extendedPlugins","toolbar","gridToolbarGroup","toolbarWithName","DEFAULT_TOOLBAR_NAME","changes","handleSortChange","listenTo","updateGridQuery","getCombinedFilter","itemOfElement","navigateToGoalEditingPage","goalId","notificationApi","severity","NotificationLevel","message","navigateToTagIdPage","tagId","Tag","TagViewer","script","TrackingCode","stopPropagation","updateStatusView","itemToUpdate","ViewThroughLookbackWindowinMinutes","UpdateStatusView","extendData","afterChange","err","errCode","responseJSON","Code","ejectAll","beforeRemove","triggerQualtricsEvent","stateWhitelist","closest","scenarios","testConversionGoals","activities","clickOnGoalBulbIcon","clickOnTestThisGoalFromGoalBulbPopup","clickOnTestThisGoalFromTrackingStatusPopup","monitor","relatedTarget","onShowTrackingStatusPopover","testGoalClickActivity","isUnverifiedOrInactive","isNoRecentConversions","isTrackingStatusColumn","contentView","isInPilot","IsConversionAdvisorEntryLinkEnabled","isUETDashboardEnabled","isClarityGoal","ClarityEventDefinitionId","delegateEvents","goalDef","startConversionAdvisor","containerSelector","parentView","popoverClassName","goalItemWithAccountInfo","popupMessage","unassignedCategoryPopoverTemplate","unassignedRevenuePopoverTemplate","smartGoalTypePopoverTemplate","goalReadOnlyPopoverTemplate","selectedItem","afterUpdate","initializeCombinedFilterPromise","DeterministicWrapperView","UETTagsGridDashboardTestConfig","fetchCustomerHierarchy","windowNameStorage","Storage","currentUser","parentCustomerId","ParentCustomerId","currentCustomer","loginCID","IsInternal","fetchCustomerHierarchyPromise","ClientCenterCustomerService","ccBaseUrl","getCustomerHierarchy","returnOnlyDirectlyLinkedEntities","fetchUserPermissionPromise","customerHierarchy","customerHierarchyEntities","currentCustomerId","SharedLibraryUtils","UETTagsDashboardGridTest","_ref$isManagerDashboa","isManagerDashboardView","showAccountListPopup","customerIdType","useAdvertiserCustomerId","parametersColumnTemplate","updateDate","now","delta","getTime","getUETTagDashboardTestGridColumnConfig","updateHandler","IsReadOnlyUser","editablePlugin","onShowParametersReceivedPopover","parametersReceivedPopoverTemplate","ParameterMap","Object","originalItem","patch","editorView","Tags","setErrors","$overall","off","removeCreateView","UETTagsGridDashboardConfig","afterFindAllCallback","granularity","startDateEpoch","endDateEpoch","timeDiff","hoursDiff","daysDiff","monthsDiff","getMonth","getFullYear","URLSearchParams","location","search","timezoneId","performanceTimeSeriesParameters","Granularity","afterFindAll","getQueryStartAndEndDates","fourteenDaysAgoDate","getDate","getHours","getMinutes","dateFormat","raw","ExportData","download","UETDashboardPhase2Enabled","UETDashboardPhase2","waterfallFilterStorage","WaterfallFilterStorage","dateFilter","waterfallDateFilterProcessor","WaterfallFilterType","DateFilter","Customers","$withKey","Accounts","$makeCall","payload","eventAction","toPromise","tagResponse","showInfo","autoDismissTime","showWarning","UETTagsDashboardGrid","onShowPanel","renderThirdPartyIntegrationView","dataColumnTemplate","getUETTagDashboardGridColumnConfig","onGridDataLoaded","EventAction","open","Parameters","s$Tag","schemai18n","_ref$model","groupFields","placeholder","validators","maxLength","blockInput","control","isEditView","tagEntity","vmDefault","IsClarityTagEnabled","editForm","SimpleForm","showButtons","fields","PopupController","PopupJsClick","testUetClarity","createTag","editTag","treeSelection","Others","Total","vm","tagSharingView","Owner","owner","SharingScope","convertSharingScope","getSharingScope","formTemplate","_this$permissions","IsCustomerHierarchyEnabled","IsSharedLibraryPhase1Enabled","userId","ccCustomerService","parentCid","UETTagManageSopeView","scopeOptions","CUSTOMER","account","HIERARCHY","sharingTemplate","getUETTagGridColumnConfig","IsUETDashboardPhase2Enabled","XandrIntegrationEnabled","editable","enableEdit","isEditable","_ref6$value","trackingStatusColumnTemplate","_ref8$value","sharedUsedbyTemplate","number","_$first","goalsTemplate","audienceTemplate","actionColumnTemplate","manageScopePermission","UETTagsGridConfig","_preferenceConfig$dat","isUETTagDeletionEnabled","UETTagsGrid","createMoreTagsPrompt","findByName","Data","getItemCount","UETTagManageScopeDialog","dialogOptions","selectedOption","withFooter","updatedScope","goalsCount","GoalsCount","navigateToGoals","filterExpression","SelectedColumn","SelectedOperator","Values","escapedFilter","encodeURIComponent","audiencesCount","AudiencesCount","navigateToAudiences","isUETDashboardPhase2Enabled","isUETAllTagsDashboard","accountListView","sharingScopePopoverView","containerClassName","UsedBy","usedByPopoverView","tagReadOnlyPopoverTemplate","hideAllToolbars","once","showAllToolbars","ownerIds","customerIds","allCIDCached","_this7","urlTemplate","isOfflineConversionGoalCurrencyCustomerScopeSupported","IsOfflineConversionGoalCurrencyCustomerScopeSupported","initGridConfig","successRows","SuccessCount","RowsProcessed","errorRows","ErrorCount","TotalRows","totalRows","tmpl","hasError","errorsIdentifier","hasUploadError","hasAcrossAllAccountsOfflineConversionGoal","HasAcrossAllAccountsOfflineConversionGoal","ProjectionGrid","vnext","instrumentationSvc","endActivity","initPreviewGrid","initSummaryGrid","errorLog","logError","Url","errorMsgKey","log","op","sessionId","filename","prop","post","TaskId","ExecutionId","TaskItemExecutions","handleGenericError","TaskSessionId","asLoggingStart","instrumentSetting","ACTIVITYNAME","ClickOnApplyChanges","ClickOnDiscard","identifier","resultsIdentifier","downloadService","ClickOnDownloadAllResults","ClickOnDownloadErrorsOnly","ClickOnClose","columnsConfig","datetimeUserTemplate","row","dateHumanizer","StartedAt","toLocaleString","Culture","user","UserName","uploadedFileTemplate","inputFile","OfflineConversionFiles","hasExpectedStatus","Identifier","shouldDisable","IsExpired","summaryTemplate","isPending","isCompleted","successCount","errorCount","errorCodes","Boolean","code","actionsTemplate","resultsFile","errorsFile","resultsId","errorsId","dataConfig","DataSource","OfflineConversionUploadTaskItemExecution","$filter","resizeConfig","getPGridColumnResizePlugin","use","is","getDataId","ClickToDownloadAllResultsInGrid","ClickToDownloadErrorsOnlyInGrid","ClickToDownloadInputFileInGrid","attr","hideFooter","isXandrVideoAd","isMultiAdFormatDisplayAd","isMultiAdFormatVideoAd","_ref$setAdGroupType","setAdGroupType","_ref$setIsDisplayPlus","setIsDisplayPlusNativeEditAdEditor","KoSchema","campaignDomain","isDynamicDescriptionEnabled","isFeedBasedCampaign","selectorLabelId","showCampaignLevel","allowAdCreation","adEditorTitle","saveAnalyticsId","saveCreateAnalyticsId","isDisplayAdWithCopilot","isXandrDisplayAdsCampaign","DisplayPlusCopilotAssetGeneration","isDisplayPlusNativeEdit","isAudienceCampaign","isAudienceNativeAdsCampaign","DisplayPlusEdit","containerClass","hideSaveAndCreateAnother","isSmartShoppingCampaign","MTCampaignTypeEnum","isTraditionalChinese","adsCountMap","adGroupType","DisplayBiddingStrategyType","isXandrVideoAdsCampaign","XandrVideoCampaigns","isDisplayPlusNativeEditEnabled","setClarityTag","IsDisplayPlusAudienceNative","transformAdgroupData","adgroupData","resolve","EntitySelectorService","getAdsCount","console","shouldKeepSmartShoppingCampaignAdGroup","totalCount","onEventTrigger","getCustomizedData","pageNumber","adgroupSelectorView","selectorContainer","hasClass","queryText","signleQuoteTerminatedQuery","$select","$skip","$top","$count","findAll","getAdgroupData","AdgroupSelectorView","fetch","_ref2$query","_ref2$pageNumber","fecthAdgroupData","stringKeys","emptyListContent","listHeader","selectEntity","getCampaignData","campaignData","transformCampaignData","_ref$onCampaignSelect","_ref$onAdGroupSelect","campaignAdgroupSelectorView","_ref2$pageSize","_ref3$query","_ref3$pageNumber","_ref3$pageSize","_ref3$scopeParentItem","scopeParentItem","CampaignAdgroupSelectorView","onFetch","fecthCampaignData","saveIds","ExpandedText","saveCreateIds","_ref$campaignId","_ref$adGroupId","_ref$adGroupType","_ref$campaignType","_ref$campaignSubType","_ref$biddingStrategyT","_ref$isSaveToServer","isSaveToServer","_ref$isTraditionalChi","_ref$appLookupDisable","appLookupDisabled","_ref$developerName","developerName","_ref$campaignDomain","_ref$isDynamicDescrip","_ref$isFeedBasedCampa","_ref$firstTextAdModel","firstTextAdModel","_ref$firstExpandedTex","firstExpandedTextAdModel","_ref$firstResponsiveS","firstResponsiveSearchAdModel","_ref$isForVNext","_ref$inlineSuggestion","inlineSuggestionsEnabled","_ref$adsCountMap","_ref$showSaveAndCreat","showSaveAndCreateAnother","_ref$isOpenCreatePane","isOpenCreatePanel","_ref$shouldSendOpport","shouldSendOpportunityLog","logOpportunity","parentPerfMarker","loadClipchampPlayer","isActiveChild","hasWebsiteImageOptedInObservable","adEditor","AdEditorView","showInline","hasWebsiteImageOptedIn","adId","setAnalyticsId","_type","adgroupSelectorProxy","adgroupSelector","campaignAdgroupSelectorProxy","originalAdEditorScope","isDisplayPlusDisplayAd","saveAndCreateAnother","isTextareaEmpty","isKeywordPlannerEnabled","keywordPlannerView","KeywordPlannerView","mode","newKeyword","addSuggestion","textarea","parser","keywordsTextareaVal","textAreaSubscription","emptySearchTeams","initializeSuggestions","isAfterFirstInteraction","_this$options$adGroup","getLandingPageUrl","Ad","limit","Ads","campaignParams","adGroupParams","load","campaignLocationRes","adGroupLocationRes","landingPageUrlRes","campaignLanguageRes","adGroupLanguageRes","keywordPlannerSupportedLanguages","isLanguageSupported","setLanguages","setLocationTargeting","landingPageUrl","allLocationsUnsupported","onSearch","getChangedKeywords","keywordSuggestionsAdded","dispose","_AdapterView","getQueryOptions","queryOptions","filterText","where","$contains","take","skip","HotelCenterEntitySelectorService","SubAccount","results","subAccount","total","HasPaged","fail","jsDataOptions","SubAccounts","HotelGroups","HotelGroup","SubAccountId","SubAccountName","AdExtensionAssociationSchema","adextensionType","_ref$excludedColumns","excludedColumns","deleteAssociation","editExtension","addExtension","gridContainer","toolbarContainer","typeString","_ref$selection","_ref$heroButtonText","heroButtonText","dataSourceGenerator","adExtensionTabPerfMarker","getGridName","AdExtensionType","AssociationType","hasCampaignNameColumn","hasAdGroupNameColumn","defaultItems","deliveryColumn","entityColumns","VerticalSubAccount","VerticalHotelGroup","idColumn","col","a11y","performanceLog","tabindex","addDateChangeListener","toolbarRow","AdExtensionAssociations","adExtensionTypes","selectable","isAggregateRow","SubAccountAssociationsRequestFactory","ids","getBatchRequest","flatten","idList","EntityId","AdExtensionId","HotelGroupAssociationsRequestFactory","HotelAssociationsRepository","_AssociationsReposito","_schema","requestFactory","batchURL","AssociationsRepository","baseSchema","standardProperties","commonProperties","HotelCenterAdExtensionsRepository","ownedProperties","afterChangeComitted","extensionDataFormatter","associationsDataFormatter","ExtensionsRepository","association","attrsProcessor","attrs","associationAdgroupId","associationCampaignId","associationAccountId","adextensionId","adextensionStatus","deliveryAlertId","ENTITY_MAP","headerRefreshCache","updateFlagRefreshCache","expandToolBar","openAssociationsEditor","currentAdgroupId","adExtensionId","editFromGrid","isStringFormatId","disableScheduling","repositoryFactory","isUINext","createAssociationEditorForUiNext","instantiateEditor","editAssociations","popup","alert","showError","getBulkDeleteItems","deleteMessage","confirm","in","deleteAssociations","deletedItems","associations","mappingAssociationType","createRequestFactory","destroyAllByOdata","HotelCenterBaseAdExtensionAssociationsView","_ref4$excludedColumns","customizedFilterList","dataPostProcess","filterListProcessor","overThresholdErrorMessage","_ref4$isUINext","_ref4$createAssociati","_ref4$extendPlugins","prepareGrid","deliveryStatusPopupFactory","showRejectionPopup","document","one","closeRejectionPopup","_ref5$attrsProcessor","defaultAttrsProcessor","_ref5$shouldNotShowGr","shouldNotShowGrid","_ref6$attrsProcessor","configParams","createAssociations","NewGridConfig","filterConfig","resources","asyncCallback","asyncEmptyText","setupGrid","gridPromise","fetchPreferenceConfig","newDateFilterPlugin","newPaginationPlugin","newUiBlockerPlugin","newAssistedSelectionPlugin","gridOptions","preference","sortInfo","toolbarEditor","itemsCount","deselectAll","cacheManager","invalidate","rejectionContainer","getElementById","style","display","css","ResetImage","removeRejectionPopup","hotelCenterComponentI18n","hotelCenterSharedI18n","HotelCenterAssignmentDeps","viewAdapter","hotelCenterEdm","hotelCenterJsData","crossPageSelectAll","sharedColumn","schemaUtil","customUserInfoPreferences","campaignJsData","dateFilterPreferences","HotelCenterAssignment","hotelCenterAssignmentLoader","CalloutAdExtensionSchema","CalloutAdExtensionAssociationsView","_HotelCenterBaseAdExt","associationOption","CalloutAssociationEditor","findScope","AdgroupSelectorEntityTypeAdgroups","AdgroupSelectorEntityTypeCampaigns","AdExtensionsMultiSelectSelectCampaigns","AdExtensionsMultiSelectSelectAdgroups","maxSelectedItemsCount","AssociationContainer","ErrorGridEntityAdgroupColumn","ErrorGridEntityCampaignColumn","delete_confirm","AdExtensions_Edit_Warning","gridRowTemplate","HotelCenterBaseAdExtensionView","hotelCenterI18n","hotelCenterShared","HotelCenterIntelligenceDeps","azureUpload","toast","calloutExtensionAssociation","segmentationPerferences","servicePreference","customeridtype","HotelCenterIntelligence","hotelCenterIntelligenceLoader","hotelCenterIntelligence","hotelCenterSchemaI18n","hotelCenterUtils","HotelCenterOverviewDeps","detailMapper","bulkEditJob","downloadViewAdapter","columnChooser","newPerformanceLog","popupEditor","jsDataCampaign","segmentationPreferences","columnChooserPreferences","HotelCenterOverview","hotelCenterOverviewLoader","userCountryService","getHotelCenterShared","SetupViewDeps","HotelCenteSetup","setupViewLoader","_getHotelCenterUtils","getHotelCenterUtils","bidUtils","bidMultiplierUtils","dateUtils","inlineDownloadUtils","fetchDbProvisionStatus","getProvisionedUrl","Authorization","isHotelAdsDBPilotEnabled","bootstrapHotelCenter","dbProvisionStatus","dbProvisionResult","getFilterPromise","filterValues","match","subAccounts","getTotalSubaccounts","pageId","isPageReady","logException","stack","st","startPollingUntilImportStarted","taskItemExecutionId","completeCallBack","showLoadingIcon","isMultiAccount","failedTimes","wrappedCompleteCallBack","func","hideLoadingPanel","showLoadingPanel","setTimeout","checkStatus","editImportCookieName","currentUserName","cookieHelperForEditImport","createCookie","taskItemId","cookieValue","expire","setTime","cookie","deleteCookie","getSessionId","editImportCookie","safeJson","upload","file","allowedExtensions","UploadService","validateFunc","ext","urlWithoutSas","ValidatationFailed","safeJSON","customizedCategory","ImportCampaignsClickToUploadFile","SCENARIONAME","ImportCampaignsFileUpload","getImportTemplateUrl","fileName","IsEnhancedShoppingCampaignAllowed","TemplatesPathUrl","initFileImportPage","settings","commonDeps","createDeps","azureUploader","importTemplateUrl","defaultLogActivity","logActivities","clickOnImportFromFile","renderImportColumnMatching","fileimport","renderImportOptions","renderImportPreview","renderImportSummary","FileImportPage","currentStep","importId","subFieldsBlacklist","getBlacklist","initGapi","initDeps","isMultiAccountImport","google","clickOnImportFromGoogleAdWords","initGoogleImportDeps","UetTagSelectorView","logScenario","googleimport","renderSelectAdWordsAccount","renderSelectAdWordsCampaigns","logInAccount","selectAccount","selectCampaign","configureOptions","completeSchedule","initGoogleImportPage","MultiAccountGoogleImportPage","GoogleImportPage","initFacebookImportDeps","getEnvironment","domain","token","loadFacebookSdk","sdk","clickOnImportFromFacebook","FB","facebookimport","initFacebookImportPage","FacebookImportPage","initAmazonImportDeps","clickOnImportFromAmazonSPA","amazonimport","renderSelectAmazonAccount","renderSelectAmazonCampaigns","initPinterestImportDeps","clickOnImportFromPinterestSPA","pinterestimport","getBlackList","statusOrderToBlockerTitleMap","statusKeyToOrderMap","PendingExecution","NotStarted","UploadInProgress","ValidationInProgress","ValidationCompleted","BulkFileGenerateInProgress","SubmitInProgress","Complete","i18nAmdLoader","interpolate","importFromAmazonSPA","importFromPinterestSPA","importFromFacebookSPA","importFromFileSPA","importFromGoogleAdWordsSPA","continueImport","continueImportSPA","clickOnImportFromFacebookSPA","clickOnImportFromFileSPA","clickOnImportFromGoogleAdWordsSPA","loadContinueImport","loadContinueImportSPA","coupon","currency","check","dependencyName","timeZoneEnumMapper","generateCombinedSchemaObject","doubleListBox","accountSelectionLists","campaignFilterFactory","FilterStorageFactory","featureName","adGroupFilterFactory","adFilterFactory","campaignFilterStore","filterEntityOptions","entitySchema","adgroupFilterStore","adFilterStore","formatCoupon","SearchTermGridId","AuctionInsightsGridId","CampaignTabId","AdGroupTabId","AdsTabId","KeywordsTabId","ProductsGroupId","FlattenProductsGroupId","AudienceTabId","AdExtensionsTabId","ChangeHistoryTabId","DimensionsTabId","AdGroupStatusFilterColumnName","KeywordNameFilterColumnName","LocationsTabId","DevicesTabId","AdScheduleTabId","DemographicsTabId","AdDescriptionFilterColumnName","AdExtensionCampaignAssociationStatus","AdExtensionAssociationStatus","KeywordMatchTypeColumnName","CampaignEntity","AdGroupEntity","AdEntity","KeywordEntity","SearchTermEntity","AuctionInsightEntity","AudiencesAssociationEntity","AccountEdmEntity","AdGroupCriterionEdmEntity","CampaignCriterionEdmEntity","CampaignEdmEntity","DynamicSearchAdsEdmEntity","AdGroupEdmEntity","AdEdmEntity","KeywordEdmEntity","ClickMetricId","NoneMetricId","InlineChartDropDownOption","filterOptionId","resultData","GranularityDropDownOption","_Backbone$Collection","option","usingNewDatefilter","dateObj","_possibleConstructorReturn","daterange","appliedRange","comparedDateRange","appliedComparedRange","mainDateDiff","_calculateDiff","comparedDateDiff","hourlyStartDate","setMonth","hourlyOptionDisabled","dailyOptionDisabled","_calculateDisabled","weeklyOptionDisabled","monthlyOptionDisabled","quarterlyOptionDisabled","Infinity","longerPeriod","round","dateDiff","min","max","ChartDelegateAdapter","_DelegateAdapter","dateParsedArray","request","sd","convertToDateObj","ed","numb","getYear","prependZero","getSeconds","rtnData","metricOption","obj","MetricName","PrimaryDataPoints","ComparisonDataPoints","_fillData","compareStartDate","dataPoints","i","generateFormattedDateString","random","addHour","numbOfdataPoints","numberOfDataPoints","addDay","addMonth","generateMockData","DelegateAdapter","getMetricLocalizedNameForOdata","metric","convertedString","DataProvider","p$jsdata","_generateRequest","useInlineChartMockData","getParameter","href","_fetchDataUsingMockDBAdapter","_fetchDataUsingOdataAdapter","refreshGridData","transformedMetric","metricMapping","allMetrics","m","chartNameConverter","parentLevels","edmEntity","currentEntity","_getEntityCollectionName","Constants","period","_formatDateString","compareEndDate","metrics","filters","movingAverage","isMovingAverageOn","forceRefresh","filterRequested","filtersTypeString","filtersToUse","valueValid","instrument","decodeURIComponent","odataFilterConverter","convertToURLParam","instrumentConsts","PerformanceTimeSeries","_getScope","_prepareData","dateStr","leftPadding","s","dt","series","chartName","chartNameTable","convertData","point","isPrimaryData","PrimaryData","ComparisonData","DateTime","substring","dateTime","transformChartPoints","_getNavigation","nav","nameMapping","Account","NegativeKeyword","NegativeKeywordList","CampaignCriterion","AdGroupCriterion","currentLevel","InlineChart","definitions","getInlineChartInfo","project","record","inlineChartData","keyRecord","BPromise","setInlineChartInfo","inlineChartInfo","newinlineChartInfo","defineResource","registerSubadapter","PreferencesSubadapter","Resource","prefix","_ref$where","_ref$where2$project","serialize","deserialize","InlineChartViewModel","learnMoreLabel","isUsingVnextGrid","tab","isMovingAverageChecked","primaryMetricId","secondaryMetricId","chartDataProvider","showChart","chartTitle","isDataAvailable","noDataText","isComparisonDataMissing","comparisonDataMissingText","showMovingAverageText","newFeatureLabel","isChartLoading","isGranularityShowing","xAxisStartValue","xAxisEndValue","comparedXAxisStartValue","comparedXAxisEndValue","hideToolbar","hideToggleIcon","isDataFetchingDone","isPopOn","isMovingAverageVisible","daysBetween","granularityOptions","granularityId","primaryMetricOptions","secondaryMetricOptions","cachedChartData","_getChartDataWhenSubscribed","comparedStartDate","comparedEndDate","primaryData","secondaryData","selectedPrimaryCategory","selectedSecondaryCategory","maxDate","needUpdateChart","chartUpdatingPromise","queueAsync","BluebirdPromise","prefObj","_metricSelectedHandler","allColors","CurrentTabId","reloadChartData","_getParentLevels","filterUrlParam","filterObj","_getDefaultEntityBaseOnParentLevels","filterString","odataV4","ignoreCase","encodeURI","_validateFilter","flagUpdateChart","p$granularityOptions","promiseResults","dateRangeRes","_getChartTitle","dateRangeObj","showMovingAverageInPref","granularityInPref","granularityItem","firstEnabledGranularity","metricOptions","primaryMetric","primaryIdInPref","secondaryMetric","secondaryIdInPref","isAgeOrGenderTab","unshift","_updateChart","InlineChartV2ReloadChart","timestamp","Highcharts","_getQuarter","selectedCategory","metricData","primarySum","comparisonSum","primaryAvg","comparisonAvg","dataObj","avgDiff","getUTCMonth","chartContext","_getChartData","xAxisStartDate","xAxisEndDate","_alignDataForComparison","_refreshAllCharts","_logChartData","fetchData","chartData","_setCategoryAndData","colors","currentData","comparisonData","color","original","xAxis","comparative","yAxis","dataObservable","categoryObservable","_getChartDataForMetric","dataSet","shortermetricData","longermetricData","diff","diff1","dayAfter","dayInMillisec","primaryDataDateDiff","comparisonDataDateDiff","CampaignState","metricId","colorRGB","constructor","numericSymbolFormatter","tickValue","tickInterval","numberFormatter","decimalPoint","thousandsSeparator","sign","formattedNumber","absTickValue","absTickInterval","numericSymbolKeys","absTickValueStr","dotIdx","legacy$","InlineChartView","needRedraw","inlineChartViewModel","_onShowChartChanged","_onGranularityOptionsChanged","_onPrimaryMetricOptionsChanged","_onSecondaryMetricOptionsChanged","_onPrimaryDataChanged","_onSecondaryDataChanged","onGridPageLoadingHandler","_onGridPageLoading","onTabChangeHandler","_onTabChange","inlineChartTemplate","_toggleOldNewInlineChart","_insertToolBarIfNeeded","_onGridPageLoadingNewGrid","triggeredGridPageLoading","pageTitle","chartContainer","pageTitleInclusiveWidth","width","parseFloat","highChartContainer","triggerHandler","_showNewChartOnCurrentTab","commandType","RefreshGridData","filterEntity","Entity","granularityDropdown","DropdownView","first","defaultOption","dropDownOptions","onDropDownChanged","onGranularitySelected","primaryMetricDropdown","onPrimaryMetricSelected","onPopEnabled","calculatePercentageDiff","secondaryMetricDropdown","onSecondaryMetricSelected","_redrawChart","_isDataFetchingDone","chartIteration","chartRedrawMarker","logActivityDurationMarker","self","ChartView","showWeekend","koModel","highchartsOptions","tooltip","formatter","primaryPoints","comparisonPoints","tempHtml","points","x","_numberWithCommas","_round","y","_isPercentNeeded","labels","axis","lang","_updateMetricDropdownDiff","markEnd","_showOldChartOnCurrentTab","_toggleToolbar","hideChartToolbar","tabsWithNewInlineCharts","globalToolBar","globalToolBarPanel","appendTo","insertAfter","showDiff","triggerShowDifference","num","seriesName","numberWithCommas","dotIndex","selectQueryPrefix","ColumnConversionNotEnabledFeatures","setGridPreference","_ref$SegmentationType2","_slicedToArray","SegmentationType","QueryString","queries","substr","getGridColumnNames","customColumn","getGridColumnConversions","withPartialConversion","patchedColumns","applyColumnConversions","buildColumnConversions","setSegType","setDateRangeForNewUI","Rule","convertSelectionDateRangeToDateFilter","restoreDateFilter","_Rule$Selection","setPreferenceByReportEmailRule","ReportEmailRule","getGridPage","isForNewUI","setPreferenceByReportEmailRuleForAccountsSummary","setPreferenceByReportEmailRuleForHotelCenter","_Rule$Selection2","convertSelectionDateRangeToState","initializePreference","setPreferenceByReportEmailRuleForCampaigns","currentPage","createSimilar","reportId","getUrlSearch","scopeHistoryPush","TaskItem","TaskItems","page","route","getGridRouteForNewUI","getGridRoute","loadEmails","allUsersType","queryString","json","emails","getImportButtonOptions","importChannelType","lazyInject","iconLeftGlyphName","backboneGridView","processBatchedImports","groupedByBatch","importResult","CampaignSplitGuid","sortedGroupedList","group","minDateIndex","StartDateTime","sortedGroupWithParentList","parent","batchImportGroup","firstInBatchIndex","statisticFields","EntityStatistics","initStatistics","entityStatisticChangeTypes","initialEntity","isBatchStillInProgress","hasAnyBatchedImportFailed","hasAnyBatchedImportBeenCancelled","Keys","combinedStatistics","entityStatisticMap","ErrorCode","ImportStatus","TotalCount","ImportName","ErrorFileIdentifier","CampaignSplitStatus","CampaignSplitBatchIndex","CampaignSplitBatchCount","IsBatchParent","createParentRowForBatchedImports","processedGroup","indexTemplate","indexText","IsChildBatch","reverse","testTypeSuffix","IsUseImportTestTypeForImportTaskExecutionEnabled","FILTER_IMPORT","FILTER_MULTIACCOUNT_IMPORT","FILTER_FILE_IMPORT","FILTER_FACEBOOK_IMPORT","FILTER_AMAZON_IMPORT","FILTER_PINTEREST_IMPORT","processData","groupedByAccount","isCustomerLevel","processedItem","ImportResultList","accountitem","IsChildAccountTask","MultiAccountTaskIndex","MultiAccountTaskCount","processMultiAccountBatchedImports","getImportLogDataSourceConfig","_ref$isFacebookImport","isFacebookImport","_ref$isAmazonImport","isAmazonImport","_ref$isPinterestImpor","isPinterestImport","supportedImportTypes","TaskItemExecution","consts","processedData","IMPORT_TYPE","amazonImport","pinterestImport","getMemoryDataSourceConfig","updateMemoryGrid","currentGrid","updateTaskItemSessionId","taskId","logMsg","adWordsSessionId","createImportTaskItemHelper","getGoogleImportInfoFromCookie","googleSessionId","AdWordsImportContext","AdWordsSessionUserId","SessionType","ImportUserPreferences","showSuccess","findImportTaskItem","amdI18n","config1","importSettingsSummaryBuilder","ImportOptionsSummaryBuilder","fileImportSettingsSummaryBuilder","FileImportOptionsSummaryBuilder","fileImportOptionBlackList","getFileImportOptionBlackList","facebookImportOptionBlackList","getFacebookImportOptionBlackList","amazonImportOptionBlackList","getAmazonImportOptionBlackList","pinterestImportOptionBlackList","getPinterestImportOptionBlackList","getDropdownItemConfig","isFirstDropdownOption","viewFactory","setErrorFilterPredicate","refreshGrid","setMenuTitle","getGridSwitchDropdownItem","isGoogleImport","getToolbarConfig","isSmartAccount","isUPSmartAccount","importType","setImportType","updateToolbarTextForVNext","importButtonOptions","Map","getVNextToolbarConfig","isNewFeature","leftIconClass","getLegacyToolbarConfig","mapTypeToString","isAutomated","multiAccountTaskGuid","getColumnsConfig","freqColumnTmpl","Freq","UploadFileName","fileNameExists","nameTmpl","creatorColumnTmpl","Creator","CreatedAt","Time","enabledOptions","settingsText","importSettings","ImportUserPreference","parsedValue","parseModelToImportUserPreference","parseJsonFormatImportOptions","showSmartType","IsSmartImportEnabled","IsSmartImport","importOptionBlackList","generateSummaryFromSelectedOptions","preferencesLogTmpl","showTooltipIcon","importSettingsLabel","importSourceAccountInfo","GoogleAccountName","GoogleCustomerId","ExternalAccountName","ExternalCustomerId","importTypeTmpl","IsAutomated","MultiAccountTaskGuid","IsGoogleImport","IsFacebookImport","IsAmazonImport","IsPinterestImport","ImportSourceAccountInfo","importSummaryColDataToTemplate","stat","HasWarning","hasErrorSummary","ImportNewErrorSummaryDownloadLink","ErrorSummaryFileIdentifier","hasPreview","hasErrorCode","TokenInvalidImportNotification","logColumns","columnData","actionsLogTmpl","errorDetailsLabel","GoogleImportLogConfig","pluginsConfig","gridMarker","FacebookImportLogConfig","AmazonImportLogConfig","PinterestImportLogConfig","FileImportLogConfig","showGoogleImportGrid","showFacebookImportGrid","showAmazonImportGrid","showPinterestImportGrid","showFileImportGrid","isFirstSwitch","showNoGoogleImportMsg","showNoFileImportMsg","showNoFacebookImportMsg","showNoAmazonImportMsg","showNoPinterestImportMsg","ImportSettingsTooltipView","formView","importSettingsTooltipTmpl","debouncedVersion","debounce","MultiAccountTaskExecutionId","ImportId","MultiAccountTaskId","IMPORT_TYPE_TO_IMPORT_NAME","toolbarConfig","overridingEvent","importOptionsFormLoader","summaryTableLoader","uetTagSelectorViewLoader","previewAnImport","cancelAnImport","googleImportGridRendered","googleImportGrid","facebookImportGridRendered","facebookImportGrid","amazonImportGridRendered","amazonImportGrid","pinterestImportGridRendered","pinterestImportGrid","fileImportGrid","showAllImports","execution","which","preventDefault","pageText","pageNumberText","getColumnData","dismissCallout","UseJsGapiClientOnImportLogGrid","GSILocal","require","loginRepo","GoogleLoginRepository","googleSignIn","onFail","useConsentPrompt","requestUrl","AuthCode","authErrors","handleGoogleLoginAuthError","w","h","errorMessage","windowWidth","windowHeight","documentElement","screen","dualScreenLeft","screenLeft","left","dualScreenTop","screenTop","top","innerWidth","clientWidth","innerHeight","clientHeight","newWindow","focus","timer","setInterval","closed","clearInterval","windowObj","isRedirected","isAuthSucceed","googleAccount","close","showGooglePopup","partial","facebookRepo","FacebookImportRepository","ERROR","login","accessToken","refreshScheduledFacebookImportTaskItemSessionId","onPermissionsDeclined","_ref6$declinedScopesA","declinedScopesAndDesc","userID","declinedPerms","ds","handleFacebookLoginError","rerequest","pinterestLoginRepo","PinterestLoginRepository","pinterestImportRepo","PinterestImportRepository","authCode","startPinterestSession","PinterestImportContext","PinterestSessionUserId","updateScheduledImportTaskItem","handlePinterestLoginError","noGoogleImportMsg","noFacebookImportMsg","noAmazonImportMsg","noPinterestImportMsg","noFileImportMsg","initGrid","ToolbarView","iconRight","onChange","getGridSwitchToolbarConfig","pgrid","flow","headerTemplateConfig","initUpdateFinishedEventListener","hasNoResult","countRows","currentTarget","tooltipView","$targetTooltip","$parent","eventName","uniqueId","ImportOptionsForm","searchAndReplaceSchema","ImportSearchAndReplaceForStringProperty","findAndReplaceSuffixSchema","jsonFormatImportOptions","ImportUpdateEntityPreference","LandingPageAppendPreference","ImportAppendDestUrlPreference","LandingPageReplacePreference","ImportSearchAndReplaceDestUrlPreference","AppendTrackingTemplatePreference","AppendPreferencesForTrackingTemplate","SearchAndReplacePreferencesForTrackingTemplate","ImportPrefixAndSuffixForStringProperty","ImportAdjustmentForNumericProperty","SearchAndReplaceForCustomParameters","SearchAndReplaceForFinalURLSuffix","createDisabledUETSelectorClass","input","toolTipTmpl","hideTooltip","showSummaryDetailsPopup","UploadFileIdentifier","redirectUrl","blockerElem","UIBlockerToken","UIBlocker","block","$http","__RequestVerificationToken","contentType","unblock","_ImportLogGridBase","importOptions","summaryTable","uetTagSelector","ImportLogGridBase","TEST_TYPE_SUFFIX","FILTER_OUT_RUNNOW","FILTER_IMPORT_TYPE","FILTER_FACEBOOK_IMPORT_TYPE","FILTER_MULTIACCOUNT_IMPORT_TYPE","FILTER_AMAZON_IMPORT_TYPE","FILTER_PINTEREST_IMPORT_TYPE","FILTER_ALL_ITEMS","FILTER_ALL_BUT_DELETED","FILTER_ALL_ITEMS_MULTIACCOUNT","FILTER_ALL_BUT_DELETED_MULTIACCOUNT","FILTER_ALL_FACEBOOK_ITEMS","FILTER_ALL_BUT_DELETED_FACEBOOK_ITEMS","FILTER_ALL_AMAZON_ITEMS","FILTER_ALL_BUT_DELETED_AMAZON_ITEMS","FILTER_ALL_PINTEREST_ITEMS","FILTER_ALL_BUT_DELETED_PINTEREST_ITEMS","preferenceUploadButtonConfig","legacyI18n","publicPath","showTopOfGridPanel","logTrace","instrumentationConstants","preferenceUploadViewModule","gridToolbar","preferenceUploadView","PreferenceUploadView","scrollTo","batchEditStatus","adoptResumeScheduleRecommendation","ruleId","batchRequest","ajaxBatch","textStatus","some","updateToolbarText","getToolbarConfigForVNext","historyGridFilterTitles","AccountMode","ACCOUNT_MODE","SMART","UNIFIED_SMART","isImportPausedCampaignNotificationEnabled","ImportPausedCampaignNotification","getSupportedImportTypes","isMixedImports","isGoogleImportOnly","isFacebookImportOnly","isAmazonImportOnly","isPinterestImportOnly","googleAll","googleDeleted","facebookAll","facebookDeleted","amazonAll","amazonDeleted","pinterestAll","pinterestDeleted","importTypeOfFilter","getDefaultImportTypeOfFilter","toolbarSelectedConfig","_lazyInject$backboneG","ima","taskIds","v","instrumentation2","showPauseScheduledImportDialog","onContinue","toolbarUnselectedConfig","isFiltered","updateUnselectedToolbarConfig","getUnselectedToolbarConfig","getPluginsConfig","batchEditCallback","pos","IsAutoFrequency","statusColumnTmpl","runNowStatusColumnTmpl","ImportPreferenceUpload","idTmpl","taskTmpl","FacebookImportContext","AmazonImportContext","IsFacebookImportEnabled","IsAmazonImportEnabled","IsPinterestImportEnabled","enabledImportTypes","accountNumber","CustomerId","ProfileId","acctTmpl","EmailAddress","AccountName","AccountNumber","importFreqColDataToTemplate","modeTmpl","notificationType","arr","emailMapper","showRecommendation","allowEdit","enableRunNowButton","importRecommendationListName","importRecommendationListNameMap","importChannel","importChannelNameMap","supportedRecommendationTypes","supportedRecommendationTypesList","ifTypeSupported","linkTmpl","edit","runNow","dash","recommendationText","ImportScheduleGridConfig","getDataSourceConfig","getImportScheduleDataSourceConfig","MultiAccountGoogleImportTaskItem","ImportTaskItem","getJsDataOptions","urlParameters","createRunNowImport","body","createUpdateStatusView","Grid","Model","valueOf","beforeChange","columnView","updateToStatus","changeStatus","useStateInsteadOfStatus","addImportTypeToStatusUpdate","ignoreEmptyId","levelClasses","getClassesByLevel","updateTool","addClass","factoryContainer","processAction","toolBarView","shouldHideToolbar","arg","showToolbar","projection","deep","btnConfig","toolItem","Button","dropdownConfig","menuItems","tmpView","tmpDropdown","DropDown","isAvailable","btnMenuItemConfig","ButtonMenuItem","linkAction","DividerMenuItem","headerMenuItemConfig","HeaderMenuItem","toolNameList","dependencies","shift","toolItems","GridToolbar","configToolItems","tmpItem","appendItems","forEach","onAttachToolbar","showNoFilteredImportMsg","ImportScheduleAccountsDetailView","projectionGrid","CNMarketExpansion","BaiduFileImport","gapiSignInSuccess","reloginToGoogle","reloginToFacebook","hasReLoggedIn","login2FB","startFacebookSession","_ref4$declinedScopesA","logout","gapiSignInMultiAccountSuccess","vNextToolbarPlugin","scheduleItems","runMultiAccountImportNow","runImportNow","ImportTaskItemList","_ref6$AdWordsImportCo","bingAccount","targetRect","getBoundingClientRect","isAbsolute","right","indicator","editDropDown","enable","disable","useQuickFilter","filterCheck","checkEditButton","noImportMsgHeader","noFilteredImportMsg","renderGrid","isRunnow","currentUserId","propertyOf","amazonLoginRepo","AmazonLoginRepository","amazonImportRepo","AmazonImportRepository","startAmazonSession","handleAmazonLoginError","reloginToAmazon","reloginToPinterest","goToGoogleImportWizard","_ref7$importStep","importStep","navigator","routeName","isString","returnUrl","navigateToUrl","handleActionForScheduledImport","setDestination","handleActionForMultiAccountScheduledImport","ifUpdated","isFileImportODataMigrationEnabled","FileImportContext","FilePath","runImportNowInternal","updateData","closeEditPanel","editTaskSaveInternal","taskItemOptions","FacebookSessionUserId","notificationString","UpdateAdCustomizerFeeds","ImportNewAdCustomizerFeeds","applyRecommendationInternal","SetLowerBidsToAdCenterMinBids","EnableAutoCurrencyConversion","runMultiAccountImportNowInternal","isSmartImportWizardJob","facebookBody","AdGroupMedium","ImportType","triggerRunNowImportTask","amazonBody","pinterestBody","adWordsImportContext","isSmartCampaignOnlyJob","IsSmartCampaignOnly","isPmaxRecommendationJob","DefaultImportSettings","TaskType","Event","prepareGoogleImport","importUserPreferences","timeZoneId","market","CustomerMarket","adGroupMedium","googleCustomerId","loginCustomerId","LoginCustomerId","campaignIds","CampaignIds","googleEntitiesBlobName","GoogleEntitiesBlobName","sessionType","initialAdWordsAccount","googleAccountName","IsEscImport","prepareMultiAccountGoogleImport","importUserPreference","importTaskItemList","originalTaskId","promisifyStartPollingUntilImportStarted","handleGridErrors","_ImportScheduleGridBa","ImportScheduleGridBase","getBlobUploadUrl","_asyncToGenerator","_regeneratorRuntime","_callee","_ref$fileExtension","wrap","_context","prev","next","fileExtension","sent","abrupt","stop","_x","postTask","_x2","_postTask","_callee4","BlobName","SasUrl","_ref3$UploadDateTime","UploadDateTime","_context4","FileIdentifier","UploadedFileName","postPreviewTask","_callee2","_context2","_x3","postCommitTask","_callee3","_context3","_x4","pollExecutionResult","PREFERENCE_UPLOAD_STATUS","NotStart","Upload","Preview","Apply","Previewed","Applied","PREFERENCE_UPLOAD_ERROR_MAP","InvalidImportPreferenceBulkUpdateTaskType","ImportPreferenceBulkUpdateUploadFileSizeExceeded","ImportPreferenceBulkUpdateBlobDownloadError","ImportPreferenceBulkUpdateBlobUploadError","ImportPreferenceBulkUpdateFileFormatInvalid","ImportPreferenceBulkUpdateFileIsEmpty","ImportPreferenceBulkUpdateFileMissingHeaderRow","ImportPreferenceBulkUpdateColumnTaskIdNotFound","ImportPreferenceBulkUpdateColumnAccountIdNotFound","ImportPreferenceBulkUpdateColumnPreferenceNotFound","ImportPreferenceBulkUpdateColumnImportTypeNotFound","ImportPreferenceBulkUpdateParseFailedInvalidValuesInDataRows","renderPerfMarker","FilePicker","initFilePicker","defaultState","isApplyEnabled","hideFilePicker","isPreviewEnabled","uploading","showSummaryGrid","downloadPath","progressPercentage","progressTitle","filePicker","theme","allowedFileExtensions","validator","clearError","displayFilePath","preferenceUploadTemplate","uploadAndPreview","downloadResults","templateUrl","iframeDownload","_uploadAndPreview","_yield$getBlobUploadU","uploadService","previewTask","previewResult","previewPerfMarker","willFetchData","fileObject","FilePayload","getFileExtension","blobSetting","blobName","onUploadFinish","t0","_apply","_this$getState","commitTaskSasUrl","commitTask","commitResult","applyPerfMarker","getState","isPreview","done","OutputFileSasURL","logStage","InputFileName","willRender","_this$getState3","ProgressIndicator","percentComplete","hourMapper","hourObj","fromHourOptions","twelveHourDisplay","frequencyMapper","cron","char","dayOfTheWeek","isAuto","getTimeZoneOptions","productData","defaultAdGroupName","getAd","AdGroupName","PromotionalText","getProductPartition","BidAmount","ProductCondition","ProductValue","IsExcluded","IsLeaf","formatCriterions","campaignTargetingModel","dayTimeCriterions","deletedLocationCriterions","sort","__","b","bulkUpsertSmartShoppingCampaign","_ref2$campaignId","_ref2$adgroupId","timezonemapper","campaignTargeting","campaignSetting","shoppingSettingModel","shoppingSetting","smartShoppingModel","Priority","adgroupToCreate","getAdGroup","ProductAds","ProductPartitions","ShoppingCampaign","createdCampaign","bulkUpdateSmartShoppingCampaign","getCampaign","createAdGroupWithDefaulSettings","defaultBidForShoppingCampaign","_bingads_webui_component_legacy_legacy_router_index","legacyRouter","modalManager","ModalManager","campaignSettingsView","campaignTargetingView","cachedModel","shoppingSettings","initModalManager","active","campaignInfo","campaignSettingsPlaceholder","shoppingSettingsPlaceholder","campaignTargetingPlaceholder","renderCampaignSettingsView","renderShoppingSettingsView","renderCampaignTargetingView","CampaignSettingsView","gmcToMMCGridDeps","CampaignTargetingView","uniq","bulkApiErrors","i18nError","errMsg","querySelector","getValue","eq","scrollUtil","SSCInstrumentation","oldUISmartShoppingCampaignCreationScenario","SSCCreationActivity","str","messageType","validationError","errorList","_SmartShoppingBase","sscInstrumentation","isStoreNotValid","advancedSettingsViewPlaceholder","renderAdvancedSettingsView","renderGoalSelector","sendPageError","collapseAdvancedSettings","isFeedFilterValid","isFeedLabelEnabled","validateFeedFilter","cashbackSettings","hasCashbackSettings","navigateToCampaignSummaryPage","SmartShoppingBase","_BaseViewModel","configSchema","BaseViewModel","getFeedData","_ref3$","feed","shoppingCampaignView","isSettingsPage","getODataErrors","_ref5$$top","_ref5$$skip","GetFeedData","ChangeBidAdjustmentModel","_BaseModel","BaseModel","prototype","BatchAction","ActionType","settingView","showButtonBar","showCloseButton","selectedEntityCount","gridType","titleText","selectCount","entityNameHeader","bulkEditInfo","showAdgroupSelectedAllMixInheritWarning","isAllSelected","getSelectedEntityIdStrings","LevelOfDetails","getUrlParameter","formatBid","formatEntityString","EntityKeyObject","Key","isHtml","decimalNumber","fromFloatToPercentString","OriginalValue","NewValue","ChangeBidAdjustmentView","_BaseView","customValidators","checkInheritTargets","BidAdjustmentView","ChangeBidAdjustmentViewModel","pgridPlugins","simulateResults","unset","currentModel","BidMultiplier","conditionString","filterState","getAllFilters","idString","filterConverter","convert","conditionFragment","conditionFragmentALl","BaseView","originalValue","ChangeTargetingCashbackPercentView","_ChangeCashbackPercen","getCashbackPercentValueByAction","ChangeCashbackPercentView","toolbarWithItem","menuId","getGridSelectionCount","totalRowsTotalPageCount","selectedKeys","campaignItems","adgroupItems","showAlert","messageDetails","showBulkEditor","bulkEditView","deprecatedLocationSelected","isDeprecatedLocation","checkDeprecatedLocations","inheritResult","updateSelectedEntityCount","renderView","onOperationSuccess","ChangeCashbackPercentModel","editorContainer","overrideWith","updateToolbar","IsPersonalizedOffersEnabled","pollStatus","successCb","failedCb","BulkEditSession","completeCB","failedCB","progressCB","getQueryString","startdate","toISOString","enddate","getDateRange","IdStrings","idStringsFilters","TargetGroupDetailId","bulkEditChange","batchActions","opt","process","toDescription","getFilter","idsCount","deleteTargets","confirmationMessage","emitter","SuccessRowCount","TotalRowCount","toastConfirmation","toastWarning","toastError","_ref$learnMoreId","learnMoreId","CommonAlertDialog","decorate","commonAlert","_ref$title","alertView","maxWidth","center","pug","module","exports","pug_interp","pug_html","locals_for_with","escape","pug_mixins","$$obj","pug_index0","$$l","subTitle","tableRow","Header","CurrencyCode","Price","cssClass","ariaLabelContext","templateString","noHover","statusIconLabel","statusTypeClass","needsPopup","pug_index1","customer","labelledBy","topic","merge","isAudiencesLibrary","helpLink","learnMoreI18n","i18nValue","statusText","statusClass","vals","isResponsiveAdForSSCEnabled"],"sourceRoot":""}