{"version":3,"file":"static/js/application.async.non-landing~1fd42ee2.427fb0b1.chunk.js","mappings":"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","sources":["../../../node_modules/@bingads-webui-campaign/product-group/index.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/viewmodel/base-edit-bid-viewmodel.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/product-group-edit-bid-base.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/product-groups-edit-bid.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/product-groups-inline-edit.js","../../../node_modules/@bingads-webui-campaign/product-group/src/constant.js","../../../node_modules/@bingads-webui-campaign/product-group/src/get-set-grid-factory.js","../../../node_modules/@bingads-webui-campaign/product-group/src/filter/filter-config.js","../../../node_modules/@bingads-webui-campaign/product-group/src/filter/filter-agent-manager.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/single-view-wrapper.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/product-group-inline-chart-wrapper.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/product-group-tab-footer.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/product-groups-edit-bid-boost.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/product-groups-path-util.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/product-groups-columns.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/product-groups-grid-config.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/bid-landscape-popup.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/viewmodel/product-groups-selector.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/double-list-box-config.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/product-groups-selector-dialog.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/viewmodel/product-groups-detail.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/product-groups-detail-view.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/abstract-product-groups-grid.js","../../../node_modules/@bingads-webui-campaign/product-group/src/tree-view/tree-product-groups-grid.js","../../../node_modules/@bingads-webui-campaign/product-group/src/flatten-view/flatten-product-groups-grid.js","../../../node_modules/@bingads-webui-campaign/product-group/src/grid-factory.js","../../../node_modules/@bingads-webui-campaign/product-group/src/product-group.js","../../../node_modules/@bingads-webui-campaign/product-group/src/common/view/upper-toolbar.js","../../../node_modules/@bingads-webui-campaign/product-group/src/deps.js","../../../node_modules/@bingads-webui-campaign/product-group/src/product-group-wrapper.js","../../../node_modules/@bingads-webui-campaign/product-group/src/log/client-logger.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/instrumentation.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/index.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/deps.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/common/view/product-groups-inline-edit.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/common/viewmodel/base-edit-bid-viewmodel.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/constant.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/log/client-logger.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/common/view/product-groups-edit-bid-base.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/common/view/product-groups-edit-bid.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/common/view/product-groups-edit-bid-boost.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/common/view/product-groups-path-util.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/campaign-data.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/common/view/product-groups-columns.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/common/view/product-groups-grid-config.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/common/view/bid-landscape-popup.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/common/viewmodel/product-groups-detail.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/common/view/product-groups-detail-view.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/common/view/single-view-wrapper.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/abstract-product-groups-grid.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/tree-product-groups-grid.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/flatten-product-groups-grid.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/grid-config.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/grid-plugins-config.js","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/product-groups-grid-factory.js","../../../node_modules/@bingads-webui-campaign/projection-grid-enable-with-selection/src/plugin.js","../../../node_modules/@bingads-webui-campaign/projection-grid-io-popup-editor/src/date-popup-editor/date-react-view.js","../../../node_modules/@bingads-webui-campaign/projection-grid-io-popup-editor/src/date-popup-editor/date-prompt.js","../../../node_modules/@bingads-webui-campaign/projection-grid-io-popup-editor/src/spend-cap-amount-popup-editor/spend-cap-amount-react-view.js","../../../node_modules/@bingads-webui-campaign/projection-grid-io-popup-editor/src/spend-cap-amount-popup-editor/spend-cap-amount-prompt.js","../../../node_modules/@bingads-webui-campaign/projection-grid-js-data-raw-data/src/plugin.js","../../../node_modules/@bingads-webui-campaign/product-group/src/template/bid-warning-content.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/bid-warning-title.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/double-list-box-layout.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/double-list-box-selected-item.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/double-list-box-selected.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/double-list-box-source-item.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/double-list-box-source-layout.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/grid-column-adgroup.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/grid-column-bid.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/grid-column-campaign.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/grid-column-condition.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/grid-column-flatten-condition.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/grid-column-warning.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/grid-nodata-placeholder.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/product-groups-detail.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/product-groups-inline-edit-bid.pug","../../../node_modules/@bingads-webui-campaign/product-group/src/template/product-groups-selector.pug","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/template/bid-warning-content.pug","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/template/bid-warning-title.pug","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/template/grid-column-adgroup.pug","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/template/grid-column-bid.pug","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/template/grid-column-campaign.pug","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/template/grid-column-condition.pug","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/template/grid-column-flatten-condition.pug","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/template/grid-column-warning.pug","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/template/grid-nodata-placeholder.pug","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/template/product-groups-detail.pug","../../../node_modules/@bingads-webui-campaign/product-groups-grid/src/template/product-groups-inline-edit-bid.pug","../../../node_modules/@bingads-webui-campaign/projection-grid-io-popup-editor/src/templates/customized-inline-edit-template.pug"],"sourcesContent":["import { getProductGroupsGridFactory } from '@bingads-webui-campaign/product-groups-grid';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { setProductGroupFactory } from './src/get-set-grid-factory';\r\nimport pkg from './package.json';\r\n\r\nexport { ProductGroupsEditBidsView } from './src/common/view/product-groups-edit-bid';\r\n\r\nexport const { version } = pkg;\r\n\r\nexport default globalContext.define(\r\n pkg.legacyDependencies,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n (Promise) => { // eslint-disable-line no-unused-vars, arrow-body-style\r\n return getProductGroupsGridFactory(false).then(({ createProductGroupsGrid }) => {\r\n setProductGroupFactory(createProductGroupsGrid);\r\n return import(/* webpackMode: 'eager' */ './src/index');\r\n });\r\n }\r\n);\r\n","/* eslint new-cap:0 */\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport { KoSchema } from '@bingads-webui/ko-schema';\r\n\r\nexport default class ViewModel {\r\n constructor({\r\n deps,\r\n editSchema,\r\n model,\r\n bidProperty,\r\n validators,\r\n } = {}) {\r\n KoSchema(this, editSchema, _.keys(model), model, {}, deps.i18n);\r\n\r\n _.each(validators, (validatorsOfKey, key) => {\r\n _.each(validatorsOfKey, (validator) => {\r\n _.each(_.omit(validator, 'type'), (value, rule) => {\r\n this[key].validators[validator.type][rule] = value;\r\n });\r\n });\r\n });\r\n\r\n this.bidOptions = [{\r\n text: deps.i18n.getString('ProductGroupsGrid_Bid_Included'),\r\n value: false,\r\n }, {\r\n text: deps.i18n.getString('ProductGroupsGrid_Bid_Excluded'),\r\n value: true,\r\n }];\r\n\r\n this.requiredMessage = ko.computed(() => {\r\n const isValid = this.IsExcluded() ||\r\n !(_.isNull(this[bidProperty]()) || _.isUndefined(this[bidProperty]()));\r\n\r\n return isValid ? '' : deps.i18n.getString('ProductGroupsGrid_BidFormat_Validation');\r\n });\r\n\r\n this.isBidValid = ko.computed(() =>\r\n this[bidProperty].isValid() && _.isEmpty(this.requiredMessage()));\r\n\r\n this.IsExcluded.string = ko.computed({\r\n read() {\r\n return this.IsExcluded() ? 'true' : 'false';\r\n },\r\n write(newValue) {\r\n this.IsExcluded(newValue === 'true');\r\n },\r\n }, this);\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport { getInlineEditableSaveFunction } from './product-groups-inline-edit';\r\nimport ViewModel from '../viewmodel/base-edit-bid-viewmodel';\r\nimport ClientLogger from '../../log/client-logger';\r\n\r\nexport class ProductGroupsEditBidBaseView extends Backbone.View {\r\n initialize({\r\n view,\r\n deps,\r\n model,\r\n bidProperty,\r\n validators,\r\n selectedItems = [],\r\n template,\r\n IsAutoBidding,\r\n } = {}) {\r\n this.isAutoBidding = IsAutoBidding;\r\n this.view = view;\r\n this.deps = deps;\r\n this.logger = new ClientLogger(this.deps.instrumentation);\r\n this.viewModel = new ViewModel({\r\n deps: this.deps,\r\n editSchema: this.genEditSchema(),\r\n model,\r\n bidProperty,\r\n validators,\r\n });\r\n\r\n this.selectedItems = selectedItems;\r\n this.template = template;\r\n this.bidProperty = bidProperty;\r\n this.on('cancel', () => {\r\n this.remove();\r\n });\r\n }\r\n\r\n render() {\r\n this.$el.html(this.template({\r\n i18n: this.deps.i18n,\r\n i18nGlobal: this.deps.i18nGlobal,\r\n bidProperty: this.bidProperty,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n this.validate();\r\n\r\n return this;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .save': 'save',\r\n 'click .cancel': 'cancel',\r\n };\r\n }\r\n\r\n validate() {\r\n if (this.viewModel.IsExcluded() || this.isAutoBidding) { //eslint-disable-line\r\n return true;\r\n }\r\n\r\n const isValid = this.viewModel.validate();\r\n\r\n return _.isEmpty(this.viewModel.requiredMessage()) && isValid;\r\n }\r\n\r\n getErrors(data) {\r\n return _.reduce(data.Records, (memo, record) => {\r\n const errorMessages = _.chain(record.Errors)\r\n .pluck('Message')\r\n .flatten()\r\n .value();\r\n\r\n return _.extend(memo, {\r\n [record.Id]: errorMessages,\r\n });\r\n }, {});\r\n }\r\n\r\n save() {\r\n if (!this.validate()) {\r\n return;\r\n }\r\n\r\n getInlineEditableSaveFunction(this.deps)({\r\n view: this.view,\r\n i18n: this.deps.i18n,\r\n fieldName: this.getFieldName(),\r\n updated: this.getUpdated(),\r\n editorView: this,\r\n editorViewCallbackAfterUpdate: () => {\r\n this.trigger('close');\r\n this.logger.logChangeBidOrBidBoost({\r\n itemId: this.getUpdated().Id,\r\n updated: this.getUpdated(),\r\n level: this.view.level,\r\n isTreeView: this.view.isTreeView,\r\n });\r\n },\r\n });\r\n }\r\n\r\n setErrors(errorMapping) {\r\n this.viewModel.errors(_.values(errorMapping));\r\n }\r\n\r\n cancel() {\r\n this.trigger('cancel');\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport inlineEditTemplate from '../../template/product-groups-inline-edit-bid.pug';\r\nimport { ProductGroupsEditBidBaseView } from './product-group-edit-bid-base';\r\n\r\nexport class ProductGroupsEditBidsView extends ProductGroupsEditBidBaseView {\r\n initialize({\r\n view,\r\n deps,\r\n BidAmount,\r\n IsExcluded = false,\r\n selectedItems = [],\r\n IsAutoBidding,\r\n } = {}) {\r\n this.deps = deps;\r\n this.selectedItems = selectedItems;\r\n this.isAutoBidding = IsAutoBidding;\r\n const IsBidLessThan5CentsInShoppingCampaignEnabled = _.result(this.deps.config.get('Permissions'), 'IsBidLessThan5CentsInShoppingCampaignEnabled');\r\n const ProductGroupBidRange = this.deps.config.get('ProductGroupBidRange');\r\n const accountCurrencyCode = this.deps.config.get('AccountCurrencyCode');\r\n const MinimumBid = _.result(this.deps.config.get('KeywordBidRange'), 'FloorValue');\r\n const range = {\r\n min: IsBidLessThan5CentsInShoppingCampaignEnabled ? _.result(ProductGroupBidRange, 'FloorValue', 0.01) : MinimumBid,\r\n max: _.result(ProductGroupBidRange, 'CeilingValue', 1000),\r\n };\r\n const defaultBidValue = accountCurrencyCode === 'USD' ? 1 : _.result(range, 'min');\r\n this.defaultBid = defaultBidValue;\r\n const bidRange = _.mapObject(range, val => this.deps.decimal.fromFloatToString(val, 2));\r\n const template = inlineEditTemplate;\r\n\r\n super.initialize({\r\n view,\r\n deps,\r\n model: {\r\n Amount: this.getBidAmount(BidAmount),\r\n IsExcluded,\r\n },\r\n bidProperty: 'Amount',\r\n validators: {\r\n Amount: [_.defaults({\r\n type: 'range',\r\n message: this.deps.i18n.getString('ProductGroupsGrid_BidRange_Validation', bidRange),\r\n }, range), {\r\n type: 'type',\r\n message: this.deps.i18n.getString('ProductGroupsGrid_BidFormat_Validation'),\r\n }],\r\n },\r\n selectedItems,\r\n template: values => template(_.defaults(values, {\r\n isBidBoost: false,\r\n bulkEditHeaderText: this.deps.i18n.getString('ProductGroupsGrid_BulkEdit_HeaderText'),\r\n bulkEditLabel: this.deps.i18n.getString('ProductGroupsGrid_BulkEdit_DescriptionText'),\r\n isAutoBidding: this.isAutoBidding,\r\n })),\r\n IsAutoBidding,\r\n });\r\n }\r\n\r\n getBidAmount(BidAmount) {\r\n const bidAmount = _.isUndefined(BidAmount) || _.isNull(BidAmount) ?\r\n { Bid: { Amount: this.defaultBid } } : BidAmount;\r\n const bidValue = bidAmount.Bid.Amount;\r\n return bidValue == null ? this.defaultBid : bidValue;\r\n }\r\n\r\n getUpdated() {\r\n let updated;\r\n if (this.viewModel.IsExcluded()) {\r\n updated = { ..._.pick(this.selectedItems[0], 'Id', 'CampaignId', 'AdGroupId'), IsExcluded: true };\r\n } else {\r\n updated = {\r\n ..._.pick(this.selectedItems[0], 'Id', 'CampaignId', 'AdGroupId', this.getFieldName()),\r\n BidAmount: {\r\n Bid: {\r\n Amount: this.getValue().bidValue,\r\n },\r\n },\r\n };\r\n }\r\n if (!this.viewModel.IsExcluded() && this.selectedItems[0].IsExcluded) {\r\n updated.IsExcluded = false;\r\n }\r\n return updated;\r\n }\r\n\r\n genEditSchema() {\r\n const bidEditSchema =\r\n this.deps.s$ProductGroup.properties.BidAmount.schema.properties.Bid.schema;\r\n bidEditSchema.properties.IsExcluded = this.deps.s$ProductGroup.properties.IsExcluded;\r\n return bidEditSchema;\r\n }\r\n\r\n getFieldName() {\r\n return ['BidAmount', 'IsExcluded'];\r\n }\r\n\r\n getValue() {\r\n const bidValue = this.isAutoBidding ? this.defaultBid : this.viewModel.Amount().toString();\r\n return {\r\n bidValue: this.viewModel.IsExcluded() ? null : bidValue,\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nexport function getInlineEditableSaveFunction(deps) {\r\n return ({\r\n view,\r\n i18n,\r\n fieldName,\r\n updated,\r\n editorView,\r\n editorViewCallbackAfterUpdate,\r\n successCallback,\r\n }) => {\r\n const toUpdate = _.pick(updated, fieldName);\r\n const campaignId = deps.state.get('campaign_id') || updated.CampaignId;\r\n const adGroupId = deps.state.get('adgroup_id') || updated.AdGroupId;\r\n const url = `/Customers()/Accounts()/Campaigns(${campaignId})/AdGroups(${adGroupId})/ProductGroups(${updated.Id})`;\r\n return deps.odata.patch(url, {\r\n data: toUpdate,\r\n }).finally(withUiBlock(view.grid.gridView.$el))\r\n .then(() => {\r\n if (editorViewCallbackAfterUpdate && _.isFunction(editorViewCallbackAfterUpdate)) {\r\n editorViewCallbackAfterUpdate();\r\n }\r\n if (_.isFunction(successCallback)) {\r\n successCallback(updated);\r\n }\r\n deps.cacheManager.invalidate('ProductGroup');\r\n view.grid.gridView.trigger('didInlineEdit', updated);\r\n })\r\n .catch((response) => {\r\n const errorMapping = {};\r\n const unexpectedError = i18n.getString('ErrorNumber_-1');\r\n const fieldKey = _.isArray(fieldName) ? fieldName[0] : fieldName;\r\n if (!response || !response.errors) {\r\n errorMapping[fieldKey] = unexpectedError;\r\n } else {\r\n const errors = deps.getODataErrors(response.errors);\r\n\r\n if (!errors || !errors[0] || !errors[0].message) {\r\n errorMapping[fieldKey] = unexpectedError;\r\n } else {\r\n errorMapping[fieldKey] = errors[0].message;\r\n }\r\n }\r\n editorView.setErrors(errorMapping);\r\n });\r\n };\r\n}\r\n","export const PRODUCT_OFFER_DETAIL_SHOW_DELAY = 600;\r\nexport const PRODUCT_OFFER_DETAIL_CLOSE_DELAY = 600;\r\nexport const FETCH_OFFLINE_STATUS_DELAY = 10000;\r\nexport const PATH_SPLITER = '>';\r\nexport const INLINE_CHART_TOGGLE_BUTTON_ID = 'button-chart-toggle';\r\n\r\nexport const bidType = {\r\n bidValue: 'bidValue',\r\n bidBoost: 'bidBoost',\r\n};\r\n\r\nexport const DEFAULT_CURRENT_PAGE = 0;\r\nexport const MAX_PAGE_SIZE = 20000;\r\nexport const productGroupLevel = {\r\n Account: 'account',\r\n Campaign: 'campaign',\r\n AdGroup: 'adGroup',\r\n};\r\n","let createProductGroupGrid;\r\n\r\nexport function setProductGroupFactory(factory) {\r\n createProductGroupGrid = factory;\r\n}\r\n\r\nexport function getProductGroupFactory() {\r\n return createProductGroupGrid;\r\n}\r\n","import _ from 'underscore';\r\nimport { getCommonFilterConfig } from '@bingads-webui-campaign/common-grid-config';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { productGroupLevel } from '../constant';\r\n\r\nexport function getFilterConfig(deps, level, bidOption = 0) {\r\n const IsCPGForBSCEnabled = _.result(deps.config.get('Permissions'), 'IsCPGForBSCEnabled');\r\n return getCommonFilterConfig({\r\n featureName: 'newProductGroupsGrid',\r\n editor: true,\r\n i18n: deps.i18n,\r\n entitySchema: deps.s$ProductGroup,\r\n sessionStore: deps.sessionStore,\r\n preferenceStoreFactory: deps.preferenceStoreFactory,\r\n globalConfig: deps.config,\r\n schemaI18nCampaign: deps.s$i18n,\r\n cacheService: deps.cacheService,\r\n dataContextManager: deps.dataContextManager,\r\n jsdata: deps.jsdata,\r\n schemaProcessor: {\r\n updateEntitySchemaForFeatures: (originalSchema) => {\r\n const updatedSchema = cloneDeep(originalSchema);\r\n if (!IsCPGForBSCEnabled) {\r\n updatedSchema.properties = _.omit(updatedSchema.properties, ['BidBoostMultiplier']);\r\n }\r\n if (level === productGroupLevel.Account) {\r\n return updatedSchema;\r\n }\r\n if (level === productGroupLevel.Campaign) {\r\n updatedSchema.properties = _.omit(updatedSchema.properties, 'CampaignName');\r\n }\r\n if (level === productGroupLevel.AdGroup) {\r\n updatedSchema.properties = _.omit(updatedSchema.properties, ['CampaignName', 'AdGroupName']);\r\n if (bidOption === 0) {\r\n updatedSchema.properties = _.omit(updatedSchema.properties, ['BidBoostMultiplier']);\r\n } else {\r\n updatedSchema.properties = _.omit(updatedSchema.properties, ['BidAmountBidAmount']);\r\n }\r\n }\r\n return updatedSchema;\r\n },\r\n },\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport { FilterAgent } from '@bingads-webui/filter-agent';\r\n\r\nfunction showExceededSaveLimitError(i18n, filterConfig, tabView) {\r\n const errMsg = i18n.getString('Error_Campaign_API_FiltersExceedsMaxCount')\r\n .replace('{0}', filterConfig.maxSavedFilterLimit);\r\n tabView.alertHelper.showAlert(errMsg);\r\n}\r\n\r\nexport class FilterAgentManager {\r\n initializeFilterAgent = ({\r\n tabView,\r\n toolbar,\r\n filterConfig,\r\n filterService,\r\n }) => {\r\n const { i18n } = filterConfig;\r\n this.filterAgent = new FilterAgent(_.extend(filterConfig, {\r\n toolbarView: toolbar,\r\n filterService,\r\n }));\r\n\r\n this.filterAgent.on('filter-ui-change', (state) => {\r\n tabView.setState({\r\n filterBar: state.showFilterBar ? this.filterAgent.getFilterBar() : null,\r\n filterEditor: state.showFilterEditor ? this.filterAgent.getFilterEditor() : null,\r\n showToolbar: state.showToolBar,\r\n });\r\n });\r\n\r\n this.filterAgent.on('filter-state-changed', ({ filter }) => {\r\n tabView.updateViewWithFilter(filter);\r\n });\r\n\r\n this.filterAgent.on('filter-operation-failed', (errorData) => {\r\n if (errorData.message === 'ExceededSaveLimit') {\r\n showExceededSaveLimitError(i18n, filterConfig, tabView);\r\n } else {\r\n tabView.alertHelper.showUnknownError();\r\n }\r\n });\r\n\r\n this.filterAgent.on('filter-max-reached', () => {\r\n showExceededSaveLimitError(i18n, filterConfig, tabView);\r\n });\r\n\r\n return this.filterAgent;\r\n }\r\n}\r\n","import { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\n\r\nexport class SingleViewWrapper extends DeterministicWrapperView {\r\n initialize(options) {\r\n this.view = options.view;\r\n this.listenTo(this.view, 'all', this.trigger);\r\n this.rendered = options.rendered;\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { INLINE_CHART_TOGGLE_BUTTON_ID } from '../../constant';\r\n\r\nexport default class ProductGroupInlineChartWrapper extends React.Component {\r\n static propTypes = {\r\n deps: PropTypes.objectOf(PropTypes.any).isRequired,\r\n upperToolbar: PropTypes.objectOf(PropTypes.any).isRequired,\r\n hasFilter: PropTypes.bool.isRequired,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.chartView = new this.props.deps.InlineChartView({\r\n filter: {},\r\n entityType: this.props.deps.inlineChartConstants.AdEdmEntity,\r\n isUsingVnextGrid: true,\r\n hideChartToolbar: true,\r\n });\r\n\r\n if (window.App && window.App.views && window.App.views.Summary) {\r\n window.App.views.Summary.bindDateFilterChangeHandler(() => {\r\n /* eslint-disable no-underscore-dangle */\r\n this.chartView._onGridPageLoadingNewGrid({});\r\n });\r\n }\r\n }\r\n\r\n updateToggleButtonOnToolbar = () => {\r\n if (this.props.hasFilter) {\r\n this.props.upperToolbar.view.update({\r\n type: 'button',\r\n id: INLINE_CHART_TOGGLE_BUTTON_ID,\r\n classes: ['btn', 'chart-icon', 'disabled'],\r\n onClick: () => {},\r\n });\r\n } else {\r\n this.props.upperToolbar.view.update({\r\n type: 'button',\r\n id: INLINE_CHART_TOGGLE_BUTTON_ID,\r\n classes: ['btn', 'chart-icon'],\r\n onClick: () => {\r\n this.chartView.inlineChartViewModel.onShowChartButtonClick();\r\n },\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n this.updateToggleButtonOnToolbar();\r\n return this.props.hasFilter ?\r\n null : ;\r\n }\r\n}\r\n","/* eslint-disable react/prop-types */\r\nimport React from 'react';\r\n\r\nexport function ProductGroupFooter(props) {\r\n return (\r\n
\r\n {props.i18n.getString('BITimeStampNotes_Label')}\r\n \r\n
\r\n {props.i18n.getString('MRCAccredited_Label')}\r\n \r\n {props.i18n.getString('MRCAccredited_Label')}\r\n {props.accountTimeZoneText}\r\n \r\n
\r\n
\r\n );\r\n}\r\n","/* eslint new-cap:0 */\r\nimport _ from 'underscore';\r\nimport inlineEditTemplate from '../../template/product-groups-inline-edit-bid.pug';\r\nimport { ProductGroupsEditBidBaseView } from '../view/product-group-edit-bid-base';\r\n\r\nexport class ProductGroupsEditBidBoostView extends ProductGroupsEditBidBaseView {\r\n initialize({\r\n view,\r\n deps,\r\n BidBoost = _.result(_.first(deps.config.get('CurrentAdGroup').Settings), 'BidBoostValue', 1),\r\n IsExcluded = false,\r\n selectedItems = [],\r\n } = {}) {\r\n this.deps = deps;\r\n this.selectedItems = selectedItems;\r\n const template = inlineEditTemplate;\r\n\r\n super.initialize({\r\n view,\r\n deps,\r\n model: {\r\n Multiplier: BidBoost.Multiplier,\r\n IsExcluded,\r\n },\r\n bidProperty: 'Multiplier',\r\n validators: {\r\n Multiplier: [{\r\n type: 'type',\r\n message: this.deps.i18n.getString('ProductGroupsGrid_BidFormat_Validation'),\r\n }],\r\n },\r\n selectedItems,\r\n template: values => template(_.defaults(values, {\r\n isBidBoost: true,\r\n percentSymbol: this.deps.config.get('globalization.number.percentSymbol'),\r\n bulkEditHeaderText: this.deps.i18n.getString('ProductGroupsGrid_BulkEdit_BidBoost_HeaderText'),\r\n bulkEditLabel: this.deps.i18n.getString('ProductGroupsGrid_BulkEdit_BidBoost_DescriptionText'),\r\n })),\r\n });\r\n }\r\n\r\n getUpdated() {\r\n let updated;\r\n if (this.viewModel.IsExcluded()) {\r\n updated = { ..._.pick(this.selectedItems[0], 'Id', 'CampaignId', 'AdGroupId'), IsExcluded: true };\r\n } else {\r\n updated = {\r\n ..._.pick(this.selectedItems[0], 'Id', 'CampaignId', 'AdGroupId', this.getFieldName()),\r\n BidBoost: {\r\n Multiplier: this.getValue().bidBoost,\r\n },\r\n };\r\n }\r\n if (!this.viewModel.IsExcluded() && this.selectedItems[0].IsExcluded) {\r\n updated.IsExcluded = false;\r\n }\r\n return updated;\r\n }\r\n\r\n genEditSchema() {\r\n const bidBoostEditSchema = this.deps.s$ProductGroup.properties.BidBoost.schema;\r\n bidBoostEditSchema.properties.IsExcluded = this.deps.s$ProductGroup.properties.IsExcluded;\r\n return bidBoostEditSchema;\r\n }\r\n\r\n getFieldName() {\r\n return ['BidBoost', 'IsExcluded'];\r\n }\r\n\r\n getValue() {\r\n return {\r\n bidBoost: this.viewModel.IsExcluded() ? null : this.viewModel.Multiplier().toString(),\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { PATH_SPLITER } from '../../constant';\r\n\r\nexport class ProductGroupPathUtil {\r\n constructor({ deps }) {\r\n this.i18n = deps.i18n;\r\n }\r\n\r\n isEverythingElse = condition => condition.Operand && !condition.Attribute;\r\n\r\n isAllProduct = condition => !condition.Operand && !condition.Attribute;\r\n\r\n getNearestParentCondition = ParentConditions => (ParentConditions[ParentConditions.length - 1]);\r\n\r\n getDisplayName = (condition, parentConditions) => {\r\n if (this.isAllProduct(condition)) {\r\n return this.i18n.getString('ShoppingCampaign_AllProducts');\r\n }\r\n const parentCondition = this.getNearestParentCondition(parentConditions);\r\n if (this.isEverythingElse(condition)) {\r\n if (this.isEverythingElse(parentCondition)) {\r\n return this.i18n.getString('ProductGroupsGrid_EverythingElse');\r\n }\r\n return this.i18n.getString('ProductGroupsGrid_EverythingElseIn').replace('{0}', this.getDisplayName(parentCondition, _.initial(parentConditions)));\r\n }\r\n return condition.Attribute;\r\n }\r\n\r\n getPath = (parentConditions) => {\r\n if (!parentConditions || _.isEmpty(parentConditions)) {\r\n return '';\r\n }\r\n let path = '';\r\n path += this.getDisplayName(_.first(parentConditions), []);\r\n for (let i = 1; i < parentConditions.length; i += 1) {\r\n path += ` ${PATH_SPLITER} ${this.getDisplayName(parentConditions[i], _.initial(parentConditions, parentConditions.length - i))}`;\r\n }\r\n return path;\r\n }\r\n\r\n getFullPath = (conditions) => {\r\n const path = [];\r\n for (let i = 0; i < conditions.length; i += 1) {\r\n path.push(_.defaults({\r\n Attribute: this.getDisplayName(conditions[i], _.initial(conditions, conditions.length - i)),\r\n }, conditions[i]));\r\n }\r\n return path;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport { GridCustomizedPopupEditor } from '@bingads-webui-campaign/grid-customized-popup-editor';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { TrackingTemplateColumn, CustomParametersColumn, FinalUrlSuffixColumn } from '@bingads-webui-campaign/tracking-template-columns';\r\nimport conditionTemplate from '../../template/grid-column-condition.pug';\r\nimport flattenConditionTemplate from '../../template/grid-column-flatten-condition.pug';\r\nimport bidTemplate from '../../template/grid-column-bid.pug';\r\nimport warningColumnTemplate from '../../template/grid-column-warning.pug';\r\nimport adGroupNameTemplate from '../../template/grid-column-adgroup.pug';\r\nimport campaignNameTemplate from '../../template/grid-column-campaign.pug';\r\nimport { ProductGroupsEditBidsView } from './product-groups-edit-bid';\r\nimport { ProductGroupsEditBidBoostView } from './product-groups-edit-bid-boost';\r\nimport { ProductGroupPathUtil } from './product-groups-path-util';\r\nimport { getInlineEditableSaveFunction } from './product-groups-inline-edit';\r\nimport { productGroupLevel } from '../../constant';\r\n\r\nconst tableContainerSelector = '.product-groups-grid.bingadsgrid.grid';\r\nconst IsProductGroupBidLandscapeEnabled = deps => _.result(deps.config.get('Permissions'), 'IsProductGroupBidLandscapeEnabled');\r\nconst IsBidLessThan5CentsInShoppingCampaignEnabled = deps => _.result(deps.config.get('Permissions'), 'IsBidLessThan5CentsInShoppingCampaignEnabled');\r\nconst IsAvgPositionDeprecationPhase1Enabled = deps => _.result(deps.config.get('Permissions'), 'IsAvgPositionDeprecationPhase1Enabled');\r\nconst IsCurrentAccountInactive = deps => deps.config.get('CurrentAccountInActive');\r\nconst IsReadOnlyMode = deps => deps.config.get('ReadOnlyMode');\r\nconst NO_DATA_PLACEHOLDER_NONLEAF = '-';\r\nconst NO_DATA_PLACEHOLDER_LEAF = '';\r\n\r\nconst SORT_DIRECTION = [-1, 1];\r\n\r\nexport function shouldEnableEdit(enable, deps) {\r\n return !IsCurrentAccountInactive(deps) && !IsReadOnlyMode(deps) && enable;\r\n}\r\n\r\nexport const productGroupSortIteratee = (item, direction) => {\r\n const condition = item.Condition;\r\n const isEveryThingElseRow = con => !con.Attribute && con.Operand;\r\n\r\n if (isEveryThingElseRow(condition)) {\r\n // No matter order, \"Everything else in ...\" is always in the bottom\r\n // '~' has a lower priority in ASCII order\r\n return direction === 1 ? '~' : '';\r\n }\r\n return item.Condition.Attribute;\r\n};\r\n\r\nconst generatePickProperty = key => (item) => {\r\n if (item.isAggregateRow) {\r\n return NO_DATA_PLACEHOLDER_LEAF;\r\n }\r\n return item.IsLeaf ? item[key] || NO_DATA_PLACEHOLDER_LEAF : NO_DATA_PLACEHOLDER_NONLEAF;\r\n};\r\n\r\n// const emptyValueFormatter = (val, noData = NO_DATA_PLACEHOLDER_LEAF) =>\r\n// (_.isUndefined(val) || _.isNull(val) || _.isEmpty(val) ? noData : val);\r\n\r\nconst renderBidPopupEditor = (deps, bidEditor, myView, position) => {\r\n const popupEditor = new GridCustomizedPopupEditor({\r\n editorView: bidEditor,\r\n cellPosition: position,\r\n tableContainer: tableContainerSelector,\r\n });\r\n\r\n popupEditor.render();\r\n};\r\n\r\nclass ProductGroupColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n super({\r\n name: 'ProductGroup',\r\n property: ['Condition', 'Id', 'ParentId', 'IsLeaf', 'IsExcluded', 'IsAutoBidding', 'IsBidLandscapeEnabled', 'ParentConditions', 'BidOption'],\r\n // Used in tree plugin\r\n title: deps.i18n.getString('ProductGroupsGrid_Column_ProductGroup'),\r\n sortable: productGroupSortIteratee,\r\n });\r\n this.deps = deps;\r\n }\r\n\r\n pickProperty(item) {\r\n return item;\r\n }\r\n\r\n template(item) {\r\n return conditionTemplate(_.extend({\r\n i18n: this.deps.i18n,\r\n showSelectorIcon: shouldEnableEdit((item.hasChildren || item.depth < 7), this.deps),\r\n }, _.pick(item, 'attributeText', 'hasChildren', 'isRoot', 'depth', 'isExpanded', 'total')));\r\n }\r\n}\r\n\r\nclass ProductGroupFlattenColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n super({\r\n name: 'ProductGroup',\r\n property: ['Condition', 'Id', 'ParentId', 'IsLeaf', 'IsExcluded', 'IsAutoBidding', 'IsBidLandscapeEnabled', 'ParentConditions', 'BidOption'],\r\n // Used in tree plugin\r\n title: deps.i18n.getString('ProductGroupsGrid_Column_ProductGroup'),\r\n sortable: 'Condition/Attribute',\r\n });\r\n this.deps = deps;\r\n this.productGroupPathUtil = new ProductGroupPathUtil({ deps });\r\n }\r\n\r\n pickProperty(item) {\r\n return item;\r\n }\r\n\r\n template({ value }) {\r\n if (value.$total) {\r\n return flattenConditionTemplate(value);\r\n }\r\n const condition = { ...value.Condition };\r\n const parentConditions = value.ParentConditions;\r\n condition.Attribute = this.productGroupPathUtil.getDisplayName(condition, parentConditions);\r\n condition.Path = this.productGroupPathUtil.getPath(parentConditions);\r\n return flattenConditionTemplate(_.defaults(condition, { i18n: this.deps.i18n }));\r\n }\r\n}\r\n\r\nclass CampaignNameColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n super({\r\n name: 'CampaignName',\r\n title: 'ProductGroupsGrid_Column_CampaignName',\r\n property: ['CampaignName', 'CampaignId'],\r\n i18n: deps.i18n,\r\n sortable: 'CampaignName',\r\n });\r\n this.cid = deps.pageContext.CurrentCustomer.Id;\r\n this.aid = deps.pageContext.CurrentAccount.Id;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: (value) => {\r\n const {\r\n CampaignId: cmpid,\r\n CampaignName: name,\r\n } = value;\r\n\r\n const href = cmpid ? `#customer/${this.cid}/account/${this.aid}/campaign/${cmpid}/productgroups` : '#';\r\n\r\n return {\r\n name,\r\n href,\r\n };\r\n },\r\n key: this.config.property,\r\n };\r\n }\r\n\r\n get template() { return campaignNameTemplate; }\r\n}\r\n\r\nclass AdGroupNameColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n super({\r\n name: 'AdGroupName',\r\n title: 'ProductGroupsGrid_Column_AdGroupName',\r\n property: ['AdGroupName', 'AdGroupId'],\r\n i18n: deps.i18n,\r\n sortable: 'AdGroupName',\r\n });\r\n this.cid = deps.pageContext.CurrentCustomer.Id;\r\n this.aid = deps.pageContext.CurrentAccount.Id;\r\n this.deps = deps;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: (value) => {\r\n const name = value.AdGroupName;\r\n const adgid = value.AdGroupId;\r\n const currentCampaign = this.deps.pageContext.CurrentCampaign;\r\n // In campaign level, there is no CampaignId in row value\r\n const cmpid = value.CampaignId || (currentCampaign && currentCampaign.Id);\r\n\r\n const href = cmpid && adgid ? `#customer/${this.cid}/account/${this.aid}/campaign/${cmpid}/adgroup/${adgid}/productgroups` : '#';\r\n\r\n return {\r\n name,\r\n href,\r\n };\r\n },\r\n key: this.config.property,\r\n };\r\n }\r\n\r\n get template() { return adGroupNameTemplate; }\r\n}\r\n\r\nfunction getBidOption(bidOption) {\r\n if (bidOption == null) {\r\n return 'BidValue';\r\n }\r\n return bidOption;\r\n}\r\n\r\nclass BidColumn extends CampaignuiBaseColumn {\r\n constructor({ deps, view }) {\r\n const title = deps.i18n.getString('ProductGroupsGrid_Column_Bid');\r\n\r\n super({\r\n name: 'Bid',\r\n title,\r\n property: 'BidAmount',\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'BidAmount/Bid/Amount',\r\n },\r\n helpId: 'Page_CampaignGrids_CurrentBid',\r\n headClasses: ['text-right'],\r\n bodyClasses: ['text-right'],\r\n enableEdit: item => shouldEnableEdit(getBidOption(item.BidOption) === 'BidValue' && item.IsLeaf && (item.IsLeaf || item.BidAmount.Bid.Amount != null), deps),\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n this.view = view;\r\n this.deps = deps;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: item => item,\r\n key: 'BidAmount',\r\n };\r\n }\r\n\r\n template({ value }) {\r\n const showBidValue = value.BidAmount && value.BidAmount.Bid &&\r\n value.BidAmount.Bid.Amount != null && value.IsLeaf && !value.IsExcluded;\r\n const template = bidTemplate(value.isAggregateRow ? {\r\n isAggregateRow: true,\r\n } : {\r\n i18n: this.deps.i18n,\r\n isLeaf: value.IsLeaf,\r\n isExcluded: value.IsExcluded,\r\n // Only leaf node which is not excluded has valid bid\r\n bidString: showBidValue ? this.deps.decimal.fromFloatToString(value.BidAmount.Bid.Amount) : '',\r\n isBidLandscapeAvailable: IsProductGroupBidLandscapeEnabled(this.deps)\r\n && value.IsBidLandscapeEnabled,\r\n isAggregateRow: false,\r\n isAutoBidding: value.IsAutoBidding,\r\n });\r\n // if the template is empty string, the grid cell will show a value of '[object Object]'\r\n return getBidOption(value.BidOption) === 'BidValue' ? template : '';\r\n }\r\n\r\n onPrompt({ position, item, event }) {\r\n if ($(event.target).is(`${tableContainerSelector} .bidlandscape_icon`)) {\r\n return;\r\n }\r\n const bidEditor = new ProductGroupsEditBidsView(_.extend(\r\n _.pick(item, 'BidAmount', 'IsExcluded', 'IsAutoBidding'),\r\n _.pick(this.view, 'campaignId', 'adgroupId'),\r\n {\r\n view: this.view,\r\n deps: this.deps,\r\n selectedItems: [item],\r\n isInlineEdit: true,\r\n }\r\n )).render();\r\n\r\n renderBidPopupEditor(this.deps, bidEditor, this.view, position);\r\n }\r\n}\r\n\r\nclass BidBoostColumn extends CampaignuiBaseColumn {\r\n constructor({ deps, view }) {\r\n const title = deps.i18n.getString('ProductGroupsGrid_Column_BidBoost');\r\n\r\n super({\r\n name: 'BidBoost',\r\n title,\r\n property: 'BidBoost',\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'BidBoost/Multiplier',\r\n },\r\n helpId: 'pop_BA_BMC_BidBoost',\r\n headClasses: ['text-right'],\r\n bodyClasses: ['text-right'],\r\n enableEdit: item => shouldEnableEdit(getBidOption(item.BidOption) === 'BidBoost' && (item.IsLeaf && (item.IsExcluded || item.BidBoost.Multiplier != null)), this.deps),\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n this.deps = deps;\r\n this.view = view;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: item => item,\r\n key: 'BidBoost',\r\n };\r\n }\r\n\r\n template({ value }) {\r\n const showBidBoostValue = value.BidBoost && value.BidBoost.Multiplier != null;\r\n const template = bidTemplate(value.isAggregateRow ? {\r\n isAggregateRow: true,\r\n } : {\r\n i18n: this.deps.i18n,\r\n isLeaf: value.IsLeaf,\r\n isExcluded: value.IsExcluded,\r\n bidString: showBidBoostValue ? this.deps.i18n.formatPercentToFixed(\r\n value.BidBoost.Multiplier / 100,\r\n { digits: 2 }\r\n ) : '',\r\n isBidLandscapeAvailable: false, // Bid landscape is not available for bid boost\r\n isAggregateRow: false,\r\n });\r\n // if the template is empty string, the grid cell will show a value of '[object Object]'\r\n return getBidOption(value.BidOption) === 'BidBoost' ? template : '';\r\n }\r\n\r\n onPrompt({ position, item }) {\r\n const bidEditor = new ProductGroupsEditBidBoostView(_.extend(\r\n _.pick(item, 'BidBoost', 'IsExcluded'),\r\n _.pick(this.view, 'campaignId', 'adgroupId'),\r\n {\r\n view: this.view,\r\n deps: this.deps,\r\n selectedItems: [item],\r\n isInlineEdit: true,\r\n }\r\n )).render();\r\n\r\n renderBidPopupEditor(this.deps, bidEditor, this.view, position);\r\n }\r\n}\r\n\r\nclass WarningsColumn extends CampaignuiBaseColumn {\r\n constructor({ deps, view }) {\r\n const title = deps.i18n.getString('ProductGroupsGrid_ColumnName_Warnings');\r\n\r\n super({\r\n name: 'Warnings',\r\n title,\r\n property: 'Warnings',\r\n helpId: 'pop_BA_ProductAds_BidAlerts',\r\n sortable: false,\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n this.deps = deps;\r\n this.view = view;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: item => item,\r\n };\r\n }\r\n\r\n template({ value }) {\r\n const bidRangeKey = IsBidLessThan5CentsInShoppingCampaignEnabled(this.deps) ? 'ProductGroupBidRange' : 'KeywordBidRange';\r\n const MinimumBid = _.result(this.deps.config.get(bidRangeKey), 'FloorValue');\r\n const bidAmount = value.BidAmount && value.BidAmount.Bid ? value.BidAmount.Bid.Amount : null;\r\n const showBidBoostValue = value.BidBoost && value.BidBoost.Multiplier != null;\r\n return warningColumnTemplate(value.isAggregateRow ? {\r\n isAggregateRow: true,\r\n } : {\r\n i18n: this.deps.i18n,\r\n hasWarning: value.IsLeaf && !value.IsExcluded && bidAmount < MinimumBid && !showBidBoostValue,\r\n warningCount: 1,\r\n });\r\n }\r\n}\r\n\r\nclass DestinationUrlColumn extends CampaignuiBaseColumn {\r\n constructor({ deps, view }) {\r\n const title = deps.i18n.getString('ProductGroupsGrid_Column_DestinationUrl');\r\n super({\r\n name: 'DestinationUrl',\r\n title,\r\n property: 'DestinationUrl',\r\n helpId: 'Page_CampaignGrids_DestinationUrl',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n enableEdit: item => shouldEnableEdit(item.IsLeaf && !item.IsExcluded, deps),\r\n editorConfig: item =>\r\n ({\r\n i18n: deps.i18n,\r\n template: 'inline',\r\n fields: [{ property: 'DestinationUrl' }],\r\n saveModel: (model, editorView) => {\r\n getInlineEditableSaveFunction(deps)({\r\n view,\r\n i18n: deps.i18n,\r\n fieldName: 'DestinationUrl',\r\n updated: _.extend(model, _.pick(item, 'Id', 'CampaignId', 'AdGroupId')),\r\n editorView,\r\n editorViewCallbackAfterUpdate: () => {\r\n editorView.remove();\r\n },\r\n });\r\n },\r\n }),\r\n });\r\n this.deps = deps;\r\n this.view = view;\r\n }\r\n\r\n get pickProperty() {\r\n return generatePickProperty(this.config.property);\r\n }\r\n}\r\n\r\nclass ProductGroupTrackingTemplateColumn extends TrackingTemplateColumn {\r\n constructor({ deps, view }) {\r\n super({\r\n i18n: deps.i18n,\r\n view,\r\n inlineEditableSave: getInlineEditableSaveFunction(deps),\r\n });\r\n this.config.enableEdit = item => shouldEnableEdit(item.IsLeaf && !item.IsExcluded, deps);\r\n }\r\n\r\n get pickProperty() {\r\n return generatePickProperty(this.config.property);\r\n }\r\n}\r\n\r\nclass ProductGroupFinalUrlSuffixColumn extends FinalUrlSuffixColumn {\r\n constructor({ deps, view }) {\r\n super({\r\n i18n: deps.i18n,\r\n view,\r\n inlineEditableSave: getInlineEditableSaveFunction(deps),\r\n });\r\n this.config.enableEdit = item => shouldEnableEdit(item.IsLeaf && !item.IsExcluded, deps);\r\n }\r\n\r\n get pickProperty() {\r\n return generatePickProperty(this.config.property);\r\n }\r\n}\r\n\r\nclass ProductGroupCustomParametersColumn extends CustomParametersColumn {\r\n constructor({ deps, view }) {\r\n super({\r\n i18n: deps.i18n,\r\n view,\r\n inlineEditableSave: getInlineEditableSaveFunction(deps),\r\n permissions: deps.config.get('Permissions'),\r\n });\r\n this.config.enableEdit = item => shouldEnableEdit(item.IsLeaf && !item.IsExcluded, deps);\r\n }\r\n\r\n get pickProperty() {\r\n return generatePickProperty(this.config.property);\r\n }\r\n}\r\n\r\nclass PerfSpendColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_Spend');\r\n\r\n super({\r\n name: 'Spend',\r\n title: 'ProductGroupsGrid_Column_Spend',\r\n property: 'PerformanceMetrics/Spend',\r\n helpId: 'Page_CampaignGrids_Spend',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/Spend',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass PerfClicksColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_Clicks');\r\n\r\n super({\r\n name: 'Clicks',\r\n title: 'ProductGroupsGrid_Column_Clicks',\r\n property: 'PerformanceMetrics/Clicks',\r\n format: 'integer',\r\n helpId: 'Page_CampaignGrids_Clicks',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/Clicks',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass PerfTopImpressionRateColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_TopImpressionRate');\r\n\r\n super({\r\n name: 'TopImpressionRate',\r\n title: 'ProductGroupsGrid_Column_TopImpressionRate',\r\n property: 'PerformanceMetrics/TopImpressionRate',\r\n format: 'percentage-value',\r\n helpId: 'pop_BA_Reporting_Clarity_TopImpressionRate',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/TopImpressionRate',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass PerfAbsoluteTopImpressionRateColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_AbsoluteTopImpressionRate');\r\n\r\n super({\r\n name: 'AbsoluteTopImpressionRate',\r\n title: 'ProductGroupsGrid_Column_AbsoluteTopImpressionRate',\r\n property: 'PerformanceMetrics/AbsoluteTopImpressionRate',\r\n format: 'percentage-value',\r\n helpId: 'pop_BA_Reporting_Clarity_AbsoluteTopImpressionRate',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/AbsoluteTopImpressionRate',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass PerfImpressionsColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_Impressions');\r\n\r\n super({\r\n name: 'Impressions',\r\n title: 'ProductGroupsGrid_Column_Impressions',\r\n property: 'PerformanceMetrics/Impressions',\r\n format: 'integer',\r\n helpId: 'Page_CampaignGrids_Impr',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/Impressions',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass PerfCTRColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_CTR');\r\n\r\n super({\r\n name: 'CTR',\r\n title: 'ProductGroupsGrid_Column_CTR',\r\n property: 'PerformanceMetrics/CTR',\r\n format: 'percentage-value',\r\n helpId: 'Page_CampaignGrids_CTR',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/CTR',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass PerfAverageCPCColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_CostPerConversion');\r\n\r\n super({\r\n name: 'AverageCPC',\r\n title: 'ProductGroupsGrid_Column_CostPerConversion',\r\n property: 'PerformanceMetrics/AverageCPC',\r\n helpId: 'Page_CampaignGrids_AvgCPC',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/AverageCPC',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass PerfAverageCPMColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_CostPerImpression');\r\n\r\n super({\r\n name: 'AverageCPM',\r\n title: 'ProductGroupsGrid_Column_CostPerImpression',\r\n property: 'PerformanceMetrics/AverageCPM',\r\n helpId: 'Page_CampaignGrids_AvgCPM',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/AverageCPM',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass ConversionsColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_Conversions');\r\n\r\n super({\r\n name: 'Conversions',\r\n title: 'ProductGroupsGrid_Column_Conversions',\r\n property: 'PerformanceMetrics/Conversions',\r\n helpId: 'Page_CampaignGrids_Conv',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/Conversions',\r\n },\r\n format: 'integer',\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass ConversionRateColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_ConversionRate');\r\n\r\n super({\r\n name: 'ConversionRate',\r\n title: 'ProductGroupsGrid_Column_ConversionRate',\r\n property: 'PerformanceMetrics/ConversionRate',\r\n helpId: 'Page_CampaignGrids_ConvRate',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/ConversionRate',\r\n },\r\n format: 'percentage-value',\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass RevenueOnAdSpendColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_RevenueOnAdSpend');\r\n\r\n super({\r\n name: 'RevenueOnAdSpend',\r\n title: 'ProductGroupsGrid_Column_RevenueOnAdSpend',\r\n property: 'PerformanceMetrics/RevenueOnAdSpend',\r\n helpId: 'Page_CampaignGrids_ReturnAdSpend',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/RevenueOnAdSpend',\r\n },\r\n format: 'percentage-value',\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass AdvertiserReportedRevenueColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_AdvertiserReportedRevenue');\r\n\r\n super({\r\n name: 'AdvertiserReportedRevenue',\r\n title: 'ProductGroupsGrid_Column_AdvertiserReportedRevenue',\r\n property: 'PerformanceMetrics/AdvertiserReportedRevenue',\r\n helpId: 'Page_CampaignGrids_Revenue',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/RevenueOnAdSpend',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass CPAColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_CPA');\r\n\r\n super({\r\n name: 'CPA',\r\n title: 'ProductGroupsGrid_Column_CPA',\r\n property: 'PerformanceMetrics/CPA',\r\n helpId: 'Page_CampaignGrids_CPA',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/CPA',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass AllConversionsColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_AllConversions');\r\n\r\n super({\r\n name: 'AllConversions',\r\n title: 'ProductGroupsGrid_Column_AllConversions',\r\n property: 'PerformanceMetrics/AllConversions',\r\n helpId: 'pop_BA_CampaignGrids_AllConv',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/AllConversions',\r\n },\r\n format: 'integer',\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass AllConversionRateColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_AllConversionRate');\r\n\r\n super({\r\n name: 'AllConversionRate',\r\n title: 'ProductGroupsGrid_Column_AllConversionRate',\r\n property: 'PerformanceMetrics/AllConversionRate',\r\n helpId: 'pop_BA_CampaignGrids_AllConvRate',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/AllConversionRate',\r\n },\r\n format: 'percentage-value',\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass AllConversionRevenueOnAdSpendColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_AllConversionRevenueOnAdSpend');\r\n\r\n super({\r\n name: 'AllConversionRevenueOnAdSpend',\r\n title: 'ProductGroupsGrid_Column_AllConversionRevenueOnAdSpend',\r\n property: 'PerformanceMetrics/AllConversionRevenueOnAdSpend',\r\n helpId: 'pop_BA_CampaignGrids_AllConvROAS',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/AllConversionRevenueOnAdSpend',\r\n },\r\n format: 'percentage-value',\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass AllConversionAdvertiserReportedRevenueColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_AllConversionAdvertiserReportedRevenue');\r\n\r\n super({\r\n name: 'AllConversionAdvertiserReportedRevenue',\r\n title: 'ProductGroupsGrid_Column_AllConversionAdvertiserReportedRevenue',\r\n property: 'PerformanceMetrics/AllConversionAdvertiserReportedRevenue',\r\n helpId: 'pop_BA_CampaignGrids_AllConvRevenue',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/AllConversionAdvertiserReportedRevenue',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass AllConversionCPAColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_AllConversionCPA');\r\n\r\n super({\r\n name: 'AllConversionCPA',\r\n title: 'ProductGroupsGrid_Column_AllConversionCPA',\r\n property: 'PerformanceMetrics/AllConversionCPA',\r\n helpId: 'pop_BA_CampaignGrids_AllConvCPA',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'PerformanceMetrics/AllConversionCPA',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass ProductsSubmittedColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_ProductsSubmitted');\r\n\r\n super({\r\n name: 'ProductsSubmitted',\r\n title: 'ProductGroupsGrid_Column_ProductsSubmitted',\r\n property: 'SubmittedOfferCount',\r\n format: 'integer',\r\n helpId: 'pop_BA_BSC_ProductsSubmitted',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'SubmittedOfferCount',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass ProductsTargetedColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_ProductsTargeted');\r\n\r\n super({\r\n name: 'ProductsTargeted',\r\n title: 'ProductGroupsGrid_Column_ProductsTargeted',\r\n property: 'TargetedOfferCount',\r\n format: 'integer',\r\n helpId: 'pop_BA_BSC_ProductTargeted',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'TargetedOfferCount',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nfunction getAttributeColumns({\r\n view,\r\n isTreeView,\r\n}) {\r\n const { isBidValueOption, isBidBoostOption } = view;\r\n return _.compact([\r\n isTreeView ? ProductGroupColumn : ProductGroupFlattenColumn,\r\n view.level === productGroupLevel.Account ? CampaignNameColumn : null,\r\n view.level === productGroupLevel.Account || view.level === productGroupLevel.Campaign ?\r\n AdGroupNameColumn : null,\r\n isBidValueOption ? BidColumn : null,\r\n isBidBoostOption ? BidBoostColumn : null,\r\n WarningsColumn,\r\n DestinationUrlColumn,\r\n ProductGroupTrackingTemplateColumn,\r\n ProductGroupCustomParametersColumn,\r\n ProductGroupFinalUrlSuffixColumn,\r\n ]);\r\n}\r\n\r\nfunction getPerfColumns(deps) {\r\n return _.compact([\r\n PerfSpendColumn,\r\n PerfClicksColumn,\r\n PerfImpressionsColumn,\r\n PerfCTRColumn,\r\n PerfAverageCPCColumn,\r\n PerfAverageCPMColumn,\r\n IsAvgPositionDeprecationPhase1Enabled(deps) && PerfTopImpressionRateColumn,\r\n IsAvgPositionDeprecationPhase1Enabled(deps) && PerfAbsoluteTopImpressionRateColumn,\r\n ]);\r\n}\r\n\r\nfunction getConvColumns() {\r\n return _.compact([\r\n ConversionsColumn,\r\n ConversionRateColumn,\r\n RevenueOnAdSpendColumn,\r\n AdvertiserReportedRevenueColumn,\r\n CPAColumn,\r\n AllConversionsColumn,\r\n AllConversionRateColumn,\r\n AllConversionRevenueOnAdSpendColumn,\r\n AllConversionAdvertiserReportedRevenueColumn,\r\n AllConversionCPAColumn,\r\n ]);\r\n}\r\n\r\nfunction getShoppingColumns() {\r\n return [\r\n ProductsSubmittedColumn,\r\n ProductsTargetedColumn,\r\n ];\r\n}\r\n\r\nexport function getGridColumnsConfig(deps, view, isTreeView) {\r\n return _.chain([\r\n ...getAttributeColumns({ deps, view, isTreeView }),\r\n ...getPerfColumns(deps),\r\n ...getConvColumns(deps),\r\n ...getShoppingColumns(),\r\n ])\r\n .compact()\r\n .map(Column => (new Column({ deps, view }).toJSON()))\r\n .value();\r\n}\r\n\r\nfunction getCategoryOptions(options, deps, view) {\r\n return _.map(options, (option) => {\r\n const column = new option.Column({\r\n deps,\r\n view,\r\n });\r\n\r\n return {\r\n key: column.name,\r\n name: column.title,\r\n selectOption: option.selectOption,\r\n };\r\n });\r\n}\r\n\r\nfunction getColumnNames(Cols, deps, view) {\r\n return _.map(Cols, Column => new Column({\r\n deps,\r\n view,\r\n }).name);\r\n}\r\n\r\nfunction getLockedColumns(categories) {\r\n let lockedColumns = [];\r\n _.forEach(categories, (category) => {\r\n lockedColumns = lockedColumns.concat(_.map(_.filter(category.options, option => option.selectOption === 'locked'), value => value.Column));\r\n });\r\n\r\n return lockedColumns;\r\n}\r\n\r\nexport function getColumnChooserPluginConfig(deps, view, isTreeView) {\r\n const isLockedColumn = (Column) => {\r\n const lockColumnWhiteList = [\r\n ProductGroupColumn,\r\n ProductGroupFlattenColumn,\r\n BidColumn,\r\n BidBoostColumn,\r\n WarningsColumn,\r\n AdGroupNameColumn,\r\n CampaignNameColumn,\r\n ];\r\n return _.contains(lockColumnWhiteList, Column) ? 'locked' : 'optional';\r\n };\r\n\r\n const categories = [{\r\n name: deps.i18n.getString('Attributes'),\r\n options: _.compact(_.map(getAttributeColumns({ deps, view, isTreeView }), Column => ({\r\n Column,\r\n selectOption: isLockedColumn(Column),\r\n }))),\r\n }, {\r\n name: deps.i18n.getString('Performance'),\r\n options: _.map(getPerfColumns(deps), Column => ({\r\n Column,\r\n selectOption: isLockedColumn(Column),\r\n })),\r\n }, {\r\n name: deps.i18n.getString('Conversions'),\r\n options: _.map(getConvColumns(), Column => ({\r\n Column,\r\n selectOption: isLockedColumn(Column),\r\n })),\r\n }, {\r\n name: deps.i18n.getString('ColumnCategory_Shopping'),\r\n options: _.map(getShoppingColumns(), Column => ({\r\n Column,\r\n selectOption: isLockedColumn(Column),\r\n })),\r\n }];\r\n\r\n return {\r\n categories: _.map(categories, category => ({\r\n name: category.name,\r\n options: getCategoryOptions(category.options, deps, view),\r\n })),\r\n selected: getColumnNames([\r\n ...getAttributeColumns({ deps, view }),\r\n ...getPerfColumns(deps),\r\n ...getConvColumns(),\r\n ...getShoppingColumns(),\r\n ], deps, view),\r\n locked: getColumnNames(getLockedColumns(categories), deps, view),\r\n patchQuery: true,\r\n Columns: deps.Columns,\r\n SelectedColumns: deps.SelectedColumns,\r\n LegacyColumns: deps.LegacyColumns,\r\n LegacySelectedColumns: deps.LegacySelectedColumns,\r\n i18n: deps.i18n,\r\n };\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport { crossPageSelectHeadRow } from '@bingads-webui/projection-grid-cross-page-select-all';\r\nimport placeholderTemplate from '../../template/grid-nodata-placeholder.pug';\r\nimport { getGridColumnsConfig, getColumnChooserPluginConfig, productGroupSortIteratee } from './product-groups-columns';\r\nimport { bidType, productGroupLevel } from '../../constant';\r\n\r\nexport class ProductGroupsGridConfig {\r\n constructor({\r\n deps,\r\n view,\r\n dataSource,\r\n isTreeView,\r\n onTogglePillClicked,\r\n }) {\r\n this.deps = deps;\r\n this.isTreeView = isTreeView;\r\n this.IsBidLessThan5CentsEnabled = _.result(this.deps.config.get('Permissions'), 'IsBidLessThan5CentsEnabled');\r\n this.IsCPGForBSCEnabled = _.result(this.deps.config.get('Permissions'), 'IsCPGForBSCEnabled');\r\n this.onTogglePillClicked = onTogglePillClicked;\r\n this.ReportEmailRule = deps.state.get('$ReportEmailRule');\r\n deps.state.unset('$ReportEmailRule');\r\n _.extend(this, {\r\n name: 'newProductGroupsGrid',\r\n tableClasses: ['table', 'table-bordered'],\r\n filterService: view.filterService,\r\n dataSource,\r\n scrolling: {\r\n virtualized: true,\r\n header: {\r\n type: 'sticky',\r\n offset() {\r\n return $('nav.navbar-default.navbar-fixed-top').height();\r\n },\r\n },\r\n },\r\n rows: {\r\n headRows: [\r\n crossPageSelectHeadRow(),\r\n 'column-header-rows',\r\n ],\r\n bodyRows: [{\r\n type: 'data-rows',\r\n classes: ['product-partition-row'],\r\n }],\r\n },\r\n columns: getGridColumnsConfig(deps, view, isTreeView),\r\n selection: this.isTreeView ? {\r\n selectable: (item) => {\r\n if (_.isEmpty(item)) {\r\n return true;\r\n }\r\n return item && item.isAggregateRow !== true;\r\n },\r\n } : true,\r\n plugins: this.gridPluginConfig(view),\r\n });\r\n }\r\n\r\n getSortReturn = (value1, value2) => {\r\n if (value1 < value2) {\r\n return -1;\r\n }\r\n if (value1 > value2) {\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n\r\n gridToolBarConfig = (view) => {\r\n const appConfig = this.deps.config;\r\n const permissions = appConfig.get('Permissions');\r\n return helpers.singleToolbar({\r\n items: _.compact([{\r\n type: 'dropdown',\r\n disabled: permissions.IsReadOnlyUser || appConfig.get('CurrentAccountInActive'),\r\n button: {\r\n classes: ['btn', 'btn-hero'],\r\n text: this.deps.i18n.getString('GridToolbar_FilterBar_Edit'),\r\n },\r\n menu: {\r\n items: _.compact([view.isBidValueOption ? {\r\n text: this.deps.i18n.getString('ProductGroups_BidChanges'),\r\n onClick: () => {\r\n view.editBids(bidType.bidValue);\r\n },\r\n } : undefined, view.isBidBoostOption && this.IsCPGForBSCEnabled ? {\r\n text: this.deps.i18n.getString('ProductGroupsGrid_BidBoostChanges'),\r\n onClick: () => {\r\n view.editBids(bidType.bidBoost);\r\n },\r\n } : undefined]),\r\n },\r\n }, {\r\n type: 'button',\r\n id: 'button-download',\r\n }, {\r\n type: 'dropdown',\r\n id: 'dropdown-column-chooser',\r\n }, view.level === productGroupLevel.AdGroup ? {\r\n type: 'pill-control',\r\n id: 'view-toggle',\r\n selectedIndex: this.isTreeView ? 0 : 1,\r\n onClick: this.onTogglePillClicked,\r\n items: [{\r\n classes: 'glyph-bulleted-tree',\r\n text: '',\r\n title: this.deps.i18n.getString('ProductGroupsGrid_HierarchyView'),\r\n }, {\r\n classes: 'glyph-bulleted-list',\r\n text: '',\r\n title: this.deps.i18n.getString('ProductGroupsGrid_ListView'),\r\n }],\r\n } : undefined]),\r\n });\r\n };\r\n\r\n processReportRule = (ReportRule) => {\r\n // Remove Warnings column in Headers\r\n // Warnings column will always be the third element in the Array\r\n const warningColumnHeaderIdx = ReportRule.Headers.indexOf(this.deps.i18n.getString('ProductGroupsGrid_ColumnName_Warnings'));\r\n if (warningColumnHeaderIdx > 0) {\r\n ReportRule.Headers.splice(warningColumnHeaderIdx, 1);\r\n }\r\n return _.defaults({\r\n Selection: _.defaults({\r\n IsAdGroupTreeView: this.isTreeView,\r\n QueryString: ReportRule.Selection.QueryString.replace(',Warnings', ''),\r\n }, ReportRule.Selection),\r\n }, ReportRule);\r\n };\r\n\r\n gridPluginConfig = view => ({\r\n inlineDownload: {\r\n DownloadView: this.deps.DownloadView,\r\n isAvailable: true,\r\n i18n: this.deps.i18n,\r\n s$i18n: this.deps.s$i18n,\r\n schema: this.deps.s$ProductGroup,\r\n gridId: 'newProductGroupsGrid',\r\n ReportEmailRule: this.ReportEmailRule,\r\n processReportRule: this.processReportRule,\r\n },\r\n uiBlocker: {\r\n el: $('#summary_tab_product_groups'),\r\n },\r\n placeholder: {\r\n filteredEmptyText: this.deps.i18n.getString('Grid_NoFilteredRecords'),\r\n container: '.grid-nodata-container',\r\n template: placeholderTemplate,\r\n templateOptions: {\r\n i18n: this.deps.i18n,\r\n shouldShowCreateRootLink: !!view.deps.pageContext.CurrentAdGroup,\r\n },\r\n asyncEmptyText: view.tooMuchDataErrorText,\r\n asyncCallback: () => Promise.resolve(view.showTooMuchDataError),\r\n },\r\n tree: {\r\n toggleColumnName: 'ProductGroup',\r\n templateDecorator: celTemplate => ({ value }) => {\r\n if (!_.isEmpty(value.total)) {\r\n return celTemplate({\r\n total: value.total,\r\n });\r\n }\r\n // hack to get parent item\r\n const parentItem = view.grid.gridView.itemWithKey(value.ParentId);\r\n let attributeText = value.Condition.value.Attribute;\r\n const isRoot = _.isEmpty(value.Condition.value.Operand);\r\n\r\n if (isRoot) {\r\n // Root node\r\n attributeText = this.deps.i18n.getString('ShoppingCampaign_AllProducts');\r\n } else if (_.isEmpty(value.Condition.value.Attribute)) {\r\n if (!parentItem.Condition.Attribute && parentItem.Condition.Operand) {\r\n // Parent node is everything else\r\n attributeText = this.deps.i18n.getString('ProductGroupsGrid_EverythingElse');\r\n } else {\r\n // Everything else in `parent's attribute`\r\n const parentAttribute = parentItem.Condition.Attribute || this.deps.i18n.getString('ShoppingCampaign_AllProducts');\r\n\r\n attributeText = this.deps.i18n.getString('ProductGroupsGrid_EverythingElseIn').replace('{0}', parentAttribute);\r\n }\r\n }\r\n\r\n return celTemplate(_.defaults({ i18n: this.deps.i18n }, value.Condition, {\r\n attributeText,\r\n isRoot,\r\n }));\r\n },\r\n },\r\n performanceLog: {\r\n appConfig: this.deps.config,\r\n logger: this.deps.logger,\r\n },\r\n toolbar: this.gridToolBarConfig(view),\r\n columnChooser: getColumnChooserPluginConfig(this.deps, view, this.isTreeView),\r\n clientSideSort: {\r\n compareMaker: (sortIteratee, direction) => (item1, item2) => {\r\n const sortReturn =\r\n this.getSortReturn(sortIteratee(item1, direction), sortIteratee(item2, direction));\r\n return sortReturn === 0 ?\r\n this.getSortReturn(\r\n productGroupSortIteratee(item1, direction),\r\n productGroupSortIteratee(item2, direction)\r\n ) : sortReturn;\r\n },\r\n setTopToMax: true,\r\n },\r\n dateFilter: {\r\n state: this.deps.state,\r\n addDateChangeListener: this.deps.addDateChangeListener,\r\n edm: this.deps.edmCampaign,\r\n isOdataActionSource: true,\r\n comparisonColumns: [],\r\n },\r\n pagination: !this.isTreeView ? {\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n preferenceService: this.deps.preferenceService,\r\n pageSizeText: this.deps.i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: this.deps.i18n.getString('Grid_PageOf'),\r\n } : undefined,\r\n crossPageSelectAll: !this.isTreeView ? { i18n: this.deps.i18n } : undefined,\r\n editable: { i18n: this.deps.i18n },\r\n });\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { ProductGroupBidLandscape } from '@bingads-webui/bid-landscape';\r\nimport { getInlineEditableSaveFunction } from './product-groups-inline-edit';\r\n\r\nclass ProductGroupBidLandscapePopupFactory {\r\n constructor({\r\n deps,\r\n view,\r\n }) {\r\n this.deps = deps;\r\n this.view = view;\r\n this.trackingId = null;\r\n }\r\n\r\n onFetchBidLandscapeSuccess = ({\r\n i18n, event, item, view, data, instrumentation,\r\n }) => {\r\n const activities = {\r\n recordBidChangeInLandScape:\r\n instrumentation.productGroupGrid.create().recordBidChangeInLandScape.create(),\r\n recordFetchLandScapeData:\r\n instrumentation.productGroupGrid.create().recordFetchLandScapeData.create(),\r\n };\r\n\r\n const landscape = new ProductGroupBidLandscape({\r\n instrumentation,\r\n i18n,\r\n inSimpleMode: false,\r\n parentItem: {\r\n Id: item.Id,\r\n Name: item.attributeDisplayName,\r\n CurrentValue: this.deps.decimal.fromFloatToString(item.BidAmount),\r\n },\r\n dataToShow: data,\r\n enityType: 'ProductGroup',\r\n });\r\n\r\n activities.recordFetchLandScapeData.trace(`Fetch BSC bid landscape success for${item.Id}`);\r\n\r\n landscape.once('rendered', () => {\r\n this.trackingId = generateGuid();\r\n const ariaData = {\r\n Id: item.Id,\r\n ActionName: 'ViewBSCBidLandscape',\r\n UIData: {\r\n bidList: landscape.viewModel.dataArray(),\r\n currencyCode: this.deps.pageContext.AccountCurrencyCode,\r\n currentBid: item.BidAmount.Bid.Amount,\r\n startDate: landscape.viewModel.startDateString(),\r\n endDate: landscape.viewModel.endDateString(),\r\n trackingId: this.trackingId,\r\n },\r\n };\r\n activities.recordFetchLandScapeData.trace(ariaData, 'ViewBSCBidLandscape');\r\n });\r\n\r\n landscape.render();\r\n\r\n landscape.on('apply', () => {\r\n const currentSelectedId = landscape.viewModel.currentSelectedId();\r\n const landscapePointsLength = landscape.viewModel.landscapePointsLength();\r\n const isCustomBid = currentSelectedId === landscapePointsLength;\r\n\r\n const bidValue = this.deps.decimal.fromLocalToFloat(landscape.valueToApply());\r\n const message = `Apply bsc bidlandscape success for ${item.Id}:${item.BidAmount.Bid.Amount}->${bidValue}. Currency: ${this.deps.pageContext.AccountCurrencyCode}, DataDate: ${landscape.viewModel.startDateString()}~${landscape.viewModel.endDateString()}, IsCustomBid: ${isCustomBid}, TrackingId: ${this.trackingId}`;\r\n\r\n const updated = _.pick(item, 'Id', 'CampaignId', 'AdGroupId', 'BidAmount', 'IsExcluded');\r\n updated.BidAmount.Bid.Amount = bidValue;\r\n\r\n getInlineEditableSaveFunction(this.deps)({\r\n view,\r\n i18n,\r\n fieldName: ['BidAmount', 'IsExcluded'],\r\n updated,\r\n // This parameter will be invoked its `setErrors()` method when error occurs.\r\n editorView: {\r\n setErrors: (errorMapping) => {\r\n this.deps.popupUtil.close();\r\n view.grid.inlineError.setErrors({\r\n [item.Id]: _.values(errorMapping),\r\n });\r\n },\r\n },\r\n editorViewCallbackAfterUpdate: () => {\r\n activities.recordBidChangeInLandScape.trace(message);\r\n this.deps.popupUtil.close();\r\n },\r\n });\r\n });\r\n\r\n landscape.on('cancel', () => {\r\n this.deps.popupUtil.close();\r\n });\r\n\r\n if (landscape.hasData()) {\r\n this.deps.popupUtil.render(landscape.$el);\r\n } else {\r\n new this.deps.PopoverView({\r\n target: $(event.target),\r\n className: 'product-group-popover-bidlandscape',\r\n position: this.deps.positions.relativeToTableRow({\r\n marginBottom: $('footer > .navbar-footer').height(),\r\n }),\r\n }).setContent(new this.deps.contents.TitledContent().setBody(i18n.getString('ProductGroupsGrid_KeywordBidLandscape_UnClickableIconText')));\r\n }\r\n };\r\n\r\n openBidLandscapePanel = ({\r\n i18n,\r\n event,\r\n item,\r\n view,\r\n instrumentation,\r\n }) => {\r\n this.deps.popupUtil.close();\r\n event.stopPropagation();\r\n\r\n $.advertiser.ajaxPost({\r\n url: '/Campaign/BidLandscape/FetchProductGroupBidLandscapeData',\r\n data: { id: item.Id },\r\n ignoreBeforeAjax: true,\r\n onSuccess: (data) => {\r\n if (!data || (data.Errors && !_.isEmpty(data.Errors))) {\r\n return;\r\n }\r\n this.onFetchBidLandscapeSuccess({\r\n i18n, event, item, view, data, instrumentation,\r\n });\r\n },\r\n });\r\n };\r\n\r\n showBidLandscapePopup({ event, item }) {\r\n return this.openBidLandscapePanel({\r\n i18n: this.deps.i18n,\r\n event,\r\n item,\r\n view: this.view,\r\n instrumentation: this.deps.instrumentation,\r\n });\r\n }\r\n}\r\n\r\nexport { ProductGroupBidLandscapePopupFactory };\r\n","import ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport { KoSchema } from '@bingads-webui/ko-schema';\r\n\r\nexport default class ViewModel {\r\n constructor({\r\n deps,\r\n currentPartitionName,\r\n }) {\r\n this.deps = deps;\r\n this.currentPartitionName = currentPartitionName;\r\n this.availableDimensions = ko.observableArray([]);\r\n this.selectedDimensionId = ko.observable();\r\n this.selectedDimension = ko.observable();\r\n this.showLimitExceededWarning = ko.observable(false);\r\n this.showBulkPanel = ko.observable(false);\r\n KoSchema(this);\r\n }\r\n\r\n updateModel(productOptions) {\r\n this.availableDimensions(productOptions);\r\n this.selectedDimension = ko.computed(() => (\r\n _.find(productOptions, option => option.Id === this.selectedDimensionId())));\r\n this.headerText = ko.computed(() => {\r\n const selectedDimension = this.selectedDimension();\r\n return _.result(selectedDimension, 'DisplayName') === this.deps.i18nGlobal.getString('ProductCondition_Brand') ?\r\n this.deps.i18nGlobal.getString('ProductGroup_Subdivide_Title_Brand', this.currentPartitionName) :\r\n this.deps.i18nGlobal.getString('ProductGroup_Subdivide_Title', this.currentPartitionName);\r\n });\r\n }\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport doubleListLayoutTemplate from '../../template/double-list-box-layout.pug';\r\nimport sourceItemTemplate from '../../template/double-list-box-source-item.pug';\r\nimport selectedItemTemplate from '../../template/double-list-box-selected-item.pug';\r\nimport selectedItemLayoutTemplate from '../../template/double-list-box-selected.pug';\r\nimport sourceItemLayoutTemplate from '../../template/double-list-box-source-layout.pug';\r\n\r\nconst sourceItems = viewModel => (request, cb) => {\r\n const selectedDimension = viewModel.selectedDimension();\r\n\r\n if (_.isArray(_.result(selectedDimension, 'AvailableItems'))) {\r\n return cb(null, {\r\n items: selectedDimension.AvailableItems,\r\n total: selectedDimension.AvailableItems.length,\r\n });\r\n }\r\n return cb(null, {\r\n items: [],\r\n total: 0,\r\n });\r\n};\r\n\r\nconst itemIdCallback = () => item => (item && item.Id ? item.Id.toLowerCase() : null);\r\n\r\nconst sortList = (list, key, descending) => {\r\n list.sort((item1, item2) => {\r\n if (key === 'Name') {\r\n return descending ? item2[key].toLowerCase().localeCompare(item1[key].toLowerCase()) :\r\n item1[key].toLowerCase().localeCompare(item2[key].toLowerCase());\r\n }\r\n const item1Num = Number.isNaN(+item1[key]) ? 0 : +item1[key];\r\n const item2Num = Number.isNaN(+item2[key]) ? 0 : +item2[key];\r\n return descending ? item2Num - item1Num : item1Num - item2Num;\r\n });\r\n};\r\n\r\nconst sortLeftColumn = (view, key) => {\r\n const { doubleListBox } = view;\r\n // remove other columns' sort status\r\n _.each(doubleListBox._viewModel.customData.leftSorted, sortedColumn => sortedColumn(false));\r\n\r\n const descending = !doubleListBox._viewModel.customData.leftDescending[key]();\r\n const list = view.viewModel.selectedDimension().AvailableItems;\r\n\r\n // use in-place sort\r\n sortList(list, key, descending);\r\n doubleListBox._viewModel.customData.leftSorted[key](true);\r\n doubleListBox._viewModel.customData.leftDescending[key](descending);\r\n doubleListBox.refreshSource();\r\n};\r\n\r\nconst sortRightColumn = (view, key) => {\r\n const { doubleListBox } = view;\r\n // remove other columns' sort status\r\n _.each(doubleListBox._viewModel.customData.rightSorted, sortedColumn => sortedColumn(false));\r\n\r\n const descending = !doubleListBox._viewModel.customData.rightDescending[key]();\r\n const list = doubleListBox._viewModel.selectedItems();\r\n\r\n // use in-place sort\r\n sortList(list, key, descending);\r\n doubleListBox._viewModel.customData.rightSorted[key](true);\r\n doubleListBox._viewModel.customData.rightDescending[key](descending);\r\n // notify that observable array contents have changed.\r\n doubleListBox.setSelection([]);\r\n doubleListBox.setSelection(list);\r\n};\r\n\r\nexport const resetSort = (view) => {\r\n const { doubleListBox } = view;\r\n const doubleListCustomData = _.result(doubleListBox._viewModel, 'customData', {}); // eslint-disable-line\r\n const leftSorted = _.result(doubleListCustomData, 'leftSorted', {});\r\n const rightSorted = _.result(doubleListCustomData, 'rightSorted', {});\r\n const leftDescending = _.result(doubleListCustomData, 'leftDescending', {});\r\n const rightDescending = _.result(doubleListCustomData, 'rightDescending', {});\r\n // since ko vm is not emunerable, could not use Object.keys\r\n const leftKeys = ['Name', 'Count', 'Clicks', 'Impressions', 'Conversions'];\r\n const rightKeys = ['Name', 'Count'];\r\n leftKeys.forEach((key) => {\r\n leftSorted[key](false);\r\n leftDescending[key](false);\r\n });\r\n rightKeys.forEach((key) => {\r\n rightSorted[key](false);\r\n rightDescending[key](false);\r\n });\r\n};\r\n\r\nexport function getDoubleListBoxConfig({ deps, view }) {\r\n return {\r\n el: view.$('#double-list-box'),\r\n data: {\r\n sourceItems: sourceItems(view.viewModel),\r\n itemIdField: 'Id',\r\n itemIdCallback: itemIdCallback(),\r\n useCallbackForFetchOnly: true,\r\n pageSize: 100,\r\n },\r\n itemActions: {},\r\n features: {\r\n paging: true,\r\n filtering: false,\r\n dragAndDrop: false,\r\n },\r\n templates: {\r\n layoutTemplate: doubleListLayoutTemplate({ i18n: deps.i18nGlobal }),\r\n sourceItemLayoutTemplate: sourceItemLayoutTemplate({ i18n: deps.i18nGlobal }),\r\n sourceItemContentTemplate: sourceItemTemplate(),\r\n selectedItemContentTemplate: selectedItemTemplate(),\r\n selectedItemLayoutTemplate: selectedItemLayoutTemplate({ i18n: deps.i18nGlobal }),\r\n },\r\n customData: {\r\n textAreaValue: ko.observable(),\r\n isBulkShown: ko.computed(() => view.viewModel.showBulkPanel()),\r\n leftDescending: {\r\n Name: ko.observable(false),\r\n Count: ko.observable(false),\r\n Clicks: ko.observable(false),\r\n Impressions: ko.observable(false),\r\n Conversions: ko.observable(false),\r\n },\r\n leftSorted: {\r\n Name: ko.observable(false),\r\n Count: ko.observable(false),\r\n Clicks: ko.observable(false),\r\n Impressions: ko.observable(false),\r\n Conversions: ko.observable(false),\r\n },\r\n rightDescending: {\r\n Name: ko.observable(false),\r\n Count: ko.observable(false),\r\n },\r\n rightSorted: {\r\n Name: ko.observable(false),\r\n Count: ko.observable(false),\r\n },\r\n sortLeftNameColumn: () => sortLeftColumn(view, 'Name'),\r\n sortLeftCountColumn: () => sortLeftColumn(view, 'Count'),\r\n sortLeftClicksColumn: () => sortLeftColumn(view, 'Clicks'),\r\n sortLeftImpressionsColumn: () => sortLeftColumn(view, 'Impressions'),\r\n sortLeftConversionsColumn: () => sortLeftColumn(view, 'Conversions'),\r\n sortRightNameColumn: () => sortRightColumn(view, 'Name'),\r\n sortRightCountColumn: () => sortRightColumn(view, 'Count'),\r\n isBulkAddEnabled: ko.computed(() => (view.viewModel.selectedDimension().IsBulkEnabled)),\r\n rightColumnHeader: ko.computed(() => (view.viewModel.selectedDimension().DisplayName)),\r\n countHeader: deps.i18nGlobal.getString('ProductGroup_ProductsCount'),\r\n clicksHeader: deps.i18n.getString('ProductGroupsGrid_Column_Clicks'),\r\n impressionsHeader: deps.i18n.getString('ProductGroupsGrid_Column_Impressions'),\r\n conversionsHeader: deps.i18n.getString('ProductGroupsGrid_Column_Conversions'),\r\n leftColumnHeader: ko.computed(() => (view.viewModel.selectedDimension().DisplayName)),\r\n },\r\n };\r\n}\r\n","import $ from 'jquery';\r\nimport { View } from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport { decorate } from '@bingads-webui/dialog';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { queryify } from '@bingads-webui/url-util';\r\nimport template from '../../template/product-groups-selector.pug';\r\nimport ViewModel from '../viewmodel/product-groups-selector';\r\nimport { getDoubleListBoxConfig, resetSort } from './double-list-box-config';\r\n\r\nconst NUMBER_OF_PARTITIONS_TO_SHOW = 1000;\r\nconst NO_DATA = '-';\r\nconst DimensionProperties = [\r\n 'CategoryL1', 'CategoryL2', 'CategoryL3', 'CategoryL4', 'CategoryL5', 'Condition',\r\n];\r\n\r\nconst ProductGroupSubTypeEnum = {\r\n standard: 1,\r\n coop: 2,\r\n all: 3,\r\n};\r\nconst CampaignSubTypeEnum = {\r\n ShoppingCoOperative: 10,\r\n ShoppingSmartAds: 12,\r\n};\r\n\r\nclass ProductGroupsSelectorView extends View {\r\n initialize({\r\n deps,\r\n currentPartition,\r\n displayName,\r\n children = [],\r\n partitionFullPath,\r\n defaultBid,\r\n campaignSubType,\r\n isBidValueOption = true,\r\n } = {}) {\r\n this.deps = deps;\r\n this.currentPartition = currentPartition;\r\n this.displayName = displayName;\r\n this.children = children;\r\n this.partitionFullPath = partitionFullPath;\r\n this.defaultBid = defaultBid;\r\n this.campaignSubType = campaignSubType;\r\n this.isBidValueOption = isBidValueOption;\r\n\r\n this.viewModel = new ViewModel({\r\n deps,\r\n currentPartitionName: displayName,\r\n });\r\n this.isCPGForBSCEnabled = Boolean(_.result(this.deps.config.get('Permissions'), 'IsCPGForBSCEnabled', false));\r\n this.isLocalInventoryAdV2Enabled = Boolean(_.result(this.deps.config.get('Permissions'), 'IsLocalInventoryAdV2Enabled', false));\r\n }\r\n\r\n render() {\r\n $.advertiser.ajaxPost(this.ajaxOptions)\r\n .then((dimensions) => {\r\n const productOptions = _.filter(dimensions, (productCondition) => {\r\n if (!this.isLocalInventoryAdV2Enabled && (productCondition.Id === 'Channel' || productCondition.Id === 'ChannelExclusivity')) {\r\n return false;\r\n }\r\n if (this.isCPGForBSCEnabled &&\r\n this.campaignSubType === CampaignSubTypeEnum.ShoppingCoOperative) {\r\n return productCondition.SubTypeFlag === ProductGroupSubTypeEnum.coop ||\r\n productCondition.SubTypeFlag === ProductGroupSubTypeEnum.all;\r\n }\r\n return productCondition.SubTypeFlag !== ProductGroupSubTypeEnum.coop;\r\n });\r\n\r\n this.$el.html(template({\r\n i18n: this.deps.i18n,\r\n i18nGlobal: this.deps.i18nGlobal,\r\n }));\r\n\r\n // fill available dimension data to select box\r\n this.viewModel.updateModel(productOptions);\r\n ko.applyBindings(this.viewModel, this.el);\r\n // render empty double list box\r\n const doubleListBoxConfig = getDoubleListBoxConfig({ deps: this.deps, view: this });\r\n doubleListBoxConfig.isBulkOperationEnabled = true;\r\n this.doubleListBox = new this.deps.DoubleListBox(doubleListBoxConfig).render();\r\n\r\n // set default value to select box,\r\n // it will trigger changeDimension function to update double list box\r\n this.viewModel.selectedDimension.subscribe(this.changeDimension, this);\r\n const selectedDimension = this.getSelectedDimension(productOptions);\r\n this.viewModel.selectedDimensionId(selectedDimension.Id);\r\n const selectedDimensionIndex = _.findIndex(dimensions, dim =>\r\n dim.Id === selectedDimension.Id);\r\n if (selectedDimensionIndex === 0) {\r\n this.changeDimension();\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n get ajaxOptions() {\r\n const dataParam = {};\r\n\r\n _.each(this.partitionFullPath, (item, index) => {\r\n dataParam[`PathToParent[${index}].Attribute`] = item.Attribute;\r\n dataParam[`PathToParent[${index}].Operand`] = item.Operand;\r\n });\r\n\r\n const url = queryify('/campaign/ProductGroups/GetProductDimensions', {\r\n cid: this.deps.state.get('customer_id'),\r\n uid: this.deps.state.get('user_id'),\r\n aid: this.deps.state.get('account_id'),\r\n cmpid: this.deps.state.get('campaign_id'),\r\n adgid: this.deps.state.get('adgroup_id'),\r\n __adcenterAJAX: true,\r\n });\r\n\r\n return {\r\n url,\r\n data: dataParam,\r\n onAjaxComplete: (xhr) => {\r\n this.viewModel.showLimitExceededWarning(xhr.getResponseHeader('OfferLimitExceeded'));\r\n },\r\n onJsonError: ({ Errors } = {}) => {\r\n this.viewModel.errors(_.pluck(Errors, 'Message'));\r\n },\r\n };\r\n }\r\n\r\n getPartitionData(selectedDimension) {\r\n const url = `/Customers()/Accounts()/Campaigns(${this.deps.state.get('campaign_id')})/AdGroups(${this.deps.state.get('adgroup_id')})/ProductGroups(${_.result(this.currentPartition, 'Id')})/ProductAttributeStatistics/Default.GridData?$top=${NUMBER_OF_PARTITIONS_TO_SHOW}`;\r\n\r\n return this.deps.odata.post(url, {\r\n path: 'Advertiser/V2',\r\n data: {\r\n gridDataParameters: {\r\n DateRange: {\r\n DateRangePreset: null,\r\n StartDate: this.formatLocalDateToISO(this.deps.state.get('$daterange').start),\r\n EndDate: this.formatLocalDateToISO(this.deps.state.get('$daterange').end),\r\n },\r\n },\r\n operand: selectedDimension.Id,\r\n },\r\n });\r\n }\r\n\r\n formatLocalDateToISO(date) {\r\n return this.deps.i18n.formatDate(date, { timeZone: null, raw: 'yyyy-MM-dd' });\r\n }\r\n\r\n getSelectedDimension(data) {\r\n let selectedDimensionName = '';\r\n\r\n if (this.children.length) {\r\n selectedDimensionName = this.children[0].Condition.Operand;\r\n } else {\r\n // get default selected dimension according to given priority order\r\n const Ids = _.pluck(data, 'Id');\r\n\r\n selectedDimensionName = _.find(\r\n DimensionProperties,\r\n dimension => _.contains(Ids, dimension)\r\n ) || Ids[0];\r\n }\r\n\r\n // get selected dimension data using selectedDimensionName\r\n const result = _.find(data, { Id: selectedDimensionName });\r\n\r\n // fill selected items for double list box using current children nodes\r\n result.SelectedItems = _.chain(this.children)\r\n .map((child) => {\r\n if (child.Condition.Attribute) {\r\n return {\r\n Name: selectedDimensionName === 'Condition' ? this.deps.i18nGlobal.getString(`ProductCondition_Condition_${child.Condition.Attribute.toUpperCase()}`) : child.Condition.Attribute,\r\n Id: child.Condition.Attribute,\r\n };\r\n }\r\n return null;\r\n })\r\n .filter(Boolean)\r\n .value();\r\n return result;\r\n }\r\n\r\n changeDimension() {\r\n const newDimension = this.viewModel.selectedDimension();\r\n\r\n // should fetch products count data for partitions\r\n this.getPartitionData(newDimension)\r\n .then((data) => {\r\n // fill product count data to dimension data\r\n this.updateDimensionCount(newDimension, data.value);\r\n\r\n this.hideBulkPanel();\r\n // need to reset sort before source refreshed\r\n resetSort(this);\r\n this.doubleListBox.refreshSource();\r\n this.doubleListBox.setSelection(newDimension.SelectedItems);\r\n })\r\n .catch(({ errors } = {}) => {\r\n this.viewModel.errors.add(_.isEmpty(errors) ? undefined : this.deps.getODataErrors(errors));\r\n })\r\n .finally(withUiBlock(this.$el.parent(), this.deps.i18nGlobal.getString('loadingtext')));\r\n }\r\n\r\n updateDimensionCount(selectedDimension, counts) {\r\n if (selectedDimension.IsBulkEnabled) {\r\n /* eslint-disable no-param-reassign */\r\n selectedDimension.AvailableItems = _.map(counts, count =>\r\n ({\r\n Id: count.AttributeName,\r\n Name: count.AttributeName,\r\n Count: count.OfferCount ? count.OfferCount : NO_DATA,\r\n Clicks: count.PerformanceMetrics.Clicks ?\r\n count.PerformanceMetrics.Clicks : NO_DATA,\r\n Impressions: count.PerformanceMetrics.Impressions ?\r\n count.PerformanceMetrics.Impressions : NO_DATA,\r\n Conversions: count.PerformanceMetrics.Conversions ?\r\n count.PerformanceMetrics.Conversions : NO_DATA,\r\n }));\r\n } else {\r\n _.each(selectedDimension.AvailableItems, (item) => {\r\n const dimension = _.find(counts, count => item.Name && count.AttributeName &&\r\n item.Name.toLowerCase() === count.AttributeName.toLowerCase());\r\n\r\n item.Count = dimension && dimension.OfferCount ? dimension.OfferCount : NO_DATA;\r\n item.Clicks = dimension && dimension.PerformanceMetrics.Clicks ?\r\n dimension.PerformanceMetrics.Clicks : NO_DATA;\r\n item.Impressions = dimension && dimension.PerformanceMetrics.Impressions ?\r\n dimension.PerformanceMetrics.Impressions : NO_DATA;\r\n item.Conversions = dimension && dimension.PerformanceMetrics.Conversions ?\r\n dimension.PerformanceMetrics.Conversions : NO_DATA;\r\n });\r\n }\r\n\r\n _.each(selectedDimension.SelectedItems, (item) => {\r\n const dimension = _.find(counts, count => item.Name && count.AttributeName &&\r\n item.Name.toLowerCase() === count.AttributeName.toLowerCase());\r\n\r\n item.Count = dimension ? dimension.OfferCount : NO_DATA;\r\n });\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .save-button': 'saveProductGroups',\r\n 'click .cancel-button': 'remove',\r\n 'click .showBulkPanel': 'showBulkPanel',\r\n 'click .hideBulkPanel': 'hideBulkPanel',\r\n 'click .add-custom-button': 'addBulkValues',\r\n 'click .gotoCampaignSettings': 'navigateToCampaignSettingsTab',\r\n };\r\n }\r\n\r\n showBulkPanel() {\r\n this.viewModel.showBulkPanel(true);\r\n }\r\n\r\n hideBulkPanel() {\r\n this.viewModel.showBulkPanel(false);\r\n }\r\n\r\n addBulkValues() {\r\n /* eslint-disable no-underscore-dangle */\r\n let textValue = this.doubleListBox._viewModel.customData.textAreaValue();\r\n\r\n if (!textValue || !textValue.trim()) {\r\n return;\r\n }\r\n textValue = textValue.trim();\r\n const bulkInput = _.uniq(\r\n _.map(textValue.split('\\n'), text => text.trim()),\r\n val => val.toLowerCase()\r\n );\r\n const selectedDimension = this.viewModel.selectedDimension();\r\n const selectedItems = _.clone(this.doubleListBox._viewModel.selectedItems());\r\n const addedPartitions = [];\r\n\r\n _.each(bulkInput, (input) => {\r\n if (_.find(selectedItems, item => item.Name.toLowerCase() === input.toLowerCase())) {\r\n return;\r\n }\r\n addedPartitions.push({\r\n Name: input,\r\n Id: input,\r\n Count: _.result(_.find(\r\n selectedDimension.AvailableItems,\r\n item => item.Name.toLowerCase() === input.toLowerCase()\r\n ), 'Count', 0),\r\n });\r\n });\r\n\r\n this.doubleListBox._viewModel.customData.textAreaValue('');\r\n selectedItems.push(...addedPartitions);\r\n this.doubleListBox.setSelection(selectedItems);\r\n }\r\n\r\n navigateToCampaignSettingsTab() {\r\n this.remove();\r\n window.App.navigate('customer/:customer_id/account/:account_id/campaign/:campaign_id/edit');\r\n }\r\n\r\n saveProductGroups() {\r\n const selectedDimension = this.viewModel.selectedDimension();\r\n const newPartitions = _.pluck(this.doubleListBox._viewModel.selectedItems(), 'Id');\r\n const childrenAttribute = _.chain(this.children)\r\n .pluck('Condition')\r\n .pluck('Attribute')\r\n .filter(Boolean)\r\n .value() || [];\r\n\r\n if ((this.currentPartition.IsLeaf && !newPartitions.length) ||\r\n _.isEqual(newPartitions.sort(), childrenAttribute.sort())) {\r\n this.remove();\r\n return;\r\n }\r\n\r\n const changeMode = this.getChangeMode(selectedDimension.Id, newPartitions);\r\n\r\n if (changeMode === 3) {\r\n const message = this.isBidValueOption ?\r\n this.deps.i18n.getString('ProductGroupsGrid_ChangeOperandWarning').replace('{0}', this.displayName).replace('{1}', this.defaultBid) :\r\n this.deps.i18n.getString('ProductGroupsGrid_ChangeOperandWarning_BidBoost', {\r\n productPartitionName: this.displayName,\r\n adgroupBidBoost: this.defaultBid,\r\n });\r\n\r\n if (!this.deps.popup.confirm(message)) {\r\n return;\r\n }\r\n }\r\n\r\n const params =\r\n this.getUpdateParams(newPartitions, childrenAttribute, selectedDimension.Id, changeMode);\r\n\r\n if (this.checkIfExceedMaxNumberOfForm(params)) {\r\n this.updateSubdivisions(params, changeMode);\r\n }\r\n }\r\n\r\n updateSubdivisions(params, changeMode) {\r\n const url = queryify('/campaign/ProductGroups/UpdateSubdivision', {\r\n cid: this.deps.state.get('customer_id'),\r\n uid: this.deps.state.get('user_id'),\r\n aid: this.deps.state.get('account_id'),\r\n cmpid: this.deps.state.get('campaign_id'),\r\n adgid: this.deps.state.get('adgroup_id'),\r\n __adcenterAJAX: true,\r\n });\r\n\r\n $.advertiser.ajaxPost({\r\n url,\r\n data: params,\r\n onJsonError: ({ Errors } = {}) => {\r\n this.viewModel.errors(_.pluck(Errors, 'Message'));\r\n },\r\n }).then((data) => {\r\n if (!_.result(data, 'Errors')) {\r\n this.trigger('save', {\r\n expandedNodeDelta: changeMode === 0 ? _.first(data.CreatedPartitionIds) : undefined,\r\n });\r\n }\r\n });\r\n }\r\n\r\n checkIfExceedMaxNumberOfForm(data) {\r\n if (_.size(data) > Number(this.deps.config.get('MaxHttpCollectionKeys'))) {\r\n this.viewModel.errors([this.deps.i18n.getString('ProductGroupsGrid_Error_TooManyProductGroups')]);\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n getUpdateParams(newPartitions, oldPartitions, dimensionType, changeMode) {\r\n const newPartitionsLowerCaseCopy = _.map(\r\n newPartitions || [],\r\n item => String(item).toLowerCase()\r\n );\r\n const oldPartitionsLowerCaseCopy = _.map(\r\n oldPartitions || [],\r\n item => String(item).toLowerCase()\r\n );\r\n const newBid = this.getNewBid(changeMode);\r\n const params = {};\r\n const added = [];\r\n const deleted = [];\r\n const parentId = this.currentPartition.ParentId > 0 ? this.currentPartition.ParentId : null;\r\n\r\n switch (changeMode) {\r\n // add partition under leaf\r\n case 0:\r\n // delete parent as leaf\r\n deleted.push(this.currentPartition.Id);\r\n // add parent as subdivision\r\n added.push(this.createProductGroup(\r\n this.currentPartition.Condition.Operand,\r\n this.currentPartition.Condition.Attribute, -1, parentId, null\r\n ));\r\n // add new partitions\r\n _.each(newPartitions, (item) => {\r\n added.push(this.createProductGroup(dimensionType, item, null, -1, newBid));\r\n });\r\n // add everything else node\r\n added.push(this.createProductGroup(dimensionType, '', null, -1, newBid));\r\n break;\r\n // delete all partitions under subdivision\r\n case 1:\r\n // delete all partitions(including everything else)\r\n deleted.push(..._.pluck(this.children, 'Id'));\r\n // delete parent as subdivision\r\n deleted.push(this.currentPartition.Id);\r\n // add parent as leaf\r\n added.push(this.createProductGroup(\r\n this.currentPartition.Condition.Operand,\r\n this.currentPartition.Condition.Attribute, null, parentId, newBid\r\n ));\r\n break;\r\n // add or delete partition under subdivision in same dimension\r\n case 2:\r\n // delete partitions which doesn't exist in new partition list(except everything else)\r\n _.each(this.children, (child) => {\r\n if (!_.isEmpty(child.Condition.Attribute) &&\r\n !_.contains(newPartitionsLowerCaseCopy, child.Condition.Attribute.toLowerCase())) {\r\n deleted.push(child.Id);\r\n }\r\n });\r\n // add partitions which doesn't exist in current children list\r\n _.each(newPartitions, (item) => {\r\n if (!_.contains(oldPartitionsLowerCaseCopy, String(item).toLowerCase())) {\r\n added.push(this.createProductGroup(\r\n dimensionType,\r\n item, null, this.currentPartition.Id, newBid\r\n ));\r\n }\r\n });\r\n break;\r\n // add partition under subdivision in different dimension\r\n case 3:\r\n // delete all old partitions(including everything else)\r\n deleted.push(..._.pluck(this.children, 'Id'));\r\n // add new partitions\r\n _.each(newPartitions, (item) => {\r\n added.push(this.createProductGroup(\r\n dimensionType,\r\n item, null, this.currentPartition.Id, newBid\r\n ));\r\n });\r\n // add everything else\r\n added.push(this.createProductGroup(dimensionType, '', null, this.currentPartition.Id, newBid));\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n _.each(added, (item, index) => {\r\n _.each(_.keys(item), (key) => {\r\n params[`Added[${index}].${key}`] = item[key];\r\n });\r\n });\r\n _.each(deleted, (item, index) => {\r\n params[`Deleted[${index}]`] = item;\r\n });\r\n return params;\r\n }\r\n\r\n getChangeMode(newDimension, newPartitions) {\r\n if (this.currentPartition.IsLeaf && !this.children.length) {\r\n // add new partitions under leaf\r\n return 0;\r\n }\r\n if (!newPartitions.length) {\r\n // delete all partitions under subdivision\r\n return 1;\r\n }\r\n if (this.children.length && this.children[0].Condition.Operand === newDimension) {\r\n // add or delete partitions in same dimension\r\n return 2;\r\n }\r\n // add partition in different dimensions\r\n return 3;\r\n }\r\n\r\n getNewBid(changeMode) {\r\n let inheritNode = null;\r\n\r\n switch (changeMode) {\r\n case 0:\r\n // add patition under leaf node, new partition inherits bid from leaf node.\r\n inheritNode = this.currentPartition;\r\n break;\r\n case 2:\r\n // add partition under non-leaf node,\r\n // new partition inherits bid from everythingElse at the same level.\r\n inheritNode = _.find(this.children, child => _.isEmpty(child.Condition.Attribute));\r\n break;\r\n default:\r\n // inherit bid from ad group\r\n break;\r\n }\r\n if (_.result(inheritNode, 'IsExcluded') === true) {\r\n return '';\r\n }\r\n\r\n if (this.isBidValueOption) {\r\n const bid = _.result(_.result(_.result(inheritNode, 'BidAmount'), 'Bid'), 'Amount');\r\n\r\n return { BidValue: bid ? this.deps.decimal.fromFloatToString(bid, 2) : this.defaultBid };\r\n }\r\n\r\n const bidBoost = _.result(_.result(inheritNode, 'BidBoost'), 'Multiplier');\r\n\r\n return {\r\n BidBoost: bidBoost ? this.deps.decimal.fromFloatToString(bidBoost, 2) : this.defaultBid,\r\n };\r\n }\r\n\r\n createProductGroup(dimensionType, dimensionValue, Id, parentId, bid) {\r\n return _.extend({\r\n DimensionType: dimensionType,\r\n DimensionValue: dimensionValue,\r\n Id,\r\n ParentId: parentId,\r\n }, bid);\r\n }\r\n}\r\n\r\nexport const ProductGroupsSelectorDialog = decorate(ProductGroupsSelectorView, {\r\n maxWidth: 1500,\r\n width: 1100,\r\n minHeight: 530,\r\n draggable: false,\r\n position: 'center',\r\n});\r\n","import ko from 'knockout';\r\nimport { KoSchema } from '@bingads-webui/ko-schema';\r\n\r\nexport default class ViewModel {\r\n constructor({ deps } = {}) {\r\n this.sampleOffers = ko.observableArray();\r\n this.sampleCount = ko.observable();\r\n\r\n this.showLimitExceededWarning = ko.observable(false);\r\n this.hasOffer = ko.computed(() => this.sampleCount() > 0);\r\n\r\n this.offerDescription = ko.computed(() => {\r\n const sampleCount = this.sampleCount();\r\n\r\n if (!this.hasOffer()) {\r\n return deps.i18n.getString('ProductGroupsGrid_NoSampleOfferDescription');\r\n } else if (sampleCount === 1) {\r\n return deps.i18n.getString('ProductGroupsGrid_SingularSampleOfferDescription', { sampleCount });\r\n }\r\n return deps.i18n.getString('ProductGroupsGrid_PluralSampleOfferDescription', { sampleCount });\r\n });\r\n\r\n this.updateSample = (data) => {\r\n this.sampleOffers(data);\r\n this.sampleCount(data.totalCount);\r\n };\r\n\r\n KoSchema(this);\r\n }\r\n}\r\n","import { View } from 'backbone';\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\n// import { decorate } from '@bingads-webui/dialog';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport template from '../../template/product-groups-detail.pug';\r\nimport ViewModel from '../viewmodel/product-groups-detail';\r\nimport { PRODUCT_OFFER_DETAIL_CLOSE_DELAY } from '../../constant';\r\n\r\nconst NUMBER_OF_PRODUCTS_TO_SHOW = 10;\r\n\r\nconst AttributeToFilterType = {\r\n Id: 'ExactStringValue',\r\n Title: 'PartialStringValue',\r\n Brand: 'ExactStringValue',\r\n Price: 'NumericValue',\r\n Condition: 'EnumSelector',\r\n CountryOfSale: 'ExactStringValue',\r\n CategoryL1: 'ExactStringValue',\r\n CategoryL2: 'ExactStringValue',\r\n CategoryL3: 'ExactStringValue',\r\n CategoryL4: 'ExactStringValue',\r\n CategoryL5: 'ExactStringValue',\r\n ProductType1: 'ExactStringValue',\r\n ProductType2: 'ExactStringValue',\r\n ProductType3: 'ExactStringValue',\r\n ProductType4: 'ExactStringValue',\r\n ProductType5: 'ExactStringValue',\r\n CustomLabel0: 'ExactStringValue',\r\n CustomLabel1: 'ExactStringValue',\r\n CustomLabel2: 'ExactStringValue',\r\n CustomLabel3: 'ExactStringValue',\r\n CustomLabel4: 'ExactStringValue',\r\n};\r\n\r\nconst ConditionValue = {\r\n New: '0',\r\n Refurbished: '1',\r\n Used: '2',\r\n};\r\n\r\nfunction isEmpty(val) {\r\n return _.isUndefined(val) || _.isNull(val) || _.isEmpty(val);\r\n}\r\n\r\nclass ProductGroupsDetailView extends View {\r\n /**\r\n * Initialize product groups detail page.\r\n *\r\n * @param {Object} options - initialization options.\r\n * @param {integer} options.productPartitionId - selected product partition's id.\r\n * @param {Object[]} options.partitionFullPath - path from selected product group to root.\r\n * @param {boolean} options.isEverythingElseRow - whether or not it is a everything else row.\r\n * @returns {void}\r\n */\r\n initialize({\r\n deps,\r\n grid,\r\n campaignId,\r\n adGroupId,\r\n productPartitionId,\r\n partitionFullPath,\r\n isEverythingElseRow,\r\n parentView,\r\n } = {}) {\r\n this.deps = deps;\r\n this.grid = grid;\r\n this.viewModel = new ViewModel({ deps: this.deps });\r\n\r\n this.partitionFullPath = partitionFullPath;\r\n this.campaignId = this.deps.state.get('campaign_id') || campaignId;\r\n this.adGroupId = this.deps.state.get('adgroup_id') || adGroupId;\r\n this.productPartitionId = productPartitionId;\r\n this.isEverythingElseRow = isEverythingElseRow;\r\n\r\n this.currentCondition = _.last(partitionFullPath);\r\n this.parentView = parentView;\r\n }\r\n\r\n render() {\r\n const query = {\r\n select: ['Id', 'Title'],\r\n limit: NUMBER_OF_PRODUCTS_TO_SHOW,\r\n };\r\n const params = {\r\n entitySet: this.deps.edmCampaign.currentAccount\r\n .Campaigns.$withKey(this.campaignId)\r\n .AdGroups.$withKey(this.adGroupId)\r\n .ProductPartitions.$withKey(this.productPartitionId)\r\n .ProductOffers,\r\n successCallback: (response, textStatus, xhr) => {\r\n this.viewModel.showLimitExceededWarning(xhr.getResponseHeader('OfferLimitExceeded'));\r\n },\r\n bypassCache: false,\r\n };\r\n\r\n this.$el.html(template({\r\n i18n: this.deps.i18n,\r\n partitionTrail: this.partitionTrail,\r\n currentOperand: isEmpty(this.currentCondition.Operand) ? '' : this.deps.i18n.getString(`ProductsGrid_Column_${this.currentCondition.Operand}`),\r\n currentAttribute: this.currentCondition.Attribute,\r\n isEverythingElseRow: this.isEverythingElseRow,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n setTimeout(() => {\r\n this.deps.jsData.ProductOffer.findAll(query, params)\r\n .then((data) => {\r\n this.viewModel.updateSample(data);\r\n this.trigger('rendered');\r\n })\r\n .catch(({ errors } = {}) => {\r\n this.viewModel.errors.add(isEmpty(errors) ? undefined : this.deps.getODataErrors(errors));\r\n })\r\n .finally(withUiBlock(this.parentView.$el, this.deps.i18nGlobal.getString('loadingtext')));\r\n }, 0);\r\n return this;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .view-full-product': 'navigateToProductTab',\r\n 'click .gotoCampaignSettings': 'navigateToCampaignSettingsTab',\r\n 'mouseenter .productgroup-detail': 'onMouseEnter',\r\n 'mouseleave .productgroup-detail': 'onMouseLeave',\r\n };\r\n }\r\n\r\n onMouseEnter() {\r\n clearTimeout(this.grid.productOfferCloseTimer);\r\n }\r\n\r\n onMouseLeave() {\r\n this.grid.productOfferCloseTimer = setTimeout(() => {\r\n this.grid.removeHoverProductDetails();\r\n }, PRODUCT_OFFER_DETAIL_CLOSE_DELAY);\r\n }\r\n\r\n get partitionTrail() {\r\n let trail = this.deps.i18n.getString('ShoppingCampaign_AllProducts').concat(' > ');\r\n\r\n for (let index = 1; index < this.partitionFullPath.length - 1; index += 1) {\r\n const item = this.partitionFullPath[index];\r\n\r\n trail = trail.concat(item.Attribute, ' (', this.deps.i18n.getString(`ProductsGrid_Column_${item.Operand}`), ') > ');\r\n }\r\n return trail;\r\n }\r\n\r\n navigateToProductTab() {\r\n const filter = { FilterExpressions: [] };\r\n\r\n _.each(this.partitionFullPath, (item, index) => {\r\n // skip root - all product\r\n if (index > 0) {\r\n let selectedOperator;\r\n let value;\r\n\r\n switch (AttributeToFilterType[item.Operand]) {\r\n case 'ExactStringValue':\r\n selectedOperator = 'Equal';\r\n value = item.Attribute;\r\n break;\r\n case 'EnumSelector':\r\n selectedOperator = 'EnumSelection';\r\n value = ConditionValue[item.Attribute];\r\n break;\r\n case 'PartialStringValue':\r\n selectedOperator = 'Contains';\r\n value = item.Attribute;\r\n break;\r\n default:\r\n break;\r\n }\r\n filter.FilterExpressions.push({\r\n SelectedColumn: item.Operand, SelectedOperator: selectedOperator, Values: [value],\r\n });\r\n }\r\n });\r\n this.remove();\r\n this.parentView.remove();\r\n window.App.navigate(`customer/:customer_id/account/:account_id/campaign/${this.campaignId}/adgroup/${this.adGroupId}/products/find/:filter`, { param: { filter } });\r\n }\r\n\r\n navigateToCampaignSettingsTab() {\r\n this.remove();\r\n this.parentView.remove();\r\n window.App.navigate(`customer/:customer_id/account/:account_id/campaign/${this.campaignId}/edit`);\r\n }\r\n}\r\n\r\nexport default ProductGroupsDetailView;\r\n","import _ from 'underscore';\r\n// eslint-disable-next-line max-len\r\n// legacy$\r\nimport $ from 'jquery';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { queryify } from '@bingads-webui/url-util';\r\nimport { constants } from '@bingads-webui/projection-grid-toolbar';\r\nimport { PopoverView, positions } from '@bingads-webui/popover';\r\nimport { setUpErrorHandling } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { merge } from '@bingads-webui-universal/primitive-utilities';\r\nimport bidWarningContentTemplate from '../../template/bid-warning-content.pug';\r\nimport bidWarningTitleTemplate from '../../template/bid-warning-title.pug';\r\nimport { ProductGroupBidLandscapePopupFactory } from './bid-landscape-popup';\r\nimport { ProductGroupsSelectorDialog } from './product-groups-selector-dialog';\r\nimport { ProductGroupPathUtil } from './product-groups-path-util';\r\nimport ProductGroupsDetailView from './product-groups-detail-view';\r\nimport { PRODUCT_OFFER_DETAIL_SHOW_DELAY, PRODUCT_OFFER_DETAIL_CLOSE_DELAY, FETCH_OFFLINE_STATUS_DELAY, DEFAULT_CURRENT_PAGE, MAX_PAGE_SIZE, productGroupLevel } from '../../constant';\r\nimport { SingleViewWrapper } from './single-view-wrapper';\r\n\r\nclass AbstractProductGroupsView extends DeterministicWrapperView {\r\n viewFactory({\r\n deps,\r\n campaign,\r\n adgroup,\r\n filterService,\r\n level,\r\n gridParameters,\r\n callbacks,\r\n preferenceConfig,\r\n }) {\r\n this.removed = false;\r\n this.deps = deps;\r\n this.gridParameters = gridParameters;\r\n this.callbacks = callbacks;\r\n this.campaignId = _.result(campaign, 'Id');\r\n this.campaignSubType = _.result(campaign, 'CampaignSubType');\r\n this.adgroupId = _.result(adgroup, 'Id');\r\n this.filterService = filterService;\r\n this.level = level;\r\n this.productGroupPathUtil = new ProductGroupPathUtil({ deps });\r\n if (adgroup) {\r\n this.setting = _.first(adgroup.Settings) || {};\r\n // Default BidOption is BidValue\r\n this.isBidValueOption = _.result(this.setting, 'BidOption', 0) === 0;\r\n this.isBidBoostOption = !this.isBidValueOption;\r\n this.defaultBid = this.isBidValueOption ? _.result(adgroup, 'Bid') : this.setting.BidBoostValue;\r\n } else {\r\n this.isBidValueOption = true;\r\n this.isBidBoostOption = _.result(this.deps.config.get('Permissions'), 'IsCPGForBSCEnabled');\r\n }\r\n\r\n setUpErrorHandling({\r\n gridView: this,\r\n scope: {\r\n campaignId: this.campaignId,\r\n adgroupId: this.adgroupId,\r\n },\r\n dataSource: this.gridParameters.dataSource,\r\n i18n: this.deps.i18n,\r\n });\r\n\r\n this.refreshGrid = () => {\r\n this.deps.cacheManager.invalidate('ProductGroup');\r\n this.grid.gridView.refresh(true);\r\n };\r\n this.productOfferOpenTimer = undefined;\r\n this.productOfferCloseTimer = undefined;\r\n this.fetchOfflineStatusTimer = undefined;\r\n\r\n const config = merge(this.getGridConfig(), preferenceConfig);\r\n this.initializeGrid(config);\r\n this.grid.columnChooser.columnChooserAgent.onRecordRemoved(() => {\r\n callbacks.onColumnChooserMenuChanged(this.isTreeView);\r\n });\r\n this.grid.columnChooser.columnChooserAgent.onRecordSaved(() => {\r\n callbacks.onColumnChooserMenuChanged(this.isTreeView);\r\n });\r\n this.grid.columnChooser.columnChooserAgent.onSelectedRecordChanged(() => {\r\n callbacks.onColumnChooserMenuChanged(this.isTreeView);\r\n });\r\n this.grid.columnChooser.columnChooserAgent.onSelectedColumnsChanged((names) => {\r\n callbacks.onSelectedColumnsChanged(names);\r\n });\r\n return this.grid.gridView;\r\n }\r\n\r\n getAttributeDisplayName = (gridView, row) => {\r\n const parentId = row.ParentId;\r\n const parentRow = gridView.itemWithKey(parentId);\r\n\r\n if (_.isEmpty(row.Condition.Operand)) {\r\n return this.deps.i18n.getString('ShoppingCampaign_AllProducts');\r\n } else if (_.isEmpty(row.Condition.Attribute)) {\r\n if (!parentRow.Condition.Attribute && parentRow.Condition.Operand) {\r\n // Parent node is everything else\r\n return this.deps.i18n.getString('ProductGroupsGrid_EverythingElse');\r\n }\r\n // Parent node is not everything else\r\n const parentAttribute = parentRow.Condition.Attribute || this.deps.i18n.getString('ShoppingCampaign_AllProducts');\r\n return this.deps.i18n.getString('ProductGroupsGrid_EverythingElseIn').replace('{0}', parentAttribute);\r\n }\r\n\r\n return row.Condition.Attribute;\r\n };\r\n\r\n getFullConditionPath = (gridView, row) => {\r\n const path = [];\r\n\r\n [row.Condition, ...row.ParentConditions].forEach((condition) => {\r\n path.push(_.defaults({\r\n Attribute: this.getAttributeDisplayName(gridView, this.productGroupPathUtil),\r\n }, condition));\r\n });\r\n\r\n return path;\r\n }\r\n\r\n getPartitionFullPath = (gridView, rowId) => {\r\n const path = [];\r\n let row = gridView.itemWithKey(rowId);\r\n let parentId = row.ParentId;\r\n\r\n path.push(_.defaults({\r\n Attribute: this.getAttributeDisplayName(gridView, row),\r\n }, row.Condition));\r\n\r\n while (parentId) {\r\n row = gridView.itemWithKey(parentId);\r\n path.unshift(_.defaults({\r\n Attribute: this.getAttributeDisplayName(gridView, row),\r\n }, row.Condition));\r\n parentId = row.ParentId;\r\n }\r\n return path;\r\n };\r\n\r\n expandToolBar = (view, productGroupsView) => {\r\n const toolbarEditor = productGroupsView.grid.toolbar.gridToolbarGroup\r\n .toolbarWithName(constants.DEFAULT_TOOLBAR_NAME);\r\n\r\n toolbarEditor.overrideWith(view);\r\n const closeView = () => {\r\n toolbarEditor.restoreToolbar();\r\n view.remove();\r\n };\r\n\r\n view.on('refresh', () => {\r\n productGroupsView.refreshGrid();\r\n });\r\n\r\n view.on('hide', () => {\r\n closeView(view);\r\n\r\n // collapse Edit menu after restore toolbar\r\n $('.toolbar .dropdown.open').removeClass('open');\r\n });\r\n\r\n view.on('edit-bid-errors', (errors) => {\r\n productGroupsView.grid.inlineError.setErrors(errors);\r\n closeView(view);\r\n });\r\n };\r\n\r\n events() {\r\n return {\r\n 'mouseenter .product-group-name-container': 'onMouseEnterShowProductDetail',\r\n 'mouseleave .product-group-name-container': 'onMouseLeaveShowProductDetail',\r\n 'click .show-product-selector': 'showProductGroupSelector',\r\n 'click .bidlandscape_icon': 'showBidLandscape',\r\n 'click .show-product-warning': 'showProductWarning',\r\n };\r\n }\r\n\r\n onMouseEnterShowProductDetail(e) {\r\n clearTimeout(this.productOfferCloseTimer);\r\n this.productOfferOpenTimer = setTimeout(() => {\r\n this.showProductDetails(e);\r\n }, PRODUCT_OFFER_DETAIL_SHOW_DELAY);\r\n }\r\n\r\n onMouseLeaveShowProductDetail() {\r\n clearTimeout(this.productOfferOpenTimer);\r\n this.productOfferCloseTimer = setTimeout(() => {\r\n this.removeHoverProductDetails();\r\n }, PRODUCT_OFFER_DETAIL_CLOSE_DELAY);\r\n }\r\n\r\n initializeGrid(config) {\r\n const pGridFactory = this.initializeGridFactory();\r\n\r\n this.grid = pGridFactory.create(config);\r\n\r\n this.grid.gridView.on('forceRefresh', this.refreshGrid);\r\n\r\n this.grid.gridView.on('didInlineEdit', this.inlineEditSuccessCallback, this);\r\n\r\n this.grid.gridView.on('willReload', () => {\r\n this.grid.inlineError.clearErrors();\r\n\r\n const { options } = this.grid.gridView.get('dataSource');\r\n\r\n if (options.forceRefresh) {\r\n this.grid.gridView.deselectAll();\r\n }\r\n });\r\n\r\n const { i18n, pageContext } = this.deps;\r\n const processingDataMessage = i18n.getString('ProductGroupsGrid_ProcessingDataMessage');\r\n const dataReadyMessage = i18n.getString('ProductGroupsGrid_DataReadyMessage');\r\n let tooMuchProductOfferMessage = i18n.getString('ProductGroupsGrid_TooMuchProductOfferMessage_AccountLevel');\r\n if (pageContext.CurrentAdGroup != null) {\r\n tooMuchProductOfferMessage = i18n.getString('ProductGroupsGrid_TooMuchProductOfferMessage_AdGroupLevel');\r\n } else if (pageContext.CurrentCampaign != null) {\r\n tooMuchProductOfferMessage = i18n.getString('ProductGroupsGrid_TooMuchProductOfferMessage_CampaignLevel');\r\n }\r\n\r\n this.grid.gridView.on('didReload', () => {\r\n if (this.removed) {\r\n return;\r\n }\r\n let url;\r\n switch (this.level) {\r\n case productGroupLevel.AdGroup:\r\n url = '/ODataApi/Campaign/V2/Customers(:customer_id)/Accounts(:account_id)/Campaigns(:campaign_id)/AdGroups(:adgroup_id)/ProductGroups/Default.PollOfflineTaskExecutionStatus';\r\n break;\r\n case productGroupLevel.Campaign:\r\n url = '/ODataApi/Campaign/V2/Customers(:customer_id)/Accounts(:account_id)/Campaigns(:campaign_id)/ProductGroups/Default.PollOfflineTaskExecutionStatus';\r\n break;\r\n case productGroupLevel.Account:\r\n default:\r\n url = '/ODataApi/Campaign/V2/Customers(:customer_id)/Accounts(:account_id)/ProductGroups/Default.PollOfflineTaskExecutionStatus';\r\n break;\r\n }\r\n\r\n const data = this.grid.gridView.dataSource.rawData;\r\n clearInterval(this.fetchOfflineStatusTimer);\r\n this.fetchOfflineStatusTimer = undefined;\r\n const productGroupBIDataLoadStatus = data && data['@ns.productGroupBIDataLoadStatus'];\r\n if (productGroupBIDataLoadStatus === 'OfferCountLimitExceed') { // for the scenario that product offers more than 5 million\r\n this.callbacks.onShowTooMuchProductOffer(tooMuchProductOfferMessage);\r\n } else if (productGroupBIDataLoadStatus === 'OutOfDateOfferCountLimitExceed') { // for the normal offline status scenario\r\n this.callbacks.onMessageBar(processingDataMessage);\r\n this.fetchOfflineStatusTimer = setInterval(() => {\r\n this.deps.odata.get(url).then((response) => {\r\n if (response.value && this.fetchOfflineStatusTimer) {\r\n clearInterval(this.fetchOfflineStatusTimer);\r\n this.fetchOfflineStatusTimer = undefined;\r\n this.callbacks.onPopupMessage(dataReadyMessage);\r\n }\r\n });\r\n }, FETCH_OFFLINE_STATUS_DELAY);\r\n }\r\n });\r\n\r\n this.grid.gridView.on('didUpdate', (changes) => {\r\n if (this.grid.gridView.countRows === 0) {\r\n // `.create-root-node` doesn't exist in current area.\r\n // we need use JQuery to hook event for root node creating\r\n $('.create-root-node').click(() => {\r\n this.createRootNode();\r\n });\r\n }\r\n if (_.has(changes, 'sortableHeader')) {\r\n const orderby = _.result(changes.query, 'orderby') || _.result(this.grid.gridView.get('query'), 'orderby');\r\n const { sortableHeader } = changes;\r\n\r\n this.deps.preferenceService.setAtUserLevel({ Name: `WebApp.CampaignUI.${config.name}`, Data: { sortInfo: { orderby, sortableHeader } } });\r\n }\r\n });\r\n\r\n this.bidLandscapePopupFactory = new ProductGroupBidLandscapePopupFactory({\r\n deps: this.deps,\r\n view: this,\r\n });\r\n }\r\n\r\n showProductWarning(event) {\r\n const IsBidLessThan5CentsInShoppingCampaignEnabled = _.result(this.deps.config.get('Permissions'), 'IsBidLessThan5CentsInShoppingCampaignEnabled');\r\n const bidRangeKey = IsBidLessThan5CentsInShoppingCampaignEnabled ? 'ProductGroupBidRange' : 'KeywordBidRange';\r\n const MinimumBid = _.result(this.deps.config.get(bidRangeKey), 'FloorValue');\r\n this.warningDetailPopover = new this.deps.PopoverView({\r\n target: $(event.target),\r\n className: 'product-group-popover-warning',\r\n position: this.deps.positions.relativeToTableRow({\r\n marginBottom: $('footer > .navbar-footer').height(),\r\n }),\r\n eventActions: {\r\n 'click .set-bid': () => {\r\n this.showBidEditorForm(event);\r\n },\r\n },\r\n }).setContent(new this.deps.contents.TitledContent()\r\n .setBody({\r\n html: bidWarningContentTemplate({\r\n i18n: this.deps.i18n,\r\n reason: this.deps.i18n.getString('ProductGroupsGrid_BidError_PopupContent', {\r\n bidAmount: MinimumBid,\r\n }),\r\n }),\r\n })\r\n .setTitle({\r\n html: bidWarningTitleTemplate({ i18n: this.deps.i18n }),\r\n }));\r\n }\r\n\r\n showProductDetails(e) {\r\n const item = this.grid.gridView.itemOfElement(e.target);\r\n if (!item || item.Id === this.currentHoverItemId) {\r\n return;\r\n }\r\n this.currentHoverItemId = item.Id;\r\n const conditions = item.ParentConditions ?\r\n [...item.ParentConditions, item.Condition] : [item.Condition];\r\n const partitionFullPath =\r\n this.productGroupPathUtil.getFullPath(conditions);\r\n if (!this.ProductDetailPopoverView) {\r\n this.ProductDetailPopoverView = new PopoverView({\r\n target: $(e.target),\r\n position: positions.relativeToTableRow({\r\n marginBottom: $('footer > .navbar-footer').height(),\r\n }),\r\n });\r\n this.ProductDetailPopoverView.on('remove', () => {\r\n this.ProductDetailPopoverView = null;\r\n this.currentHoverItemId = null;\r\n });\r\n } else {\r\n this.ProductDetailPopoverView.setPositionByTarget($(e.target));\r\n }\r\n this.ProductDetailPopoverView.setContent(new SingleViewWrapper({\r\n view: new ProductGroupsDetailView({\r\n deps: this.deps,\r\n grid: this,\r\n campaignId: item.CampaignId,\r\n adGroupId: item.AdGroupId,\r\n productPartitionId: item.Id,\r\n partitionFullPath,\r\n isEverythingElseRow:\r\n _.isEmpty(item.Condition.Attribute) && !_.isEmpty(item.Condition.Operand),\r\n parentView: this.ProductDetailPopoverView,\r\n }),\r\n rendered: false,\r\n }));\r\n }\r\n\r\n removeHoverProductDetails() {\r\n if (this.ProductDetailPopoverView) {\r\n this.ProductDetailPopoverView.remove();\r\n }\r\n }\r\n\r\n refreshColumnChooserMenu() {\r\n this.grid.columnChooser.refreshMenu();\r\n }\r\n\r\n updateSelectedColumns(names) {\r\n this.grid.columnChooser.setSelectedColumns(names);\r\n }\r\n\r\n showProductGroupSelector(event) {\r\n const item = this.grid.gridView.itemOfElement(event.target);\r\n if (!item) {\r\n return;\r\n }\r\n const partitionFullPath = this.getPartitionFullPath(this.grid.gridView, item.Id);\r\n const children = _.map(item.childrenKeys, key => this.grid.gridView.itemWithKey(key));\r\n\r\n this.selectorView = new ProductGroupsSelectorDialog({\r\n deps: this.deps,\r\n currentPartition: item,\r\n displayName: this.getAttributeDisplayName(this.grid.gridView, item),\r\n children,\r\n partitionFullPath,\r\n defaultBid: this.defaultBid,\r\n campaignSubType: this.campaignSubType,\r\n isBidValueOption: this.isBidValueOption,\r\n }).render();\r\n\r\n this.selectorView.on('save', ({ expandedNodeDelta }) => {\r\n this.selectorView.remove();\r\n this.refreshGrid();\r\n this.grid.gridView.deselectAll();\r\n this.callbacks.markNeedSync();\r\n\r\n if (expandedNodeDelta) {\r\n // expand the newly added subdivision node\r\n const expandedNodeIdsCur =\r\n _.result(this.grid.gridView.get('tree-toggle'), 'expandedNodeIds', []);\r\n\r\n this.grid.tree.setExpandedNodeIds([...expandedNodeIdsCur, expandedNodeDelta]);\r\n }\r\n });\r\n }\r\n\r\n showBidLandscape(event) {\r\n event.stopPropagation();\r\n const item = this.grid.gridView.itemOfElement(event.target);\r\n if (!item) {\r\n return;\r\n }\r\n\r\n this.bidLandscapePopupFactory.showBidLandscapePopup({\r\n event,\r\n item: _.defaults({\r\n attributeDisplayName: this.getAttributeDisplayName(this.grid.gridView, item),\r\n }, item),\r\n });\r\n this.on('saveLandscape', this.refreshGrid);\r\n }\r\n\r\n createRootNode() {\r\n const bidRow = this.isBidValueOption ?\r\n { 'Added[0].BidValue': this.defaultBid } :\r\n { 'Added[0].BidBoost': this.defaultBid };\r\n\r\n $.advertiser.ajaxPost({\r\n url: queryify('/campaign/ProductGroups/UpdateSubdivision', {\r\n cid: this.deps.state.get('customer_id'),\r\n uid: this.deps.state.get('user_id'),\r\n aid: this.deps.state.get('account_id'),\r\n cmpid: this.deps.state.get('campaign_id'),\r\n adgid: this.deps.state.get('adgroup_id'),\r\n __adcenterAJAX: true,\r\n }),\r\n data: _.extend({\r\n 'Added[0].DimensionType': '',\r\n 'Added[0].DimensionValue': '',\r\n 'Added[0].Id': null,\r\n 'Added[0].ParentId': null,\r\n }, bidRow),\r\n onJsonError: ({ Errors } = {}) => {\r\n window.App.views.alertCenter.toastError(_.pluck(Errors, 'Message'));\r\n },\r\n onSuccess: (data) => {\r\n if (!_.result(data, 'Errors')) {\r\n this.refreshGrid();\r\n }\r\n },\r\n });\r\n }\r\n\r\n showBidEditorForm(event) {\r\n this.warningDetailPopover.remove();\r\n this.warningDetailPopover = null;\r\n\r\n // first select the current product group\r\n this.grid.gridView.selectRow(this.grid.gridView.keyOfElement(event.target));\r\n\r\n this.editBids();\r\n }\r\n\r\n editBids(bidType) {\r\n const selectedItems = this.grid.gridView.selectedItems();\r\n\r\n if (_.isEmpty(selectedItems)) {\r\n this.deps.popup.alert(this.deps.i18n.getString('Grid_RowSelectionRequired'));\r\n return;\r\n }\r\n const BulkEditView = this.deps.bulkEditView;\r\n const BulkEditModel = this.deps.bulkEditModel;\r\n\r\n this.editBidsView = new BulkEditView({\r\n model: new BulkEditModel({\r\n // selectedEntityCount: getGridSelectionCount(),\r\n Entity: 'ProductGroup',\r\n }),\r\n grid: {\r\n gridView: this.grid.gridView,\r\n pgridPlugins: {\r\n pagination: !this.isTreeView ? this.grid.pagination : undefined,\r\n crossPageSelectAll: !this.isTreeView ? this.grid.crossPageSelectAll : undefined,\r\n // filter,\r\n },\r\n bidType,\r\n // getPageSize and getCurrentPage are used for bulk edit on Tree view,\r\n // and on Flatten view Pagination plugin provides this info\r\n getPageSize: () => MAX_PAGE_SIZE,\r\n getCurrentPage: () => DEFAULT_CURRENT_PAGE,\r\n filterService: this.filterService,\r\n },\r\n deps: this.deps,\r\n isTreeView: this.isTreeView,\r\n defaultBid: this.defaultBid,\r\n entityType: 'ProductGroup',\r\n onOperationSuccess: () => {\r\n this.callbacks.markNeedSync();\r\n this.deps.cacheManager.invalidate('ProductGroup');\r\n this.grid.gridView.deselectAll();\r\n },\r\n }).render();\r\n\r\n this.expandToolBar(this.editBidsView, this);\r\n }\r\n\r\n inlineEditSuccessCallback() {\r\n this.callbacks.markNeedSync();\r\n this.refreshGrid();\r\n this.grid.gridView.deselectAll();\r\n }\r\n\r\n getToolBar() {\r\n return this.grid.toolbar.gridToolbarGroup.toolbars['default-toolbar'];\r\n }\r\n\r\n redirect(path) {\r\n window.location.href = path;\r\n }\r\n\r\n remove(...args) {\r\n this.removed = true;\r\n this.grid.gridView.remove();\r\n this.grid.columnChooser.remove();\r\n this.grid.toolbar.gridToolbarGroup.remove();\r\n\r\n if (!(_.isNull(this.editBidsView) || _.isUndefined(this.editBidsView))) {\r\n this.editBidsView.remove();\r\n }\r\n\r\n if (this.fetchOfflineStatusTimer) {\r\n clearInterval(this.fetchOfflineStatusTimer);\r\n this.fetchOfflineStatusTimer = undefined;\r\n }\r\n\r\n super.remove(...args);\r\n }\r\n}\r\n\r\nexport default AbstractProductGroupsView;\r\n","import projectionGrid from 'projection-grid';\r\nimport { columnChooserPlugin } from '@bingads-webui-campaign/projection-grid-column-chooser';\r\nimport { inlineDownloadWithoutFilterstateAndSegmentPlugin } from '@bingads-webui-campaign/projection-grid-inline-download';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { dateFilterPlugin } from '@bingads-webui-campaign/projection-grid-date-filter';\r\nimport { toolbarPlugin } from '@bingads-webui/projection-grid-toolbar';\r\nimport { treePlugin } from '@bingads-webui/projection-grid-tree';\r\nimport { clientSideSortPlugin } from '@bingads-webui/projection-grid-client-sort';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { inlineErrorPlugin } from '@bingads-webui/projection-grid-inline-error';\r\nimport { aggregatedRowsPlugin } from '@bingads-webui/projection-grid-aggregated-rows';\r\nimport { performanceLogPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { jsdataRawDataPlugin } from '@bingads-webui-campaign/projection-grid-js-data-raw-data';\r\nimport { ProductGroupsGridConfig } from '../common/view/product-groups-grid-config';\r\nimport AbstractProductGroupsView from '../common/view/abstract-product-groups-grid';\r\n\r\nclass TreeProductGroupsView extends AbstractProductGroupsView {\r\n initialize(options) {\r\n this.isTreeView = true;\r\n super.initialize(options);\r\n }\r\n\r\n getGridConfig() {\r\n return new ProductGroupsGridConfig({\r\n deps: this.deps,\r\n view: this,\r\n isTreeView: this.isTreeView,\r\n dataSource: this.gridParameters.dataSource,\r\n onTogglePillClicked: this.callbacks.onTogglePillClicked,\r\n });\r\n }\r\n\r\n initializeGridFactory() {\r\n return projectionGrid\r\n .factory({ vnext: true })\r\n .use(jsdataRawDataPlugin)\r\n .use(performanceLogPlugin)\r\n .use(dateFilterPlugin)\r\n // .use(this.dateFilterRefreshPlugin)\r\n .use(clientSideSortPlugin)\r\n .use(toolbarPlugin)\r\n .use(columnChooserPlugin)\r\n .use(treePlugin)\r\n .use(editablePlugin)\r\n .use(assistedSelectionPlugin)\r\n .use(inlineErrorPlugin({\r\n errorIconClasses: ['grid-error', 'spritedimage'],\r\n }))\r\n .use(uiBlockerPlugin)\r\n .use(placeholderPlugin)\r\n .use(inlineDownloadWithoutFilterstateAndSegmentPlugin)\r\n .use(aggregatedRowsPlugin({\r\n bottom: {\r\n getRows: (items, { view }) => [{\r\n item: {\r\n total: this.deps.i18n.getString('ProductGroupsGrid_TotalSummary', { count: view.getItemCount() }),\r\n isAggregateRow: true,\r\n },\r\n classes: `bottom-aggregated-row-${0}`,\r\n }],\r\n },\r\n }));\r\n }\r\n}\r\n\r\nexport default TreeProductGroupsView;\r\n","import projectionGrid from 'projection-grid';\r\nimport { columnChooserPlugin } from '@bingads-webui-campaign/projection-grid-column-chooser';\r\nimport { inlineDownloadWithoutFilterstateAndSegmentPlugin } from '@bingads-webui-campaign/projection-grid-inline-download';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { dateFilterPlugin } from '@bingads-webui-campaign/projection-grid-date-filter';\r\nimport { toolbarPlugin } from '@bingads-webui/projection-grid-toolbar';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { inlineErrorPlugin } from '@bingads-webui/projection-grid-inline-error';\r\nimport { aggregatedRowsPluginBuilder } from '@bingads-webui-campaign/pgrid-aggregated-rows';\r\nimport { performanceLogPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { jsdataRawDataPlugin } from '@bingads-webui-campaign/projection-grid-js-data-raw-data';\r\nimport { crossPageSelectAllPlugin } from '@bingads-webui/projection-grid-cross-page-select-all';\r\nimport { ProductGroupsGridConfig } from '../common/view/product-groups-grid-config';\r\nimport AbstractProductGroupsView from '../common/view/abstract-product-groups-grid';\r\n\r\nclass FlattenProductGroupsView extends AbstractProductGroupsView {\r\n initialize(options) {\r\n this.isTreeView = false;\r\n super.initialize(options);\r\n }\r\n\r\n getGridConfig() {\r\n return new ProductGroupsGridConfig({\r\n deps: this.deps,\r\n view: this,\r\n isTreeView: this.isTreeView,\r\n dataSource: this.gridParameters.dataSource,\r\n onTogglePillClicked: this.callbacks.onTogglePillClicked,\r\n });\r\n }\r\n\r\n initializeGridFactory() {\r\n return projectionGrid\r\n .factory({ vnext: true })\r\n .use(jsdataRawDataPlugin)\r\n .use(paginationPlugin)\r\n .use(crossPageSelectAllPlugin)\r\n .use(performanceLogPlugin)\r\n .use(dateFilterPlugin)\r\n // .use(this.dateFilterRefreshPlugin)\r\n .use(toolbarPlugin)\r\n .use(columnChooserPlugin)\r\n .use(editablePlugin)\r\n .use(assistedSelectionPlugin)\r\n .use(inlineErrorPlugin({\r\n errorIconClasses: ['grid-error', 'spritedimage'],\r\n }))\r\n .use(uiBlockerPlugin)\r\n .use(placeholderPlugin)\r\n .use(inlineDownloadWithoutFilterstateAndSegmentPlugin)\r\n .use(aggregatedRowsPluginBuilder({\r\n i18n: this.deps.i18n,\r\n keys: {\r\n overallI18nKey: 'ProductGroupGrid_Total',\r\n filteredI18nKey: 'ProductGroupGrid_Filtered_Total',\r\n },\r\n permissions: this.deps.config.get('Permissions'),\r\n filterService: this.filterService,\r\n customConfig: {\r\n showSearchRow: false,\r\n showAudienceRow: false,\r\n showDeletedRow: false,\r\n },\r\n }));\r\n }\r\n}\r\n\r\nexport default FlattenProductGroupsView;\r\n","import $ from 'jquery';\r\nimport { getProductGroupFactory } from './get-set-grid-factory';\r\n\r\nexport function createProductGroupsGridFromNewPackage({\r\n campaign,\r\n adgroup,\r\n level,\r\n gridParameters,\r\n callbacks,\r\n filterService,\r\n isTreeView,\r\n}) {\r\n const productGroupGrid = getProductGroupFactory()({\r\n campaign,\r\n adgroup,\r\n level,\r\n gridParameters,\r\n callbacks,\r\n filterService,\r\n preferenceConfig: null,\r\n viewport: null,\r\n getAdditionalPlugins: () => [],\r\n customHeaderOffset: () => $('.toolbar').height(),\r\n isTreeView,\r\n p$daterange: null,\r\n });\r\n\r\n return productGroupGrid;\r\n}\r\n","/* eslint-disable no-lonely-if */\r\n/* eslint-disable react/sort-comp */\r\n/* eslint-disable react/prefer-stateless-function */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\n/* eslint-disable jsx-a11y/interactive-supports-focus */\r\n/* eslint-disable jsx-a11y/click-events-have-key-events */\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { HelpRailViewId } from '@bingads-webui-react/help-rail-view-id';\r\nimport { FilterService } from '@bingads-webui/filter-service';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { getFilterConfig } from './filter/filter-config';\r\nimport { FilterAgentManager } from './filter/filter-agent-manager';\r\nimport { SingleViewWrapper } from './common/view/single-view-wrapper';\r\nimport ProductGroupInlineChartWrapper from './common/view/product-group-inline-chart-wrapper';\r\nimport { getUpperToolbar } from './common/view/upper-toolbar';\r\nimport { ProductGroupFooter } from './common/view/product-group-tab-footer';\r\nimport { productGroupLevel } from './constant';\r\nimport ClientLogger from './log/client-logger';\r\nimport ProductGroupTreeGrid from './tree-view/tree-product-groups-grid';\r\nimport ProductGroupFlattenGrid from './flatten-view/flatten-product-groups-grid';\r\nimport { createProductGroupsGridFromNewPackage } from './grid-factory';\r\n\r\nexport class ProductGroup extends React.Component {\r\n static defaultProps = {\r\n campaign: undefined,\r\n adgroup: undefined,\r\n }\r\n\r\n static propTypes = {\r\n deps: PropTypes.objectOf(PropTypes.any).isRequired,\r\n campaign: PropTypes.objectOf(PropTypes.any),\r\n adgroup: PropTypes.objectOf(PropTypes.any),\r\n treeGridParameters: PropTypes.objectOf(PropTypes.any).isRequired,\r\n flattenGridParameters: PropTypes.objectOf(PropTypes.any).isRequired,\r\n isTreeView: PropTypes.bool.isRequired,\r\n preferenceConfig: PropTypes.objectOf(PropTypes.any).isRequired,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.learnMoreLinkText = this.props.deps.flattenView.i18n.getString('ProductGroupsGrid_LearnMore');\r\n this.refreshLinkText = this.props.deps.flattenView.i18n.getString('ProductGroupsGrid_RefreshLinkText');\r\n this.filterredInTreeView = false;\r\n this.state = {\r\n isTreeView: this.props.isTreeView,\r\n hasFilter: false,\r\n showToolbar: true,\r\n showMessageBar: false,\r\n showPopupMessage: false,\r\n };\r\n this.initializeFilterService();\r\n this.FilterAgentManager = new FilterAgentManager();\r\n this.upperToolbar = getUpperToolbar();\r\n this.needSync = false;\r\n this.FilterAgentManager.initializeFilterAgent({\r\n tabView: this,\r\n filterConfig: getFilterConfig(\r\n this.props.deps.flattenView,\r\n this.getLevel(), this.getBidOption()\r\n ),\r\n filterService: this.filterService,\r\n toolbar: this.upperToolbar,\r\n });\r\n this.logger = new ClientLogger(this.props.deps.treeView.instrumentation);\r\n }\r\n\r\n getBidOption() {\r\n const setting = this.props.adgroup ? _.first(this.props.adgroup.Settings) : {};\r\n // Default BidOption is BidValue\r\n return _.result(setting, 'BidOption', 0);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.filterBar && !this.state.filterBar) {\r\n prevState.filterBar.remove();\r\n }\r\n if (prevState.filterEditor && !this.state.filterEditor) {\r\n prevState.filterEditor.remove();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.flattenGrid) {\r\n this.flattenGrid.remove();\r\n }\r\n if (this.treeGrid) {\r\n this.treeGrid.remove();\r\n }\r\n }\r\n\r\n onTogglePillClicked = (index) => {\r\n if ((this.state.isTreeView || this.state.hasFilter) && index === 0) {\r\n return;\r\n }\r\n if (!this.state.isTreeView && index === 1) {\r\n return;\r\n }\r\n\r\n this.needChangeSelectedColumns = !_.isUndefined(this.changedColumns);\r\n this.logger.logToggleGrid({ isTreeView: this.state.isTreeView });\r\n switch (index) {\r\n case 0:\r\n this.switchToTreeViewByRouter();\r\n break;\r\n case 1:\r\n this.switchToFlattenViewByRouter();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n onMessageBar = (message) => {\r\n this.setState({\r\n showMessageBar: true,\r\n showPopupMessage: false,\r\n showTooMuchProductOffer: false,\r\n message,\r\n });\r\n }\r\n\r\n onShowTooMuchProductOffer = (tooMuchProductOfferMessage) => {\r\n this.setState({\r\n showTooMuchProductOffer: true,\r\n showMessageBar: false,\r\n showPopupMessage: false,\r\n tooMuchProductOfferMessage,\r\n });\r\n }\r\n\r\n onPopupMessage = (popupMessage) => {\r\n this.setState({\r\n showMessageBar: false,\r\n showPopupMessage: true,\r\n showTooMuchProductOffer: false,\r\n popupMessage,\r\n });\r\n }\r\n\r\n renderFilterAgentView = () => (\r\n
\r\n {this.state.filterBar &&\r\n }\r\n {this.state.filterEditor &&\r\n }\r\n
\r\n )\r\n\r\n updateViewWithFilter = (filter) => {\r\n this.logger.logApplyFilter({\r\n filter,\r\n level: this.getLevel(),\r\n isTreeView: this.state.isTreeView,\r\n });\r\n if (this.flattenGrid) {\r\n updateGridQuery(this.flattenGrid.grid.gridView, filter);\r\n } else {\r\n // if flattenGrid does not exist, then save this filter in the parameter\r\n // and apply it after flattenGrid is created.\r\n this.currentGridFilter = filter;\r\n }\r\n this.setState({\r\n hasFilter: filter.depth !== 0,\r\n });\r\n }\r\n\r\n onColumnChooserMenuChanged = (isTreeGrid) => {\r\n if (isTreeGrid && this.flattenGrid) {\r\n this.flattenGrid.refreshColumnChooserMenu();\r\n }\r\n if (!isTreeGrid && this.treeGrid) {\r\n this.treeGrid.refreshColumnChooserMenu();\r\n }\r\n }\r\n\r\n onSelectedColumnsChanged = (names) => {\r\n this.logger.logChangeSelectedColumn({\r\n columns: names,\r\n level: this.getLevel(),\r\n isTreeView: this.state.isTreeView,\r\n });\r\n if (this.flattenGrid && this.treeGrid) {\r\n this.changedColumns = names;\r\n }\r\n }\r\n\r\n generateGrid = () => {\r\n const callbacks = {\r\n onMessageBar: this.onMessageBar,\r\n onPopupMessage: this.onPopupMessage,\r\n onTogglePillClicked: this.onTogglePillClicked,\r\n markNeedSync: this.markNeedSync,\r\n onColumnChooserMenuChanged: this.onColumnChooserMenuChanged,\r\n onSelectedColumnsChanged: this.onSelectedColumnsChanged,\r\n onShowTooMuchProductOffer: this.onShowTooMuchProductOffer,\r\n };\r\n\r\n if (this.state.isTreeView) {\r\n if (!this.treeGrid) {\r\n if (this.props.deps.treeView.pageContext.Permissions.IsConsumeProductGroupsGridInOldUIProductGroupsTabEnabled) { // eslint-disable-line\r\n this.treeGrid = createProductGroupsGridFromNewPackage({\r\n campaign: this.props.campaign,\r\n adgroup: this.props.adgroup,\r\n level: productGroupLevel.AdGroup,\r\n gridParameters: this.props.treeGridParameters,\r\n callbacks,\r\n filterService: this.filterService,\r\n isTreeView: true,\r\n preferenceConfig: this.props.preferenceConfig,\r\n });\r\n } else {\r\n this.treeGrid = new ProductGroupTreeGrid({\r\n deps: this.props.deps.treeView,\r\n campaign: this.props.campaign,\r\n adgroup: this.props.adgroup,\r\n filterService: this.filterService,\r\n level: productGroupLevel.AdGroup,\r\n gridParameters: this.props.treeGridParameters,\r\n callbacks,\r\n preferenceConfig: this.props.preferenceConfig,\r\n });\r\n }\r\n this.treeGridToolbar = new SingleViewWrapper({\r\n view: this.treeGrid.getToolBar(),\r\n rendered: true,\r\n });\r\n }\r\n } else {\r\n if (!this.flattenGrid) {\r\n if (this.props.deps.treeView.pageContext.Permissions.IsConsumeProductGroupsGridInOldUIProductGroupsTabEnabled) { // eslint-disable-line\r\n this.flattenGrid = createProductGroupsGridFromNewPackage({\r\n campaign: this.props.campaign,\r\n adgroup: this.props.adgroup,\r\n level: this.getLevel(),\r\n gridParameters: this.props.flattenGridParameters,\r\n callbacks,\r\n filterService: this.filterService,\r\n isTreeView: false,\r\n preferenceConfig: this.props.preferenceConfig,\r\n });\r\n } else {\r\n this.flattenGrid = new ProductGroupFlattenGrid({\r\n deps: this.props.deps.flattenView,\r\n campaign: this.props.campaign,\r\n adgroup: this.props.adgroup,\r\n filterService: this.filterService,\r\n level: this.getLevel(),\r\n gridParameters: this.props.flattenGridParameters,\r\n callbacks,\r\n preferenceConfig: this.props.preferenceConfig,\r\n });\r\n }\r\n if (this.currentGridFilter) {\r\n updateGridQuery(this.flattenGrid.grid.gridView, this.currentGridFilter);\r\n }\r\n this.flattenGridToolbar = new SingleViewWrapper({\r\n view: this.flattenGrid.getToolBar(),\r\n rendered: true,\r\n });\r\n }\r\n }\r\n }\r\n\r\n getLevel = () => {\r\n if (_.isUndefined(this.props.campaign)) {\r\n return productGroupLevel.Account;\r\n } else if (_.isUndefined(this.props.adgroup)) {\r\n return productGroupLevel.Campaign;\r\n }\r\n return productGroupLevel.AdGroup;\r\n }\r\n\r\n renderToolbar = () => {\r\n if (!this.state.isTreeView && this.state.hasFilter\r\n && this.getLevel() === productGroupLevel.AdGroup) {\r\n this.flattenGridToolbar.view.update({\r\n id: 'view-toggle',\r\n classes: 'disabled',\r\n onClick: this.onDisabledTogglePillClicked,\r\n });\r\n }\r\n\r\n if (!this.state.isTreeView && !this.state.hasFilter\r\n && this.getLevel() === productGroupLevel.AdGroup) {\r\n this.flattenGridToolbar.view.update({\r\n id: 'view-toggle',\r\n classes: '',\r\n onClick: this.onTogglePillClicked,\r\n });\r\n }\r\n\r\n if (this.state.showToolbar) {\r\n return this.state.isTreeView ?\r\n :\r\n ;\r\n }\r\n return null;\r\n }\r\n\r\n renderGrid = () => {\r\n const gridView = this.state.isTreeView ? this.treeGrid : this.flattenGrid;\r\n const className = this.state.isTreeView ? 'tree-grid' : 'flatten-grid';\r\n if (this.needRefresh) {\r\n gridView.refreshGrid();\r\n this.needRefresh = false;\r\n }\r\n if (this.needChangeSelectedColumns) {\r\n gridView.updateSelectedColumns(this.changedColumns);\r\n this.changedColumns = undefined;\r\n this.needChangeSelectedColumns = false;\r\n }\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n renderMessageBar = () =>\r\n (this.state.showMessageBar ? (\r\n
\r\n \r\n \r\n {this.state.message}\r\n \r\n \r\n { this.setState({ showMessageBar: false }); }} role=\"button\" />\r\n
\r\n ) : undefined);\r\n\r\n renderTooMuchProductOfferBar = () => (this.state.showTooMuchProductOffer ? (\r\n
\r\n \r\n \r\n {this.state.tooMuchProductOfferMessage}\r\n \r\n
\r\n ) : null);\r\n\r\n renderPopupMessage = () =>\r\n (this.state.showPopupMessage ? (\r\n
\r\n \r\n \r\n {this.state.popupMessage}\r\n \r\n {this.refreshLinkText}\r\n { this.setState({ showPopupMessage: false }); }} role=\"button\" />\r\n
\r\n ) : undefined);\r\n\r\n renderInlineChart = () => (\r\n \r\n );\r\n\r\n renderUpperToolbar = () => {\r\n if (this.state.showToolbar) {\r\n return ;\r\n }\r\n return null;\r\n }\r\n\r\n markNeedSync = () => {\r\n this.needSync = true;\r\n }\r\n\r\n markFilterredInTreeView = () => {\r\n this.filterredInTreeView = true;\r\n }\r\n\r\n markFilterredInFlattenView = () => {\r\n this.filterredInTreeView = false;\r\n }\r\n\r\n initializeFilterService = () => {\r\n this.filterService = new FilterService(getFilterConfig(\r\n this.props.deps.flattenView,\r\n this.getLevel(),\r\n this.getBidOption()\r\n ));\r\n this.filterService.p$Initialized.then(() => {\r\n const filter = this.filterService.getCombinedFilter();\r\n if (filter.depth !== 0) {\r\n this.updateViewWithFilter(filter);\r\n }\r\n });\r\n }\r\n\r\n checkShouldRefresh = () => {\r\n this.needRefresh = this.needSync;\r\n this.needSync = false;\r\n }\r\n\r\n switchToFlattenViewByRouter = () => {\r\n // There is a bug in Router, that is, if the navigate() is invoked more than one time\r\n // sequentially, navigate() won't work later.\r\n // The way to work around here is to judge whether window.App.router_new.$target_state exists.\r\n // If it exists, it means that there already has a navigate() call which doesn't finish yet.\r\n if (!window.App.router_new.$target_state) {\r\n this.checkShouldRefresh();\r\n window.App.navigate('customer/:customer_id/account/:account_id/campaign/:campaign_id/adgroup/:adgroup_id/productgroups/flatten');\r\n }\r\n }\r\n\r\n switchToTreeViewByRouter = () => {\r\n if (!window.App.router_new.$target_state) {\r\n this.checkShouldRefresh();\r\n window.App.navigate('customer/:customer_id/account/:account_id/campaign/:campaign_id/adgroup/:adgroup_id/productgroups');\r\n }\r\n }\r\n\r\n shouldComponentUpdate(nextProps, nextState) {\r\n if (nextState.hasFilter && nextState.isTreeView) {\r\n this.markFilterredInTreeView();\r\n this.switchToFlattenViewByRouter();\r\n return false;\r\n }\r\n if (!nextState.hasFilter && !nextState.isTreeView && this.filterredInTreeView) {\r\n this.filterredInTreeView = false;\r\n this.switchToTreeViewByRouter();\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n refreshGrid = () => {\r\n this.setState({\r\n showPopupMessage: false,\r\n }, () => {\r\n const currentGrid = this.state.isTreeView ? this.treeGrid : this.flattenGrid;\r\n currentGrid.refreshGrid();\r\n });\r\n }\r\n\r\n renderNoDataContainer = () => (\r\n
\r\n );\r\n\r\n renderFooter = () => (\r\n \r\n )\r\n\r\n render() {\r\n this.generateGrid();\r\n return (\r\n
\r\n
\r\n \r\n {this.renderUpperToolbar()}\r\n {this.renderFilterAgentView()}\r\n {this.renderInlineChart()}\r\n {this.renderMessageBar()}\r\n {this.renderTooMuchProductOfferBar()}\r\n {this.renderToolbar()}\r\n {this.renderGrid()}\r\n {this.renderNoDataContainer()}\r\n {this.renderPopupMessage()}\r\n {this.renderFooter()}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import { OverridableToolbarView } from '@bingads-webui/toolbar';\r\nimport { SingleViewWrapper } from './single-view-wrapper';\r\nimport { INLINE_CHART_TOGGLE_BUTTON_ID } from '../../constant';\r\n\r\nexport function getUpperToolbar() {\r\n const toolbarConfig = {\r\n items: [\r\n {\r\n type: 'button',\r\n id: INLINE_CHART_TOGGLE_BUTTON_ID,\r\n classes: ['btn', 'chart-icon'],\r\n }, {\r\n type: 'dropdown',\r\n id: 'filter-menu',\r\n },\r\n ],\r\n };\r\n\r\n return new SingleViewWrapper({\r\n view: new OverridableToolbarView(toolbarConfig),\r\n rendered: false,\r\n });\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst preferenceService = globalContext.requireDefault('component/preference/service/index');\r\nconst state = globalContext.require('component/state/index');\r\nconst popup = globalContext.require('component/dialog/popup');\r\nconst { appendLearnMoreLink } = globalContext.require('component/help/index');\r\nconst { getTimeZoneForDateRangeText } = globalContext.require('component/timezonemapper/index');\r\nconst { PopoverView, positions, contents } = globalContext.require('campaignui/feature/popover/index');\r\nconst fetchPreferenceConfig = globalContext.requireDefault('campaignui/feature/bingadsgrid/service/fetch-preference-config');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/shopping-campaign');\r\nconst i18nGlobal = globalContext.require('$/i18n!legacy/global');\r\nconst config = globalContext.require('component/config/index');\r\nconst cacheManager = globalContext.requireDefault('campaignui/feature/cache-manager/index');\r\nconst odata = globalContext.require('component/http/channel/odata');\r\nconst { getODataErrors } = globalContext.require('component/api-errors-campaign/index');\r\nconst DoubleListBox = globalContext.require('component/double-list-box/view/doubleListBox');\r\nconst decimal = globalContext.require('component/humanize/decimal');\r\nconst s$ProductPartition = globalContext.require('$/schema!campaign/ProductPartition');\r\nconst s$ProductGroup = globalContext.require('$/schema!campaign/ProductGroup');\r\nconst logger = globalContext.require('module/service/instrumentation/index');\r\nconst s$i18n = globalContext.require('$/schema-i18n!campaign');\r\nconst edmCampaign = globalContext.requireDefault('component/edm-campaign/index');\r\nconst { DownloadView } = globalContext.require('campaignui/feature/griddownload/view/adapter');\r\nconst jsData = globalContext.require('component/js-data-campaign/index');\r\nconst popupUtil = globalContext.require('module/service/shared/popup');\r\nconst bulkEditView = globalContext.require('module/view/bulkEdit/productgroup/changeBidOrBidBoost');\r\nconst bulkEditModel = globalContext.require('module/model/bulkEdit/productgroup/changeBidOrBidBoost');\r\nconst BidLandscape = globalContext.requireDefault('campaignui/feature/bidlandscape/view/product-group');\r\nconst pageContext = globalContext.require('PageContext');\r\nconst instrumentation = globalContext.requireDefault('campaignui/feature/instrumentation/index');\r\nconst dateUtils = globalContext.require('component/humanize/date');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst { Columns, SelectedColumns } = globalContext.require('component/bingads-grid/service/column-chooser-preferences');\r\nconst { LegacyColumns, LegacySelectedColumns } = globalContext.require('component/bingads-grid/service/legacy-column-chooser-preferences');\r\nconst InlineChartView = globalContext.requireDefault('campaignui/feature/inline-chart/view/inlinechartview');\r\nconst inlineChartConstants = globalContext.requireDefault('campaignui/feature/inline-chart/constants');\r\nconst sessionStore = globalContext.requireDefault('component/js-data-storage/session-storage');\r\nconst preferenceStoreFactory = globalContext.require('component/bingads-grid/service/filter-preferences').getFilters;\r\nconst cacheService = globalContext.require('Services/CacheService');\r\nconst dataContextManager = globalContext.require('SummaryDataContextManager');\r\n\r\nconst treeViewDeps = {\r\n preferenceService,\r\n state,\r\n popup,\r\n appendLearnMoreLink,\r\n getTimeZoneForDateRangeText,\r\n PopoverView,\r\n positions,\r\n contents,\r\n fetchPreferenceConfig,\r\n i18n,\r\n i18nGlobal,\r\n config,\r\n cacheManager,\r\n odata,\r\n getODataErrors,\r\n DoubleListBox,\r\n decimal,\r\n s$ProductPartition,\r\n s$ProductGroup,\r\n logger,\r\n s$i18n,\r\n edmCampaign,\r\n DownloadView,\r\n jsData,\r\n popupUtil,\r\n bulkEditView,\r\n bulkEditModel,\r\n BidLandscape,\r\n pageContext,\r\n instrumentation,\r\n dateUtils,\r\n bingadsGridColumn,\r\n Columns,\r\n SelectedColumns,\r\n LegacyColumns,\r\n LegacySelectedColumns,\r\n addDateChangeListener: (handler) => {\r\n window.App.views.Summary.bindDateFilterChangeHandler(handler);\r\n },\r\n InlineChartView,\r\n inlineChartConstants,\r\n sessionStore,\r\n preferenceStoreFactory,\r\n cacheService,\r\n dataContextManager,\r\n};\r\n\r\nconst flattenViewDeps = treeViewDeps;\r\n\r\nexport default {\r\n treeView: treeViewDeps,\r\n flattenView: flattenViewDeps,\r\n};\r\n","import Backbone from 'backbone';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { ProductGroup } from './product-group';\r\nimport deps from './deps';\r\n\r\nexport class ProductGroupView extends Backbone.View {\r\n initialize({\r\n campaign,\r\n adgroup,\r\n treeGridParameters,\r\n flattenGridParameters,\r\n isTreeView,\r\n preferenceConfig,\r\n }) {\r\n this.viewRef = React.createRef();\r\n this.view = (\r\n \r\n );\r\n }\r\n\r\n setState(state) {\r\n if (this.viewRef.current) {\r\n this.viewRef.current.setState(state);\r\n }\r\n return this;\r\n }\r\n\r\n render() {\r\n ReactDOM.render(this.view, this.el);\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 { productGroupLevel } from '../constant';\r\n\r\nexport default class ClientLogger {\r\n constructor(instrumentation) {\r\n this.scenario = instrumentation.productGroupGrid.create();\r\n this.applyFilterActivity = this.scenario.applyFilter.create();\r\n this.toggleGridActivity = this.scenario.toggleGrid.create();\r\n this.changeSelectedColumnActivity = this.scenario.changeSelectedColumns.create();\r\n this.recordBidChangeActivity = this.scenario.recordBidChange.create();\r\n }\r\n\r\n logApplyFilter({\r\n filter,\r\n level,\r\n isTreeView,\r\n }) {\r\n const message = this.getMessage({ filterQuery: filter.query }, level, isTreeView);\r\n this.applyFilterActivity.trace(message);\r\n }\r\n\r\n logToggleGrid({\r\n isTreeView,\r\n }) {\r\n const sourceGrid = isTreeView ? 'TreeGrid' : 'FlattenGrid';\r\n const aimGrid = isTreeView ? 'FlattenGrid' : 'TreeGrid';\r\n const action = `Toggle from ${sourceGrid} to ${aimGrid}`;\r\n const message = this.getMessage(action, productGroupLevel.AdGroup, isTreeView);\r\n this.toggleGridActivity.trace(message);\r\n }\r\n\r\n logChangeSelectedColumn({\r\n columns,\r\n level,\r\n isTreeView,\r\n }) {\r\n const message = this.getMessage({\r\n description: 'selected columns changed',\r\n selectedColumns: columns,\r\n }, level, isTreeView);\r\n this.changeSelectedColumnActivity.trace(message);\r\n }\r\n\r\n logChangeBidOrBidBoost({\r\n itemId,\r\n updated,\r\n level,\r\n isTreeView,\r\n }) {\r\n const message = this.getMessage({\r\n itemId,\r\n updated,\r\n }, level, isTreeView);\r\n this.recordBidChangeActivity.trace(message);\r\n }\r\n\r\n getMessage(message, level, isTreeView) {\r\n return JSON.stringify({\r\n level,\r\n isTreeView: level !== productGroupLevel.AdGroup ? false : isTreeView,\r\n version: 'V2',\r\n message,\r\n });\r\n }\r\n}\r\n","export class PGGInstrumentation {\r\n constructor(options) {\r\n const { instrumentation, viewType } = options;\r\n const scenario = instrumentation.newUIProductGroupsPageScenario.create();\r\n\r\n this.viewType = viewType;\r\n this.activity = scenario.PGGActivity.create();\r\n }\r\n\r\n signal(message) {\r\n try {\r\n const str = JSON.stringify({ ...message, viewType: this.viewType });\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 sendSwitchViewLog(viewType) {\r\n this.signal({\r\n messageType: 'SWITCH_VIEW',\r\n viewType,\r\n });\r\n }\r\n\r\n sendModifyPGLog(params) {\r\n this.signal({\r\n messageType: 'MODIFY_PG_SUCCESS',\r\n params,\r\n });\r\n }\r\n\r\n sendModifyPGErrorLog(message) {\r\n this.signal({\r\n messageType: 'MODIFY_PG_ERROR',\r\n message,\r\n });\r\n }\r\n\r\n sendInlineEditErrorLog(message) {\r\n this.signal({\r\n messageType: 'INLINE_EDIT_ERROR',\r\n error: message,\r\n });\r\n }\r\n\r\n sendInlineEditLog(data) {\r\n this.signal({\r\n messageType: 'INLINE_EDIT',\r\n data,\r\n });\r\n }\r\n\r\n sendBulkEditLog(model) {\r\n const BatchAction = model.get('BatchAction');\r\n const TotalRowCounnt = model.get('TotalRowCount');\r\n const SuccessRowCount = model.get('SuccessRowCount');\r\n const ErrorRowCount = model.get('ErrorRowCount');\r\n this.signal({\r\n messageType: 'BULK_EDIT',\r\n model: {\r\n BatchAction,\r\n TotalRowCounnt,\r\n SuccessRowCount,\r\n ErrorRowCount,\r\n },\r\n });\r\n }\r\n\r\n sendToProductDetailsPageLog() {\r\n this.signal({\r\n messageType: 'TO_PRODUCT_DETAILS',\r\n });\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport pkg from './package.json';\r\n\r\nexport function getProductGroupsGridFactory(initializeGlobalContext = true) {\r\n if (initializeGlobalContext) {\r\n return globalContext.define(\r\n pkg.legacyDependencies,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Promise => import(/* webpackMode: 'eager' */ './src/product-groups-grid-factory') // eslint-disable-line no-unused-vars\r\n );\r\n }\r\n return import(/* webpackMode: 'eager' */ './src/product-groups-grid-factory'); // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport { PGGInstrumentation } from './src/instrumentation';\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { constants } from '@bingads-webui/instrumentation';\r\n\r\nconst preferenceService = globalContext.requireDefault('component/preference/service/index');\r\nconst state = globalContext.require('component/state/index');\r\nconst popup = globalContext.require('component/dialog/popup');\r\nconst { appendLearnMoreLink } = globalContext.require('component/help/index');\r\nconst { getTimeZoneForDateRangeText } = globalContext.require('component/timezonemapper/index');\r\nconst { PopoverView, positions, contents } = globalContext.require('campaignui/feature/popover/index');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/shopping-campaign');\r\nconst i18nGlobal = globalContext.require('$/i18n!legacy/global');\r\nconst config = globalContext.require('component/config/index');\r\nconst cacheManager = globalContext.requireDefault('campaignui/feature/cache-manager/index');\r\nconst odata = globalContext.require('component/http/channel/odata');\r\nconst { getODataErrors } = globalContext.require('component/api-errors-campaign/index');\r\nconst DoubleListBox = globalContext.require('component/double-list-box/view/doubleListBox');\r\nconst decimal = globalContext.require('component/humanize/decimal');\r\nconst s$ProductPartition = globalContext.require('$/schema!campaign/ProductPartition');\r\nconst s$ProductGroup = globalContext.require('$/schema!campaign/ProductGroup');\r\nconst logger = globalContext.require('module/service/instrumentation/index');\r\nconst s$i18n = globalContext.require('$/schema-i18n!campaign');\r\nconst edmCampaign = globalContext.requireDefault('component/edm-campaign/index');\r\nconst { DownloadView } = globalContext.require('campaignui/feature/griddownload/view/adapter');\r\nconst jsData = globalContext.require('component/js-data-campaign/index');\r\nconst popupUtil = globalContext.require('module/service/shared/popup');\r\nconst bulkEditView = globalContext.require('module/view/bulkEdit/productgroup/changeBidOrBidBoost');\r\nconst bulkEditModel = globalContext.require('module/model/bulkEdit/productgroup/changeBidOrBidBoost');\r\nconst bulkEditCashbackPercentView = globalContext.require('module/view/bulkEdit/productgroup/changeCashbackPercent');\r\nconst bulkEditCashbackPercentModel = globalContext.require('module/model/bulkEdit/productgroup/changeCashbackPercent');\r\nconst pageContext = globalContext.require('PageContext');\r\nconst instrumentation = globalContext.requireDefault('campaignui/feature/instrumentation/index');\r\nconst dateUtils = globalContext.require('component/humanize/date');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst { Columns, SelectedColumns } = globalContext.require('component/bingads-grid/service/column-chooser-preferences');\r\nconst { LegacyColumns, LegacySelectedColumns } = globalContext.require('component/bingads-grid/service/legacy-column-chooser-preferences');\r\nconst InlineChartView = globalContext.requireDefault('campaignui/feature/inline-chart/view/inlinechartview');\r\nconst inlineChartConstants = globalContext.requireDefault('campaignui/feature/inline-chart/constants');\r\nconst sessionStore = globalContext.requireDefault('component/js-data-storage/session-storage');\r\nconst preferenceStoreFactory = globalContext.require('component/bingads-grid/service/filter-preferences').getFilters;\r\nconst cacheService = globalContext.require('Services/CacheService');\r\nconst dataContextManager = globalContext.require('SummaryDataContextManager');\r\n\r\nconst treeViewDeps = {\r\n preferenceService,\r\n state,\r\n popup,\r\n appendLearnMoreLink,\r\n getTimeZoneForDateRangeText,\r\n PopoverView,\r\n positions,\r\n contents,\r\n i18n,\r\n i18nGlobal,\r\n config,\r\n cacheManager,\r\n odata,\r\n getODataErrors,\r\n DoubleListBox,\r\n decimal,\r\n s$ProductPartition,\r\n s$ProductGroup,\r\n logger,\r\n s$i18n,\r\n edmCampaign,\r\n DownloadView,\r\n jsData,\r\n popupUtil,\r\n bulkEditView,\r\n bulkEditModel,\r\n bulkEditCashbackPercentView,\r\n bulkEditCashbackPercentModel,\r\n pageContext,\r\n instrumentation,\r\n dateUtils,\r\n bingadsGridColumn,\r\n Columns,\r\n SelectedColumns,\r\n LegacyColumns,\r\n LegacySelectedColumns,\r\n addDateChangeListener: (handler) => {\r\n window.App.views.Summary.bindDateFilterChangeHandler(handler);\r\n },\r\n InlineChartView,\r\n inlineChartConstants,\r\n sessionStore,\r\n preferenceStoreFactory,\r\n cacheService,\r\n dataContextManager,\r\n constants,\r\n};\r\n\r\nconst flattenViewDeps = treeViewDeps;\r\n\r\nexport default {\r\n treeView: treeViewDeps,\r\n flattenView: flattenViewDeps,\r\n};\r\n","import _ from 'underscore';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nexport function getInlineEditableSaveFunction(deps) {\r\n return ({\r\n view,\r\n i18n,\r\n fieldName,\r\n updated,\r\n editorView,\r\n editorViewCallbackAfterUpdate,\r\n successCallback,\r\n }) => {\r\n const toUpdate = _.pick(updated, fieldName);\r\n const campaignId = deps.state.get('campaign_id') || updated.CampaignId;\r\n const adGroupId = deps.state.get('adgroup_id') || updated.AdGroupId;\r\n const url = `/Customers()/Accounts()/Campaigns(${campaignId})/AdGroups(${adGroupId})/ProductGroups(${updated.Id})`;\r\n const patchPromise = toUpdateParam => deps.odata.patch(url, {\r\n data: toUpdateParam,\r\n }).then(() => {\r\n if (editorViewCallbackAfterUpdate && _.isFunction(editorViewCallbackAfterUpdate)) {\r\n editorViewCallbackAfterUpdate();\r\n }\r\n if (_.isFunction(successCallback)) {\r\n successCallback(updated);\r\n }\r\n deps.cacheManager.invalidate('ProductGroup');\r\n view.grid.gridView.trigger('didInlineEdit', updated);\r\n\r\n view.activityLogger.sendInlineEditLog(toUpdateParam);\r\n }).catch((response) => {\r\n const errorMapping = {};\r\n const unexpectedError = i18n.getString('ErrorNumber_-1');\r\n const fieldKey = _.isArray(fieldName) ? fieldName[0] : fieldName;\r\n if (!response || !response.errors) {\r\n errorMapping[fieldKey] = unexpectedError;\r\n } else {\r\n const errors = deps.getODataErrors(response.errors);\r\n\r\n if (!errors || !errors[0] || !errors[0].message) {\r\n errorMapping[fieldKey] = unexpectedError;\r\n } else {\r\n errorMapping[fieldKey] = errors[0].message;\r\n }\r\n }\r\n editorView.setErrors(errorMapping);\r\n\r\n view.activityLogger.sendInlineEditErrorLog(errorMapping);\r\n });\r\n\r\n return patchPromise(toUpdate).finally(withUiBlock(view.grid.gridView.$el));\r\n };\r\n}\r\n","/* eslint new-cap:0 */\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport { KoSchema } from '@bingads-webui/ko-schema';\r\n\r\nexport default class ViewModel {\r\n constructor({\r\n deps,\r\n editSchema,\r\n model,\r\n bidProperty,\r\n validators,\r\n } = {}) {\r\n KoSchema(this, editSchema, _.keys(model), model, {}, deps.i18n);\r\n\r\n _.each(validators, (validatorsOfKey, key) => {\r\n _.each(validatorsOfKey, (validator) => {\r\n _.each(_.omit(validator, 'type'), (value, rule) => {\r\n this[key].validators[validator.type][rule] = value;\r\n });\r\n });\r\n });\r\n\r\n this.bidOptions = [{\r\n text: deps.i18n.getString('ProductGroupsGrid_Bid_Included'),\r\n value: false,\r\n }, {\r\n text: deps.i18n.getString('ProductGroupsGrid_Bid_Excluded'),\r\n value: true,\r\n }];\r\n\r\n this.requiredMessage = ko.computed(() => {\r\n const isValid = this.IsExcluded() ||\r\n !(_.isNull(this[bidProperty]()) || _.isUndefined(this[bidProperty]()));\r\n\r\n return isValid ? '' : deps.i18n.getString('ProductGroupsGrid_BidFormat_Validation');\r\n });\r\n\r\n this.isBidValid = ko.computed(() =>\r\n this[bidProperty].isValid() && _.isEmpty(this.requiredMessage()));\r\n\r\n this.IsExcluded.string = ko.computed({\r\n read() {\r\n return this.IsExcluded() ? 'true' : 'false';\r\n },\r\n write(newValue) {\r\n this.IsExcluded(newValue === 'true');\r\n },\r\n }, this);\r\n\r\n this.showLowerThanMinSuggestionBidWarning = ko.observable(false);\r\n }\r\n}\r\n","export const PRODUCT_OFFER_DETAIL_SHOW_DELAY = 600;\r\nexport const PRODUCT_OFFER_DETAIL_CLOSE_DELAY = 600;\r\nexport const FETCH_OFFLINE_STATUS_DELAY = 10000;\r\nexport const PATH_SPLITER = '>';\r\nexport const INLINE_CHART_TOGGLE_BUTTON_ID = 'button-chart-toggle';\r\n\r\nexport const bidType = {\r\n bidValue: 'bidValue',\r\n bidBoost: 'bidBoost',\r\n};\r\n\r\nexport const DEFAULT_CURRENT_PAGE = 0;\r\nexport const MAX_PAGE_SIZE = 20000;\r\nexport const productGroupLevel = {\r\n Account: 'account',\r\n Campaign: 'campaign',\r\n AdGroup: 'adGroup',\r\n};\r\n","import { productGroupLevel } from '../constant';\r\n\r\nexport default class ClientLogger {\r\n constructor(instrumentation) {\r\n this.scenario = instrumentation.productGroupGrid.create();\r\n this.applyFilterActivity = this.scenario.applyFilter.create();\r\n this.toggleGridActivity = this.scenario.toggleGrid.create();\r\n this.changeSelectedColumnActivity = this.scenario.changeSelectedColumns.create();\r\n this.recordBidChangeActivity = this.scenario.recordBidChange.create();\r\n }\r\n\r\n logChangeBidOrBidBoost({\r\n itemId,\r\n updated,\r\n level,\r\n isTreeView,\r\n }) {\r\n const message = this.getMessage({\r\n itemId,\r\n updated,\r\n }, level, isTreeView);\r\n this.recordBidChangeActivity.trace(message);\r\n }\r\n\r\n getMessage(message, level, isTreeView) {\r\n return JSON.stringify({\r\n level,\r\n isTreeView: level !== productGroupLevel.AdGroup ? false : isTreeView,\r\n version: 'V2',\r\n message,\r\n });\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport { getInlineEditableSaveFunction } from './product-groups-inline-edit';\r\nimport ViewModel from '../viewmodel/base-edit-bid-viewmodel';\r\nimport ClientLogger from '../../log/client-logger';\r\n\r\nexport class ProductGroupsEditBidBaseView extends Backbone.View {\r\n initialize({\r\n view,\r\n deps,\r\n model,\r\n bidProperty,\r\n validators,\r\n selectedItems = [],\r\n template,\r\n IsAutoBidding,\r\n defaultMSStoreMinSuggestionBid,\r\n validateMinSuggestionBid,\r\n } = {}) {\r\n this.view = view;\r\n this.deps = deps;\r\n this.isAutoBidding = IsAutoBidding;\r\n this.logger = new ClientLogger(this.deps.instrumentation);\r\n this.viewModel = new ViewModel({\r\n deps: this.deps,\r\n editSchema: this.genEditSchema(),\r\n model,\r\n bidProperty,\r\n validators,\r\n });\r\n\r\n this.selectedItems = selectedItems;\r\n this.template = template;\r\n this.bidProperty = bidProperty;\r\n this.defaultMSStoreMinSuggestionBid = defaultMSStoreMinSuggestionBid;\r\n this.validateMinSuggestionBid = validateMinSuggestionBid;\r\n this.on('cancel', () => {\r\n this.remove();\r\n });\r\n }\r\n\r\n render() {\r\n this.$el.html(this.template({\r\n i18n: this.deps.i18n,\r\n i18nGlobal: this.deps.i18nGlobal,\r\n bidProperty: this.bidProperty,\r\n defaultMSStoreMinSuggestionBid: this.defaultMSStoreMinSuggestionBid,\r\n }));\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n this.validate();\r\n if (_.isFunction(this.validateMinSuggestionBid)) {\r\n this.validateMinSuggestionBid();\r\n }\r\n return this;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .save': 'save',\r\n 'click .cancel': 'cancel',\r\n 'keyup input.product-group-bid': 'bidInput',\r\n };\r\n }\r\n\r\n validate() {\r\n if (this.viewModel.IsExcluded() || this.isAutoBidding) { //eslint-disable-line\r\n return true;\r\n }\r\n\r\n const isValid = this.viewModel.validate();\r\n\r\n return _.isEmpty(this.viewModel.requiredMessage()) && isValid;\r\n }\r\n\r\n getErrors(data) {\r\n return _.reduce(data.Records, (memo, record) => {\r\n const errorMessages = _.chain(record.Errors)\r\n .pluck('Message')\r\n .flatten()\r\n .value();\r\n\r\n return _.extend(memo, {\r\n [record.Id]: errorMessages,\r\n });\r\n }, {});\r\n }\r\n\r\n save() {\r\n if (!this.validate()) {\r\n return;\r\n }\r\n\r\n getInlineEditableSaveFunction(this.deps)({\r\n view: this.view,\r\n i18n: this.deps.i18n,\r\n fieldName: this.getFieldName(),\r\n updated: this.getUpdated(),\r\n editorView: this,\r\n editorViewCallbackAfterUpdate: () => {\r\n this.trigger('close');\r\n this.logger.logChangeBidOrBidBoost({\r\n itemId: this.getUpdated().Id,\r\n updated: this.getUpdated(),\r\n level: this.view.level,\r\n isTreeView: this.view.isTreeView,\r\n });\r\n },\r\n });\r\n }\r\n\r\n setErrors(errorMapping) {\r\n this.viewModel.errors(_.values(errorMapping));\r\n }\r\n\r\n cancel() {\r\n this.trigger('cancel');\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { isMSStoreAdsCampaign } from '@bingads-webui-campaign-react/ms-store-ads-common';\r\nimport { defaultMSStoreMinSuggestionBid } from '@bingads-webui-campaign-legacy/budget/shared/defaultBid';\r\nimport inlineEditTemplate from '../../template/product-groups-inline-edit-bid.pug';\r\nimport { ProductGroupsEditBidBaseView } from './product-groups-edit-bid-base';\r\n\r\nexport class ProductGroupsEditBidsView extends ProductGroupsEditBidBaseView {\r\n initialize({\r\n view,\r\n deps,\r\n BidAmount,\r\n IsExcluded = false,\r\n selectedItems = [],\r\n IsAutoBidding,\r\n campaign,\r\n } = {}) {\r\n this.deps = deps;\r\n this.selectedItems = selectedItems;\r\n this.isAutoBidding = IsAutoBidding;\r\n this.defaultMSStoreMinSuggestionBid = defaultMSStoreMinSuggestionBid();\r\n this.IsMSStoreAds = !_.isEmpty(campaign) ? isMSStoreAdsCampaign(campaign) : false;\r\n const IsBidLessThan5CentsInShoppingCampaignEnabled = _.result(this.deps.config.get('Permissions'), 'IsBidLessThan5CentsInShoppingCampaignEnabled');\r\n let bidRangeKey = 'ProductGroupBidRange';\r\n if (this.IsMSStoreAds) {\r\n bidRangeKey = 'WindowsStoreAdsBidRange';\r\n }\r\n const originBidRange = this.deps.config.get(bidRangeKey);\r\n const accountCurrencyCode = this.deps.config.get('AccountCurrencyCode');\r\n const MinimumBid = _.result(this.deps.config.get('KeywordBidRange'), 'FloorValue');\r\n const fallbackMinBid = this.IsMSStoreAds ? 1 : 0.01;\r\n const range = {\r\n min: IsBidLessThan5CentsInShoppingCampaignEnabled ? _.result(originBidRange, 'FloorValue', fallbackMinBid) : MinimumBid,\r\n max: _.result(originBidRange, 'CeilingValue', 1000),\r\n };\r\n const defaultBidValue = accountCurrencyCode === 'USD' ? 1 : _.result(range, 'min');\r\n this.defaultBid = defaultBidValue;\r\n const bidRange = _.mapObject(range, val => this.deps.decimal.fromFloatToString(val, 2));\r\n const template = inlineEditTemplate;\r\n\r\n super.initialize({\r\n view,\r\n deps,\r\n model: {\r\n Amount: this.getBidAmount(BidAmount),\r\n IsExcluded,\r\n },\r\n bidProperty: 'Amount',\r\n validators: {\r\n Amount: [_.defaults({\r\n type: 'range',\r\n message: this.deps.i18n.getString('ProductGroupsGrid_BidRange_Validation', bidRange),\r\n }, range), {\r\n type: 'type',\r\n message: this.deps.i18n.getString('ProductGroupsGrid_BidFormat_Validation'),\r\n }],\r\n },\r\n selectedItems,\r\n template: values => template(_.defaults(values, {\r\n isBidBoost: false,\r\n bulkEditHeaderText: this.deps.i18n.getString('ProductGroupsGrid_BulkEdit_HeaderText'),\r\n bulkEditLabel: this.deps.i18n.getString('ProductGroupsGrid_BulkEdit_DescriptionText'),\r\n isAutoBidding: this.isAutoBidding,\r\n })),\r\n IsAutoBidding,\r\n defaultMSStoreMinSuggestionBid: this.defaultMSStoreMinSuggestionBid,\r\n validateMinSuggestionBid: this.validateMinSuggestionBid,\r\n });\r\n }\r\n\r\n bidInput() {\r\n this.validateMinSuggestionBid();\r\n }\r\n\r\n validateMinSuggestionBid() {\r\n const bidValue = this.viewModel.Amount();\r\n if (this.IsMSStoreAds && !this.viewModel.IsExcluded()) {\r\n this.viewModel.showLowerThanMinSuggestionBidWarning(bidValue < this.defaultMSStoreMinSuggestionBid);\r\n }\r\n }\r\n\r\n getBidAmount(BidAmount) {\r\n const bidAmount = _.isUndefined(BidAmount) || _.isNull(BidAmount) ?\r\n { Bid: { Amount: this.defaultBid } } : BidAmount;\r\n const bidValue = bidAmount.Bid.Amount;\r\n return bidValue == null ? this.defaultBid : bidValue;\r\n }\r\n\r\n getUpdated() {\r\n let updated;\r\n if (this.viewModel.IsExcluded()) {\r\n updated = { ..._.pick(this.selectedItems[0], 'Id', 'CampaignId', 'AdGroupId'), IsExcluded: true };\r\n } else {\r\n updated = {\r\n ..._.pick(this.selectedItems[0], 'Id', 'CampaignId', 'AdGroupId', this.getFieldName()),\r\n BidAmount: {\r\n Bid: {\r\n Amount: this.getValue().bidValue,\r\n },\r\n },\r\n };\r\n }\r\n if (!this.viewModel.IsExcluded() && this.selectedItems[0].IsExcluded) {\r\n updated.IsExcluded = false;\r\n }\r\n return updated;\r\n }\r\n\r\n genEditSchema() {\r\n const bidEditSchema =\r\n this.deps.s$ProductGroup.properties.BidAmount.schema.properties.Bid.schema;\r\n bidEditSchema.properties.IsExcluded = this.deps.s$ProductGroup.properties.IsExcluded;\r\n return bidEditSchema;\r\n }\r\n\r\n getFieldName() {\r\n return ['BidAmount', 'IsExcluded'];\r\n }\r\n\r\n getValue() {\r\n const bidValue = this.isAutoBidding ? this.defaultBid : this.viewModel.Amount().toString();\r\n return {\r\n bidValue: this.viewModel.IsExcluded() ? null : bidValue,\r\n };\r\n }\r\n}\r\n","/* eslint new-cap:0 */\r\nimport _ from 'underscore';\r\nimport inlineEditTemplate from '../../template/product-groups-inline-edit-bid.pug';\r\nimport { ProductGroupsEditBidBaseView } from '../view/product-groups-edit-bid-base';\r\n\r\nexport class ProductGroupsEditBidBoostView extends ProductGroupsEditBidBaseView {\r\n initialize({\r\n view,\r\n deps,\r\n BidBoost = _.result(_.first(deps.config.get('CurrentAdGroup').Settings), 'BidBoostValue', 1),\r\n IsExcluded = false,\r\n selectedItems = [],\r\n } = {}) {\r\n this.deps = deps;\r\n this.selectedItems = selectedItems;\r\n const template = inlineEditTemplate;\r\n\r\n super.initialize({\r\n view,\r\n deps,\r\n model: {\r\n Multiplier: BidBoost.Multiplier,\r\n IsExcluded,\r\n },\r\n bidProperty: 'Multiplier',\r\n validators: {\r\n Multiplier: [{\r\n type: 'type',\r\n message: this.deps.i18n.getString('ProductGroupsGrid_BidFormat_Validation'),\r\n }],\r\n },\r\n selectedItems,\r\n template: values => template(_.defaults(values, {\r\n isBidBoost: true,\r\n percentSymbol: this.deps.config.get('globalization.number.percentSymbol'),\r\n bulkEditHeaderText: this.deps.i18n.getString('ProductGroupsGrid_BulkEdit_BidBoost_HeaderText'),\r\n bulkEditLabel: this.deps.i18n.getString('ProductGroupsGrid_BulkEdit_BidBoost_DescriptionText'),\r\n })),\r\n });\r\n }\r\n\r\n getUpdated() {\r\n let updated;\r\n if (this.viewModel.IsExcluded()) {\r\n updated = { ..._.pick(this.selectedItems[0], 'Id', 'CampaignId', 'AdGroupId'), IsExcluded: true };\r\n } else {\r\n updated = {\r\n ..._.pick(this.selectedItems[0], 'Id', 'CampaignId', 'AdGroupId', this.getFieldName()),\r\n BidBoost: {\r\n Multiplier: this.getValue().bidBoost,\r\n },\r\n };\r\n }\r\n if (!this.viewModel.IsExcluded() && this.selectedItems[0].IsExcluded) {\r\n updated.IsExcluded = false;\r\n }\r\n return updated;\r\n }\r\n\r\n genEditSchema() {\r\n const bidBoostEditSchema = this.deps.s$ProductGroup.properties.BidBoost.schema;\r\n bidBoostEditSchema.properties.IsExcluded = this.deps.s$ProductGroup.properties.IsExcluded;\r\n return bidBoostEditSchema;\r\n }\r\n\r\n getFieldName() {\r\n return ['BidBoost', 'IsExcluded'];\r\n }\r\n\r\n getValue() {\r\n return {\r\n bidBoost: this.viewModel.IsExcluded() ? null : this.viewModel.Multiplier().toString(),\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { PATH_SPLITER } from '../../constant';\r\n\r\nexport class ProductGroupPathUtil {\r\n constructor({ deps }) {\r\n this.i18n = deps.i18n;\r\n }\r\n\r\n isEverythingElse = condition => condition.Operand && !condition.Attribute;\r\n\r\n isAllProduct = condition => !condition.Operand && !condition.Attribute;\r\n\r\n getNearestParentCondition = ParentConditions => (ParentConditions[ParentConditions.length - 1]);\r\n\r\n getDisplayName = (condition, parentConditions) => {\r\n if (this.isAllProduct(condition)) {\r\n return this.i18n.getString('ShoppingCampaign_AllProducts');\r\n }\r\n const parentCondition = this.getNearestParentCondition(parentConditions);\r\n if (this.isEverythingElse(condition)) {\r\n if (this.isEverythingElse(parentCondition)) {\r\n return this.i18n.getString('ProductGroupsGrid_EverythingElse');\r\n }\r\n return this.i18n.getString('ProductGroupsGrid_EverythingElseIn').replace('{0}', this.getDisplayName(parentCondition, _.initial(parentConditions)));\r\n }\r\n return condition.Attribute;\r\n };\r\n\r\n getPath = (parentConditions) => {\r\n if (!parentConditions || _.isEmpty(parentConditions)) {\r\n return '';\r\n }\r\n let path = '';\r\n path += this.getDisplayName(_.first(parentConditions), []);\r\n for (let i = 1; i < parentConditions.length; i += 1) {\r\n path += ` ${PATH_SPLITER} ${this.getDisplayName(parentConditions[i], _.initial(parentConditions, parentConditions.length - i))}`;\r\n }\r\n return path;\r\n };\r\n\r\n getFullPath = (conditions) => {\r\n const path = [];\r\n for (let i = 0; i < conditions.length; i += 1) {\r\n path.push(_.defaults({\r\n Attribute: this.getDisplayName(conditions[i], _.initial(conditions, conditions.length - i)),\r\n }, conditions[i]));\r\n }\r\n return path;\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\n\r\nexport async function fetchCampaignData({\r\n pageContext,\r\n campaignId,\r\n}) {\r\n const campaign = _.get(pageContext, ['CurrentCampaign']);\r\n if (!_.isEmpty(campaign)) {\r\n return campaign;\r\n }\r\n\r\n const {\r\n CurrentAccount: {\r\n Id: accountId,\r\n },\r\n CurrentCustomer: {\r\n Id: customerId,\r\n },\r\n } = pageContext;\r\n\r\n const res = await edmCampaign\r\n .Customers.$withKey(customerId)\r\n .Accounts.$withKey(accountId)\r\n .Campaigns.$withKey(campaignId)\r\n .get()\r\n .toPromise();\r\n\r\n return res;\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport { GridCustomizedPopupEditor } from '@bingads-webui-campaign/grid-customized-popup-editor';\r\nimport * as PopupEditor from '@bingads-webui/popup-editor';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport {\r\n ColumnSpend,\r\n ColumnClicks,\r\n ColumnImpressions,\r\n ColumnCTR,\r\n ColumnAverageCPC,\r\n ColumnAverageCPM,\r\n ColumnAbsoluteTopImpressionRate,\r\n ColumnConversions,\r\n ColumnConversionsCredit,\r\n ColumnConversionRate,\r\n ColumnPartialConversionRate,\r\n ColumnRevenueOnAdSpend,\r\n ColumnAdvertiserReportedRevenue,\r\n ColumnCPA,\r\n ColumnPartialConversionCPA,\r\n ColumnAllConversions,\r\n ColumnAllConversionsCredit,\r\n ColumnAllConversionRate,\r\n ColumnAllPartialConversionRate,\r\n ColumnAllConversionRevenueOnAdSpend,\r\n ColumnAllConversionAdvertiserReportedRevenue,\r\n ColumnAllConversionCPA,\r\n ColumnAllPartialConversionCPA,\r\n ColumnCPS,\r\n ColumnSalesCount,\r\n ColumnInstalls,\r\n ColumnCostPerInstall,\r\n ColumnRevenuePerInstall\r\n} from '@bingads-webui-campaign/campaignui-common-columns';\r\nimport { isMSStoreAdsCampaign } from '@bingads-webui-campaign-react/ms-store-ads-common';\r\nimport { TrackingTemplateColumn, CustomParametersColumn, FinalUrlSuffixColumn } from '@bingads-webui-campaign/tracking-template-columns';\r\nimport { getColumnConversions } from '@bingads-webui-campaign/column-conversions';\r\nimport conditionTemplate from '../../template/grid-column-condition.pug';\r\nimport flattenConditionTemplate from '../../template/grid-column-flatten-condition.pug';\r\nimport bidTemplate from '../../template/grid-column-bid.pug';\r\nimport warningColumnTemplate from '../../template/grid-column-warning.pug';\r\nimport adGroupNameTemplate from '../../template/grid-column-adgroup.pug';\r\nimport campaignNameTemplate from '../../template/grid-column-campaign.pug';\r\nimport { ProductGroupsEditBidsView } from './product-groups-edit-bid';\r\nimport { ProductGroupsEditBidBoostView } from './product-groups-edit-bid-boost';\r\nimport { ProductGroupPathUtil } from './product-groups-path-util';\r\nimport { getInlineEditableSaveFunction } from './product-groups-inline-edit';\r\nimport { productGroupLevel } from '../../constant';\r\nimport { fetchCampaignData } from '../../campaign-data';\r\n\r\nconst IsProductGroupBidLandscapeEnabled = deps => _.result(deps.config.get('Permissions'), 'IsProductGroupBidLandscapeEnabled');\r\nconst IsBidLessThan5CentsInShoppingCampaignEnabled = deps => _.result(deps.config.get('Permissions'), 'IsBidLessThan5CentsInShoppingCampaignEnabled');\r\nconst IsAvgPositionDeprecationPhase1Enabled = deps => _.result(deps.config.get('Permissions'), 'IsAvgPositionDeprecationPhase1Enabled');\r\nconst IsCurrentAccountInactive = deps => deps.config.get('CurrentAccountInActive');\r\nconst IsReadOnlyMode = deps => deps.config.get('ReadOnlyMode');\r\nconst NO_DATA_PLACEHOLDER_NONLEAF = '-';\r\nconst NO_DATA_PLACEHOLDER_LEAF = '';\r\n\r\nexport function shouldEnableEdit(enable, deps) {\r\n return !IsCurrentAccountInactive(deps) && !IsReadOnlyMode(deps) && enable;\r\n}\r\n\r\nexport const getSortReturn = (value1, value2, columnKey) => {\r\n let v1 = value1;\r\n let v2 = value2;\r\n if (typeof value1 === 'string' && typeof value2 === 'string' && columnKey === 'Condition/Attribute') {\r\n v1 = value1.toLowerCase();\r\n v2 = value2.toLowerCase();\r\n }\r\n\r\n if (v1 < v2) {\r\n return -1;\r\n }\r\n if (v1 > v2) {\r\n return 1;\r\n }\r\n return 0;\r\n};\r\n\r\nconst SORT_DIRECTION = [-1, 1];\r\n\r\nexport const isEveryThingElseRow = item =>\r\n !!(item && !item.Condition.Attribute && item.Condition.Operand);\r\n\r\nexport function shouldEnableProductGroupTreeEditForMSStoreAdsCampaign(deps, item) {\r\n if (isMSStoreAdsCampaign(deps.pageContext.CurrentCampaign)) {\r\n const operand = _.chain(item).result('value').result('Operand').value();\r\n return operand !== 'MPN';\r\n }\r\n return true;\r\n}\r\n\r\nexport const productGroupSortIteratee = (item, direction) => {\r\n if (isEveryThingElseRow(item)) {\r\n // No matter order, \"Everything else in ...\" is always in the bottom\r\n // '~' has a lower priority in ASCII order\r\n return direction === 1 ? '~' : '';\r\n }\r\n return item.Condition.Attribute;\r\n};\r\n\r\nconst generatePickProperty = key => (item) => {\r\n if (item.isAggregateRow) {\r\n return NO_DATA_PLACEHOLDER_LEAF;\r\n }\r\n return item.IsLeaf ? item[key] || NO_DATA_PLACEHOLDER_LEAF : NO_DATA_PLACEHOLDER_NONLEAF;\r\n};\r\n\r\n// const emptyValueFormatter = (val, noData = NO_DATA_PLACEHOLDER_LEAF) =>\r\n// (_.isUndefined(val) || _.isNull(val) || _.isEmpty(val) ? noData : val);\r\n\r\nconst renderBidPopupEditor = (deps, bidEditor, myView, position, newPosition, isTreeView, parentContainerSelector) => { // eslint-disable-line\r\n const useVNextPosition = Object.keys(newPosition).length !== 0;\r\n const popupEditor = new GridCustomizedPopupEditor({\r\n editorView: bidEditor,\r\n cellPosition: useVNextPosition ? newPosition : position,\r\n tableContainer: isTreeView ? '.product-groups-table-hierarchy' : '.product-groups-table-list',\r\n parentContainerSelector: useVNextPosition ? parentContainerSelector : null,\r\n });\r\n\r\n popupEditor.render();\r\n};\r\n\r\nclass ProductGroupColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n super({\r\n name: 'ProductGroup',\r\n property: ['Condition', 'Id', 'ParentId', 'IsLeaf', 'IsAutoBidding', 'IsExcluded', 'IsBidLandscapeEnabled', 'ParentConditions', 'BidOption', 'AdGroupId', 'CampaignId'],\r\n // Used in tree plugin\r\n title: deps.i18n.getString('ProductGroupsGrid_Column_ProductGroup'),\r\n sortable: 'Condition/Attribute',\r\n });\r\n this.deps = deps;\r\n }\r\n\r\n pickProperty(item) {\r\n return item;\r\n }\r\n\r\n template(item) {\r\n return conditionTemplate(_.extend({\r\n i18n: this.deps.i18n,\r\n showSelectorIcon: shouldEnableEdit(!IsCurrentAccountInactive(this.deps) &&\r\n !IsReadOnlyMode(this.deps) && (item.hasChildren || item.depth < 7), this.deps) && shouldEnableProductGroupTreeEditForMSStoreAdsCampaign(this.deps, item),\r\n }, _.pick(item, 'attributeText', 'hasChildren', 'depth', 'isExpanded', 'total')));\r\n }\r\n}\r\n\r\nclass ProductGroupFlattenColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n super({\r\n name: 'ProductGroup',\r\n property: ['Condition', 'Id', 'ParentId', 'IsAutoBidding', 'IsLeaf', 'IsExcluded', 'IsBidLandscapeEnabled', 'ParentConditions', 'BidOption', 'AdGroupId', 'CampaignId'],\r\n // Used in tree plugin\r\n title: deps.i18n.getString('ProductGroupsGrid_Column_ProductGroup'),\r\n sortable: 'Condition/Attribute',\r\n });\r\n this.deps = deps;\r\n this.productGroupPathUtil = new ProductGroupPathUtil({ deps });\r\n }\r\n\r\n pickProperty(item) {\r\n return item;\r\n }\r\n\r\n template({ value }) {\r\n if (value.$total) {\r\n return flattenConditionTemplate(value);\r\n }\r\n const condition = { ...value.Condition };\r\n const parentConditions = value.ParentConditions;\r\n condition.Attribute = this.productGroupPathUtil.getDisplayName(condition, parentConditions);\r\n condition.Path = this.productGroupPathUtil.getPath(parentConditions);\r\n return flattenConditionTemplate(_.defaults(condition, { i18n: this.deps.i18n }));\r\n }\r\n}\r\n\r\nclass CampaignNameColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n super({\r\n name: 'CampaignName',\r\n title: 'ProductGroupsGrid_Column_CampaignName',\r\n property: ['CampaignName', 'CampaignId'],\r\n i18n: deps.i18n,\r\n sortable: 'CampaignName',\r\n });\r\n this.cid = deps.pageContext.CurrentCustomer.Id;\r\n this.aid = deps.pageContext.CurrentAccount.Id;\r\n this.i18n = deps.i18n;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: (value) => {\r\n const {\r\n CampaignId: cmpid,\r\n CampaignName: name,\r\n } = value;\r\n const href = '/vnext/productgroups/list';\r\n\r\n return {\r\n name,\r\n href,\r\n cmpid,\r\n ariaLabel: this.i18n.getString('Click to scope to campaign {{campaignName}}', { campaignName: name }),\r\n };\r\n },\r\n key: this.config.property,\r\n };\r\n }\r\n\r\n get template() { return campaignNameTemplate; }\r\n}\r\n\r\nclass AdGroupNameColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n super({\r\n name: 'AdGroupName',\r\n title: 'ProductGroupsGrid_Column_AdGroupName',\r\n property: ['AdGroupName', 'AdGroupId'],\r\n i18n: deps.i18n,\r\n sortable: 'AdGroupName',\r\n });\r\n this.cid = deps.pageContext.CurrentCustomer.Id;\r\n this.aid = deps.pageContext.CurrentAccount.Id;\r\n this.uid = deps.pageContext.CurrentUser.Id;\r\n this.deps = deps;\r\n this.i18n = deps.i18n;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: (value) => {\r\n const name = value.AdGroupName;\r\n const adgid = value.AdGroupId;\r\n const currentCampaign = this.deps.pageContext.CurrentCampaign;\r\n // In campaign level, there is no CampaignId in row value\r\n const cmpid = value.CampaignId || (currentCampaign && currentCampaign.Id);\r\n const href = '/campaign/vnext/productgroups/list';\r\n\r\n return {\r\n name,\r\n href,\r\n adgid,\r\n cmpid,\r\n ariaLabel: this.i18n.getString('Click to scope to ad group {{adGroupName}}', { adGroupName: name }),\r\n };\r\n },\r\n key: this.config.property,\r\n };\r\n }\r\n\r\n get template() { return adGroupNameTemplate; }\r\n}\r\n\r\nfunction getBidOption(bidOption) {\r\n if (bidOption == null) {\r\n return 'BidValue';\r\n }\r\n return bidOption;\r\n}\r\n\r\nclass BidColumn extends CampaignuiBaseColumn {\r\n constructor({\r\n deps, view, isTreeView, parentContainerSelector,\r\n }) {\r\n const title = deps.i18n.getString('ProductGroupsGrid_Column_Bid');\r\n\r\n super({\r\n name: 'Bid',\r\n title,\r\n property: 'BidAmount',\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'BidAmount/Bid/Amount',\r\n },\r\n helpId: 'Page_CampaignGrids_CurrentBid',\r\n headClasses: ['text-right'],\r\n bodyClasses: ['text-right'],\r\n enableEdit: item => shouldEnableEdit(getBidOption(item.BidOption) === 'BidValue' && item.IsLeaf && (item.IsLeaf || item.BidAmount.Bid.Amount != null), deps),\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n this.view = view;\r\n this.deps = deps;\r\n this.isTreeView = isTreeView;\r\n this.parentContainerSelector = parentContainerSelector;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: item => item,\r\n key: 'BidAmount',\r\n };\r\n }\r\n\r\n template({ value }) {\r\n const showBidValue = value.BidAmount && value.BidAmount.Bid &&\r\n value.BidAmount.Bid.Amount != null && value.IsLeaf && !value.IsExcluded;\r\n const template = bidTemplate(value.isAggregateRow ? {\r\n isAggregateRow: true,\r\n } : {\r\n i18n: this.deps.i18n,\r\n isLeaf: value.IsLeaf,\r\n isExcluded: value.IsExcluded,\r\n // Only leaf node which is not excluded has valid bid\r\n bidString: showBidValue ? this.deps.decimal.fromFloatToString(value.BidAmount.Bid.Amount) : '',\r\n isBidLandscapeAvailable: IsProductGroupBidLandscapeEnabled(this.deps)\r\n && value.IsBidLandscapeEnabled,\r\n isAggregateRow: false,\r\n isAutoBidding: value.IsAutoBidding,\r\n });\r\n // if the template is empty string, the grid cell will show a value of '[object Object]'\r\n return getBidOption(value.BidOption) === 'BidValue' ? template : '';\r\n }\r\n\r\n async onPrompt({\r\n position, item, event, newPosition,\r\n }) {\r\n if ($(event.target).is(`${this.isTreeView ? '.product-groups-table-hierarchy' : '.product-groups-table-list'} .bidlandscape_icon`)) {\r\n return;\r\n }\r\n // account level product group grid item have no campaign info to know if it is MSStoreAds. so read it from campaign api if pageContext have no campaign info\r\n this.setLoading(event.target, true);\r\n const campaign = await fetchCampaignData({\r\n pageContext: this.deps.pageContext,\r\n campaignId: item.CampaignId,\r\n });\r\n this.setLoading(event.target, false);\r\n\r\n const bidEditor = new ProductGroupsEditBidsView(_.extend(\r\n _.pick(item, 'BidAmount', 'IsExcluded', 'IsAutoBidding'),\r\n _.pick(this.view, 'campaignId', 'adgroupId'),\r\n {\r\n view: this.view,\r\n deps: this.deps,\r\n selectedItems: [item],\r\n isInlineEdit: true,\r\n campaign,\r\n }\r\n )).render();\r\n\r\n renderBidPopupEditor(\r\n this.deps,\r\n bidEditor,\r\n this.view,\r\n position,\r\n newPosition,\r\n this.isTreeView,\r\n this.parentContainerSelector\r\n );\r\n }\r\n\r\n setLoading(el, isLoading) {\r\n const loadingElement = '';\r\n if (isLoading) {\r\n $(el).closest('.grid-column-Bid').css('position', 'relative').append(loadingElement);\r\n } else {\r\n $(el).closest('.grid-column-Bid').children('.immersive-translate-input-loading').remove();\r\n }\r\n }\r\n}\r\n\r\nclass BidBoostColumn extends CampaignuiBaseColumn {\r\n constructor({\r\n deps, view, isTreeView, parentContainerSelector,\r\n }) {\r\n const title = deps.i18n.getString('ProductGroupsGrid_Column_BidBoost');\r\n\r\n super({\r\n name: 'BidBoost',\r\n title,\r\n property: 'BidBoost',\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'BidBoost/Multiplier',\r\n },\r\n helpId: 'pop_BA_BMC_BidBoost',\r\n headClasses: ['text-right'],\r\n bodyClasses: ['text-right'],\r\n enableEdit: item => shouldEnableEdit(getBidOption(item.BidOption) === 'BidBoost' && (item.IsLeaf && (item.IsExcluded || item.BidBoost.Multiplier != null)), deps),\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n this.deps = deps;\r\n this.view = view;\r\n this.isTreeView = isTreeView;\r\n this.parentContainerSelector = parentContainerSelector;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: item => item,\r\n key: 'BidBoost',\r\n };\r\n }\r\n\r\n template({ value }) {\r\n const showBidBoostValue = value.BidBoost && value.BidBoost.Multiplier != null;\r\n const template = bidTemplate(value.isAggregateRow ? {\r\n isAggregateRow: true,\r\n } : {\r\n i18n: this.deps.i18n,\r\n isLeaf: value.IsLeaf,\r\n isExcluded: value.IsExcluded,\r\n bidString: showBidBoostValue ? this.deps.i18n.formatPercentToFixed(\r\n value.BidBoost.Multiplier / 100,\r\n { digits: 2 }\r\n ) : '',\r\n isBidLandscapeAvailable: false, // Bid landscape is not available for bid boost\r\n isAggregateRow: false,\r\n });\r\n // if the template is empty string, the grid cell will show a value of '[object Object]'\r\n return getBidOption(value.BidOption) === 'BidBoost' ? template : '';\r\n }\r\n\r\n onPrompt({ position, item, newPosition }) {\r\n const bidEditor = new ProductGroupsEditBidBoostView(_.extend(\r\n _.pick(item, 'BidBoost', 'IsExcluded'),\r\n _.pick(this.view, 'campaignId', 'adgroupId'),\r\n {\r\n view: this.view,\r\n deps: this.deps,\r\n selectedItems: [item],\r\n isInlineEdit: true,\r\n }\r\n )).render();\r\n\r\n renderBidPopupEditor(\r\n this.deps,\r\n bidEditor,\r\n this.view,\r\n position,\r\n newPosition,\r\n this.isTreeView,\r\n this.parentContainerSelector\r\n );\r\n }\r\n}\r\n\r\nclass WarningsColumn extends CampaignuiBaseColumn {\r\n constructor({ deps, view }) {\r\n const title = deps.i18n.getString('ProductGroupsGrid_ColumnName_Warnings');\r\n\r\n super({\r\n name: 'Warnings',\r\n title,\r\n property: 'Warnings',\r\n helpId: 'pop_BA_ProductAds_BidAlerts',\r\n sortable: false,\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n this.deps = deps;\r\n this.view = view;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: item => item,\r\n };\r\n }\r\n\r\n template({ value }) {\r\n const bidRangeKey = IsBidLessThan5CentsInShoppingCampaignEnabled(this.deps) ? 'ProductGroupBidRange' : 'KeywordBidRange';\r\n const MinimumBid = _.result(this.deps.config.get(bidRangeKey), 'FloorValue');\r\n const showBidBoostValue = value.BidBoost && value.BidBoost.Multiplier != null;\r\n\r\n return warningColumnTemplate(value.isAggregateRow ? {\r\n isAggregateRow: true,\r\n } : {\r\n i18n: this.deps.i18n,\r\n hasWarning: value.IsLeaf && !value.IsExcluded && !value.IsAutoBidding &&\r\n value.BidAmount.Bid.Amount < MinimumBid && !showBidBoostValue,\r\n warningCount: 1,\r\n });\r\n }\r\n}\r\n\r\nclass DestinationUrlColumn extends CampaignuiBaseColumn {\r\n constructor({\r\n deps, view, parentContainerSelector,\r\n }) {\r\n const title = deps.i18n.getString('ProductGroupsGrid_Column_DestinationUrl');\r\n\r\n super({\r\n name: 'DestinationUrl',\r\n title,\r\n property: 'DestinationUrl',\r\n helpId: 'Page_CampaignGrids_DestinationUrl',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n enableEdit: item => shouldEnableEdit(item.IsLeaf && !item.IsExcluded, deps),\r\n });\r\n this.deps = deps;\r\n this.view = view;\r\n this.parentContainerSelector = parentContainerSelector;\r\n }\r\n\r\n get pickProperty() {\r\n return generatePickProperty(this.config.property);\r\n }\r\n\r\n onPrompt({ position, item, newPosition }) {\r\n const useVNextPosition = Object.keys(newPosition).length !== 0;\r\n const prompt = (template = 'inline') =>\r\n PopupEditor.prompt({\r\n position: useVNextPosition ? newPosition : position,\r\n parentContainerSelector: useVNextPosition ? this.parentContainerSelector : null,\r\n i18n: this.deps.i18n,\r\n schema: this.deps.s$ProductGroup,\r\n item,\r\n fields: ['DestinationUrl'],\r\n hasLabels: false,\r\n template,\r\n saveModel: (model, editorView) =>\r\n getInlineEditableSaveFunction(this.deps)({\r\n view: this.view,\r\n i18n: this.deps.i18n,\r\n fieldName: 'DestinationUrl',\r\n updated: _.extend(model, _.pick(item, 'Id', 'CampaignId', 'AdGroupId')),\r\n editorView,\r\n editorViewCallbackAfterUpdate: () => {\r\n editorView.remove();\r\n },\r\n }),\r\n });\r\n prompt();\r\n }\r\n}\r\n\r\nclass ProductGroupTrackingTemplateColumn extends TrackingTemplateColumn {\r\n constructor({\r\n deps, view, parentContainerSelector,\r\n }) {\r\n super({\r\n i18n: deps.i18n,\r\n view,\r\n inlineEditableSave: getInlineEditableSaveFunction(deps),\r\n parentContainerSelector,\r\n });\r\n this.config.enableEdit = item => shouldEnableEdit(item.IsLeaf && !item.IsExcluded, deps);\r\n this.isForVNext = true;\r\n }\r\n\r\n get pickProperty() {\r\n return generatePickProperty(this.config.property);\r\n }\r\n}\r\n\r\nclass ProductGroupFinalUrlSuffixColumn extends FinalUrlSuffixColumn {\r\n constructor({\r\n deps, view, parentContainerSelector,\r\n }) {\r\n super({\r\n i18n: deps.i18n,\r\n view,\r\n inlineEditableSave: getInlineEditableSaveFunction(deps),\r\n parentContainerSelector,\r\n });\r\n this.config.enableEdit = item => shouldEnableEdit(item.IsLeaf && !item.IsExcluded, deps);\r\n this.isForVNext = true;\r\n }\r\n\r\n get pickProperty() {\r\n return generatePickProperty(this.config.property);\r\n }\r\n}\r\n\r\nclass ProductGroupCustomParametersColumn extends CustomParametersColumn {\r\n constructor({\r\n deps, view, parentContainerSelector,\r\n }) {\r\n super({\r\n i18n: deps.i18n,\r\n view,\r\n inlineEditableSave: getInlineEditableSaveFunction(deps),\r\n permissions: deps.config.get('Permissions'),\r\n parentContainerSelector,\r\n });\r\n this.config.enableEdit = item => shouldEnableEdit(item.IsLeaf && !item.IsExcluded, deps);\r\n this.isForVNext = true;\r\n }\r\n\r\n get pickProperty() {\r\n return generatePickProperty(this.config.property);\r\n }\r\n}\r\n\r\nclass ProductsSubmittedColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_ProductsSubmitted');\r\n\r\n super({\r\n name: 'ProductsSubmitted',\r\n title: 'ProductGroupsGrid_Column_ProductsSubmitted',\r\n property: 'SubmittedOfferCount',\r\n format: 'integer',\r\n helpId: 'pop_BA_BSC_ProductsSubmitted',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'SubmittedOfferCount',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nclass ProductsTargetedColumn extends CampaignuiBaseColumn {\r\n constructor({ deps }) {\r\n const localizedTitle = deps.i18n.getString('ProductGroupsGrid_Column_ProductsTargeted');\r\n\r\n super({\r\n name: 'ProductsTargeted',\r\n title: 'ProductGroupsGrid_Column_ProductsTargeted',\r\n property: 'TargetedOfferCount',\r\n format: 'integer',\r\n helpId: 'pop_BA_BSC_ProductTargeted',\r\n i18n: deps.i18n,\r\n sortable: {\r\n direction: SORT_DIRECTION,\r\n key: 'TargetedOfferCount',\r\n },\r\n type: 'number',\r\n helpAriaLabel: deps.i18n.getString('Click to learn more about {{item}}', { item: localizedTitle }),\r\n });\r\n }\r\n}\r\n\r\nfunction getAttributeColumns({\r\n view,\r\n isTreeView,\r\n}) {\r\n const { isBidValueOption, isBidBoostOption } = view;\r\n return _.compact([\r\n isTreeView ? ProductGroupColumn : ProductGroupFlattenColumn,\r\n view.level === productGroupLevel.Account ? CampaignNameColumn : null,\r\n view.level === productGroupLevel.Account || view.level === productGroupLevel.Campaign ?\r\n AdGroupNameColumn : null,\r\n isBidValueOption ? BidColumn : null,\r\n isBidBoostOption ? BidBoostColumn : null,\r\n isBidValueOption ? WarningsColumn : null,\r\n DestinationUrlColumn,\r\n ProductGroupTrackingTemplateColumn,\r\n ProductGroupCustomParametersColumn,\r\n ProductGroupFinalUrlSuffixColumn,\r\n ]);\r\n}\r\n\r\nfunction getPerfColumns(deps) {\r\n const { config } = deps;\r\n const permissions = config.get('permissions');\r\n const {\r\n dynamic: {\r\n CPSReporting,\r\n } = {},\r\n } = permissions;\r\n return _.compact([\r\n ColumnSpend,\r\n ColumnClicks,\r\n ColumnImpressions,\r\n ColumnCTR,\r\n ColumnAverageCPC,\r\n ColumnAverageCPM,\r\n IsAvgPositionDeprecationPhase1Enabled(deps) && ColumnAbsoluteTopImpressionRate,\r\n CPSReporting && ColumnCPS,\r\n ]);\r\n}\r\n\r\nfunction getConvColumns({ config }) {\r\n const permissions = config.get('permissions');\r\n const {\r\n dynamic: {\r\n ColumnConversion: IsColumnConversionEnabled,\r\n PartialConversions: IsPartialConversionsEnabled,\r\n CPSReporting,\r\n InstallPerformanceColumns,\r\n } = {},\r\n } = permissions;\r\n const usePartialConversions = IsColumnConversionEnabled && IsPartialConversionsEnabled;\r\n\r\n return _.compact([\r\n usePartialConversions ? ColumnConversionsCredit : ColumnConversions,\r\n usePartialConversions ? ColumnPartialConversionRate : ColumnConversionRate,\r\n ColumnRevenueOnAdSpend,\r\n ColumnAdvertiserReportedRevenue,\r\n usePartialConversions ? ColumnPartialConversionCPA : ColumnCPA,\r\n usePartialConversions ? ColumnAllConversionsCredit : ColumnAllConversions,\r\n usePartialConversions ? ColumnAllPartialConversionRate : ColumnAllConversionRate,\r\n ColumnAllConversionRevenueOnAdSpend,\r\n ColumnAllConversionAdvertiserReportedRevenue,\r\n usePartialConversions ? ColumnAllPartialConversionCPA : ColumnAllConversionCPA,\r\n CPSReporting && ColumnSalesCount,\r\n InstallPerformanceColumns && ColumnInstalls,\r\n InstallPerformanceColumns && ColumnCostPerInstall,\r\n InstallPerformanceColumns && ColumnRevenuePerInstall,\r\n ]);\r\n}\r\n\r\nfunction getShoppingColumns() {\r\n return [\r\n ProductsSubmittedColumn,\r\n ProductsTargetedColumn,\r\n ];\r\n}\r\n\r\nexport function getGridColumnsConfig(deps, view, isTreeView) {\r\n const parentContainerSelector = isTreeView ? '.product-groups-page-hierarchy .grid-and-disclaim-container' :\r\n '.product-groups-page-list .grid-and-disclaim-container';\r\n\r\n return _.chain([\r\n ...getAttributeColumns({\r\n deps,\r\n view,\r\n isTreeView,\r\n }),\r\n ...getPerfColumns(deps),\r\n ...getConvColumns(deps),\r\n ...getShoppingColumns(),\r\n ])\r\n .compact()\r\n .map(Column => (new Column({\r\n deps, view, isForVNext: true, isTreeView, parentContainerSelector, i18n: deps.i18n,\r\n }).toJSON()))\r\n .value();\r\n}\r\n\r\nfunction getCategoryOptions(options, deps, view) {\r\n return _.map(options, (option) => {\r\n const column = new option.Column({\r\n deps,\r\n view,\r\n i18n: deps.i18n,\r\n });\r\n\r\n return {\r\n key: column.name,\r\n name: column.title,\r\n selectOption: option.selectOption,\r\n };\r\n });\r\n}\r\n\r\nfunction getColumnNames(Cols, deps, view) {\r\n return _.map(Cols, Column => new Column({\r\n deps,\r\n view,\r\n i18n: deps.i18n,\r\n }).name);\r\n}\r\n\r\nfunction getLockedColumns(categories) {\r\n let lockedColumns = [];\r\n _.forEach(categories, (category) => {\r\n lockedColumns = lockedColumns.concat(_.map(_.filter(category.options, option => option.selectOption === 'locked'), value => value.Column));\r\n });\r\n\r\n return lockedColumns;\r\n}\r\n\r\nexport function getColumnChooserPluginConfig(deps, view, isTreeView) {\r\n const currentCampaign = deps.config.get('CurrentCampaign');\r\n const isSpaSpbCampaignType = currentCampaign &&\r\n currentCampaign.CampaignSubType === 'ShoppingSponsoredProductAd';\r\n const permissions = deps.config.get('Permissions');\r\n const {\r\n dynamic: {\r\n ColumnConversion: IsColumnConversionEnabled,\r\n } = {},\r\n } = permissions;\r\n\r\n const isLockedColumn = (Column) => {\r\n const lockColumnWhiteList = _.compact([\r\n ProductGroupColumn,\r\n ProductGroupFlattenColumn,\r\n BidColumn,\r\n BidBoostColumn,\r\n WarningsColumn,\r\n AdGroupNameColumn,\r\n CampaignNameColumn,\r\n isSpaSpbCampaignType ? ProductsTargetedColumn : null,\r\n ]);\r\n return _.contains(lockColumnWhiteList, Column) ? 'locked' : 'optional';\r\n };\r\n\r\n const categories = [{\r\n name: deps.i18n.getString('Attributes'),\r\n options: _.compact(_.map(getAttributeColumns({ deps, view, isTreeView }), Column => ({\r\n Column,\r\n selectOption: isLockedColumn(Column),\r\n }))),\r\n }, {\r\n name: deps.i18n.getString('Performance'),\r\n options: _.map(getPerfColumns(deps), Column => ({\r\n Column,\r\n selectOption: isLockedColumn(Column),\r\n })),\r\n }, {\r\n name: deps.i18n.getString('Conversions'),\r\n options: _.map(getConvColumns(deps), Column => ({\r\n Column,\r\n selectOption: isLockedColumn(Column),\r\n })),\r\n }, {\r\n name: deps.i18n.getString('ColumnCategory_Shopping'),\r\n options: _.map(getShoppingColumns(), Column => ({\r\n Column,\r\n selectOption: isLockedColumn(Column),\r\n })),\r\n }];\r\n\r\n return {\r\n categories: _.map(categories, category => ({\r\n name: category.name,\r\n options: getCategoryOptions(category.options, deps, view),\r\n })),\r\n selected: getColumnNames([\r\n ...getAttributeColumns({ deps, view }),\r\n ...getPerfColumns(deps),\r\n ...getConvColumns(deps),\r\n ...getShoppingColumns(),\r\n ], deps, view),\r\n locked: getColumnNames(getLockedColumns(categories), deps, view),\r\n patchQuery: true,\r\n Columns: deps.Columns,\r\n SelectedColumns: deps.SelectedColumns,\r\n LegacyColumns: deps.LegacyColumns,\r\n LegacySelectedColumns: deps.LegacySelectedColumns,\r\n i18n: deps.i18n,\r\n ...IsColumnConversionEnabled ? {\r\n columnConversions: getColumnConversions(getGridColumnsConfig(deps, view, isTreeView)),\r\n } : {},\r\n };\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport { crossPageSelectHeadRow } from '@bingads-webui/projection-grid-cross-page-select-all';\r\nimport placeholderTemplate from '../../template/grid-nodata-placeholder.pug';\r\nimport { getGridColumnsConfig, getColumnChooserPluginConfig, isEveryThingElseRow, getSortReturn } from './product-groups-columns';\r\nimport { bidType, productGroupLevel } from '../../constant';\r\n\r\nexport class ProductGroupsGridConfig {\r\n constructor({\r\n deps,\r\n view,\r\n dataSource,\r\n isTreeView,\r\n onTogglePillClicked,\r\n }) {\r\n this.deps = deps;\r\n this.isTreeView = isTreeView;\r\n this.IsBidLessThan5CentsEnabled = _.result(this.deps.config.get('Permissions'), 'IsBidLessThan5CentsEnabled');\r\n this.IsCPGForBSCEnabled = _.result(this.deps.config.get('Permissions'), 'IsCPGForBSCEnabled');\r\n this.onTogglePillClicked = onTogglePillClicked;\r\n this.ReportEmailRule = deps.state.get('$ReportEmailRule');\r\n deps.state.unset('$ReportEmailRule');\r\n _.extend(this, {\r\n name: 'newProductGroupsGrid',\r\n tableClasses: ['table', 'table-bordered'],\r\n filterService: view.filterService,\r\n dataSource,\r\n scrolling: {\r\n virtualized: true,\r\n header: {\r\n type: 'sticky',\r\n offset() {\r\n return $('nav.navbar-default.navbar-fixed-top').height();\r\n },\r\n },\r\n },\r\n rows: {\r\n headRows: [\r\n crossPageSelectHeadRow(),\r\n 'column-header-rows',\r\n ],\r\n bodyRows: [{\r\n type: 'data-rows',\r\n classes: ['product-partition-row'],\r\n }],\r\n },\r\n columns: getGridColumnsConfig(deps, view, isTreeView),\r\n selection: this.isTreeView ? {\r\n selectable: (item) => {\r\n if (_.isEmpty(item)) {\r\n return true;\r\n }\r\n return item && item.isAggregateRow !== true;\r\n },\r\n } : true,\r\n plugins: this.gridPluginConfig(view),\r\n });\r\n }\r\n\r\n gridToolBarConfig = view => helpers.singleToolbar({\r\n items: _.compact([{\r\n type: 'dropdown',\r\n button: {\r\n classes: ['btn', 'btn-hero'],\r\n text: this.deps.i18n.getString('GridToolbar_FilterBar_Edit'),\r\n },\r\n menu: {\r\n items: _.compact([view.isBidValueOption ? {\r\n text: this.deps.i18n.getString('ProductGroups_BidChanges'),\r\n onClick: () => {\r\n view.editBids(bidType.bidValue);\r\n },\r\n } : undefined, view.isBidBoostOption && this.IsCPGForBSCEnabled ? {\r\n text: this.deps.i18n.getString('ProductGroupsGrid_BidBoostChanges'),\r\n onClick: () => {\r\n view.editBids(bidType.bidBoost);\r\n },\r\n } : undefined]),\r\n },\r\n }, {\r\n type: 'button',\r\n id: 'button-download',\r\n }, {\r\n type: 'dropdown',\r\n id: 'dropdown-column-chooser',\r\n }, view.level === productGroupLevel.AdGroup ? {\r\n type: 'pill-control',\r\n id: 'view-toggle',\r\n selectedIndex: this.isTreeView ? 0 : 1,\r\n onClick: this.onTogglePillClicked,\r\n items: [{\r\n classes: 'glyph-bulleted-tree',\r\n text: '',\r\n title: this.deps.i18n.getString('ProductGroupsGrid_HierarchyView'),\r\n }, {\r\n classes: 'glyph-bulleted-list',\r\n text: '',\r\n title: this.deps.i18n.getString('ProductGroupsGrid_ListView'),\r\n }],\r\n } : undefined]),\r\n });\r\n\r\n processReportRule = (ReportRule) => {\r\n // Remove Warnings column in Headers\r\n // Warnings column will always be the third element in the Array\r\n const warningColumnHeaderIdx = ReportRule.Headers.indexOf(this.deps.i18n.getString('ProductGroupsGrid_ColumnName_Warnings'));\r\n if (warningColumnHeaderIdx > 0) {\r\n ReportRule.Headers.splice(warningColumnHeaderIdx, 1);\r\n }\r\n return _.defaults({\r\n Selection: _.defaults({\r\n IsAdGroupTreeView: this.isTreeView,\r\n QueryString: ReportRule.Selection.QueryString.replace(',Warnings', ''),\r\n }, ReportRule.Selection),\r\n }, ReportRule);\r\n };\r\n\r\n gridPluginConfig = view => ({\r\n inlineDownload: {\r\n DownloadView: this.deps.DownloadView,\r\n isAvailable: true,\r\n i18n: this.deps.i18n,\r\n s$i18n: this.deps.s$i18n,\r\n schema: this.deps.s$ProductGroup,\r\n gridId: 'newProductGroupsGrid',\r\n ReportEmailRule: this.ReportEmailRule,\r\n processReportRule: this.processReportRule,\r\n },\r\n uiBlocker: {\r\n el: $('#summary_tab_product_groups'),\r\n },\r\n placeholder: {\r\n filteredEmptyText: this.deps.i18n.getString('Grid_NoFilteredRecords'),\r\n container: '.grid-nodata-container',\r\n template: placeholderTemplate,\r\n templateOptions: {\r\n i18n: this.deps.i18n,\r\n shouldShowCreateRootLink: !!view.deps.pageContext.CurrentAdGroup,\r\n },\r\n asyncEmptyText: view.tooMuchDataErrorText,\r\n asyncCallback: () => Promise.resolve(view.showTooMuchDataError),\r\n },\r\n tree: {\r\n toggleColumnName: 'ProductGroup',\r\n templateDecorator: celTemplate => ({ value }) => {\r\n if (!_.isEmpty(value.total)) {\r\n return celTemplate({\r\n total: value.total,\r\n });\r\n }\r\n // hack to get parent item\r\n const parentItem = view.grid.gridView.itemWithKey(value.ParentId);\r\n let attributeText = value.Condition.value.Attribute;\r\n const isRoot = _.isEmpty(value.Condition.value.Operand);\r\n\r\n if (isRoot) {\r\n // Root node\r\n attributeText = this.deps.i18n.getString('ShoppingCampaign_AllProducts');\r\n } else if (_.isEmpty(value.Condition.value.Attribute)) {\r\n if (!parentItem.Condition.Attribute && parentItem.Condition.Operand) {\r\n // Parent node is everything else\r\n attributeText = this.deps.i18n.getString('ProductGroupsGrid_EverythingElse');\r\n } else {\r\n // Everything else in `parent's attribute`\r\n const parentAttribute = parentItem.Condition.Attribute || this.deps.i18n.getString('ShoppingCampaign_AllProducts');\r\n\r\n attributeText = this.deps.i18n.getString('ProductGroupsGrid_EverythingElseIn').replace('{0}', parentAttribute);\r\n }\r\n }\r\n\r\n return celTemplate(_.defaults({ i18n: this.deps.i18n }, value.Condition, {\r\n attributeText,\r\n isRoot,\r\n }));\r\n },\r\n },\r\n performanceLog: {\r\n appConfig: this.deps.config,\r\n logger: this.deps.logger,\r\n },\r\n toolbar: this.gridToolBarConfig(view),\r\n columnChooser: getColumnChooserPluginConfig(this.deps, view, this.isTreeView),\r\n clientSideSort: {\r\n compareMaker: (sortIteratee, direction, columnKey) => (item1, item2) => {\r\n // if current sorting column is product group name\r\n if (columnKey === 'Condition/Attribute') {\r\n // direction: -1 for desc, 1 for asc\r\n if (isEveryThingElseRow(item1)) {\r\n return 1;\r\n }\r\n\r\n if (isEveryThingElseRow(item2)) {\r\n return -1;\r\n }\r\n }\r\n\r\n const sortReturn =\r\n getSortReturn(\r\n sortIteratee(item1, direction),\r\n sortIteratee(item2, direction), columnKey\r\n );\r\n return sortReturn;\r\n },\r\n setTopToMax: true,\r\n },\r\n dateFilter: {\r\n state: this.deps.state,\r\n addDateChangeListener: this.deps.addDateChangeListener,\r\n edm: this.deps.edmCampaign,\r\n isOdataActionSource: true,\r\n comparisonColumns: [],\r\n },\r\n pagination: !this.isTreeView ? {\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n preferenceService: this.deps.preferenceService,\r\n } : undefined,\r\n crossPageSelectAll: !this.isTreeView ? { i18n: this.deps.i18n } : undefined,\r\n editable: {\r\n i18n: this.deps.i18n,\r\n },\r\n });\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { ProductGroupBidLandscape } from '@bingads-webui/bid-landscape';\r\nimport { getInlineEditableSaveFunction } from './product-groups-inline-edit';\r\n\r\nclass ProductGroupBidLandscapePopupFactory {\r\n constructor({\r\n deps,\r\n view,\r\n }) {\r\n this.deps = deps;\r\n this.view = view;\r\n this.trackingId = null;\r\n }\r\n\r\n onFetchBidLandscapeSuccess = ({\r\n i18n, event, item, view, data, instrumentation,\r\n }) => {\r\n const activities = {\r\n recordBidChangeInLandScape:\r\n instrumentation.productGroupGrid.create().recordBidChangeInLandScape.create(),\r\n recordFetchLandScapeData:\r\n instrumentation.productGroupGrid.create().recordFetchLandScapeData.create(),\r\n };\r\n\r\n const landscape = new ProductGroupBidLandscape({\r\n instrumentation,\r\n i18n,\r\n inSimpleMode: false,\r\n parentItem: {\r\n Id: item.Id,\r\n Name: item.attributeDisplayName,\r\n CurrentValue: this.deps.decimal.fromFloatToString(item.BidAmount),\r\n },\r\n dataToShow: data,\r\n enityType: 'ProductGroup',\r\n });\r\n\r\n activities.recordFetchLandScapeData.trace(`Fetch BSC bid landscape success for${item.Id}`);\r\n\r\n landscape.once('rendered', () => {\r\n this.trackingId = generateGuid();\r\n const ariaData = {\r\n Id: item.Id,\r\n ActionName: 'ViewBSCBidLandscape',\r\n UIData: {\r\n bidList: landscape.viewModel.dataArray(),\r\n currencyCode: this.deps.pageContext.AccountCurrencyCode,\r\n currentBid: item.BidAmount.Bid.Amount,\r\n startDate: landscape.viewModel.startDateString(),\r\n endDate: landscape.viewModel.endDateString(),\r\n trackingId: this.trackingId,\r\n },\r\n };\r\n activities.recordFetchLandScapeData.trace(ariaData, 'ViewBSCBidLandscape');\r\n });\r\n\r\n landscape.render();\r\n\r\n landscape.on('apply', () => {\r\n const currentSelectedId = landscape.viewModel.currentSelectedId();\r\n const landscapePointsLength = landscape.viewModel.landscapePointsLength();\r\n const isCustomBid = currentSelectedId === landscapePointsLength;\r\n\r\n const bidValue = this.deps.decimal.fromLocalToFloat(landscape.valueToApply());\r\n const message = `Apply bsc bidlandscape success for ${item.Id}:${item.BidAmount.Bid.Amount}->${bidValue}. Currency: ${this.deps.pageContext.AccountCurrencyCode}, DataDate: ${landscape.viewModel.startDateString()}~${landscape.viewModel.endDateString()}, IsCustomBid: ${isCustomBid}, TrackingId: ${this.trackingId}`;\r\n\r\n const updated = _.pick(item, 'Id', 'CampaignId', 'AdGroupId', 'BidAmount', 'IsExcluded');\r\n updated.BidAmount.Bid.Amount = bidValue;\r\n\r\n getInlineEditableSaveFunction(this.deps)({\r\n view,\r\n i18n,\r\n fieldName: ['BidAmount', 'IsExcluded'],\r\n updated,\r\n // This parameter will be invoked its `setErrors()` method when error occurs.\r\n editorView: {\r\n setErrors: (errorMapping) => {\r\n this.deps.popupUtil.close();\r\n view.grid.inlineError.setErrors({\r\n [item.Id]: _.values(errorMapping),\r\n });\r\n },\r\n },\r\n editorViewCallbackAfterUpdate: () => {\r\n activities.recordBidChangeInLandScape.trace(message);\r\n this.deps.popupUtil.close();\r\n },\r\n });\r\n });\r\n\r\n landscape.on('cancel', () => {\r\n this.deps.popupUtil.close();\r\n });\r\n\r\n if (landscape.hasData()) {\r\n this.deps.popupUtil.render(landscape.$el);\r\n } else {\r\n new this.deps.PopoverView({\r\n target: $(event.target),\r\n className: 'product-group-popover-bidlandscape',\r\n position: this.deps.positions.relativeToTableRow({\r\n marginBottom: $('footer > .navbar-footer').height(),\r\n }),\r\n }).setContent(new this.deps.contents.TitledContent().setBody(i18n.getString('ProductGroupsGrid_KeywordBidLandscape_UnClickableIconText')));\r\n }\r\n };\r\n\r\n openBidLandscapePanel = ({\r\n i18n,\r\n event,\r\n item,\r\n view,\r\n instrumentation,\r\n }) => {\r\n this.deps.popupUtil.close();\r\n event.stopPropagation();\r\n\r\n $.advertiser.ajaxPost({\r\n url: '/Campaign/BidLandscape/FetchProductGroupBidLandscapeData',\r\n data: { id: item.Id },\r\n ignoreBeforeAjax: true,\r\n onSuccess: (data) => {\r\n if (!data || (data.Errors && !_.isEmpty(data.Errors))) {\r\n return;\r\n }\r\n this.onFetchBidLandscapeSuccess({\r\n i18n, event, item, view, data, instrumentation,\r\n });\r\n },\r\n });\r\n };\r\n\r\n showBidLandscapePopup({ event, item }) {\r\n return this.openBidLandscapePanel({\r\n i18n: this.deps.i18n,\r\n event,\r\n item,\r\n view: this.view,\r\n instrumentation: this.deps.instrumentation,\r\n });\r\n }\r\n}\r\n\r\nexport { ProductGroupBidLandscapePopupFactory };\r\n","import ko from 'knockout';\r\nimport { KoSchema } from '@bingads-webui/ko-schema';\r\n\r\nexport default class ViewModel {\r\n constructor({ deps, currentOperand = '' } = {}) {\r\n this.sampleOffers = ko.observableArray();\r\n this.sampleCount = ko.observable();\r\n\r\n this.showLimitExceededWarning = ko.observable(false);\r\n this.hasOffer = ko.computed(() => this.sampleCount() > 0);\r\n this.currentOperand = ko.observable(currentOperand);\r\n\r\n this.offerDescription = ko.computed(() => {\r\n const sampleCount = this.sampleCount();\r\n\r\n if (!this.hasOffer()) {\r\n return deps.i18n.getString('ProductGroupsGrid_NoSampleOfferDescription');\r\n } else if (sampleCount === 1) {\r\n return deps.i18n.getString('ProductGroupsGrid_SingularSampleOfferDescription', { sampleCount });\r\n }\r\n return deps.i18n.getString('ProductGroupsGrid_PluralSampleOfferDescription', { sampleCount });\r\n });\r\n\r\n this.updateSample = (data) => {\r\n this.sampleOffers(data);\r\n this.sampleCount(data.totalCount);\r\n };\r\n\r\n KoSchema(this);\r\n }\r\n}\r\n","import { View } from 'backbone';\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\n// import { decorate } from '@bingads-webui/dialog';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport Promise from 'bluebird';\r\nimport { isMSStoreAdsCampaign } from '@bingads-webui-campaign-react/ms-store-ads-common';\r\nimport template from '../../template/product-groups-detail.pug';\r\nimport ViewModel from '../viewmodel/product-groups-detail';\r\nimport { PRODUCT_OFFER_DETAIL_CLOSE_DELAY } from '../../constant';\r\n\r\nconst NUMBER_OF_PRODUCTS_TO_SHOW = 10;\r\n\r\nconst AttributeToFilterType = {\r\n Id: 'ExactStringValue',\r\n Title: 'PartialStringValue',\r\n Brand: 'ExactStringValue',\r\n Price: 'NumericValue',\r\n Condition: 'EnumSelector',\r\n CountryOfSale: 'ExactStringValue',\r\n CategoryL1: 'ExactStringValue',\r\n CategoryL2: 'ExactStringValue',\r\n CategoryL3: 'ExactStringValue',\r\n CategoryL4: 'ExactStringValue',\r\n CategoryL5: 'ExactStringValue',\r\n ProductType1: 'ExactStringValue',\r\n ProductType2: 'ExactStringValue',\r\n ProductType3: 'ExactStringValue',\r\n ProductType4: 'ExactStringValue',\r\n ProductType5: 'ExactStringValue',\r\n CustomLabel0: 'ExactStringValue',\r\n CustomLabel1: 'ExactStringValue',\r\n CustomLabel2: 'ExactStringValue',\r\n CustomLabel3: 'ExactStringValue',\r\n CustomLabel4: 'ExactStringValue',\r\n GTIN: 'ExactStringValue',\r\n MPN: 'ExactStringValue',\r\n Channel: 'EnumSelector',\r\n ChannelExclusivity: 'EnumSelector',\r\n};\r\n\r\nconst ConditionValue = {\r\n New: '0',\r\n Refurbished: '1',\r\n Used: '2',\r\n};\r\n\r\nconst ChannelValue = {\r\n Online: 'Enum.Channel\\'Online\\'',\r\n 'Local Stores': 'Enum.Channel\\'Local Stores\\'',\r\n};\r\n\r\nconst ChannelExclusivityValue = {\r\n 'Multi-channel': 'Enum.ChannelExclusivity\\'Multi-channel\\'',\r\n 'Single-channel': 'Enum.ChannelExclusivity\\'Single-channel\\'',\r\n};\r\n\r\nfunction isEmpty(val) {\r\n return _.isUndefined(val) || _.isNull(val) || _.isEmpty(val);\r\n}\r\n\r\nclass ProductGroupsDetailView extends View {\r\n /**\r\n * Initialize product groups detail page.\r\n *\r\n * @param {Object} options - initialization options.\r\n * @param {integer} options.productPartitionId - selected product partition's id.\r\n * @param {Object[]} options.partitionFullPath - path from selected product group to root.\r\n * @param {boolean} options.isEverythingElseRow - whether or not it is a everything else row.\r\n * @returns {void}\r\n */\r\n initialize({\r\n deps,\r\n grid,\r\n campaignId,\r\n adGroupId,\r\n productPartitionId,\r\n partitionFullPath,\r\n isEverythingElseRow,\r\n parentView,\r\n router,\r\n activityLogger,\r\n perfMarker,\r\n } = {}) {\r\n this.deps = deps;\r\n this.grid = grid;\r\n this.currentCondition = _.last(partitionFullPath);\r\n this.currentOperand = isEmpty(this.currentCondition.Operand) ? '' : this.deps.i18n.getString(`ProductsGrid_Column_${this.currentCondition.Operand}`);\r\n this.viewModel = new ViewModel({\r\n deps: this.deps,\r\n currentOperand: '',\r\n });\r\n this.partitionFullPath = partitionFullPath;\r\n this.campaignId = this.deps.state.get('campaign_id') || campaignId;\r\n this.adGroupId = this.deps.state.get('adgroup_id') || adGroupId;\r\n this.productPartitionId = productPartitionId;\r\n this.isEverythingElseRow = isEverythingElseRow;\r\n\r\n this.parentView = parentView;\r\n this.router = router;\r\n this.activityLogger = activityLogger;\r\n this.perfMarker = perfMarker;\r\n }\r\n\r\n render() {\r\n const query = {\r\n select: ['Id', 'Title'],\r\n limit: NUMBER_OF_PRODUCTS_TO_SHOW,\r\n };\r\n const params = {\r\n entitySet: this.deps.edmCampaign.currentAccount\r\n .Campaigns.$withKey(this.campaignId)\r\n .AdGroups.$withKey(this.adGroupId)\r\n .ProductPartitions.$withKey(this.productPartitionId)\r\n .ProductOffers,\r\n successCallback: (response, textStatus, xhr) => {\r\n this.viewModel.showLimitExceededWarning(xhr.getResponseHeader('OfferLimitExceeded'));\r\n },\r\n bypassCache: false,\r\n };\r\n\r\n this.$el.html(template({\r\n i18n: this.deps.i18n,\r\n partitionTrail: this.partitionTrail,\r\n currentAttribute: this.currentCondition.Attribute,\r\n isEverythingElseRow: this.isEverythingElseRow,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n setTimeout(() => {\r\n this.perfMarker.willFetchData();\r\n const onFetchSuccess = (data) => {\r\n this.perfMarker.willRender();\r\n this.viewModel.updateSample(data);\r\n this.trigger('rendered');\r\n };\r\n\r\n const fetchProductOfferPromise = Promise.all([\r\n this.deps.jsData.ProductOffer.findAll(query, params),\r\n // For users who have MS store ads pilot enabled, the only available product group dimension is MPN, which is renamed to \"App ID\" in UI,\r\n // We need the campaign settings info to identify if current campaign is MS store ads campaign, if it is, we need to update the operand text.\r\n this.deps.jsData.Campaign.find(this.campaignId, {\r\n queryParameters: {\r\n entitySet: this.deps.edmCampaign.currentAccount.Campaigns,\r\n },\r\n bypassCache: true,\r\n }),\r\n ]).then(([data, campaign]) => {\r\n onFetchSuccess(data);\r\n this.viewModel.currentOperand(this.getCurrenOperand(campaign));\r\n });\r\n\r\n fetchProductOfferPromise\r\n .catch(({ errors } = {}) => {\r\n this.viewModel.errors.add(isEmpty(errors) ? undefined : this.deps.getODataErrors(errors));\r\n })\r\n .finally(withUiBlock(this.parentView.$el, this.deps.i18nGlobal.getString('loadingtext')))\r\n .finally(() => this.perfMarker.done());\r\n }, 0);\r\n return this;\r\n }\r\n\r\n getCurrenOperand(campaign) {\r\n if (isMSStoreAdsCampaign(campaign) && this.currentCondition.Operand === 'MPN') {\r\n return this.deps.i18n.getString('ProductsGrid_Column_AppId');\r\n }\r\n return this.currentOperand;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .view-full-product': 'navigateToProductTab',\r\n 'click .gotoCampaignSettings': 'navigateToCampaignSettingsTab',\r\n 'mouseenter .productgroup-detail': 'onMouseEnter',\r\n 'mouseleave .productgroup-detail': 'onMouseLeave',\r\n };\r\n }\r\n\r\n onMouseEnter() {\r\n clearTimeout(this.grid.productOfferCloseTimer);\r\n }\r\n\r\n onMouseLeave() {\r\n this.grid.productOfferCloseTimer = setTimeout(() => {\r\n this.grid.removeHoverProductDetails();\r\n }, PRODUCT_OFFER_DETAIL_CLOSE_DELAY);\r\n }\r\n\r\n get partitionTrail() {\r\n let trail = this.deps.i18n.getString('ShoppingCampaign_AllProducts').concat(' > ');\r\n\r\n for (let index = 1; index < this.partitionFullPath.length - 1; index += 1) {\r\n const item = this.partitionFullPath[index];\r\n\r\n trail = trail.concat(item.Attribute, ' (', this.deps.i18n.getString(`ProductsGrid_Column_${item.Operand}`), ') > ');\r\n }\r\n return trail;\r\n }\r\n\r\n navigateToProductTab() {\r\n const filter = { FilterExpressions: [] };\r\n\r\n _.each(this.partitionFullPath, (item, index) => {\r\n // skip root - all product\r\n if (index > 0) {\r\n let selectedOperator;\r\n let value;\r\n\r\n switch (AttributeToFilterType[item.Operand]) {\r\n case 'ExactStringValue':\r\n selectedOperator = 'Equal';\r\n value = item.Attribute;\r\n break;\r\n case 'EnumSelector':\r\n selectedOperator = 'EnumSelection';\r\n if (item.Operand === 'Condition') {\r\n value = ConditionValue[item.Attribute];\r\n } else if (item.Operand === 'Channel') {\r\n value = ChannelValue[item.Attribute];\r\n } else if (item.Operand === 'ChannelExclusivity') {\r\n value = ChannelExclusivityValue[item.Attribute];\r\n }\r\n break;\r\n case 'PartialStringValue':\r\n selectedOperator = 'Contains';\r\n value = item.Attribute;\r\n break;\r\n default:\r\n break;\r\n }\r\n filter.FilterExpressions.push({\r\n SelectedColumn: item.Operand, SelectedOperator: selectedOperator, Values: [value],\r\n });\r\n }\r\n });\r\n this.remove();\r\n this.parentView.remove();\r\n\r\n if (this.router) {\r\n this.router.navigateToProductTab({\r\n filter: JSON.stringify(filter.FilterExpressions),\r\n adgroupId: this.adGroupId,\r\n campaignId: this.campaignId,\r\n });\r\n return;\r\n }\r\n window.App.navigate(`customer/:customer_id/account/:account_id/campaign/${this.campaignId}/adgroup/${this.adGroupId}/products/find/:filter`, { param: { filter } });\r\n\r\n this.activityLogger.sendToProductDetailsPageLog();\r\n }\r\n\r\n navigateToCampaignSettingsTab() {\r\n this.remove();\r\n this.parentView.remove();\r\n window.App.navigate(`customer/:customer_id/account/:account_id/campaign/${this.campaignId}/edit`);\r\n }\r\n}\r\n\r\nexport default ProductGroupsDetailView;\r\n","import { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\n\r\nexport class SingleViewWrapper extends DeterministicWrapperView {\r\n initialize(options) {\r\n this.view = options.view;\r\n this.listenTo(this.view, 'all', this.trigger);\r\n this.rendered = options.rendered;\r\n }\r\n}\r\n","// eslint-disable-next-line max-len\r\n// legacy$\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { queryify } from '@bingads-webui/url-util';\r\nimport { PopoverView, positions } from '@bingads-webui/popover';\r\nimport { setUpErrorHandling, updateGridQuery, validateOrder } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { pgridFactory } from '@bingads-webui-campaign/pgrid-factory';\r\nimport bidWarningContentTemplate from './template/bid-warning-content.pug';\r\nimport bidWarningTitleTemplate from './template/bid-warning-title.pug';\r\nimport { ProductGroupBidLandscapePopupFactory } from './common/view/bid-landscape-popup';\r\nimport { ProductGroupPathUtil } from './common/view/product-groups-path-util';\r\nimport ProductGroupsDetailView from './common/view/product-groups-detail-view';\r\nimport { PRODUCT_OFFER_DETAIL_SHOW_DELAY, PRODUCT_OFFER_DETAIL_CLOSE_DELAY, FETCH_OFFLINE_STATUS_DELAY, DEFAULT_CURRENT_PAGE, MAX_PAGE_SIZE, productGroupLevel } from './constant';\r\nimport { SingleViewWrapper } from './common/view/single-view-wrapper';\r\n\r\nclass AbstractProductGroupsView extends DeterministicWrapperView {\r\n viewFactory({\r\n gridName,\r\n dataSource,\r\n deps,\r\n campaign,\r\n adgroup,\r\n level,\r\n gridParameters,\r\n callbacks,\r\n triggerScrollbarReposition,\r\n filterService,\r\n preferenceConfig,\r\n getGridConfig,\r\n getGridPlugins,\r\n router,\r\n activityLogger,\r\n perfMarker,\r\n }) {\r\n this.gridName = gridName;\r\n this.removed = false;\r\n this.EVENT_NAMES = {\r\n SHOW_PGG_SELECTOR: 'SHOW_PGG_SELECTOR',\r\n SAVE_PRODUCT_GROUPS: 'SAVE_PRODUCT_GROUPS',\r\n };\r\n this.router = router;\r\n this.triggerScrollbarReposition = triggerScrollbarReposition;\r\n this.dataSource = dataSource;\r\n this.deps = deps;\r\n this.gridParameters = gridParameters;\r\n this.callbacks = callbacks;\r\n this.campaignId = _.result(campaign, 'Id');\r\n this.campaignSubType = _.result(campaign, 'CampaignSubType');\r\n this.adgroupId = _.result(adgroup, 'Id');\r\n this.filterService = filterService;\r\n this.level = level;\r\n this.preferenceConfig = preferenceConfig;\r\n this.getGridPlugins = getGridPlugins;\r\n this.productOfferOpenTimer = undefined;\r\n this.productOfferCloseTimer = undefined;\r\n this.fetchOfflineStatusTimer = undefined;\r\n this.productGroupPathUtil = new ProductGroupPathUtil({ deps });\r\n this.activityLogger = activityLogger;\r\n this.perfMarker = perfMarker;\r\n this.permissions = this.deps.config.get('Permissions');\r\n if (adgroup) {\r\n this.setting = _.first(adgroup.Settings) || {};\r\n // Default BidOption is BidValue\r\n this.isBidValueOption = _.result(this.setting, 'BidOption', 'BidValue') === 'BidValue';\r\n this.isBidBoostOption = !this.isBidValueOption;\r\n this.defaultBid = this.isBidValueOption ? _.result(adgroup, 'SearchBid') : this.setting.BidBoostValue;\r\n } else {\r\n this.isBidValueOption = true;\r\n this.isBidBoostOption = _.result(this.permissions, 'IsCPGForBSCEnabled');\r\n }\r\n\r\n setUpErrorHandling({\r\n gridView: this,\r\n scope: {\r\n campaignId: this.campaignId,\r\n adgroupId: this.adgroupId,\r\n },\r\n dataSource,\r\n i18n: this.deps.i18n,\r\n });\r\n\r\n this.refreshGrid = () => {\r\n this.deps.cacheManager.invalidate('ProductGroup');\r\n this.grid.gridView.refresh(true);\r\n };\r\n\r\n if (_.isUndefined(this.campaignId)) {\r\n this.level = productGroupLevel.Account;\r\n } else if (_.isUndefined(this.adgroupId)) {\r\n this.level = productGroupLevel.Campaign;\r\n } else {\r\n this.level = productGroupLevel.AdGroup;\r\n }\r\n\r\n this.gridConfig = getGridConfig(this);\r\n this.viewport = this.gridConfig.scrolling.viewport;\r\n\r\n if (!this.isTreeView) {\r\n const updateGridCallback = () => {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(), true\r\n );\r\n };\r\n this.callbacks.cache({\r\n updateListGridWithFilter: updateGridCallback,\r\n });\r\n this.filterService.p$Initialized.then(updateGridCallback);\r\n }\r\n\r\n this.initializeGrid(this.gridConfig);\r\n\r\n this.grid.columnChooser.columnChooserAgent.onRecordRemoved(() => {\r\n callbacks.onColumnChooserMenuChanged(this.isTreeView);\r\n });\r\n this.grid.columnChooser.columnChooserAgent.onRecordSaved(() => {\r\n callbacks.onColumnChooserMenuChanged(this.isTreeView);\r\n });\r\n this.grid.columnChooser.columnChooserAgent.onSelectedRecordChanged(() => {\r\n callbacks.onColumnChooserMenuChanged(this.isTreeView);\r\n });\r\n this.grid.columnChooser.columnChooserAgent.onSelectedColumnsChanged((names) => {\r\n callbacks.onSelectedColumnsChanged(names);\r\n });\r\n\r\n return this.grid.gridView;\r\n }\r\n\r\n getAttributeDisplayName = (gridView, row) => {\r\n const parentId = row.ParentId;\r\n const parentRow = gridView.itemWithKey(parentId);\r\n\r\n if (_.isEmpty(row.Condition.Operand)) {\r\n return this.deps.i18n.getString('ShoppingCampaign_AllProducts');\r\n } else if (_.isEmpty(row.Condition.Attribute)) {\r\n if (!parentRow || (!parentRow.Condition.Attribute && parentRow.Condition.Operand)) {\r\n // Parent node is everything else\r\n return this.deps.i18n.getString('ProductGroupsGrid_EverythingElse');\r\n }\r\n // Parent node is not everything else\r\n const parentAttribute = parentRow.Condition.Attribute || this.deps.i18n.getString('ShoppingCampaign_AllProducts');\r\n return this.deps.i18n.getString('ProductGroupsGrid_EverythingElseIn').replace('{0}', parentAttribute);\r\n }\r\n\r\n return row.Condition.Attribute;\r\n };\r\n\r\n getFullConditionPath = (gridView, row) => {\r\n const path = [];\r\n\r\n [row.Condition, ...row.ParentConditions].forEach((condition) => {\r\n path.push(_.defaults({\r\n Attribute: this.getAttributeDisplayName(gridView, this.productGroupPathUtil),\r\n }, condition));\r\n });\r\n\r\n return path;\r\n };\r\n\r\n getPartitionFullPath = (gridView, rowId) => {\r\n const path = [];\r\n let row = gridView.itemWithKey(rowId);\r\n let parentId = row.ParentId;\r\n\r\n path.push(_.defaults({\r\n Attribute: this.getAttributeDisplayName(gridView, row),\r\n }, row.Condition));\r\n\r\n while (parentId) {\r\n row = gridView.itemWithKey(parentId);\r\n path.unshift(_.defaults({\r\n Attribute: this.getAttributeDisplayName(gridView, row),\r\n }, row.Condition));\r\n parentId = row.ParentId;\r\n }\r\n return path;\r\n };\r\n\r\n expandToolBar = (view, productGroupsView) => {\r\n this.overrideWith(this.editBidsView);\r\n const closeView = () => {\r\n this.overrideWith(null);\r\n };\r\n\r\n view.on('refresh', () => {\r\n productGroupsView.refreshGrid();\r\n });\r\n\r\n view.on('hide', () => {\r\n closeView(view);\r\n\r\n // collapse Edit menu after restore toolbar\r\n $('.toolbar .dropdown.open').removeClass('open');\r\n });\r\n\r\n view.on('edit-bid-errors', (errors) => {\r\n productGroupsView.grid.inlineError.setErrors(errors);\r\n closeView(view);\r\n });\r\n };\r\n\r\n events() {\r\n return {\r\n 'click .product-group-name-container': 'onMouseEnterShowProductDetail',\r\n 'mouseenter .product-group-name-container': 'onMouseEnterShowProductDetail',\r\n 'mouseleave .product-group-name-container': 'onMouseLeaveShowProductDetail',\r\n 'click .show-product-selector': 'showProductGroupSelector',\r\n 'click .bidlandscape_icon.spritedimagealign.spritedimage': 'showBidLandscape',\r\n 'click .show-product-warning': 'showProductWarning',\r\n };\r\n }\r\n\r\n onMouseEnterShowProductDetail(e) {\r\n clearTimeout(this.productOfferCloseTimer);\r\n this.productOfferOpenTimer = setTimeout(() => {\r\n this.showProductDetails(e);\r\n }, PRODUCT_OFFER_DETAIL_SHOW_DELAY);\r\n }\r\n\r\n onMouseLeaveShowProductDetail() {\r\n clearTimeout(this.productOfferOpenTimer);\r\n this.productOfferCloseTimer = setTimeout(() => {\r\n this.removeHoverProductDetails();\r\n }, PRODUCT_OFFER_DETAIL_CLOSE_DELAY);\r\n }\r\n\r\n initializeGrid(gridConfig) {\r\n validateOrder(this.preferenceConfig, gridConfig.columns, this.gridName, this.permissions);\r\n this.grid = pgridFactory({\r\n gridConfig,\r\n plugins: this.getGridPlugins(this),\r\n preferenceConfig: this.preferenceConfig,\r\n });\r\n\r\n this.grid.gridView.on('forceRefresh', this.refreshGrid);\r\n\r\n this.grid.gridView.on('didInlineEdit', this.inlineEditSuccessCallback, this);\r\n\r\n this.grid.gridView.on('willReload', () => {\r\n // this.grid.inlineError.clearErrors();\r\n\r\n const { options } = this.grid.gridView.get('dataSource');\r\n\r\n if (options.forceRefresh) {\r\n this.grid.gridView.deselectAll();\r\n }\r\n });\r\n\r\n this.grid.gridView.on(\r\n this.EVENT_NAMES.SAVE_PRODUCT_GROUPS,\r\n params => this.refreshGridAfterSaveProductGroups(params)\r\n );\r\n\r\n const { i18n, pageContext } = this.deps;\r\n const processingDataMessage = i18n.getString('ProductGroupsGrid_ProcessingDataMessage');\r\n const dataReadyMessage = i18n.getString('ProductGroupsGrid_DataReadyMessage');\r\n let tooMuchProductOfferMessage = i18n.getString('ProductGroupsGrid_TooMuchProductOfferMessage_AccountLevel');\r\n if (pageContext.CurrentAdGroup != null) {\r\n tooMuchProductOfferMessage = i18n.getString('ProductGroupsGrid_TooMuchProductOfferMessage_AdGroupLevel');\r\n } else if (pageContext.CurrentCampaign != null) {\r\n tooMuchProductOfferMessage = i18n.getString('ProductGroupsGrid_TooMuchProductOfferMessage_CampaignLevel');\r\n }\r\n\r\n this.grid.gridView.on('didReload', () => {\r\n if (this.removed) {\r\n return;\r\n }\r\n let url;\r\n switch (this.level) {\r\n case productGroupLevel.AdGroup:\r\n url = '/ODataApi/Campaign/V2/Customers(:customer_id)/Accounts(:account_id)/Campaigns(:campaign_id)/AdGroups(:adgroup_id)/ProductGroups/Default.PollOfflineTaskExecutionStatus';\r\n break;\r\n case productGroupLevel.Campaign:\r\n url = '/ODataApi/Campaign/V2/Customers(:customer_id)/Accounts(:account_id)/Campaigns(:campaign_id)/ProductGroups/Default.PollOfflineTaskExecutionStatus';\r\n break;\r\n case productGroupLevel.Account:\r\n default:\r\n url = '/ODataApi/Campaign/V2/Customers(:customer_id)/Accounts(:account_id)/ProductGroups/Default.PollOfflineTaskExecutionStatus';\r\n break;\r\n }\r\n\r\n const data = this.grid.gridView.dataSource.rawData;\r\n clearInterval(this.fetchOfflineStatusTimer);\r\n this.fetchOfflineStatusTimer = undefined;\r\n const productGroupBIDataLoadStatus = data && data['@ns.productGroupBIDataLoadStatus'];\r\n if (productGroupBIDataLoadStatus === 'OfferCountLimitExceed') { // for the scenario that product offers more than 5 million\r\n window.App.views.alertCenter.toastInfo(tooMuchProductOfferMessage);\r\n } else if (productGroupBIDataLoadStatus === 'OutOfDateOfferCountLimitExceed') { // for the normal offline status scenario\r\n window.App.views.alertCenter.toastInfo(processingDataMessage);\r\n this.fetchOfflineStatusTimer = setInterval(() => {\r\n this.deps.odata.get(url).then((response) => {\r\n if (response.value && this.fetchOfflineStatusTimer) {\r\n clearInterval(this.fetchOfflineStatusTimer);\r\n this.fetchOfflineStatusTimer = undefined;\r\n window.App.views.alertCenter.toastInfo(dataReadyMessage);\r\n }\r\n });\r\n }, FETCH_OFFLINE_STATUS_DELAY);\r\n }\r\n });\r\n\r\n this.grid.gridView.on('didUpdate', (changes) => {\r\n if (this.grid.gridView.countRows === 0) {\r\n // `.create-root-node` doesn't exist in current area.\r\n // we need use JQuery to hook event for root node creating\r\n $('.create-root-node').click(() => {\r\n this.createRootNode();\r\n });\r\n }\r\n if (_.has(changes, 'sortableHeader')) {\r\n const orderby = _.result(changes.query, 'orderby') || _.result(this.grid.gridView.get('query'), 'orderby');\r\n const { sortableHeader } = changes;\r\n\r\n this.deps.preferenceService.setAtUserLevel({ Name: `WebApp.CampaignUI.${gridConfig.name}`, Data: { sortInfo: { orderby, sortableHeader } } });\r\n }\r\n });\r\n\r\n this.bidLandscapePopupFactory = new ProductGroupBidLandscapePopupFactory({\r\n deps: this.deps,\r\n view: this,\r\n });\r\n }\r\n\r\n showProductWarning(event) {\r\n const IsBidLessThan5CentsInShoppingCampaignEnabled = _.result(this.deps.config.get('Permissions'), 'IsBidLessThan5CentsInShoppingCampaignEnabled');\r\n const bidRangeKey = IsBidLessThan5CentsInShoppingCampaignEnabled ? 'ProductGroupBidRange' : 'KeywordBidRange';\r\n const MinimumBid = _.result(this.deps.config.get(bidRangeKey), 'FloorValue');\r\n this.warningDetailPopover = new this.deps.PopoverView({\r\n target: $(event.target),\r\n className: 'product-group-popover-warning',\r\n position: this.deps.positions.relativeToTableRow({\r\n marginBottom: $('footer > .navbar-footer').height(),\r\n }),\r\n eventActions: {\r\n 'click .set-bid': () => {\r\n this.showBidEditorForm(event);\r\n },\r\n },\r\n }).setContent(new this.deps.contents.TitledContent()\r\n .setBody({\r\n html: bidWarningContentTemplate({\r\n i18n: this.deps.i18n,\r\n reason: this.deps.i18n.getString('ProductGroupsGrid_BidError_PopupContent', {\r\n bidAmount: MinimumBid,\r\n }),\r\n }),\r\n })\r\n .setTitle({\r\n html: bidWarningTitleTemplate({ i18n: this.deps.i18n }),\r\n }));\r\n }\r\n\r\n showProductDetails(e) {\r\n const detailPerfMarker = this.perfMarker.createChild('show_product_details');\r\n detailPerfMarker.willInit();\r\n const item = this.grid.gridView.itemOfElement(e.target);\r\n if (item === null) {\r\n this.deps.logger.logMessage(\r\n [this.deps.constants.LOGCATEGORY.TRACE],\r\n this.deps.constants.LOGLEVEL.INFO,\r\n 'showProductDetails',\r\n `event target: ${JSON.stringify(e.target, ['tagName', 'text', 'className', 'outerHTML'])}`\r\n );\r\n return;\r\n }\r\n if (item.Id === this.currentHoverItemId) {\r\n return;\r\n }\r\n this.currentHoverItemId = item.Id;\r\n const conditions = item.ParentConditions ?\r\n [...item.ParentConditions, item.Condition] : [item.Condition];\r\n const partitionFullPath =\r\n this.productGroupPathUtil.getFullPath(conditions);\r\n if (!this.ProductDetailPopoverView) {\r\n this.ProductDetailPopoverView = new PopoverView({\r\n target: $(e.target),\r\n className: 'product-group-popover-details',\r\n position: positions.relativeToTableRow({\r\n marginBottom: $('footer > .navbar-footer').height(),\r\n }),\r\n isForNewUI: true,\r\n });\r\n this.ProductDetailPopoverView.on('remove', () => {\r\n this.ProductDetailPopoverView = null;\r\n this.currentHoverItemId = null;\r\n });\r\n } else {\r\n this.ProductDetailPopoverView.setPositionByTarget($(e.target));\r\n }\r\n this.ProductDetailPopoverView.setContent(new SingleViewWrapper({\r\n view: new ProductGroupsDetailView({\r\n deps: this.deps,\r\n grid: this,\r\n campaignId: item.CampaignId,\r\n adGroupId: item.AdGroupId,\r\n productPartitionId: item.Id,\r\n partitionFullPath,\r\n isEverythingElseRow:\r\n _.isEmpty(item.Condition.Attribute) && !_.isEmpty(item.Condition.Operand),\r\n parentView: this.ProductDetailPopoverView,\r\n router: this.router,\r\n activityLogger: this.activityLogger,\r\n perfMarker: detailPerfMarker,\r\n }),\r\n rendered: false,\r\n }));\r\n }\r\n\r\n removeHoverProductDetails() {\r\n if (this.ProductDetailPopoverView) {\r\n this.ProductDetailPopoverView.remove();\r\n }\r\n }\r\n\r\n refreshColumnChooserMenu() {\r\n this.grid.columnChooser.refreshMenu();\r\n }\r\n\r\n updateSelectedColumns(names) {\r\n this.grid.columnChooser.setSelectedColumns(names);\r\n }\r\n\r\n showProductGroupSelector(event) {\r\n let pggSelectorPerfMarker;\r\n if (this.perfMarker) {\r\n pggSelectorPerfMarker = this.perfMarker.createChild('Product_Group_Selector');\r\n pggSelectorPerfMarker.willInit();\r\n }\r\n const item = this.grid.gridView.itemOfElement(event.target);\r\n const partitionFullPath = this.getPartitionFullPath(this.grid.gridView, item.Id);\r\n const children = _.map(item.childrenKeys, key => this.grid.gridView.itemWithKey(key));\r\n const displayName = this.getAttributeDisplayName(this.grid.gridView, item);\r\n this.grid.gridView.trigger(this.EVENT_NAMES.SHOW_PGG_SELECTOR, {\r\n partitionFullPath,\r\n children,\r\n item: {\r\n ...item,\r\n campaignId: this.campaignId,\r\n adgroupId: this.adgroupId,\r\n },\r\n displayName,\r\n defaultBid: this.defaultBid,\r\n isBidValueOption: this.isBidValueOption,\r\n perfMarker: pggSelectorPerfMarker,\r\n });\r\n }\r\n\r\n syncGrid() {\r\n this.callbacks.markNeedSyncGrid();\r\n }\r\n\r\n refreshGridAfterSaveProductGroups(param) {\r\n const { expandedNodeDelta } = param;\r\n if (this.selectorView) {\r\n this.selectorView.remove();\r\n }\r\n this.grid.gridView.deselectAll();\r\n this.refreshGrid();\r\n this.syncGrid();\r\n\r\n if (expandedNodeDelta) {\r\n // expand the newly added subdivision node\r\n const expandedNodeIdsCur =\r\n _.result(this.grid.gridView.get('tree-toggle'), 'expandedNodeIds', []);\r\n\r\n this.grid.tree.setExpandedNodeIds([...expandedNodeIdsCur, expandedNodeDelta]);\r\n }\r\n }\r\n\r\n showBidLandscape(event) {\r\n event.stopPropagation();\r\n const item = this.grid.gridView.itemOfElement(event.target);\r\n\r\n this.bidLandscapePopupFactory.showBidLandscapePopup({\r\n event,\r\n item: _.defaults({\r\n attributeDisplayName: this.getAttributeDisplayName(this.grid.gridView, item),\r\n }, item),\r\n });\r\n this.on('saveLandscape', this.refreshGrid);\r\n }\r\n\r\n createRootNode() {\r\n // When parsing request, UI server is culture-aware.\r\n // For example, if the locale is fr-FR, `2.3` will be parsed as null while `2,3` will be properly parsed to 2.3\r\n // Therefore, we need to format it to the localized version\r\n const bidRow = this.isBidValueOption ?\r\n { 'Added[0].BidValue': this.deps.i18n.formatDecimalToFixed(this.defaultBid) } :\r\n { 'Added[0].BidBoost': this.deps.i18n.formatDecimalToFixed(this.defaultBid) };\r\n\r\n $.advertiser.ajaxPost({\r\n url: queryify('/campaign/ProductGroups/UpdateSubdivision', {\r\n cid: this.deps.state.get('customer_id'),\r\n uid: this.deps.state.get('user_id'),\r\n aid: this.deps.state.get('account_id'),\r\n cmpid: this.deps.state.get('campaign_id'),\r\n adgid: this.deps.state.get('adgroup_id'),\r\n __adcenterAJAX: true,\r\n }),\r\n data: _.extend({\r\n 'Added[0].DimensionType': '',\r\n 'Added[0].DimensionValue': '',\r\n 'Added[0].Id': null,\r\n 'Added[0].ParentId': null,\r\n }, bidRow),\r\n onJsonError: ({ Errors } = {}) => {\r\n window.App.views.alertCenter.toastError(_.pluck(Errors, 'Message'));\r\n },\r\n onSuccess: (data) => {\r\n if (!_.result(data, 'Errors')) {\r\n this.refreshGrid();\r\n }\r\n },\r\n });\r\n }\r\n\r\n showBidEditorForm(event) {\r\n this.warningDetailPopover.remove();\r\n this.warningDetailPopover = null;\r\n\r\n // first select the current product group\r\n this.grid.gridView.selectRow(this.grid.gridView.keyOfElement(event.target));\r\n\r\n this.editBids();\r\n }\r\n\r\n editBids(bidType, entityName = 'BidOrBidBoost') {\r\n const selectedItems = this.grid.gridView.selectedItems();\r\n\r\n if (_.isEmpty(selectedItems)) {\r\n this.deps.popup.alert(this.deps.i18n.getString('Grid_RowSelectionRequired'));\r\n return;\r\n }\r\n const BulkEditView = entityName === 'BidOrBidBoost' ? this.deps.bulkEditView : this.deps.bulkEditCashbackPercentView;\r\n const BulkEditModel = entityName === 'BidOrBidBoost' ? this.deps.bulkEditModel : this.deps.bulkEditCashbackPercentModel;\r\n\r\n this.editBidsView = new BulkEditView({\r\n model: new BulkEditModel({\r\n // selectedEntityCount: getGridSelectionCount(),\r\n Entity: 'ProductGroup',\r\n }),\r\n grid: {\r\n gridView: this.grid.gridView,\r\n pgridPlugins: {\r\n pagination: !this.isTreeView ? this.grid.pagination : undefined,\r\n crossPageSelectAll: !this.isTreeView ? this.grid.crossPageSelectAll : undefined,\r\n // filter,\r\n },\r\n bidType,\r\n // getPageSize and getCurrentPage are used for bulk edit on Tree view,\r\n // and on Flatten view Pagination plugin provides this info\r\n getPageSize: () => MAX_PAGE_SIZE,\r\n getCurrentPage: () => DEFAULT_CURRENT_PAGE,\r\n filterService: this.filterService,\r\n },\r\n deps: this.deps,\r\n isTreeView: this.isTreeView,\r\n isForVNext: true,\r\n triggerScrollbarReposition: this.triggerScrollbarReposition,\r\n defaultBid: this.defaultBid,\r\n entityType: 'ProductGroup',\r\n onOperationSuccess: (model) => {\r\n this.syncGrid();\r\n this.deps.cacheManager.invalidate('ProductGroup');\r\n this.grid.gridView.deselectAll();\r\n if (model != null) {\r\n this.activityLogger.sendBulkEditLog(model);\r\n }\r\n },\r\n onOperationFailure: (model) => {\r\n if (model) {\r\n this.activityLogger.sendBulkEditLog(model);\r\n }\r\n },\r\n }).render();\r\n\r\n this.expandToolBar(this.editBidsView, this);\r\n }\r\n\r\n inlineEditSuccessCallback() {\r\n this.syncGrid();\r\n this.refreshGrid();\r\n this.grid.gridView.deselectAll();\r\n }\r\n\r\n getToolBar() {\r\n return this.grid.toolbar.gridToolbarGroup.toolbars['default-toolbar'];\r\n }\r\n\r\n redirect(path) {\r\n window.location.href = path;\r\n }\r\n\r\n remove(...args) {\r\n this.removed = true;\r\n this.grid.gridView.remove();\r\n this.grid.columnChooser.remove();\r\n this.grid.toolbar.gridToolbarGroup.remove();\r\n\r\n if (!(_.isNull(this.editBidsView) || _.isUndefined(this.editBidsView))) {\r\n this.editBidsView.remove();\r\n }\r\n\r\n if (this.fetchOfflineStatusTimer) {\r\n clearInterval(this.fetchOfflineStatusTimer);\r\n this.fetchOfflineStatusTimer = undefined;\r\n }\r\n\r\n super.remove(...args);\r\n }\r\n}\r\n\r\nexport default AbstractProductGroupsView;\r\n","import { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport projectionGrid from 'projection-grid';\r\nimport { columnChooserPlugin } from '@bingads-webui-campaign/projection-grid-column-chooser';\r\nimport { inlineDownloadWithoutFilterstateAndSegmentPlugin } from '@bingads-webui-campaign/projection-grid-inline-download';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { dateFilterPlugin } from '@bingads-webui-campaign/projection-grid-date-filter';\r\nimport { toolbarPlugin } from '@bingads-webui/projection-grid-toolbar';\r\nimport { treePlugin } from '@bingads-webui/projection-grid-tree';\r\nimport { clientSideSortPlugin } from '@bingads-webui/projection-grid-client-sort';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { inlineErrorPlugin } from '@bingads-webui/projection-grid-inline-error';\r\nimport { aggregatedRowsPlugin } from '@bingads-webui/projection-grid-aggregated-rows';\r\nimport { performanceLogPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { jsdataRawDataPlugin } from '@bingads-webui-campaign/projection-grid-js-data-raw-data';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { ProductGroupsGridConfig } from './common/view/product-groups-grid-config';\r\nimport AbstractProductGroupsView from './abstract-product-groups-grid';\r\n\r\nclass TreeProductGroupsView extends AbstractProductGroupsView {\r\n initialize(options) {\r\n this.isTreeView = true;\r\n super.initialize(options);\r\n }\r\n\r\n getGridConfig() {\r\n return new ProductGroupsGridConfig({\r\n deps: this.deps,\r\n view: this,\r\n isTreeView: this.isTreeView,\r\n dataSource: this.gridParameters.dataSource,\r\n onTogglePillClicked: this.callbacks.onTogglePillClicked,\r\n });\r\n }\r\n\r\n initializeGridFactory() {\r\n return projectionGrid\r\n .factory({ vnext: true })\r\n .use(jsdataRawDataPlugin)\r\n .use(performanceLogPlugin)\r\n .use(dateFilterPlugin)\r\n // .use(this.dateFilterRefreshPlugin)\r\n .use(clientSideSortPlugin)\r\n .use(toolbarPlugin)\r\n .use(columnChooserPlugin)\r\n .use(treePlugin)\r\n .use(editablePlugin)\r\n .use(assistedSelectionPlugin)\r\n .use(inlineErrorPlugin({\r\n errorIconClasses: ['grid-error', 'spritedimage'],\r\n }))\r\n .use(uiBlockerPlugin)\r\n .use(placeholderPlugin)\r\n .use(inlineDownloadWithoutFilterstateAndSegmentPlugin)\r\n .use(a11yPlugin)\r\n .use(aggregatedRowsPlugin({\r\n bottom: {\r\n getRows: (items, { view }) => [{\r\n item: {\r\n total: this.deps.i18n.getString('ProductGroupsGrid_TotalSummary', { count: view.getItemCount() }),\r\n isAggregateRow: true,\r\n },\r\n classes: `bottom-aggregated-row-${0}`,\r\n }],\r\n },\r\n }));\r\n }\r\n\r\n renderTrunk() {\r\n const { pathname } = window.location;\r\n if (pathname === '/campaign/vnext/productgroups/list') {\r\n return;\r\n }\r\n updateGridQuery(this.grid.gridView, null, true);\r\n super.renderTrunk();\r\n }\r\n\r\n get className() { return 'product-groups-hierarchy-grid'; }\r\n}\r\n\r\nexport default TreeProductGroupsView;\r\n","import { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport projectionGrid from 'projection-grid';\r\nimport { columnChooserPlugin } from '@bingads-webui-campaign/projection-grid-column-chooser';\r\nimport { inlineDownloadWithoutFilterstateAndSegmentPlugin } from '@bingads-webui-campaign/projection-grid-inline-download';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { dateFilterPlugin } from '@bingads-webui-campaign/projection-grid-date-filter';\r\nimport { toolbarPlugin } from '@bingads-webui/projection-grid-toolbar';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { inlineErrorPlugin } from '@bingads-webui/projection-grid-inline-error';\r\nimport { aggregatedRowsPluginBuilder } from '@bingads-webui-campaign/pgrid-aggregated-rows';\r\nimport { performanceLogPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { jsdataRawDataPlugin } from '@bingads-webui-campaign/projection-grid-js-data-raw-data';\r\nimport { crossPageSelectAllPlugin } from '@bingads-webui/projection-grid-cross-page-select-all';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { ProductGroupsGridConfig } from './common/view/product-groups-grid-config';\r\nimport AbstractProductGroupsView from './abstract-product-groups-grid';\r\n\r\nclass FlattenProductGroupsView extends AbstractProductGroupsView {\r\n initialize(options) {\r\n this.isTreeView = false;\r\n super.initialize(options);\r\n }\r\n\r\n getGridConfig() {\r\n return new ProductGroupsGridConfig({\r\n deps: this.deps,\r\n view: this,\r\n isTreeView: this.isTreeView,\r\n dataSource: this.gridParameters.dataSource,\r\n onTogglePillClicked: this.callbacks.onTogglePillClicked,\r\n });\r\n }\r\n\r\n initializeGridFactory() {\r\n return projectionGrid\r\n .factory({ vnext: true })\r\n .use(jsdataRawDataPlugin)\r\n .use(paginationPlugin)\r\n .use(crossPageSelectAllPlugin)\r\n .use(performanceLogPlugin)\r\n .use(dateFilterPlugin)\r\n // .use(this.dateFilterRefreshPlugin)\r\n .use(toolbarPlugin)\r\n .use(columnChooserPlugin)\r\n .use(editablePlugin)\r\n .use(assistedSelectionPlugin)\r\n .use(inlineErrorPlugin({\r\n errorIconClasses: ['grid-error', 'spritedimage'],\r\n }))\r\n .use(uiBlockerPlugin)\r\n .use(placeholderPlugin)\r\n .use(inlineDownloadWithoutFilterstateAndSegmentPlugin)\r\n .use(a11yPlugin)\r\n .use(aggregatedRowsPluginBuilder({\r\n i18n: this.deps.i18n,\r\n keys: {\r\n overallI18nKey: 'ProductGroupGrid_Total',\r\n filteredI18nKey: 'ProductGroupGrid_Filtered_Total',\r\n },\r\n permissions: this.deps.config.get('Permissions'),\r\n filterService: this.filterService,\r\n customConfig: {\r\n showSearchRow: false,\r\n showAudienceRow: false,\r\n showDeletedRow: false,\r\n },\r\n }));\r\n }\r\n\r\n renderTrunk() {\r\n // TODO: Update FilterService to include fetchWaterfallFilterPromises in p$Initialized\r\n // The issue here is that if refreshWaterfallFilters is called, initializeCombinedFilterPromise would\r\n // still be resolved but the waterfall filter data is not ready.\r\n\r\n // bluebird Promise.all behaves differently from native Promise.all\r\n // eslint-disable-next-line no-restricted-globals\r\n Promise.all([\r\n this.filterService.initializeCombinedFilterPromise,\r\n ...(this.filterService.fetchWaterfallFilterPromises || []),\r\n ]).then(() => {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(), true\r\n );\r\n });\r\n super.renderTrunk();\r\n }\r\n\r\n get className() { return 'product-groups-list-grid'; }\r\n}\r\n\r\nexport default FlattenProductGroupsView;\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\n// import { crossPageSelectHeadRow } from '@bingads-webui/projection-grid-cross-page-select-all';\r\n\r\nimport { getGridColumnsConfig } from './common/view/product-groups-columns';\r\n\r\nexport function getConfig({\r\n view,\r\n filterService,\r\n deps,\r\n dataSource,\r\n viewport,\r\n customHeaderOffset,\r\n isTreeView,\r\n}) {\r\n const tableName = deps.i18n.getString('ProductGroupsGridName');\r\n const gridConfig = {\r\n name: 'newProductGroupsGrid',\r\n legacyGridName: 'newProductGroupsGrid',\r\n config: deps.config,\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': tableName },\r\n filterService,\r\n dataSource,\r\n scrolling: {\r\n virtualized: true,\r\n header: {\r\n type: 'sticky',\r\n offset: customHeaderOffset || (() => $('nav.navbar-default.navbar-fixed-top').height()),\r\n },\r\n },\r\n rows: ['column-header-rows'],\r\n columns: getGridColumnsConfig(deps, view, isTreeView),\r\n selection: isTreeView ? {\r\n selectable: (item) => {\r\n if (_.isEmpty(item)) {\r\n return true;\r\n }\r\n return item && item.isAggregateRow !== true;\r\n },\r\n } : true,\r\n };\r\n\r\n if (viewport) {\r\n gridConfig.scrolling.viewport = viewport;\r\n }\r\n\r\n return gridConfig;\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { inlineDownloadWithoutFilterstateAndSegmentPlugin } from '@bingads-webui-campaign/projection-grid-inline-download';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { treePlugin } from '@bingads-webui/projection-grid-tree';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { performanceLogPlugin, perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { columnChooserPlugin } from '@bingads-webui-campaign/projection-grid-column-chooser';\r\nimport { clientSideSortPlugin } from '@bingads-webui/projection-grid-client-sort';\r\nimport { dateFilterPlugin } from '@bingads-webui-campaign/projection-grid-date-filter';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { jsdataRawDataPlugin } from '@bingads-webui-campaign/projection-grid-js-data-raw-data';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\n// import { crossPageSelectAllPlugin } from '@bingads-webui/projection-grid-cross-page-select-all';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { inlineErrorPlugin } from '@bingads-webui/projection-grid-inline-error';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\n// import { aggregatedRowsPlugin } from '@bingads-webui/projection-grid-aggregated-rows';\r\nimport { aggregatedRowsPluginBuilder } from '@bingads-webui-campaign/pgrid-aggregated-rows';\r\nimport { getColumnChooserPluginConfig, isEveryThingElseRow, getSortReturn } from './common/view/product-groups-columns';\r\n\r\nconst appConfig = globalContext.require('component/config/index');\r\nconst permissions = appConfig.get('Permissions');\r\n\r\nexport function getPlugins({\r\n view,\r\n filterService,\r\n deps,\r\n isTreeView,\r\n p$daterange,\r\n perfMarker,\r\n}) {\r\n // view = view;\r\n // deps = deps;\r\n // isTreeView = isTreeView;\r\n const ReportEmailRule = deps.state.get('$ReportEmailRule');\r\n deps.state.unset('$ReportEmailRule');\r\n\r\n const processReportRule = (ReportRule) => {\r\n // Remove Warnings column in Headers\r\n // Warnings column will always be the third element in the Array\r\n const warningColumnHeaderIdx = ReportRule.Headers.indexOf(deps.i18n.getString('ProductGroupsGrid_ColumnName_Warnings'));\r\n if (warningColumnHeaderIdx > 0) {\r\n ReportRule.Headers.splice(warningColumnHeaderIdx, 1);\r\n }\r\n return _.defaults({\r\n Selection: _.defaults({\r\n IsAdGroupTreeView: isTreeView,\r\n QueryString: ReportRule.Selection.QueryString.replace(',Warnings', ''),\r\n }, ReportRule.Selection),\r\n }, ReportRule);\r\n };\r\n\r\n const columnChooserConfig = getColumnChooserPluginConfig(deps, view, isTreeView);\r\n columnChooserConfig.customToolbarIcon = 'ba-TripleColumnSolid';\r\n\r\n const aggregatedRowsPlugin = aggregatedRowsPluginBuilder({\r\n i18n: deps.i18n,\r\n keys: {\r\n overallI18nKey: 'ProductGroupGrid_Total',\r\n filteredI18nKey: 'ProductGroupGrid_Filtered_Total',\r\n },\r\n permissions,\r\n filterService,\r\n customConfig: {\r\n showSearchRow: false,\r\n showAudienceRow: false,\r\n showNativeRow: false,\r\n showDeletedRow: false,\r\n },\r\n });\r\n\r\n if (isTreeView) {\r\n return [{\r\n plugin: perfMarkerPlugin,\r\n config: { appConfig: deps.config, marker: perfMarker },\r\n }, {\r\n plugin: inlineDownloadWithoutFilterstateAndSegmentPlugin,\r\n config: {\r\n DownloadView: deps.DownloadView,\r\n isAvailable: true,\r\n i18n: deps.i18n,\r\n s$i18n: deps.s$i18n,\r\n schema: deps.s$ProductGroup,\r\n gridId: 'newProductGroupsGrid',\r\n ReportEmailRule,\r\n processReportRule,\r\n p$daterange,\r\n },\r\n }, {\r\n plugin: uiBlockerPlugin,\r\n config: {\r\n el: $('.product-groups-page-hierarchy'),\r\n },\r\n }, {\r\n plugin: treePlugin,\r\n config: {\r\n toggleColumnName: 'ProductGroup',\r\n templateDecorator: celTemplate => ({ value }) => {\r\n if (!_.isEmpty(value.total)) {\r\n return celTemplate({\r\n total: value.total,\r\n });\r\n }\r\n // hack to get parent item\r\n const parentItem = view.grid.gridView.itemWithKey(value.ParentId);\r\n let attributeText = value.Condition.value.Attribute;\r\n const isRoot = _.isEmpty(value.Condition.value.Operand);\r\n\r\n if (isRoot) {\r\n // Root node\r\n attributeText = deps.i18n.getString('ShoppingCampaign_AllProducts');\r\n } else if (_.isEmpty(value.Condition.value.Attribute)) {\r\n if (!parentItem.Condition.Attribute && parentItem.Condition.Operand) {\r\n // Parent node is everything else\r\n attributeText = deps.i18n.getString('ProductGroupsGrid_EverythingElse');\r\n } else {\r\n // Everything else in `parent's attribute`\r\n const parentAttribute = parentItem.Condition.Attribute || deps.i18n.getString('ShoppingCampaign_AllProducts');\r\n\r\n attributeText = deps.i18n.getString('ProductGroupsGrid_EverythingElseIn').replace('{0}', parentAttribute);\r\n }\r\n }\r\n\r\n return celTemplate(_.defaults({ i18n: deps.i18n }, value.Condition, {\r\n attributeText,\r\n isRoot,\r\n }));\r\n },\r\n },\r\n }, {\r\n plugin: performanceLogPlugin,\r\n config: {\r\n appConfig: deps.config,\r\n logger: deps.logger,\r\n },\r\n }, {\r\n plugin: columnChooserPlugin,\r\n config: columnChooserConfig,\r\n }, {\r\n plugin: clientSideSortPlugin,\r\n config: {\r\n compareMaker: (sortIteratee, direction, columnKey) => (item1, item2) => {\r\n // if current sorting column is product group name\r\n if (columnKey === 'Condition/Attribute') {\r\n // direction: -1 for desc, 1 for asc\r\n if (isEveryThingElseRow(item1)) {\r\n return 1;\r\n }\r\n\r\n if (isEveryThingElseRow(item2)) {\r\n return -1;\r\n }\r\n }\r\n\r\n const sortReturn =\r\n getSortReturn(\r\n sortIteratee(item1, direction),\r\n sortIteratee(item2, direction), columnKey\r\n );\r\n return sortReturn;\r\n },\r\n setTopToMax: true,\r\n },\r\n }, {\r\n plugin: dateFilterPlugin,\r\n config: {\r\n state: deps.state,\r\n addDateChangeListener: _.noop,\r\n edm: deps.edmCampaign,\r\n isOdataActionSource: true,\r\n comparisonColumns: [],\r\n p$daterange,\r\n },\r\n }, {\r\n plugin: jsdataRawDataPlugin,\r\n }, {\r\n plugin: assistedSelectionPlugin,\r\n }, {\r\n plugin: editablePlugin,\r\n config: { i18n: deps.i18n },\r\n }, {\r\n plugin: inlineErrorPlugin,\r\n }, {\r\n plugin: a11yPlugin,\r\n config: { i18n: deps.i18n },\r\n }];\r\n }\r\n return [{\r\n plugin: perfMarkerPlugin,\r\n config: { appConfig: deps.config, marker: perfMarker },\r\n }, {\r\n plugin: jsdataRawDataPlugin,\r\n }, {\r\n plugin: paginationPlugin,\r\n config: {\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n preferenceService: deps.preferenceService,\r\n pageSizeText: deps.i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: deps.i18n.getString('Grid_PageOf'),\r\n },\r\n }, {\r\n plugin: dateFilterPlugin,\r\n config: {\r\n state: deps.state,\r\n addDateChangeListener: _.noop,\r\n edm: deps.edmCampaign,\r\n isOdataActionSource: true,\r\n comparisonColumns: [],\r\n p$daterange,\r\n },\r\n }, {\r\n // plugin: crossPageSelectAllPlugin,\r\n // }, {\r\n plugin: performanceLogPlugin,\r\n config: {\r\n appConfig: deps.config,\r\n logger: deps.logger,\r\n },\r\n }, {\r\n plugin: columnChooserPlugin,\r\n config: columnChooserConfig,\r\n }, {\r\n plugin: editablePlugin,\r\n config: { i18n: deps.i18n },\r\n }, {\r\n plugin: assistedSelectionPlugin,\r\n }, {\r\n plugin: uiBlockerPlugin,\r\n config: {\r\n el: $('.product-groups-page-list'),\r\n },\r\n }, {\r\n plugin: inlineDownloadWithoutFilterstateAndSegmentPlugin,\r\n config: {\r\n DownloadView: deps.DownloadView,\r\n isAvailable: true,\r\n i18n: deps.i18n,\r\n s$i18n: deps.s$i18n,\r\n schema: deps.s$ProductGroup,\r\n gridId: 'newProductGroupsGrid',\r\n ReportEmailRule,\r\n processReportRule,\r\n p$daterange,\r\n },\r\n }, {\r\n plugin: aggregatedRowsPlugin,\r\n }, {\r\n plugin: a11yPlugin,\r\n config: { i18n: deps.i18n },\r\n }];\r\n}\r\n","// import { setUpErrorHandling } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport deps from './deps';\r\nimport ProductGroupsTreeGrid from './tree-product-groups-grid';\r\nimport ProductGroupsFlattenGrid from './flatten-product-groups-grid';\r\nimport { getConfig } from './grid-config';\r\nimport { getPlugins } from './grid-plugins-config';\r\n\r\nexport function createProductGroupsGrid({\r\n gridName,\r\n router,\r\n campaign,\r\n adgroup,\r\n level,\r\n gridParameters,\r\n callbacks,\r\n triggerScrollbarReposition = null,\r\n filterService,\r\n preferenceConfig,\r\n viewport,\r\n getAdditionalPlugins,\r\n customHeaderOffset,\r\n isTreeView = true,\r\n p$daterange = null,\r\n perfMarker,\r\n activityLogger,\r\n}) {\r\n const currentScope = deps.treeView.edmCampaign.currentAdGroup\r\n || deps.treeView.edmCampaign.currentCampaign || deps.treeView.edmCampaign.currentAccount;\r\n const dataSource = {\r\n type: 'jsdata',\r\n entity: deps.treeView.jsData.ProductGroup,\r\n schema: deps.treeView.s$ProductGroup,\r\n options: {\r\n entitySet: currentScope\r\n .ProductGroups['Default.GridData'].$call({\r\n gridDataParameters: {},\r\n isAdGroupTreeView: isTreeView,\r\n }),\r\n cacheResponse: false,\r\n },\r\n };\r\n if (isTreeView) {\r\n return new ProductGroupsTreeGrid({\r\n gridName,\r\n router,\r\n dataSource,\r\n deps: deps.treeView,\r\n campaign,\r\n adgroup,\r\n level,\r\n gridParameters,\r\n callbacks,\r\n triggerScrollbarReposition,\r\n filterService,\r\n preferenceConfig,\r\n // setupDataSourceErrorHandling: view => setUpErrorHandling({\r\n // gridView: view,\r\n // scope,\r\n // dataSource,\r\n // i18n,\r\n // }),\r\n getGridConfig: view => getConfig({\r\n view,\r\n filterService,\r\n deps: deps.treeView,\r\n isTreeView,\r\n dataSource,\r\n viewport,\r\n customHeaderOffset,\r\n }),\r\n getGridPlugins: view => getPlugins({\r\n view,\r\n filterService,\r\n deps: deps.treeView,\r\n isTreeView,\r\n p$daterange,\r\n perfMarker,\r\n }).concat(getAdditionalPlugins(view)),\r\n activityLogger,\r\n perfMarker,\r\n });\r\n }\r\n\r\n return new ProductGroupsFlattenGrid({\r\n gridName,\r\n router,\r\n dataSource,\r\n deps: deps.flattenView,\r\n campaign,\r\n adgroup,\r\n level,\r\n gridParameters,\r\n callbacks,\r\n triggerScrollbarReposition,\r\n filterService,\r\n preferenceConfig,\r\n // setupDataSourceErrorHandling: view => setUpErrorHandling({\r\n // gridView: view,\r\n // scope,\r\n // dataSource,\r\n // i18n,\r\n // }),\r\n getGridConfig: view => getConfig({\r\n view,\r\n filterService,\r\n deps: deps.flattenView,\r\n isTreeView,\r\n dataSource,\r\n viewport,\r\n customHeaderOffset,\r\n }),\r\n getGridPlugins: view => getPlugins({\r\n view,\r\n filterService,\r\n deps: deps.flattenView,\r\n isTreeView,\r\n p$daterange,\r\n perfMarker,\r\n }).concat(getAdditionalPlugins(view)),\r\n activityLogger,\r\n perfMarker,\r\n });\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport const projectionGridEnableWithSelection = definePlugin => definePlugin('projectionGridEnableWithSelection', [\r\n 'config',\r\n 'gridView',\r\n 'toolbar',\r\n], ({\r\n plugins: {\r\n projectionGridEnableWithSelection: {\r\n toolbarItemIds,\r\n },\r\n },\r\n}, gridView, toolbar) => {\r\n const toolbarEditor = toolbar.gridToolbarGroup.toolbars.toolbar;\r\n\r\n gridView.on('didUpdate', () => {\r\n const selectedItems = gridView.selectedItems();\r\n\r\n _.each(toolbarItemIds, (id) => {\r\n const original = toolbarEditor.get(id);\r\n toolbarEditor.update(_.extend({}, original, {\r\n disabled: _.isEmpty(selectedItems),\r\n }));\r\n });\r\n });\r\n});\r\n","/* istanbul ignore file */\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport Backbone from 'backbone';\r\nimport _ from 'underscore';\r\n\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { IODatePicker } from '@bingads-webui-cc-react/io-controls';\r\nimport { Constants } from '@bingads-webui-clientcenter/entity-utils';\r\nimport { DeterministicViewForBackBoneView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { withI18n } from '@bingads-webui-react/i18n-context';\r\n\r\nimport template from '../templates/customized-inline-edit-template.pug';\r\n\r\nconst { IOFormInputSchema, InsertionOrdersGridFieldNames } = Constants;\r\n\r\nexport class IODateInlineEditView extends DeterministicView {\r\n initialize({\r\n allowImmediateStart,\r\n allowEndless,\r\n i18n,\r\n minDate,\r\n selectedDate,\r\n }) {\r\n this.i18n = i18n;\r\n this.alwaysShowError = false;\r\n this.ioDatePicker = new DeterministicViewForBackBoneView({\r\n view: new (Backbone.View.extend({\r\n initialize() {\r\n this.selectedDate = selectedDate;\r\n this.onChanged = this.onChanged.bind(this);\r\n this.ioDatePickerComponent = withI18n(IODatePicker, i18n);\r\n },\r\n render() {\r\n ReactDOM.render(\r\n React.createElement(this.ioDatePickerComponent, {\r\n minDate: _.isString(minDate) ? i18n.parseDate(minDate) : minDate,\r\n schema: IOFormInputSchema.properties[InsertionOrdersGridFieldNames.ThruDate],\r\n onChanged: this.onChanged,\r\n dateValue: this.selectedDate,\r\n allowEndless,\r\n allowImmediateStart,\r\n alwaysShowError: false,\r\n }),\r\n this.el\r\n );\r\n return this;\r\n },\r\n onChanged({ value, isValid }) {\r\n this.selectedDate = value;\r\n this.isValid = isValid;\r\n this.render();\r\n },\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n Backbone.View.prototype.remove.call(this);\r\n },\r\n }))().render(),\r\n });\r\n this.setChild('subEditView', this.ioDatePicker);\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .btn-primary': 'save',\r\n 'click .btn-default': 'cancel',\r\n };\r\n }\r\n\r\n get template() {\r\n return () => template({\r\n saveLabel: this.i18n.getString(_TL_('Save')),\r\n cancelLabel: this.i18n.getString(_TL_('Cancel')),\r\n });\r\n }\r\n\r\n save() {\r\n const { view: { isValid, selectedDate } = {} } = this.ioDatePicker;\r\n if (isValid) {\r\n this.trigger('save', {\r\n newSelectedDate: _.isDate(selectedDate) ? this.i18n.formatDate(selectedDate) : selectedDate,\r\n });\r\n }\r\n }\r\n\r\n cancel() {\r\n this.trigger('close');\r\n }\r\n}\r\n","// TODO: Move to shared components when 'grid-customized-popup-editor' is moved.\r\nimport { GridCustomizedPopupEditor } from '@bingads-webui-campaign/grid-customized-popup-editor';\r\nimport { IODateInlineEditView } from './date-react-view';\r\n\r\nexport function DateInlineEditableColumnPrompt({\r\n position,\r\n selectedDate,\r\n minDate,\r\n maxDate,\r\n i18n,\r\n onSave,\r\n item,\r\n columnName,\r\n allowImmediateStart,\r\n allowEndless,\r\n}) {\r\n const dateEditorView = new IODateInlineEditView({\r\n minDate,\r\n maxDate,\r\n selectedDate,\r\n i18n,\r\n allowImmediateStart,\r\n allowEndless,\r\n });\r\n\r\n dateEditorView.on('save', ({ newSelectedDate }) => {\r\n onSave({\r\n columnName,\r\n updatedValue: newSelectedDate,\r\n item,\r\n });\r\n\r\n dateEditorView.trigger('close');\r\n });\r\n\r\n const editorView = new GridCustomizedPopupEditor({\r\n editorView: dateEditorView.render(),\r\n cellPosition: position,\r\n renderBelow: false,\r\n className: 'grid-popupeditor popup-editor',\r\n customDismissCondition:\r\n e =>\r\n e.target.closest('.io-date-picker, .date-radio, .endless-date-radio, .single-calendar') === null,\r\n });\r\n\r\n editorView.render();\r\n}\r\n","/* istanbul ignore file */\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport Backbone from 'backbone';\r\n\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { IOSpendCapAmount } from '@bingads-webui-cc-react/io-controls';\r\nimport { DeterministicViewForBackBoneView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { withI18n } from '@bingads-webui-react/i18n-context';\r\n\r\nimport template from '../templates/customized-inline-edit-template.pug';\r\n\r\nexport class IOSpendCapAmountInlineEditView extends DeterministicView {\r\n initialize({\r\n i18n,\r\n spendCapAmountValue,\r\n }) {\r\n this.i18n = i18n;\r\n this.alwaysShowError = false;\r\n this.ioSpendCapAmount = new DeterministicViewForBackBoneView({\r\n view: new (Backbone.View.extend({\r\n initialize() {\r\n this.spendCapAmountValue = spendCapAmountValue;\r\n this.ioSpendCapAmountComponent = withI18n(IOSpendCapAmount, i18n);\r\n },\r\n render() {\r\n ReactDOM.render(\r\n React.createElement(this.ioSpendCapAmountComponent, {\r\n onChanged: ({ value, isValid }) => {\r\n this.spendCapAmountValue = value;\r\n this.isValid = isValid;\r\n this.render();\r\n },\r\n spendCapAmountValue: this.spendCapAmountValue,\r\n alwaysShowError: false,\r\n allowUnlimited: true,\r\n }),\r\n this.el\r\n );\r\n return this;\r\n },\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n Backbone.View.prototype.remove.call(this);\r\n },\r\n }))().render(),\r\n });\r\n this.setChild('subEditView', this.ioSpendCapAmount);\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .btn-primary': 'save',\r\n 'click .btn-default': 'cancel',\r\n };\r\n }\r\n\r\n get template() {\r\n return () => template({\r\n saveLabel: this.i18n.getString(_TL_('Save')),\r\n cancelLabel: this.i18n.getString(_TL_('Cancel')),\r\n });\r\n }\r\n\r\n save() {\r\n const { view: { isValid, spendCapAmountValue } = {} } = this.ioSpendCapAmount;\r\n if (isValid) {\r\n this.trigger('save', {\r\n newSpendCapAmountValue: spendCapAmountValue,\r\n });\r\n }\r\n }\r\n\r\n cancel() {\r\n this.trigger('close');\r\n }\r\n}\r\n","import { GridCustomizedPopupEditor } from '@bingads-webui-campaign/grid-customized-popup-editor';\r\nimport { IOSpendCapAmountInlineEditView } from './spend-cap-amount-react-view';\r\n\r\nexport function SpendCapAmountInlineEditableColumnPrompt({\r\n position,\r\n spendCapAmountValue,\r\n i18n,\r\n onSave,\r\n item,\r\n columnName,\r\n}) {\r\n const spendCapAmountEditorView = new IOSpendCapAmountInlineEditView({\r\n spendCapAmountValue,\r\n i18n,\r\n });\r\n\r\n spendCapAmountEditorView.on('save', ({ newSpendCapAmountValue }) => {\r\n onSave({\r\n columnName,\r\n updatedValue: newSpendCapAmountValue,\r\n item,\r\n });\r\n\r\n spendCapAmountEditorView.trigger('close');\r\n });\r\n\r\n const editorView = new GridCustomizedPopupEditor({\r\n editorView: spendCapAmountEditorView.render(),\r\n cellPosition: position,\r\n renderBelow: false,\r\n customDismissCondition: e =>\r\n e.target.closest('.unlimited-budget-input, .unlimited-radio, .budget-radio') === null,\r\n\r\n });\r\n\r\n editorView.render();\r\n}\r\n","import _ from 'underscore';\r\nimport {\r\n jsdataRawDataPlugin as commonJsdataRawDataPlugin,\r\n} from '@bingads-webui/projection-grid-js-data-raw-data';\r\n\r\nexport const jsdataRawDataPlugin = commonJsdataRawDataPlugin({\r\n getRawData: _.property('raw'),\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 (i18n, reason) {pug_mixins[\"helpLink\"] = pug_interp = function(topic, displayText, ariaLabelContext, fBindContext, fBindQuery){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nif (fBindContext) {\nif (fBindQuery) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"data-bind\", 'attr: { \"query\": \"help:\" + ' + topic + ', \"aria-label\": ' + ariaLabelContext + '+\" \"+\"' + displayText + '\" }', true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"query\", 'help:' + topic, true, true)+pug.attr(\"data-bind\", 'attr: { \"aria-label\": ' + ariaLabelContext + '+\" \"+\"' + displayText + '\" }', true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\n}\nelse {\nif (fBindQuery) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"data-bind\", 'attr: { \"query\": \"help:\" + ' + topic + '}', true, true)+pug.attr(\"aria-label\", (ariaLabelContext || '') + ' ' + displayText, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"query\", 'help:' + topic, true, true)+pug.attr(\"aria-label\", (ariaLabelContext || '') + ' ' + displayText, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\n}\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"bid-warning-content\\\"\\u003E\\u003Cdiv\\u003E\" + (pug.escape(null == (pug_interp = reason) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"set-bid\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroupsGrid_BidError_SetBidAction')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan class=\\\"seperator\\\"\\u003E|\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"helpLink\"]('53092', i18n.getString('LearnMoreLinkText'), i18n.getString('ProductGroupsGrid_BidError_SetBidAction'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"reason\" in locals_for_with?locals_for_with.reason:typeof reason!==\"undefined\"?reason: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[\"warningStatus\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"status_warning\\\"\"+pug.attr(\"title\", i18n.getString('ProductGroupsGrid_ColumnName_Warnings'), true, true)+pug.attr(\"aria-label\", i18n.getString('ProductGroupsGrid_ColumnName_Warnings'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n};\npug_mixins[\"warningStatus\"]();\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroupsGrid_BidError_PopupTitle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\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) {pug_html = pug_html + \"\\u003Cdiv class=\\\"doubleListBox layout-columns\\\"\\u003E\\u003Cdiv class=\\\"layout-columns-container\\\"\\u003E\\u003Cdiv class=\\\"layout-columns-element col-sm-7\\\"\\u003E\\u003Cdiv\\u003E\\u003Cdiv class=\\\"row form-group\\\" data-bind=\\\"visible: !customData.isBulkShown()\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv class=\\\"panel-form noPadding\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"grid\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" role=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"spritedimage grid-asc\\\" data-bind=\\\"visible: !customData.leftDescending.Name() && customData.leftSorted.Name()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"spritedimage grid-des\\\" data-bind=\\\"visible: customData.leftDescending.Name() && customData.leftSorted.Name()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"columnheader clickable\\\" data-bind=\\\"text: customData.leftColumnHeader, click: customData.sortLeftNameColumn, attr: {"aria-sort": customData.leftSorted.Name() ? (customData.leftDescending.Name() ? "descending" : "ascending") : "none"}\\\" tabindex=\\\"0\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"selector-column-header-last\\\"\\u003E\\u003Cspan class=\\\"spritedimage grid-asc\\\" data-bind=\\\"visible: !customData.leftDescending.Count() && customData.leftSorted.Count()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"spritedimage grid-des\\\" data-bind=\\\"visible: customData.leftDescending.Count() && customData.leftSorted.Count()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"columnheader clickable\\\" data-bind=\\\"text: customData.countHeader, click: customData.sortLeftCountColumn, attr: {"aria-sort": customData.leftSorted.Count() ? (customData.leftDescending.Count() ? "descending" : "ascending") : "none"}\\\" tabindex=\\\"1\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"selector-column-header\\\"\\u003E\\u003Cspan class=\\\"spritedimage grid-asc\\\" data-bind=\\\"visible: !customData.leftDescending.Clicks() && customData.leftSorted.Clicks()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"spritedimage grid-des\\\" data-bind=\\\"visible: customData.leftDescending.Clicks() && customData.leftSorted.Clicks()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"columnheader clickable\\\" data-bind=\\\"text: customData.clicksHeader, click: customData.sortLeftClicksColumn, attr: {"aria-sort": customData.leftSorted.Clicks() ? (customData.leftDescending.Clicks() ? "descending" : "ascending") : "none"}\\\" tabindex=\\\"2\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"selector-column-header\\\"\\u003E\\u003Cspan class=\\\"spritedimage grid-asc\\\" data-bind=\\\"visible: !customData.leftDescending.Impressions() && customData.leftSorted.Impressions()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"spritedimage grid-des\\\" data-bind=\\\"visible: customData.leftDescending.Impressions() && customData.leftSorted.Impressions()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"columnheader clickable\\\" data-bind=\\\"text: customData.impressionsHeader, click: customData.sortLeftImpressionsColumn, attr: {"aria-sort": customData.leftSorted.Impressions() ? (customData.leftDescending.Impressions() ? "descending" : "ascending") : "none"}\\\" tabindex=\\\"3\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"selector-column-header\\\"\\u003E\\u003Cspan class=\\\"spritedimage grid-asc\\\" data-bind=\\\"visible: !customData.leftDescending.Conversions() && customData.leftSorted.Conversions()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"spritedimage grid-des\\\" data-bind=\\\"visible: customData.leftDescending.Conversions() && customData.leftSorted.Conversions()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"columnheader clickable\\\" data-bind=\\\"text: customData.conversionsHeader, click: customData.sortLeftConversionsColumn, attr: {"aria-sort": customData.leftSorted.Conversions() ? (customData.leftDescending.Conversions() ? "descending" : "ascending") : "none"}\\\" tabindex=\\\"4\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body noPadding\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"dlb-selectAll clickable\\\"\"+\" data-bind=\\\"visible: features.selectAll, click: selectAll\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", i18n.getString('DoubleListBox_SelectAll'), true, true)) + \"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('DoubleListBox_SelectAll')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"enabled arrow-button\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"dlb-source\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"dlb-pager-container\\\" data-bind=\\\"visible: features.paging\\\"\\u003E\\u003Cdiv class=\\\"pager-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"showBulkPanel\\\" data-bind=\\\"visible: customData.isBulkAddEnabled\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroup_Subdivide_ShowBulkAdd')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row form-group\\\" data-bind=\\\"visible: customData.isBulkShown\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv class=\\\"panel-form noPadding\\\"\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"custom-values-header\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroup_Subdivide_TextAreaHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Ctextarea class=\\\"custom-values\\\" data-bind=\\\"value: customData.textAreaValue\\\"\\u003E\\u003C\\u002Ftextarea\\u003E\\u003Cinput\" + (\" class=\\\"add-custom-button btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.getString('ProductGroup_Subdivide_AddBulkValues'), true, true)) + \"\\u003E\\u003Cdiv class=\\\"list-link\\\"\\u003E\\u003Ca class=\\\"hideBulkPanel\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroup_Subdivide_HideBulkAdd')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"layout-columns-element col-sm-5\\\"\\u003E\\u003Cdiv class=\\\"row form-group non-empty\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv class=\\\"panel-form noPadding\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"grid\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" role=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"spritedimage grid-asc\\\" data-bind=\\\"visible: !customData.rightDescending.Name() && customData.rightSorted.Name()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"spritedimage grid-des\\\" data-bind=\\\"visible: customData.rightDescending.Name() && customData.rightSorted.Name()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"columnheader clickable\\\" data-bind=\\\"text: customData.rightColumnHeader, click: customData.sortRightNameColumn, attr: {"aria-sort": customData.rightSorted.Name() ? (customData.rightDescending.Name() ? "descending" : "ascending") : "none"}\\\" tabindex=\\\"5\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"selector-column-header-last\\\"\\u003E\\u003Cspan class=\\\"spritedimage grid-asc\\\" data-bind=\\\"visible: !customData.rightDescending.Count() && customData.rightSorted.Count()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"spritedimage grid-des\\\" data-bind=\\\"visible: customData.rightDescending.Count() && customData.rightSorted.Count()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"columnheader clickable\\\" data-bind=\\\"text: customData.countHeader, click: customData.sortRightCountColumn, attr: {"aria-sort": customData.rightSorted.Count() ? (customData.rightDescending.Count() ? "descending" : "ascending") : "none"}\\\" tabindex=\\\"6\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body noPadding\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"dlb-deselectAll clickable\\\"\"+\" data-bind=\\\"visible: features.deselectAll, click: deselectAll\\\" tabindex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", i18n.getString('DoubleListBox_DeselectAll'), true, true)) + \"\\u003E\\u003Ca class=\\\"remove arrow-button\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('DoubleListBox_DeselectAll')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"dlb-selected\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"dlb-pager-container\\\" data-bind=\\\"visible: features.paging\\\"\\u003E\\u003Cdiv class=\\\"pager-selected-container\\\"\\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;pug_html = pug_html + \"\\u003Cspan\\u003E#:data.Name#\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"selector-column-value\\\"\\u003E#:data.Count#\\u003C\\u002Fspan\\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) {pug_html = pug_html + \"\\u003Cdiv class=\\\"dlbItem\\\" data-id=\\\"#:_uniqueId#\\\" id=\\\"productgroups-dlb-selected-#:_uniqueId#\\\"\\u003E\\u003Ca\" + (\" class=\\\"closeimage remove a11y-k-listview-button selectedAction-deselect\\\"\"+\" href=\\\"javascript:void(0);\\\" tabindex=\\\"-1\\\" role=\\\"button\\\"\"+pug.attr(\"title\", i18n.getString('DoubleListBox_Deselect'), true, true)+pug.attr(\"aria-label\", i18n.getString('DoubleListBox_Deselect'), true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\\u003Cdiv class=\\\"dlbItem-content\\\"\\u003E\\u003Cspan\\u003E#:data.Name#\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"selector-column-value\\\"\\u003E#:data.Count#\\u003C\\u002Fspan\\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;pug_html = pug_html + \"\\u003Cspan\\u003E#:data.Name#\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"selector-column-value\\\"\\u003E#:data.Count#\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"selector-column-value\\\"\\u003E#:data.Clicks#\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"selector-column-value\\\"\\u003E#:data.Impressions#\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"selector-column-value\\\"\\u003E#:data.Conversions#\\u003C\\u002Fspan\\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) {pug_html = pug_html + \"# var isSelected = typeof(selected) !== 'undefined' && selected === 'selected'; #\\u003Cdiv class=\\\"dlbItem #:selected# #:disabled#\\\" data-id=\\\"#:_uniqueId#\\\" id=\\\"default-dlb-source-com-#:_uniqueId#\\\" role=\\\"option\\\" aria-selected=\\\"#if (isSelected) {#true#} else{#false#}#\\\" aria-disabled=\\\"#if (isSelected) {#true#} else{#false#}#\\\"\\u003E\\u003Cdiv class=\\\"dlbItem-actions\\\"\\u003E\\u003Ca\" + (\" class=\\\"arrow-button a11y-k-listview-button sourceAction-select #if (isSelected) {# disabled #} else {# enabled #}#\\\"\"+\" href=\\\"javascript:void(0);\\\" tabindex=\\\"-1\\\"\"+pug.attr(\"aria-label\", i18n.get('DoubleListBox_Select'), true, true)+\" role=\\\"button\\\"\"+pug.attr(\"title\", i18n.get('DoubleListBox_Select'), true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"dlbItem-content\\\"\\u003E\\u003C!--content--\\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 (value) {if (value.name) {\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"href\", value.href, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value.name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp));\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 (bidString, i18n, isAggregateRow, isAutoBidding, isBidLandscapeAvailable, isExcluded, isLeaf) {pug_html = pug_html + \"\\u003Cdiv class=\\\"grid-bid-number\\\"\\u003E\";\nif (!isAggregateRow) {\nif (isLeaf) {\nif (isExcluded) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroupsGrid_Bid_Excluded')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\nif (isAutoBidding) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroupsGrid_Bid_Automatic')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv\\u003E\" + (pug.escape(null == (pug_interp = bidString) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\nif (isBidLandscapeAvailable) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"bidlandscape_icon spritedimagealign spritedimage\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}\n}\n}\nelse {\npug_html = pug_html + \"\\u003Cspan\\u003E-\\u003C\\u002Fspan\\u003E\";\n}\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"bidString\" in locals_for_with?locals_for_with.bidString:typeof bidString!==\"undefined\"?bidString:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isAggregateRow\" in locals_for_with?locals_for_with.isAggregateRow:typeof isAggregateRow!==\"undefined\"?isAggregateRow:undefined,\"isAutoBidding\" in locals_for_with?locals_for_with.isAutoBidding:typeof isAutoBidding!==\"undefined\"?isAutoBidding:undefined,\"isBidLandscapeAvailable\" in locals_for_with?locals_for_with.isBidLandscapeAvailable:typeof isBidLandscapeAvailable!==\"undefined\"?isBidLandscapeAvailable:undefined,\"isExcluded\" in locals_for_with?locals_for_with.isExcluded:typeof isExcluded!==\"undefined\"?isExcluded:undefined,\"isLeaf\" in locals_for_with?locals_for_with.isLeaf:typeof isLeaf!==\"undefined\"?isLeaf: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.name) {\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"href\", value.href, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value.name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp));\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 (attributeText, depth, hasChildren, i18n, isExpanded, isRoot, showSelectorIcon, total) {pug_mixins[\"content\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"style\", pug.style(textPadding), true, true)) + \"\\u003E\\u003Ca\" + (\" class=\\\"product-group-name-container\\\"\"+\" href=\\\"#\\\"\"+pug.attr(\"aria-label\", i18n.getString('ProductGroupsGrid_DetailsIcon_Label'), true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = attributeText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cdiv class=\\\"productgroup-icon-container\\\"\\u003E\";\nif (showSelectorIcon) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"productgroup-row-icon\",\"clickable\",\"show-product-selector\",hasChildren ? 'grid-edit-icon' : 'add_icon'], [false,false,false,true]), false, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", hasChildren ? i18n.getString('ProductGroupsGrid_EditIcon_Label') : i18n.getString('ProductGroupsGrid_AddIcon_Label'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\nif (total) {\npug_html = pug_html + (pug.escape(null == (pug_interp = total) ? \"\" : pug_interp));\n}\nif (!total) {\nvar textPadding = isRoot ? '' : \"padding-left:\" + (( depth- 1 ) * 10 + 12) + \"px\"\nvar toggleIconMargin = \"margin-left:\" + (depth - 1) * 10 + \"px\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-cell product-condition-cell\\\"\\u003E\";\nif (hasChildren) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"clickable\",\"toggle-row\",isExpanded ? 'grid-expanded grid-expanded-icon' : 'grid-expandable grid-expand-icon'], [false,false,true]), false, true)+pug.attr(\"style\", pug.style(toggleIconMargin), true, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", isExpanded ? i18n.getString('ProductGroupsGrid_ExpandedIcon_Label') : i18n.getString('ProductGroupsGrid_ExpandableIcon_Label'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"content\"]();\n}\nelse {\npug_mixins[\"content\"]();\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"attributeText\" in locals_for_with?locals_for_with.attributeText:typeof attributeText!==\"undefined\"?attributeText:undefined,\"depth\" in locals_for_with?locals_for_with.depth:typeof depth!==\"undefined\"?depth:undefined,\"hasChildren\" in locals_for_with?locals_for_with.hasChildren:typeof hasChildren!==\"undefined\"?hasChildren:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isExpanded\" in locals_for_with?locals_for_with.isExpanded:typeof isExpanded!==\"undefined\"?isExpanded:undefined,\"isRoot\" in locals_for_with?locals_for_with.isRoot:typeof isRoot!==\"undefined\"?isRoot:undefined,\"showSelectorIcon\" in locals_for_with?locals_for_with.showSelectorIcon:typeof showSelectorIcon!==\"undefined\"?showSelectorIcon:undefined,\"total\" in locals_for_with?locals_for_with.total:typeof total!==\"undefined\"?total: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 ($total, Attribute, Path, hasChildren, i18n, showSelectorIcon) {pug_mixins[\"content\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\\u003E\\u003Cspan class=\\\"flatten-path\\\"\\u003E\" + (pug.escape(null == (pug_interp = Path) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Ca\" + (\" class=\\\"product-group-name-container\\\"\"+\" href=\\\"#\\\"\"+pug.attr(\"aria-label\", i18n.getString('ProductGroupsGrid_DetailsIcon_Label'), true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = Attribute) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cdiv class=\\\"productgroup-icon-container\\\"\\u003E\";\nif (showSelectorIcon) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"productgroup-row-icon\",\"clickable\",\"show-product-selector\",hasChildren ? 'grid-edit-icon' : 'add_icon'], [false,false,false,true]), false, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", hasChildren ? i18n.getString('ProductGroupsGrid_EditIcon_Label') : i18n.getString('ProductGroupsGrid_AddIcon_Label'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\nif ($total) {\npug_html = pug_html + (pug.escape(null == (pug_interp = $total.text) ? \"\" : pug_interp));\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-cell product-condition-cell\\\"\\u003E\";\npug_mixins[\"content\"]();\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"$total\" in locals_for_with?locals_for_with.$total:typeof $total!==\"undefined\"?$total:undefined,\"Attribute\" in locals_for_with?locals_for_with.Attribute:typeof Attribute!==\"undefined\"?Attribute:undefined,\"Path\" in locals_for_with?locals_for_with.Path:typeof Path!==\"undefined\"?Path:undefined,\"hasChildren\" in locals_for_with?locals_for_with.hasChildren:typeof hasChildren!==\"undefined\"?hasChildren:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"showSelectorIcon\" in locals_for_with?locals_for_with.showSelectorIcon:typeof showSelectorIcon!==\"undefined\"?showSelectorIcon: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 (hasWarning, i18n, isAggregateRow, warningCount) {pug_mixins[\"warningStatus\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"status_warning\\\"\"+pug.attr(\"title\", i18n.getString('ProductGroupsGrid_ColumnName_Warnings'), true, true)+pug.attr(\"aria-label\", i18n.getString('ProductGroupsGrid_ColumnName_Warnings'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-bid-warning\\\"\\u003E\";\nif (!isAggregateRow) {\nif (hasWarning) {\npug_mixins[\"warningStatus\"]();\npug_html = pug_html + \"\\u003Cspan class=\\\"warning-count\\\"\\u003E\" + (pug.escape(null == (pug_interp = warningCount) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\" + (\" class=\\\"status_icon spritedimagealign productgroup-row-icon clickable show-product-warning pull-right\\\"\"+\" tabindex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", i18n.getString('ProductGroupsGrid_LowBid_DetailsIcon'), true, true)+pug.attr(\"title\", i18n.getString('ProductGroupsGrid_LowBid_DetailsIcon'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"hasWarning\" in locals_for_with?locals_for_with.hasWarning:typeof hasWarning!==\"undefined\"?hasWarning:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isAggregateRow\" in locals_for_with?locals_for_with.isAggregateRow:typeof isAggregateRow!==\"undefined\"?isAggregateRow:undefined,\"warningCount\" in locals_for_with?locals_for_with.warningCount:typeof warningCount!==\"undefined\"?warningCount: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 (options, placeholderText) {if ((placeholderText)) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-nodata\\\"\\u003E\" + (pug.escape(null == (pug_interp = placeholderText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif ((options.templateOptions.shouldShowCreateRootLink)) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-nodata\\\"\\u003E\" + (pug.escape(null == (pug_interp = options.templateOptions.i18n.getString('ProductGroupsGrid_NoProductWarningMsg')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"create-root-node\\\"\\u003E\" + (pug.escape(null == (pug_interp = options.templateOptions.i18n.getString('ProductGroupsGrid_NoProductWarningLink')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-nodata\\\"\\u003E\" + (pug.escape(null == (pug_interp = options.templateOptions.i18n.getString('ProductGroupsGrid_NoProductWarningMsg_Common')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"options\" in locals_for_with?locals_for_with.options:typeof options!==\"undefined\"?options:undefined,\"placeholderText\" in locals_for_with?locals_for_with.placeholderText:typeof placeholderText!==\"undefined\"?placeholderText: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 (currentAttribute, currentOperand, i18n, isEverythingElseRow, partitionTrail) {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)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003Cdiv class=\\\"productgroup-detail\\\"\\u003E\\u003Cdiv class=\\\"partition-trail\\\"\\u003E\" + (pug.escape(null == (pug_interp = partitionTrail) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cp class=\\\"current-operand\\\"\\u003E\" + (pug.escape(null == (pug_interp = currentOperand) ? \"\" : pug_interp)) + \"\\u003C\\u002Fp\\u003E\\u003Cp class=\\\"current-attribute\\\"\\u003E\" + (pug.escape(null == (pug_interp = currentAttribute) ? \"\" : pug_interp)) + \"\\u003C\\u002Fp\\u003E\\u003Chr\\u003E\\u003C!-- ko ifnot: showLimitExceededWarning--\\u003E\\u003Cp class=\\\"product-sample-description\\\" data-bind=\\\"html: offerDescription\\\"\\u003E\\u003C\\u002Fp\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!-- ko if: showLimitExceededWarning--\\u003E\\u003Cdiv class=\\\"inline-warning alert-warning\\\"\\u003E\" + (null == (pug_interp = i18n.getString('ProductOfferCountWarningInTab')) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C!--\\u002Fko--\\u003E\\u003Ctable data-bind=\\\"if: hasOffer\\\"\\u003E\\u003Cthead\\u003E\\u003Ctr\\u003E\\u003Cth\\u003E\\u003Cu\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductsGrid_Column_Id')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fu\\u003E\\u003C\\u002Fth\\u003E\\u003Cth\\u003E\\u003Cu\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductsGrid_Column_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fu\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: sampleOffers\\\"\\u003E\\u003Ctr\\u003E\\u003Ctd\\u003E\\u003Cdiv class=\\\"product-sample-column product-sample-id\\\" data-bind=\\\"text: Id, attr: { title: Id }\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003Ctd\\u003E\\u003Cdiv class=\\\"product-sample-column product-sample-title\\\" data-bind=\\\"text: Title, attr: { title: Title }\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\";\nif (!isEverythingElseRow) {\npug_html = pug_html + \"\\u003Cp class=\\\"view-full-product\\\" data-bind=\\\"if: hasOffer\\\"\\u003E\\u003Ca href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ViewFullListProduct')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fp\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"currentAttribute\" in locals_for_with?locals_for_with.currentAttribute:typeof currentAttribute!==\"undefined\"?currentAttribute:undefined,\"currentOperand\" in locals_for_with?locals_for_with.currentOperand:typeof currentOperand!==\"undefined\"?currentOperand:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isEverythingElseRow\" in locals_for_with?locals_for_with.isEverythingElseRow:typeof isEverythingElseRow!==\"undefined\"?isEverythingElseRow:undefined,\"partitionTrail\" in locals_for_with?locals_for_with.partitionTrail:typeof partitionTrail!==\"undefined\"?partitionTrail: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 (bidProperty, i18n, i18nGlobal, isAutoBidding, isBidBoost, isBidLessThan5CentsEnabled, percentSymbol) {pug_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\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"koError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"data-bind\", 'if: ' + item + '().length > 0, attr: {\"aria-hidden\": ' + item + '().length == 0}', true, true)+pug.attr(\"id\", id ? id : item, true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cdiv\" + (\" class=\\\"error\\\"\"+pug.attr(\"data-bind\", 'html: ' + item, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_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)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"popover-edit-bid\\\"\\u003E\\u003Cspan\\u003E\\u003Clabel class=\\\"radio-inline\\\"\\u003E\\u003Cinput type=\\\"radio\\\" name=\\\"IsExcluded\\\" value=\\\"true\\\" data-bind=\\\"checked: IsExcluded.string\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroupsGrid_Bid_Excluded')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\nif (isAutoBidding) {\npug_html = pug_html + \"\\u003Clabel class=\\\"radio-inline product-group-inline-edit-bid\\\"\\u003E\\u003Cinput type=\\\"radio\\\" name=\\\"IsAutoBidding\\\" value=\\\"false\\\" data-bind=\\\"checked: IsExcluded.string\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroupsGrid_Bid_Automatic')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Clabel class=\\\"radio-inline product-group-inline-edit-bid\\\"\\u003E\\u003Cinput type=\\\"radio\\\" name=\\\"IsExcluded\\\" value=\\\"false\\\" data-bind=\\\"checked: IsExcluded.string\\\"\\u003E\\u003Cinput\" + (\" class=\\\"product-group-bid\\\"\"+pug.attr(\"data-bind\", 'disable: IsExcluded, value: ' + bidProperty + '.string, valueUpdate: \"input\", attr: {\"aria-invalid\": !isBidValid()}', true, true)+\" aria-describedby=\\\"EditBidClientError\\\"\") + \"\\u003E\";\nif (isBidBoost) {\npug_html = pug_html + \"\\u003Cspan class=\\\"bidBoost-percent\\\"\\u003E\" + (pug.escape(null == (pug_interp = percentSymbol) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\\u003Cbutton class=\\\"save btn btn-primary inline-edit-save\\\" type=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18nGlobal.get('Button_Save')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"cancel btn btn-default inline-edit-cancel\\\" type=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18nGlobal.get('Button_Cancel')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\npug_mixins[\"koValidationError\"](bidProperty, 'EditBidClientError');\npug_mixins[\"koError\"]('requiredMessage', 'EditBidClientError');\nif (isBidLessThan5CentsEnabled) {\npug_mixins[\"koError\"]('warningMessage', 'EditBidClientError');\n}\npug_mixins[\"koErrors\"]('KoErrors', 'error');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"bidProperty\" in locals_for_with?locals_for_with.bidProperty:typeof bidProperty!==\"undefined\"?bidProperty: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,\"isAutoBidding\" in locals_for_with?locals_for_with.isAutoBidding:typeof isAutoBidding!==\"undefined\"?isAutoBidding:undefined,\"isBidBoost\" in locals_for_with?locals_for_with.isBidBoost:typeof isBidBoost!==\"undefined\"?isBidBoost:undefined,\"isBidLessThan5CentsEnabled\" in locals_for_with?locals_for_with.isBidLessThan5CentsEnabled:typeof isBidLessThan5CentsEnabled!==\"undefined\"?isBidLessThan5CentsEnabled:undefined,\"percentSymbol\" in locals_for_with?locals_for_with.percentSymbol:typeof percentSymbol!==\"undefined\"?percentSymbol: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) {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)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003Cdiv id=\\\"productgroups-subdivider\\\"\\u003E\\u003Cform\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cspan class=\\\"subdivider-title\\\" id=\\\"productGroupSelectorHeader\\\" data-bind=\\\"text: headerText\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cselect class=\\\"dimension-selector\\\" data-bind=\\\"options: availableDimensions, optionsText: 'DisplayName', optionsValue: 'Id', value: selectedDimensionId\\\"\\u003E\\u003C\\u002Fselect\\u003E\\u003C!-- ko if: showLimitExceededWarning--\\u003E\\u003Cdiv class=\\\"inline-warning alert-warning\\\"\\u003E\" + (null == (pug_interp = i18n.getString('ProductOfferCountWarningInTab')) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv id=\\\"double-list-box\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\"\\u003E\\u003Cdiv class=\\\"tips-for-dash\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18nGlobal.getString('ProductGroup_Subdivide_Tips_For_Dash')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cinput\" + (\" class=\\\"save-button btn btn-primary\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18nGlobal.getString('Button_Save'), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"cancel-button btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18nGlobal.getString('Button_Cancel'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fform\\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));;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, reason) {pug_mixins[\"helpLink\"] = pug_interp = function(topic, displayText, ariaLabelContext, fBindContext, fBindQuery){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nif (fBindContext) {\nif (fBindQuery) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"data-bind\", 'attr: { \"query\": \"help:\" + ' + topic + ', \"aria-label\": ' + ariaLabelContext + '+\" \"+\"' + displayText + '\" }', true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"query\", 'help:' + topic, true, true)+pug.attr(\"data-bind\", 'attr: { \"aria-label\": ' + ariaLabelContext + '+\" \"+\"' + displayText + '\" }', true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\n}\nelse {\nif (fBindQuery) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"data-bind\", 'attr: { \"query\": \"help:\" + ' + topic + '}', true, true)+pug.attr(\"aria-label\", (ariaLabelContext || '') + ' ' + displayText, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"HelpTopic\\\"\"+\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"query\", 'help:' + topic, true, true)+pug.attr(\"aria-label\", (ariaLabelContext || '') + ' ' + displayText, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\n}\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"bid-warning-content\\\"\\u003E\\u003Cdiv\\u003E\" + (pug.escape(null == (pug_interp = reason) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"set-bid\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroupsGrid_BidError_SetBidAction')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cspan class=\\\"seperator\\\"\\u003E|\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"helpLink\"]('53092', i18n.getString('LearnMoreLinkText'), i18n.getString('ProductGroupsGrid_BidError_SetBidAction'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"reason\" in locals_for_with?locals_for_with.reason:typeof reason!==\"undefined\"?reason: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[\"warningStatus\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"status_warning iconba iconba-Warning\\\"\"+pug.attr(\"title\", i18n.getString('ProductGroupsGrid_ColumnName_Warnings'), true, true)+pug.attr(\"aria-label\", i18n.getString('ProductGroupsGrid_ColumnName_Warnings'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n};\npug_mixins[\"warningStatus\"]();\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroupsGrid_BidError_PopupTitle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\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 (value) {if (value.name) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"scope-navigator\\\"\"+pug.attr(\"href\", value.href, true, true)+pug.attr(\"data-campaignid\", value.cmpid, true, true)+pug.attr(\"data-adgroupid\", value.adgid, true, true)+pug.attr(\"aria-label\", value.ariaLabel, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value.name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp));\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 (bidString, i18n, isAggregateRow, isAutoBidding, isBidLandscapeAvailable, isExcluded, isLeaf) {pug_html = pug_html + \"\\u003Cdiv class=\\\"grid-bid-number\\\"\\u003E\";\nif (!isAggregateRow) {\nif (isLeaf) {\nif (isExcluded) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroupsGrid_Bid_Excluded')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\nif (isAutoBidding) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroupsGrid_Bid_Automatic')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv\\u003E\" + (pug.escape(null == (pug_interp = bidString) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\nif (isBidLandscapeAvailable) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"iconba iconba-Financial bidlandscape_icon spritedimagealign spritedimage clickable\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}\n}\n}\nelse {\npug_html = pug_html + \"\\u003Cspan\\u003E-\\u003C\\u002Fspan\\u003E\";\n}\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"bidString\" in locals_for_with?locals_for_with.bidString:typeof bidString!==\"undefined\"?bidString:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isAggregateRow\" in locals_for_with?locals_for_with.isAggregateRow:typeof isAggregateRow!==\"undefined\"?isAggregateRow:undefined,\"isAutoBidding\" in locals_for_with?locals_for_with.isAutoBidding:typeof isAutoBidding!==\"undefined\"?isAutoBidding:undefined,\"isBidLandscapeAvailable\" in locals_for_with?locals_for_with.isBidLandscapeAvailable:typeof isBidLandscapeAvailable!==\"undefined\"?isBidLandscapeAvailable:undefined,\"isExcluded\" in locals_for_with?locals_for_with.isExcluded:typeof isExcluded!==\"undefined\"?isExcluded:undefined,\"isLeaf\" in locals_for_with?locals_for_with.isLeaf:typeof isLeaf!==\"undefined\"?isLeaf: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.name) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"scope-navigator\\\"\"+pug.attr(\"href\", value.href, true, true)+pug.attr(\"data-campaignid\", value.cmpid, true, true)+pug.attr(\"aria-label\", value.ariaLabel, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value.name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp));\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 (attributeText, depth, hasChildren, i18n, isExpanded, showSelectorIcon, total) {pug_mixins[\"content\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"style\", pug.style(textPadding), true, true)) + \"\\u003E\\u003Ca\" + (\" class=\\\"product-group-name-container\\\"\"+\" href=\\\"#\\\"\"+pug.attr(\"aria-label\", i18n.getString('ProductGroupsGrid_DetailsIcon_Label'), true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = attributeText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cdiv class=\\\"productgroup-icon-container\\\"\\u003E\";\nif (showSelectorIcon) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"productgroup-row-icon\",\"clickable\",\"show-product-selector\",hasChildren ? 'grid-edit-icon' : 'add_icon'], [false,false,false,true]), false, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", hasChildren ? i18n.getString('ProductGroupsGrid_EditIcon_Label') : i18n.getString('ProductGroupsGrid_AddIcon_Label'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\nif (total) {\npug_html = pug_html + (pug.escape(null == (pug_interp = total) ? \"\" : pug_interp));\n}\nif (!total) {\nvar textPadding = \"padding-left:\" + (( depth- 1 ) * 10 + 19) + \"px\"\nvar toggleIconMargin = \"margin-left:\" + (depth - 1) * 10 + \"px; font-family:'MsAds MDL2 Assets'\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-cell product-condition-cell\\\"\\u003E\";\nif (hasChildren) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"clickable\",\"toggle-row\",isExpanded ? 'grid-expanded grid-expanded-icon' : 'grid-expandable grid-expand-icon'], [false,false,true]), false, true)+pug.attr(\"style\", pug.style(toggleIconMargin), true, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", isExpanded ? i18n.getString('ProductGroupsGrid_ExpandedIcon_Label') : i18n.getString('ProductGroupsGrid_ExpandableIcon_Label'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"content\"]();\n}\nelse {\npug_mixins[\"content\"]();\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"attributeText\" in locals_for_with?locals_for_with.attributeText:typeof attributeText!==\"undefined\"?attributeText:undefined,\"depth\" in locals_for_with?locals_for_with.depth:typeof depth!==\"undefined\"?depth:undefined,\"hasChildren\" in locals_for_with?locals_for_with.hasChildren:typeof hasChildren!==\"undefined\"?hasChildren:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isExpanded\" in locals_for_with?locals_for_with.isExpanded:typeof isExpanded!==\"undefined\"?isExpanded:undefined,\"showSelectorIcon\" in locals_for_with?locals_for_with.showSelectorIcon:typeof showSelectorIcon!==\"undefined\"?showSelectorIcon:undefined,\"total\" in locals_for_with?locals_for_with.total:typeof total!==\"undefined\"?total: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 ($total, Attribute, Path, hasChildren, i18n, showSelectorIcon) {pug_mixins[\"content\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\\u003E\\u003Cspan class=\\\"flatten-path\\\"\\u003E\" + (pug.escape(null == (pug_interp = Path) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Ca\" + (\" class=\\\"product-group-name-container\\\"\"+\" href=\\\"#\\\"\"+pug.attr(\"aria-label\", i18n.getString('ProductGroupsGrid_DetailsIcon_Label'), true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = Attribute) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Cdiv class=\\\"productgroup-icon-container\\\"\\u003E\";\nif (showSelectorIcon) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"productgroup-row-icon\",\"clickable\",\"show-product-selector\",hasChildren ? 'grid-edit-icon' : 'add_icon'], [false,false,false,true]), false, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", hasChildren ? i18n.getString('ProductGroupsGrid_EditIcon_Label') : i18n.getString('ProductGroupsGrid_AddIcon_Label'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\nif ($total) {\npug_html = pug_html + (pug.escape(null == (pug_interp = $total.text) ? \"\" : pug_interp));\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-cell product-condition-cell\\\"\\u003E\";\npug_mixins[\"content\"]();\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"$total\" in locals_for_with?locals_for_with.$total:typeof $total!==\"undefined\"?$total:undefined,\"Attribute\" in locals_for_with?locals_for_with.Attribute:typeof Attribute!==\"undefined\"?Attribute:undefined,\"Path\" in locals_for_with?locals_for_with.Path:typeof Path!==\"undefined\"?Path:undefined,\"hasChildren\" in locals_for_with?locals_for_with.hasChildren:typeof hasChildren!==\"undefined\"?hasChildren:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"showSelectorIcon\" in locals_for_with?locals_for_with.showSelectorIcon:typeof showSelectorIcon!==\"undefined\"?showSelectorIcon: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 (hasWarning, i18n, isAggregateRow, warningCount) {pug_mixins[\"warningStatus\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"status_warning iconba iconba-Warning\\\"\"+pug.attr(\"title\", i18n.getString('ProductGroupsGrid_ColumnName_Warnings'), true, true)+pug.attr(\"aria-label\", i18n.getString('ProductGroupsGrid_ColumnName_Warnings'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-bid-warning\\\"\\u003E\";\nif (!isAggregateRow) {\nif (hasWarning) {\npug_mixins[\"warningStatus\"]();\npug_html = pug_html + \"\\u003Cspan class=\\\"warning-count\\\"\\u003E\" + (pug.escape(null == (pug_interp = warningCount) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\" + (\" class=\\\"status_icon spritedimagealign productgroup-row-icon clickable show-product-warning pull-right\\\"\"+\" tabindex=\\\"0\\\" role=\\\"button\\\"\"+pug.attr(\"aria-label\", i18n.getString('ProductGroupsGrid_LowBid_DetailsIcon'), true, true)+pug.attr(\"title\", i18n.getString('ProductGroupsGrid_LowBid_DetailsIcon'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"hasWarning\" in locals_for_with?locals_for_with.hasWarning:typeof hasWarning!==\"undefined\"?hasWarning:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isAggregateRow\" in locals_for_with?locals_for_with.isAggregateRow:typeof isAggregateRow!==\"undefined\"?isAggregateRow:undefined,\"warningCount\" in locals_for_with?locals_for_with.warningCount:typeof warningCount!==\"undefined\"?warningCount: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 (options, placeholderText) {if ((placeholderText)) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-nodata\\\"\\u003E\" + (pug.escape(null == (pug_interp = placeholderText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif ((options.templateOptions.shouldShowCreateRootLink)) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-nodata\\\"\\u003E\" + (pug.escape(null == (pug_interp = options.templateOptions.i18n.getString('ProductGroupsGrid_NoProductWarningMsg')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"create-root-node\\\"\\u003E\" + (pug.escape(null == (pug_interp = options.templateOptions.i18n.getString('ProductGroupsGrid_NoProductWarningLink')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-nodata\\\"\\u003E\" + (pug.escape(null == (pug_interp = options.templateOptions.i18n.getString('ProductGroupsGrid_NoProductWarningMsg_Common')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"options\" in locals_for_with?locals_for_with.options:typeof options!==\"undefined\"?options:undefined,\"placeholderText\" in locals_for_with?locals_for_with.placeholderText:typeof placeholderText!==\"undefined\"?placeholderText: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 (currentAttribute, i18n, isEverythingElseRow, partitionTrail) {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)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"koErrors\"]();\npug_html = pug_html + \"\\u003Cdiv class=\\\"productgroup-detail\\\"\\u003E\\u003Cdiv class=\\\"partition-trail\\\"\\u003E\" + (pug.escape(null == (pug_interp = partitionTrail) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cp class=\\\"current-operand\\\" data-bind=\\\"text: currentOperand\\\"\\u003E\\u003C\\u002Fp\\u003E\\u003Cp class=\\\"current-attribute\\\"\\u003E\" + (pug.escape(null == (pug_interp = currentAttribute) ? \"\" : pug_interp)) + \"\\u003C\\u002Fp\\u003E\\u003C!-- ko ifnot: showLimitExceededWarning--\\u003E\\u003Cp class=\\\"product-sample-description\\\" data-bind=\\\"html: offerDescription\\\"\\u003E\\u003C\\u002Fp\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!-- ko if: showLimitExceededWarning--\\u003E\\u003Cdiv class=\\\"inline-warning alert-warning\\\"\\u003E\" + (null == (pug_interp = i18n.getString('ProductOfferCountWarningInTab')) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C!--\\u002Fko--\\u003E\\u003Ctable data-bind=\\\"if: hasOffer\\\"\\u003E\\u003Ctbody data-bind=\\\"foreach: sampleOffers\\\"\\u003E\\u003Ctr\\u003E\\u003Ctd\\u003E\\u003Cdiv class=\\\"product-sample-column product-sample-id\\\" data-bind=\\\"text: Id, attr: { title: Id }\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003Ctd\\u003E\\u003Cdiv class=\\\"product-sample-column product-sample-title\\\" data-bind=\\\"text: '('+$data.Title+')', attr: { title: Title }\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\";\nif (!isEverythingElseRow) {\npug_html = pug_html + \"\\u003Cp class=\\\"view-full-product\\\" data-bind=\\\"if: hasOffer\\\"\\u003E\\u003Ca href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ViewFullListProduct')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fp\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"currentAttribute\" in locals_for_with?locals_for_with.currentAttribute:typeof currentAttribute!==\"undefined\"?currentAttribute:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isEverythingElseRow\" in locals_for_with?locals_for_with.isEverythingElseRow:typeof isEverythingElseRow!==\"undefined\"?isEverythingElseRow:undefined,\"partitionTrail\" in locals_for_with?locals_for_with.partitionTrail:typeof partitionTrail!==\"undefined\"?partitionTrail: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 (bidProperty, defaultMSStoreMinSuggestionBid, i18n, i18nGlobal, isAutoBidding, isBidBoost, isBidLessThan5CentsEnabled, percentSymbol) {pug_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\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_mixins[\"koError\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"data-bind\", 'if: ' + item + '().length > 0, attr: {\"aria-hidden\": ' + item + '().length == 0}', true, true)+pug.attr(\"id\", id ? id : item, true, true)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cdiv\" + (\" class=\\\"error\\\"\"+pug.attr(\"data-bind\", 'html: ' + item, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_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)+\" role=\\\"alert\\\"\") + \"\\u003E\\u003Cli data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"popover-edit-bid\\\"\\u003E\\u003Cspan\\u003E\\u003Clabel class=\\\"radio-inline\\\"\\u003E\\u003Cinput type=\\\"radio\\\" name=\\\"IsExcluded\\\" value=\\\"true\\\" data-bind=\\\"checked: IsExcluded.string\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroupsGrid_Bid_Excluded')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\nif (isAutoBidding) {\npug_html = pug_html + \"\\u003Clabel class=\\\"radio-inline product-group-inline-edit-bid\\\"\\u003E\\u003Cinput type=\\\"radio\\\" name=\\\"IsAutoBidding\\\" value=\\\"false\\\" data-bind=\\\"checked: IsExcluded.string\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('ProductGroupsGrid_Bid_Automatic')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Clabel class=\\\"radio-inline product-group-inline-edit-bid\\\"\\u003E\\u003Cinput type=\\\"radio\\\" name=\\\"IsExcluded\\\" value=\\\"false\\\" data-bind=\\\"checked: IsExcluded.string\\\"\\u003E\\u003Cinput\" + (\" class=\\\"product-group-bid\\\"\"+pug.attr(\"data-bind\", 'disable: IsExcluded, value: ' + bidProperty + '.string, valueUpdate: \"input\", attr: {\"aria-invalid\": !isBidValid()}', true, true)+\" aria-describedby=\\\"EditBidClientError\\\"\") + \"\\u003E\";\nif (isBidBoost) {\npug_html = pug_html + \"\\u003Cspan class=\\\"bidBoost-percent\\\"\\u003E\" + (pug.escape(null == (pug_interp = percentSymbol) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"alert alert-info bidWarning\\\" data-bind=\\\"visible: showLowerThanMinSuggestionBidWarning()\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (null == (pug_interp = i18nGlobal.get('MinSuggestionBidWarning', { minSuggestionBid: defaultMSStoreMinSuggestionBid })) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cbutton class=\\\"save btn btn-primary inline-edit-save\\\" type=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18nGlobal.get('Button_Save')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"cancel btn btn-default inline-edit-cancel\\\" type=\\\"button\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18nGlobal.get('Button_Cancel')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\npug_mixins[\"koValidationError\"](bidProperty, 'EditBidClientError');\npug_mixins[\"koError\"]('requiredMessage', 'EditBidClientError');\nif (isBidLessThan5CentsEnabled) {\npug_mixins[\"koError\"]('warningMessage', 'EditBidClientError');\n}\npug_mixins[\"koErrors\"]('KoErrors', 'error');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"bidProperty\" in locals_for_with?locals_for_with.bidProperty:typeof bidProperty!==\"undefined\"?bidProperty:undefined,\"defaultMSStoreMinSuggestionBid\" in locals_for_with?locals_for_with.defaultMSStoreMinSuggestionBid:typeof defaultMSStoreMinSuggestionBid!==\"undefined\"?defaultMSStoreMinSuggestionBid: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,\"isAutoBidding\" in locals_for_with?locals_for_with.isAutoBidding:typeof isAutoBidding!==\"undefined\"?isAutoBidding:undefined,\"isBidBoost\" in locals_for_with?locals_for_with.isBidBoost:typeof isBidBoost!==\"undefined\"?isBidBoost:undefined,\"isBidLessThan5CentsEnabled\" in locals_for_with?locals_for_with.isBidLessThan5CentsEnabled:typeof isBidLessThan5CentsEnabled!==\"undefined\"?isBidLessThan5CentsEnabled:undefined,\"percentSymbol\" in locals_for_with?locals_for_with.percentSymbol:typeof percentSymbol!==\"undefined\"?percentSymbol: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 (cancelLabel, saveLabel) {pug_html = pug_html + \"\\u003Cdiv\\u003E\\u003Cdiv class=\\\"custom-content\\\"\\u003E\\u003Cdiv data-ref=\\\"subEditView\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cinput\" + (\" class=\\\"save grid-popupeditor-save btn btn-primary\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", saveLabel, true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"cancel grid-popupeditor-cancel btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", cancelLabel, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"cancelLabel\" in locals_for_with?locals_for_with.cancelLabel:typeof cancelLabel!==\"undefined\"?cancelLabel:undefined,\"saveLabel\" in locals_for_with?locals_for_with.saveLabel:typeof saveLabel!==\"undefined\"?saveLabel:undefined));;return pug_html;};\nmodule.exports = template;"],"names":["pkg","globalContext","define","Promise","getProductGroupsGridFactory","then","_ref","createProductGroupsGrid","setProductGroupFactory","ViewModel","_createClass","_this","arguments","length","undefined","deps","editSchema","model","bidProperty","validators","_classCallCheck","KoSchema","this","_","i18n","validatorsOfKey","key","validator","value","rule","type","bidOptions","text","getString","requiredMessage","ko","IsExcluded","isBidValid","isValid","string","read","write","newValue","ProductGroupsEditBidBaseView","_Backbone$View","_callSuper","_inherits","view","_ref$selectedItems","selectedItems","template","IsAutoBidding","isAutoBidding","logger","ClientLogger","instrumentation","viewModel","genEditSchema","on","remove","$el","html","i18nGlobal","el","validate","get","data","Records","memo","record","errorMessages","Errors","pluck","flatten","_defineProperty","Id","_this2","getInlineEditableSaveFunction","fieldName","getFieldName","updated","getUpdated","editorView","editorViewCallbackAfterUpdate","trigger","logChangeBidOrBidBoost","itemId","level","isTreeView","errorMapping","errors","Backbone","ProductGroupsEditBidsView","_ProductGroupsEditBid","BidAmount","_ref$IsExcluded","IsBidLessThan5CentsInShoppingCampaignEnabled","config","ProductGroupBidRange","accountCurrencyCode","MinimumBid","range","min","max","defaultBidValue","defaultBid","bidRange","val","decimal","fromFloatToString","inlineEditTemplate","_superPropGet","Amount","getBidAmount","message","values","isBidBoost","bulkEditHeaderText","bulkEditLabel","bidValue","Bid","_objectSpread","getValue","bidEditSchema","s$ProductGroup","properties","schema","toString","successCallback","toUpdate","campaignId","state","CampaignId","adGroupId","AdGroupId","url","concat","odata","patch","finally","withUiBlock","grid","gridView","cacheManager","invalidate","catch","response","unexpectedError","fieldKey","getODataErrors","setErrors","PRODUCT_OFFER_DETAIL_SHOW_DELAY","PRODUCT_OFFER_DETAIL_CLOSE_DELAY","FETCH_OFFLINE_STATUS_DELAY","PATH_SPLITER","INLINE_CHART_TOGGLE_BUTTON_ID","bidType","bidBoost","DEFAULT_CURRENT_PAGE","MAX_PAGE_SIZE","productGroupLevel","Account","Campaign","AdGroup","createProductGroupGrid","factory","getProductGroupFactory","getFilterConfig","bidOption","IsCPGForBSCEnabled","getCommonFilterConfig","featureName","editor","entitySchema","sessionStore","preferenceStoreFactory","globalConfig","schemaI18nCampaign","s$i18n","cacheService","dataContextManager","jsdata","schemaProcessor","updateEntitySchemaForFeatures","originalSchema","updatedSchema","cloneDeep","showExceededSaveLimitError","filterConfig","tabView","errMsg","replace","maxSavedFilterLimit","alertHelper","showAlert","FilterAgentManager","initializeFilterAgent","toolbar","filterService","filterAgent","FilterAgent","toolbarView","setState","filterBar","showFilterBar","getFilterBar","filterEditor","showFilterEditor","getFilterEditor","showToolbar","showToolBar","_ref2","filter","updateViewWithFilter","errorData","showUnknownError","SingleViewWrapper","_DeterministicWrapper","options","listenTo","rendered","DeterministicWrapperView","ProductGroupInlineChartWrapper","_React$Component","props","updateToggleButtonOnToolbar","hasFilter","upperToolbar","update","id","classes","onClick","chartView","inlineChartViewModel","onShowChartButtonClick","InlineChartView","entityType","inlineChartConstants","AdEdmEntity","isUsingVnextGrid","hideChartToolbar","window","App","views","Summary","bindDateFilterChangeHandler","_onGridPageLoadingNewGrid","_jsx","BackboneInstanceWrapper","instance","managed","React","ProductGroupFooter","_jsxs","className","children","query","open","accountTimeZoneText","ProductGroupsEditBidBoostView","_ref$BidBoost","BidBoost","Settings","Multiplier","percentSymbol","bidBoostEditSchema","ProductGroupPathUtil","isEverythingElse","condition","Operand","Attribute","isAllProduct","getNearestParentCondition","ParentConditions","getDisplayName","parentConditions","parentCondition","getPath","path","i","getFullPath","conditions","push","tableContainerSelector","IsProductGroupBidLandscapeEnabled","IsAvgPositionDeprecationPhase1Enabled","SORT_DIRECTION","shouldEnableEdit","enable","IsCurrentAccountInactive","IsReadOnlyMode","productGroupSortIteratee","item","direction","con","Condition","generatePickProperty","isAggregateRow","IsLeaf","renderBidPopupEditor","bidEditor","myView","position","GridCustomizedPopupEditor","cellPosition","tableContainer","render","ProductGroupColumn","_CampaignuiBaseColumn","name","property","title","sortable","conditionTemplate","showSelectorIcon","hasChildren","depth","CampaignuiBaseColumn","ProductGroupFlattenColumn","_CampaignuiBaseColumn2","productGroupPathUtil","_ref3","$total","flattenConditionTemplate","Path","CampaignNameColumn","_CampaignuiBaseColumn3","_ref4","_this3","cid","pageContext","CurrentCustomer","aid","CurrentAccount","_this4","cmpid","CampaignName","href","campaignNameTemplate","AdGroupNameColumn","_CampaignuiBaseColumn4","_ref5","_this5","_this6","AdGroupName","adgid","currentCampaign","CurrentCampaign","adGroupNameTemplate","getBidOption","BidColumn","_CampaignuiBaseColumn5","_ref6","_this7","helpId","headClasses","bodyClasses","enableEdit","BidOption","helpAriaLabel","_ref7","showBidValue","bidTemplate","isLeaf","isExcluded","bidString","isBidLandscapeAvailable","IsBidLandscapeEnabled","_ref8","event","$","target","is","isInlineEdit","BidBoostColumn","_CampaignuiBaseColumn6","_ref9","_this8","_ref10","showBidBoostValue","formatPercentToFixed","digits","_ref11","WarningsColumn","_CampaignuiBaseColumn7","_ref12","_this9","_ref13","bidRangeKey","bidAmount","warningColumnTemplate","hasWarning","warningCount","DestinationUrlColumn","_CampaignuiBaseColumn8","_ref14","_this10","editorConfig","fields","saveModel","ProductGroupTrackingTemplateColumn","_TrackingTemplateColu","_ref15","_this11","inlineEditableSave","TrackingTemplateColumn","ProductGroupFinalUrlSuffixColumn","_FinalUrlSuffixColumn","_ref16","_this12","FinalUrlSuffixColumn","ProductGroupCustomParametersColumn","_CustomParametersColu","_ref17","_this13","permissions","CustomParametersColumn","PerfSpendColumn","_CampaignuiBaseColumn9","_ref18","localizedTitle","PerfClicksColumn","_CampaignuiBaseColumn10","_ref19","format","PerfTopImpressionRateColumn","_CampaignuiBaseColumn11","_ref20","PerfAbsoluteTopImpressionRateColumn","_CampaignuiBaseColumn12","_ref21","PerfImpressionsColumn","_CampaignuiBaseColumn13","_ref22","PerfCTRColumn","_CampaignuiBaseColumn14","_ref23","PerfAverageCPCColumn","_CampaignuiBaseColumn15","_ref24","PerfAverageCPMColumn","_CampaignuiBaseColumn16","_ref25","ConversionsColumn","_CampaignuiBaseColumn17","_ref26","ConversionRateColumn","_CampaignuiBaseColumn18","_ref27","RevenueOnAdSpendColumn","_CampaignuiBaseColumn19","_ref28","AdvertiserReportedRevenueColumn","_CampaignuiBaseColumn20","_ref29","CPAColumn","_CampaignuiBaseColumn21","_ref30","AllConversionsColumn","_CampaignuiBaseColumn22","_ref31","AllConversionRateColumn","_CampaignuiBaseColumn23","_ref32","AllConversionRevenueOnAdSpendColumn","_CampaignuiBaseColumn24","_ref33","AllConversionAdvertiserReportedRevenueColumn","_CampaignuiBaseColumn25","_ref34","AllConversionCPAColumn","_CampaignuiBaseColumn26","_ref35","ProductsSubmittedColumn","_CampaignuiBaseColumn27","_ref36","ProductsTargetedColumn","_CampaignuiBaseColumn28","_ref37","getAttributeColumns","_ref38","isBidValueOption","isBidBoostOption","getPerfColumns","getConvColumns","getShoppingColumns","getGridColumnsConfig","_toConsumableArray","compact","map","Column","toJSON","getCategoryOptions","option","column","selectOption","getColumnNames","Cols","getLockedColumns","categories","lockedColumns","category","getColumnChooserPluginConfig","isLockedColumn","lockColumnWhiteList","selected","locked","patchQuery","Columns","SelectedColumns","LegacyColumns","LegacySelectedColumns","ProductGroupsGridConfig","dataSource","onTogglePillClicked","getSortReturn","value1","value2","gridToolBarConfig","appConfig","helpers","singleToolbar","items","disabled","IsReadOnlyUser","button","menu","editBids","selectedIndex","processReportRule","ReportRule","warningColumnHeaderIdx","Headers","indexOf","splice","Selection","IsAdGroupTreeView","QueryString","gridPluginConfig","inlineDownload","DownloadView","isAvailable","gridId","ReportEmailRule","uiBlocker","placeholder","filteredEmptyText","container","placeholderTemplate","templateOptions","shouldShowCreateRootLink","CurrentAdGroup","asyncEmptyText","tooMuchDataErrorText","asyncCallback","showTooMuchDataError","tree","toggleColumnName","templateDecorator","celTemplate","total","parentItem","itemWithKey","ParentId","attributeText","isRoot","parentAttribute","performanceLog","columnChooser","clientSideSort","compareMaker","sortIteratee","item1","item2","sortReturn","setTopToMax","dateFilter","addDateChangeListener","edm","edmCampaign","isOdataActionSource","comparisonColumns","pagination","availablePageSizes","enableRandomPage","preferenceService","pageSizeText","totalPageCountText","crossPageSelectAll","editable","IsBidLessThan5CentsEnabled","unset","tableClasses","scrolling","virtualized","header","offset","height","rows","headRows","crossPageSelectHeadRow","bodyRows","columns","selection","selectable","plugins","ProductGroupBidLandscapePopupFactory","onFetchBidLandscapeSuccess","activities","recordBidChangeInLandScape","productGroupGrid","create","recordFetchLandScapeData","landscape","ProductGroupBidLandscape","inSimpleMode","Name","attributeDisplayName","CurrentValue","dataToShow","enityType","trace","once","trackingId","generateGuid","ariaData","ActionName","UIData","bidList","dataArray","currencyCode","AccountCurrencyCode","currentBid","startDate","startDateString","endDate","endDateString","isCustomBid","currentSelectedId","landscapePointsLength","fromLocalToFloat","valueToApply","popupUtil","close","inlineError","hasData","PopoverView","positions","relativeToTableRow","marginBottom","setContent","contents","TitledContent","setBody","openBidLandscapePanel","stopPropagation","ajaxPost","ignoreBeforeAjax","onSuccess","currentPartitionName","availableDimensions","selectedDimensionId","selectedDimension","showLimitExceededWarning","showBulkPanel","productOptions","headerText","sortList","list","descending","sort","toLowerCase","localeCompare","item1Num","Number","isNaN","item2Num","sortLeftColumn","doubleListBox","_viewModel","customData","leftSorted","sortedColumn","leftDescending","AvailableItems","refreshSource","sortRightColumn","rightSorted","rightDescending","setSelection","NO_DATA","DimensionProperties","ProductGroupSubTypeEnum","CampaignSubTypeEnum","ProductGroupsSelectorView","_View","currentPartition","displayName","_ref$children","partitionFullPath","campaignSubType","_ref$isBidValueOption","isCPGForBSCEnabled","Boolean","isLocalInventoryAdV2Enabled","ajaxOptions","dimensions","productCondition","SubTypeFlag","updateModel","doubleListBoxConfig","sourceItems","request","cb","itemIdField","itemIdCallback","useCallbackForFetchOnly","pageSize","itemActions","features","paging","filtering","dragAndDrop","templates","layoutTemplate","doubleListLayoutTemplate","sourceItemLayoutTemplate","sourceItemContentTemplate","sourceItemTemplate","selectedItemContentTemplate","selectedItemTemplate","selectedItemLayoutTemplate","textAreaValue","isBulkShown","Count","Clicks","Impressions","Conversions","sortLeftNameColumn","sortLeftCountColumn","sortLeftClicksColumn","sortLeftImpressionsColumn","sortLeftConversionsColumn","sortRightNameColumn","sortRightCountColumn","isBulkAddEnabled","IsBulkEnabled","rightColumnHeader","DisplayName","countHeader","clicksHeader","impressionsHeader","conversionsHeader","leftColumnHeader","getDoubleListBoxConfig","isBulkOperationEnabled","DoubleListBox","subscribe","changeDimension","getSelectedDimension","dim","dataParam","index","queryify","uid","__adcenterAJAX","onAjaxComplete","xhr","getResponseHeader","onJsonError","post","gridDataParameters","DateRange","DateRangePreset","StartDate","formatLocalDateToISO","start","EndDate","end","operand","date","formatDate","timeZone","raw","selectedDimensionName","Ids","dimension","result","SelectedItems","child","toUpperCase","newDimension","getPartitionData","updateDimensionCount","hideBulkPanel","doubleListCustomData","forEach","resetSort","add","parent","counts","count","AttributeName","OfferCount","PerformanceMetrics","textValue","trim","bulkInput","split","addedPartitions","input","apply","navigate","newPartitions","childrenAttribute","changeMode","getChangeMode","productPartitionName","adgroupBidBoost","popup","confirm","params","getUpdateParams","checkIfExceedMaxNumberOfForm","updateSubdivisions","expandedNodeDelta","CreatedPartitionIds","oldPartitions","dimensionType","newPartitionsLowerCaseCopy","String","oldPartitionsLowerCaseCopy","newBid","getNewBid","added","deleted","parentId","createProductGroup","inheritNode","bid","BidValue","dimensionValue","DimensionType","DimensionValue","View","ProductGroupsSelectorDialog","decorate","maxWidth","width","minHeight","draggable","sampleOffers","sampleCount","hasOffer","offerDescription","updateSample","totalCount","AttributeToFilterType","Title","Brand","Price","CountryOfSale","CategoryL1","CategoryL2","CategoryL3","CategoryL4","CategoryL5","ProductType1","ProductType2","ProductType3","ProductType4","ProductType5","CustomLabel0","CustomLabel1","CustomLabel2","CustomLabel3","CustomLabel4","ConditionValue","New","Refurbished","Used","isEmpty","ProductGroupsDetailView","productPartitionId","isEverythingElseRow","parentView","currentCondition","select","limit","entitySet","currentAccount","Campaigns","$withKey","AdGroups","ProductPartitions","ProductOffers","textStatus","bypassCache","partitionTrail","currentOperand","currentAttribute","setTimeout","jsData","ProductOffer","findAll","clearTimeout","productOfferCloseTimer","removeHoverProductDetails","trail","FilterExpressions","selectedOperator","SelectedColumn","SelectedOperator","Values","param","AbstractProductGroupsView","_len","args","Array","_key","getAttributeDisplayName","row","parentRow","getFullConditionPath","getPartitionFullPath","rowId","unshift","expandToolBar","productGroupsView","toolbarEditor","gridToolbarGroup","toolbarWithName","constants","DEFAULT_TOOLBAR_NAME","overrideWith","closeView","restoreToolbar","refreshGrid","removeClass","campaign","adgroup","gridParameters","callbacks","preferenceConfig","removed","adgroupId","setting","BidBoostValue","setUpErrorHandling","scope","refresh","productOfferOpenTimer","fetchOfflineStatusTimer","merge","getGridConfig","initializeGrid","columnChooserAgent","onRecordRemoved","onColumnChooserMenuChanged","onRecordSaved","onSelectedRecordChanged","onSelectedColumnsChanged","names","e","showProductDetails","pGridFactory","initializeGridFactory","inlineEditSuccessCallback","clearErrors","forceRefresh","deselectAll","_this$deps","processingDataMessage","dataReadyMessage","tooMuchProductOfferMessage","rawData","clearInterval","productGroupBIDataLoadStatus","onShowTooMuchProductOffer","onMessageBar","setInterval","onPopupMessage","changes","countRows","click","createRootNode","orderby","sortableHeader","setAtUserLevel","Data","sortInfo","bidLandscapePopupFactory","warningDetailPopover","eventActions","showBidEditorForm","bidWarningContentTemplate","reason","setTitle","bidWarningTitleTemplate","itemOfElement","currentHoverItemId","ProductDetailPopoverView","setPositionByTarget","refreshMenu","setSelectedColumns","childrenKeys","selectorView","markNeedSync","expandedNodeIdsCur","setExpandedNodeIds","showBidLandscapePopup","bidRow","alertCenter","toastError","selectRow","keyOfElement","alert","BulkEditView","bulkEditView","BulkEditModel","bulkEditModel","editBidsView","Entity","pgridPlugins","getPageSize","getCurrentPage","onOperationSuccess","toolbars","location","_len2","_key2","TreeProductGroupsView","_AbstractProductGroup","projectionGrid","vnext","use","jsdataRawDataPlugin","performanceLogPlugin","dateFilterPlugin","clientSideSortPlugin","toolbarPlugin","columnChooserPlugin","treePlugin","editablePlugin","assistedSelectionPlugin","inlineErrorPlugin","errorIconClasses","uiBlockerPlugin","placeholderPlugin","inlineDownloadWithoutFilterstateAndSegmentPlugin","aggregatedRowsPlugin","bottom","getRows","getItemCount","FlattenProductGroupsView","paginationPlugin","crossPageSelectAllPlugin","aggregatedRowsPluginBuilder","keys","overallI18nKey","filteredI18nKey","customConfig","showSearchRow","showAudienceRow","showDeletedRow","createProductGroupsGridFromNewPackage","viewport","getAdditionalPlugins","customHeaderOffset","p$daterange","ProductGroup","needChangeSelectedColumns","changedColumns","logToggleGrid","switchToTreeViewByRouter","switchToFlattenViewByRouter","showMessageBar","showPopupMessage","showTooMuchProductOffer","popupMessage","renderFilterAgentView","logApplyFilter","getLevel","flattenGrid","updateGridQuery","currentGridFilter","isTreeGrid","refreshColumnChooserMenu","treeGrid","logChangeSelectedColumn","generateGrid","treeView","Permissions","IsConsumeProductGroupsGridInOldUIProductGroupsTabEnabled","treeGridParameters","ProductGroupTreeGrid","treeGridToolbar","getToolBar","flattenGridParameters","ProductGroupFlattenGrid","flattenView","flattenGridToolbar","renderToolbar","onDisabledTogglePillClicked","renderGrid","needRefresh","updateSelectedColumns","renderMessageBar","learnMoreLinkText","role","renderTooMuchProductOfferBar","renderPopupMessage","refreshLinkText","renderInlineChart","renderUpperToolbar","needSync","markFilterredInTreeView","filterredInTreeView","markFilterredInFlattenView","initializeFilterService","FilterService","p$Initialized","getCombinedFilter","checkShouldRefresh","router_new","$target_state","renderNoDataContainer","renderFooter","appendLearnMoreLink","getTimeZoneForDateRangeText","toolbarConfig","OverridableToolbarView","getUpperToolbar","prevProps","prevState","nextProps","nextState","HelpRailViewId","railViewId","defaultProps","requireDefault","require","_globalContext$requir3","fetchPreferenceConfig","s$ProductPartition","BidLandscape","dateUtils","bingadsGridColumn","_globalContext$requir7","_globalContext$requir8","treeViewDeps","handler","getFilters","ProductGroupView","viewRef","ref","current","ReactDOM","scenario","applyFilterActivity","applyFilter","toggleGridActivity","toggleGrid","changeSelectedColumnActivity","changeSelectedColumns","recordBidChangeActivity","recordBidChange","getMessage","filterQuery","aimGrid","action","description","selectedColumns","JSON","stringify","version","PGGInstrumentation","viewType","newUIProductGroupsPageScenario","activity","PGGActivity","str","signal","console","log","stack","messageType","error","BatchAction","TotalRowCounnt","SuccessRowCount","ErrorRowCount","bulkEditCashbackPercentView","bulkEditCashbackPercentModel","toUpdateParam","activityLogger","sendInlineEditLog","sendInlineEditErrorLog","showLowerThanMinSuggestionBidWarning","defaultMSStoreMinSuggestionBid","validateMinSuggestionBid","IsMSStoreAds","isMSStoreAdsCampaign","originBidRange","fallbackMinBid","fetchCampaignData","_x","_fetchCampaignData","_asyncToGenerator","_regeneratorRuntime","mark","_callee","accountId","customerId","res","wrap","_context","prev","next","abrupt","Customers","Accounts","toPromise","sent","stop","columnKey","v1","v2","isEveryThingElseRow","shouldEnableProductGroupTreeEditForMSStoreAdsCampaign","newPosition","parentContainerSelector","useVNextPosition","Object","ariaLabel","campaignName","CurrentUser","adGroupName","_onPrompt","setLoading","isLoading","closest","css","append","PopupEditor","hasLabels","prompt","isForVNext","_this14","_permissions$dynamic","dynamic","CPSReporting","ColumnSpend","ColumnClicks","ColumnImpressions","ColumnCTR","ColumnAverageCPC","ColumnAverageCPM","ColumnAbsoluteTopImpressionRate","ColumnCPS","_permissions$dynamic3","_permissions$dynamic4","IsColumnConversionEnabled","ColumnConversion","IsPartialConversionsEnabled","PartialConversions","InstallPerformanceColumns","usePartialConversions","ColumnConversionsCredit","ColumnConversions","ColumnPartialConversionRate","ColumnConversionRate","ColumnRevenueOnAdSpend","ColumnAdvertiserReportedRevenue","ColumnPartialConversionCPA","ColumnCPA","ColumnAllConversionsCredit","ColumnAllConversions","ColumnAllPartialConversionRate","ColumnAllConversionRate","ColumnAllConversionRevenueOnAdSpend","ColumnAllConversionAdvertiserReportedRevenue","ColumnAllPartialConversionCPA","ColumnAllConversionCPA","ColumnSalesCount","ColumnInstalls","ColumnCostPerInstall","ColumnRevenuePerInstall","isSpaSpbCampaignType","CampaignSubType","_permissions$dynamic5","columnConversions","getColumnConversions","_ref$currentOperand","GTIN","MPN","Channel","ChannelExclusivity","ChannelValue","Online","ChannelExclusivityValue","router","perfMarker","willFetchData","find","queryParameters","_slicedToArray","willRender","onFetchSuccess","getCurrenOperand","done","navigateToProductTab","sendToProductDetailsPageLog","gridName","triggerScrollbarReposition","getGridPlugins","EVENT_NAMES","SHOW_PGG_SELECTOR","SAVE_PRODUCT_GROUPS","gridConfig","updateGridCallback","cache","updateListGridWithFilter","validateOrder","pgridFactory","refreshGridAfterSaveProductGroups","toastInfo","detailPerfMarker","createChild","willInit","isForNewUI","logMessage","LOGCATEGORY","TRACE","LOGLEVEL","INFO","pggSelectorPerfMarker","markNeedSyncGrid","syncGrid","formatDecimalToFixed","entityName","sendBulkEditLog","onOperationFailure","a11yPlugin","pathname","all","initializeCombinedFilterPromise","fetchWaterfallFilterPromises","getConfig","tableName","legacyGridName","tableAttributes","getPlugins","columnChooserConfig","customToolbarIcon","showNativeRow","plugin","perfMarkerPlugin","marker","_ref$triggerScrollbar","_ref$isTreeView","_ref$p$daterange","currentScope","currentAdGroup","entity","ProductGroups","$call","isAdGroupTreeView","cacheResponse","ProductGroupsTreeGrid","ProductGroupsFlattenGrid","projectionGridEnableWithSelection","definePlugin","toolbarItemIds","original","IOFormInputSchema","Constants","InsertionOrdersGridFieldNames","IODateInlineEditView","_DeterministicView","allowImmediateStart","allowEndless","minDate","selectedDate","alwaysShowError","ioDatePicker","DeterministicViewForBackBoneView","extend","initialize","onChanged","bind","ioDatePickerComponent","withI18n","IODatePicker","parseDate","ThruDate","dateValue","prototype","call","setChild","saveLabel","_TL_","cancelLabel","_this$ioDatePicker$vi","_this$ioDatePicker$vi2","newSelectedDate","DeterministicView","DateInlineEditableColumnPrompt","maxDate","onSave","columnName","dateEditorView","updatedValue","renderBelow","customDismissCondition","IOSpendCapAmountInlineEditView","spendCapAmountValue","ioSpendCapAmount","ioSpendCapAmountComponent","IOSpendCapAmount","allowUnlimited","_this$ioSpendCapAmoun","_this$ioSpendCapAmoun2","newSpendCapAmountValue","SpendCapAmountInlineEditableColumnPrompt","spendCapAmountEditorView","commonJsdataRawDataPlugin","getRawData","pug","module","exports","locals","pug_interp","pug_html","pug_mixins","locals_for_with","topic","displayText","ariaLabelContext","fBindContext","fBindQuery","block","attributes","attr","escape","isExpanded","style","textPadding","toggleIconMargin","placeholderText","cssClass","isBidLessThan5CentsEnabled","minSuggestionBid"],"sourceRoot":""}