{"version":3,"file":"static/js/application.async.non-landing~7d30a586.94667218.chunk.js","mappings":"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","sources":["../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/plugin/instant-search-viewmodel.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/plugin/instant-search.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/plugin/show-paused-filter-viewmodel.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/plugin/show-paused-filter.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/plugin/set-memory-filter.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/plugin/filter-plugin.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/grid/campaign-selection-grid-viewmodel.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/grid/campaign-selection-grid-config.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/grid/campaign-selection-grid-view.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/ad-group-level-view/shapes.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/ad-group-level-view/header.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/ad-group-level-view/constants.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/ad-group-level-view/list-node-renderer.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/ad-group-level-view/tree-view.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/ad-group-level-view/list-box.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/ad-group-level-view/step.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/ad-group-level-view/backbone-pipe-view.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/campaign-selection-step.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/account-selection-step/validate-selected-account-campaigns.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/account-selection-step/grid/account-grid-viewmodel.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/account-selection-step/grid/account-grid-view.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/account-selection-step/grid/account-grid-config.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/account-selection-step/currency-conversion-control/currency-conversion-view-model.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/account-selection-step/currency-conversion-control/currency-conversion-view.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/account-selection-step/account-selection-step.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-options-step/import-options-summary-builder.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-options-step/import-options-step.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-schedule-step/form/ko-extension.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-schedule-step/util/cron-util.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-schedule-step/util/import-scheduling-options.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-schedule-step/util/time-zone-util.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-schedule-step/form/schedule-form-view-model.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-schedule-step/form/schedule-form-view.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-schedule-step/schedule-import-step.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-summary-step/import-summary-step.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/step/google-login/google-login-step.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/step/google-import-options/index.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/step/schedule-import/index.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/step/google-campaign-grid-view.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/page/google-import-step-factory.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/page/google-import-page.js","../../../node_modules/@bingads-webui-campaign/google-import/src/repository/permission-factory.js","../../../node_modules/@bingads-webui-campaign/google-import/src/page/step-config.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-login-step/login-step-prefetch.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-login-step/index.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-account-choose-step/bing-account-mapping-step/bing-account-dropdown-list.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-account-choose-step/bing-account-mapping-step/bing-account-selector.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-account-choose-step/bing-account-mapping-step/bing-account-step-prefetch.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-account-choose-step/bing-account-mapping-step/bing-account-selector-styles.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-account-choose-step/bing-account-mapping-step/bing-account-step.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-account-choose-step/bing-account-mapping-step/action-bar-config.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-account-choose-step/index.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/start-import-smart-step/index.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-campaign-step/campaign-selector.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-campaign-step/campaign-selection-styles.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-campaign-step/google-campaign-step.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-campaign-step/action-bar-config.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-import-options-step/action-bar-config.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/google-import-options-step/import-options-step.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/import-status-step/index.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/start-import-advanced-step/action-bar-config.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/start-import-advanced-step/index.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/merchant-center-store-mapping-step/merchant-center-mapping-step.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/merchant-center-store-mapping-step/action-bar-config.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/smart-campaign-google-login-step/index.js","../../../node_modules/@bingads-webui-campaign/google-import/src/steps/esc-google-login-step/index.js","../../../node_modules/@bingads-webui-campaign/google-import/src/page/step-factory.js","../../../node_modules/@bingads-webui-campaign/google-import/src/page/index.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/index.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-center-service.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/Information-view.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/edit-control.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/custom-filter-view.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/hotel-view-base.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/hotel-options-base.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-in-group/grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-center-shared.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/filter-agent.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/filter-config.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-in-group/hotel-in-group.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-out-group/grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-out-group/hotel-out-group.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-associations/hotel-associations.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-groups/grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-groups/hotel-groups.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-groups/subaccount-hotelgroup-edit-panel-view.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-groups/hotel-groups-uinext.js","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-center-assignment.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/index.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/intelligence-sub-sections.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/intelligence-tree-bars.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/hotel-center-utils.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/feed-status/grid-config.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/hotel-center-shared.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/feed-status/feed-status.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/feed-upload/feed-error-map.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/feed-upload/grid-option.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/feed-upload/feed-upload.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/match-report/match-report.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/helper/performance-report-factory.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/share-of-voice-report/share-of-voice-report.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/booking-report/booking-report.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/callout-extensions/callout-extensions-view.js","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/hotel-center-intelligence.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/index.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/bulk-edit/bulk-edit-bid-multi-panel.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/bulk-edit/bulk-edit-bid-panel.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/bulk-edit/error-map.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/bulk-edit/preview-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/bulk-edit/bulk-edit-panel-base.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/bulk-edit/bulk-edit-toast.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/bulk-edit/bulk-edit-vm.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/bulk-edit/bulk-edit-view.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/bulk-edit/increase-decrease-bid-panel.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/error-mapping.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/hotel-center-conversion-columns.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/hotel-bi-grid-options-base.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/country-code-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/hotel-date-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/hotel-devicetype-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/hotel-grid-options-base.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/hotel-group-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/hotel-id-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/hotel-subaccount-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/length-stay-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/publisher-country-id-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/slot-type-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/advanced-booking-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/checkin-day-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/date-type-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/site-type-grid-options.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/subaccount-bar/bid-cap-panel.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/subaccount-bar/budget-panel.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/subaccount-bar/subaccount-bid-edit.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/subaccount-bar/subaccount-bid-multipliers-edit.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/subaccount-bar/subaccount-bar.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/hotel-center-overview.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/plugin-config.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/hotel-center-service.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/hotel-center-shared.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/hotel-center-utils.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/inline-edit/bid-inline-edit-view.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/inline-edit/inline-edit-view.js","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/inline-edit/multiplier-inline-edit-view.js","../../../node_modules/@bingads-webui-campaign/hotel-center-setup/index.js","../../../node_modules/@bingads-webui-campaign/hotel-center-setup/src/account-setup/account-view.js","../../../node_modules/@bingads-webui-campaign/hotel-center-setup/src/hotel-center-shared.js","../../../node_modules/@bingads-webui-campaign/hotel-center-setup/src/budget-bid-setup/budget-bid-view.js","../../../node_modules/@bingads-webui-campaign/hotel-center-setup/src/header/header-view.js","../../../node_modules/@bingads-webui-campaign/hotel-center-setup/src/host/host-view.js","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/plugin/instant-search.pug","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/plugin/show-paused-filter.pug","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/account-selection-step/account-selection-step.pug","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/account-selection-step/currency-conversion-control/currency-conversion-view-template.pug","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/account-selection-step/grid/account-grid-template.pug","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/campaign-selection-step.pug","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/campaign-selection-step/grid/campaign-selection-grid-template.pug","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-schedule-step/form/schedule-form-done-template.pug","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-schedule-step/form/schedule-form-template.pug","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-schedule-step/schedule-import-step.pug","../../../node_modules/@bingads-webui-campaign/google-import-page/src/shared/step/import-summary-step/scheduled-import-summary-template.pug","../../../node_modules/@bingads-webui-campaign/google-import-page/src/step/google-login/google-login-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/attention-info-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/custom-filter-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/custom-pagination-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/edit-control-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/hotel-group-info-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/hotel-view-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/assignment-utils/message-view-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-associations/template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-center-assignment-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-groups/grid-column-name.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-groups/template-uinext.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-assignment/src/hotel-groups/template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/hotel-center-intelligence-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/intelligence-tree-bars-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/booking-report/template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/callout-extensions/template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/feed-status/download-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/feed-status/template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/feed-upload/column-message.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/feed-upload/template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/match-report/template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-intelligence/src/sub-sections/share-of-voice-report/template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/bulk-edit/bulk-edit-bid-multi-panel-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/bulk-edit/bulk-edit-bid-panel-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/bulk-edit/bulk-edit-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/bulk-edit/increase-decrease-bid-panel-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/grid-options/hotel-name-column.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/hotel-center-overview-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/inline-edit/bid-inline-edit-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/inline-edit/inline-edit-view-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/inline-edit/multiplier-inline-edit-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/subaccount-bar/bid-cap-panel-ui-next-tempalte.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/subaccount-bar/budget-panel-ui-next-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/subaccount-bar/subaccount-bar-ui-next-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/subaccount-bar/subaccount-bid-edit-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-overview/src/subaccount-bar/subaccount-bid-multi-edit-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-setup/src/account-setup/account-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-setup/src/budget-bid-setup/budget-bid-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-setup/src/header/header-template.pug","../../../node_modules/@bingads-webui-campaign/hotel-center-setup/src/host/host-template.pug"],"sourcesContent":["import ko from 'knockout';\r\n\r\nexport class InstantSearchViewModel {\r\n constructor({\r\n placeholder,\r\n }) {\r\n this.placeholder = ko.observable(placeholder);\r\n this.searchString = ko.observable('');\r\n this.inEditMode = ko.observable(false);\r\n }\r\n}\r\n","import ko from 'knockout';\r\nimport Backbone from 'backbone';\r\n\r\nimport template from './instant-search.pug';\r\nimport { InstantSearchViewModel } from './instant-search-viewmodel';\r\n\r\nexport class InstantSearch extends Backbone.View {\r\n initialize({\r\n placeholder = '',\r\n i18n,\r\n }) {\r\n this.koModel = new InstantSearchViewModel({\r\n placeholder,\r\n });\r\n this.i18n = i18n;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'input input': '_onInputChanged',\r\n 'keypress input': '_onKeyPressedInTextInput',\r\n 'click .filtercloseimage': '_clearSearch',\r\n };\r\n }\r\n\r\n _onInputChanged(event) {\r\n const trimmedVal = this.koModel.searchString().replace(/^\\s+/, '');// trim white space from left, note trimLeft is not supported on IE\r\n\r\n /*\r\n workaround for IE.\r\n In IE, tab into with or tab out from will trigger this event.\r\n If value is not empty, this event wont' be triggered.\r\n And preventDefault() will cancel the default action.\r\n so focus will get lost, elements are inaccessible by keyboard.\r\n if edit mode is not changed and no search string, do nothing\r\n */\r\n if ((this.koModel.inEditMode() === !!trimmedVal) && !trimmedVal) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n this.koModel.inEditMode(!!trimmedVal);\r\n this.trigger('input', trimmedVal);\r\n }\r\n\r\n _onKeyPressedInTextInput(event) {\r\n const RETURN_CODE = 13;\r\n\r\n if (event.which === RETURN_CODE) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n _clearSearch(event) {\r\n event.preventDefault();\r\n this.koModel.searchString('');\r\n this.koModel.inEditMode(false);\r\n this.trigger('input', '');\r\n }\r\n\r\n render() {\r\n this.$el.html(template({\r\n i18n: this.i18n,\r\n }));\r\n ko.applyBindings(this.koModel, this.el);\r\n\r\n return this;\r\n }\r\n}\r\n","import ko from 'knockout';\r\n\r\nexport class ShowPausedFilterViewModel {\r\n constructor(options) {\r\n this.disableShowPause = ko.observable(options.disable);\r\n this.showPaused = ko.observable('');\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport Backbone from 'backbone';\r\n\r\nimport template from './show-paused-filter.pug';\r\nimport { ShowPausedFilterViewModel } from './show-paused-filter-viewmodel';\r\n\r\nexport class ShowPausedFilter extends Backbone.View {\r\n initialize(options) {\r\n this.options = options || {};\r\n\r\n this.koModel = new ShowPausedFilterViewModel(_.defaults({\r\n disable: this.options.shouldDisableThisFilter,\r\n }, {\r\n disable: false,\r\n }));\r\n }\r\n\r\n render() {\r\n this.el.innerHTML = template({\r\n i18n: this.options.i18n,\r\n });\r\n ko.applyBindings(this.koModel, this.el);\r\n\r\n if (!this.options.shouldDisableThisFilter) {\r\n this.koModel.showPaused.subscribe((newValue) => {\r\n this.trigger('change', newValue);\r\n }, this);\r\n }\r\n\r\n if (this.options.showPaused) {\r\n this.koModel.showPaused(true);\r\n } else {\r\n this.koModel.showPaused(false); // default is to show active campaigns\r\n }\r\n\r\n return this;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport default (gridView, func) => {\r\n gridView.set({\r\n dataSource: _.defaults({\r\n filter: func,\r\n }, gridView.get('dataSource')),\r\n });\r\n};\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\n\r\nimport { InstantSearch } from './instant-search';\r\nimport { ShowPausedFilter } from './show-paused-filter';\r\nimport setFilter from './set-memory-filter';\r\n\r\nexport function generateFilterPlugin({\r\n i18n,\r\n logTrace = () => {},\r\n}) {\r\n return definePlugin => definePlugin('memoryFilter', ['config', 'gridView'], (config, gridView) => {\r\n const filterConfig = config.plugins.filter || {};\r\n const searchConfig = filterConfig.search;\r\n const searchProperty = searchConfig && searchConfig.property;\r\n let searchBoxView;\r\n let searchValue;\r\n\r\n const pausedConfig = filterConfig.pausedFilter;\r\n const showPausedFilterProperty = pausedConfig && pausedConfig.property;\r\n let showPausedView;\r\n let showPausedChecked;\r\n let activeData;\r\n\r\n function searchFilter(val, item) {\r\n if (item[searchProperty]) {\r\n return item[searchProperty].toLowerCase().indexOf(val.toLowerCase()) !== -1;\r\n }\r\n return !val; // return Accounts with null name if search val is empty\r\n }\r\n\r\n function isActive(item) {\r\n return item[showPausedFilterProperty] === i18n.get('CampaignImport_EntityStatusActive');\r\n }\r\n\r\n function generateFilterFunction() {\r\n const filterConditions = [];\r\n\r\n if (!_.isUndefined(searchValue)) {\r\n filterConditions.push(_.partial(searchFilter, searchValue));\r\n }\r\n\r\n if (showPausedChecked === false) {\r\n filterConditions.push(isActive);\r\n }\r\n\r\n return item => _.every(filterConditions, filter => filter(item));\r\n }\r\n\r\n if (searchConfig) {\r\n searchBoxView = new InstantSearch({\r\n placeholder: searchConfig.title,\r\n i18n,\r\n });\r\n\r\n $(searchConfig.container).html(searchBoxView.el);\r\n\r\n searchBoxView.on('input', _.debounce((val) => {\r\n searchValue = val;\r\n setFilter(gridView, generateFilterFunction());\r\n logTrace(`GoogleAccountSearch:${val}`);\r\n }, 200)); // check input after some time instead of check very input\r\n }\r\n\r\n if (pausedConfig) {\r\n const { data } = config.dataSource;\r\n activeData = _.filter(data, isActive);\r\n\r\n if (pausedConfig.forceHide) {\r\n showPausedChecked = false;\r\n setFilter(gridView, generateFilterFunction());\r\n } else {\r\n const hasNoActiveData = _.isEmpty(activeData);\r\n const shouldDisableThisFilter = (activeData.length === data.length) || hasNoActiveData;\r\n\r\n showPausedView = new ShowPausedFilter({\r\n showPaused: pausedConfig.showPaused || hasNoActiveData,\r\n shouldDisableThisFilter: !pausedConfig.alwaysEnable && shouldDisableThisFilter,\r\n i18n,\r\n });\r\n showPausedView.filteredData = activeData;\r\n\r\n $(pausedConfig.container).html(showPausedView.el);\r\n\r\n showPausedView.on('change', (checked) => {\r\n showPausedChecked = checked;\r\n setFilter(gridView, generateFilterFunction());\r\n });\r\n }\r\n }\r\n\r\n return {\r\n render: () => {\r\n if (searchBoxView) {\r\n searchBoxView.render();\r\n }\r\n\r\n if (showPausedView) {\r\n showPausedView.render();\r\n }\r\n },\r\n remove: () => {\r\n if (searchBoxView) {\r\n searchBoxView.remove();\r\n }\r\n\r\n if (showPausedView) {\r\n showPausedView.remove();\r\n }\r\n },\r\n searchBoxView,\r\n totalDataWithActiveFilter: activeData,\r\n enableShowPaused: () => {\r\n if (showPausedView) {\r\n showPausedView.koModel.showPaused(true);\r\n }\r\n },\r\n getShowPausedValue: () => showPausedChecked,\r\n };\r\n });\r\n}\r\n","import ko from 'knockout';\r\nimport _ from 'underscore';\r\n\r\nexport class CampaignGridViewModel {\r\n constructor({\r\n data,\r\n repo,\r\n isAIMImportEnabled = false,\r\n }) {\r\n const hasDiplayCampaign = repo.containDisplayType(data);\r\n\r\n this.importAll = ko.observable(true);\r\n this.importAll.Editing = ko.computed({\r\n read() {\r\n return this.importAll() ? 'true' : 'false';\r\n },\r\n write(newValue) {\r\n this.importAll(newValue === 'true');\r\n },\r\n }, this);\r\n\r\n this.showPaused = ko.observable(false);\r\n\r\n this.selectedCampaigns = ko.observable('');\r\n this.showValidationError = ko.computed(() => _.isEmpty(this.selectedCampaigns()));\r\n this.hasError = ko.computed(() => !this.importAll() && this.showValidationError());\r\n\r\n this.showDisplayCampaignAlert = ko.computed(() => {\r\n if (!isAIMImportEnabled) {\r\n return false;\r\n }\r\n if (this.importAll()) {\r\n return hasDiplayCampaign;\r\n }\r\n return repo.containDisplayType(this.selectedCampaigns());\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function generateConfig({\r\n i18n,\r\n data,\r\n showPaused,\r\n signupMode,\r\n}) {\r\n const columnsConfig = _.compact([{\r\n name: 'Name',\r\n title: i18n.get('Import_SelectCampaign_CampaignName'),\r\n sortable: item => item.Name.toString().toLowerCase(),\r\n bodyClasses: 'truncated',\r\n }, {\r\n name: 'Type',\r\n title: i18n.get('Import_SelectCampaign_Type'),\r\n sortable: item => item.Type.toString().toLowerCase(),\r\n }, {\r\n name: 'Status',\r\n title: i18n.get('Import_SelectCampaign_Status'),\r\n sortable: item => item.Status.toString().toLowerCase(),\r\n }]);\r\n\r\n const plugins = {\r\n a11y: { i18n },\r\n filter: {\r\n search: {\r\n container: '.importCampaignsGrid .grid-filter-container',\r\n property: 'Name',\r\n title: i18n.getString('Campaigns_SearchCampaign'),\r\n },\r\n pausedFilter: {\r\n container: '.importCampaignsGrid .show-paused-filter',\r\n property: 'Status',\r\n showPaused,\r\n forceHide: signupMode,\r\n },\r\n },\r\n toolbar: {\r\n container: '.importCampaignsGrid .grid-toolbar',\r\n },\r\n };\r\n\r\n const tableName = i18n.getString('Import_Campaigns_ViewDetail_ColumnName');\r\n\r\n return {\r\n el: '.importCampaignsGrid .grid-table',\r\n dataSource: {\r\n type: 'memory',\r\n data,\r\n },\r\n\r\n scrolling: {\r\n virtualized: true,\r\n header: {\r\n type: 'fixed',\r\n attributes: { 'aria-label': i18n.getString('{{tableName}} table header').replace('{{tableName}}', tableName) },\r\n },\r\n },\r\n\r\n selection: {\r\n bodyClasses: 'text-center',\r\n headClasses: 'text-center',\r\n },\r\n columns: columnsConfig,\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': tableName },\r\n plugins,\r\n };\r\n}\r\n\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\n\r\nimport projectionGrid from 'projection-grid';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\n\r\nimport { generateFilterPlugin } from '../../../plugin/index';\r\nimport template from './campaign-selection-grid-template.pug';\r\nimport { CampaignGridViewModel } from './campaign-selection-grid-viewmodel';\r\n\r\nimport { generateConfig } from './campaign-selection-grid-config';\r\n\r\nexport class CampaignGridView extends Backbone.View {\r\n initialize({\r\n data = [],\r\n showPaused = false,\r\n signupMode,\r\n i18n,\r\n repo,\r\n multiAccountMode = false,\r\n isAIMImportEnabled,\r\n getGridConfig,\r\n }) {\r\n const localizedData = _.map(data, obj => _.extend(obj, { Status: i18n.get(`CampaignImport_EntityStatus${obj.Status}`) }));\r\n const sortedData = _.sortBy(localizedData, obj => obj.Name.toString().toLowerCase());\r\n\r\n const getConfig = getGridConfig || generateConfig;\r\n this.config = getConfig({\r\n i18n,\r\n data: sortedData,\r\n showPaused,\r\n signupMode,\r\n });\r\n this.i18n = i18n;\r\n this.toolbarList = ['search'];\r\n this.koModel = new CampaignGridViewModel({\r\n data: localizedData,\r\n repo,\r\n isAIMImportEnabled,\r\n });\r\n this.dataForImportAll = localizedData;\r\n this.signupMode = signupMode;\r\n this.multiAccountMode = multiAccountMode;\r\n this.maxLen = 96; // max length for summary info\r\n }\r\n\r\n render() {\r\n this.el.innerHTML = template({\r\n i18n: this.i18n,\r\n signupMode: this.signupMode,\r\n singleAccountMode: !this.multiAccountMode,\r\n });\r\n ko.applyBindings(this.koModel, this.el);\r\n\r\n const ensureRenderImportSpecific = _.once(this.renderImportSpecific).bind(this);\r\n\r\n this.koModel.importAll.subscribe((newValue) => {\r\n if (!newValue) {\r\n ensureRenderImportSpecific();\r\n }\r\n this.trigger('change:select');\r\n }, this);\r\n\r\n this.koModel.hasError.subscribe((value) => {\r\n this.trigger('change:error', value);\r\n });\r\n\r\n return this;\r\n }\r\n\r\n renderImportSpecific() {\r\n this.grid = projectionGrid\r\n .factory({ vnext: true })\r\n .use(a11yPlugin)\r\n .use(generateFilterPlugin({\r\n i18n: this.i18n,\r\n }))\r\n .use(assistedSelectionPlugin)\r\n .create(this.config);\r\n\r\n this.gridView = this.grid.gridView;\r\n this.gridView.render();\r\n this.grid.memoryFilter.render();\r\n\r\n this.gridView.on('willUpdate', () => {\r\n $(this.config.el).addClass('fixed-height');\r\n }, this);\r\n\r\n this.gridView.on('didUpdate', () => {\r\n $(this.config.el).removeClass('fixed-height');\r\n this.koModel.selectedCampaigns(this.gridView.selectedItems());\r\n this.trigger('change:select');\r\n }, this);\r\n\r\n return this;\r\n }\r\n\r\n getCurrentSetting() {\r\n return {\r\n showPaused: !this.koModel.importAll() &&\r\n this.grid.memoryFilter.getShowPausedValue(),\r\n };\r\n }\r\n\r\n getSelectedCampaigns() {\r\n if (this.koModel.importAll()) {\r\n return [];\r\n }\r\n\r\n return _.map(this.gridView.selectedItems(), item => item.Id);\r\n }\r\n\r\n areAnyPausedCampaignsSelected() {\r\n return !this.koModel.importAll() &&\r\n _.reduce(\r\n this.gridView.selectedItems(),\r\n (memo, item) => (memo || item.Status === this.i18n.getString('CampaignImport_EntityStatusPaused')), false\r\n );\r\n }\r\n\r\n selectCampaigns(campaignIds) {\r\n if (_.size(campaignIds) > 0) {\r\n // select import specific campaigns and show paused\r\n this.koModel.importAll(false);\r\n this.grid.memoryFilter.enableShowPaused();\r\n\r\n const wrappedSetCampaigns = _.once(this.setSelectedCampaignsInGrid).bind(this);\r\n\r\n // select campaigns in grid after grid renders\r\n this.gridView.on('didUpdate', () => {\r\n if (this.gridView._isRendered) { // eslint-disable-line no-underscore-dangle\r\n wrappedSetCampaigns(campaignIds);\r\n }\r\n });\r\n }\r\n }\r\n\r\n setSelectedCampaignsInGrid(campaignIds) {\r\n const data = this.gridView.itemArray;\r\n const selectedCampaigns = _.map(_.filter(data, obj => (\r\n _.contains(campaignIds, obj.Id)\r\n )), obj => (\r\n obj[this.gridView.primaryKey]\r\n ));\r\n\r\n _.each(selectedCampaigns, (obj) => {\r\n this.gridView.selectRow(obj);\r\n });\r\n this.koModel.selectedCampaigns(campaignIds);\r\n }\r\n\r\n getSummaryInfo() {\r\n if (this.koModel.importAll()) {\r\n return this.i18n.get('Import_SelectCampaign_AllCampaigns');\r\n }\r\n\r\n let summaryText = '';\r\n const totalCampaignsNumber = this.dataForImportAll.length;\r\n const selectedCampaignsNumber = this.gridView.selectedItems().length;\r\n const totalActiveCampaignsNumber = _.size(this.grid.memoryFilter.totalDataWithActiveFilter);\r\n\r\n if (selectedCampaignsNumber === totalCampaignsNumber ||\r\n selectedCampaignsNumber === totalActiveCampaignsNumber) {\r\n // check if there any active campaigns\r\n if (totalActiveCampaignsNumber === 0) {\r\n summaryText = this.i18n.get('Import_SelectCampaign_AllPaused');\r\n } else if (selectedCampaignsNumber === totalActiveCampaignsNumber) {\r\n summaryText = this.i18n.get('Import_SelectCampaign_AllActive');\r\n } else {\r\n summaryText = this.i18n.get('Import_SelectCampaign_AllCampaigns');\r\n }\r\n } else {\r\n _.every(this.gridView.selectedItems(), (campaign) => {\r\n if (summaryText.length + campaign.Name.length < this.maxLen) {\r\n summaryText += `${campaign.Name}, `;\r\n return true;\r\n }\r\n\r\n summaryText += '...';\r\n return false;\r\n });\r\n\r\n // summaryText may ends with \", \", we need to remove it.\r\n const trimPattern = /, $/;\r\n\r\n summaryText = summaryText.replace(trimPattern, '');\r\n }\r\n\r\n return summaryText;\r\n }\r\n\r\n showSpecificCampaigns() {\r\n this.koModel.importAll(false);\r\n }\r\n\r\n remove() {\r\n if (this.grid) {\r\n this.grid.memoryFilter.remove();\r\n this.gridView.remove();\r\n }\r\n return super.remove();\r\n }\r\n}\r\n","import PropTypes, { func, shape, number, bool, string, arrayOf } from 'prop-types';\r\n\r\nexport const CampaignDataArrayProps = arrayOf(shape({\r\n Id: number.isRequired,\r\n Name: string.isRequired,\r\n Status: string.isRequired,\r\n Type: string.isRequired,\r\n}));\r\nexport const RepositoryProps = shape({\r\n containDisplayType: func.isRequired,\r\n getGoogleAdGroupsByCampaignId: func.isRequired,\r\n});\r\nexport const AnnotatedDataProps = arrayOf(shape({\r\n id: number.isRequired,\r\n name: string.isRequired,\r\n status: string.isRequired,\r\n type: string.isRequired,\r\n availableWithFilter: bool.isRequired,\r\n}));\r\nexport const I18nProps = shape({\r\n getString: func.isRequired,\r\n get: func.isRequired,\r\n});\r\nexport const I18nAmdLoaderProps = shape({\r\n parseDecimal: func.isRequired,\r\n});\r\nexport const SelectionDataProps = shape({\r\n selectedCampaignIds: arrayOf(number),\r\n selectedWithActiveOnly: arrayOf(number),\r\n selectedAdGroupMap: PropTypes.objectOf(arrayOf(number)),\r\n});\r\nexport const StateGetterProps = shape({\r\n setSelectedDataGetter: func.isRequired,\r\n setImportAllGetter: func.isRequired,\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Checkbox } from '@bingads-webui-react/checkbox';\r\nimport { keyCode } from '@bingads-webui/keycode';\r\n\r\nimport { I18nProps } from './shapes';\r\n\r\nexport class GoogleCampaignAndAdGroupHeader extends React.PureComponent {\r\n static propTypes = {\r\n i18n: I18nProps.isRequired,\r\n ariaLabel: PropTypes.string.isRequired,\r\n selectAllChecked: PropTypes.bool.isRequired,\r\n onSelectAllCheckboxChange: PropTypes.func.isRequired,\r\n onSortChange: PropTypes.func.isRequired,\r\n sortInDescendingOrder: PropTypes.bool.isRequired,\r\n sortedProperty: PropTypes.string.isRequired,\r\n };\r\n\r\n handleSelectAllFilterChange = e => this.props.onSelectAllCheckboxChange(e.target.checked);\r\n\r\n render() {\r\n const sortString = this.props.sortInDescendingOrder ? 'descending' : 'ascending';\r\n const sortIcon = ;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.props.onSortChange('name')}\r\n tabIndex=\"0\"\r\n onKeyDown={(event) => {\r\n if ((event.keyCode === keyCode.Enter) || (event.keyCode === keyCode.Space)) {\r\n this.props.onSortChange('name');\r\n }\r\n }}\r\n >\r\n {this.props.sortedProperty === 'name' && sortIcon}\r\n {this.props.i18n.get('GoogleImport_SelectCampaign_CampaignName')}\r\n \r\n this.props.onSortChange('type')}\r\n tabIndex=\"0\"\r\n onKeyDown={(event) => {\r\n if ((event.keyCode === keyCode.Enter) || (event.keyCode === keyCode.Space)) {\r\n this.props.onSortChange('type');\r\n }\r\n }}\r\n >\r\n {this.props.sortedProperty === 'type' && sortIcon}\r\n {this.props.i18n.get('GoogleImport_SelectCampaign_Type')}\r\n \r\n \r\n {this.props.i18n.get('GoogleImport_SelectCampaign_AdGroupStatus')}\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n","export const ACTIVE_STATUS = 'Active';\r\nexport const PAUSED_STATUS = 'Paused';\r\nexport const SELECTALL_CHECKBOX_STATUS = {\r\n CHECKED: 0,\r\n UNCHECKED: 1,\r\n UNDEFINED: 2,\r\n};\r\nexport const MaxSelectedCampaignsWithSpecificAdGroups = 10;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FlattenedNode } from '@bingads-webui-react/tree-view';\r\nimport { TooltipHost, TooltipOverflowMode } from '@bingads-webui-react/fabric-control';\r\n\r\nimport { PAUSED_STATUS } from './constants';\r\n\r\nexport const ListNode = node => (\r\n \r\n \r\n \r\n \r\n {node.name}\r\n \r\n \r\n \r\n {node.isExpandable ? node.type : ''}\r\n \r\n \r\n {node.isExpandable ? node.selectionStatus : ''}\r\n \r\n \r\n);\r\n\r\nListNode.propTypes = PropTypes.shape(FlattenedNode);\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { TreeView, CheckBoxNode, NodeOperations } from '@bingads-webui-react/tree-view';\r\nimport { ListNode } from './list-node-renderer';\r\nimport { RepositoryProps, AnnotatedDataProps, StateGetterProps, I18nProps, SelectionDataProps } from './shapes';\r\nimport { ACTIVE_STATUS, SELECTALL_CHECKBOX_STATUS, MaxSelectedCampaignsWithSpecificAdGroups } from './constants';\r\n\r\nconst PAGE_SIZE = 20;\r\n\r\nexport class CampaignAdGroupTree extends React.PureComponent {\r\n static propTypes = {\r\n googleCustomerId: PropTypes.number.isRequired,\r\n i18n: I18nProps.isRequired,\r\n onErrorOrWarning: PropTypes.func.isRequired,\r\n onSelectionChange: PropTypes.func.isRequired,\r\n annotatedData: AnnotatedDataProps.isRequired,\r\n pageNumber: PropTypes.number.isRequired,\r\n repository: RepositoryProps.isRequired,\r\n selectionData: SelectionDataProps.isRequired,\r\n showPausedAdGroups: PropTypes.bool.isRequired,\r\n selectAllCheckboxStatus: PropTypes.number.isRequired,\r\n toggleSelectAllCheckboxOnGridUpdate: PropTypes.func.isRequired,\r\n stateGetter: StateGetterProps.isRequired,\r\n setUiBlocker: PropTypes.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.campaignSelectedStatus = {\r\n NONE: this.props.i18n.get('GoogleImport_SelectEntities_None'),\r\n SPECIFIC_SELECTED: this.props.i18n.get('GoogleImport_SelectEntities_Specific'),\r\n ALL_EXISTING_AND_NEW_ENABLED: this.props.i18n.get('GoogleImport_SelectEntities_ExistingAndNewEnabled'),\r\n ALL_EXISTING_AND_NEW: this.props.i18n.get('GoogleImport_SelectEntities_ExistingAndNew'),\r\n };\r\n\r\n this.expandIconAriaLabel = this.props.i18n.get('GoogleImport_ExpandableNode');\r\n\r\n const initialDataState = this.initializeSelectionAndExpansionData();\r\n const initialNodeState = this.buildNodes(this.props, initialDataState);\r\n this.state = _.extend(initialDataState, initialNodeState);\r\n\r\n this.props.stateGetter.setSelectedDataGetter(() =>\r\n _.pick(this.state, 'selectedCampaignIds', 'selectedWithActiveOnly', 'selectedAdGroupMap'));\r\n\r\n this.checkAndPropogateEmptyError(this.state);\r\n this.updateSelectAllFilter(this.props, this.state);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const state = prevProps.selectionData !== this.props.selectionData ?\r\n this.initializeSelectionAndExpansionData(newState => this.setState(newState))\r\n : this.state;\r\n\r\n if (\r\n prevProps.annotatedData !== this.props.annotatedData\r\n || prevProps.showPausedAdGroups !== this.props.showPausedAdGroups\r\n || prevProps.pageNumber !== this.props.pageNumber) {\r\n this.updateNodes(this.props, state, newState => this.setState(newState));\r\n this.updateSelectAllFilter(this.props, state);\r\n } else if ((prevProps.selectAllCheckboxStatus !== this.props.selectAllCheckboxStatus) &&\r\n (this.props.selectAllCheckboxStatus !== SELECTALL_CHECKBOX_STATUS.UNDEFINED)) {\r\n this.selectAllFiltered();\r\n }\r\n\r\n if (prevProps.stateGetter !== this.props.stateGetter) {\r\n this.props.stateGetter.setSelectedDataGetter(() =>\r\n _.pick(this.state, 'selectedCampaignIds', 'selectedWithActiveOnly', 'selectedAdGroupMap'));\r\n }\r\n\r\n this.checkAndPropogateEmptyError(state);\r\n this.checkAndRemoveThrotllingAlert();\r\n }\r\n\r\n /* Event handlers */\r\n\r\n onNodeExpanded = (unused, node) => {\r\n if (!this.isThrottlingRequired(node)) {\r\n this.props.setUiBlocker(true);\r\n this.props.repository.getGoogleAdGroupsByCampaignId(this.props.googleCustomerId, node.id)\r\n .then((expandedAdGroupData) => {\r\n this.setState((prevState, prevProps) => {\r\n const { nodes } = prevState;\r\n const newState = { expandedAdGroupData };\r\n const newNodes = _.map(nodes, (n) => {\r\n if (n.id === node.id) {\r\n return this.expandNode(_.extend({}, prevState, newState), node, prevProps);\r\n }\r\n if (n.state.expanded) {\r\n return this.collapseNode(n);\r\n }\r\n return n;\r\n });\r\n return { nodes: newNodes, expandedAdGroupData };\r\n });\r\n })\r\n .finally(() => this.props.setUiBlocker(false));\r\n } else {\r\n this.props.onErrorOrWarning(this.props.i18n.get('Maximum_Selected_Specific_Campaign_Reached'), true);\r\n }\r\n }\r\n\r\n onNodeCollapsed = (unused, node) => {\r\n this.setState((prevState) => {\r\n const { nodes } = prevState;\r\n const newNodes = this.rebuildWithReplaceAction(nodes, node.id, this.collapseNode);\r\n return { nodes: newNodes, expandedAdGroupData: [] };\r\n });\r\n }\r\n\r\n onNodeSelected = (unused, node) => {\r\n const isDisplayType = this.props.repository.containDisplayType([node]);\r\n if (node.isExpandable) {\r\n this.setState((prevState, prevProps) => {\r\n const {\r\n nodes, selectedCampaignIds, selectedWithActiveOnly,\r\n } = prevState;\r\n const { id, state: { checked } } = node;\r\n const newState = {};\r\n if (checked) {\r\n if (prevProps.showPausedAdGroups) {\r\n newState.selectedCampaignIds = _.uniq(_.union(selectedCampaignIds, [id]));\r\n } else {\r\n newState.selectedWithActiveOnly = _.uniq(_.union(selectedWithActiveOnly, [id]));\r\n }\r\n } else {\r\n _.extend(newState, this.removeCampaignSelection(prevState, id));\r\n }\r\n newState.nodes = this.rebuildWithReplaceAction(\r\n nodes, id,\r\n _.partial(this.selectCampaignNode, _.extend({}, prevState, newState))\r\n );\r\n this.props.onSelectionChange(id, checked, isDisplayType);\r\n return newState;\r\n }, () => this.updateSelectAllFilter(this.props, this.state));\r\n } else {\r\n this.setState((prevState) => {\r\n const { nodes, expandedAdGroupData, selectedAdGroupMap } = prevState;\r\n const parentId = node.campaignId;\r\n const parentNode = _.where(nodes, { id: parentId })[0];\r\n const parentSelectionStatus = this.determineSelectionStatus(prevState, parentNode);\r\n\r\n // build list based on status\r\n let initialSelection;\r\n switch (parentSelectionStatus) {\r\n case this.campaignSelectedStatus.ALL_EXISTING_AND_NEW:\r\n initialSelection = _.pluck(expandedAdGroupData, 'Id');\r\n break;\r\n case this.campaignSelectedStatus.ALL_EXISTING_AND_NEW_ENABLED:\r\n initialSelection = _.pluck(_.filter(expandedAdGroupData, n => n.Status === ACTIVE_STATUS), 'Id');\r\n break;\r\n case this.campaignSelectedStatus.SPECIFIC_SELECTED:\r\n initialSelection = selectedAdGroupMap[parentId];\r\n break;\r\n default:\r\n initialSelection = [];\r\n break;\r\n }\r\n\r\n // replace previous selection with new selection\r\n const newState = {};\r\n _.extend(newState, this.removeCampaignSelection(prevState, parentId));\r\n const newSelection = _.uniq(node.state.checked ?\r\n _.union(initialSelection, [node.id])\r\n : _.without(initialSelection, node.id));\r\n const parentChecked = !_.isEmpty(newSelection);\r\n if (parentChecked) {\r\n newState.selectedAdGroupMap = _.clone(selectedAdGroupMap);\r\n newState.selectedAdGroupMap[parentId] = newSelection;\r\n }\r\n\r\n newState.nodes = this.rebuildWithReplaceAction(\r\n nodes, parentId,\r\n _.partial(this.selectAdGroupNode, newState, node)\r\n );\r\n this.props.onSelectionChange(parentId, parentChecked, isDisplayType);\r\n return newState;\r\n }, () => this.updateSelectAllFilter(this.props, this.state));\r\n }\r\n }\r\n\r\n /* Helper/Misc functions */\r\n\r\n getClassNames = node => [`checkbox-node-${node.id}`, {\r\n 'expanded-node': node.isExpandable && node.state && node.state.expanded,\r\n 'collapsed-node': node.isExpandable && !(node.state && node.state.expanded),\r\n 'leaf-node': !node.isExpandable,\r\n }];\r\n\r\n getFilteredCampaignIds = (annotatedData) => {\r\n const filteredNodes = _.filter(annotatedData, node => node.availableWithFilter);\r\n return _.map(filteredNodes, node => node.id);\r\n }\r\n\r\n isMaxSelectedSpecificCampaignReached = () =>\r\n _.keys(this.state.selectedAdGroupMap).length >= MaxSelectedCampaignsWithSpecificAdGroups;\r\n\r\n isThrottlingRequired = node =>\r\n this.isMaxSelectedSpecificCampaignReached() && !(node.id in this.state.selectedAdGroupMap);\r\n\r\n initializeSelectionAndExpansionData = (callback) => {\r\n const newState = {\r\n selectedCampaignIds: this.props.selectionData.selectedCampaignIds || [],\r\n selectedWithActiveOnly: this.props.selectionData.selectedWithActiveOnly || [],\r\n selectedAdGroupMap: this.props.selectionData.selectedAdGroupMap || {},\r\n expandedAdGroupData: [],\r\n };\r\n if (callback) callback(newState);\r\n return newState;\r\n }\r\n\r\n combineOrDiff = (combine, arr1, arr2) => {\r\n const result = combine ?\r\n _.uniq(_.union(arr1, arr2)) : _.difference(arr1, arr2);\r\n return result;\r\n }\r\n\r\n rebuildWithReplaceAction = (arr, id, action) =>\r\n _.map(arr, (val) => {\r\n if (val.id === id) {\r\n return action(val);\r\n }\r\n return val;\r\n });\r\n\r\n checkAndPropogateEmptyError = (state) => {\r\n if (_.isEmpty(state.selectedCampaignIds)\r\n && _.isEmpty(state.selectedWithActiveOnly)\r\n && _.isEmpty(state.selectedAdGroupMap)) {\r\n this.props.onErrorOrWarning(this.props.i18n.get('Validation_CampaignSelectionRequired'));\r\n } else {\r\n this.props.onErrorOrWarning('');\r\n }\r\n }\r\n\r\n checkAndRemoveThrotllingAlert = () => {\r\n if (!this.isMaxSelectedSpecificCampaignReached()) {\r\n this.props.onErrorOrWarning('', true);\r\n }\r\n }\r\n\r\n /* Node transformers */\r\n\r\n selectAllFiltered = () => {\r\n this.setState((prevState, props) => {\r\n const { selectAllCheckboxStatus, annotatedData } = props;\r\n const {\r\n selectedCampaignIds, selectedWithActiveOnly, selectedAdGroupMap,\r\n } = prevState;\r\n const newState = {};\r\n const filteredCampaignIds = this.getFilteredCampaignIds(annotatedData);\r\n newState.selectedCampaignIds = this.combineOrDiff(\r\n selectAllCheckboxStatus === SELECTALL_CHECKBOX_STATUS.CHECKED && props.showPausedAdGroups,\r\n selectedCampaignIds,\r\n filteredCampaignIds\r\n );\r\n newState.selectedWithActiveOnly = this.getFilteredCampaignIds(annotatedData);\r\n newState.selectedWithActiveOnly = this.combineOrDiff(\r\n selectAllCheckboxStatus === SELECTALL_CHECKBOX_STATUS.CHECKED && !props.showPausedAdGroups,\r\n selectedWithActiveOnly,\r\n filteredCampaignIds\r\n );\r\n newState.selectedAdGroupMap = _.omit(selectedAdGroupMap, filteredCampaignIds);\r\n return newState;\r\n }, () => this.updateNodes(this.props, this.state, newState => this.setState(newState)));\r\n }\r\n\r\n expandNode = (state, campaignNode) =>\r\n _.extend({}, campaignNode, {\r\n state: _.extend({}, campaignNode.state, { expanded: true }),\r\n children: this.buildAdGroupNodes(state, campaignNode, this.props.showPausedAdGroups),\r\n });\r\n\r\n collapseNode = campaignNode =>\r\n _.extend({}, campaignNode, {\r\n state: _.extend({}, campaignNode.state, { expanded: false }),\r\n children: [],\r\n });\r\n\r\n selectCampaignNode = (selectedData, campaignNode) => {\r\n const checked = !campaignNode.state.checked;\r\n return _.extend({}, campaignNode, {\r\n selectionStatus: this.determineSelectionStatus(selectedData, campaignNode),\r\n state: _.extend({}, campaignNode.state, { checked, indeterminate: false }),\r\n children: _.map(campaignNode.children, n =>\r\n _.extend(n, {\r\n state: _.extend({}, n.state, { checked }),\r\n })),\r\n });\r\n }\r\n\r\n selectAdGroupNode = (selectedData, adGroupNode, campaignNode) => {\r\n const resultNode = _.extend({}, campaignNode);\r\n const resultSelectionStatus = this.determineSelectionStatus(selectedData, campaignNode);\r\n const newChildren = _.map(campaignNode.children, (n) => {\r\n if (n.id === adGroupNode.id) {\r\n return adGroupNode;\r\n }\r\n return n;\r\n });\r\n return _.extend(resultNode, {\r\n state: _.extend({}, resultNode.state, {\r\n checked: resultSelectionStatus !== this.campaignSelectedStatus.NONE,\r\n indeterminate: resultSelectionStatus === this.campaignSelectedStatus.SPECIFIC_SELECTED,\r\n }),\r\n selectionStatus: resultSelectionStatus,\r\n children: newChildren,\r\n });\r\n }\r\n\r\n /* Selection helpers */\r\n\r\n determineSelectionStatus = (selectedData, node) => {\r\n const { id } = node;\r\n const { selectedCampaignIds, selectedWithActiveOnly, selectedAdGroupMap } = selectedData;\r\n if (_.contains(selectedCampaignIds, id)) {\r\n return this.campaignSelectedStatus.ALL_EXISTING_AND_NEW;\r\n }\r\n if (_.contains(selectedWithActiveOnly, id)) {\r\n return this.campaignSelectedStatus.ALL_EXISTING_AND_NEW_ENABLED;\r\n }\r\n if (_.has(selectedAdGroupMap, id)) {\r\n if (_.size(selectedAdGroupMap[id]) === _.size(node.children)) {\r\n return this.campaignSelectedStatus.ALL_EXISTING_AND_NEW;\r\n }\r\n return this.campaignSelectedStatus.SPECIFIC_SELECTED;\r\n }\r\n return this.campaignSelectedStatus.NONE;\r\n }\r\n\r\n removeCampaignSelection = (state, id) => {\r\n const { selectedCampaignIds, selectedWithActiveOnly, selectedAdGroupMap } = state;\r\n const changes = {};\r\n\r\n if (_.contains(selectedCampaignIds, id)) {\r\n changes.selectedCampaignIds = _.without(selectedCampaignIds, id);\r\n }\r\n if (_.contains(selectedWithActiveOnly, id)) {\r\n changes.selectedWithActiveOnly = _.without(selectedWithActiveOnly, id);\r\n }\r\n if (_.has(selectedAdGroupMap, id)) {\r\n changes.selectedAdGroupMap = _.omit(selectedAdGroupMap, id);\r\n }\r\n return changes;\r\n }\r\n\r\n /* Build functions */\r\n\r\n updateNodes = (newProps, state, callback) => callback(this.buildNodes(newProps, state));\r\n\r\n updateSelectAllFilter = (prevProps, newState) => {\r\n const { selectedCampaignIds, selectedAdGroupMap, selectedWithActiveOnly } = newState;\r\n const { annotatedData } = prevProps;\r\n const allSelectedIds = _.union(\r\n selectedCampaignIds,\r\n selectedWithActiveOnly,\r\n _.map(_.keys(selectedAdGroupMap), id => parseInt(id, 10))\r\n );\r\n const filteredCampaignIds = this.getFilteredCampaignIds(annotatedData);\r\n const remainingUnselectedCampaigns = _.difference(filteredCampaignIds, allSelectedIds);\r\n this.props.toggleSelectAllCheckboxOnGridUpdate(remainingUnselectedCampaigns.length < 1\r\n && filteredCampaignIds.length > 0);\r\n }\r\n\r\n buildNodes = (newProps, state) => {\r\n const { annotatedData, pageNumber, showPausedAdGroups } = newProps;\r\n const { expandedAdGroupData } = state;\r\n const expandedId = expandedAdGroupData && expandedAdGroupData[0]\r\n && expandedAdGroupData[0].campaignId;\r\n\r\n let visCount = 0;\r\n const newState = {};\r\n newState.nodes = _.compact(_.map(annotatedData, (op) => {\r\n const isExpanded = op.id === expandedId;\r\n const resultSelectionStatus = this.determineSelectionStatus(state, op);\r\n if (op.availableWithFilter) {\r\n visCount += 1;\r\n if (visCount > pageNumber * PAGE_SIZE && visCount <= (pageNumber + 1) * PAGE_SIZE) {\r\n return _.extend(_.pick(op, 'id', 'name', 'status', 'type'), {\r\n isExpandable: true,\r\n selectionStatus: resultSelectionStatus,\r\n state: {\r\n checked: resultSelectionStatus !== this.campaignSelectedStatus.NONE,\r\n expanded: isExpanded,\r\n indeterminate:\r\n resultSelectionStatus === this.campaignSelectedStatus.SPECIFIC_SELECTED,\r\n },\r\n children: isExpanded ?\r\n this.buildAdGroupNodes(this.state, op, showPausedAdGroups)\r\n : [],\r\n });\r\n }\r\n }\r\n\r\n if (isExpanded) newState.expandedAdGroupData = [];\r\n return undefined;\r\n }));\r\n return newState;\r\n }\r\n\r\n buildAdGroupNodes = (state, campaignNode, showPausedAdGroups) => {\r\n const campaignId = campaignNode.id;\r\n const { expandedAdGroupData, selectedAdGroupMap } = state;\r\n const selectionStatus = this.determineSelectionStatus(state, campaignNode);\r\n return _.compact(_.map(expandedAdGroupData, (obj) => {\r\n const isActive = obj.Status === ACTIVE_STATUS;\r\n if (showPausedAdGroups || isActive) {\r\n const checked =\r\n selectionStatus === this.campaignSelectedStatus.ALL_EXISTING_AND_NEW\r\n || (selectionStatus === this.campaignSelectedStatus.ALL_EXISTING_AND_NEW_ENABLED\r\n && isActive)\r\n || (selectionStatus === this.campaignSelectedStatus.SPECIFIC_SELECTED\r\n && _.contains(selectedAdGroupMap[campaignId], obj.Id));\r\n return {\r\n id: obj.Id,\r\n name: obj.Name,\r\n status: obj.Status,\r\n type: obj.Type,\r\n campaignId: obj.campaignId,\r\n state: {\r\n checked,\r\n },\r\n };\r\n }\r\n\r\n return undefined;\r\n }));\r\n }\r\n\r\n updateTypeHandlers = () => ({\r\n [NodeOperations.SELECTED]: this.onNodeSelected,\r\n [NodeOperations.EXPANDED]: this.onNodeExpanded,\r\n [NodeOperations.COLLAPSED]: this.onNodeCollapsed,\r\n })\r\n\r\n render = () => (\r\n \r\n );\r\n}\r\n","/*\r\n Combines search box, filter, uiblocker and TreeView\r\n*/\r\nimport _ from 'underscore';\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { SearchBox, SearchResultLiveRegion } from '@bingads-webui-react/search-box';\r\nimport { Pagination } from '@bingads-webui-react/pagination';\r\nimport { Checkbox } from '@bingads-webui-react/checkbox';\r\nimport { Alert } from '@bingads-webui-react/alert';\r\nimport { getShowNoActiveCampaignCouponAlert } from '@bingads-webui-campaign/import-components';\r\n\r\nimport { GoogleCampaignAndAdGroupHeader } from './header';\r\nimport { RepositoryProps, CampaignDataArrayProps, I18nProps, StateGetterProps, SelectionDataProps, I18nAmdLoaderProps } from './shapes';\r\nimport { CampaignAdGroupTree } from './tree-view';\r\nimport { ACTIVE_STATUS, PAUSED_STATUS, SELECTALL_CHECKBOX_STATUS } from './constants';\r\n\r\nconst PAGE_SIZE = 20;\r\nconst INITIAL_PAGE_NUMBER = 0;\r\n\r\nexport class GoogleCampaignAndAdGroupSelector extends Component {\r\n static propTypes = {\r\n data: CampaignDataArrayProps.isRequired,\r\n googleCustomerId: PropTypes.number.isRequired,\r\n i18n: I18nProps.isRequired,\r\n i18nAmdLoader: I18nAmdLoaderProps.isRequired,\r\n onErrorOrWarning: PropTypes.func.isRequired,\r\n onSelectionChange: PropTypes.func.isRequired,\r\n repository: RepositoryProps.isRequired,\r\n selectionData: SelectionDataProps,\r\n stateGetter: StateGetterProps,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n logScenario: PropTypes.object,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n coupon: PropTypes.object,\r\n };\r\n\r\n static defaultProps = {\r\n selectionData: {},\r\n stateGetter: {\r\n setSelectedDataGetter: _.noop,\r\n setImportAllGetter: _.noop,\r\n },\r\n logScenario: undefined,\r\n coupon: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = this.initializeState();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.logScenario) {\r\n if (prevState.selectAllCheckboxChecked !== this.state.selectAllCheckboxChecked) {\r\n this.props.logScenario.selectAllCampaigns.create()\r\n .signal(this.state.selectAllCheckboxChecked);\r\n }\r\n if (prevState.showPausedCampaigns !== this.state.showPausedCampaigns) {\r\n this.props.logScenario.showPausedCampaigns.create().signal(this.state.showPausedCampaigns);\r\n }\r\n if (prevState.showPausedAdGroups !== this.state.showPausedAdGroups) {\r\n this.props.logScenario.showPausedAdGroups.create().signal(this.state.showPausedAdGroups);\r\n }\r\n if (prevState.query !== this.state.query) {\r\n this.props.logScenario.searchInCampaign.create().signal(this.state.query);\r\n }\r\n }\r\n\r\n if (prevProps.data !== this.props.data\r\n || prevProps.selectionData !== this.props.selectionData) {\r\n this.initializeState(newState => this.setState(newState));\r\n } else {\r\n getShowNoActiveCampaignCouponAlert(\r\n this.props.coupon,\r\n this.props.data,\r\n this.props.stateGetter.getSelectedData(),\r\n (showNoActiveCampaignCouponAlert) => {\r\n if (this.state.showNoActiveCampaignCouponAlert !== showNoActiveCampaignCouponAlert) {\r\n this.setState({ showNoActiveCampaignCouponAlert });\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n onSelectionChange = (id, checked, isDisplayType) => {\r\n this.props.onSelectionChange(id, checked, isDisplayType);\r\n\r\n // need to log this with a timeout, otherwise the new item\r\n // that gets selected is not reflected in getSelectedData\r\n if (this.props.logScenario) {\r\n setTimeout(() => {\r\n const selectionData = this.props.stateGetter.getSelectedData();\r\n const selectionToLog = {};\r\n selectionToLog.campaigns = _.map(\r\n selectionData.selectedCampaignIds,\r\n campaignId => _.find(this.props.data, campaign => campaign.Id === campaignId)\r\n );\r\n selectionToLog.adGroups = selectionData.selectedAdGroupMap;\r\n this.props.logScenario.campaignSelectionChanged.create().signal(selectionToLog);\r\n }, 500);\r\n }\r\n };\r\n\r\n /*\r\n Event handlers\r\n */\r\n onCampaignFilterChange = (updates) => {\r\n this.setState((prevState) => {\r\n const newState = _.defaults({}, updates, prevState);\r\n const { annotatedData, availableCount } = this.buildAnnotatedData(newState);\r\n\r\n const pageNumber = prevState.pageNumber * PAGE_SIZE < availableCount ?\r\n prevState.pageNumber : Math.floor(availableCount / PAGE_SIZE);\r\n return {\r\n ...updates, annotatedData, availableCount, pageNumber,\r\n };\r\n });\r\n };\r\n\r\n onPageNumberChanged = (pageNumber) => {\r\n // log pageNumberChange here instead of in componentDidUpdate because on filter change\r\n // it would also trigger page number change which should not be logged\r\n if (this.props.logScenario) {\r\n this.props.logScenario.pageNumberChange.create().signal(pageNumber);\r\n }\r\n this.setState({ pageNumber });\r\n };\r\n\r\n onQuery = query => this.onCampaignFilterChange({ query });\r\n\r\n onCampaignFilter = e => this.onCampaignFilterChange({ showPausedCampaigns: e.target.checked });\r\n\r\n onAdGroupFilter = e => this.setState({ showPausedAdGroups: e.target.checked });\r\n\r\n onSelectAllCheckboxChange = (selectAllCheckboxChecked) => {\r\n this.setState({\r\n selectAllCheckboxChecked,\r\n selectAllCheckboxStatus: selectAllCheckboxChecked ?\r\n SELECTALL_CHECKBOX_STATUS.CHECKED : SELECTALL_CHECKBOX_STATUS.UNCHECKED,\r\n });\r\n };\r\n\r\n setUiBlocker = blocking => this.setState({ blocking });\r\n\r\n initializeState(callback) {\r\n const sortedData = _.sortBy(this.props.data, obj => obj.Name.toString().toLowerCase());\r\n const pausedCampaigns = _.where(sortedData, { Status: PAUSED_STATUS });\r\n\r\n const showNoActiveCampaignCouponAlert = getShowNoActiveCampaignCouponAlert(\r\n this.props.coupon,\r\n this.props.data,\r\n this.props.selectionData\r\n );\r\n\r\n const initialState = {\r\n query: '',\r\n showPausedCampaignsDisabled: _.isEmpty(pausedCampaigns),\r\n showPausedCampaigns: !_.isEmpty(this.props.selectionData)\r\n || pausedCampaigns.length === sortedData.length,\r\n showPausedAdGroups: true,\r\n selectAllCheckboxStatus: SELECTALL_CHECKBOX_STATUS.UNCHECKED,\r\n selectAllCheckboxChecked: false,\r\n blocking: false,\r\n pageNumber: INITIAL_PAGE_NUMBER,\r\n annotatedData: sortedData,\r\n sortInDescendingOrder: false,\r\n sortedProperty: '',\r\n showNoActiveCampaignCouponAlert,\r\n };\r\n const initialAnnotatedState = this.buildAnnotatedData(initialState);\r\n const newState = _.extend(initialState, initialAnnotatedState);\r\n\r\n if (callback) callback(newState);\r\n return newState;\r\n }\r\n\r\n toggleSelectAllCheckboxOnGridUpdate = (selectAllCheckboxChecked) => {\r\n this.setState({\r\n selectAllCheckboxChecked,\r\n selectAllCheckboxStatus: SELECTALL_CHECKBOX_STATUS.UNDEFINED,\r\n });\r\n };\r\n\r\n sortAnnotatedData = (property) => {\r\n this.setState((prevState) => {\r\n const { annotatedData, sortedProperty, sortInDescendingOrder } = prevState;\r\n if (sortedProperty === property || (_.isEmpty(sortedProperty) && property === 'name')) {\r\n return {\r\n annotatedData: _.clone(annotatedData).reverse(),\r\n sortedProperty: property,\r\n sortInDescendingOrder: !sortInDescendingOrder,\r\n };\r\n }\r\n\r\n const newAnnotatedData = _.sortBy(\r\n annotatedData,\r\n obj => obj[property].toString().toLowerCase()\r\n );\r\n return {\r\n annotatedData: newAnnotatedData, sortedProperty: property, sortInDescendingOrder: false,\r\n };\r\n });\r\n };\r\n\r\n buildAnnotatedData = (state) => {\r\n const { query, showPausedCampaigns } = state;\r\n let availableCount = 0;\r\n const annotatedData = _.map(state.annotatedData, (op) => {\r\n const status = op.status || op.Status;\r\n const name = op.name || op.Name;\r\n const availableWithFilter =\r\n (!query || name.toLowerCase().indexOf(query.toLowerCase()) !== -1)\r\n && (showPausedCampaigns || status === ACTIVE_STATUS);\r\n availableCount += availableWithFilter;\r\n return {\r\n id: op.id || op.Id,\r\n name,\r\n status,\r\n type: op.type || op.Type,\r\n availableWithFilter,\r\n };\r\n });\r\n return { annotatedData, availableCount };\r\n };\r\n\r\n render() {\r\n const { i18n, data } = this.props;\r\n const tableName = i18n.get('GoogleImport_GoogleAdsCampaigns_ViewDetail_ColumnName');\r\n const headerAriaLabel = i18n.getString('{{tableName}} table header').replace('{{tableName}}', tableName);\r\n\r\n const containPmaxCampaign = _.find(data, campaign => campaign.TypeId === 7);\r\n const showPausedAdGroupMessage = containPmaxCampaign ?\r\n this.props.i18n.get('GoogleImport_SelectAdGroupsAndAssetGroups_ShowPaused') :\r\n this.props.i18n.get('GoogleImport_SelectAdGroups_ShowPaused');\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {this.state.showNoActiveCampaignCouponAlert && (\r\n
\r\n }\r\n dismissible={false}\r\n message={i18n.get('FAC_GImport_Inline_MustHave1ActiveAccount')}\r\n />\r\n
\r\n )}\r\n \r\n {this.props.i18n.get('GoogleImport_SelectCampaign_ShowPaused')}\r\n \r\n \r\n {showPausedAdGroupMessage}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { RadioGroup } from '@bingads-webui-react/primitive';\r\n\r\nimport { I18nProps, I18nAmdLoaderProps, RepositoryProps, CampaignDataArrayProps, SelectionDataProps, StateGetterProps } from './shapes';\r\nimport { GoogleCampaignAndAdGroupSelector } from './list-box';\r\n\r\nexport class GoogleCampaignAndAdGroupStep extends React.PureComponent {\r\n static propTypes = {\r\n data: CampaignDataArrayProps.isRequired,\r\n googleCustomerId: PropTypes.number.isRequired,\r\n i18n: I18nProps.isRequired,\r\n i18nAmdLoader: I18nAmdLoaderProps.isRequired,\r\n onError: PropTypes.func.isRequired,\r\n onSelectionChange: PropTypes.func.isRequired,\r\n repository: RepositoryProps.isRequired,\r\n selectionData: SelectionDataProps.isRequired,\r\n stateGetter: StateGetterProps.isRequired,\r\n // eslint-disable-next-line react/no-unused-prop-types\r\n renderDisplayCampaignAlert: PropTypes.func,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n logScenario: PropTypes.object,\r\n importAllCampaignsSelected: PropTypes.func,\r\n importSpecificCampaignSelectedLog: PropTypes.func,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n coupon: PropTypes.object,\r\n };\r\n\r\n static defaultProps = {\r\n renderDisplayCampaignAlert: undefined,\r\n logScenario: undefined,\r\n importSpecificCampaignSelectedLog: () => {},\r\n importAllCampaignsSelected: () => {},\r\n coupon: null,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = this.initializeState();\r\n this.props.stateGetter.setImportAllGetter((() => this.state.importAll));\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.data !== this.props.data\r\n || prevProps.selectionData !== this.props.selectionData) {\r\n this.initializeState(newState => this.setState(newState));\r\n }\r\n if (prevProps.stateGetter !== this.props.stateGetter) {\r\n this.props.stateGetter.setImportAllGetter((() => this.state.importAll));\r\n }\r\n }\r\n\r\n initializeState(callback) {\r\n const dataHasDisplayType = this.props.repository.containDisplayType(this.props.data);\r\n const availableIdBoolMap = _.object(_.map(this.props.data, obj => [obj.Id, true]));\r\n const selectedIds = _.union(\r\n this.props.selectionData.selectedCampaignIds,\r\n this.props.selectionData.selectedWithActiveOnly,\r\n _.map(_.keys(this.props.selectionData.selectedAdGroupMap), id => parseInt(id, 10))\r\n );\r\n this.props.onError('');\r\n const newState = {\r\n error: '',\r\n warning: '',\r\n importAll: _.isEmpty(this.props.selectionData)\r\n || _.every(this.props.selectionData, _.isEmpty),\r\n dataHasDisplayType,\r\n selectedDisplayIds: _.filter(selectedIds, id => availableIdBoolMap[id]),\r\n };\r\n\r\n if (callback) callback(newState);\r\n return newState;\r\n }\r\n\r\n handleRadioChange = (item) => {\r\n const importAll = item.val;\r\n if (importAll) {\r\n this.props.importAllCampaignsSelected();\r\n } else {\r\n this.props.importSpecificCampaignSelectedLog();\r\n }\r\n const newState = {\r\n importAll,\r\n };\r\n if (importAll) {\r\n this.handleErrorOrWarning('');\r\n newState.selectedDisplayIds = [];\r\n }\r\n this.setState(newState, this.props.onSelectionChange);\r\n }\r\n\r\n handleErrorOrWarning = (error, isWarning = false) => {\r\n if (isWarning) {\r\n this.setState({ warning: error });\r\n } else {\r\n this.props.onError(!_.isEmpty(error));\r\n this.setState({ error });\r\n }\r\n };\r\n\r\n handleSelectionChange = (id, checked, isDisplayType) => {\r\n this.props.onSelectionChange();\r\n if (isDisplayType) {\r\n this.setState((prevState) => {\r\n const { selectedDisplayIds } = prevState;\r\n const newState = {};\r\n newState.selectedDisplayIds = _.uniq(checked ?\r\n _.union(selectedDisplayIds, [id])\r\n : _.without(selectedDisplayIds, id));\r\n return newState;\r\n });\r\n }\r\n }\r\n\r\n render = () => {\r\n const { i18n } = this.props;\r\n const radioItems = [\r\n {\r\n val: true,\r\n name: i18n.get('GoogleImport_SelectCampaign_ImportAll'),\r\n },\r\n {\r\n val: false,\r\n name: i18n.get('GoogleImport_SelectEntities_ImportSpecific'),\r\n },\r\n ];\r\n\r\n return (\r\n
\r\n
\r\n \r\n {i18n.get('GoogleImport_SelectEntities_Description')}\r\n \r\n
\r\n item.name}\r\n />\r\n {!this.state.importAll &&\r\n \r\n }\r\n
\r\n {this.state.error}\r\n
\r\n {this.state.warning &&\r\n
\r\n {this.state.warning}\r\n
\r\n }\r\n
\r\n );\r\n };\r\n}\r\n","import Backbone from 'backbone';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { GoogleCampaignAndAdGroupStep } from './step';\r\n\r\nexport class GoogleCampaignAndAdGroupView extends Backbone.View {\r\n initialize({\r\n appConfig,\r\n data,\r\n googleCustomerId,\r\n i18n,\r\n i18nAmdLoader,\r\n repository,\r\n selectionData,\r\n renderDisplayCampaignAlert,\r\n logScenario,\r\n coupon,\r\n }) {\r\n this.appConfig = appConfig;\r\n this.data = data;\r\n this.googleCustomerId = googleCustomerId;\r\n this.i18n = i18n;\r\n this.i18nAmdLoader = i18nAmdLoader;\r\n this.repository = repository;\r\n this.selectionData = selectionData;\r\n this.renderDisplayCampaignAlert = renderDisplayCampaignAlert;\r\n this.logScenario = logScenario;\r\n this.coupon = coupon;\r\n\r\n this.stateGetter = {\r\n setSelectedDataGetter: (getter) => {\r\n this.selectedDataGetter = getter;\r\n },\r\n setImportAllGetter: (getter) => {\r\n this.importAllGetter = getter;\r\n },\r\n getSelectedData: () => this.selectedDataGetter(),\r\n getImportAll: () => this.importAllGetter(),\r\n };\r\n\r\n this.triggerError = hasError => this.trigger('change:error', hasError).bind(this);\r\n this.triggerEdit = () => this.trigger('change:select').bind(this);\r\n }\r\n\r\n render(parentEl) {\r\n ReactDOM.render(, parentEl);\r\n }\r\n\r\n getStateData() {\r\n const stateData = {};\r\n\r\n if (this.stateGetter.getImportAll()) {\r\n stateData.selectionData = {};\r\n stateData.areAnyPausedCampaignsSelected = false;\r\n } else {\r\n stateData.selectionData = this.stateGetter.getSelectedData();\r\n stateData.areAnyPausedCampaignsSelected = true;\r\n }\r\n stateData.googleCampaignsSummary = this.getSummaryInfo();\r\n return stateData;\r\n }\r\n\r\n // required by step wizard\r\n getSummaryInfo() {\r\n if (this.stateGetter.getImportAll) {\r\n return this.i18n.get(this.stateGetter.getImportAll() ?\r\n 'GoogleImport_SelectCampaign_AllCampaigns' : 'GoogleImport_SelectCampaignsAndAdGroups_SpecificCampaignsAndAdGroups');\r\n }\r\n return '';\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\n\r\nimport { BaseImportStep, getShowNoActiveCampaignCouponAlert } from '@bingads-webui-campaign/import-components';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { ByPassConfirmationModal } from '@bingads-webui-react/feature-adoption-coupon';\r\n\r\nimport template from './campaign-selection-step.pug';\r\nimport { CampaignGridView } from './grid/index';\r\n\r\n// facebook doesn't support adgroup level currently\r\nimport { GoogleCampaignAndAdGroupView } from './ad-group-level-view/backbone-pipe-view';\r\n\r\nexport class CampaignSelectionStep extends BaseImportStep {\r\n initialize({\r\n importSourceName,\r\n getStateAdapter,\r\n isAIMImportEnabled,\r\n isAdGroupLevelImportEnabled,\r\n deps,\r\n getCampaignGridConfig,\r\n }) {\r\n super.initialize({\r\n deps,\r\n });\r\n this.isContinueButtonEnabled = true;\r\n this.signupMode = deps.uxMode === 'signup';\r\n this.generateImportUserPreferencesFromPreviousOptions =\r\n deps.generateImportUserPreferencesFromPreviousOptions;\r\n this.config = deps.config;\r\n this.deps = deps;\r\n this.permissions = this.config.get('Permissions') || {};\r\n this.isAdGroupLevelImportEnabled = isAdGroupLevelImportEnabled;\r\n\r\n this.isAIMImportEnabled = isAIMImportEnabled;\r\n this.importSourceName = importSourceName;\r\n this.stateAdapter = getStateAdapter(this.getState.bind(this), this.patchState.bind(this));\r\n this.getState = this.stateAdapter.getState;\r\n this.patchState = this.stateAdapter.patchState;\r\n this.getCampaignGridConfig = getCampaignGridConfig;\r\n this.coupon = deps.coupon;\r\n }\r\n\r\n render() {\r\n this.$el.html(template({\r\n i18n: this.i18n,\r\n }));\r\n return this;\r\n }\r\n\r\n get title() {\r\n return this.buildTitle({\r\n activeTitle: this.isAdGroupLevelImportEnabled ?\r\n this.i18n.get('Import_SelectCampaignsAndAdGroups_Title')\r\n : this.i18n.get('Import_SelectCampaign_Title'),\r\n summaryTitle: this.isAdGroupLevelImportEnabled ?\r\n this.i18n.get('Import_SelectCampaignsAndAdGroups_Summary')\r\n : this.i18n.get('Import_SelectCampaign_Summary'),\r\n });\r\n }\r\n\r\n getSummaryInfo() {\r\n return this.view && this.view.getSummaryInfo();\r\n }\r\n\r\n willShow() {\r\n if (this.checkIfShouldUpdateAndResetFlagIfTrue()) {\r\n this.isContinueButtonEnabled = true;\r\n this.deps.logActivities.renderSelectAdWordsCampaigns.start();\r\n const state = this.getState() || {};\r\n const {\r\n importSourceCustomerId, importSourceCampaigns,\r\n selectedAdGroupMap, selectedCampaignIds, selectedWithActiveOnly,\r\n importContext, isEditingScheduledImport,\r\n } = state;\r\n this.isEditingScheduledImport = isEditingScheduledImport;\r\n\r\n // initialize views\r\n if (this.isAdGroupLevelImportEnabled) {\r\n const selectionData = {};\r\n if (this.isEditingScheduledImport) {\r\n if (\r\n !selectedCampaignIds && !selectedAdGroupMap\r\n && importContext\r\n && importContext.CampaignIds\r\n ) {\r\n selectionData.selectedCampaignIds = importContext.CampaignIds;\r\n }\r\n\r\n _.extend(\r\n selectionData,\r\n !!selectedAdGroupMap && { selectedAdGroupMap },\r\n !!selectedWithActiveOnly && { selectedWithActiveOnly },\r\n !!selectedCampaignIds && { selectedCampaignIds }\r\n );\r\n }\r\n // facebook don't support adgroup level currently\r\n this.view = new GoogleCampaignAndAdGroupView({\r\n appConfig: this.config,\r\n data: importSourceCampaigns,\r\n googleCustomerId: importSourceCustomerId,\r\n i18n: this.i18n,\r\n i18nAmdLoader: this.deps.i18nAmdLoader,\r\n repository: this.repository,\r\n selectionData,\r\n logScenario: this.deps.logScenario,\r\n coupon: this.coupon,\r\n });\r\n } else {\r\n this.view = new CampaignGridView({\r\n data: importSourceCampaigns,\r\n signupMode: this.signupMode,\r\n i18n: this.i18n,\r\n appConfig: this.config,\r\n repo: this.repository,\r\n isAIMImportEnabled: this.isAIMImportEnabled,\r\n getGridConfig: this.getCampaignGridConfig,\r\n });\r\n }\r\n\r\n // initialize events\r\n this.view.on('change:error', (hasError) => {\r\n this.isContinueButtonEnabled = !hasError;\r\n this.trigger('change:action');\r\n });\r\n this.view.on('change:select', () => {\r\n this.isEdited = true;\r\n });\r\n\r\n // render\r\n if (this.isAdGroupLevelImportEnabled) {\r\n this.view.render(this.$('.importsource-campaign-grid')[0]);\r\n } else {\r\n this.$('.importsource-campaign-grid').html(this.view.render().el);\r\n\r\n if (importContext) {\r\n let campaignIds;\r\n if (importContext.CampaignIds) {\r\n campaignIds = importContext.CampaignIds;\r\n } else if (selectedAdGroupMap || selectedWithActiveOnly || selectedCampaignIds) {\r\n campaignIds = _.union(\r\n selectedCampaignIds, selectedWithActiveOnly,\r\n _.map(_.keys(selectedAdGroupMap), id => parseInt(id, 10))\r\n );\r\n }\r\n this.view.selectCampaigns(campaignIds);\r\n }\r\n }\r\n this.logTrace(`render ${this.importSourceName} campaign step`);\r\n this.deps.logActivities.renderSelectAdWordsCampaigns.stop();\r\n this.deps.logActivities.selectCampaign.startSignal();\r\n } else {\r\n this.logTrace(`not edited, directly expand ${this.importSourceName} campaign step`);\r\n }\r\n }\r\n\r\n get actions() {\r\n if (this.signupMode) {\r\n return [{\r\n name: 'next',\r\n displayText: this.i18n.get('CampaignImport_GSyncConnect'),\r\n htmlAttributes: {\r\n id: `omniture-${this.importSourceName}-import-signup-import`,\r\n class: 'btn btn-primary',\r\n },\r\n enabled: this.isContinueButtonEnabled,\r\n }];\r\n }\r\n\r\n const original = super.actions;\r\n\r\n original[0].enabled = this.isContinueButtonEnabled;\r\n original[0].htmlAttributes['data-analyticsid'] = `omniture-${this.importSourceName}-import-choose-campaigns`;\r\n return original;\r\n }\r\n\r\n wizardShouldGoNext() {\r\n const finishStep = () => {\r\n this.deps.logActivities.selectCampaign.stopSignal(this.state.campaignIds);\r\n\r\n const { importSourceCustomerId } = this.getState() || {};\r\n\r\n return this.repository.getUserPreferences(importSourceCustomerId)\r\n .then((preferences) => {\r\n if (preferences) {\r\n this.patchState({\r\n previousImportOptions: preferences,\r\n });\r\n\r\n if (this.signupMode) {\r\n this.deps.logActivities.completeSchedule.startSignal();\r\n return this.startImportForSignup();\r\n }\r\n return true;\r\n }\r\n return this.deps.onCredentialsError();\r\n })\r\n .catch((err) => { //eslint-disable-line\r\n this.handleGenericError(err);\r\n return false;\r\n })\r\n .finally(withUiBlock());\r\n };\r\n\r\n if (this.isAdGroupLevelImportEnabled) {\r\n const stateData = this.stateAdapter.getState(this.view.getStateData());\r\n const importAll = this.view.stateGetter.getImportAll();\r\n\r\n const updateState = () => {\r\n this.patchState({\r\n campaignIds: _.union(\r\n stateData.selectionData.selectedCampaignIds,\r\n stateData.selectionData.selectedWithActiveOnly,\r\n _.map(_.keys(stateData.selectionData.selectedAdGroupMap), id => parseInt(id, 10))\r\n ),\r\n importSourceEntitiesSelectionData: stateData.selectionData,\r\n importSourceCampaignsSummary: stateData.importSourceCampaignsSummary,\r\n includePausedCampaigns: stateData.areAnyPausedCampaignsSelected\r\n && !this.isEditingScheduledImport,\r\n });\r\n return finishStep();\r\n };\r\n\r\n if (this.coupon) {\r\n if (!importAll && getShowNoActiveCampaignCouponAlert(\r\n this.coupon,\r\n this.getState().importSourceCampaigns,\r\n stateData.selectionData\r\n )) {\r\n return new Promise((resolve) => {\r\n const element = document.createElement('div');\r\n element.style.display = 'none';\r\n this.$el.append(element);\r\n\r\n const detachModal = () => {\r\n ReactDOM.unmountComponentAtNode(element);\r\n element.remove();\r\n };\r\n\r\n ReactDOM.render( {\r\n detachModal();\r\n resolve(false);\r\n }}\r\n onConfirm={() => {\r\n detachModal();\r\n this.trigger('enableFacOnScheduleStep', false);\r\n resolve(updateState());\r\n }}\r\n />, element);\r\n });\r\n }\r\n\r\n // if not import all, or not showing \"no active campaign\" alert,\r\n // notify that coupon is enabled (in case it was disabled) then the user\r\n // returned and fixed it\r\n this.trigger('enableFacOnScheduleStep', true);\r\n }\r\n\r\n return updateState();\r\n }\r\n\r\n this.patchState({\r\n campaignIds: this.view.getSelectedCampaigns(),\r\n importSourceCampaignsSummary: this.getSummaryInfo(),\r\n includePausedCampaigns: this.view.areAnyPausedCampaignsSelected()\r\n && !this.isEditingScheduledImport,\r\n });\r\n return finishStep();\r\n }\r\n\r\n startImportForSignup() {\r\n this.deps.logActivities.completeSchedule.stopSignal();\r\n const state = this.getState() || {};\r\n const taskItemBody = {\r\n state: 'Active',\r\n notificationType: 'None',\r\n timeZoneId: this.config.get('AccountTimeZone'),\r\n importUserPreferences:\r\n this.generateImportUserPreferencesFromPreviousOptions(\r\n this.deps,\r\n state.previousImportOptions\r\n ),\r\n };\r\n\r\n return this.repository.prepareImportTaskItem({\r\n importOptions: taskItemBody,\r\n stepState: state,\r\n })\r\n .then(finalBody => this.repository.createScheduledImportTaskItem(finalBody))\r\n .then(() => true);\r\n }\r\n\r\n getCurrentSetting() {\r\n return this.grid && this.grid.getCurrentSetting();\r\n }\r\n\r\n remove() {\r\n if (this.view) {\r\n this.view.remove();\r\n this.view = null;\r\n }\r\n\r\n super.remove();\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function validateSelectedAccountCampaigns(selectedAccountCampaigns, signupMode) {\r\n if (_.isEmpty(selectedAccountCampaigns)) return false;\r\n\r\n if (signupMode && _.isArray(selectedAccountCampaigns)) {\r\n // in signup mode, check active campaigns only\r\n return _.some(selectedAccountCampaigns, ({ Status }) => (Status === 'Active'));\r\n }\r\n return true;\r\n}\r\n","import ko from 'knockout';\r\nimport _ from 'underscore';\r\n\r\nimport { validateSelectedAccountCampaigns } from '../validate-selected-account-campaigns';\r\n\r\n// initial dummy value for campaigns which will not cause the validation error to show up\r\n// before the user attempts to move to the next step\r\nconst INITIAL_ACCOUNT_CAMPAIGNS = [{\r\n Name: 'DefaultCampaign',\r\n Status: 'Active',\r\n}];\r\n\r\nexport class AccountGridViewModel {\r\n constructor({\r\n signupMode = false,\r\n i18n,\r\n }) {\r\n this.selectedAccount = ko.observable('');\r\n this.selectedAccountCampaigns = ko.observable(INITIAL_ACCOUNT_CAMPAIGNS);\r\n this.showValidationError = ko.computed(() => _.isEmpty(this.selectedAccount()));\r\n\r\n this.noCampaignsErrorMessage = ko.observable(signupMode\r\n ? i18n.get('GoogleImport_SelectAccount_NoActiveCampaigns')\r\n : i18n.get('GoogleImport_SelectAccount_NoCampaigns'));\r\n this.showNoCampaignsError = ko.computed(() => {\r\n if (this.showValidationError()) {\r\n return false;\r\n }\r\n\r\n return !validateSelectedAccountCampaigns(this.selectedAccountCampaigns(), signupMode);\r\n });\r\n this.hasError = ko.computed(() => this.showValidationError() || this.showNoCampaignsError());\r\n }\r\n\r\n clearNoCampaignError() {\r\n this.selectedAccountCampaigns(INITIAL_ACCOUNT_CAMPAIGNS);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\n\r\nimport projectionGrid from 'projection-grid';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\n\r\nimport template from './account-grid-template.pug';\r\nimport { AccountGridViewModel } from './account-grid-viewmodel';\r\n\r\nimport { generateConfig } from './account-grid-config';\r\nimport { generateFilterPlugin } from '../../../plugin/index';\r\n\r\nexport class AccountGridView extends Backbone.View {\r\n initialize({\r\n parentElement,\r\n accountData = [],\r\n firstAccountCampaigns,\r\n i18n,\r\n signupMode,\r\n logScenario,\r\n logTrace = () => {},\r\n }) {\r\n this.accountData = accountData;\r\n this.parentElement = parentElement;\r\n this.firstAccountCampaigns = firstAccountCampaigns;\r\n this.i18n = i18n;\r\n this.signupMode = signupMode;\r\n this.logScenario = logScenario;\r\n this.logTrace = logTrace;\r\n }\r\n\r\n render() {\r\n this.koModel = new AccountGridViewModel({\r\n signupMode: this.signupMode,\r\n i18n: this.i18n,\r\n });\r\n\r\n this.el.innerHTML = template({\r\n i18n: this.i18n,\r\n });\r\n ko.applyBindings(this.koModel, this.el);\r\n this.koModel.hasError.subscribe((value) => {\r\n this.trigger('change:error', value);\r\n });\r\n\r\n // this is to ensure grid container element is on DOM tree before rendering grid.\r\n this.parentElement.append(this.el);\r\n\r\n const config = generateConfig({\r\n i18n: this.i18n,\r\n });\r\n\r\n config.dataSource.data = _.sortBy(\r\n this.accountData,\r\n obj => (obj.AccountName ? obj.AccountName.toString().toLowerCase() : '')\r\n );\r\n this.grid = projectionGrid\r\n .factory({ vnext: true })\r\n .use(a11yPlugin)\r\n .use(placeholderPlugin)\r\n .use(generateFilterPlugin({\r\n i18n: this.i18n,\r\n logTrace: this.logTrace.bind(this),\r\n }))\r\n .use(assistedSelectionPlugin)\r\n .create(config);\r\n\r\n this.gridView = this.grid.gridView;\r\n this.gridView.render();\r\n this.grid.memoryFilter.render();\r\n\r\n this.gridView.on('willUpdate', () => {\r\n $(config.el).addClass('fixed-height');\r\n }, this);\r\n\r\n this.gridView.on('didUpdate', () => {\r\n $(config.el).removeClass('fixed-height');\r\n\r\n if (this.accountData.length > 1) {\r\n this.koModel.selectedAccount(_.first(this.gridView.selectedItems()));\r\n this.koModel.clearNoCampaignError(); // clear up the error message\r\n }\r\n this.trigger('change:select');\r\n }, this);\r\n\r\n this.gridView.once('didUpdate', () => {\r\n if (this.accountData.length === 1) {\r\n this.gridView.selectRow(this.accountData[0].CustomerId);\r\n this.koModel.selectedAccount(this.accountData[0]);\r\n this.koModel.selectedAccountCampaigns(this.firstAccountCampaigns);\r\n }\r\n }, this);\r\n\r\n return this;\r\n }\r\n\r\n isValid() {\r\n return !this.koModel.hasError();\r\n }\r\n\r\n getSelectedItem() {\r\n return this.koModel.selectedAccount();\r\n }\r\n\r\n setSelectedAccountCampaigns(campaigns) {\r\n this.koModel.selectedAccountCampaigns(campaigns);\r\n setTimeout(() => {\r\n if (this.logScenario && campaigns && campaigns.length === 0) {\r\n this.logScenario.accountWithoutCampaignSelected.create().signal();\r\n }\r\n }, 500);\r\n }\r\n\r\n clearNoCampaignError() {\r\n this.koModel.clearNoCampaignError();\r\n }\r\n\r\n selectAccountById(id) {\r\n this.gridView.selectRow(id);\r\n }\r\n\r\n remove() {\r\n if (this.grid) {\r\n this.grid.memoryFilter.remove();\r\n this.gridView.remove();\r\n }\r\n\r\n return super.remove();\r\n }\r\n}\r\n","\r\nimport _ from 'underscore';\r\n\r\nexport function generateConfig({\r\n i18n,\r\n}) {\r\n const columnsConfig = _.compact([{\r\n name: 'AccountName',\r\n title: i18n.get('Import_SelectAccount_AccountName'),\r\n sortable: (item) => {\r\n const accountName = item.AccountName;\r\n\r\n return accountName ? accountName.toString().toLowerCase() : '';\r\n },\r\n bodyClasses: 'truncated',\r\n }, {\r\n name: 'Currency',\r\n title: i18n.get('Import_SelectAccount_CurrencyName'),\r\n bodyClasses: 'truncated',\r\n }, {\r\n name: 'CustomerId',\r\n title: i18n.get('Import_SelectAccount_CustomerId'),\r\n }]);\r\n\r\n const plugins = {\r\n a11y: { i18n },\r\n filter: {\r\n search: {\r\n container: '.import-grid .grid-filter-container',\r\n property: 'AccountName',\r\n title: i18n.get('Search_AccountName'),\r\n },\r\n },\r\n placeholder: {\r\n container: '.import-grid .grid-noresult',\r\n text: i18n.get('Import_SelectAccount_NoAccounts'),\r\n },\r\n };\r\n\r\n const tableName = i18n.getString('Import_ImportSummary_AccountSummary');\r\n\r\n return {\r\n el: '.import-grid .grid-table',\r\n dataSource: {\r\n type: 'memory',\r\n data: null,\r\n primaryKey: 'CustomerId',\r\n },\r\n\r\n scrolling: {\r\n virtualized: true,\r\n header: {\r\n type: 'fixed',\r\n attributes: { 'aria-label': i18n.getString('{{tableName}} table header').replace('{{tableName}}', tableName) },\r\n },\r\n },\r\n\r\n selection: {\r\n single: true,\r\n bodyClasses: 'text-center',\r\n },\r\n\r\n columns: columnsConfig,\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': tableName },\r\n plugins,\r\n };\r\n}\r\n","import ko from 'knockout';\r\n\r\nexport class CurrencyConversionViewModel {\r\n constructor(importSourceAccountCurrency, bingAccountCurrency) {\r\n this.doConvert = ko.observable(true);\r\n this.doConvert.Editing = ko.computed({\r\n read() {\r\n return this.doConvert() ? 'true' : 'false';\r\n },\r\n write(newValue) {\r\n this.doConvert(newValue === 'true');\r\n },\r\n }, this);\r\n\r\n this.importSourceAccountCurrency = ko.observable(importSourceAccountCurrency);\r\n this.bingAccountCurrency = ko.observable(bingAccountCurrency);\r\n\r\n this.shouldShow = ko.computed(() => (this.importSourceAccountCurrency() !==\r\n this.bingAccountCurrency()));\r\n }\r\n}\r\n","\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\n\r\nimport template from './currency-conversion-view-template.pug';\r\nimport { CurrencyConversionViewModel } from './currency-conversion-view-model';\r\n\r\nexport class CurrencyConversionView extends Backbone.View {\r\n initialize({\r\n parentElement,\r\n i18n,\r\n importSourceAccountCurrency,\r\n bingAccountCurrency,\r\n isSingleAccountMode,\r\n }) {\r\n this.parentElement = parentElement;\r\n this.i18n = i18n;\r\n this.importSourceAccountCurrency = importSourceAccountCurrency;\r\n this.bingAccountCurrency = bingAccountCurrency;\r\n this.isSingleAccountMode = isSingleAccountMode;\r\n }\r\n\r\n render() {\r\n this.koModel = new CurrencyConversionViewModel(\r\n this.importSourceAccountCurrency,\r\n this.bingAccountCurrency\r\n );\r\n\r\n this.el.innerHTML = template({\r\n i18n: this.i18n,\r\n singleAccountMode: this.isSingleAccountMode,\r\n });\r\n ko.applyBindings(this.koModel, this.el);\r\n\r\n this.koModel.doConvert.subscribe(() => {\r\n this.trigger('change:convert');\r\n }, this);\r\n\r\n this.parentElement.append(this.el);\r\n }\r\n}\r\n","/* eslint-disable max-len */\r\nimport _ from 'underscore';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { BaseImportStep } from '@bingads-webui-campaign/import-components';\r\nimport template from './account-selection-step.pug';\r\nimport { AccountGridView } from './grid/index';\r\nimport { CurrencyConversionView } from './currency-conversion-control/currency-conversion-view';\r\n\r\nexport class AccountSelectionStep extends BaseImportStep {\r\n initialize({\r\n importSourceName,\r\n getStateAdapter,\r\n deps,\r\n }) {\r\n super.initialize({\r\n deps,\r\n });\r\n this.importSourceName = importSourceName;\r\n this.isContinueButtonEnabled = false;\r\n this.signupMode = deps.uxMode === 'signup';\r\n this.withCurrencyConversionText = this.i18n.get('GoogleImport_AccountCurrencyConversion_WithCurrencyConversion');\r\n this.withoutCurrencyConversionText = this.i18n.get('GoogleImport_AccountCurrencyConversion_WithoutCurrencyConversion');\r\n\r\n this.stateAdapter = getStateAdapter(this.getState.bind(this), this.patchState.bind(this));\r\n this.getState = this.stateAdapter.getState;\r\n this.patchState = this.stateAdapter.patchState;\r\n }\r\n\r\n get title() {\r\n return this.buildTitle({\r\n activeTitle: this.i18n.get('Import_SelectAccount_Title'),\r\n summaryTitle: this.i18n.get('Import_SelectAccount_Summary'),\r\n });\r\n }\r\n\r\n getSummaryInfo() {\r\n // importSourceAccountSummary may be set in sign in step when only one account.\r\n let summaryInfo = _.propertyOf(this.getState())('importSourceAccountSummary');\r\n\r\n // extend summary text with currency conversion info\r\n if (summaryInfo &&\r\n this.currencyConversionView && this.currencyConversionView.koModel.shouldShow()) {\r\n const autoCurrencyConversionEnabled = this.getState() && this.getState().autoCurrencyConversionEnabled;\r\n if (!_.isUndefined(autoCurrencyConversionEnabled)) {\r\n summaryInfo = `${summaryInfo} ${autoCurrencyConversionEnabled ? this.withCurrencyConversionText : this.withoutCurrencyConversionText}`;\r\n this.deps.logScenario.currencyConversionDisplayed.create().signal();\r\n }\r\n }\r\n return summaryInfo;\r\n }\r\n\r\n getSelectedAccountName() {\r\n return this.grid && _.propertyOf(this.grid.getSelectedItem())('AccountName');\r\n }\r\n\r\n willShow() {\r\n if (this.checkIfShouldUpdateAndResetFlagIfTrue()) {\r\n this.deps.logActivities.renderSelectAdWordsAccount.start();\r\n\r\n const state = this.getState();\r\n const { importSourceAccount, importSourceCampaigns } = state;\r\n this.deps.logScenario.accountList.create().signal({ count: importSourceAccount.length });\r\n\r\n const hasNoData = _.isEmpty(importSourceAccount);\r\n\r\n this.logTrace(`render ${this.importSourceName} account step start`);\r\n this.$el.html(template({\r\n hasNoData,\r\n i18n: this.i18n,\r\n }));\r\n\r\n if (!hasNoData) {\r\n this.grid = new AccountGridView({\r\n i18n: this.i18n,\r\n parentElement: this.$('.import-account-grid'),\r\n accountData: importSourceAccount,\r\n firstAccountCampaigns: importSourceCampaigns,\r\n signupMode: this.signupMode,\r\n logger: this.deps.logScenario,\r\n logTrace: this.logTrace.bind(this),\r\n });\r\n\r\n this.currencyConversionView = new CurrencyConversionView({\r\n parentElement: this.$('.currency-conversion-control'),\r\n i18n: this.i18n,\r\n importSourceAccountCurrency: this.deps.config.get('AccountCurrencyCode'),\r\n bingAccountCurrency: this.deps.config.get('AccountCurrencyCode'),\r\n isSingleAccountMode: true,\r\n });\r\n this.currencyConversionView.on('change:convert', () => {\r\n this.isEdited = true;\r\n this.deps.logScenario.currencyConversionChanged.create().signal();\r\n });\r\n this.currencyConversionView.render();\r\n this.logTrace('render currency conversion view');\r\n\r\n this.grid.on('change:error', (hasError) => {\r\n this.isContinueButtonEnabled = !hasError;\r\n this.trigger('change:action');\r\n });\r\n this.grid.on('change:select', () => {\r\n this.isEdited = true;\r\n const tempSelectedItem = this.grid.getSelectedItem();\r\n if (tempSelectedItem) {\r\n this.currencyConversionView.koModel.importSourceAccountCurrency(tempSelectedItem.Currency);\r\n if (this.currencyConversionView.koModel.shouldShow()) {\r\n this.grid.clearNoCampaignError(); // clear up the error message\r\n }\r\n }\r\n if (this.deps.logScenario && tempSelectedItem) {\r\n this.deps.logScenario.tempSelectedAccount.create().signal({\r\n selectedAccount: tempSelectedItem,\r\n importSourceAccountCurrency: this.currencyConversionView.koModel.importSourceAccountCurrency(),\r\n bingAccountCurrency: this.currencyConversionView.koModel.bingAccountCurrency(),\r\n });\r\n }\r\n });\r\n this.grid.render();\r\n\r\n if (state && state.importSourceCustomerId) {\r\n this.grid.gridView.once('didUpdate', () => {\r\n this.grid.selectAccountById(state.importSourceCustomerId);\r\n });\r\n }\r\n }\r\n this.logTrace(`render ${this.importSourceName} account step`);\r\n this.deps.logActivities.renderSelectAdWordsAccount.stop();\r\n this.deps.logActivities.selectAccount.startSignal();\r\n } else {\r\n this.logTrace(`not edited, directly expand ${this.importSourceName} account step`);\r\n }\r\n }\r\n\r\n wizardShouldGoNext() {\r\n this.deps.logActivities.selectAccount.stopSignal();\r\n this.logTrace('GoogleAccountStepContinueButtonClicked');\r\n if (this.grid && this.grid.isValid()) {\r\n const selectedItem = this.grid.getSelectedItem();\r\n const customerId = selectedItem.CustomerId;\r\n const loginId = selectedItem.LoginCustomerId; // todo: remove it for facebook? google only?\r\n const state = this.getState();\r\n\r\n if (this.currencyConversionView) {\r\n this.patchState({\r\n autoCurrencyConversionEnabled: this.currencyConversionView.koModel.doConvert(),\r\n });\r\n }\r\n\r\n const blobName = state && state.entitiesBlobName;\r\n\r\n return this.repository.prepareForCampaignSelectionStep(customerId, blobName)\r\n .then((extraState) => {\r\n if (this.grid) {\r\n this.grid.setSelectedAccountCampaigns(this.stateAdapter.getState(extraState).importSourceCampaigns);\r\n if (this.grid.isValid()) { // check again to validate campaigns\r\n this.patchState({\r\n importSourceAccountSummary: this.getSelectedAccountName(),\r\n importSourceCustomerId: customerId,\r\n loginCustomerId: loginId, // todo: for facebook, remove it???\r\n ...extraState,\r\n });\r\n return true;\r\n }\r\n } else {\r\n this.logTrace(`grid in ${this.importSourceName} account grid is cleared`);\r\n }\r\n return false;\r\n })\r\n .catch((err) => {\r\n this.handleErrorInImport(err);\r\n return false;\r\n })\r\n .finally(withUiBlock());\r\n }\r\n\r\n return false;\r\n }\r\n\r\n get actions() {\r\n if (this.signupMode) {\r\n return [{\r\n name: 'next',\r\n displayText: this.i18n.get('CampaignImport_ButtonContinue'),\r\n enabled: this.isContinueButtonEnabled,\r\n }];\r\n }\r\n\r\n const original = super.actions;\r\n\r\n original[0].enabled = this.isContinueButtonEnabled;\r\n return original;\r\n }\r\n\r\n remove() {\r\n if (this.grid) {\r\n this.grid.remove();\r\n this.grid = null;\r\n this.logTrace(`remove grid in ${this.importSourceName}-account-step`);\r\n }\r\n\r\n if (this.currencyConversionView) {\r\n this.currencyConversionView.remove();\r\n this.currencyConversionView = null;\r\n }\r\n\r\n super.remove();\r\n }\r\n}\r\n","import { ImportOptionsSummaryBuilder as BaseImportOptionsSummaryBuilder } from '@bingads-webui-campaign/import-components';\r\n\r\nexport class ImportOptionsSummaryBuilder extends BaseImportOptionsSummaryBuilder {\r\n generateEntityOptionsSummary(options) {\r\n const newExistingSummary = super.generateEntityOptionsSummary(options);\r\n const summaryText = [];\r\n\r\n if (options.AdWordsAccountTrackingTemplate) {\r\n summaryText.push(this.i18n.get('Import_ImportOptions_AccountUrlOptions'));\r\n }\r\n\r\n if (newExistingSummary.length > 0) {\r\n summaryText.push(newExistingSummary);\r\n }\r\n\r\n if (options.ImportDeletedEntities) {\r\n summaryText.push(this.i18n.get('Import_ImportOptions_DeleteItemsSummary'));\r\n }\r\n\r\n return summaryText.join(', ');\r\n }\r\n}\r\n","import { ImportOptionsStep as BaseImportOptionsStep } from '@bingads-webui-campaign/import-components';\r\n\r\nimport { ImportOptionsSummaryBuilder } from './import-options-summary-builder';\r\n\r\nexport class ImportOptionsStep extends BaseImportOptionsStep {\r\n initialize({\r\n importSourceName,\r\n deps,\r\n }) {\r\n super.initialize({\r\n deps,\r\n });\r\n\r\n this.importSourceName = importSourceName || 'google';\r\n this.summaryBuilder = new ImportOptionsSummaryBuilder({ i18n: this.i18n });\r\n }\r\n\r\n get actions() {\r\n const original = super.actions;\r\n\r\n original[0].htmlAttributes['data-analyticsid'] = `omniture-${this.importSourceName}-import-options`;\r\n return original;\r\n }\r\n}\r\n","import ko from 'knockout';\r\nimport _ from 'underscore';\r\n\r\n// TODO [901215]: move this to shared components\r\n\r\nfunction failedValidators(validators, value) {\r\n return _.filter(validators, v => !v.isValid(value));\r\n}\r\n\r\nfunction errorMessages(validators, value) {\r\n let errors = [];\r\n\r\n _.each(validators, (failed) => {\r\n const messages = _.isFunction(failed.message) ? failed.message(value) : failed.message;\r\n\r\n if (_.isArray(messages)) {\r\n errors = errors.concat(messages);\r\n } else {\r\n errors.push(messages);\r\n }\r\n });\r\n\r\n return errors;\r\n}\r\n\r\nko.extenders.validate = (observable, validators) => {\r\n const observableWrapper = ko.computed({\r\n read() {\r\n return observable();\r\n },\r\n write(rawValue) {\r\n let value = rawValue;\r\n let errors = [];\r\n\r\n _.each(validators, (validator) => {\r\n if (_.isFunction(validator.process) && !validator.blockInput) {\r\n value = validator.process(value);\r\n }\r\n });\r\n\r\n const failedValidations = failedValidators(validators, value);\r\n\r\n if (_.isEmpty(failedValidations)) {\r\n observableWrapper.hasBeenValid(true);\r\n }\r\n\r\n // if user input is blocked, do not pass this value to internal object\r\n if (_.some(failedValidations, _.property('blockInput'))) {\r\n observable.notifySubscribers();\r\n } else {\r\n // only show errors after observable has been valid\r\n // friendly to user who need to input several times to get a valid value from beginning\r\n // for example, an array with at least 3 elements, or a number > 10\r\n if (observableWrapper.hasBeenValid()) {\r\n errors = errorMessages(failedValidations, value);\r\n }\r\n\r\n if (_.isEqual(observable(), value)) {\r\n observable.notifySubscribers();\r\n } else {\r\n observable(value);\r\n }\r\n }\r\n\r\n observableWrapper.errors(errors);\r\n },\r\n }).extend({ notify: 'always' });\r\n\r\n observableWrapper.hasBeenValid =\r\n ko.observable(_.isEmpty(failedValidators(validators, observable())));\r\n observableWrapper.errors = ko.observableArray();\r\n observableWrapper.validators = validators;\r\n observableWrapper.isValid = ko.computed(() => observableWrapper.errors().length === 0);\r\n observableWrapper.hasError = ko.computed(() => !observableWrapper.isValid());\r\n\r\n // force validation even if value not changed\r\n observableWrapper.validate = () => {\r\n observableWrapper.hasBeenValid(true);\r\n\r\n const value = observable();\r\n\r\n observableWrapper.errors(errorMessages(failedValidators(validators, value), value));\r\n\r\n return observableWrapper.isValid();\r\n };\r\n\r\n return observableWrapper;\r\n};\r\n\r\nexport { ko };\r\n","const getDateFromCron = function (cron) {\r\n const splitCron = cron.split(' ');\r\n\r\n if (splitCron[2] && splitCron[3] && splitCron[5]) {\r\n const date = new Date(`${splitCron[3]}/${splitCron[2]}/${splitCron[5]}`);\r\n const today = new Date();\r\n\r\n return date.getTime() >= today.getTime() ? date : today;\r\n }\r\n return null;\r\n};\r\n\r\nconst mapCronToFrequency = function (cron) {\r\n const onceCron = /^0 [0-9]{1,2} [1-3]{0,1}[0-9] [1]{0,1}[0-9]{1} \\* [0-9]{4}$/;\r\n const monthCron = /^0 [0-9]{1,2} [1-3]{0,1}[0-9] \\* \\* \\*$/;\r\n const dailyCron = /^0 [0-9]{1,2} \\* \\* \\* \\*$/;\r\n const weeklyCron = /^0 [0-9]{1,2} \\* \\* [0-6] \\*$/;\r\n\r\n if (onceCron.test(cron)) {\r\n return 'Once';\r\n }\r\n\r\n if (monthCron.test(cron)) {\r\n return 'Monthly';\r\n }\r\n if (dailyCron.test(cron)) {\r\n return 'Daily';\r\n }\r\n if (weeklyCron.test(cron)) {\r\n return 'Weekly';\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst prepareCron =\r\nfunction (chosenFrequency, chosenTime, chosenDate, chosenDay, chosenDayOfTheMonth) {\r\n switch (chosenFrequency) {\r\n case 'Once': {\r\n if (!chosenDate) {\r\n this.viewModel.timeError(true);\r\n return 'invalid';\r\n }\r\n\r\n return `0 ${chosenTime} ${chosenDate.getDate()} ${chosenDate.getMonth() + 1} * ${chosenDate.getFullYear()}`;\r\n }\r\n case 'Daily':\r\n return `0 ${chosenTime} * * * *`;\r\n case 'Weekly':\r\n return `0 ${chosenTime} * * ${chosenDay} *`;\r\n case 'Monthly':\r\n return `0 ${chosenTime} ${chosenDayOfTheMonth} * * *`;\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nconst cronToDisplayString = function (\r\n i18n, datePickerValue,\r\n {\r\n chosenDay, chosenDayOfTheMonth, chosenFrequency, chosenTime, chosenTimeZone,\r\n }\r\n) {\r\n const hour = `${chosenTime().twelveHourDisplay} ${chosenTimeZone()}`;\r\n let displayString = '';\r\n\r\n switch (chosenFrequency().value) {\r\n case 'Auto':\r\n displayString = i18n.getString('ImportSchedule_Auto_Frequency');\r\n break;\r\n case 'Once':\r\n displayString = i18n.getString('Scheduled_Import_OnceTemplate')\r\n .replace('{0}', chosenFrequency().text)\r\n .replace('{1}', datePickerValue)\r\n .replace('{2}', hour);\r\n break;\r\n case 'Daily':\r\n displayString = i18n.getString('AutomatedRules_Frequency_DailyTemplate')\r\n .replace('{0}', chosenFrequency().text)\r\n .replace('{1}', hour);\r\n break;\r\n case 'Weekly':\r\n displayString = i18n.getString('AutomatedRules_Frequency_WeeklyTemplate')\r\n .replace('{0}', chosenFrequency().text)\r\n .replace('{1}', chosenDay().text)\r\n .replace('{2}', hour);\r\n break;\r\n case 'Monthly':\r\n displayString = i18n.getString('AutomatedRules_Frequency_MonthlyTemplate')\r\n .replace('{0}', chosenFrequency().text)\r\n .replace('{1}', chosenDayOfTheMonth())\r\n .replace('{2}', hour);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return displayString;\r\n};\r\n\r\nexport {\r\n cronToDisplayString,\r\n getDateFromCron,\r\n mapCronToFrequency,\r\n prepareCron\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport class ImportSchedulingOptions {\r\n constructor({ deps }) {\r\n this.i18n = deps.i18n;\r\n }\r\n\r\n getHours() {\r\n return [\r\n { val: 0, twentyFourHourDisplay: '00', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_12AM_Start_Of_Day') },\r\n { val: 1, twentyFourHourDisplay: '01', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_1AM') },\r\n { val: 2, twentyFourHourDisplay: '02', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_2AM') },\r\n { val: 3, twentyFourHourDisplay: '03', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_3AM') },\r\n { val: 4, twentyFourHourDisplay: '04', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_4AM') },\r\n { val: 5, twentyFourHourDisplay: '05', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_5AM') },\r\n { val: 6, twentyFourHourDisplay: '06', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_6AM') },\r\n { val: 7, twentyFourHourDisplay: '07', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_7AM') },\r\n { val: 8, twentyFourHourDisplay: '08', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_8AM') },\r\n { val: 9, twentyFourHourDisplay: '09', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_9AM') },\r\n { val: 10, twentyFourHourDisplay: '10', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_10AM') },\r\n { val: 11, twentyFourHourDisplay: '11', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_11AM') },\r\n { val: 12, twentyFourHourDisplay: '12', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_12PM') },\r\n { val: 13, twentyFourHourDisplay: '13', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_1PM') },\r\n { val: 14, twentyFourHourDisplay: '14', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_2PM') },\r\n { val: 15, twentyFourHourDisplay: '15', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_3PM') },\r\n { val: 16, twentyFourHourDisplay: '16', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_4PM') },\r\n { val: 17, twentyFourHourDisplay: '17', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_5PM') },\r\n { val: 18, twentyFourHourDisplay: '18', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_6PM') },\r\n { val: 19, twentyFourHourDisplay: '19', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_7PM') },\r\n { val: 20, twentyFourHourDisplay: '20', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_8PM') },\r\n { val: 21, twentyFourHourDisplay: '21', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_9PM') },\r\n { val: 22, twentyFourHourDisplay: '22', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_10PM') },\r\n { val: 23, twentyFourHourDisplay: '23', twelveHourDisplay: this.i18n.get('AdExtensions_Scheduling_Time_11PM') },\r\n ];\r\n }\r\n\r\n getFrequencies(withAutoOption = false) {\r\n const options = [\r\n { value: 'Now', text: this.i18n.get('Bulk_Download_Edit_Schedule_Now') },\r\n { value: 'Once', text: this.i18n.get('AutomatedRules_FrequencyGrain_Once') },\r\n { value: 'Daily', text: this.i18n.get('AutomatedRules_FrequencyGrain_Daily') },\r\n { value: 'Weekly', text: this.i18n.get('AutomatedRules_FrequencyGrain_Weekly') },\r\n { value: 'Monthly', text: this.i18n.get('AutomatedRules_FrequencyGrain_Monthly') },\r\n ];\r\n if (withAutoOption) {\r\n return [\r\n { value: 'Auto', text: this.i18n.get('AutomatedRules_FrequencyGrain_Auto') },\r\n ...options,\r\n ];\r\n }\r\n return options;\r\n }\r\n\r\n getFrequenciesForRunNowScheduling(withAutoOption = false) {\r\n const options = [\r\n { value: 'Once', text: this.i18n.get('AutomatedRules_FrequencyGrain_Once') },\r\n { value: 'Daily', text: this.i18n.get('AutomatedRules_FrequencyGrain_Daily') },\r\n { value: 'Weekly', text: this.i18n.get('AutomatedRules_FrequencyGrain_Weekly') },\r\n { value: 'Monthly', text: this.i18n.get('AutomatedRules_FrequencyGrain_Monthly') },\r\n ];\r\n if (withAutoOption) {\r\n return [\r\n { value: 'Auto', text: this.i18n.get('AutomatedRules_FrequencyGrain_Auto') },\r\n ...options,\r\n ];\r\n }\r\n return options;\r\n }\r\n\r\n getEmailOptions() {\r\n return [\r\n { value: 'None', text: this.i18n.get('AutomatedRules_NotificationType_None') },\r\n { value: 'OnChange, OnError', text: this.i18n.get('AutomatedRules_NotificationType_OnChangeOrError') },\r\n { value: 'OnError', text: this.i18n.get('AutomatedRules_NotificationType_OnError'), title: this.i18n.get('AutomatedRules_NotificationType_OnError') },\r\n { value: 'Always', text: this.i18n.get('Scheduled_Import_NotificationType_Always') },\r\n ];\r\n }\r\n\r\n getDaysOfWeek() {\r\n return [\r\n { value: 0, text: this.i18n.getString('DayOfWeek_Sunday') },\r\n { value: 1, text: this.i18n.getString('DayOfWeek_Monday') },\r\n { value: 2, text: this.i18n.getString('DayOfWeek_Tuesday') },\r\n { value: 3, text: this.i18n.getString('DayOfWeek_Wednesday') },\r\n { value: 4, text: this.i18n.getString('DayOfWeek_Thursday') },\r\n { value: 5, text: this.i18n.getString('DayOfWeek_Friday') },\r\n { value: 6, text: this.i18n.getString('DayOfWeek_Saturday') },\r\n ];\r\n }\r\n\r\n getDaysOfMonth() {\r\n return _.map(_.range(1, 29), num => num.toString());\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst BASE_10_RADIX = 10;\r\n\r\nconst getTimeZoneIdByText = function (timeZoneText, timeZoneMapper) {\r\n const timeZoneObject =\r\n _.find(timeZoneMapper.getTimeZoneOptions(), obj => obj.text === timeZoneText);\r\n return timeZoneObject && parseInt(timeZoneObject.index, BASE_10_RADIX);\r\n};\r\n\r\nconst getTimeZoneTextById = function (timeZoneId, timeZoneMapper) {\r\n const timeZoneObject = _.find(\r\n timeZoneMapper.getTimeZoneOptions(),\r\n obj => parseInt(obj.index, BASE_10_RADIX) === parseInt(timeZoneId, BASE_10_RADIX)\r\n );\r\n return timeZoneObject && timeZoneObject.text;\r\n};\r\n\r\nconst getAllTimeZoneText = function (timeZoneMapper) {\r\n return _.pluck(timeZoneMapper.getTimeZoneOptions(), 'text');\r\n};\r\n\r\nexport {\r\n getAllTimeZoneText,\r\n getTimeZoneTextById,\r\n getTimeZoneIdByText,\r\n};\r\n","import _ from 'underscore';\r\nimport moment from 'moment';\r\nimport { Validation } from '@bingads-webui/validation';\r\n\r\nimport { ko } from './ko-extension';\r\nimport { ImportSchedulingOptions } from '../util/index';\r\n\r\nexport function ScheduleFormViewModel({\r\n deps, options, enableAutoFrequency, facCoupon,\r\n}) {\r\n this.i18n = deps.i18n;\r\n\r\n const BASE_10_RADIX = 10;\r\n const importSchedulingOptions = new ImportSchedulingOptions({ deps });\r\n const currentUser = deps.config.get('CurrentUser');\r\n this.scheduleFromImportSummary = options.scheduleFromImportSummary;\r\n this.toggleImportButtonStatus = options.toggleImportButtonStatus;\r\n this.isMultiAccountImport = options.isMultiAccountImport;\r\n if (this.scheduleFromImportSummary) {\r\n // eslint-disable-next-line max-len\r\n this.availableFrequencies = ko.observableArray(importSchedulingOptions.getFrequenciesForRunNowScheduling(enableAutoFrequency));\r\n } else {\r\n // eslint-disable-next-line max-len\r\n this.availableFrequencies = ko.observableArray(importSchedulingOptions.getFrequencies(enableAutoFrequency));\r\n }\r\n this.emailOptions = ko.observableArray(importSchedulingOptions.getEmailOptions());\r\n this.availableTimes = ko.observableArray(importSchedulingOptions.getHours());\r\n this.availableDays = ko.observableArray(importSchedulingOptions.getDaysOfWeek());\r\n this.availableDaysOfTheMonth = ko.observableArray(importSchedulingOptions.getDaysOfMonth());\r\n this.timeZones = ko.observableArray(options.availableTimeZones);\r\n this.showUnSupportedDayOfMonth = ko.observable(false);\r\n this.runNowWithScheduled = ko.observable(false);\r\n this.isScheduledFromImportSummaryDone = ko.observable(false);\r\n\r\n if (options.frequency) {\r\n this.chosenFrequency = ko.observable(_.find(\r\n this.availableFrequencies(),\r\n item => item.value === options.frequency\r\n ));\r\n } else {\r\n this.chosenFrequency = ko.observable(_.find(\r\n this.availableFrequencies(),\r\n item => item.value === 'Weekly'\r\n ));\r\n }\r\n\r\n if (options.isEditingScheduledImport && options.initialSettings.Cron) {\r\n this.chosenDay = ko.observable(_.find(\r\n this.availableDays(),\r\n item => item.value === parseInt(options.initialSettings.Cron.split(' ')[4], BASE_10_RADIX)\r\n ));\r\n\r\n this.chosenEmailOption = ko.observable(_.find(\r\n this.emailOptions(),\r\n item => item.value === options.initialSettings.NotificationType\r\n ));\r\n\r\n this.chosenTime = ko.observable(_.find(\r\n this.availableTimes(),\r\n item => item.val.toString() === options.initialSettings.Cron.split(' ')[1]\r\n ));\r\n\r\n let initialDayOfTheMonth = options.initialSettings.Cron.split(' ')[2];\r\n\r\n if (this.chosenFrequency().value === 'Monthly' && !_.contains(this.availableDaysOfTheMonth(), initialDayOfTheMonth)) {\r\n this.showUnSupportedDayOfMonth(true);\r\n initialDayOfTheMonth = _.last(this.availableDaysOfTheMonth());\r\n }\r\n this.chosenDayOfTheMonth = ko.observable(initialDayOfTheMonth);\r\n this.emailAddresses = options.initialSettings.NotificationEmailAddresses\r\n ? ko.observable(options.initialSettings.NotificationEmailAddresses.split(';').join(','))\r\n : ko.observable('');\r\n } else {\r\n // tells if the current date is in daylight savings time.\r\n const isDayLightSavingTime = moment().isDST();\r\n\r\n let time = moment().utc();\r\n time = time.minutes(-options.timeZoneOffsetValue);\r\n\r\n if (isDayLightSavingTime) {\r\n // add 1 hour to the time since moment().utc() returns GMT - 7.\r\n // timeZoneOffsetValue return GMT - 8 always.\r\n // to compensate for daylight saving time add 60 minutes to the time.\r\n time = time.minutes(60);\r\n }\r\n\r\n const hours = time.hours();\r\n const day = time.day();\r\n\r\n this.chosenTime = ko.observable(_.find(\r\n this.availableTimes(),\r\n item => item.val === ((hours + 1) % 24)\r\n ));\r\n\r\n this.chosenDay = ko.observable(this.availableDays()[day]);\r\n this.chosenDayOfTheMonth = ko.observable('');\r\n this.chosenEmailOption = ko.observable(this.emailOptions()[0]);\r\n this.emailAddresses = currentUser.Email ? ko.observable(currentUser.Email) : ko.observable('');\r\n }\r\n\r\n this.timeFormat = ko.observable('12hour');\r\n this.chosenTimeZone = ko.observable(options.defaultTimeZone);\r\n\r\n this.defaultimportName = ko.computed(() => (deps.isMultiAccountImport ?\r\n `${this.chosenFrequency().value} Import - ${deps.dateUtil.format(new Date(), 'yyyy-MM-dd')}` :\r\n `${this.chosenFrequency().value} Import - ${deps.config.get('CurrentAccount').AccountNumber} - ${deps.dateUtil.format(new Date(), 'yyyy-MM-dd')}`));\r\n\r\n this.importName = ko.observable(options.initialSettings.Name || this.defaultimportName()).extend({\r\n validate: [\r\n Validation.required(false, this.i18n).set({\r\n message: this.i18n.get('Scheduled_Import_View_Name_Error'),\r\n }),\r\n ],\r\n });\r\n\r\n if (this.toggleImportButtonStatus) {\r\n this.importName.subscribe((input) => {\r\n if (input.length === 0) {\r\n this.toggleImportButtonStatus(false);\r\n } else {\r\n this.toggleImportButtonStatus(true);\r\n }\r\n });\r\n this.emailAddresses.subscribe(() => {\r\n this.toggleImportButtonStatus(true);\r\n });\r\n this.chosenDay.subscribe(() => {\r\n this.toggleImportButtonStatus(true);\r\n });\r\n this.chosenTime.subscribe(() => {\r\n this.toggleImportButtonStatus(true);\r\n });\r\n }\r\n\r\n this.summaryMessage = ko.observable('');\r\n this.isTitleActive = ko.observable(false);\r\n this.isTitleDisabled = ko.observable(false);\r\n this.isSummaryVisible = ko.observable(false);\r\n this.isFormBodyVisible = ko.observable(false);\r\n this.timeError = ko.observable(false);\r\n this.scheduleImportText = ko.observable(this.i18n.get('Scheduled_Import_Title'));\r\n this.emailAddressError = ko.observable(false);\r\n this.maxLength = ko.observable(255);\r\n this.emailAddressErrorMessage = ko.observable('');\r\n\r\n const remainingCharacters = ko.computed(() =>\r\n this.i18n.get('RemainingCharactersText_New', { count: this.maxLength() - this.importName().length }));\r\n\r\n this.importName = _.extend(this.importName, {\r\n char_rem: remainingCharacters, //eslint-disable-line\r\n });\r\n\r\n this.is12Hour = () => this.timeFormat() === '12hour';\r\n this.isAutoFrequency = () => this.chosenFrequency().value === 'Auto';\r\n this.scheduledImport = () => this.chosenFrequency().value !== 'Now';\r\n this.nonAutoScheduledImport = () => this.chosenFrequency().value !== 'Now' && this.chosenFrequency().value !== 'Auto';\r\n this.showRunNow = () => !this.scheduleFromImportSummary;\r\n\r\n this.showMultiEmail = () => (\r\n this.chosenEmailOption() !== this.emailOptions()[0]\r\n );\r\n this.facCoupon = facCoupon;\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport moment from 'moment';\r\nimport _ from 'underscore';\r\n\r\nimport { DatePicker } from '@bingads-webui/date-picker';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nimport ScheduleFormTemplate from './schedule-form-template.pug';\r\nimport { ScheduleFormViewModel } from './schedule-form-view-model';\r\nimport ScheduleFromDoneTemplate from './schedule-form-done-template.pug';\r\n\r\nimport {\r\n cronToDisplayString,\r\n getAllTimeZoneText,\r\n getDateFromCron,\r\n getTimeZoneTextById,\r\n getTimeZoneIdByText,\r\n mapCronToFrequency,\r\n prepareCron\r\n} from '../util/index';\r\n\r\nexport class ScheduleFormView extends Backbone.View {\r\n initialize({\r\n importSourceName, deps, options, facCoupon,\r\n }) {\r\n this.deps = deps;\r\n this.i18n = deps.i18n;\r\n this.config = deps.config;\r\n this.showError = options.showError;\r\n this.timeZoneMapper = deps.timeZoneMapper;\r\n this.onCredentialsError = deps.onCredentialsError;\r\n this.repository = deps.repository;\r\n this.options = options;\r\n this.options.initialSettings = this.options.initialSettings || {};\r\n this.options.availableTimeZones = getAllTimeZoneText(this.timeZoneMapper);\r\n this.logTrace = this.options.logTraceFunction;\r\n this.state = options.state;\r\n const initialTimeZoneId = this.options.initialSettings.TimeZoneId || this.config.get('AccountTimeZone');\r\n this.options.defaultTimeZone = getTimeZoneTextById(initialTimeZoneId, this.timeZoneMapper);\r\n\r\n this.options.timeZoneOffsetValue = this.timeZoneMapper.getTimeZoneOffset(initialTimeZoneId);\r\n\r\n const datePickerAriaLabel = this.i18n.get('Scheduled_Import_Available_Date');\r\n\r\n if (this.options.initialSettings.Cron) {\r\n this.options = _.extend(this.options, {\r\n frequency: mapCronToFrequency(this.options.initialSettings.Cron),\r\n });\r\n }\r\n let time = moment().utc();\r\n time = time.minutes(-this.options.timeZoneOffsetValue);\r\n\r\n const minDate =\r\n new Date(time.year(), time.month(), time.date(), time.hour(), time.minute(), time.second());\r\n const maxDate = new Date(minDate);\r\n maxDate.setYear(maxDate.getFullYear() + 1);\r\n\r\n this.datePicker = new DatePicker({\r\n minDate,\r\n maxDate,\r\n selectedDate: this.getInitialDatePickerDate(minDate),\r\n ariaLabel: datePickerAriaLabel,\r\n });\r\n\r\n this.importSourceName = importSourceName || 'google';\r\n\r\n this.viewModel = new ScheduleFormViewModel({\r\n deps,\r\n enableAutoFrequency: importSourceName === 'facebook',\r\n options: this.options,\r\n facCoupon,\r\n });\r\n }\r\n\r\n remove(...args) {\r\n this.datePicker.remove(...args);\r\n super.remove(...args);\r\n }\r\n\r\n render() {\r\n this.$el.html(ScheduleFormTemplate({\r\n importSourceName: this.importSourceName,\r\n i18n: this.i18n,\r\n }));\r\n this.viewModel.defaultimportName.subscribe(() => {\r\n this.viewModel.importName(this.viewModel.defaultimportName());\r\n });\r\n this.viewModel.importName.subscribe((value) => {\r\n if (this.deps.logScenario && this.isScheduledImport() && value && !this.importNameChanged) {\r\n // when switch from others to Now, import name is also changed, do not log it\r\n // log if import name is ever changed for only once, no need to log the changed value\r\n this.deps.logScenario.importNameChanged.create().signal();\r\n this.importNameChanged = true;\r\n }\r\n });\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this.$('.date-picker').append(this.datePicker.render().$el);\r\n\r\n return this;\r\n }\r\n events() {\r\n return {\r\n 'click .schedule-from-import-summary-button': 'scheduleFromImportSummary',\r\n 'click .view-import-history-log-grid': 'redirctToImportHistory',\r\n };\r\n }\r\n\r\n redirctToImportHistory() {\r\n this.repository.redirectToImportScheduleAndHistory();\r\n }\r\n\r\n scheduleFromImportSummary() {\r\n this.logTrace('Scheduling import from import summary');\r\n const { state } = this;\r\n let taskItemBody = this.serializeImportSchedulingOptions();\r\n if (taskItemBody) {\r\n const scheduleOption = taskItemBody.cron ? mapCronToFrequency(taskItemBody.cron) : 'Now';\r\n this.repository.applyOpportunityIfApplicable({ scheduleOption });\r\n\r\n taskItemBody = _.extend(taskItemBody, {\r\n importUserPreferences: state.importUserPreferences,\r\n });\r\n\r\n this.repository.prepareImportTaskItem({\r\n importOptions: taskItemBody,\r\n stepState: state,\r\n })\r\n .then(finalBody => (\r\n this.repository.createScheduledImportTaskItem(finalBody)\r\n ))\r\n .tap((taskItem) => {\r\n this.repository.logApplyOpportunityInfoIfIfApplicable(taskItem && taskItem.Id);\r\n })\r\n .then(() => {\r\n const summaryText = this.i18n.get('Scheduled_Import_Summary_Header').replace('{0}', this.getDisplayString());\r\n this.$el.html(ScheduleFromDoneTemplate({\r\n doneText: summaryText,\r\n navigateToButtonText: this.i18n.get('Scheduled_Import_View_Schedule_Button'),\r\n }));\r\n this.viewModel.isScheduledFromImportSummaryDone = true;\r\n })\r\n .catch((errors) => {\r\n this.importButtonEnabled = true;\r\n this.trigger('change:action');\r\n this.handleErrors(errors);\r\n return false;\r\n })\r\n .finally(withUiBlock(this.$el));\r\n }\r\n }\r\n\r\n getInitialDatePickerDate(currentDate) {\r\n let date = new Date(currentDate);\r\n\r\n // set date in datepicker to existing setting for edit workflow\r\n if (this.options.initialSettings.Cron && this.options.frequency === 'Once') {\r\n date = getDateFromCron(this.options.initialSettings.Cron);\r\n } else if (date.getHours() + 1 === 24) {\r\n // We use the next hour as the default hour setting in the form,\r\n // so, at 11 PM, we need to also advance the day for RunOnce form.\r\n date.setDate(date.getDate() + 1);\r\n }\r\n\r\n return date;\r\n }\r\n\r\n serializeEmailAddresses() {\r\n const emailAddresses = this.viewModel.emailAddresses();\r\n let serializedEmails = '';\r\n const emailAddressArray = emailAddresses ? emailAddresses.split(',') : [];\r\n _.each(emailAddressArray, (email, index) => {\r\n serializedEmails += email.trim();\r\n if (index !== emailAddressArray.length - 1) {\r\n serializedEmails += ';';\r\n }\r\n });\r\n return serializedEmails;\r\n }\r\n\r\n validateEmailAddresses() {\r\n if (this.viewModel.chosenEmailOption() === this.viewModel.emailOptions()[0]) {\r\n return true;\r\n }\r\n\r\n const emailAddresses = this.viewModel.emailAddresses();\r\n if (_.isEmpty(emailAddresses.trim())) {\r\n this.viewModel.emailAddressError(true);\r\n this.viewModel.emailAddressErrorMessage(this.i18n.getString('Scheduled_Import_MultiEmail_Invalid_Email_RequiredError'));\r\n return false;\r\n }\r\n const emailAddressArray = emailAddresses ? emailAddresses.split(',') : [];\r\n if (emailAddressArray.length > 10) {\r\n this.viewModel.emailAddressError(true);\r\n this.viewModel.emailAddressErrorMessage(this.i18n.getString('Scheduled_Import_MultiEmail_Max_Email_Error'));\r\n return false;\r\n }\r\n let areAllEmailsValid = true;\r\n if (emailAddresses === '') {\r\n return true;\r\n }\r\n _.each(emailAddressArray, (email) => {\r\n if (!this.validateEmailAddress(email.trim())) {\r\n this.viewModel.emailAddressError(true);\r\n this.viewModel.emailAddressErrorMessage(this.i18n.getString('Scheduled_Import_MultiEmail_Invalid_Email_Error'));\r\n areAllEmailsValid = false;\r\n }\r\n });\r\n return areAllEmailsValid;\r\n }\r\n\r\n validateEmailAddress(email) {\r\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(email);\r\n }\r\n\r\n validateScheduleTime() {\r\n let time = moment().utc();\r\n time = time.minutes(-this.options.timeZoneOffsetValue);\r\n\r\n const hour = this.viewModel.chosenTime().val;\r\n const day = this.datePicker.datePicker.value().getDate();\r\n const minTime = time.hours();\r\n const minDate = time.date();\r\n\r\n if (this.viewModel.chosenFrequency().value === 'Once'\r\n && hour < minTime\r\n && day === minDate) {\r\n this.viewModel.timeError(true);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n\r\n serializeImportSchedulingOptions() {\r\n if (!this.isScheduledImport()\r\n ||\r\n (this.viewModel.importName.validate()\r\n && this.validateEmailAddresses()\r\n && this.validateScheduleTime())\r\n ) {\r\n let body = {\r\n timeZoneId: getTimeZoneIdByText(this.viewModel.chosenTimeZone(), this.timeZoneMapper),\r\n };\r\n\r\n if (this.runNowWithScheduled()) {\r\n this.logTrace(`GoogleEmailNotificationSetting:${JSON.stringify(this.viewModel.chosenEmailOption())}`);\r\n return {\r\n scheduledTaskItemBody: {\r\n timeZoneId: getTimeZoneIdByText(this.viewModel.chosenTimeZone(), this.timeZoneMapper),\r\n name: this.viewModel.importName(),\r\n cron: prepareCron(\r\n this.viewModel.chosenFrequency().value,\r\n this.viewModel.chosenTime().val,\r\n this.datePicker.datePicker.value(),\r\n this.viewModel.chosenDay().value,\r\n this.viewModel.chosenDayOfTheMonth()\r\n ),\r\n notificationType: this.viewModel.chosenEmailOption().value,\r\n notificationEmailAddresses:\r\n this.viewModel.chosenEmailOption() !== this.viewModel.emailOptions()[0]\r\n ? this.serializeEmailAddresses()\r\n : null,\r\n },\r\n runNowTaskItemBody: {\r\n timeZoneId: getTimeZoneIdByText(this.viewModel.chosenTimeZone(), this.timeZoneMapper),\r\n taskItemState: 'Active',\r\n notificationType: 'None',\r\n notificationEmailAddresses: null,\r\n },\r\n };\r\n } else if (this.isAutoFrequency()) {\r\n this.logTrace('Auto Frequency');\r\n body = _.extend(body, {\r\n name: this.viewModel.importName(),\r\n notificationType: this.viewModel.chosenEmailOption().value,\r\n notificationEmailAddresses:\r\n this.viewModel.chosenEmailOption() !== this.viewModel.emailOptions()[0]\r\n ? this.serializeEmailAddresses()\r\n : null,\r\n IsAutoFrequency: true,\r\n });\r\n } else if (this.isScheduledImport()) {\r\n this.logTrace(`GoogleEmailNotificationSetting:${JSON.stringify(this.viewModel.chosenEmailOption())}`);\r\n body = _.extend(body, {\r\n name: this.viewModel.importName(),\r\n cron: prepareCron(\r\n this.viewModel.chosenFrequency().value,\r\n this.viewModel.chosenTime().val,\r\n this.datePicker.datePicker.value(),\r\n this.viewModel.chosenDay().value,\r\n this.viewModel.chosenDayOfTheMonth()\r\n ),\r\n notificationType: this.viewModel.chosenEmailOption().value,\r\n notificationEmailAddresses:\r\n this.viewModel.chosenEmailOption() !== this.viewModel.emailOptions()[0]\r\n ? this.serializeEmailAddresses()\r\n : null,\r\n });\r\n } else {\r\n body = _.extend(body, {\r\n taskItemState: 'Active',\r\n notificationType: 'None',\r\n notificationEmailAddresses: null,\r\n });\r\n }\r\n\r\n return body;\r\n }\r\n return null;\r\n }\r\n\r\n isScheduledImport() {\r\n return this.viewModel.scheduledImport();\r\n }\r\n\r\n runNowWithScheduled() {\r\n return this.viewModel.runNowWithScheduled();\r\n }\r\n\r\n isAutoFrequency() {\r\n return this.viewModel.isAutoFrequency();\r\n }\r\n\r\n handleErrors(errors, logTraceFunc) {\r\n if (errors && errors.errors && _.first(errors.errors)) {\r\n const errorCode = _.first(errors.errors).Code;\r\n\r\n if (logTraceFunc) logTraceFunc(`Handling error in schedule form view. Error code: ${errorCode}`);\r\n switch (errorCode) {\r\n case 'TaskSchedulingInvalid':\r\n this.viewModel.timeError(true);\r\n break;\r\n case 'InvalidAdWordsImportContext': // todo: InvalidFacebookImportContext? error code for facebook??\r\n this.onCredentialsError();\r\n break;\r\n case 'TaskThrottlingLimitReached':\r\n this.showError(this.i18n.getString('Import_Scheduled_Import_Throttling_Error', `${this.i18n.get('ImportScheduleAndHistoryActionText')}`));\r\n break;\r\n default:\r\n this.showError(this.i18n.get('GenericErrorMessage'));\r\n break;\r\n }\r\n } else {\r\n this.showError(this.i18n.get('GenericErrorMessage'));\r\n }\r\n }\r\n\r\n attachFrequencyListener(listener) {\r\n this.viewModel.chosenFrequency.subscribe(listener);\r\n }\r\n\r\n getDisplayString() {\r\n return cronToDisplayString(\r\n this.i18n,\r\n this.datePicker.datePicker.value().toLocaleDateString(),\r\n this.viewModel\r\n );\r\n }\r\n}\r\n","import Promise from 'bluebird';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport _ from 'underscore';\r\n\r\nimport { BaseImportStep } from '@bingads-webui-campaign/import-components';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { Constants as CCUIConstants } from '@bingads-webui-clientcenter/entity-utils';\r\nimport { ByPassConfirmationModal } from '@bingads-webui-react/feature-adoption-coupon';\r\n\r\nimport { ScheduleFormView } from './form/index';\r\nimport template from './schedule-import-step.pug';\r\nimport { mapCronToFrequency } from './util';\r\n\r\nconst FAC_STATUS_ADOPTED = CCUIConstants.RecommendationAdoptionStatus.Adopted;\r\n\r\nexport class ScheduleImportStep extends BaseImportStep {\r\n initialize({\r\n importSourceName,\r\n deps,\r\n }) {\r\n super.initialize({\r\n deps,\r\n });\r\n\r\n this.deps = deps;\r\n this.nextActionText = this.i18n.get('UserCtrl_ImportCampaignImportFile');\r\n this.importOmnitureTrackingId = `omniture-${importSourceName}-import-runnow-import`;\r\n this.importButtonEnabled = true;\r\n\r\n this.coupon = deps.coupon;\r\n\r\n this.importSourceName = importSourceName;\r\n\r\n this.stepRemoved = false;\r\n }\r\n\r\n render() {\r\n this.$el.html(template());\r\n return this;\r\n }\r\n\r\n willShow() {\r\n this.logTrace('will show schedule import step');\r\n\r\n if (this.checkIfShouldUpdateAndResetFlagIfTrue()) {\r\n const state = this.getState() || {};\r\n\r\n this.scheduleFormView = new ScheduleFormView({\r\n importSourceName: this.importSourceName,\r\n deps: this.deps,\r\n options: {\r\n isEditingScheduledImport: state.isEditingScheduledImport,\r\n initialSettings: state.initialSettings,\r\n showError: this.showErrorMessage,\r\n isMultiAccountImport: this.IsMultiAccountImport,\r\n scheduleFromImportSummary: false,\r\n state: this.getState(),\r\n logTraceFunction: this.logTrace,\r\n toggleImportButtonStatus: this.toggleImportButtonStatus,\r\n },\r\n facCoupon: this.coupon,\r\n });\r\n\r\n this.$('.schedule-import-container').html(this.scheduleFormView.render().$el);\r\n\r\n this.scheduleFormView\r\n .attachFrequencyListener(this.changeActionTextOnFrequencyChange.bind(this));\r\n this.changeActionTextOnFrequencyChange();\r\n this.logTrace('render schedule import step');\r\n this.deps.logActivities.completeSchedule.startSignal();\r\n } else {\r\n this.logTrace('not edited, directly expand schedule import step');\r\n }\r\n }\r\n\r\n toggleImportButtonStatus = (enable) => {\r\n if (enable) {\r\n this.importButtonEnabled = true;\r\n super.updateAction();\r\n } else {\r\n this.importButtonEnabled = false;\r\n super.updateAction();\r\n }\r\n }\r\n get title() {\r\n return this.buildTitle({\r\n activeTitle: this.i18n.get('Scheduled_Import_Title'),\r\n summaryTitle: this.i18n.get('Scheduled_Import_Title_Summary'),\r\n });\r\n }\r\n\r\n getSummaryInfo() {\r\n return this.scheduleFormView && this.scheduleFormView.getDisplayString();\r\n }\r\n\r\n get actions() {\r\n return [\r\n {\r\n name: 'next',\r\n displayText: this.nextActionText,\r\n htmlAttributes: {\r\n id: this.importOmnitureTrackingId,\r\n class: 'btn btn-primary',\r\n 'data-analyticsid': `omniture-${this.importSourceName}-import-schedule-button`,\r\n },\r\n enabled: this.importButtonEnabled,\r\n },\r\n {\r\n name: 'cancel',\r\n displayText: this.i18n.get('CampaignImport_ButtonCancel'),\r\n },\r\n ];\r\n }\r\n\r\n get isScheduledImport() {\r\n return this.scheduleFormView.isScheduledImport();\r\n }\r\n\r\n changeActionTextOnFrequencyChange() {\r\n this.deps.logScenario.frequencyChanged.create()\r\n .signal(this.scheduleFormView.viewModel.chosenFrequency().value);\r\n\r\n if (this.scheduleFormView.isScheduledImport() && this.nextActionText !== this.i18n.get('Scheduled_Import_Schedule_Button')) {\r\n this.nextActionText = this.i18n.get('Scheduled_Import_Schedule_Button');\r\n this.importOmnitureTrackingId = `omniture-${this.importSourceName}-import-schedule-import`;\r\n this.updateAction();\r\n } else if (!this.scheduleFormView.isScheduledImport() && this.nextActionText !== this.i18n.get('UserCtrl_ImportCampaignImportFile')) {\r\n this.nextActionText = this.i18n.get('UserCtrl_ImportCampaignImportFile');\r\n this.importOmnitureTrackingId = `omniture-${this.importSourceName}-import-runnow-import`;\r\n this.updateAction();\r\n }\r\n }\r\n\r\n setNextActionText(i18nKey) {\r\n this.replaceActionText('next', this.i18n.get(i18nKey));\r\n }\r\n\r\n wizardShouldGoNext() {\r\n let facCouponValidate;\r\n\r\n // check if coupon is visible\r\n if (this.coupon\r\n && (this.scheduleFormView.viewModel.chosenFrequency().value === 'Now'\r\n || this.scheduleFormView.viewModel.chosenFrequency().value === 'Once')) {\r\n const element = document.createElement('div');\r\n element.style.display = 'none';\r\n this.$el.append(element);\r\n\r\n const unmount = () => {\r\n ReactDOM.unmountComponentAtNode(element);\r\n element.remove();\r\n };\r\n\r\n facCouponValidate = new Promise((resolve, reject) => {\r\n ReactDOM.render( {\r\n unmount();\r\n reject(new Error('Cancelled'));\r\n }}\r\n onConfirm={() => {\r\n unmount();\r\n this.trigger('changeCouponBannerVisibility', false);\r\n resolve();\r\n }}\r\n />, element);\r\n });\r\n } else {\r\n facCouponValidate = Promise.resolve(this.coupon);\r\n }\r\n\r\n return facCouponValidate.then((facCoupon) => {\r\n if (this.scheduleFormView) {\r\n this.deps.logActivities.completeSchedule\r\n .stopSignal(this.scheduleFormView.viewModel.chosenFrequency().value);\r\n }\r\n const state = this.getState() || {};\r\n const closeBlock = withUiBlock();\r\n let prepareSummaryPromise;\r\n\r\n if (state.importId) {\r\n this.patchState({\r\n isContinueImport: true,\r\n });\r\n prepareSummaryPromise = this.pollRunningImportStatusAndGoNextWhenReady(state, closeBlock);\r\n } else if (this.scheduleFormView.runNowWithScheduled() === true) {\r\n prepareSummaryPromise = this.createImportRunNowWithScheduledAndGoNextWhenReady(state, closeBlock, facCoupon); // eslint-disable-line\r\n } else {\r\n prepareSummaryPromise = this.createImportAndGoNextWhenReady(state, closeBlock, facCoupon);\r\n }\r\n\r\n return prepareSummaryPromise\r\n .catch((errors) => {\r\n this.importButtonEnabled = true;\r\n this.trigger('change:action');\r\n if (errors && errors.customized) {\r\n this.handleErrorInImport(errors);\r\n } else {\r\n this.scheduleFormView.handleErrors(errors);\r\n }\r\n return false;\r\n })\r\n .finally(closeBlock);\r\n })\r\n .catch(() => false);\r\n }\r\n\r\n pollRunningImportStatusAndGoNextWhenReady(state, closeBlock) {\r\n return this.repository.pollGetImportStatus(state.importId, closeBlock)\r\n .then(() => (\r\n this.repository.getImportSummary(state.importId)\r\n .then((importSummaryData) => {\r\n this.patchState({\r\n summary: importSummaryData,\r\n });\r\n return true;\r\n })\r\n ));\r\n }\r\n\r\n createScheduledImportAndGoNextWhenReady(taskItemBody, state, facCoupon) {\r\n let taskItemPromise;\r\n this.patchState({\r\n isScheduledImport: true,\r\n scheduledTimeDisplayString: this.scheduleFormView.getDisplayString(),\r\n });\r\n\r\n if (state.isEditingScheduledImport) {\r\n taskItemPromise = this.repository.updateScheduledImportTaskItem(\r\n taskItemBody,\r\n state.initialSettings.taskItemId\r\n );\r\n } else {\r\n taskItemPromise = this.repository.createScheduledImportTaskItem(taskItemBody)\r\n .tap((taskItem) => {\r\n const { Id } = taskItem || {};\r\n this.repository.logApplyOpportunityInfoIfIfApplicable(Id);\r\n });\r\n }\r\n\r\n // if there is a coupon, mark as adopted and show a success/alert banner\r\n if (facCoupon) {\r\n taskItemPromise = taskItemPromise\r\n .tap(() => this.repository.updateFACCoupon(FAC_STATUS_ADOPTED)\r\n .then(() => {\r\n if (this.deps.showAlertHandler) {\r\n let action = null;\r\n if (this.deps.isBillToCustomer) {\r\n action = {\r\n message: this.deps.i18nAmdLoader.getString('Notification_Action_ViewPromotionalOffers'),\r\n href: this.deps.couponDetailsUrl,\r\n };\r\n }\r\n\r\n this.deps.showAlertHandler({\r\n title: this.deps.i18nAmdLoader.getString('FACAdoptionFinishSuccessMessage_Title'),\r\n message: this.deps.i18nAmdLoader.getString('FACAdoptionFinishSuccessMessage'),\r\n level: 'Confirmation',\r\n action,\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n if (this.deps.showAlertHandler) {\r\n this.deps.showAlertHandler({\r\n message: this.deps.i18nAmdLoader.getString('GenericFACAdoptionFinishErrorMessage'),\r\n level: 'Error',\r\n });\r\n }\r\n }));\r\n }\r\n\r\n return taskItemPromise\r\n .then(() => {\r\n this.importButtonEnabled = false;\r\n this.trigger('change:action');\r\n return true;\r\n });\r\n }\r\n\r\n createRunNowImportAndGoNextWhenReady(taskItemBody, closeBlock, logOpportunity) {\r\n return this.repository.createRunNowImportTaskItem(taskItemBody)\r\n .tap((taskItem) => {\r\n if (logOpportunity) {\r\n const { Id } = taskItem || {};\r\n this.repository.logApplyOpportunityInfoIfIfApplicable(Id);\r\n }\r\n })\r\n .then((response) => {\r\n this.importButtonEnabled = false;\r\n this.trigger('change:action');\r\n return this.repository\r\n .pollTaskItemExecutionStatus(_.first(response.TaskItemExecutions).Id, closeBlock);\r\n })\r\n .then(({ importId, isBatch }) => {\r\n if (this.stepRemoved) {\r\n return false;\r\n }\r\n this.patchState({\r\n importId,\r\n isBatch,\r\n });\r\n return this.repository.getImportSummary(importId);\r\n })\r\n .then((importSummaryData) => {\r\n if (this.stepRemoved) {\r\n return false;\r\n }\r\n this.patchState({\r\n summary: importSummaryData,\r\n isScheduledImport: false,\r\n });\r\n return true;\r\n });\r\n }\r\n\r\n createImportAndGoNextWhenReady(state, closeBlock, facCoupon) {\r\n let taskItemBody = this.scheduleFormView.serializeImportSchedulingOptions();\r\n this.patchState({\r\n isRunNowWithScheduledImport: false,\r\n });\r\n\r\n if (taskItemBody) {\r\n const scheduleOption = taskItemBody.cron ? mapCronToFrequency(taskItemBody.cron) : 'Now';\r\n this.repository.applyOpportunityIfApplicable({ scheduleOption });\r\n taskItemBody = _.extend(taskItemBody, {\r\n importUserPreferences: state.importUserPreferences,\r\n });\r\n\r\n return this.repository.prepareImportTaskItem({\r\n importOptions: taskItemBody,\r\n stepState: state,\r\n })\r\n .then((finalBody) => {\r\n if (this.scheduleFormView.isScheduledImport()) {\r\n return this.createScheduledImportAndGoNextWhenReady(finalBody, state, facCoupon);\r\n }\r\n return this.createRunNowImportAndGoNextWhenReady(finalBody, closeBlock, true);\r\n });\r\n }\r\n this.importButtonEnabled = false;\r\n this.trigger('change:action');\r\n this.logTrace('No taskItemBody returned from scheduleFormView.serializeImportSchedulingOptions');\r\n return Promise.resolve(false);\r\n }\r\n\r\n createImportRunNowWithScheduledAndGoNextWhenReady(state, closeBlock, facCoupon) {\r\n this.logTrace('run now feature used');\r\n this.patchState({\r\n isRunNowWithScheduledImport: true,\r\n });\r\n\r\n const taskItemBody = this.scheduleFormView.serializeImportSchedulingOptions();\r\n if (taskItemBody) {\r\n const scheduleOption = taskItemBody.scheduledTaskItemBody.cron ? mapCronToFrequency(taskItemBody.scheduledTaskItemBody.cron) : 'Now';\r\n this.repository.applyOpportunityIfApplicable({ scheduleOption });\r\n\r\n taskItemBody.scheduledTaskItemBody = _.extend(taskItemBody.scheduledTaskItemBody, {\r\n importUserPreferences: state.importUserPreferences,\r\n });\r\n\r\n taskItemBody.runNowTaskItemBody = _.extend(taskItemBody.runNowTaskItemBody, {\r\n importUserPreferences: state.importUserPreferences,\r\n });\r\n return this.repository.prepareImportTaskItem({\r\n importOptions: taskItemBody.scheduledTaskItemBody,\r\n stepState: state,\r\n }).then(scheduleBody => (\r\n this.createScheduledImportAndGoNextWhenReady(scheduleBody, state, facCoupon)\r\n )).then(() => (\r\n this.repository.prepareImportTaskItem({\r\n importOptions: taskItemBody.runNowTaskItemBody,\r\n stepState: state,\r\n })\r\n )).then(runNowBody => (\r\n this.createRunNowImportAndGoNextWhenReady(runNowBody, closeBlock)\r\n ));\r\n }\r\n return Promise.resolve(false);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ImportSummaryStep as BaseImportSummaryStep, ImportSource } from '@bingads-webui-campaign/import-components';\r\n\r\nimport ScheduledImportSummaryTemplate from './scheduled-import-summary-template.pug';\r\nimport { ScheduleFormView } from '../import-schedule-step/form/index';\r\n\r\nexport class ImportSummaryStep extends BaseImportSummaryStep {\r\n initialize({\r\n importSourceName,\r\n isAdGroupLevelImportEnabled,\r\n labels = {},\r\n getStateAdapter,\r\n deps,\r\n }) {\r\n super.initialize({ deps });\r\n this.signupMode = deps.uxMode === 'signup';\r\n this.permissions = deps.config.get('Permissions') || {};\r\n this.isAdGroupLevelImportEnabled = isAdGroupLevelImportEnabled; // !this.signupMode;\r\n this.permissions = deps.config.get('Permissions');\r\n if (labels.summaryDisclaimerKey) {\r\n this.summaryDisclaimerKey = labels.summaryDisclaimerKey;\r\n }\r\n if (labels.summaryDisclaimerHelpLinkKey) {\r\n this.summaryDisclaimerHelpLinkKey = labels.summaryDisclaimerHelpLinkKey;\r\n }\r\n\r\n this.importSourceName = importSourceName;\r\n this.labels = labels;\r\n this.stateAdapter = getStateAdapter(this.getState.bind(this), this.patchState.bind(this));\r\n this.getState = this.stateAdapter.getState;\r\n this.patchState = this.stateAdapter.patchState;\r\n this.config = deps.config;\r\n this.initialTimeZoneId = this.config.get('AccountTimeZone');\r\n this.timeZoneMapper = deps.timeZoneMapper;\r\n\r\n this.summaryDataContextManager = deps.dataContextManager && deps.dataContextManager.default;\r\n }\r\n\r\n willShow() {\r\n const state = this.getState() || {};\r\n if (!this.state.isContinueImport\r\n && !this.state.isRunNowWithScheduledImport) {\r\n this.scheduleFormView = new ScheduleFormView({\r\n importSourceName: this.importSourceName,\r\n deps: this.deps,\r\n options: {\r\n isEditingScheduledImport: state.isEditingScheduledImport,\r\n initialSettings: state.initialSettings,\r\n showError: this.showErrorMessage,\r\n scheduleFromImportSummary: true,\r\n state: this.getState(),\r\n logTraceFunction: this.logTrace,\r\n timeZoneOffsetValue: this.timeZoneMapper.getTimeZoneOffset(this.initialTimeZoneId),\r\n },\r\n });\r\n }\r\n\r\n this.showAlert = this.showDisplayCampaignAlert();\r\n\r\n if (!state.isScheduledImport && !this.signupMode) {\r\n this.summaryInfos = [{\r\n label: this.labels.loginSummary || 'Import_ImportSummary_LoginSummary',\r\n text: state.importSourceLoginSummary,\r\n }, {\r\n label: this.labels.accountSummary || 'Import_ImportSummary_AccountSummary',\r\n text: state.importSourceAccountSummary,\r\n }, {\r\n label: this.isAdGroupLevelImportEnabled ?\r\n (this.labels.campaignsAndAdGroupsSummary || 'Import_ImportSummary_CampaignsAndAdGroupsSummary')\r\n : (this.labels.campaignSummary || 'Import_ImportSummary_CampaignSummary'),\r\n text: state.importSourceCampaignsSummary,\r\n }, {\r\n label: 'Import_ImportSummary_DestinationSummary',\r\n text: this.deps.config.get('CurrentAccount').Title,\r\n }, {\r\n label: 'Import_ImportSummary_OptionsSummary',\r\n text: state.importOptionsSummary,\r\n }];\r\n super.willShow();\r\n this.logTrace('render run now import summary step');\r\n } else {\r\n let summaryText;\r\n let merchantCenterPlaceholderStoreNote;\r\n\r\n if (this.signupMode) {\r\n summaryText = this.i18n.get('Import_SummaryText_ForSignUp');\r\n merchantCenterPlaceholderStoreNote = this.i18n.get('Import_Summary_PlaceholderStore_Note');\r\n this.deps.onSignupComplete();\r\n } else {\r\n summaryText = this.i18n.get('Scheduled_Import_Summary_Header').replace('{0}', state.scheduledTimeDisplayString);\r\n }\r\n\r\n this.$el.html(ScheduledImportSummaryTemplate({\r\n summaryText,\r\n i18n: ImportSource.google(this.i18n, this.deps.repository).i18n,\r\n merchantCenterPlaceholderStoreNote,\r\n showAlert: this.showAlert,\r\n }));\r\n this.logTrace('render schedule import summary step');\r\n }\r\n\r\n // update grid cache\r\n if (this.summaryDataContextManager) {\r\n this.summaryDataContextManager.successEmitter.trigger('invalidate', 'AdGroup');\r\n this.summaryDataContextManager.successEmitter.trigger('invalidate', 'AssetGroup');\r\n }\r\n }\r\n\r\n get actions() {\r\n const state = this.getState() || {};\r\n\r\n if (state.isScheduledImport) {\r\n return [{\r\n name: 'view-schedule',\r\n displayText: this.i18n.get('Scheduled_Import_View_Schedule_Button'),\r\n method: 'viewSchedule',\r\n enabled: true,\r\n htmlAttributes: {\r\n class: 'btn btn-default',\r\n },\r\n }];\r\n } else if (this.signupMode) {\r\n return [{\r\n name: 'add-payment',\r\n displayText: this.i18n.get('CampaignImport_ButtonContinue'),\r\n method: 'addPayment',\r\n enabled: true,\r\n htmlAttributes: {\r\n class: 'btn btn-primary',\r\n },\r\n }];\r\n }\r\n\r\n return super.actions;\r\n }\r\n\r\n viewSchedule() {\r\n this.repository.redirectToImportScheduleAndHistory();\r\n }\r\n\r\n addPayment() {\r\n this.repository.redirectToAddPayment();\r\n }\r\n\r\n showDisplayCampaignAlert() {\r\n const state = this.getState() || {};\r\n\r\n const { campaignIds, googleCampaigns } = state;\r\n\r\n let selectedCampaigns = [];\r\n\r\n if (_.size(campaignIds) === 0) {\r\n selectedCampaigns = googleCampaigns;\r\n } else {\r\n selectedCampaigns =\r\n _.filter(googleCampaigns, campaign => _.contains(campaignIds, campaign.Id));\r\n }\r\n\r\n return this.deps.repository.containDisplayType(selectedCampaigns);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport Promise from 'bluebird';\r\nimport { BaseImportStep } from '@bingads-webui-campaign/import-components';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { GoogleLoginRepository } from '@bingads-webui-campaign/import-shared-repositories';\r\n\r\nimport { validateSelectedAccountCampaigns } from '../../shared/step/index';\r\nimport GoogleLoginTemplate from './google-login-template.pug';\r\n\r\nexport class GoogleLoginStep extends BaseImportStep {\r\n initialize({\r\n deps,\r\n singleAccountMode = true,\r\n }) {\r\n super.initialize({\r\n deps,\r\n });\r\n const { google, config } = deps;\r\n const permissions = config.get('Permissions') || {};\r\n if (deps.repository) {\r\n this.logTrace(`GSILocal: ${permissions.dynamic.GSILocal}`);\r\n }\r\n this.googleLoginRepository = new GoogleLoginRepository({\r\n deps: { google, GSILocal: permissions.dynamic.GSILocal },\r\n });\r\n this.signupMode = deps.uxMode === 'signup';\r\n this.singleAccountMode = singleAccountMode;\r\n }\r\n\r\n // TODO: Change button text if user is already logged in\r\n get actions() {\r\n const actions = [];\r\n\r\n if (this.repository.isUserLoggedIn()) {\r\n actions.push({\r\n name: 'continue',\r\n displayText: this.i18n.get('CampaignImport_ButtonContinue'),\r\n method: 'continue',\r\n htmlAttributes: {\r\n class: 'btn btn-primary',\r\n },\r\n enabled: true,\r\n }, {\r\n name: 'signout',\r\n displayText: this.i18n.get('GoogleImport_Logout_Title'),\r\n method: 'logoutGoogle',\r\n htmlAttributes: {\r\n class: 'btn btn-default',\r\n },\r\n enabled: true,\r\n });\r\n } else {\r\n actions.push({\r\n name: 'sign-in',\r\n displayText: this.i18n.get('CampaignImport_ButtonAuthorize'),\r\n method: 'signIn',\r\n htmlAttributes: {\r\n class: 'btn btn-primary',\r\n 'data-analyticsid': 'omniture-google-import-sign-in',\r\n },\r\n enabled: true,\r\n });\r\n if (!this.signupMode) {\r\n actions.push({\r\n name: 'cancel',\r\n displayText: this.i18n.get('CampaignImport_ButtonCancel'),\r\n });\r\n }\r\n }\r\n\r\n return actions;\r\n }\r\n\r\n get title() {\r\n return this.buildTitle({\r\n activeTitle: this.i18n.get('GoogleImport_Login_Title'),\r\n summaryTitle: this.i18n.get('GoogleImport_Login_Summary'),\r\n });\r\n }\r\n\r\n getSummaryInfo() {\r\n return this.repository.getGoogleAccountName();\r\n }\r\n\r\n render() {\r\n this.koModel = {\r\n errorMsg: ko.observable(''),\r\n isLoggedIn: ko.observable(this.repository.isUserLoggedIn()),\r\n signInFailedEmptySessionId: ko.observable(false),\r\n };\r\n this.koModel.errorMsgRole = ko.computed(() => (this.koModel.errorMsg() === '' ? 'none' : 'alert'), this.koModel);\r\n this.$el.html(GoogleLoginTemplate({\r\n i18n: this.i18n,\r\n currentGoogleAccount: this.repository.getGoogleAccountName(),\r\n currentAccount: this.deps.config.get('CurrentAccount').Title,\r\n singleAccountMode: this.singleAccountMode,\r\n }));\r\n ko.applyBindings(this.koModel, this.el);\r\n this.logTrace('render google login step');\r\n this.deps.logActivities.logInAccount.startSignal();\r\n return this;\r\n }\r\n\r\n signIn() {\r\n this.deps.logScenario.clickOnSignInButton.create().signal();\r\n if (this.deps.token) {\r\n return this.signIntoGoogleInDevEnvWithToken();\r\n }\r\n this.logTrace(`use offline-access consent: ${this.koModel.signInFailedEmptySessionId()}`);\r\n return new Promise((resolve, reject) => {\r\n this.googleLoginRepository.googleSignIn({\r\n onSuccess: resolve,\r\n onFail: reject,\r\n useConsentPrompt: this.koModel.signInFailedEmptySessionId(),\r\n });\r\n }).then(response => this.onGoogleAuthSuccess(response))\r\n .catch((error) => {\r\n if (error.authErrors === 'popup_failed_to_open') {\r\n this.koModel.errorMsg(this.i18n.get('GoogleImport_AuthorizationError_Popup_Blocked'));\r\n } else if (error.authErrors === 'idpiframe_initialization_failed') {\r\n this.koModel.errorMsg(this.i18n.get('GoogleImport_AuthorizationError_Cookies_Disabled'));\r\n } else if (error.authErrors === 'popup_closed') {\r\n this.koModel.errorMsg(this.i18n.get('GoogleImport_AuthorizationError_Closed_By_User'));\r\n } else {\r\n this.koModel.errorMsg(this.i18n.get('GoogleImport_AuthorizationError'));\r\n }\r\n this.logTrace(`failed to login to google import spa, err: ${error && error.authErrors}`);\r\n })\r\n .finally(withUiBlock());\r\n }\r\n\r\n continue() {\r\n this.deps.logActivities.logInAccount.stopSignal();\r\n\r\n const sessionId = this.repository.getGoogleImportInfoFromCookie().googleSessionId;\r\n\r\n if (!sessionId) {\r\n this.logoutGoogleWithErrorMessage();\r\n return;\r\n }\r\n\r\n const state = this.getState();\r\n const finalState = {};\r\n this.repository.getGoogleAccounts(sessionId)\r\n .then((googleAccount) => {\r\n finalState.googleAccount = googleAccount;\r\n finalState.googleLoginSummary = this.getSummaryInfo();\r\n\r\n // should not skip google account step if currency conversion is required\r\n let shouldConvertCurrency = false;\r\n if (googleAccount.length === 1) {\r\n const bingCurrency = this.deps.config.get('AccountCurrencyCode');\r\n const googleCurrency = googleAccount[0].Currency;\r\n if (googleCurrency !== bingCurrency) {\r\n shouldConvertCurrency = true;\r\n }\r\n }\r\n\r\n if (this.singleAccountMode && googleAccount.length === 1 && !shouldConvertCurrency) {\r\n this.logTrace('prepare for google campaign step');\r\n const blobName = state && state.initialSettings\r\n && state.initialSettings.AdWordsImportContext\r\n && state.initialSettings.AdWordsImportContext.GoogleEntitiesBlobName;\r\n return this.repository\r\n .prepareForCampaignSelectionStep(googleAccount[0].CustomerId, blobName);\r\n }\r\n\r\n return null;\r\n })\r\n .then((extraState) => {\r\n let googleAccountSummary = null;\r\n if (extraState\r\n && validateSelectedAccountCampaigns(extraState.googleCampaigns, this.signupMode)) {\r\n this.logTrace('only one google account, go directly to google campaigns');\r\n this.deps.logScenario.accountSelectionSkipped.create().signal();\r\n const soleGoogleAccount = finalState.googleAccount[0];\r\n // in scenarios when accountname is blank (e.g. bingadstest1),\r\n // use login name and customer id for summary info\r\n googleAccountSummary = _.size(soleGoogleAccount.AccountName) > 0 ?\r\n soleGoogleAccount.AccountName :\r\n `${this.repository.getGoogleAccountName()}, ${soleGoogleAccount.CustomerId}`;\r\n\r\n _.extend(finalState, extraState, {\r\n googleAccountSummary,\r\n googleCustomerId: soleGoogleAccount.CustomerId,\r\n loginCustomerId: soleGoogleAccount.LoginCustomerId,\r\n });\r\n }\r\n this.patchState(finalState);\r\n this.trigger('switch:step', googleAccountSummary ? { googleAccountSummary } : undefined);\r\n })\r\n .catch(err => this.handleError(err))\r\n .finally(withUiBlock());\r\n }\r\n\r\n processSignIn(startSessionPromise) {\r\n return startSessionPromise.then((sessionId) => {\r\n if (sessionId) {\r\n this.continue();\r\n this.koModel.signInFailedEmptySessionId(false);\r\n } else {\r\n this.koModel.signInFailedEmptySessionId(true);\r\n this.koModel.errorMsg(this.i18n.get('GoogleImport_SignInErrorOfflineAccess'));\r\n this.logTrace('No refresh token on file for account. Showing offline access prompt');\r\n }\r\n })\r\n .catch(err => this.handleError(err))\r\n .finally(withUiBlock());\r\n }\r\n\r\n onGoogleAuthSuccess(response) {\r\n return this.processSignIn(this.repository.startGoogleSession(response.code));\r\n }\r\n\r\n signIntoGoogleInDevEnvWithToken() {\r\n return this.processSignIn(this.repository.startGoogleSessionWithToken(this.deps.token));\r\n }\r\n\r\n handleError(err) {\r\n let code;\r\n let msg;\r\n const { i18n } = this;\r\n const email = this.getSummaryInfo();\r\n\r\n if (err.body) {\r\n code = _.propertyOf(err.body[0])('Code');\r\n }\r\n\r\n switch (code) {\r\n case 'GoogleSyncNotAdWordsUser':\r\n msg = i18n.get('CampaignImport_GSyncNotAdsUser').replace('{0}', email);\r\n break;\r\n case 'GoogleSyncInvalidCustomerId':\r\n msg = i18n.get('CampaignImport_GSyncInvalidCustomerId');\r\n break;\r\n case 'GoogleSyncOAuthTokenRevoked':\r\n msg = i18n.get('CampaignImport_GSyncOAuthTokenRevoked');\r\n break;\r\n case 'GoogleSyncWebExceptionTimeout':\r\n msg = i18n.get('CampaignImport_GSyncOperationTimeout');\r\n break;\r\n case 'GoogleSyncAccountNotSetUp':\r\n msg = i18n.get('CampaignImport_GSyncAccountNotSetUp').replace('{0}', email);\r\n break;\r\n case 'GoogleSyncUserIsNotAuthorized':\r\n msg = i18n.get('CampaignImport_GSyncAuthorizationError');\r\n break;\r\n case 'GoogleSyncUserPermissionDenied':\r\n msg = i18n.get('Scheduled_Import_Permission_Error');\r\n break;\r\n case 'GoogleSyncTwoStepVerificationNotEnrolled':\r\n msg = this.deps.i18nErrors.getString(`Error_Campaign_API_${code}`);\r\n break;\r\n default:\r\n break;\r\n }\r\n if (msg) {\r\n // this error will be shown in google sign in step\r\n this.koModel.errorMsg(msg);\r\n this.logoutGoogle();\r\n } else {\r\n // this error will be shown on top of page\r\n this.handleGenericError(err);\r\n }\r\n }\r\n\r\n logoutGoogle() {\r\n this.isEdited = true;\r\n this.repository.logout();\r\n this.koModel.isLoggedIn(this.repository.isUserLoggedIn());\r\n this.logTrace('User logging out of Google account');\r\n this.trigger('change:action');\r\n }\r\n\r\n logoutGoogleWithErrorMessage() {\r\n this.logoutGoogle();\r\n this.koModel.errorMsg(this.i18n.get('Import_Google_AlreadySignedOut_Error'));\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ImportSource } from '@bingads-webui-campaign/import-components';\r\nimport { ImportOptionsStep } from '../../shared/step/index';\r\n\r\nexport { ImportOptionsSummaryBuilder as GoogleImportOptionsSummaryBuilder } from '../../shared/step/index';\r\n\r\nexport class GoogleImportOptionsStep extends ImportOptionsStep {\r\n initialize({ deps }) {\r\n const importSource = ImportSource.google(deps.i18n, deps.repository);\r\n super.initialize({\r\n importSourceName: importSource.name,\r\n deps: _.defaults({\r\n i18n: importSource.i18n,\r\n repository: importSource.repository,\r\n }, deps),\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ImportSource } from '@bingads-webui-campaign/import-components';\r\nimport { BaseScheduleImportStep, BaseScheduleFormView } from '../../shared/step/index';\r\n\r\nexport class ScheduleImportStep extends BaseScheduleImportStep {\r\n initialize({ deps }) {\r\n const importSource = ImportSource.google(deps.i18n, deps.repository);\r\n super.initialize({\r\n importSourceName: importSource.name, // google\r\n deps: _.defaults({\r\n i18n: importSource.i18n,\r\n repository: importSource.repository,\r\n }, deps),\r\n });\r\n }\r\n}\r\n\r\nexport class ScheduleFormView extends BaseScheduleFormView {\r\n initialize({ deps, options }) {\r\n const importSource = ImportSource.google(deps.i18n, deps.repository);\r\n super.initialize({\r\n importSourceName: importSource.name, // google\r\n deps: _.defaults({\r\n i18n: importSource.i18n,\r\n repository: importSource.repository,\r\n }, deps),\r\n options,\r\n });\r\n }\r\n}\r\n","import { ImportSource } from '@bingads-webui-campaign/import-components';\r\nimport { CampaignGridView } from '../shared/step/campaign-selection-step/grid';\r\n\r\nexport function createGoogleCampaignGridView({\r\n data,\r\n signupMode,\r\n appConfig,\r\n isAIMImportEnabled,\r\n i18n,\r\n repo,\r\n ...others\r\n}) {\r\n const importSource = ImportSource.google(i18n, repo);\r\n const view = new CampaignGridView({\r\n data,\r\n signupMode,\r\n appConfig,\r\n isAIMImportEnabled,\r\n i18n: importSource.i18n,\r\n repo: importSource.repository,\r\n ...others,\r\n });\r\n return view;\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport {\r\n AccountTitleStep\r\n} from '@bingads-webui-campaign/import-components';\r\n\r\nimport {\r\n AccountSelectionStep,\r\n CampaignSelectionStep,\r\n ImportOptionsStep,\r\n BaseScheduleImportStep,\r\n ImportSummaryStep,\r\n} from '../shared/step/index';\r\n\r\nimport {\r\n GoogleLoginStep,\r\n} from '../step/index';\r\n\r\nfunction createAccountTitleStep(deps) {\r\n return {\r\n stepName: 'account-title-step',\r\n stepView: new AccountTitleStep({\r\n deps,\r\n }),\r\n };\r\n}\r\n\r\nfunction createGoogleLoginStep(deps) {\r\n return {\r\n stepName: 'google-login-step',\r\n stepView: new GoogleLoginStep({\r\n deps: _.defaults({ linkTextForTitle: deps.i18n.get('GoogleImport_Logout_Title') }, deps),\r\n }),\r\n };\r\n}\r\n\r\nfunction createGoogleAccountStep(deps) {\r\n return {\r\n stepName: 'google-account-step',\r\n stepView: new AccountSelectionStep({\r\n importSourceName: deps.importSource.name, // 'google'\r\n getStateAdapter: deps.importSource.getStateAdapter,\r\n deps: _.defaults({ previousStepName: 'google-login-step', i18n: deps.importSource.i18n }, deps),\r\n }),\r\n };\r\n}\r\n\r\nfunction createGoogleCampaignStep(deps) {\r\n const {\r\n config = {},\r\n importSource: {\r\n name,\r\n getStateAdapter,\r\n } = {},\r\n } = deps || {};\r\n const permissions = config.get('Permissions') || {};\r\n const signupMode = deps.uxMode === 'signup';\r\n\r\n return {\r\n stepName: 'google-campaign-step',\r\n stepView: new CampaignSelectionStep({\r\n importSourceName: name, // google\r\n getStateAdapter,\r\n isAIMImportEnabled: permissions.IsAIMCampaignEnabled,\r\n isAdGroupLevelImportEnabled: !signupMode,\r\n deps: _.defaults({\r\n previousStepName: 'google-account-step',\r\n i18n: deps.importSource.i18n,\r\n repository: deps.importSource.repository,\r\n }, deps),\r\n }),\r\n };\r\n}\r\n\r\nfunction createImportOptionsStep(deps) {\r\n return {\r\n stepName: 'import-options-step',\r\n stepView: new ImportOptionsStep({\r\n importSourceName: 'google',\r\n deps: _.defaults({ previousStepName: 'google-campaign-step' }, deps),\r\n }),\r\n };\r\n}\r\n\r\nfunction createScheduleImportStep(deps) {\r\n return {\r\n stepName: 'schedule-import-step',\r\n stepView: new BaseScheduleImportStep({\r\n importSourceName: deps.importSource.name, // google\r\n deps: _.defaults({\r\n previousStepName: 'import-options-step',\r\n i18n: deps.importSource.i18n,\r\n repository: deps.importSource.repository,\r\n }, deps),\r\n }),\r\n };\r\n}\r\n\r\nfunction createImportSummaryStep(deps) {\r\n const signupMode = deps.uxMode === 'signup';\r\n return {\r\n stepName: 'import-summary-step',\r\n stepView: new ImportSummaryStep({\r\n importSourceName: deps.importSource.name, // google\r\n isAdGroupLevelImportEnabled: !signupMode,\r\n getStateAdapter: deps.importSource.getStateAdapter,\r\n deps: _.defaults({\r\n i18n: deps.importSource.i18n,\r\n repository: deps.importSource.repository,\r\n }, deps),\r\n }),\r\n };\r\n}\r\n\r\nexport class GoogleImportStepFactory {\r\n static createSteps(deps) {\r\n deps.check();\r\n const steps = [];\r\n steps.push(createAccountTitleStep(deps));\r\n steps.push(createGoogleLoginStep(deps));\r\n steps.push(createGoogleAccountStep(deps));\r\n steps.push(createGoogleCampaignStep(deps));\r\n steps.push(createImportOptionsStep(deps));\r\n steps.push(createScheduleImportStep(deps));\r\n steps.push(createImportSummaryStep(deps));\r\n\r\n return steps;\r\n }\r\n\r\n static createStepsForSignup(deps) {\r\n const steps = [];\r\n\r\n steps.push(createGoogleLoginStep(deps));\r\n steps.push(createGoogleAccountStep(deps));\r\n steps.push(createGoogleCampaignStep(deps));\r\n steps.push(createImportSummaryStep(deps));\r\n return steps;\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDom from 'react-dom';\r\nimport Backbone from 'backbone';\r\nimport Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\n\r\nimport { BaseImportView, ImportSource } from '@bingads-webui-campaign/import-components';\r\nimport { PerfMarkerFactory } from '@bingads-webui/performance-marker';\r\nimport { CouponLightboxNew, CouponBannerNew } from '@bingads-webui-react/feature-adoption-coupon';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { GoogleImportRepository } from '@bingads-webui-campaign/import-shared-repositories';\r\nimport { Constants as CCUIConstants } from '@bingads-webui-clientcenter/entity-utils';\r\n\r\nimport { GoogleImportStepFactory } from './google-import-step-factory';\r\nimport { ImportOptionsStep as GoogleImportOptionsStep } from '../shared/step/index';\r\n\r\nconst FAC_STATUS_ACTIVE = CCUIConstants.RecommendationAdoptionStatus.Active;\r\nconst FAC_STATUS_NOT_IN_PROGRESS = CCUIConstants.RecommendationAdoptionStatus.NotInProgess;\r\n\r\n// Common dependency checks should happen in base-import-view\r\nfunction checkRequiredDepsForGoogleImport(deps) {\r\n deps.check('edm');\r\n deps.check('jsData');\r\n deps.check('google');\r\n deps.check('timeZoneMapper');\r\n deps.check('uxMode');\r\n deps.check('cookieHelperForEditImport');\r\n}\r\n\r\nexport class GoogleImportPage extends Backbone.View {\r\n initialize({\r\n deps,\r\n options = {},\r\n }) {\r\n checkRequiredDepsForGoogleImport(deps);\r\n this.deps = deps;\r\n this.perfMarker = this.deps.perfMarker || PerfMarkerFactory.createMarker('GoogleImport', { autoEnd: false });\r\n this.isSignUpMode = this.deps.uxMode === 'signup';\r\n\r\n if (this.isSignUpMode) {\r\n this.options = _.extend({\r\n isSignUpMode: true,\r\n subTitle: deps.pageSubTitle,\r\n }, options);\r\n } else {\r\n this.options = _.extend({\r\n pageTitle: deps.i18n.get('GoogleImport_PageTitle'),\r\n subTitle: deps.i18n.get('GoogleImport_PageDescription'),\r\n }, options);\r\n }\r\n\r\n this.isGoogleAccountSkipped = false;\r\n this.googleImportRepository = new GoogleImportRepository({ deps });\r\n this.initialState = {};\r\n this.baseImportOptions = this.options;\r\n\r\n this.importSource = ImportSource.google(deps.i18n, this.googleImportRepository);\r\n\r\n if (this.isSignUpMode) {\r\n _.extend(deps, {\r\n generateImportUserPreferencesFromPreviousOptions:\r\n GoogleImportOptionsStep.generateImportUserPreferencesFromPreviousOptions,\r\n });\r\n\r\n this.steps = GoogleImportStepFactory.createStepsForSignup(_.extend(deps, {\r\n repository: this.googleImportRepository,\r\n isContinueImport: false,\r\n importSource: this.importSource,\r\n }));\r\n\r\n this.baseImportOptions.showAllStepsInLastStepFunc = () => true;\r\n this.baseImportOptions.enableEdit = false;\r\n } else {\r\n this.steps = GoogleImportStepFactory.createSteps(_.extend(deps, {\r\n repository: this.googleImportRepository,\r\n isContinueImport: !!options.importId,\r\n subFieldsBlacklist: options.subFieldsBlacklist,\r\n onCredentialsError: this.onCredentialsError.bind(this),\r\n importSource: this.importSource,\r\n }));\r\n this.baseImportOptions.showAllStepsInLastStepFunc =\r\n wizard => wizard.currentStepInstance.isScheduledImport;\r\n if (this.options.importId) {\r\n this.initialState.importId = options.importId;\r\n this.baseImportOptions.currentStep = 'schedule-import-step';\r\n }\r\n this.baseImportOptions.enableEdit = true;\r\n\r\n this.onSwitchFinished = () => {\r\n $('[data-step-name=\"google-login-step\"] .edit-step').hide();\r\n $('[data-step-name=\"account-title-step\"] .edit-step').hide();\r\n const $accountEdit = $('[data-step-name=\"google-account-step\"] .edit-step');\r\n\r\n if (this.isGoogleAccountSkipped) {\r\n $accountEdit.hide();\r\n } else {\r\n $accountEdit.show();\r\n }\r\n };\r\n this.onSwitchFinished.bind(this);\r\n }\r\n }\r\n\r\n logTrace(...args) {\r\n this.googleImportRepository.logTrace(...args);\r\n }\r\n\r\n render() {\r\n this.perfMarker.willRender();\r\n let initBaseViewPromise = Promise.resolve([]);\r\n\r\n if (this.isSignUpMode) {\r\n this.baseImportView = new BaseImportView({\r\n deps: this.deps,\r\n steps: this.steps,\r\n options: this.baseImportOptions,\r\n initialState: {},\r\n });\r\n this.logTrace('sign up mode in Import SPA');\r\n this.logTrace('GoogleImportWizardSignUp');\r\n } else {\r\n let initialStateFetchPromise = Promise.resolve([]);\r\n\r\n if (this.options.taskItemId) {\r\n this.logTrace('taskItemId is passed');\r\n\r\n initialStateFetchPromise =\r\n this.googleImportRepository.getImportTaskItem(this.options.taskItemId)\r\n .then((taskItem) => {\r\n // in this case, if user has signed in on import schedule page, update session Id\r\n const currentUserId = _.propertyOf(this.deps.config.get('CurrentUser'))('Id');\r\n\r\n if (taskItem.ModifiedBy.Id !== currentUserId) {\r\n this.logTrace('a different user is editing');\r\n const { cookieHelperForEditImport } = this.deps;\r\n const sessionId = cookieHelperForEditImport.getSessionId(this.options.taskItemId);\r\n\r\n cookieHelperForEditImport.deleteCookie();\r\n if (sessionId) {\r\n taskItem.AdWordsImportContext.SessionId = sessionId; // eslint-disable-line\r\n }\r\n }\r\n\r\n this.initialState.initialSettings = taskItem;\r\n this.initialState.initialSettings.taskItemId = this.options.taskItemId;\r\n this.initialState.isEditingScheduledImport = true;\r\n });\r\n }\r\n\r\n initBaseViewPromise = initialStateFetchPromise.then(() => {\r\n this.baseImportView = new BaseImportView({\r\n deps: this.deps,\r\n steps: this.steps,\r\n options: this.baseImportOptions,\r\n initialState: this.initialState,\r\n onSwitchFinished: this.onSwitchFinished,\r\n });\r\n });\r\n }\r\n\r\n return initBaseViewPromise.then(() => (\r\n this.baseImportView.render()\r\n .then((baseImportView) => {\r\n this.$el.html(baseImportView.el);\r\n\r\n if (this.deps.coupon\r\n && this.deps.ccJsData) {\r\n this.enableFacOnScheduleStep = (shouldHaveCoupon) => {\r\n const scheduledImportStep = _.findWhere(this.steps, { stepName: 'schedule-import-step' }).stepView;\r\n scheduledImportStep.coupon = shouldHaveCoupon\r\n ? this.deps.coupon\r\n : undefined;\r\n };\r\n const disableFacEverywhere = () => {\r\n this.enableFacOnScheduleStep(false);\r\n const googleCampaignStepView = _.findWhere(this.steps, { stepName: 'google-campaign-step' }).stepView;\r\n googleCampaignStepView.coupon = undefined;\r\n };\r\n\r\n const addCouponBanner = () => {\r\n this.enableFacOnScheduleStep(true);\r\n\r\n const bannerContainer = $('
')[0];\r\n const topBannerElement = React.createElement(\r\n CouponBannerNew,\r\n {\r\n i18n: this.deps.i18nAmdLoader,\r\n coupon: this.deps.coupon,\r\n titleKey: 'FAC_Coupon_Banner_Title',\r\n messageKey: 'FAC_GImport_Coupon_Banner_Message',\r\n }\r\n );\r\n\r\n this.$el.prepend(bannerContainer);\r\n ReactDom.render(topBannerElement, bannerContainer);\r\n };\r\n\r\n if (this.deps.coupon.rawData.Status === FAC_STATUS_NOT_IN_PROGRESS) {\r\n const $modal = $('
');\r\n this.$el.append($modal);\r\n const closeLightbox = () => {\r\n const closeBlock = withUiBlock();\r\n this.googleImportRepository.updateFACCoupon(FAC_STATUS_ACTIVE)\r\n .tap(addCouponBanner)\r\n .catch((err) => {\r\n if (this.deps.showAlertHandler) {\r\n const errorCode = err.Errors && err.Errors[0] && err.Errors[0].Code;\r\n const errorMessageKey = errorCode === 'CCMTErrorNumber_CouponBankDepleted'\r\n ? 'FACDepletedErrorMessage'\r\n : 'GenericFACAdoptionStartErrorMessage';\r\n\r\n this.deps.showAlertHandler({\r\n message: this.deps.i18nAmdLoader.getString(errorMessageKey),\r\n level: 'Error',\r\n });\r\n }\r\n throw err;\r\n })\r\n .catch(disableFacEverywhere)\r\n .finally(() => {\r\n ReactDom.unmountComponentAtNode($modal[0]);\r\n $modal.remove();\r\n closeBlock();\r\n });\r\n };\r\n\r\n const modalElement = React.createElement(\r\n CouponLightboxNew,\r\n {\r\n coupon: this.deps.coupon,\r\n i18n: this.deps.i18nAmdLoader,\r\n onSubmit: closeLightbox,\r\n onCancel: closeLightbox,\r\n }\r\n );\r\n ReactDom.render(modalElement, $modal[0]);\r\n } else {\r\n addCouponBanner();\r\n }\r\n }\r\n\r\n this.$('[data-step-name=\"account-title-step\"] .edit-step').hide();\r\n\r\n if (this.isSignUpMode) {\r\n this.$('[data-step-name=\"import-summary-step\"]').closest('.step-container').hide();\r\n }\r\n\r\n this.attachPageEventHandlers();\r\n this.perfMarker.done();\r\n return this;\r\n })\r\n ));\r\n }\r\n\r\n remove() {\r\n if (this.baseImportView) {\r\n this.baseImportView.remove();\r\n }\r\n super.remove();\r\n }\r\n\r\n attachPageEventHandlers() {\r\n const googleLoginStepView = _.findWhere(this.steps, { stepName: 'google-login-step' }).stepView;\r\n const googleAccountStepView = _.findWhere(this.steps, { stepName: 'google-account-step' }).stepView;\r\n const googleCampaignStepView = _.findWhere(this.steps, { stepName: 'google-campaign-step' }).stepView;\r\n\r\n if (this.enableFacOnScheduleStep) {\r\n googleCampaignStepView.on('enableFacOnScheduleStep', this.enableFacOnScheduleStep);\r\n }\r\n\r\n this.baseImportView.on('click:step.header.link', (e) => {\r\n const stepName = $(e.target).closest('.step-header').attr('data-step-name');\r\n\r\n if (stepName === 'google-login-step') {\r\n this.logTrace('signout clicked. start to log out and go to google login step');\r\n googleLoginStepView.logoutGoogle();\r\n this.baseImportView.currentStepInstance.setState({\r\n savedSetting: _.result(googleCampaignStepView, 'getCurrentSetting') || {},\r\n isEditEnabledForWizard: !this.isSignUpMode,\r\n });\r\n\r\n if (!_.isEmpty(this.initialState)) {\r\n this.initialState.initialSettings.AdWordsImportContext = null;\r\n }\r\n this.baseImportView.currentStepInstance.patchState(this.initialState);\r\n this.baseImportView.goToStep(stepName);\r\n }\r\n });\r\n\r\n googleLoginStepView.on('switch:step', (obj) => {\r\n if (obj) {\r\n this.logTrace('directly go to google campaign step');\r\n googleAccountStepView.patchState(obj);\r\n googleLoginStepView.patchState({\r\n 'google-account-step.isEdited': true,\r\n });\r\n this.isGoogleAccountSkipped = true;\r\n this.baseImportView.goToStep('google-campaign-step');\r\n } else {\r\n this.isGoogleAccountSkipped = false;\r\n this.baseImportView.goToStep('google-account-step');\r\n }\r\n });\r\n }\r\n\r\n onCredentialsError() {\r\n this.logTrace('call onCredentialsError');\r\n\r\n const googleLoginStepView = _.findWhere(this.steps, { stepName: 'google-login-step' }).stepView;\r\n googleLoginStepView.logoutGoogleWithErrorMessage();\r\n this.baseImportView.currentStepInstance.setState({});\r\n this.baseImportView.goToStep('google-login-step');\r\n }\r\n\r\n // this needs to be called after this view has been attached to dom\r\n // otherwise UI blocker throws exception\r\n startPollingAfterContinueImport() {\r\n if (this.options.importId) {\r\n this.logTrace('importId is passed, go to next step');\r\n\r\n this.baseImportView.goToNextStep();\r\n } else if (this.options.taskItemId && !this.baseImportView.onContinueImportView) {\r\n this.logTrace('taskItemId is passed, set cookie');\r\n\r\n const googleLoginStepView = _.findWhere(this.steps, { stepName: 'google-login-step' }).stepView;\r\n const { AccountName, SessionId } = this.initialState.initialSettings.AdWordsImportContext;\r\n\r\n this.logTrace(`set adwords context to cookie: AccountName - ${AccountName}, SessionId - ${SessionId} `);\r\n this.googleImportRepository.setGoogleImportAccountInfoInCookie({\r\n loginAccount: AccountName,\r\n sessionId: SessionId,\r\n });\r\n\r\n googleLoginStepView.continue();\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport { ImportMode } from '@bingads-webui-campaign/imports-core';\r\nimport { CommonPermissionFactory } from '@bingads-webui-campaign/import-shared-repositories';\r\n\r\nexport class PermissionFactory extends CommonPermissionFactory {\r\n constructor({\r\n permissions,\r\n importMode,\r\n }) {\r\n super({\r\n permissions,\r\n });\r\n\r\n this.permissions = permissions;\r\n this.importMode = importMode;\r\n }\r\n\r\n isMerchantCenterStoreMappingStepEnabled = (campaignsWithMerchantId) => {\r\n if (_.size(campaignsWithMerchantId) === 0) {\r\n return false;\r\n }\r\n\r\n const { IsBSCSmartImportEnabled } = this.permissions;\r\n // right now check only pilot flag && campaignsWithMerchantId.\r\n // check multiaccount import once implemented.\r\n return this.importMode !== ImportMode.Multi && IsBSCSmartImportEnabled;\r\n };\r\n\r\n // be able to switch between single/multi import mode when user choose\r\n // single/multi account in choose-google-account-step\r\n isImportModeSwitchEnabled = () => {\r\n const { IsSmartImportV2Enabled } = this.permissions;\r\n // return false;\r\n return IsSmartImportV2Enabled;\r\n };\r\n\r\n toggleImportMode = (mode) => {\r\n this.importMode = mode;\r\n };\r\n\r\n // relocate currency converter in import option step instead of account selection step\r\n isCurrencyConvertorRelocateEnabled = () => {\r\n const { IsSmartImportCurrencyConversionOptionEnabled } = this.permissions;\r\n return IsSmartImportCurrencyConversionOptionEnabled && this.importMode !== ImportMode.Multi;\r\n };\r\n\r\n // bug fix: when edit expert mode schedule import, if user start import in smart import step\r\n // the schedule import should keep expert mode\r\n IsSmartImportEditExpertImportEnabled = () => {\r\n const { IsSmartImportEditExpertImportEnabled } = this.permissions;\r\n return IsSmartImportEditExpertImportEnabled;\r\n };\r\n\r\n IsGoogleImportVideoAdsEnabled = () => {\r\n const { IsGoogleImportVideoAdsEnabled } = this.permissions;\r\n return IsGoogleImportVideoAdsEnabled;\r\n };\r\n\r\n IsOneClickImportEnabled = () => this.permissions && this.permissions.dynamic && this.permissions.dynamic.ImportOneClick;\r\n\r\n IsImportFromMetaButtonEnabled = () =>\r\n this.permissions && this.permissions.dynamic &&\r\n this.permissions.dynamic.FBImportForGoogleImportSummary &&\r\n this.permissions.dynamic.FacebookImport;\r\n}\r\n","/* eslint-disable no-undef */\r\n\r\nexport const StepConstants = {\r\n SignInStep: {\r\n path: 'signInStep',\r\n stepName: _TL_('Sign in with Google'),\r\n title: _TL_('Sign in with Google'),\r\n },\r\n ChooseAccounts: {\r\n path: 'chooseAccounts',\r\n stepName: _TL_('Choose accounts'),\r\n title: _TL_('Choose accounts'),\r\n },\r\n ChooseAccountsGoogleAccount: {\r\n path: 'chooseAccounts.googleAccount',\r\n stepName: _TL_('Choose accounts'),\r\n title: _TL_('Choose accounts'),\r\n },\r\n ChooseAccountsBingAccountMapping: {\r\n path: 'chooseAccounts.bingAccountMapping',\r\n stepName: _TL_('Choose accounts'),\r\n title: _TL_('Choose accounts'),\r\n },\r\n StartImportSmart: {\r\n path: 'startImport.smart',\r\n stepName: _TL_('Set schedule'),\r\n title: _TL_('You\\'re ready to start your import'),\r\n },\r\n GoogleCampaignStep: {\r\n path: 'googleCampaignStep',\r\n stepName: _TL_('Choose campaigns and ad groups'),\r\n title: _TL_('Which campaigns and ad groups do you want to import?'),\r\n },\r\n ImportSummaryStep: {\r\n path: 'importSummaryStep',\r\n title: _TL_('Import Summary'),\r\n },\r\n ImportOptionStep: {\r\n path: 'importOptionStep',\r\n stepName: _TL_('Choose items and options'),\r\n title: _TL_('Choose which items to import and the options to set for them.'),\r\n },\r\n StartImportAdvanced: {\r\n path: 'startImport.advanced',\r\n stepName: _TL_('Set schedule'),\r\n title: _TL_('Set schedule'),\r\n },\r\n ImportStatusStep: {\r\n path: 'importStatusStep',\r\n title: _TL_('Import Status'),\r\n },\r\n MerchantCenterStoreMappingStep: {\r\n path: 'merchantCenterStoreMappingStep',\r\n stepName: _TL_('Choose Microsoft Merchant Center store'),\r\n title: _TL_('Choose Microsoft Merchant Center stores for shopping campaigns'),\r\n },\r\n SmartCampaignSignInStep: {\r\n path: 'smartCampaignSignInStep',\r\n title: _TL_('Import from Google Ads'),\r\n },\r\n ESCSignInStep: {\r\n path: 'escSignInStep',\r\n title: _TL_('Import your smart campaigns from Google Ads'),\r\n },\r\n};\r\n","/* eslint-disable react-hooks/rules-of-hooks */\r\n/* eslint-disable no-param-reassign */\r\nimport React, { useContext, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { ImportCoreContext, ImportType } from '@bingads-webui-campaign/imports-core';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nimport { StepConstants } from '../../page/step-config';\r\n\r\nexport const withLoginStepPrefetch = (PreExecuteStep) => {\r\n const LoginStepPrefetch = React.memo((props) => {\r\n const importCoreContext = useContext(ImportCoreContext);\r\n\r\n const {\r\n deps,\r\n repository,\r\n toggleImportType,\r\n patchState,\r\n googleAccount: existingGoogleAccount,\r\n logOutButtonClicked = false,\r\n goToNextStep,\r\n } = importCoreContext;\r\n\r\n const {\r\n taskItemId,\r\n config,\r\n i18n,\r\n scope,\r\n } = deps;\r\n\r\n // creation workflow\r\n if (!taskItemId) {\r\n // jump login step after upgrading account mode from smart to expert in smart campaigns import\r\n if (scope.values.didSwitchToExpertFromImport && !existingGoogleAccount) {\r\n // get session Id from cookie\r\n const sessionId = repository.getGoogleImportInfoFromCookie().googleSessionId;\r\n\r\n // show login step if no available session Id\r\n if (!sessionId) {\r\n return ;\r\n }\r\n\r\n // patch state and go to next step if available session Id\r\n patchState({\r\n isLoggedIn: true,\r\n });\r\n\r\n if (goToNextStep) {\r\n goToNextStep(props.nextStepPath);\r\n }\r\n }\r\n\r\n return ;\r\n }\r\n\r\n // edit workflow\r\n const [loading, setLoading] = useState(true); // to notify api is loading.\r\n const [dispatchedOdataCall, setDispatchedOdataCall] = useState(false);\r\n\r\n let initialState = {};\r\n let keepAccountSelectionDueToDifferentEmail = false;\r\n\r\n if (loading &&\r\n !dispatchedOdataCall &&\r\n (!logOutButtonClicked && !existingGoogleAccount)\r\n ) {\r\n setDispatchedOdataCall(true);\r\n repository.getImportTaskItem(deps.taskItemId)\r\n .then((taskItem) => {\r\n // in this case, if user has signed in on import schedule page, update session Id\r\n const currentUserId = _.propertyOf(config.get('CurrentUser'))('Id');\r\n\r\n if (taskItem.ModifiedBy.Id !== currentUserId ||\r\n // For BAE, we need to check if SessionType is null (from campaign ui workflow)\r\n (deps.serverContext.ApplicationName === 'BingAdsEditor' && taskItem.AdWordsImportContext.SessionType === null) ||\r\n // For campaign ui, we need to check if sessionType is CloudImport (from BAE workflow)\r\n (deps.serverContext.ApplicationName !== 'BingAdsEditor' && taskItem.AdWordsImportContext.SessionType === 'CloudImport')) {\r\n const { cookieHelperForEditImport } = deps;\r\n const sessionId = cookieHelperForEditImport.getSessionId(deps.taskItemId);\r\n\r\n cookieHelperForEditImport.deleteCookie();\r\n if (sessionId) {\r\n taskItem.AdWordsImportContext.SessionId = sessionId; // eslint-disable-line\r\n taskItem.AdWordsImportContext.AccountName = null; // eslint-disable-line\r\n keepAccountSelectionDueToDifferentEmail = true;\r\n patchState({\r\n keepAccountSelectionDueToDifferentEmail: true,\r\n });\r\n } else {\r\n repository.logTrace(`Edit task met different userid. currentUserId: ${currentUserId} and taskItem.ModifiedBy.Id:${taskItem.ModifiedBy.Id}`);\r\n repository.logout();\r\n taskItem.AdWordsImportContext.SessionId = null; // eslint-disable-line\r\n }\r\n }\r\n\r\n // currently DefaultImportSettings is a value set by Import MT to have some customized settings\r\n // if DefaultImportSettings is PMaxRecommendation, override the IsSmartImport and treat the import task as an expert import during edit workflow\r\n if (taskItem.DefaultImportSettings === 'PMaxRecommendation') {\r\n taskItem.IsSmartImport = false;\r\n taskItem.DefaultImportSettings = null;\r\n\r\n repository.logTrace({\r\n TaskType: 'PmaxRecommendationImportTask',\r\n TaskId: taskItem.Id,\r\n Event: 'Enter edit workflow and override settings as normal expert task',\r\n });\r\n }\r\n\r\n initialState.initialSettings = taskItem;\r\n initialState.initialSettings.taskItemId = deps.taskItemId;\r\n // the name is from last import\r\n initialState.isNameEdit = true;\r\n initialState.isEditingScheduledImport = true;\r\n if (initialState.initialSettings.ImportUserPreference) {\r\n initialState.initialSettings.ImportUserPreference.UserPreferenceTrackingTemplate =\r\n initialState.initialSettings.ImportUserPreference.AdWordsAccountTrackingTemplate ||\r\n initialState.initialSettings.ImportUserPreference.AdWordsAccountFinalUrlSuffix;\r\n }\r\n\r\n return taskItem;\r\n })\r\n .then((taskItem) => {\r\n const {\r\n AccountName,\r\n SessionId,\r\n } = taskItem.AdWordsImportContext;\r\n\r\n if (SessionId) {\r\n let initialPromise = Promise.resolve([]);\r\n if (!AccountName) {\r\n initialPromise = repository.fetchGoogleLoginEmail(SessionId)\r\n .then((loginAccount) => {\r\n taskItem.AdWordsImportContext.AccountName = loginAccount; // eslint-disable-line\r\n });\r\n }\r\n return initialPromise.then(() => {\r\n repository.setGoogleImportAccountInfoInCookie({\r\n loginAccount: taskItem.AdWordsImportContext.AccountName,\r\n sessionId: SessionId,\r\n });\r\n });\r\n }\r\n return Promise.resolve();\r\n })\r\n .then(() => {\r\n if (initialState && initialState.isEditingScheduledImport\r\n && initialState.initialSettings.AdWordsImportContext.SessionId) {\r\n let { importStep } = scope.values;\r\n if (keepAccountSelectionDueToDifferentEmail) {\r\n importStep = undefined;\r\n }\r\n if (importStep === StepConstants.GoogleCampaignStep.path ||\r\n importStep === StepConstants.ImportOptionStep.path ||\r\n importStep === StepConstants.StartImportAdvanced.path) {\r\n patchState({\r\n otherFieldsExpanded: true,\r\n skipAccountSelectionDueToDirectJump: true,\r\n });\r\n toggleImportType(ImportType.Advanced);\r\n }\r\n\r\n const {\r\n AdWordsImportContext: {\r\n // AccountName,\r\n // AdWordsSessionUserId,\r\n CampaignIds,\r\n GoogleEntitiesBlobName,\r\n // LoginCustomerId,\r\n // SessionId,\r\n },\r\n ImportUserPreference,\r\n IsAutoFrequency,\r\n IsSmartImport,\r\n TimeZoneId,\r\n Cron,\r\n NotificationEmailAddresses,\r\n NotificationType,\r\n Name,\r\n } = initialState.initialSettings;\r\n\r\n let autoConvertCurrencyEnabled = ImportUserPreference &&\r\n ImportUserPreference.EnableAutoCurrencyConversion;\r\n if (_.isUndefined(autoConvertCurrencyEnabled) ||\r\n _.isNull(autoConvertCurrencyEnabled)) {\r\n autoConvertCurrencyEnabled = true;\r\n }\r\n\r\n initialState = _.extend(initialState, {\r\n IsAutoFrequency: !!IsAutoFrequency,\r\n IsSmartImport: !!IsSmartImport,\r\n ImportUserPreference,\r\n TimeZoneId,\r\n Cron,\r\n NotificationEmailAddresses,\r\n NotificationType,\r\n Name,\r\n CampaignIds,\r\n GoogleEntitiesBlobName,\r\n autoConvertCurrencyEnabled,\r\n });\r\n\r\n return importStep;\r\n }\r\n return StepConstants.SignInStep.path;\r\n })\r\n .then((importStep) => {\r\n patchState(initialState);\r\n // Go directly to importStep if passed in.\r\n if (importStep) {\r\n goToNextStep(importStep);\r\n }\r\n setLoading(false);\r\n })\r\n .finally(withUiBlock($('.google-import-root'), i18n.getString('Loading')));\r\n } else if (existingGoogleAccount || logOutButtonClicked) {\r\n return ();\r\n }\r\n\r\n return (\r\n
\r\n {\r\n loading ?
: \r\n }\r\n
\r\n );\r\n });\r\n\r\n LoginStepPrefetch.propTypes = {\r\n nextStepPath: PropTypes.string.isRequired,\r\n };\r\n\r\n return LoginStepPrefetch;\r\n};\r\n","import React from 'react';\r\n\r\nimport {\r\n GoogleLoginStep as GeneralGoogleLoginStep,\r\n renderDescription as generalRenderDescription,\r\n LoginContainer as GeneralLoginContainer,\r\n} from '@bingads-webui-campaign/imports-core';\r\n\r\nimport { StepConstants } from '../../page/step-config';\r\nimport { withLoginStepPrefetch } from './login-step-prefetch';\r\n\r\nexport const GoogleLoginStep = props => (\r\n \r\n);\r\n\r\nexport const renderDescription = (step, i18n, repository) =>\r\n generalRenderDescription(step, i18n, repository, StepConstants.SignInStep.path);\r\n\r\nexport const LoginContainerWithoutPrefetch = props => (\r\n \r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport {\r\n Callout,\r\n CommandButton,\r\n Icon,\r\n FocusZone,\r\n FocusZoneDirection\r\n} from '@fluentui/react';\r\n\r\nimport { Pagination } from '@bingads-webui-react/pagination';\r\nimport { SearchBox } from '@bingads-webui-react/fabric-with-signal';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\n\r\nconst PAGE_SIZE = 5;\r\nconst INITIAL_PAGE_NUMBER = 0;\r\nconst INITIAL_SEARCH_QUERY = '';\r\n\r\nexport class BingAccountDropDownList extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.newI18n = props.context.deps.newI18n;\r\n this.dropDownButtonPlaceHolderText = this.newI18n.getString(_TL_('Select account'));\r\n this.searchBoxPlaceHolderText = this.newI18n.getString(_TL_('Search Microsoft Advertising account'));\r\n this.bingAccountHeaderText = this.newI18n.getString(_TL_('Available accounts:'));\r\n this.loadingText = this.newI18n.getString(_TL_('Loading'));\r\n\r\n const defaultSelectedBingAccount = _.filter(\r\n props.googleToBingAccountMap,\r\n mapItem => mapItem.GoogleAccount.Id === props.googleAccount.CustomerId\r\n )[0].BingAccount;\r\n this.state = {\r\n isOpen: false,\r\n currentPageAccounts: this.props.firstPageBingAccounts,\r\n isSelected: !_.isEmpty(defaultSelectedBingAccount),\r\n selectedAccountName: _.isEmpty(defaultSelectedBingAccount) ?\r\n '' :\r\n defaultSelectedBingAccount.Name,\r\n searchQuery: INITIAL_SEARCH_QUERY,\r\n pageNumber: INITIAL_PAGE_NUMBER,\r\n availableCount: props.bingAccountCount,\r\n blocking: false,\r\n };\r\n this.dropDownRef = React.createRef();\r\n }\r\n\r\n onDropDownClick = () => {\r\n const { isOpen } = this.state;\r\n this.setState({\r\n isOpen: !isOpen,\r\n });\r\n }\r\n\r\n onDropDownKeyDown = (event) => {\r\n if (event.key === 'Enter') {\r\n const { isOpen } = this.state;\r\n this.setState({\r\n isOpen: !isOpen,\r\n });\r\n }\r\n }\r\n\r\n onItemClick = (bingAccount) => {\r\n const { onSelect } = this.props;\r\n this.setState({\r\n isSelected: true,\r\n selectedAccountName: bingAccount.Name,\r\n currentPageAccounts: this.props.firstPageBingAccounts,\r\n isOpen: false,\r\n });\r\n onSelect(bingAccount);\r\n }\r\n\r\n onSearch = (__, searchQuery) => {\r\n this.setState({\r\n searchQuery,\r\n pageNumber: INITIAL_PAGE_NUMBER,\r\n });\r\n this.onFetch(PAGE_SIZE, INITIAL_PAGE_NUMBER, searchQuery.toLowerCase());\r\n }\r\n\r\n onPageNumberChanged = (pageNumber) => {\r\n this.setState({ pageNumber });\r\n const skip = PAGE_SIZE * pageNumber;\r\n this.onFetch(PAGE_SIZE, skip, this.state.searchQuery);\r\n }\r\n\r\n onFetch = (top, skip, searchQuery) => {\r\n this.setUiBlocker(true);\r\n this.props.context.repository.getBingAccounts(top, skip, searchQuery)\r\n .then((currentPageAccountsRaw) => {\r\n const currentPageAccounts = currentPageAccountsRaw.value;\r\n const filterAccountCount = currentPageAccountsRaw['@odata.count'];\r\n this.setState({\r\n currentPageAccounts,\r\n availableCount: filterAccountCount,\r\n });\r\n })\r\n .catch(() => {\r\n // log error\r\n })\r\n .finally(() => this.setUiBlocker(false));\r\n }\r\n\r\n onDropDownDismiss = () => {\r\n this.setState({\r\n isOpen: false,\r\n currentPageAccounts: this.props.firstPageBingAccounts,\r\n });\r\n }\r\n\r\n setUiBlocker = blocking => this.setState({ blocking });\r\n\r\n isBingAccountMapped = (bingAccount) => {\r\n const { googleToBingAccountMap } = this.props;\r\n return _.some(\r\n googleToBingAccountMap,\r\n mapItem => mapItem.BingAccount && mapItem.BingAccount.Id === bingAccount.Id\r\n );\r\n }\r\n\r\n render() {\r\n const {\r\n classes,\r\n } = this.props;\r\n\r\n const {\r\n isOpen, isSelected, selectedAccountName, currentPageAccounts,\r\n } = this.state;\r\n\r\n return (\r\n
\r\n \r\n \r\n {isSelected ? selectedAccountName : this.dropDownButtonPlaceHolderText}\r\n \r\n \r\n \r\n \r\n
\r\n {isOpen &&\r\n \r\n \r\n
\r\n \r\n
\r\n {`${this.bingAccountHeaderText} ${this.state.availableCount}`}\r\n
\r\n
\r\n \r\n {currentPageAccounts.map(bingAccount => (\r\n \r\n ))}\r\n \r\n
\r\n {(this.state.availableCount > PAGE_SIZE) &&\r\n \r\n }\r\n
\r\n \r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nBingAccountDropDownList.propTypes = {\r\n context: PropTypes.shape({\r\n deps: PropTypes.shape({\r\n newI18n: PropTypes.shape({}),\r\n }),\r\n repository: PropTypes.shape({\r\n getBingAccounts: PropTypes.func.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n firstPageBingAccounts: PropTypes.shape({}).isRequired,\r\n googleToBingAccountMap: PropTypes.shape([]).isRequired,\r\n bingAccountCount: PropTypes.number.isRequired,\r\n googleAccount: PropTypes.shape({\r\n CustomerId: PropTypes.number.isRequired,\r\n }).isRequired,\r\n onSelect: PropTypes.func.isRequired,\r\n};\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nimport {\r\n DetailsList,\r\n SelectionMode,\r\n} from '@fluentui/react';\r\n\r\nimport { getBingAccountSelectionStepStyles } from './bing-account-selector-styles';\r\nimport { BingAccountDropDownList } from './bing-account-dropdown-list';\r\nimport { withBingAccountMappingStepPrefetch } from './bing-account-step-prefetch';\r\n\r\nexport class BingAccountSelectorInternal extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.newI18n = props.context.deps.newI18n;\r\n this.patchState = props.context.patchState;\r\n this.columns = this.getBingAccountSelectorColumns(this.newI18n);\r\n this.state = {\r\n googleToBingAccountMap: _.isEmpty(props.googleToBingAccountMap) ?\r\n _.map(\r\n props.context.googleAccount,\r\n // eslint-disable-next-line max-len\r\n account => ({ GoogleAccount: { Id: account.CustomerId, Name: account.AccountName, Currency: account.Currency } })\r\n ) :\r\n props.googleToBingAccountMap,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const { context } = this.props;\r\n const { bingAccountFetcherPerfMarker } = context;\r\n\r\n if (bingAccountFetcherPerfMarker) {\r\n bingAccountFetcherPerfMarker.done();\r\n }\r\n\r\n if (this.props.activity) {\r\n this.props.activity.signal('BingAccountMappingGridLoaded');\r\n }\r\n }\r\n\r\n onSelectMappedBingAccount = (googleAccount, bingAccount) => {\r\n const updatedAccountMap = _.map(\r\n this.state.googleToBingAccountMap,\r\n item => (item.GoogleAccount.Id === googleAccount.CustomerId ?\r\n _.extend(item, {\r\n BingAccount: {\r\n Id: bingAccount.Id,\r\n Name: bingAccount.Name,\r\n Currency: bingAccount.Currency,\r\n },\r\n }) :\r\n item)\r\n );\r\n\r\n this.setState({\r\n googleToBingAccountMap: updatedAccountMap,\r\n }, () => {\r\n this.patchState({\r\n googleToBingAccountMap: this.state.googleToBingAccountMap,\r\n });\r\n });\r\n }\r\n\r\n onRenderItemColumn = (item, index, column) => {\r\n const {\r\n context,\r\n classes,\r\n } = this.props;\r\n\r\n const { firstPageBingAccounts, bingAccountCount } = context;\r\n const { googleToBingAccountMap } = this.state;\r\n\r\n switch (column.key) {\r\n case 'bing-account-selection': return (\r\n \r\n );\r\n // eslint-disable-next-line max-len\r\n default: return ( {item[column.fieldName]} );\r\n }\r\n }\r\n\r\n getBingAccountSelectorColumns = newI18n => ([{\r\n key: 'google-account-name',\r\n name: newI18n.getString(_TL_('Google Ads account name')),\r\n fieldName: 'AccountName',\r\n minWidth: 300,\r\n maxWidth: 600,\r\n isResizable: true,\r\n isMultiline: true,\r\n }, {\r\n key: 'google-account-id',\r\n name: newI18n.getString(_TL_('Google Ads account ID')),\r\n fieldName: 'CustomerId',\r\n minWidth: 180,\r\n maxWidth: 200,\r\n isResizable: false,\r\n }, {\r\n key: 'bing-account-selection',\r\n name: newI18n.getString(_TL_('Microsoft Advertising account name')),\r\n fieldName: 'BingAccountSelection',\r\n minWidth: 300,\r\n maxWidth: 600,\r\n }])\r\n\r\n render() {\r\n const {\r\n context,\r\n classes,\r\n rootClassName,\r\n } = this.props;\r\n const { selectedAccounts } = context;\r\n return (\r\n
\r\n
\r\n {this.newI18n.getString(_TL_('Select the Microsoft Advertising accounts that your Google Ads accounts will be imported to.'))}\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nBingAccountSelectorInternal.defaultProps = {\r\n googleToBingAccountMap: [],\r\n};\r\n\r\nBingAccountSelectorInternal.propTypes = {\r\n context: PropTypes.shape({\r\n deps: PropTypes.shape({\r\n newI18n: PropTypes.shape({}),\r\n }),\r\n patchState: PropTypes.func.isRequired,\r\n googleAccount: PropTypes.shape([]).isRequired,\r\n selectedAccounts: PropTypes.shape().isRequired, // selected google accounts\r\n firstPageBingAccounts: PropTypes.shape().isRequired,\r\n bingAccountCount: PropTypes.number.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n rootClassName: PropTypes.string.isRequired,\r\n activity: PropTypes.shape({\r\n signal: PropTypes.func,\r\n }).isRequired,\r\n googleToBingAccountMap: PropTypes.shape([]),\r\n};\r\n\r\nexport const BingAccountSelector = withBingAccountMappingStepPrefetch(withDefaultStyles(\r\n withActivityContext(BingAccountSelectorInternal),\r\n getBingAccountSelectionStepStyles\r\n));\r\n","import React, { useContext, useState } from 'react';\r\nimport $ from 'jquery';\r\nimport { ImportCoreContext } from '@bingads-webui-campaign/imports-core';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { StepConstants } from '../../../page/step-config';\r\n\r\nexport const withBingAccountMappingStepPrefetch = PreExecuteStep => React.memo((props) => {\r\n const importCoreContext = useContext(ImportCoreContext);\r\n const {\r\n repository,\r\n patchState,\r\n deps,\r\n goToPrevStep,\r\n firstPageBingAccounts: existingfirstPageBingAccounts,\r\n googleToBingAccountMap: existingGoogleToBingAccountMap,\r\n } = importCoreContext;\r\n\r\n const {\r\n perfMarker,\r\n i18n,\r\n } = deps;\r\n\r\n const [loading, setLoading] = useState(true); // to notify api is loading.\r\n const [dispatchedOdataCall, setDispatchedOdataCall] = useState(false);\r\n\r\n if (loading && !dispatchedOdataCall && !existingfirstPageBingAccounts) {\r\n setDispatchedOdataCall(true);\r\n const bingAccountFetcherPerfMarker = perfMarker.createChild('Smart_Import_BingAccountMapping_Step');\r\n bingAccountFetcherPerfMarker.willInit();\r\n repository.getBingAccounts()\r\n .then((firstPageBingAccountsRaw) => {\r\n const firstPageBingAccounts = firstPageBingAccountsRaw.value;\r\n const bingAccountCount = firstPageBingAccountsRaw['@odata.count'];\r\n patchState({\r\n firstPageBingAccounts,\r\n bingAccountFetcherPerfMarker,\r\n bingAccountCount,\r\n });\r\n setLoading(false);\r\n })\r\n .catch(() => {\r\n goToPrevStep(StepConstants.ChooseAccountsGoogleAccount);\r\n })\r\n .finally(withUiBlock($('.google-import-root'), i18n.getString('Loading')));\r\n } else if (existingfirstPageBingAccounts && !dispatchedOdataCall) {\r\n // display firstPageBingAccounts from cache rather than calling API again.\r\n return ();\r\n }\r\n\r\n return (\r\n
\r\n {\r\n loading\r\n ?
\r\n : \r\n }\r\n
\r\n );\r\n});\r\n","import { paginationStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { extend } from 'jquery';\r\n\r\nexport const getBingAccountSelectionStepStyles = (_, { palette = {} }) => ({\r\n stepText: {\r\n marginBottom: '10px',\r\n marginTop: '10px',\r\n },\r\n bingAccountMappingStep: {\r\n height: 'auto',\r\n },\r\n accountDetailList: {\r\n },\r\n gridItem: {\r\n fontSize: '14px',\r\n verticalAlign: 'middle',\r\n },\r\n bingAccountDropdownList: {\r\n padding: '0px',\r\n },\r\n bingAccountDropdownButton: {\r\n padding: '0px',\r\n margin: '0px',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n position: 'relative',\r\n },\r\n bingAccountDropdownPlaceholder: {\r\n padding: '0px 28px 0px 8px',\r\n borderStyle: 'solid',\r\n borderWidth: '1px',\r\n borderColor: 'rgb(96, 94, 92)',\r\n borderRadius: '2px',\r\n cursor: 'pointer',\r\n display: 'block',\r\n height: '32px',\r\n lineHeight: '30px',\r\n positon: 'relative',\r\n overflow: 'hidden',\r\n whiteSpace: 'no-wrap',\r\n textOverflow: 'ellipsis',\r\n },\r\n bingAccountDropdownCaretDown: {\r\n position: 'absolute',\r\n top: '1px',\r\n right: '8px',\r\n height: '32px',\r\n curson: 'pointer',\r\n lineHeight: '30px',\r\n },\r\n bingAccountCallout: {\r\n padding: '5px',\r\n },\r\n bingAccountSelectionBox: extend(\r\n {},\r\n paginationStyle({ palette }),\r\n {\r\n borderStyle: 'solid',\r\n borderWidth: '1px',\r\n padding: '5px',\r\n }\r\n ),\r\n bingAccountSearchBox: {\r\n\r\n },\r\n bingAccountHeader: {\r\n border: 'solid 1px transparent',\r\n fontWeight: 'bold',\r\n padding: '0px 6px',\r\n lineHeight: '36px',\r\n width: '100%',\r\n },\r\n bingAccountItem: {\r\n width: '100%',\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { StepContainer, ImportCoreContext } from '@bingads-webui-campaign/imports-core';\r\nimport { Activity } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nimport { getActionBarItems } from './action-bar-config';\r\nimport { BingAccountSelector } from './bing-account-selector';\r\n\r\nclass BingAccountStepInternal extends React.PureComponent {\r\n render() {\r\n const {\r\n contextValues,\r\n } = this.props;\r\n\r\n const { deps } = contextValues;\r\n\r\n const { getUniqueImportGUID } = deps;\r\n\r\n const uniqueImportId = (getUniqueImportGUID && getUniqueImportGUID()) || '';\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nBingAccountStepInternal.propTypes = {\r\n contextValues: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nexport const BingAccountStep = React.memo(props => (\r\n \r\n {\r\n contextValues => (\r\n \r\n )\r\n }\r\n \r\n));\r\n","import { StepConstants } from '../../../page/step-config';\r\n\r\nexport const getActionBarItems = () => {\r\n const config = [{\r\n type: 'button-back',\r\n prevStepName: StepConstants.ChooseAccountsGoogleAccount.path,\r\n }, {\r\n type: 'button-next',\r\n nextStepName: StepConstants.StartImportSmart.path,\r\n }, {\r\n type: 'button-cancel',\r\n extraLeftPadding: true,\r\n }];\r\n\r\n return config;\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport {\r\n GoogleAccountStep as GeneralGoogleAccountStep,\r\n ImportMode,\r\n withSmartGoogleImportAccountSelectionStepPrefetch,\r\n} from '@bingads-webui-campaign/imports-core';\r\n\r\nimport { StepConstants } from '../../page/step-config';\r\n\r\nexport { BingAccountStep } from './bing-account-mapping-step';\r\n\r\nconst getNextStepName = ({\r\n shouldGoToMerchantCenterStoreMappingStep,\r\n getImportMode,\r\n}) => {\r\n let nextStepName;\r\n if (getImportMode() === ImportMode.Multi) {\r\n nextStepName = StepConstants.ChooseAccountsBingAccountMapping.path;\r\n } else if (shouldGoToMerchantCenterStoreMappingStep()) {\r\n nextStepName = StepConstants.MerchantCenterStoreMappingStep.path;\r\n } else {\r\n nextStepName = StepConstants.StartImportSmart.path;\r\n }\r\n return nextStepName;\r\n};\r\n\r\nconst getPrevStepName = ({ isEscImport }) => (isEscImport ? StepConstants.ESCSignInStep.path : StepConstants.SignInStep.path);\r\n\r\nexport const GoogleAccountStep = props => (\r\n StepConstants.ImportSummaryStep.path : getNextStepName}\r\n stepPrefetchHoc={withSmartGoogleImportAccountSelectionStepPrefetch}\r\n prevStepNameIfPrefetchFail={StepConstants.SignInStep.path}\r\n nextStepNameIfPrefetchOnlyOneAccount={StepConstants.StartImportSmart.path}\r\n rootContainerClassName=\"google-import-root\"\r\n showCancelButton={!props.isEscImport}\r\n {...props}\r\n />\r\n);\r\n\r\nGoogleAccountStep.propTypes = {\r\n isEscImport: PropTypes.bool.isRequired,\r\n};\r\n","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\n\r\nimport {\r\n StartImportSmartStep as GeneralStartImportStep,\r\n getDefaultActionBarItemsForStartImportStep,\r\n getSmartImportStepPrefetchHOC,\r\n} from '@bingads-webui-campaign/imports-core';\r\n\r\nimport { StepConstants } from '../../page/step-config';\r\n\r\nconst getAdvancedCustomizingStepName = (hasAccountsWithNoCampaigns) => {\r\n if (hasAccountsWithNoCampaigns) {\r\n return StepConstants.ImportOptionStep.path;\r\n }\r\n return StepConstants.GoogleCampaignStep.path;\r\n};\r\n\r\nconst getPrevStepName = ({ isMerchantCenterStoreMappingStepEnabled }) => {\r\n if (isMerchantCenterStoreMappingStepEnabled) {\r\n return StepConstants.MerchantCenterStoreMappingStep.path;\r\n }\r\n return StepConstants.ChooseAccountsGoogleAccount.path;\r\n};\r\n\r\nconst getNextStepName = ({ isRunNowImport }) => {\r\n if (isRunNowImport) {\r\n return StepConstants.ImportStatusStep.path;\r\n }\r\n return StepConstants.ImportSummaryStep.path;\r\n};\r\n\r\nconst formatTaskData = (contextValues, taskData, activity = null) => {\r\n const {\r\n patchState,\r\n selectedAccounts,\r\n initialSettings,\r\n permissionFactory,\r\n isNoCustomSettingOnSmartStep,\r\n defaultImportOptions,\r\n SmartOptionSettingsKeys,\r\n } = contextValues;\r\n\r\n let { importOptions: importUserPreferences } = contextValues;\r\n\r\n // In edit scheduled import scenario, if the scheduled import is expert import\r\n // We need to keep it as expert import\r\n let IsSmartImport = true;\r\n if (permissionFactory && permissionFactory.IsSmartImportEditExpertImportEnabled() &&\r\n initialSettings && !_.isUndefined(initialSettings.IsSmartImport)) {\r\n // in edit scheduled import, only keep import mode when selected account is not changed\r\n if (initialSettings && initialSettings.AdWordsImportContext &&\r\n initialSettings.AdWordsImportContext.CustomerId === selectedAccounts[0].CustomerId) {\r\n ({ IsSmartImport } = initialSettings);\r\n // is IsSmartImport from initialSettings is null, it means it's legacy import\r\n if (_.isNull(IsSmartImport)) {\r\n IsSmartImport = false;\r\n }\r\n }\r\n }\r\n\r\n if (permissionFactory && permissionFactory.IsImportSmartScheduleStepImprovementPhaseTwoEnabled() && IsSmartImport && isNoCustomSettingOnSmartStep === false) {\r\n IsSmartImport = false;\r\n\r\n const importOptionOverride = {};\r\n _.each(_.flatten(_.values(SmartOptionSettingsKeys)), (key) => {\r\n importOptionOverride[key] = _.clone(importUserPreferences[key]);\r\n });\r\n if (activity) {\r\n activity.signal(`IsImportSmartScheduleStepImprovementPhaseTwoEnabled: optionSettings=${JSON.stringify(importOptionOverride)}`);\r\n }\r\n importUserPreferences = { ...defaultImportOptions, ...importOptionOverride };\r\n }\r\n if (permissionFactory && permissionFactory.IsImportSmartScheduleStepImprovementPhaseTwoEnabled()) {\r\n if (activity) {\r\n activity.signal(`IsImportSmartScheduleStepImprovementPhaseTwoEnabled: IsSmartImport=${IsSmartImport} and isNoCustomSettingOnSmartStep=${isNoCustomSettingOnSmartStep}`);\r\n }\r\n }\r\n\r\n patchState({\r\n IsSmartImport,\r\n IsExpertModeImport: !IsSmartImport,\r\n });\r\n\r\n let scheduleStepState = {\r\n googleCustomerId: selectedAccounts[0].CustomerId,\r\n campaignIds: [],\r\n loginCustomerId: selectedAccounts[0].LoginCustomerId,\r\n };\r\n\r\n // if it's edit expert schedule import scenario, should patch campaign\r\n // selection data and import option data into task data\r\n if (IsSmartImport === false) {\r\n const {\r\n googleEntitiesSelectionData,\r\n CampaignIds,\r\n } = contextValues;\r\n\r\n scheduleStepState = _.extend(\r\n {},\r\n scheduleStepState,\r\n { campaignIds: CampaignIds, googleEntitiesSelectionData }\r\n );\r\n\r\n importUserPreferences = _.omit(importUserPreferences, 'UserPreferenceTrackingTemplate', 'TrackingTemplateValue', 'FinalUrlSuffixValue');\r\n\r\n taskData.importOptions = _.extend(\r\n {},\r\n taskData.importOptions,\r\n { importUserPreferences, IsSmartImport }\r\n );\r\n taskData.importOptionsRunnow = _.extend(\r\n {},\r\n taskData.importOptionsRunnow,\r\n { importUserPreferences, IsSmartImport }\r\n );\r\n }\r\n\r\n return {\r\n ...taskData,\r\n scheduleStepState,\r\n };\r\n};\r\n\r\nconst rootContainerClassName = 'google-import-root';\r\n\r\nconst withSmartImportStepPrefetch = getSmartImportStepPrefetchHOC({\r\n rootContainerClassName,\r\n merchantCenterStoreMappingStepPath: StepConstants.MerchantCenterStoreMappingStep.path,\r\n prevStepNameIfPrefetchFail: StepConstants.ChooseAccountsGoogleAccount.path,\r\n loginStepName: StepConstants.SignInStep.path,\r\n});\r\n\r\nexport const StartImportSmartStep = props => (\r\n \r\n);\r\n\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { GoogleCampaignAndAdGroupStep } from '@bingads-webui-campaign/google-import-page';\r\nimport { GoogleImportRepository } from '@bingads-webui-campaign/import-shared-repositories';\r\nimport { withActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getCampaignSelectionStepStyles } from './campaign-selection-styles';\r\n\r\nexport class CampaignSelectorInternal extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.repository = props.context.repository;\r\n this.deps = props.context.deps;\r\n this.selectionData = _.size(props.context.googleEntitiesSelectionData) ?\r\n props.context.googleEntitiesSelectionData : {};\r\n\r\n this.stateGetter = props.stateGetter;\r\n this.triggerError = props.triggerError;\r\n this.triggerEdit = props.triggerEdit;\r\n }\r\n\r\n componentDidMount() {\r\n const isAllCampaignsSelected = _.isEmpty(this.selectionData)\r\n || _.every(this.selectionData, _.isEmpty);\r\n\r\n if (isAllCampaignsSelected) {\r\n this.importAllCampaignsSelected();\r\n } else {\r\n this.importSpecificCampaignSelectedLog();\r\n }\r\n }\r\n\r\n importSpecificCampaignSelectedLog = () => {\r\n if (this.props.activity) {\r\n this.props.activity.signal('ImportSpecificCampaignSelected');\r\n }\r\n }\r\n\r\n importAllCampaignsSelected = () => {\r\n if (this.props.activity) {\r\n this.props.activity.signal('ImportAllCampaignsSelected');\r\n }\r\n }\r\n\r\n render() {\r\n const { context, classes } = this.props;\r\n const { googleCampaigns, selectedAccounts } = context;\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nCampaignSelectorInternal.propTypes = {\r\n context: PropTypes.shape({\r\n deps: PropTypes.shape({\r\n i18n: PropTypes.shape({}),\r\n newI18n: PropTypes.shape({}),\r\n }).isRequired,\r\n repository: PropTypes.instanceOf(GoogleImportRepository).isRequired,\r\n patchState: PropTypes.func.isRequired,\r\n googleEntitiesSelectionData: PropTypes.shape().isRequired,\r\n }).isRequired,\r\n stateGetter: PropTypes.shape({\r\n setSelectedDataGetter: PropTypes.func.isRequired,\r\n setImportAllGetter: PropTypes.func.isRequired,\r\n }).isRequired,\r\n triggerError: PropTypes.func.isRequired,\r\n triggerEdit: PropTypes.func.isRequired,\r\n classes: PropTypes.shape().isRequired,\r\n activity: PropTypes.shape({\r\n signal: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nexport const CampaignSelector = withDefaultStyles(\r\n withActivityContext(CampaignSelectorInternal),\r\n getCampaignSelectionStepStyles\r\n);\r\n","import { paginationStyle, statusStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { extend } from 'jquery';\r\n\r\nexport const getCampaignSelectionStepStyles = (_, { palette = {} }, iconFontFamily = 'MsAds MDL2 Assets') => ({\r\n CampaignAndAdGroupSelector: extend(\r\n {},\r\n paginationStyle({ palette }),\r\n statusStyle({ palette }),\r\n {\r\n maxWidth: '900px',\r\n\r\n '& #SelectCampaignDesc': {\r\n display: 'none',\r\n },\r\n\r\n '& .radio>label': {\r\n display: 'inline-block',\r\n },\r\n\r\n '& .ba-search-box': {\r\n '& .search-box__input-group': {\r\n position: 'relative',\r\n\r\n '& .search-box__input': {\r\n height: '48px',\r\n paddingLeft: '40px',\r\n },\r\n\r\n '& .search-box__icon': {\r\n top: '12px',\r\n color: palette.themePrimary,\r\n left: '12px',\r\n width: '16px',\r\n height: '16px',\r\n position: 'absolute',\r\n fontSize: '16px',\r\n fontFamily: iconFontFamily,\r\n margin: 0,\r\n cursor: 'pointer',\r\n border: 'none',\r\n minWidth: 0,\r\n padding: 0,\r\n background: 'none',\r\n },\r\n\r\n '& .search-box__icon:before': {\r\n content: '\"\\\\E721\"',\r\n },\r\n },\r\n },\r\n\r\n '& .campaign-and-ad-group-selector': {\r\n paddingTop: 4,\r\n width: '900px',\r\n\r\n '& .full-treeview-table': {\r\n borderBottomStyle: 'groove',\r\n borderBottomWidth: '2px',\r\n borderLeftStyle: 'groove',\r\n borderLeftWidth: '2px',\r\n borderRightStyle: 'groove',\r\n borderRightWidth: '2px',\r\n\r\n '& .table-bordered': {\r\n marginBottom: 0,\r\n border: 0,\r\n\r\n '& .adgroup-level-header': {\r\n '& th': {\r\n borderLeft: 0,\r\n borderRight: 0,\r\n borderBottom: 0,\r\n borderTop: 0,\r\n paddingBottom: 0,\r\n },\r\n\r\n '& .column-header-select-all': {\r\n width: 69,\r\n },\r\n\r\n '& .column-header-name-sortable': {\r\n cursor: 'pointer',\r\n width: 382,\r\n lineHeight: '33px',\r\n fontWeight: 'bold',\r\n },\r\n\r\n '& .column-header-type-sortable': {\r\n cursor: 'pointer',\r\n width: 180,\r\n lineHeight: '33px',\r\n fontWeight: 'bold',\r\n },\r\n\r\n '& .column-header-selection-status': {\r\n lineHeight: '33px',\r\n fontWeight: 'bold',\r\n },\r\n },\r\n },\r\n\r\n '& .tree-view-container': {\r\n height: '300px',\r\n\r\n '& .ReactVirtualized__Grid': {\r\n paddingLeft: 5,\r\n\r\n '& .ReactVirtualized__Grid__innerScrollContainer': {\r\n '& .glyph-caret-right, & .glyph-caret-down': {\r\n fontFamily: iconFontFamily,\r\n cursor: 'pointer',\r\n fontSize: 16,\r\n paddingRight: 10,\r\n paddingLeft: 2,\r\n verticalAlign: 'middle',\r\n },\r\n\r\n '& .glyph-caret-right:before': {\r\n content: '\"\\\\E970\"',\r\n },\r\n\r\n '& .glyph-caret-down:before': {\r\n content: '\"\\\\E96E\"',\r\n },\r\n\r\n '& .tree-node': {\r\n '& .leaf-node': {\r\n paddingLeft: 30,\r\n },\r\n\r\n '& .checkbox-inline span': {\r\n verticalAlign: 'middle',\r\n },\r\n\r\n '& .checkbox-inline:focus-within': {\r\n outline: 'none',\r\n },\r\n\r\n '& .checkbox-inline>input[type=\"checkbox\"]:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n outlineOffset: 1,\r\n },\r\n\r\n '& .statusEnabled_icon, & .statusPaused_icon': {\r\n paddingRight: 5,\r\n },\r\n\r\n '& .node-name': {\r\n display: 'inline-block',\r\n width: 380,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n '& .node-type': {\r\n display: 'inline-block',\r\n width: 180,\r\n },\r\n\r\n '& .node-selection': {\r\n display: 'inline-block',\r\n width: 200,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .error': {\r\n color: '#d13438',\r\n fontSize: '14px',\r\n },\r\n }\r\n ),\r\n});\r\n","/* eslint-disable max-len */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport { getShowNoActiveCampaignCouponAlert } from '@bingads-webui-campaign/import-components';\r\n\r\nimport { StepContainer, ImportCoreContext, ImportType } from '@bingads-webui-campaign/imports-core';\r\nimport { Activity, withActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { ByPassConfirmationModal } from '@bingads-webui-react/feature-adoption-coupon';\r\n\r\nimport { getActionBarItems } from './action-bar-config';\r\nimport { CampaignSelector } from './campaign-selector';\r\nimport { StepConstants } from '../../page/step-config';\r\n\r\nclass GoogleCampaignStepInternal extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isEdited: false,\r\n hasError: false,\r\n showNoActiveCampaignsFacModal: false,\r\n };\r\n\r\n this.stateGetter = {\r\n setSelectedDataGetter: (getter) => {\r\n this.selectedDataGetter = getter;\r\n },\r\n setImportAllGetter: (getter) => {\r\n this.importAllGetter = getter;\r\n },\r\n getSelectedData: () => this.selectedDataGetter(),\r\n getImportAll: () => this.importAllGetter(),\r\n };\r\n this.triggerError = (hasError) => { this.state.hasError = !!hasError; };\r\n this.triggerEdit = () => {\r\n this.state.isEdited = true;\r\n this.updateFacData();\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const { campaignSelectionPerfMarker } = this.props.contextValues;\r\n\r\n if (campaignSelectionPerfMarker) {\r\n campaignSelectionPerfMarker.done();\r\n }\r\n\r\n if (this.props.activity) {\r\n this.props.activity.signal('CampaignSelectionPageLoaded');\r\n }\r\n }\r\n\r\n getStateData() {\r\n const stateData = {};\r\n\r\n if (this.stateGetter.getImportAll()) {\r\n stateData.selectionData = {};\r\n stateData.areAnyPausedCampaignsSelected = false;\r\n } else {\r\n stateData.selectionData = this.stateGetter.getSelectedData();\r\n stateData.areAnyPausedCampaignsSelected = true;\r\n }\r\n return stateData;\r\n }\r\n\r\n updateFacData() {\r\n const {\r\n contextValues: {\r\n googleCampaigns,\r\n deps,\r\n },\r\n facNoActiveCampaigns: facNoActiveCampaignsFromProps,\r\n } = this.props;\r\n\r\n // use setTimeout so stateData is updated.\r\n setTimeout(() => {\r\n const stateData = this.getStateData();\r\n\r\n const facNoActiveCampaigns = !this.stateGetter.getImportAll()\r\n && getShowNoActiveCampaignCouponAlert(\r\n deps.coupon,\r\n googleCampaigns,\r\n stateData.selectionData\r\n );\r\n\r\n if (deps.setNoActiveCampaigns && facNoActiveCampaignsFromProps !== facNoActiveCampaigns) {\r\n deps.setNoActiveCampaigns(facNoActiveCampaigns);\r\n }\r\n }, 0);\r\n }\r\n\r\n validateAndSaveData(shouldSwitchMode = false) {\r\n // if user clicks next button, will run this check\r\n // if user clicks back button, will not check\r\n if (!shouldSwitchMode && this.state.hasError) {\r\n return new Promise(resolve => resolve(false));\r\n }\r\n\r\n const {\r\n contextValues,\r\n } = this.props;\r\n const {\r\n patchState,\r\n deps,\r\n isEditingScheduledImport,\r\n } = contextValues;\r\n\r\n const { perfMarker } = deps;\r\n\r\n const stateData = this.getStateData();\r\n\r\n // will save data when user clicks next button or back button\r\n // need to discuss later about if we need to save user's selection when go back\r\n patchState({\r\n campaignIds: _.union(\r\n stateData.selectionData.selectedCampaignIds,\r\n stateData.selectionData.selectedWithActiveOnly,\r\n _.map(_.keys(stateData.selectionData.selectedAdGroupMap), id => parseInt(id, 10))\r\n ),\r\n googleEntitiesSelectionData: stateData.selectionData,\r\n includePausedCampaigns: stateData.areAnyPausedCampaignsSelected\r\n && !isEditingScheduledImport,\r\n });\r\n\r\n if (shouldSwitchMode) {\r\n const smartImportStartPerfMarker = perfMarker.createChild('Smart_Import_StartImportSmart_Step');\r\n smartImportStartPerfMarker.willInit();\r\n\r\n // switch to smart import mode if we go back from google campaign step\r\n this.props.contextValues.toggleImportType(ImportType.Smart);\r\n\r\n return new Promise(resolve => resolve(true));\r\n }\r\n\r\n const finishStep = () => {\r\n const expertImportOptionsPerfMarker = perfMarker.createChild('Smart_Import_Expert_Import_Options_Step');\r\n expertImportOptionsPerfMarker.willInit();\r\n\r\n patchState({\r\n expertImportOptionsPerfMarker,\r\n });\r\n\r\n return new Promise(resolve => resolve(true));\r\n };\r\n\r\n if (this.props.facNoActiveCampaigns) {\r\n return new Promise((resolve) => {\r\n this.setState({\r\n showNoActiveCampaignsFacModal: true,\r\n onNoActiveCampaignFacModalConfirm: () => {\r\n this.dismissFacBypassModal();\r\n resolve(finishStep());\r\n },\r\n onNoActiveCampaignFacModalDismiss: () => {\r\n this.dismissFacBypassModal();\r\n resolve(false);\r\n },\r\n });\r\n });\r\n }\r\n\r\n return finishStep();\r\n }\r\n\r\n dismissFacBypassModal() {\r\n this.setState({\r\n showNoActiveCampaignsFacModal: false,\r\n onNoActiveCampaignFacModalConfirm: undefined,\r\n onNoActiveCampaignFacModalDismiss: undefined,\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {\r\n contextValues => (\r\n this.validateAndSaveData(true), () => this.validateAndSaveData(false))}\r\n >\r\n \r\n {this.state.showNoActiveCampaignsFacModal && (\r\n \r\n )}\r\n \r\n )\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nGoogleCampaignStepInternal.propTypes = {\r\n contextValues: PropTypes.shape({\r\n toggleImportType: PropTypes.func.isRequired,\r\n campaignSelectionPerfMarker: PropTypes.shape({}).isRequired,\r\n }).isRequired,\r\n activity: PropTypes.shape({\r\n signal: PropTypes.func,\r\n }).isRequired,\r\n facNoActiveCampaigns: PropTypes.bool,\r\n};\r\n\r\nGoogleCampaignStepInternal.defaultProps = {\r\n facNoActiveCampaigns: false,\r\n};\r\n\r\nconst GoogleCampaignStepWithActivity = withActivityContext(GoogleCampaignStepInternal);\r\n\r\nexport const GoogleCampaignStep = React.memo(props => (\r\n\r\n \r\n {\r\n (contextValues) => {\r\n const { deps } = contextValues;\r\n const { getUniqueImportGUID } = deps;\r\n const uniqueImportId = (getUniqueImportGUID && getUniqueImportGUID()) || '';\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n \r\n));\r\n","import { StepConstants } from '../../page/step-config';\r\n\r\nexport const getActionBarItems = (shouldGoToPreviousStep, shouldGoToNextStep) => {\r\n const config = [{\r\n type: 'button-back',\r\n validateFunction: shouldGoToPreviousStep,\r\n prevStepName: StepConstants.StartImportSmart.path,\r\n }, {\r\n type: 'button-next',\r\n validateFunction: shouldGoToNextStep,\r\n nextStepName: StepConstants.ImportOptionStep.path,\r\n }, {\r\n type: 'button-cancel',\r\n extraLeftPadding: true,\r\n }];\r\n\r\n return config;\r\n};\r\n","import { StepConstants } from '../../page/step-config';\r\n\r\nexport const getActionBarItems = (\r\n shouldGoToNextStep,\r\n shouldGoToPreviousStep,\r\n hasAccountsWithNoCampaigns,\r\n nextButtonEnabled\r\n) => {\r\n const config = [{\r\n type: 'button-back',\r\n validateFunction: shouldGoToPreviousStep,\r\n prevStepName: hasAccountsWithNoCampaigns ?\r\n StepConstants.StartImportSmart.path :\r\n StepConstants.GoogleCampaignStep.path,\r\n }, {\r\n type: 'button-next',\r\n validateFunction: shouldGoToNextStep,\r\n disabled: !nextButtonEnabled,\r\n nextStepName: StepConstants.StartImportAdvanced.path,\r\n }, {\r\n type: 'button-cancel',\r\n extraLeftPadding: true,\r\n }];\r\n\r\n return config;\r\n};\r\n","import React from 'react';\r\nimport {\r\n ImportOptionsStep,\r\n withSmartGoogleImportAccountSelectionStepPrefetch,\r\n getSmartImportStepPrefetchHOC,\r\n} from '@bingads-webui-campaign/imports-core';\r\nimport { getActionBarItems } from './action-bar-config';\r\nimport { StepConstants } from '../../page/step-config';\r\n\r\nconst rootContainerClassName = 'google-import-root';\r\n\r\nconst withSmartImportStepPrefetch = getSmartImportStepPrefetchHOC({\r\n rootContainerClassName,\r\n merchantCenterStoreMappingStepPath: StepConstants.MerchantCenterStoreMappingStep.path,\r\n prevStepNameIfPrefetchFail: StepConstants.ChooseAccountsGoogleAccount.path,\r\n loginStepName: StepConstants.SignInStep.path,\r\n});\r\n\r\nconst GoogleImportOptionsStepWithoutHOCs = props => (\r\n \r\n);\r\n\r\nexport const GoogleImportOptionsStep =\r\n // eslint-disable-next-line\r\n withSmartGoogleImportAccountSelectionStepPrefetch(withSmartImportStepPrefetch(GoogleImportOptionsStepWithoutHOCs));\r\n","import React from 'react';\r\n\r\nimport {\r\n ImportStatusStep as GeneralImportStatusStep,\r\n} from '@bingads-webui-campaign/imports-core';\r\n\r\nimport { StepConstants } from '../../page/step-config';\r\n\r\nexport const ImportStatusStep = props => (\r\n \r\n);\r\n","import { StepConstants } from '../../page/step-config';\r\n\r\nexport const getActionBarItems = (\r\n i18n,\r\n startImporting,\r\n isReadOnly,\r\n scheduleOnly\r\n) => {\r\n const config = [{\r\n type: 'button-back',\r\n prevStepName: StepConstants.ImportOptionStep.path,\r\n }, {\r\n type: 'button',\r\n primary: true,\r\n className: 'start-import',\r\n text: scheduleOnly ? i18n.getString(_TL_('Set schedule')) : i18n.getString(_TL_('Start import')),\r\n onClick: startImporting,\r\n disabled: isReadOnly,\r\n }, {\r\n type: 'button-cancel',\r\n extraLeftPadding: true,\r\n }];\r\n\r\n return config;\r\n};\r\n","import React from 'react';\r\nimport {\r\n StartImportAdvancedStep as GeneralStartImportAdvancedStep,\r\n createImportAndGoNextWhenReady\r\n} from '@bingads-webui-campaign/imports-core';\r\nimport { getActionBarItems } from './action-bar-config';\r\nimport { StepConstants } from '../../page/step-config';\r\n\r\nconst getNextStepName = ({ isRunNowImport }) => (isRunNowImport\r\n ? StepConstants.ImportStatusStep.path\r\n : StepConstants.ImportSummaryStep.path);\r\n\r\nconst formatTaskData = (contextValues, taskData) => {\r\n const {\r\n selectedAccounts,\r\n googleEntitiesSelectionData,\r\n campaignIds,\r\n } = contextValues;\r\n const scheduleStepState = {\r\n googleCustomerId: selectedAccounts[0].CustomerId,\r\n campaignIds,\r\n loginCustomerId: selectedAccounts[0].LoginCustomerId,\r\n googleEntitiesSelectionData,\r\n };\r\n return {\r\n ...taskData,\r\n scheduleStepState,\r\n };\r\n};\r\n\r\nexport const StartImportAdvancedStep = props => (\r\n \r\n);\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport PropTypes from 'prop-types';\r\nimport { StepContainer, ImportCoreContext } from '@bingads-webui-campaign/imports-core';\r\nimport { Activity, withActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { Alert } from '@bingads-webui-react/alert';\r\n\r\nimport { getActionBarItems } from './action-bar-config';\r\nimport { StepConstants } from '../../page/step-config';\r\n\r\nconst GMCToMMCMappingGridWithSignIn = React.lazy(() => import(/* webpackMode: \"eager\" */'@bingads-webui-campaign-react/gmc-to-mmc-mapping-grid')\r\n .then(module => ({\r\n default: module.GMCToMMCMappingGridWithSignIn,\r\n })));\r\n\r\nclass GoogleMerchantCenterStoreMappingStepInternal extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n const {\r\n context,\r\n } = props;\r\n\r\n const {\r\n mappingGridRows,\r\n infoForMMCGrid,\r\n GMCEmail,\r\n hasDraftStore,\r\n isGetMappingsError,\r\n scenario,\r\n loginErrorText,\r\n clientId,\r\n } = context;\r\n\r\n this.state = {\r\n mappingGridRows,\r\n infoForMMCGrid,\r\n GMCEmail,\r\n hasDraftStore,\r\n isGetMappingsError,\r\n scenario,\r\n loginErrorText,\r\n clientId,\r\n };\r\n }\r\n\r\n onMappingGridRowsUpdate = (mappingGridRows) => {\r\n this.setState({\r\n mappingGridRows,\r\n });\r\n };\r\n\r\n onGMCEmailAddressUpdate = (GMCEmail) => {\r\n this.setState({\r\n GMCEmail,\r\n });\r\n };\r\n\r\n onHasDraftStoreUpdate = (hasDraftStore) => {\r\n this.setState({\r\n hasDraftStore,\r\n });\r\n };\r\n\r\n onIsGetMappingsErrorUpdate = (isGetMappingsError) => {\r\n this.setState({\r\n isGetMappingsError,\r\n });\r\n };\r\n\r\n onInfoForMMCGridUpdate = (infoForMMCGrid) => {\r\n this.setState({\r\n infoForMMCGrid,\r\n });\r\n };\r\n\r\n onScenarioUpdate = (scenario) => {\r\n this.setState({\r\n scenario,\r\n });\r\n };\r\n\r\n onLoginErrorTextUpdate = (loginErrorText) => {\r\n this.setState({\r\n loginErrorText,\r\n });\r\n };\r\n\r\n onClientIdUpdate = (clientId) => {\r\n this.setState({\r\n clientId,\r\n });\r\n };\r\n\r\n generateMerchantIds = () => {\r\n const {\r\n context,\r\n } = this.props;\r\n\r\n const {\r\n accountToCampaignsOptionsMapping = {},\r\n selectedAccounts = [],\r\n } = context;\r\n\r\n const customerId = selectedAccounts[0].CustomerId;\r\n\r\n const { campaignsWithMerchantId } = accountToCampaignsOptionsMapping[customerId];\r\n\r\n const merchantIds = [];\r\n\r\n _.each(campaignsWithMerchantId, campaign => merchantIds.push(campaign.MerchantId));\r\n\r\n return merchantIds;\r\n };\r\n\r\n saveMappingGridConfig = () => {\r\n const {\r\n context,\r\n } = this.props;\r\n\r\n const {\r\n patchState,\r\n } = context;\r\n\r\n const skipSetMappings = this.state.isGetMappingsError\r\n || _.isEmpty(this.state.mappingGridRows);\r\n\r\n patchState({\r\n mappingGridRows: this.state.mappingGridRows,\r\n GMCEmail: this.state.GMCEmail,\r\n hasDraftStore: this.state.hasDraftStore,\r\n infoForMMCGrid: this.state.infoForMMCGrid,\r\n isGetMappingsError: this.state.isGetMappingsError,\r\n scenario: this.state.scenario,\r\n loginErrorText: this.state.loginErrorText,\r\n skipSetMappings,\r\n clientId: this.state.clientId,\r\n });\r\n\r\n // if get mappings fail with an error, we will still proceed\r\n // but skip the set mappings call.\r\n return new Promise(resolve => resolve(true));\r\n };\r\n\r\n render() {\r\n const {\r\n context,\r\n } = this.props;\r\n\r\n const {\r\n deps,\r\n merchantCenterMappingStepPerfMarker,\r\n repository,\r\n mappingGridRows,\r\n GMCEmail,\r\n hasDraftStore,\r\n infoForMMCGrid,\r\n isGetMappingsError,\r\n scenario,\r\n loginErrorText,\r\n clientId,\r\n permissionFactory,\r\n isOneClickTypeSelected,\r\n googleAccount,\r\n } = context;\r\n\r\n const {\r\n newI18n,\r\n google,\r\n merchantCenterMappingLearnMoreLinkCallback: learnMoreLinkCallback,\r\n onDraftStoreLinkClick,\r\n disableGMCSignIn,\r\n onGMCSignInRedirectLinkClick,\r\n } = deps;\r\n\r\n // logTrace not used currently.\r\n // These methods logs into clienterr & clienttrace\r\n const logger = {\r\n logError: repository.logError,\r\n logTrace: repository.logTrace,\r\n };\r\n\r\n const merchantIds = this.generateMerchantIds();\r\n const isImportOneClickMultiAdAccountEnabled = repository.permissions && repository.permissions.dynamic && repository.permissions.dynamic.ImportOneClickMultiAdAccount;\r\n // when with one click mode, there is only one google account but has campaigns with merchant id, we will show the alert.\r\n const GmcHeaderMoreInfos = permissionFactory.IsOneClickImportEnabled() && isOneClickTypeSelected && ((googleAccount && googleAccount.length === 1) || isImportOneClickMultiAdAccountEnabled) ? (\r\n
\r\n \r\n {`${newI18n.getString(_TL_(\"Since you have multiple shopping campaigns under your Google Merchant Center account, we can't continue with Quick import. You'll need to set up your store first.\"))} `}\r\n \r\n }\r\n level=\"Warning\"\r\n icon={(
)}\r\n dismissible={false}\r\n />\r\n
\r\n ) : undefined;\r\n\r\n if (this.props.activity && GmcHeaderMoreInfos) {\r\n this.props.activity.signal('OneClick.custom.bsc');\r\n }\r\n\r\n return (\r\n \r\n
\r\n {/* The BSC Import grid does not support multi-account import at this time.\r\n More changes are needed to make it work. Details are in the\r\n BSC Import UI design doc (link in README of grid package),\r\n and the TODOs within the grid package. */}\r\n )}>\r\n \r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nGoogleMerchantCenterStoreMappingStepInternal.propTypes = {\r\n context: PropTypes.shape({}).isRequired,\r\n activity: PropTypes.shape({\r\n signal: PropTypes.func,\r\n }),\r\n};\r\n\r\nGoogleMerchantCenterStoreMappingStepInternal.defaultProps = {\r\n activity: null,\r\n};\r\n\r\nconst GoogleMerchantCenterStoreMappingStepInternalWithStyle = withActivityContext(GoogleMerchantCenterStoreMappingStepInternal);\r\n\r\nexport const GoogleMerchantCenterStoreMappingStep = React.memo(() => (\r\n \r\n {\r\n (contextValues) => {\r\n const {\r\n deps,\r\n } = contextValues;\r\n\r\n const {\r\n getUniqueImportGUID,\r\n } = deps;\r\n\r\n const uniqueImportId = (getUniqueImportGUID && getUniqueImportGUID()) || '';\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n \r\n));\r\n","import { StepConstants } from '../../page/step-config';\r\n\r\nexport const getActionBarItems = (saveMappingGridConfig) => {\r\n const config = [{\r\n type: 'button-back',\r\n prevStepName: StepConstants.ChooseAccountsGoogleAccount.path,\r\n validateFunction: () => saveMappingGridConfig(),\r\n }, {\r\n type: 'button-next',\r\n nextStepName: StepConstants.StartImportSmart.path,\r\n validateFunction: () => saveMappingGridConfig(),\r\n }, {\r\n type: 'button-cancel',\r\n extraLeftPadding: true,\r\n }];\r\n\r\n return config;\r\n};\r\n","import React from 'react';\r\n\r\nimport {\r\n SmartCampaignGoogleLoginStep as GeneralSmartCampaignGoogleLoginStep,\r\n} from '@bingads-webui-campaign/imports-core';\r\n\r\nimport { StepConstants } from '../../page/step-config';\r\n\r\nexport const SmartCampaignGoogleLoginStep = props => (\r\n \r\n);\r\n","import React from 'react';\r\n\r\nimport {\r\n ESCGoogleLoginStep as GeneralESCGoogleLoginStep,\r\n} from '@bingads-webui-campaign/imports-core';\r\n\r\nimport { StepConstants } from '../../page/step-config';\r\n\r\nexport const ESCGoogleLoginStep = props => (\r\n \r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { VerticalSeparatedLayout } from '@bingads-webui-react/steps';\r\n\r\nimport { ImportType, ImportMode } from '@bingads-webui-campaign/imports-core';\r\n\r\nimport { StepConstants } from './step-config';\r\nimport { GoogleLoginStep, renderDescription } from '../steps/google-login-step';\r\nimport { GoogleAccountStep, BingAccountStep } from '../steps/google-account-choose-step';\r\nimport { ImportSummaryPage } from '../steps/google-import-summary-step';\r\nimport { StartImportSmartStep } from '../steps/start-import-smart-step';\r\nimport { GoogleCampaignStep } from '../steps/google-campaign-step';\r\nimport { GoogleImportOptionsStep } from '../steps/google-import-options-step';\r\nimport { ImportStatusStep } from '../steps/import-status-step';\r\nimport { StartImportAdvancedStep } from '../steps/start-import-advanced-step';\r\nimport { GoogleMerchantCenterStoreMappingStep } from '../steps/merchant-center-store-mapping-step';\r\nimport { SmartCampaignGoogleLoginStep } from '../steps/smart-campaign-google-login-step';\r\nimport { ESCGoogleLoginStep } from '../steps/esc-google-login-step';\r\n\r\nconst {\r\n Step,\r\n StepContainer,\r\n} = VerticalSeparatedLayout;\r\n\r\nexport const getGoogleLoginStep = ({\r\n i18n,\r\n repository,\r\n onLoginPageHelpLinkClick,\r\n getLoginPageDisclaimer,\r\n}) => {\r\n const title = i18n.getString(StepConstants.SignInStep.stepName);\r\n const { path } = StepConstants.SignInStep;\r\n return (\r\n renderDescription(step, i18n, repository)}\r\n >\r\n \r\n \r\n );\r\n};\r\n\r\ngetGoogleLoginStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n repository: PropTypes.shape({}).isRequired,\r\n onLoginPageHelpLinkClick: PropTypes.func,\r\n getLoginPageDisclaimer: PropTypes.func,\r\n};\r\n\r\ngetGoogleLoginStep.defaultProps = {\r\n onLoginPageHelpLinkClick: null,\r\n getLoginPageDisclaimer: null,\r\n};\r\n\r\nexport const getGoogleAccountsStep = ({\r\n i18n,\r\n getImportMode,\r\n isEscImport,\r\n}) => {\r\n const title = i18n.getString(StepConstants.ChooseAccounts.stepName);\r\n const { path } = StepConstants.ChooseAccounts;\r\n const googleAccountSubPath = StepConstants.ChooseAccountsGoogleAccount.path;\r\n const bingAccountSubPath = StepConstants.ChooseAccountsBingAccountMapping.path;\r\n const bingAccountSubStepEnabled = getImportMode() === ImportMode.Multi;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetGoogleAccountsStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n getImportMode: PropTypes.func.isRequired,\r\n isEscImport: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport const getImportSummaryStep = ({\r\n i18n,\r\n showImportSummary,\r\n redirectToCampaignsPage,\r\n redirectToImportHistoryPage,\r\n onImportSummaryPageHelpLinkClicked,\r\n onSetupUETtagLinkClick,\r\n getImportSummaryDisclaimerText,\r\n isSmartCampaignImport,\r\n}) => {\r\n const title = i18n.getString(StepConstants.ImportSummaryStep.title);\r\n const { path } = StepConstants.ImportSummaryStep;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetImportSummaryStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n showImportSummary: PropTypes.bool.isRequired,\r\n redirectToCampaignsPage: PropTypes.func.isRequired,\r\n redirectToImportHistoryPage: PropTypes.func.isRequired,\r\n onImportSummaryPageHelpLinkClicked: PropTypes.func.isRequired,\r\n onSetupUETtagLinkClick: PropTypes.func.isRequired,\r\n getImportSummaryDisclaimerText: PropTypes.func.isRequired,\r\n isSmartCampaignImport: PropTypes.bool,\r\n};\r\n\r\ngetImportSummaryStep.defaultProps = {\r\n isSmartCampaignImport: false,\r\n};\r\n\r\nexport const getStartImportSmartStep = ({\r\n i18n,\r\n getImportType,\r\n setImportStatus,\r\n facScheduleInvalid,\r\n getSchedulePageDisclaimer,\r\n getDefaultSchedule,\r\n}) => {\r\n const title = i18n.getString(StepConstants.StartImportSmart.stepName);\r\n const { path } = StepConstants.StartImportSmart;\r\n const isEnabled = getImportType() === ImportType.Smart;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\ngetStartImportSmartStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n getImportType: PropTypes.func.isRequired,\r\n setImportStatus: PropTypes.func.isRequired,\r\n facScheduleInvalid: PropTypes.bool,\r\n getSchedulePageDisclaimer: PropTypes.func,\r\n getDefaultSchedule: PropTypes.func,\r\n};\r\n\r\ngetStartImportSmartStep.defaultProps = {\r\n facScheduleInvalid: false,\r\n getSchedulePageDisclaimer: null,\r\n getDefaultSchedule: null,\r\n};\r\n\r\nexport const getGoogleCampaignStep = ({\r\n i18n,\r\n getImportType,\r\n showCampaignSelectionStep,\r\n facNoActiveCampaigns,\r\n}) => {\r\n const title = i18n.getString(StepConstants.GoogleCampaignStep.stepName);\r\n const { path } = StepConstants.GoogleCampaignStep;\r\n const isEnabled = getImportType() === ImportType.Advanced && showCampaignSelectionStep;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetGoogleCampaignStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n getImportType: PropTypes.func.isRequired,\r\n showCampaignSelectionStep: PropTypes.bool.isRequired,\r\n facNoActiveCampaigns: PropTypes.bool,\r\n};\r\n\r\ngetGoogleCampaignStep.defaultProps = {\r\n facNoActiveCampaigns: false,\r\n};\r\n\r\nexport const getGoogleImportOptionsStep = ({\r\n i18n,\r\n deps,\r\n getImportType,\r\n}) => {\r\n const title = i18n.getString(StepConstants.ImportOptionStep.stepName);\r\n const { path } = StepConstants.ImportOptionStep;\r\n const isEnabled = getImportType() === ImportType.Advanced;\r\n const importAccountCurrencyTitle = i18n.getString(_TL_('Google Ads:'));\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetGoogleImportOptionsStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n deps: PropTypes.shape({}).isRequired,\r\n getImportType: PropTypes.func.isRequired,\r\n};\r\n\r\nexport const getStartImportAdvancedStep = ({\r\n i18n,\r\n getImportType,\r\n setImportStatus,\r\n facScheduleInvalid,\r\n facNoActiveCampaigns,\r\n getSchedulePageDisclaimer,\r\n}) => {\r\n const title = i18n.getString(StepConstants.StartImportAdvanced.stepName);\r\n const { path } = StepConstants.StartImportAdvanced;\r\n const isEnabled = getImportType() === ImportType.Advanced;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetStartImportAdvancedStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n getImportType: PropTypes.func.isRequired,\r\n setImportStatus: PropTypes.func.isRequired,\r\n facScheduleInvalid: PropTypes.bool,\r\n facNoActiveCampaigns: PropTypes.bool,\r\n getSchedulePageDisclaimer: PropTypes.func,\r\n};\r\n\r\ngetStartImportAdvancedStep.defaultProps = {\r\n facScheduleInvalid: false,\r\n facNoActiveCampaigns: false,\r\n getSchedulePageDisclaimer: null,\r\n};\r\n\r\nexport const getImportStatusStep = ({\r\n i18n,\r\n getImportStatus,\r\n showImportStatusStep,\r\n redirectToImportHistoryPage,\r\n getImportStatusPageDisclaimer,\r\n getOverwriteImportStatusOrderToStepTitleMap,\r\n}) => {\r\n const title = i18n.getString(StepConstants.ImportStatusStep.title);\r\n const { path } = StepConstants.ImportStatusStep;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetImportStatusStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n getImportStatus: PropTypes.func.isRequired,\r\n showImportStatusStep: PropTypes.bool.isRequired,\r\n redirectToImportHistoryPage: PropTypes.func.isRequired,\r\n getImportStatusPageDisclaimer: PropTypes.func,\r\n getOverwriteImportStatusOrderToStepTitleMap: PropTypes.func,\r\n};\r\n\r\ngetImportStatusStep.defaultProps = {\r\n getImportStatusPageDisclaimer: null,\r\n getOverwriteImportStatusOrderToStepTitleMap: null,\r\n};\r\n\r\nexport const getMerchantCenterStoreMappingStep = ({\r\n i18n,\r\n showMerchantCenterStoreMappingStep,\r\n}) => {\r\n const title = i18n.getString(StepConstants.MerchantCenterStoreMappingStep.stepName);\r\n const { path } = StepConstants.MerchantCenterStoreMappingStep;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetMerchantCenterStoreMappingStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n showMerchantCenterStoreMappingStep: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport const getSmartCampaignGoogleLoginStep = ({\r\n i18n,\r\n showSmartCampaignGoogleLoginStep,\r\n setImportStatus,\r\n permissions,\r\n}) => {\r\n const title = i18n.getString(StepConstants.SmartCampaignSignInStep.title);\r\n const { path } = StepConstants.SmartCampaignSignInStep;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetSmartCampaignGoogleLoginStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n showSmartCampaignGoogleLoginStep: PropTypes.bool.isRequired,\r\n setImportStatus: PropTypes.func.isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nexport const getESCGoogleLoginStep = ({\r\n i18n,\r\n showESCGoogleLoginStep,\r\n setImportStatus,\r\n}) => {\r\n const title = i18n.getString(StepConstants.ESCSignInStep.title);\r\n const { path } = StepConstants.ESCSignInStep;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetESCGoogleLoginStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n showESCGoogleLoginStep: PropTypes.bool.isRequired,\r\n setImportStatus: PropTypes.func.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Promise from 'bluebird';\r\nimport $ from 'jquery';\r\nimport classnames from 'classnames';\r\nimport { memoize } from 'underscore';\r\nimport { ACCOUNT_MODE } from '@bingads-webui-campaign/campaign-ui-common';\r\nimport { BaseImportCore, checkRequiredDeps, ImportType, ImportMode } from '@bingads-webui-campaign/imports-core';\r\nimport { SmartImportRepository, GoogleLoginRepository } from '@bingads-webui-campaign/import-shared-repositories';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { Constants as CCUIConstants } from '@bingads-webui-clientcenter/entity-utils';\r\nimport { CouponLightboxNew, CouponBannerNew } from '@bingads-webui-react/feature-adoption-coupon';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { Scenario } from '@bingads-webui-react/hoc-with-signal';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { FacCallout } from '@bingads-webui-react/fac-callout';\r\n\r\nimport { PermissionFactory } from '../repository';\r\nimport { StepConstants } from './step-config';\r\n\r\nimport {\r\n getGoogleLoginStep,\r\n getGoogleAccountsStep,\r\n getImportSummaryStep,\r\n getStartImportSmartStep,\r\n getGoogleCampaignStep,\r\n getGoogleImportOptionsStep,\r\n getStartImportAdvancedStep,\r\n getImportStatusStep,\r\n getMerchantCenterStoreMappingStep,\r\n getSmartCampaignGoogleLoginStep,\r\n getESCGoogleLoginStep,\r\n} from './step-factory';\r\n\r\n// ImportScope indicates whether this import page url is account level or customer level.\r\n// It means that once this smart import page is initialized, ImportScope value will never change\r\n// ImportMode indicated whether this import end up to be a single or multi account import.\r\n// For now, these 2 things are identical.\r\n// In future, we will support scenario that user go to account level import page\r\n// but do a multi-account import\r\n// (in this case, ImportScope is Account but ImportMode is Multi),\r\n// or scenario that user go to customer level import page but do a single-account import\r\n// (in this case, ImportScope is Customer but ImportMode is Single)\r\n// The import mode switch scenario will be controlled by isImportModeSwitchEnabled\r\n// from permission factory\r\nexport const ImportScope = {\r\n Account: 0,\r\n Customer: 1,\r\n};\r\n\r\nconst FAC_STATUS_NOT_IN_PROGRESS = CCUIConstants.RecommendationAdoptionStatus.NotInProgess;\r\nconst FAC_STATUS_ACTIVE = CCUIConstants.RecommendationAdoptionStatus.Active;\r\n\r\nfunction checkRequiredDepsForGoogleImport(deps) {\r\n checkRequiredDeps(deps);\r\n deps.check('edm');\r\n deps.check('jsData');\r\n deps.check('google');\r\n deps.check('cookieHelperForEditImport');\r\n}\r\n\r\nexport class GoogleImportPage extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.perfMarker = props.perfMarker;\r\n this.steps = [];\r\n this.state = {\r\n isInit: false,\r\n importType: ImportType.Smart,\r\n importMode: ImportMode.Single,\r\n showImportSummary: false,\r\n showMerchantCenterStoreMappingStep: false,\r\n showImportStatusStep: false,\r\n importStatus: null,\r\n startStep: StepConstants.SignInStep, // google-login-step\r\n hideProgressList: false,\r\n showCouponBanner: false,\r\n showCouponLightbox: false,\r\n showCampaignSelectionStep: true,\r\n uniqueImportGUID: generateGuid(),\r\n facScheduleInvalid: false,\r\n facNoActiveCampaigns: false,\r\n showSmartCampaignGoogleLoginStep: false,\r\n isSmartCampaignImport: false,\r\n isEscImport: false,\r\n showESCGoogleLoginStep: false,\r\n };\r\n this.initialize(props);\r\n }\r\n\r\n componentDidUpdate = (prevProps) => {\r\n if (prevProps.location.key !== this.props.location.key) {\r\n // eslint-disable-next-line\r\n this.setState({\r\n isInit: false,\r\n importType: ImportType.Smart,\r\n importMode: ImportMode.Single,\r\n showImportSummary: false,\r\n showImportStatusStep: false,\r\n showMerchantCenterStoreMappingStep: false,\r\n importStatus: null,\r\n startStep: StepConstants.SignInStep, // google-login-step\r\n hideProgressList: false,\r\n showCouponBanner: false,\r\n showCouponLightbox: false,\r\n showCampaignSelectionStep: true,\r\n uniqueImportGUID: generateGuid(),\r\n facScheduleInvalid: false,\r\n facNoActiveCampaigns: false,\r\n showSmartCampaignGoogleLoginStep: false,\r\n isSmartCampaignImport: false,\r\n isEscImport: false,\r\n showESCGoogleLoginStep: false,\r\n });\r\n this.initialState = {};\r\n this.initialize(prevProps);\r\n }\r\n };\r\n\r\n getUniqueImportGUID = () => this.state.uniqueImportGUID;\r\n\r\n getImportType = () => this.state.importType;\r\n\r\n setImportStatus = (status) => {\r\n this.setState({\r\n importStatus: status,\r\n });\r\n };\r\n\r\n getImportStatus = () => this.state.importStatus;\r\n\r\n getImportMode = () => this.state.importMode;\r\n\r\n getImportScope = () => this.state.ImportScope;\r\n\r\n logTrace(...args) {\r\n this.repository.logTrace(...args);\r\n }\r\n\r\n initialize = (props) => {\r\n this.perfMarker.willFetchData();\r\n checkRequiredDepsForGoogleImport(props.deps);\r\n this.deps = props.deps;\r\n\r\n // don't take reject param, if coupon call fails, we will just not show the offer\r\n Promise.resolve().then(() => {\r\n // Deps.\r\n this.deps.newI18n = this.props.i18n;\r\n this.deps.importStatus = this.state.importStatus;\r\n this.deps.perfMarker = this.props.perfMarker;\r\n this.deps.scope = props.scope;\r\n this.deps.serverContext = props.serverContext;\r\n this.i18n = this.deps.i18n;\r\n this.deps.loginPerfMarker = this.props.perfMarker.createChild('Smart_Import_Login_Step');\r\n this.deps.loginPerfMarker.willInit();\r\n\r\n this.deps.setFacScheduleInvalid = (facScheduleInvalid) => {\r\n this.setState({ facScheduleInvalid });\r\n };\r\n this.deps.setNoActiveCampaigns = (facNoActiveCampaigns) => {\r\n this.setState({ facNoActiveCampaigns });\r\n };\r\n\r\n // Unique Import ID for substrate.\r\n this.deps.getUniqueImportGUID = this.getUniqueImportGUID;\r\n\r\n // Toggle functions.\r\n this.deps.toggleShowImportSummary = this.toggleShowImportSummary;\r\n this.deps.toggleShowImportStatusStep = this.toggleShowImportStatusStep;\r\n this.deps.toggleMerchantCenterStoreMappingStep = this.toggleMerchantCenterStoreMappingStep;\r\n this.deps.toggleCampaignsSelectionStep = this.toggleCampaignsSelectionStep;\r\n\r\n // Repository init.\r\n // TODO: this will removed after repository refactor with real aid.\r\n if (!props.scope.values.aid) {\r\n this.deps.isMultiAccountImport = true;\r\n }\r\n\r\n this.repository = this.deps.repository\r\n ? this.deps.repository\r\n : new SmartImportRepository({\r\n deps: this.deps,\r\n });\r\n\r\n this.logTrace(`GSILocal: ${props.permissions.dynamic.GSILocal}`);\r\n\r\n this.googleLoginRepository = this.deps.googleLoginRepository\r\n ? this.deps.googleLoginRepository\r\n : new GoogleLoginRepository({ deps: { google: window.google, GSILocal: props.permissions.dynamic.GSILocal } });\r\n\r\n this.permissionFactory = this.deps.permissionFactory\r\n ? this.deps.permissionFactory\r\n : new PermissionFactory({\r\n permissions: props.permissions,\r\n importMode: props.scope.values.aid ? ImportMode.Single : ImportMode.Multi,\r\n });\r\n\r\n // Default Coupon State.\r\n this.setState({\r\n // FAC_STATUS_NOT_IN_PROGRESS is lightbox popup before close lightbox\r\n // FAC_STATUS_ACTIVE is showing CouponBanner\r\n showCouponBanner: this.deps.coupon && this.deps.ccJsData &&\r\n this.deps.coupon.rawData.Status !== FAC_STATUS_NOT_IN_PROGRESS,\r\n showCouponLightbox: this.deps.coupon && this.deps.ccJsData &&\r\n (this.deps.coupon.rawData.Status === FAC_STATUS_NOT_IN_PROGRESS\r\n || (this.deps.serverContext.DynamicPermissions.FacCalloutRevamp && this.deps.coupon.rawData.Status === FAC_STATUS_ACTIVE)),\r\n // importScope: props.scope.values.aid ? ImportScope.Account : ImportScope.Customer,\r\n importMode: props.scope.values.aid ? ImportMode.Single : ImportMode.Multi,\r\n });\r\n\r\n if (props.scope.values.aid && this.deps.serverContext.CurrentAccount.AccountMode === ACCOUNT_MODE.UNIFIED_SMART) {\r\n // ESC import scenario\r\n this.logTrace('go to ESC google import page');\r\n this.setState({\r\n showESCGoogleLoginStep: true,\r\n startStep: StepConstants.ESCSignInStep,\r\n hideProgressList: true,\r\n isEscImport: true,\r\n });\r\n }\r\n\r\n if (this.deps.serverContext.CurrentAccount\r\n && this.deps.serverContext.CurrentAccount.AccountMode === ACCOUNT_MODE.SMART) {\r\n // smart campaign import scenario\r\n this.logTrace('go to smart campaign google import page');\r\n this.setState({\r\n showSmartCampaignGoogleLoginStep: true,\r\n startStep: StepConstants.SmartCampaignSignInStep,\r\n hideProgressList: true,\r\n isSmartCampaignImport: true,\r\n });\r\n }\r\n\r\n const initialStateFetchPromise = Promise.resolve([]);\r\n\r\n return initialStateFetchPromise.then(() => {\r\n this.setState({\r\n isInit: true,\r\n });\r\n });\r\n });\r\n };\r\n\r\n toggleShowImportSummary = (state) => {\r\n this.setState({\r\n showImportSummary: state,\r\n });\r\n };\r\n\r\n toggleShowImportStatusStep = (state) => {\r\n this.setState({\r\n showImportStatusStep: state,\r\n });\r\n };\r\n\r\n toggleImportType = (type) => {\r\n this.setState({\r\n importType: type,\r\n });\r\n };\r\n\r\n toggleImportMode = (mode) => {\r\n this.setState({\r\n importMode: mode,\r\n });\r\n this.permissionFactory.toggleImportMode(mode);\r\n };\r\n\r\n toggleMerchantCenterStoreMappingStep = (state) => {\r\n this.setState({\r\n showMerchantCenterStoreMappingStep: state,\r\n });\r\n };\r\n\r\n toggleCampaignsSelectionStep = (state) => {\r\n this.setState({\r\n showCampaignSelectionStep: state,\r\n });\r\n };\r\n\r\n constructSteps = (i18n) => {\r\n this.steps = [];\r\n // construct base step\r\n this.steps.push(getGoogleLoginStep({\r\n i18n,\r\n repository: this.repository,\r\n onLoginPageHelpLinkClick: this.props.onLoginPageHelpLinkClick,\r\n getLoginPageDisclaimer: this.props.getLoginPageDisclaimer,\r\n }));\r\n\r\n this.steps.push(getGoogleAccountsStep({\r\n i18n,\r\n getImportMode: this.getImportMode,\r\n isEscImport: this.state.isEscImport,\r\n }));\r\n\r\n this.steps.push(getMerchantCenterStoreMappingStep({\r\n i18n,\r\n showMerchantCenterStoreMappingStep: this.state.showMerchantCenterStoreMappingStep,\r\n }));\r\n\r\n this.steps.push(getStartImportSmartStep({\r\n i18n,\r\n getImportType: this.getImportType,\r\n setImportStatus: this.setImportStatus,\r\n facScheduleInvalid: this.state.facScheduleInvalid,\r\n getSchedulePageDisclaimer: this.props.getSchedulePageDisclaimer,\r\n getDefaultSchedule: this.props.getDefaultSchedule,\r\n }));\r\n\r\n this.steps.push(getGoogleCampaignStep({\r\n i18n,\r\n getImportType: this.getImportType,\r\n showCampaignSelectionStep: this.state.showCampaignSelectionStep,\r\n facNoActiveCampaigns: this.state.facNoActiveCampaigns,\r\n }));\r\n\r\n this.steps.push(getGoogleImportOptionsStep({\r\n i18n,\r\n deps: this.deps,\r\n getImportType: this.getImportType,\r\n }));\r\n\r\n this.steps.push(getStartImportAdvancedStep({\r\n i18n,\r\n getImportType: this.getImportType,\r\n setImportStatus: this.setImportStatus,\r\n facScheduleInvalid: this.state.facScheduleInvalid,\r\n facNoActiveCampaigns: this.state.facNoActiveCampaigns,\r\n getSchedulePageDisclaimer: this.props.getSchedulePageDisclaimer,\r\n }));\r\n\r\n this.steps.push(getImportStatusStep({\r\n i18n,\r\n getImportStatus: this.getImportStatus,\r\n showImportStatusStep: this.state.showImportStatusStep,\r\n redirectToImportHistoryPage: this.props.redirectToImportHistoryPage,\r\n getImportStatusPageDisclaimer: this.props.getImportStatusPageDisclaimer,\r\n getOverwriteImportStatusOrderToStepTitleMap:\r\n this.props.getOverwriteImportStatusOrderToStepTitleMap,\r\n }));\r\n\r\n this.steps.push(getImportSummaryStep({\r\n i18n,\r\n showImportSummary: this.state.showImportSummary,\r\n redirectToCampaignsPage: this.props.redirectToCampaignsPage,\r\n redirectToImportHistoryPage: this.props.redirectToImportHistoryPage,\r\n onImportSummaryPageHelpLinkClicked: this.props.onImportSummaryPageHelpLinkClicked,\r\n onSetupUETtagLinkClick: this.props.onSetupUETtagLinkClick,\r\n getImportSummaryDisclaimerText: this.props.getImportSummaryDisclaimerText,\r\n isSmartCampaignImport: this.state.isSmartCampaignImport,\r\n }));\r\n\r\n this.steps.push(getSmartCampaignGoogleLoginStep({\r\n i18n,\r\n repository: this.repository,\r\n showSmartCampaignGoogleLoginStep: this.state.showSmartCampaignGoogleLoginStep,\r\n setImportStatus: this.setImportStatus,\r\n permissions: this.props.permissions,\r\n }));\r\n\r\n this.steps.push(getESCGoogleLoginStep({\r\n i18n,\r\n repository: this.repository,\r\n showESCGoogleLoginStep: this.state.showESCGoogleLoginStep,\r\n setImportStatus: this.setImportStatus, // TODO: remove in the future if it is only related with import status step\r\n }));\r\n };\r\n\r\n closeLightbox = memoize(() => {\r\n const closeBlock = withUiBlock($('.ReactModal__Content'), this.deps.i18n.getString('Loading'), undefined, undefined, 1100);\r\n this.repository.updateFACCoupon(FAC_STATUS_ACTIVE)\r\n .tap(() => {\r\n this.setState({\r\n showCouponBanner: true,\r\n });\r\n })\r\n .tapCatch((err) => {\r\n if (this.deps.showAlertHandler) {\r\n const errorCode = err.Errors && err.Errors[0] && err.Errors[0].Code;\r\n const errorMessageKey = errorCode === 'CCMTErrorNumber_CouponBankDepleted'\r\n ? 'FACDepletedErrorMessage'\r\n : 'GenericFACAdoptionStartErrorMessage';\r\n\r\n this.deps.showAlertHandler({\r\n message: this.deps.i18nAmdLoader.getString(errorMessageKey),\r\n level: 'Error',\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n // if there is an error, clear coupon from scheduled import step\r\n delete this.deps.coupon;\r\n })\r\n .finally(() => {\r\n this.setState({\r\n showCouponLightbox: false,\r\n });\r\n closeBlock();\r\n });\r\n });\r\n\r\n render() {\r\n const {\r\n rootClassName,\r\n i18n,\r\n serverContext,\r\n } = this.props;\r\n\r\n if (this.state.isInit) {\r\n this.steps = [];\r\n this.constructSteps(i18n);\r\n } else {\r\n return null;\r\n }\r\n\r\n const handleCancelButtonClick = () => {\r\n if (this.props.customCancelButtonClickHandler) {\r\n this.props.customCancelButtonClickHandler();\r\n } else {\r\n this.repository.redirectToCampaigns();\r\n }\r\n };\r\n\r\n let scenarioName = '';\r\n if (this.state.isSmartCampaignImport) {\r\n scenarioName = 'SmartCampaignsGoogleImportWizard';\r\n } else if (this.state.isEscImport) {\r\n scenarioName = 'ESCGoogleImportWizard';\r\n } else {\r\n scenarioName = 'SmartGoogleImportWizard';\r\n }\r\n\r\n return (\r\n \r\n {\r\n this.state.showCouponLightbox &&\r\n
\r\n { serverContext.DynamicPermissions.FacCalloutRevamp\r\n ? \r\n : \r\n }\r\n
\r\n }\r\n {\r\n this.state.showCouponBanner &&\r\n
\r\n \r\n
\r\n }\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nGoogleImportPage.propTypes = {\r\n rootClassName: PropTypes.string.isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n ccJsData: PropTypes.shape({\r\n FeatureAdoptionCoupon: PropTypes.shape({\r\n findAll: PropTypes.func,\r\n }),\r\n }),\r\n deps: PropTypes.shape({}).isRequired,\r\n location: PropTypes.shape({\r\n key: PropTypes.string,\r\n }).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n redirectToCampaignsPage: PropTypes.func,\r\n redirectToImportHistoryPage: PropTypes.func,\r\n customCancelButtonClickHandler: PropTypes.func,\r\n onLoginPageHelpLinkClick: PropTypes.func,\r\n onSetupUETtagLinkClick: PropTypes.func,\r\n getLoginPageDisclaimer: PropTypes.func,\r\n getSchedulePageDisclaimer: PropTypes.func,\r\n onImportSummaryPageHelpLinkClicked: PropTypes.func,\r\n getImportSummaryDisclaimerText: PropTypes.func,\r\n getDefaultSchedule: PropTypes.func,\r\n getImportStatusPageDisclaimer: PropTypes.func,\r\n getOverwriteImportStatusOrderToStepTitleMap: PropTypes.func,\r\n serverContext: PropTypes.shape({\r\n DynamicPermissions: PropTypes.shape({\r\n FacCalloutRevamp: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n};\r\n\r\nGoogleImportPage.defaultProps = {\r\n ccJsData: null,\r\n redirectToCampaignsPage: null,\r\n redirectToImportHistoryPage: null,\r\n customCancelButtonClickHandler: null,\r\n onLoginPageHelpLinkClick: null,\r\n getLoginPageDisclaimer: null,\r\n getSchedulePageDisclaimer: null,\r\n onSetupUETtagLinkClick: null,\r\n onImportSummaryPageHelpLinkClicked: null,\r\n getImportSummaryDisclaimerText: null,\r\n getDefaultSchedule: null,\r\n getImportStatusPageDisclaimer: null,\r\n getOverwriteImportStatusOrderToStepTitleMap: null,\r\n};\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\n\r\nexport const HotelCenterAssignment = globalContext.define(\r\n [\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center',\r\n 'campaignui/feature/griddownload/view/adapter',\r\n 'campaignui/feature/hotel-center-edm/index',\r\n 'campaignui/feature/hotel-center-js-data/index',\r\n 'component/bingads-grid/plugin/cross-page-select-all/index',\r\n 'component/bingads-grid/shared/column',\r\n 'component/bingads-grid/shared/schema-util',\r\n 'component/i18n/loader!campaignui/feature/hotel-center',\r\n 'component/state/index',\r\n 'component/config/index',\r\n 'component/bingads-grid/service/custom-userinfo-preferences',\r\n 'component/js-data-campaign/index',\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared',\r\n 'PageContext',\r\n 'component/bingads-grid/service/date-filter-preferences',\r\n ],\r\n Promise => import(/* webpackMode: 'eager' */ './src/hotel-center-assignment') // eslint-disable-line no-unused-vars\r\n);\r\n\r\n","import { getHotelCenterService } from '@bingads-webui-campaign/hotel-center-service';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst dataStore = globalContext.require('component/js-data-campaign/index');\r\nconst state = globalContext.require('component/state/index');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\n\r\nexport const {\r\n gridOptionUtils,\r\n bulkEditParams,\r\n bulkEditService,\r\n} = getHotelCenterService({ state, edm, dataStore });\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport hotelGroupInfoTemplate from './hotel-group-info-template.pug';\r\nimport messageViewTemplate from './message-view-template.pug';\r\nimport attentionViewTemplate from './attention-info-template.pug';\r\n\r\nconst i18n = globalContext.require('component/i18n/loader!campaignui/feature/hotel-center');\r\n\r\n/**\r\n * Class representing a InformationView\r\n * @extends View\r\n */\r\nconst templateMap = {\r\n messageView: messageViewTemplate,\r\n hotelGroupInfo: hotelGroupInfoTemplate,\r\n attentionView: attentionViewTemplate,\r\n};\r\n\r\nexport default class InformationView extends DeterministicView {\r\n initialize({ name = 'messageView' }) {\r\n this.i18n = i18n;\r\n this.name = name;\r\n }\r\n\r\n get template() {\r\n return templateMap[this.name];\r\n }\r\n\r\n get events() {\r\n return this.name === 'attentionView' ? {\r\n 'click .attention-information-dismiss__container input[type=checkbox]': ({ target }) => {\r\n const isDismiss = target.checked;\r\n\r\n this.setState({ isDismiss });\r\n },\r\n } : {};\r\n }\r\n}\r\n","import Backbone from 'backbone';\r\nimport { InputControl } from '@bingads-webui/input-control';\r\nimport template from './edit-control-template.pug';\r\n\r\nexport default class EditControl extends Backbone.View {\r\n initialize({ entity, field, description }) {\r\n this.description = description;\r\n this.errorMessage = '';\r\n\r\n if (entity && field) {\r\n this.entity = entity;\r\n this.field = field;\r\n\r\n this.hotelNameInput = new InputControl({\r\n entity,\r\n field,\r\n ariaLabelledby: 'edit-control-description',\r\n });\r\n }\r\n\r\n return this;\r\n }\r\n\r\n render() {\r\n this.$el.html(template({\r\n description: this.description,\r\n errorMessage: this.errorMessage,\r\n }));\r\n\r\n if (this.hotelNameInput) {\r\n this.hotelNameInput.render();\r\n this.$('.edit-control__container').html(this.hotelNameInput.$el);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n setErrorMessage(errorMessage) {\r\n this.errorMessage = errorMessage;\r\n\r\n this.render();\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport template from './custom-filter-template.pug';\r\n\r\nconst i18n = globalContext.require('component/i18n/loader!campaignui/feature/hotel-center');\r\n\r\n/**\r\n * Class representing a CustomFilterView\r\n * @extends View\r\n */\r\nexport default class CustomFilterView extends DeterministicView {\r\n initialize() {\r\n this.i18n = i18n;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .removeFilterLink': this.onRemoveFilterLinkClicked,\r\n };\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n onRemoveFilterLinkClicked(e) {\r\n this.removeFilterLinkClickedEvent = e;\r\n this.trigger('filterRemoved');\r\n }\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\nimport pgrid from 'projection-grid';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView, helpers } from '@bingads-webui/deterministic-view';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { toolbarPlugin } from '@bingads-webui/projection-grid-toolbar';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport InformationView from './Information-view';\r\nimport template from './hotel-view-template.pug';\r\nimport CustomFilterView from '../assignment-utils/custom-filter-view';\r\n\r\nconst i18n = globalContext.require('component/i18n/loader!campaignui/feature/hotel-center');\r\nconst { crossPageSelectAllPlugin } = globalContext.require('component/bingads-grid/plugin/cross-page-select-all/index');\r\n\r\n/**\r\n * Class representing a navigation tabs for HotelViewBase\r\n * @extends View\r\n */\r\nexport default class HotelViewBase extends DeterministicView {\r\n /**\r\n * Initializes HotelsInGroupView\r\n * @returns {undefined}\r\n */\r\n initialize() {\r\n this.i18n = i18n;\r\n\r\n const hotelGroupInformation = new InformationView({ name: 'hotelGroupInfo' });\r\n\r\n hotelGroupInformation.setState({ groupName: undefined, count: undefined });\r\n this.setChild('group-information', hotelGroupInformation);\r\n }\r\n\r\n setState({\r\n groupId,\r\n groupName,\r\n excludeGroupId,\r\n showEditMenu,\r\n subAccountId,\r\n isSubAccountSelected,\r\n }) {\r\n this.getChild('group-information').setState({ groupName, count: undefined });\r\n\r\n this.model.set('groupId', groupId);\r\n this.model.set('groupName', groupName);\r\n this.model.set('excludeGroupId', excludeGroupId);\r\n this.model.set('showEditMenu', showEditMenu);\r\n this.model.set('subAccountId', subAccountId);\r\n this.model.set('isSubAccountSelected', isSubAccountSelected);\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n renderTrunk() {\r\n super.renderTrunk();\r\n\r\n // Do not attempt to render if no group is assigned yet.\r\n if (!this.getState().groupId) {\r\n return;\r\n }\r\n\r\n this.gridFactory = pgrid.factory({ vnext: true })\r\n .use(toolbarPlugin)\r\n .use(paginationPlugin)\r\n .use(uiBlockerPlugin)\r\n .use(crossPageSelectAllPlugin);\r\n }\r\n\r\n getSelectedItems() {\r\n if (this.grid.gridView) {\r\n return this.grid.gridView.selectedItems();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getSelectionCount() {\r\n return this.grid.crossPageSelectAll && this.grid.crossPageSelectAll.isAllSelected ?\r\n this.grid.crossPageSelectAll.viewModel.totalRowsTotalPageCount() :\r\n _.result(this.getSelectedItems(), 'length', 0);\r\n }\r\n\r\n getFilter() {\r\n const filter = this.filterAgent.filterService.getCombinedFilter();\r\n if (_.isEmpty(filter) || _.isEmpty(filter.query)) {\r\n return filter;\r\n }\r\n const mapper = condition => _.chain(condition)\r\n .pairs()\r\n .map(pair => [_.result({\r\n Name: 'HotelName',\r\n }, pair[0], pair[0]), pair[1]])\r\n .object()\r\n .value();\r\n const converter = (query) => {\r\n /* query demo with $and:\r\n {\r\n \"$and\": [{\r\n \"Status\": { \"$eq\": \"Enum.Status'Active'\" }\r\n },{\r\n \"Name\": { \"$contains\": \"A12\" }\r\n }]\r\n }\r\n query demo withou $and:\r\n {\r\n \"Status\": { \"$eq\": \"Enum.Status'Active'\" }\r\n }\r\n Exclude status filter which is not supported in bulk edit API yet.\r\n */\r\n if (_.has(query, '$and')) {\r\n return _.defaults({\r\n $and: _.chain(query.$and)\r\n .reject(condition => _.has(condition, 'Status'))\r\n .map(mapper)\r\n .value(),\r\n }, query);\r\n }\r\n return _.isObject(query) ? _.omit(query, 'Status') : _.chain(query)\r\n .omit('Status')\r\n .map(mapper)\r\n .value();\r\n };\r\n return _.defaults({\r\n query: converter(filter.query),\r\n }, filter);\r\n }\r\n\r\n clearSelection() {\r\n if (this.grid.gridView) {\r\n this.grid.gridView.deselectAll();\r\n }\r\n }\r\n\r\n refreshGrid() {\r\n this.grid.gridView.refresh(true);\r\n }\r\n\r\n\r\n gridCreated() {\r\n this.grid.gridView.on('didUpdate', () => {\r\n this.hotelCount = this.grid.gridView.totalCountRows;\r\n\r\n helpers.updateView(this.getChild('group-information'), { count: this.hotelCount });\r\n });\r\n }\r\n\r\n onSearchInvoked(searchTerm) {\r\n this.searchTerm = searchTerm;\r\n if (_.isEmpty(this.searchTerm)) {\r\n return;\r\n }\r\n this.filterAgent.filterService.setEditableFilter({\r\n [this.searchPropertyName]: { $contains: searchTerm },\r\n });\r\n this._tryRenderFilterAndInsert();\r\n }\r\n\r\n _initialRenderFilter(searchPropertyName) {\r\n this.filterStateView = new CustomFilterView();\r\n\r\n const currentFilter = this.getFilter();\r\n if (currentFilter && currentFilter.query && currentFilter.query[searchPropertyName]) {\r\n this.filterStateView.setState({ filterValue: currentFilter.query[searchPropertyName].$contains });\r\n this.filterStateView.render();\r\n\r\n this._removeSearchItems();// clean the exist search items\r\n this.filterStateView.$el.appendTo(this.$('.toolbar-container'));\r\n\r\n this.listenTo(this.filterStateView, 'filterRemoved', this.onFilterRemoved);\r\n }\r\n }\r\n\r\n _tryRenderFilterAndInsert() {\r\n this.filterStateView = new CustomFilterView();\r\n\r\n this.filterStateView.setState({ filterValue: this.searchTerm });\r\n this.filterStateView.render();\r\n\r\n this._removeSearchItems();// clean the exist search items\r\n this.filterStateView.$el.appendTo(this.$('.toolbar-container'));\r\n\r\n this.listenTo(this.filterStateView, 'filterRemoved', this.onFilterRemoved);\r\n }\r\n\r\n\r\n _removeSearchItems() {\r\n // remove the last item (which is the filter state)\r\n while (this.$('.toolbar-container').children().length > 1) {\r\n this.$('.toolbar-container').children().last().remove();\r\n }\r\n }\r\n\r\n onFilterRemoved() {\r\n this.searchTerm = null;\r\n this._clearSearchBox();\r\n\r\n this.filterAgent.filterService.removeEditableFilter();\r\n }\r\n\r\n _clearSearchBox() {\r\n this.filterToolbar.update({ id: 'search-box-filter', value: '' });\r\n this._removeSearchItems();\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { helpers } from '@bingads-webui/projection-grid-toolbar';\r\n\r\nconst { crossPageSelectHeadRow } = globalContext.require('component/bingads-grid/plugin/cross-page-select-all/index');\r\nconst i18n = globalContext.require('component/i18n/loader!campaignui/feature/hotel-center');\r\n\r\nexport default class HotelOptionsBase {\r\n constructor() {\r\n this.i18n = i18n;\r\n const pageSizes = [10, 20, 50, 100];\r\n\r\n this.tableClasses = ['table', 'table-bordered'];\r\n this.scrolling = {\r\n virtualized: true,\r\n viewport: window,\r\n header: {\r\n type: 'sticky',\r\n offset() {\r\n return $('.navbar-fixed-top').height();\r\n },\r\n },\r\n };\r\n\r\n this.selection = {\r\n enabled: true,\r\n };\r\n\r\n this.rows = {\r\n headRows: [\r\n helpers.singleToolbarHeadRows(),\r\n crossPageSelectHeadRow(),\r\n 'column-header-rows',\r\n ],\r\n };\r\n\r\n this.plugins = {\r\n pagination: {\r\n pageSize: 10,\r\n availablePageSizes: pageSizes,\r\n enableRandomPage: false,\r\n pageSizeText: i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: i18n.getString('Grid_PageOf'),\r\n },\r\n uiBlocker: {\r\n el: $('.hotel-associations__container'),\r\n text: i18n.getString('Loading'),\r\n },\r\n };\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport { OverridableToolbarView } from '@bingads-webui/toolbar';\r\nimport HotelOptionsBase from '../assignment-utils/hotel-options-base';\r\n\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\nconst state = globalContext.require('component/state/index');\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('component/i18n/loader!campaignui/feature/hotel-center');\r\n\r\nexport default class HotelsInGroupOptions extends HotelOptionsBase {\r\n constructor({\r\n subAccountId,\r\n hotelGroupId,\r\n perfMarker,\r\n appConfig,\r\n isUINext = false,\r\n onSearchInvoked,\r\n }) {\r\n super();\r\n const entitySet = edm.currentAccount\r\n .SubAccounts.$withKey(subAccountId.toString())\r\n .HotelGroups.$withKey(hotelGroupId)\r\n .Hotels;\r\n\r\n this.name = 'HotelInGroupGrid';\r\n\r\n this.dataSource = {\r\n entity: jsdata.Hotel,\r\n type: 'js-data',\r\n options: {\r\n entitySet,\r\n cacheResponse: false,\r\n },\r\n query: {\r\n $select: 'PartnerHotelId,Name,HotelGroupName,Id',\r\n },\r\n };\r\n\r\n if (isUINext) {\r\n this.scrolling.viewport = $('.hotel-associations__container');\r\n }\r\n\r\n this.filterToolbar = new OverridableToolbarView({\r\n toolbarId: _.uniqueId('grid-toolbar-'),\r\n items: [{\r\n type: 'search-box',\r\n id: 'search-box-filter',\r\n placeholder: i18n.getString('HotelCenter_Group_Search_Label'),\r\n onChange: searchTerm => onSearchInvoked(searchTerm),\r\n }],\r\n }).render();\r\n\r\n $('.hotel-in-group__container .toolbar-container').append(this.filterToolbar.$el);\r\n\r\n // Empty default toolbar is still needed for dependency\r\n const gridToolbar = helpers.singleToolbar({\r\n items: [\r\n {\r\n type: 'selector',\r\n id: 'quick-filter',\r\n },\r\n ],\r\n });\r\n\r\n this.plugins.toolbar = gridToolbar;\r\n\r\n this.plugins.dateFilter =\r\n {\r\n isOdataActionSource: false,\r\n edm,\r\n state,\r\n addDateChangeListener: _.noop,\r\n };\r\n\r\n this.plugins.perfMarker = {\r\n marker: perfMarker,\r\n appConfig,\r\n };\r\n\r\n this.columns = [\r\n bingadsGridColumn({\r\n name: 'PartnerHotelId',\r\n title: 'HotelCenter_Overview_Grid_Hotel_Advertiser_Hotel_ID_Label',\r\n sortable: true,\r\n filterable: true,\r\n type: 'string',\r\n bodyClasses: ['truncated'],\r\n helpId: 'pop_BA_HotelAds_PartnerHotelID',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'Name',\r\n sortable: 'Name',\r\n type: 'string',\r\n bodyClasses: ['truncated'],\r\n title: this.i18n.getString('HotelCenter_Group_Hotel_Name_Label'),\r\n }), bingadsGridColumn({\r\n name: 'HotelGroupName',\r\n sortable: 'HotelGroupName',\r\n type: 'string',\r\n bodyClasses: ['truncated'],\r\n title: this.i18n.getString('HotelCenter_Group_Name_Label'),\r\n })];\r\n }\r\n}\r\n","import { getHotelCenterShared } from '@bingads-webui-campaign/hotel-center-shared';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { HotelGroup, SubAccount } from '@bingads-webui/hotel-odata-schemas';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared');\r\nconst pageContext = globalContext.require('PageContext');\r\nconst state = globalContext.require('component/state/index');\r\nconst dateFilterPreferences = globalContext.require('component/bingads-grid/service/date-filter-preferences');\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\n\r\nexport const {\r\n HotelGroupModel,\r\n SubAccountModel,\r\n lightDismissible,\r\n dateFilterPlugin,\r\n} = getHotelCenterShared({\r\n i18n,\r\n hotelGroupSchema: HotelGroup,\r\n state,\r\n jsdata,\r\n edm,\r\n subAccountSchema: SubAccount,\r\n pageContext,\r\n dateFilterPreferences,\r\n});\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport { FilterAgent } from '@bingads-webui/filter-agent';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\n\r\nexport function initializeFilterAgent({\r\n filterConfig,\r\n gridView,\r\n tabView,\r\n toolbar,\r\n}) {\r\n tabView.filterAgent = new FilterAgent(_.extend(filterConfig, {\r\n toolbarView: toolbar,\r\n }));\r\n\r\n gridView.listenTo(tabView.filterAgent, 'filter-state-changed', ({ filter } = {}) => {\r\n updateGridQuery(gridView, filter);\r\n });\r\n\r\n gridView.listenTo(tabView.filterAgent, 'filter-ui-change', (state) => {\r\n if (state.showFilterBar) {\r\n tabView._initialRenderFilter(tabView.searchPropertyName);\r\n }\r\n });\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { getCommonFilterConfig } from '@bingads-webui-campaign/common-grid-config';\r\n\r\nconst appConfig = globalContext.require('component/config/index');\r\n\r\nexport function getFilterConfig({\r\n schema,\r\n i18n,\r\n featureName,\r\n preferenceStoreFactory,\r\n preferenceService,\r\n sessionStore,\r\n}) {\r\n return getCommonFilterConfig({\r\n entitySchema: schema,\r\n preferenceService,\r\n featureName,\r\n i18n,\r\n sessionStore,\r\n preferenceStoreFactory: preferenceStoreFactory.getFilters,\r\n globalConfig: appConfig,\r\n enableCampaignWaterfall: false,\r\n editor: {},\r\n });\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { helpers } from '@bingads-webui/deterministic-view';\r\nimport { Dialog } from '@bingads-webui/dialog';\r\nimport { dateFilterPlugin as newDateFilterPlugin } from '@bingads-webui-campaign/projection-grid-date-filter';\r\nimport { perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { Hotel as hotelSchema } from '@bingads-webui/hotel-odata-schemas';\r\nimport InformationView from '../assignment-utils/Information-view';\r\nimport EditControl from '../assignment-utils/edit-control';\r\nimport HotelViewBase from '../assignment-utils/hotel-view-base';\r\nimport HotelsInGroupOptions from './grid-options';\r\nimport {\r\n HotelGroupModel, SubAccountModel, lightDismissible,\r\n} from '../hotel-center-shared';\r\nimport { initializeFilterAgent } from '../assignment-utils/filter-agent';\r\nimport { getFilterConfig } from '../assignment-utils/filter-config';\r\n\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\nconst i18n = globalContext.require('component/i18n/loader!campaignui/feature/hotel-center');\r\nconst appConfig = globalContext.require('component/config/index');\r\n\r\nlightDismissible();\r\n\r\n/**\r\n * Class representing a navigation tabs for HotelsInGroupView\r\n * @extends View\r\n */\r\nconst errorCodeToStringMap = {\r\n CreateFailed: i18n.getString('HotelCenter_Group_Create_Failed_Generic_Error_Message'),\r\n RenameFailed: i18n.getString('HotelCenter_Group_Rename_Failed_Generic_Error_Message'),\r\n DeleteFailed: i18n.getString('HotelCenter_Group_Delete_Failed_Generic_Error_Message'),\r\n SameValueAlreadyExist: i18n.getString('HotelCenter_Group_Name_Exists_Error_Message'),\r\n GroupNotEmpty: i18n.getString('HotelCenter_Group_Not_Empty_Delete_Error_Message'),\r\n InternalError: i18n.getString('HotelCenter_Group_Delete_Failed_Generic_Error_Message'),\r\n};\r\n\r\nexport default class HotelsInGroupView extends HotelViewBase {\r\n initialize({\r\n perfMarker,\r\n isUINext = false,\r\n preferenceStoreFactory,\r\n preferenceService,\r\n sessionStore,\r\n } = {}) {\r\n super.initialize();\r\n this.perfMarker = perfMarker;\r\n this.isUINext = isUINext;\r\n this.preferenceStoreFactory = preferenceStoreFactory;\r\n this.preferenceService = preferenceService;\r\n this.sessionStore = sessionStore;\r\n this.searchPropertyName = 'Name';\r\n\r\n const statusMessageBar = new InformationView({ name: 'messageView' });\r\n this.HotelGroupModel = HotelGroupModel; // for test mock\r\n\r\n statusMessageBar.setState({ statusMessage: '' });\r\n this.setChild('association-status-message', statusMessageBar);\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .group-edit-menu': this.onGroupEditMenuClicked,\r\n 'click .group-rename-menu': this.onGroupRenameMenuClicked,\r\n 'click .group-delete-menu': this.onGroupDeleteMenuClicked,\r\n };\r\n }\r\n\r\n renderTrunk() {\r\n super.renderTrunk();\r\n\r\n if (this.gridFactory) {\r\n const gridOptions = new HotelsInGroupOptions({\r\n onSearchInvoked: searchTerm => this.onSearchInvoked(searchTerm),\r\n subAccountId: this.getState().subAccountId,\r\n hotelGroupId: this.getState().groupId,\r\n perfMarker: this.perfMarker,\r\n appConfig,\r\n isUINext: this.isUINext,\r\n });\r\n\r\n this.filterToolbar = gridOptions.filterToolbar;\r\n\r\n this.grid = this.gridFactory\r\n .use(newDateFilterPlugin)\r\n .use(perfMarkerPlugin)\r\n .create(gridOptions);\r\n\r\n super.gridCreated();\r\n\r\n this.grid.gridView.on('didSelect', (selected) => {\r\n this.trigger('selectionChanged', selected);\r\n });\r\n\r\n // Cross page selection should be reset after grid reload\r\n this.grid.gridView.on('didReload', () => {\r\n this.grid.gridView.deselectAll();\r\n });\r\n\r\n initializeFilterAgent({\r\n filterConfig: getFilterConfig({\r\n schema: hotelSchema,\r\n i18n,\r\n featureName: 'HotelInGroup',\r\n preferenceStoreFactory: this.preferenceStoreFactory,\r\n preferenceService: this.preferenceService && this.preferenceService.default,\r\n sessionStore: this.sessionStore,\r\n }),\r\n gridView: this.grid.gridView,\r\n tabView: this,\r\n toolbar: this.filterToolbar,\r\n });\r\n\r\n $('.hotel-in-group__container .grid-container').append(this.grid.gridView.render().el);\r\n }\r\n }\r\n\r\n setAssociationBarState(state) {\r\n this.getChild('association-status-message').setState(state);\r\n }\r\n\r\n onGroupEditMenuClicked(e) {\r\n // Since the event will bubble up to the light dismiss manager, it should specify\r\n // not to dismiss the target element\r\n if (e.originalEvent) {\r\n e.originalEvent.noDismiss = 'group-edit-menu-list'; // eslint-disable-line no-param-reassign\r\n }\r\n\r\n this._showPopup();\r\n }\r\n\r\n onGroupRenameMenuClicked() {\r\n this._hidePopup();\r\n\r\n const { isSubAccountSelected } = this.getState();\r\n const model = isSubAccountSelected ? this.getSubAccountModel() : this.getHotelGroupModel();\r\n const inputName = new EditControl({\r\n entity: model,\r\n field: 'Name',\r\n description: '',\r\n });\r\n const title = isSubAccountSelected ? i18n.getString('HotelCenter_SubAccount_Edit_Rename_Label_Format', this.getState().groupName) :\r\n i18n.getString('HotelCenter_Group_Edit_Rename_Label_Format', this.getState().groupName);\r\n\r\n model.errors.on('change:Name', (vm, error) => {\r\n if (_.isEmpty(error)) {\r\n $('.hotel-center-group-dialog-save').removeClass('disabled');\r\n } else {\r\n $('.hotel-center-group-dialog-save').addClass('disabled');\r\n }\r\n });\r\n\r\n this.showRenameDialog({\r\n title,\r\n inputName,\r\n model,\r\n });\r\n }\r\n\r\n getHotelGroupModel() {\r\n const entitySet = edm.currentAccount\r\n .SubAccounts.$withKey(this.getState().subAccountId.toString())\r\n .HotelGroups;\r\n\r\n return new HotelGroupModel({\r\n Id: this.getState().groupId,\r\n entitySet,\r\n });\r\n }\r\n\r\n getSubAccountModel() {\r\n const entitySet = edm.currentAccount.SubAccounts;\r\n\r\n return new SubAccountModel({\r\n Id: this.getState().subAccountId,\r\n entitySet,\r\n });\r\n }\r\n\r\n showRenameDialog({\r\n inputName,\r\n title,\r\n model,\r\n }) {\r\n const dialog = new Dialog({ className: 'hotel-center-group-dialog' }).setContent(inputName).setState({\r\n title,\r\n buttons: [{\r\n text: i18n.getString('HotelCenter_Group_Edit_Confirm_Label'),\r\n name: 'confirm',\r\n class: 'hotel-center-group-dialog-save',\r\n }, {\r\n text: i18n.getString('HotelCenter_Group_Edit_Cancel_Label'),\r\n name: 'cancel',\r\n class: 'dialog-cancel',\r\n }],\r\n });\r\n\r\n document.body.appendChild(dialog.el);\r\n dialog.show();\r\n\r\n $('.hotel-center-group-dialog-save').addClass('disabled');\r\n\r\n dialog.on('clickedButton', (name) => {\r\n if (name === 'confirm') {\r\n this._UpdateNameAsync(model).then(({ isSuccess, updatedName }) => {\r\n if (isSuccess) {\r\n helpers.updateView(this, { groupName: updatedName });\r\n this.trigger('selectionRenamed');\r\n\r\n dialog.remove();\r\n } else {\r\n $('.hotel-center-group-dialog-save').addClass('disabled');\r\n }\r\n });\r\n } else {\r\n dialog.remove();\r\n }\r\n });\r\n }\r\n\r\n onGroupDeleteMenuClicked() {\r\n this._hidePopup();\r\n\r\n const isUnDeletable = this.hotelCount && this.hotelCount > 0;\r\n const { isSubAccountSelected } = this.getState();\r\n const title = isSubAccountSelected ? i18n.getString('HotelCenter_SubAccount_Edit_Delete_Label_Format', this.getState().groupName) :\r\n i18n.getString('HotelCenter_Group_Edit_Delete_Label_Format', this.getState().groupName);\r\n const unDeletableDesc = isSubAccountSelected ? i18n.getString('HotelCenter_SubAccount_Not_Empty_Delete_Error_Message') : i18n.getString('HotelCenter_Group_Not_Empty_Delete_Error_Message');\r\n const inputContent = new EditControl({\r\n description: isUnDeletable ? unDeletableDesc : '',\r\n });\r\n\r\n this.showDeleteDialog({\r\n inputContent,\r\n title,\r\n isUnDeletable,\r\n });\r\n }\r\n\r\n showDeleteDialog({\r\n inputContent,\r\n title,\r\n isUnDeletable,\r\n }) {\r\n const dialog = new Dialog({ className: 'hotel-center-group-dialog' }).setContent(inputContent).setState({\r\n title,\r\n buttons: [{\r\n text: i18n.getString('HotelCenter_Group_Dialog_Confirm_Label'),\r\n name: 'confirm',\r\n class: `hotel-center-group-dialog-save${isUnDeletable ? ' disabled' : ''}`,\r\n }, {\r\n text: i18n.getString('HotelCenter_Group_Dialog_Cancel_Label'),\r\n name: 'cancel',\r\n class: 'dialog-cancel',\r\n }],\r\n });\r\n\r\n document.body.appendChild(dialog.el);\r\n dialog.show();\r\n\r\n dialog.on('clickedButton', (name) => {\r\n if (name === 'confirm') {\r\n this._deleteCurrentGroupAsync().then(({ isSuccess, errorCode }) => {\r\n if (isSuccess) {\r\n this.trigger('selectionDeleted');\r\n\r\n dialog.remove();\r\n } else {\r\n inputContent.setErrorMessage(errorCodeToStringMap[errorCode]);\r\n $('.hotel-center-group-dialog-save').addClass('disabled');\r\n }\r\n });\r\n } else {\r\n dialog.remove();\r\n }\r\n });\r\n }\r\n\r\n _UpdateNameAsync(model) {\r\n return model\r\n .save(['Name'], { patch: true })\r\n .then(() => {\r\n const updatedName = model.attributes.Name;\r\n\r\n return {\r\n isSuccess: true,\r\n updatedName,\r\n };\r\n })\r\n .catch((e) => {\r\n this.trigger('error', e);\r\n\r\n let errorCode = 'RenameFailed';\r\n\r\n if (e.body && e.body.value && e.body.value.length > 0) {\r\n errorCode = e.body.value[0].Code;\r\n }\r\n\r\n // Error is expecting an array to be set.\r\n model.errors.set('Name', [errorCodeToStringMap[errorCode]]);\r\n\r\n return {\r\n isSuccess: false,\r\n updatedName: '',\r\n };\r\n }).finally(() => {\r\n // TODO\r\n });\r\n }\r\n\r\n _deleteCurrentGroupAsync() {\r\n const { isSubAccountSelected } = this.getState();\r\n const modelToDelete = isSubAccountSelected ?\r\n this.getSubAccountModel() :\r\n this.getHotelGroupModel();\r\n\r\n return modelToDelete.destroy()\r\n .then(() => ({\r\n isSuccess: true,\r\n }))\r\n .catch((e) => {\r\n this.trigger('error', e);\r\n\r\n let errorCode = 'DeleteFailed';\r\n\r\n if (e.body && e.body.value && e.body.value.length > 0) {\r\n errorCode = e.body.value[0].Code;\r\n }\r\n\r\n return {\r\n isSuccess: false,\r\n errorCode,\r\n };\r\n }).finally(() => {\r\n // TODO\r\n });\r\n }\r\n\r\n _showPopup() {\r\n this.$('.light-dismissible').addClass('show');\r\n this.$('.light-dismissible').removeClass('hide');\r\n }\r\n\r\n _hidePopup() {\r\n this.$('.light-dismissible').addClass('hide');\r\n this.$('.light-dismissible').removeClass('show');\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport { OverridableToolbarView } from '@bingads-webui/toolbar';\r\nimport HotelOptionsBase from '../assignment-utils/hotel-options-base';\r\n\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\nconst state = globalContext.require('component/state/index');\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('component/i18n/loader!campaignui/feature/hotel-center');\r\n\r\nexport default class HotelOutGroupOptions extends HotelOptionsBase {\r\n constructor({\r\n onSearchInvoked,\r\n excludeGroupId,\r\n perfMarker,\r\n appConfig,\r\n isUINext = false,\r\n }) {\r\n super();\r\n\r\n this.name = 'HotelsOutGroupGrid';\r\n const AssociationEntity = jsdata.HotelAssociation;\r\n\r\n this.dataSource = {\r\n entity: jsdata.HotelAssociation,\r\n type: 'js-data',\r\n options: {\r\n cacheResponse: false,\r\n path: 'Travel/V1/',\r\n url: '/Customers(:advertisercustomer_id)/Accounts(:account_id)/Associations',\r\n },\r\n };\r\n\r\n if (isUINext) {\r\n this.scrolling.viewport = $('.hotel-associations__container');\r\n }\r\n\r\n this.filterToolbar = new OverridableToolbarView({\r\n toolbarId: _.uniqueId('grid-toolbar-'),\r\n items: [{\r\n type: 'search-box',\r\n id: 'hotel-out-search-filter',\r\n placeholder: i18n.getString('HotelCenter_Group_Search_Label'),\r\n onChange: searchTerm => onSearchInvoked(searchTerm),\r\n },\r\n ],\r\n }).render();\r\n\r\n $('.hotel-out-group__container .toolbar-container').append(this.filterToolbar.$el);\r\n\r\n // Empty default toolbar is still needed for dependency\r\n const gridToolbar = helpers.singleToolbar({\r\n items: [\r\n {\r\n type: 'selector',\r\n id: 'quick-filter',\r\n },\r\n ],\r\n });\r\n\r\n this.plugins.toolbar = gridToolbar;\r\n\r\n this.schema = AssociationEntity.schema;\r\n\r\n this.plugins.quickFilter = {\r\n items: [{\r\n key: 'exist',\r\n value: {\r\n query: {\r\n HotelGroupId: { $ne: excludeGroupId },\r\n },\r\n },\r\n }],\r\n };\r\n\r\n this.plugins.dateFilter = {\r\n isOdataActionSource: false,\r\n edm,\r\n state,\r\n addDateChangeListener: _.noop,\r\n };\r\n\r\n this.plugins.perfMarker = {\r\n marker: perfMarker,\r\n appConfig,\r\n };\r\n\r\n this.columns = [\r\n bingadsGridColumn({\r\n name: 'PartnerHotelId',\r\n title: 'HotelCenter_Overview_Grid_Hotel_Advertiser_Hotel_ID_Label',\r\n sortable: true,\r\n filterable: true,\r\n type: 'string',\r\n bodyClasses: ['truncated'],\r\n helpId: 'pop_BA_HotelAds_PartnerHotelID',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'HotelName',\r\n sortable: 'HotelName',\r\n type: 'string',\r\n bodyClasses: ['truncated'],\r\n title: this.i18n.getString('HotelCenter_Group_Hotel_Name_Label'),\r\n }), bingadsGridColumn({\r\n name: 'HotelGroupName',\r\n sortable: 'HotelGroupName',\r\n type: 'string',\r\n bodyClasses: ['truncated'],\r\n title: i18n.getString('HotelCenter_Group_Name_Label'),\r\n }), bingadsGridColumn({\r\n name: 'SubAccountName',\r\n sortable: 'SubAccountName',\r\n type: 'string',\r\n bodyClasses: ['truncated'],\r\n title: this.i18n.getString('HotelCenter_Group_SubAccount_Name_Label'),\r\n })];\r\n }\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n\r\nimport $ from 'jquery';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { dateFilterPlugin as newDateFilterPlugin } from '@bingads-webui-campaign/projection-grid-date-filter';\r\nimport HotelViewBase from '../assignment-utils/hotel-view-base';\r\nimport HotelOutGroupOptions from './grid-options';\r\nimport { initializeFilterAgent } from '../assignment-utils/filter-agent';\r\nimport { getFilterConfig } from '../assignment-utils/filter-config';\r\n\r\nconst appConfig = globalContext.require('component/config/index');\r\nconst i18n = globalContext.require('component/i18n/loader!campaignui/feature/hotel-center');\r\n\r\n/**\r\n * Class representing a navigation tabs for HotelOutGroupView\r\n * @extends View\r\n */\r\nexport default class HotelOutGroupView extends HotelViewBase {\r\n initialize({\r\n perfMarker,\r\n isUINext = false,\r\n preferenceStoreFactory,\r\n preferenceService,\r\n sessionStore,\r\n } = {}) {\r\n super.initialize();\r\n this.preferenceStoreFactory = preferenceStoreFactory;\r\n this.preferenceService = preferenceService;\r\n this.sessionStore = sessionStore;\r\n this.perfMarker = perfMarker;\r\n this.isUINext = isUINext;\r\n this.searchPropertyName = 'HotelName';\r\n }\r\n\r\n renderTrunk() {\r\n super.renderTrunk();\r\n\r\n if (this.gridFactory) {\r\n const gridOptions = new HotelOutGroupOptions({\r\n onSearchInvoked: searchTerm => this.onSearchInvoked(searchTerm),\r\n excludeGroupId: this.getState().excludeGroupId,\r\n perfMarker: this.perfMarker,\r\n appConfig,\r\n isUINext: this.isUINext,\r\n });\r\n this.filterToolbar = gridOptions.filterToolbar;\r\n\r\n this.grid = this.gridFactory\r\n .use(newDateFilterPlugin)\r\n .use(perfMarkerPlugin)\r\n .create(gridOptions);\r\n\r\n super.gridCreated();\r\n\r\n this.grid.gridView.on('didSelect', (selected) => {\r\n this.trigger('selectionChanged', selected);\r\n });\r\n\r\n // Cross page selection should be reset after grid reload\r\n this.grid.gridView.on('didReload', () => {\r\n this.grid.gridView.deselectAll();\r\n });\r\n\r\n initializeFilterAgent({\r\n filterConfig: getFilterConfig({\r\n schema: gridOptions.schema,\r\n i18n,\r\n featureName: 'HotelOutGroup',\r\n preferenceStoreFactory: this.preferenceStoreFactory,\r\n preferenceService: this.preferenceService && this.preferenceService.default,\r\n sessionStore: this.sessionStore,\r\n }),\r\n gridView: this.grid.gridView,\r\n tabView: this,\r\n toolbar: this.filterToolbar,\r\n });\r\n\r\n $('.hotel-out-group__container .grid-container').append(this.grid.gridView.render().$el);\r\n }\r\n }\r\n}\r\n","/* eslint-disable no-underscore-dangle, max-len */\r\n\r\nimport Promise from 'bluebird';\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { Dialog } from '@bingads-webui/dialog';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { bulkEditParams, bulkEditService } from '../hotel-center-service';\r\nimport HotelsInGroupView from '../hotel-in-group/hotel-in-group';\r\nimport HotelOutGroupOptions from '../hotel-out-group/hotel-out-group';\r\nimport template from './template.pug';\r\nimport InformationView from '../assignment-utils/Information-view';\r\n\r\n\r\nconst i18n = globalContext.require('component/i18n/loader!campaignui/feature/hotel-center');\r\nconst { getCustomUserInfos, setCustomUserInfos } = globalContext.require('component/bingads-grid/service/custom-userinfo-preferences');\r\nconst state = globalContext.require('component/state/index');\r\nconst pageContext = globalContext.require('PageContext');\r\nconst permissions = pageContext && pageContext.Permissions;\r\nconst project = 'CampaignUIHotelCenter';\r\n/**\r\n * Class representing a navigation tabs for HotelAssociations\r\n * @extends View\r\n */\r\nexport default class HotelAssociations extends DeterministicView {\r\n /**\r\n * Initializes HotelAssociations\r\n * @returns {undefined}\r\n */\r\n initialize({\r\n perfMarker,\r\n isUINext = false,\r\n preferenceStoreFactory,\r\n preferenceService,\r\n sessionStore,\r\n } = {}) {\r\n this.i18n = i18n;\r\n this.isUINext = isUINext;\r\n this.isHotelCenterDeprecation = permissions && permissions.dynamic.HotelCenterDeprecation;\r\n\r\n const hotelsInGroup = new HotelsInGroupView({\r\n perfMarker,\r\n isUINext,\r\n preferenceStoreFactory,\r\n preferenceService,\r\n sessionStore,\r\n });\r\n const hotelsOutGroup = new HotelOutGroupOptions({\r\n perfMarker,\r\n isUINext,\r\n preferenceStoreFactory,\r\n preferenceService,\r\n sessionStore,\r\n });\r\n\r\n this.listenTo(hotelsInGroup, 'selectionRenamed', this.onSelectionRenamed);\r\n this.listenTo(hotelsInGroup, 'selectionDeleted', this.onSelectionDeleted);\r\n this.listenTo(hotelsInGroup, 'selectionChanged', this.onHotelInGroupSelectionChanged);\r\n this.listenTo(hotelsOutGroup, 'selectionChanged', this.onHotelOutGroupSelectionChanged);\r\n\r\n this.setChild('hotels-in-group', hotelsInGroup);\r\n this.setChild('hotels-out-group', hotelsOutGroup);\r\n getCustomUserInfos(project).then((result) => {\r\n this.hasShowedAssociateAttention = result ? _.result(result, 'hasShowedAssociateAttention') : false;\r\n });\r\n this.model.set('noSubAccount', false);\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .associate-button': this.onAssociate,\r\n 'click .disassociate-button': this.onDisassociate,\r\n };\r\n }\r\n\r\n setState({\r\n selectedGroup,\r\n ungroupedGroupId,\r\n selectedSubAccount,\r\n isSubAccountSelected,\r\n noSubAccount,\r\n }) {\r\n if (noSubAccount) {\r\n this.model.set('noSubAccount', true);\r\n } else {\r\n this.isSubAccountSelected = isSubAccountSelected;\r\n // when subAccount is selected, set selectedGroup as ungrouped in the selected subAccount and set subAccount Id as null\r\n // when hotel group is selected, set subAccount Id as current selected hotel group subaccount\r\n // ungrouped GroupId will always set as current selected subAccount/hotelGroup related ungrouped group id\r\n this.selectedGroup = selectedGroup;\r\n // when ungrouped group is selected\r\n this.ungroupedGroupId = ungroupedGroupId === selectedGroup.Id ? '' : ungroupedGroupId;\r\n const isUnGrouped = selectedGroup.Name === 'UnGrouped' || selectedGroup.Name === 'Ungrouped';\r\n\r\n this.getChild('hotels-in-group').setState({\r\n groupId: selectedGroup.Id,\r\n groupName: isSubAccountSelected ? selectedSubAccount.Name : selectedGroup.Name,\r\n showEditMenu: isSubAccountSelected || !isUnGrouped,\r\n subAccountId: selectedSubAccount.Id,\r\n isSubAccountSelected,\r\n });\r\n this.getChild('hotels-in-group').setAssociationBarState({ statusMessage: '', errorMessage: '' });\r\n this.getChild('hotels-out-group').setState({\r\n groupId: selectedGroup.Id,\r\n groupName: i18n.getString('HotelCenter_Group_Others_Label'),\r\n excludeGroupId: selectedGroup.Id,\r\n showEditMenu: false,\r\n subAccountId: selectedSubAccount.Id,\r\n });\r\n\r\n this.model.set('isAssociationEnabled', false);\r\n this.model.set('isDisassociationEnabled', false);\r\n this.model.set('noSubAccount', false);\r\n }\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n onHotelInGroupSelectionChanged(selections) {\r\n this.model.set('isDisassociationEnabled', selections.length > 0);\r\n }\r\n\r\n onHotelOutGroupSelectionChanged(selections) {\r\n this.model.set('isAssociationEnabled', selections.length > 0);\r\n }\r\n\r\n _refreshAssociationButtonStates() {\r\n this.model.set(\r\n 'isDisassociationEnabled',\r\n this.getChild('hotels-in-group').getSelectedItems().length > 0\r\n );\r\n\r\n this.model.set(\r\n 'isAssociationEnabled',\r\n this.getChild('hotels-out-group').getSelectedItems().length > 0\r\n );\r\n }\r\n\r\n onAssociate() {\r\n if (this.isUINext && !this.model.get('isAssociationEnabled')) {\r\n return;\r\n }\r\n\r\n this.showAssociateAttention(() => this._makeAssociationCallAsync({\r\n selectionCount: this.getChild('hotels-out-group').getSelectionCount(),\r\n selectedIds: _.pluck(this.getChild('hotels-out-group').getSelectedItems(), 'HotelId'),\r\n idAttribute: 'HotelId',\r\n filter: this.getChild('hotels-out-group').getFilter(),\r\n hotelGroupId: this.selectedGroup.Id,\r\n }).then(() => {\r\n this.getChild('hotels-out-group').clearSelection();\r\n this._refreshAssociationButtonStates();\r\n this.trigger('associationChanged');\r\n }));\r\n }\r\n\r\n onDisassociate() {\r\n if (this.isUINext && !this.model.get('isDisassociationEnabled')) {\r\n return;\r\n }\r\n\r\n const selectionCount = this.getChild('hotels-in-group').getSelectionCount();\r\n const selectedIds = _.pluck(this.getChild('hotels-in-group').getSelectedItems(), 'Id');\r\n const isCrossPage = selectionCount > selectedIds.length;\r\n const options = {\r\n selectionCount,\r\n selectedIds,\r\n idAttribute: 'HotelId',\r\n filter: this.getChild('hotels-in-group').getFilter(),\r\n hotelGroupId: this.ungroupedGroupId ? this.ungroupedGroupId : null,\r\n };\r\n\r\n if (!this.isSubAccountSelected && this.selectedGroup && isCrossPage) {\r\n options.customStrFilter = `HotelGroupId eq '${this.selectedGroup.Id}'`;\r\n }\r\n\r\n this.showAssociateAttention(() => this._makeAssociationCallAsync(options).then(() => {\r\n this.getChild('hotels-in-group').clearSelection();\r\n this._refreshAssociationButtonStates();\r\n this.trigger('associationChanged');\r\n }));\r\n }\r\n\r\n onSelectionRenamed() {\r\n this.trigger('selectionModified', this.selectedGroup);\r\n }\r\n\r\n onSelectionDeleted() {\r\n this.trigger('selectionDeleted', this.selectedGroup);\r\n }\r\n\r\n showAssociateAttention(callback) {\r\n const isSubAccountLevel = state.get('subAccount_id') === '';\r\n\r\n if (isSubAccountLevel && !this.hasShowedAssociateAttention) {\r\n this._showAssociateAttentionDialog(callback);\r\n } else {\r\n callback();\r\n }\r\n }\r\n\r\n _showAssociateAttentionDialog(callback) {\r\n const attentionView = new InformationView({ name: 'attentionView' }).setState({\r\n content: i18n.getString('HotelCenter_Assignment_Associate_Attention_Dialog_Content'),\r\n isDismiss: false,\r\n });\r\n const dialog = new Dialog({ className: 'hotel-center-associate-attention-dialog' }).setContent(attentionView).setState({\r\n title: i18n.getString('HotelCenter_Assignment_Associate_Attention_Dialog_Title'),\r\n buttons: [{\r\n text: i18n.getString('HotelCenter_Shared_OK'),\r\n name: 'confirm',\r\n class: 'hotel-center-associate-attention-dialog-save',\r\n }, {\r\n text: i18n.getString('HotelCenter_Shared_Cancel'),\r\n name: 'cancel',\r\n class: 'dialog-cancel',\r\n }],\r\n });\r\n\r\n document.body.appendChild(dialog.el);\r\n dialog.show();\r\n\r\n dialog.on('clickedButton', (name) => {\r\n if (name === 'confirm') {\r\n if (attentionView.getState().isDismiss) {\r\n // write to preference setting and won't show again\r\n setCustomUserInfos({ hasShowedAssociateAttention: true }, project);\r\n this.hasShowedAssociateAttention = true;\r\n }\r\n dialog.remove();\r\n callback();\r\n } else {\r\n dialog.remove();\r\n }\r\n });\r\n }\r\n\r\n _makeAssociationCallAsync({\r\n selectionCount,\r\n selectedIds,\r\n idAttribute,\r\n filter,\r\n customStrFilter,\r\n hotelGroupId,\r\n }) {\r\n this.getChild('hotels-in-group').setAssociationBarState({\r\n statusMessage: i18n.getString('HotelCenter_Group_Association_Status_Saving'),\r\n errorMessage: '',\r\n });\r\n\r\n return new Promise((resolve, reject) => {\r\n bulkEditService.save({\r\n params: bulkEditParams({\r\n selectionCount,\r\n selectedIds,\r\n idAttribute,\r\n filter,\r\n customStrFilter,\r\n batchActions: {\r\n Actions: [{\r\n '@odata.type': '#Model.NumericAction',\r\n ActionType: 'SetToAmount',\r\n Limit: null,\r\n Value: hotelGroupId,\r\n Property: 'HotelGroupId',\r\n }],\r\n EditCopy: false,\r\n },\r\n entity: 'HotelAssociation',\r\n // bulk edit API uses field campaignId to pass subaccount id\r\n campaignId: Number(this.getChild('hotels-in-group').getState().subAccountId),\r\n }),\r\n completeCB: _.bind(resolve, this),\r\n failedCB: _.bind(reject, this),\r\n });\r\n }).then((response) => {\r\n this.getChild('hotels-out-group').refreshGrid();\r\n\r\n const hotelsInGroup = this.getChild('hotels-in-group');\r\n\r\n hotelsInGroup.refreshGrid();\r\n\r\n const errorCount = response.ErrorRowCount;\r\n // partial success\r\n\r\n if (errorCount > 0) {\r\n hotelsInGroup.setAssociationBarState({\r\n statusMessage: '',\r\n errorMessage: i18n.getString('HotelCenter_Group_Association_Failed_Format', errorCount, selectionCount),\r\n });\r\n } else {\r\n hotelsInGroup.setAssociationBarState({\r\n statusMessage: i18n.getString('HotelCenter_Group_Association_Status_Saved'),\r\n errorMessage: '',\r\n });\r\n }\r\n }).catch(() => {\r\n this.getChild('hotels-in-group').setAssociationBarState({\r\n statusMessage: '',\r\n errorMessage: i18n.getString('HotelCenter_Group_Association_Failed_Generic'),\r\n });\r\n }).finally(withUiBlock($('.hotel-associations__container')));\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { HotelGroup as schema } from '@bingads-webui/hotel-odata-schemas';\r\nimport { OverridableToolbarView } from '@bingads-webui/toolbar';\r\nimport { gridOptionUtils } from '../hotel-center-service';\r\nimport paginationTemplate from '../assignment-utils/custom-pagination-template.pug';\r\nimport nameTemplate from './grid-column-name.pug';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst { filterOptionsFromSchema } = globalContext.require('component/bingads-grid/shared/schema-util');\r\nconst state = globalContext.require('component/state/index');\r\n\r\nconst pageSizes = [10, 20];\r\nconst gridToolbar = new OverridableToolbarView({\r\n items: [{\r\n type: 'search-box',\r\n id: 'search-box-filter',\r\n }],\r\n toolbarId: _.uniqueId('grid-toolbar-'),\r\n}).render();\r\n\r\nconst filterConfig = {\r\n editor: {\r\n toolbar: gridToolbar,\r\n },\r\n searchBox: {\r\n field: 'Name',\r\n placeholder: i18n.getString('HotelCenter_Group_Search_Group_Label'),\r\n toolbar: gridToolbar,\r\n },\r\n};\r\n\r\n// dataSource post process\r\nfunction dataPostProcess(resources, attrs) {\r\n if (!_.isArray(attrs)) {\r\n return [];\r\n }\r\n const subAccountIds = [];\r\n const subAccountLists = [];\r\n\r\n _.each(attrs, (item) => {\r\n item.ParentId = item.SubAccountId; // eslint-disable-line no-param-reassign\r\n if (_.indexOf(subAccountIds, item.SubAccountId) === -1) {\r\n subAccountIds.push(item.SubAccountId);\r\n subAccountLists.push({\r\n Id: item.SubAccountId,\r\n Name: item.SubAccountName,\r\n ParentId: 0,\r\n });\r\n }\r\n });\r\n\r\n attrs.unshift(...subAccountLists);\r\n\r\n return attrs;\r\n}\r\n\r\n// column configuration\r\nconst formatGroupItem = (groupName, associationCount) => {\r\n const formatGroupItemString = i18n.getString('HotelCenter_Assignment_GroupList_Item_Format', {\r\n groupName,\r\n associationCount,\r\n });\r\n\r\n return formatGroupItemString;\r\n};\r\n\r\n// plugin configuration\r\nconst plugins = {\r\n pagination: {\r\n pageSize: 10,\r\n availablePageSizes: pageSizes,\r\n enableRandomPage: false,\r\n template: paginationTemplate,\r\n pageNumberLabelText: i18n.getString('Grid_Page_Colon'),\r\n pageSizeText: i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: i18n.getString('Grid_PageOf'),\r\n },\r\n uiBlocker: {\r\n el: $('.hotel-center-assignment__container'),\r\n },\r\n filter: filterConfig,\r\n filterState: {\r\n entity: filterOptionsFromSchema(schema),\r\n },\r\n dateFilter: {\r\n isComparisonEnabled: false,\r\n isCustomRangeEnabled: true,\r\n },\r\n tree: {\r\n toggleColumnName: 'Name',\r\n templateDecorator: celTemplate => ({ value }) => {\r\n const attributeText = value.Name.value;\r\n const isRoot = value.Name.SubAccountId === 0;\r\n\r\n return celTemplate(_.defaults({ i18n }, value.Name, {\r\n attributeText,\r\n isRoot,\r\n HotelAssociationCount: value.HotelAssociationCount,\r\n }));\r\n },\r\n },\r\n};\r\n\r\n// scrolling configuration\r\nconst scrolling = {\r\n virtualized: true,\r\n header: {\r\n type: 'sticky',\r\n offset() {\r\n return $('.hotel-groups-list-grid-toolbar').height();\r\n },\r\n },\r\n};\r\n\r\nexport default class GridOptions {\r\n constructor() {\r\n const entitySet = gridOptionUtils.getEntitySetByName('hotelGroup');\r\n const isSubAccountLevel = state.get('subAccount_id') === '';\r\n\r\n $('.hotel-groups-list-grid-toolbar').append(gridToolbar.$el);\r\n plugins.filterState.container = $('.hotel-groups-list-grid-filter-state');\r\n\r\n _.extend(this, {\r\n i18n,\r\n name: 'HotelGroupsListGrid',\r\n scrolling,\r\n dataSource: {\r\n resource: jsdata.HotelGroup,\r\n entity: jsdata.HotelGroup,\r\n type: 'js-data',\r\n options: _.extend(isSubAccountLevel ? { afterFindAll: dataPostProcess } : {}, {\r\n entitySet,\r\n cacheResponse: false,\r\n }),\r\n schema,\r\n query: {\r\n $select: isSubAccountLevel ? 'Id,Name,SubAccountName,SubAccountId,HotelAssociationCount' : 'Id,Name,HotelAssociationCount',\r\n },\r\n },\r\n selection: { enabled: true },\r\n rows: { headRows: 'column-header-rows' },\r\n plugins,\r\n columns: [bingadsGridColumn({\r\n name: 'Name',\r\n sortable: 'Name',\r\n type: 'string',\r\n bodyClasses: ['col-Name'],\r\n property: {\r\n get(hotelGroup) {\r\n return hotelGroup;\r\n },\r\n key: 'Name',\r\n },\r\n template: (local) => {\r\n if (isSubAccountLevel) {\r\n const item = _.pick(local, 'hasChildren', 'depth', 'isExpanded', 'isRoot', 'value', 'isRoot');\r\n // format the string for leaf node\r\n if (!item.hasChildren) {\r\n item.value = _.has(local, 'HotelAssociationCount') ? formatGroupItem(item.value, local.HotelAssociationCount) : '[deleted]';\r\n }\r\n return nameTemplate(_.extend({ i18n }, item));\r\n }\r\n const hotelGroup = local.value;\r\n return formatGroupItem(hotelGroup.Name, hotelGroup.HotelAssociationCount);\r\n },\r\n })],\r\n });\r\n }\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n\r\nimport $ from 'jquery';\r\nimport pgrid from 'projection-grid';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { Dialog } from '@bingads-webui/dialog';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { toolbarPlugin } from '@bingads-webui/projection-grid-toolbar';\r\nimport { treePlugin } from '@bingads-webui/projection-grid-tree';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport { gridOptionUtils } from '../hotel-center-service';\r\nimport { HotelGroupModel, dateFilterPlugin } from '../hotel-center-shared';\r\nimport EditControl from '../assignment-utils/edit-control';\r\nimport GridOptions from './grid-options';\r\nimport template from './template.pug';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst { DownloadViewV1 } = globalContext.require('campaignui/feature/griddownload/view/adapter');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst state = globalContext.require('component/state/index');\r\n\r\nconst ignoreServerPaginationPlugin = definePlugin => definePlugin('ignoreServerPaginationPlugin', [\r\n 'config',\r\n 'gridView',\r\n], (config, gridView) => {\r\n const { dataSource } = gridView;\r\n const originalQuery = dataSource.query;\r\n\r\n dataSource.query = params => originalQuery.call(dataSource, _.extend(_.omit(params, 'skip', 'take'), { take: Number.MAX_VALUE }));\r\n});\r\n\r\n/**\r\n * Class representing hotel group list part for hotel center assignment\r\n * @extends View\r\n */\r\nexport default class HotelGroups extends DeterministicView {\r\n /**\r\n * Initializes HotelGroups\r\n * @returns {undefined}\r\n */\r\n initialize() {\r\n this.i18n = i18n;\r\n this.HotelGroupModel = HotelGroupModel;\r\n\r\n this.errorCodeToStringMap = {\r\n CreateFailed: i18n.getString('HotelCenter_Group_Create_Failed_Generic_Error_Message'),\r\n SameValueAlreadyExist: i18n.getString('HotelCenter_Group_Name_Exists_Error_Message'),\r\n };\r\n this.fetchAssociations()\r\n .then((response) => {\r\n this.disableDownload(response.totalCount === 0);\r\n });\r\n this.isSubAccountLevel = state.get('subAccount_id');\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .create-button__container input': this.onShowCreateDialog,\r\n 'click .associations-download__container input': this.onDownloadAssociations,\r\n };\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n renderTrunk() {\r\n super.renderTrunk();\r\n\r\n this.gridOptions = new GridOptions();\r\n\r\n let gridFactory = pgrid.factory({ vnext: true })\r\n .use(toolbarPlugin)\r\n .use(dateFilterPlugin)\r\n .use(uiBlockerPlugin)\r\n .use(assistedSelectionPlugin);\r\n\r\n if (state.get('subAccount_id')) {\r\n gridFactory = gridFactory.use(paginationPlugin);\r\n } else {\r\n gridFactory = gridFactory.use(treePlugin)\r\n .use(ignoreServerPaginationPlugin);\r\n }\r\n this.grid = gridFactory.create(this.gridOptions);\r\n\r\n this.grid.gridView.on('didSelect', (selected) => {\r\n this.onSelected(selected);\r\n });\r\n\r\n this.grid.gridView.on('didUpdate', this.onGridUpdated, this);\r\n\r\n $('.hotel-groups-list-grid-container').append(this.grid.gridView.render().el);\r\n }\r\n\r\n refreshGrid() {\r\n this.grid.gridView.refresh(true);\r\n }\r\n\r\n fetchAssociations() {\r\n const odataOptions = {\r\n cacheResponse: false,\r\n url: gridOptionUtils.getUrlByName('associations'),\r\n };\r\n\r\n return jsdata.HotelAssociation.findAll({}, odataOptions);\r\n }\r\n\r\n disableDownload(disabled) {\r\n const hasDisabled = this.$('.associations-download__container .btn').hasClass('disabled');\r\n\r\n if (!hasDisabled && disabled) {\r\n this.$('.associations-download__container .btn').addClass('disabled');\r\n } else if (hasDisabled && !disabled) {\r\n this.$('.associations-download__container .btn').removeClass('disabled');\r\n }\r\n }\r\n\r\n onDownloadAssociations() {\r\n this.fetchAssociations()\r\n .then((response) => {\r\n if (response.totalCount === 0) {\r\n this.disableDownload(true);\r\n return;\r\n }\r\n const localizedHeaders = [\r\n i18n.getString('HotelCenter_Overview_Grid_Hotel_Advertiser_Hotel_ID_Label'),\r\n i18n.getString('HotelCenter_Group_Hotel_Name_Label'),\r\n i18n.getString('HotelCenter_Group_Name_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Shared_SubAccount_Name_Label'),\r\n ];\r\n const odataColumnNames = ['PartnerHotelId', 'HotelName', 'HotelGroupName', 'SubAccountName'];\r\n const downloadView = new DownloadViewV1({\r\n localizedHeaders,\r\n odataColumnNames,\r\n filterUrlParam: '',\r\n segmentationTypes: [],\r\n entity: 'HotelAssociation',\r\n gridId: 'HotelGroupAssociationsDownloadGrid',\r\n totalRecordCount: response.totalCount,\r\n processReportRule: ReportRule => _.defaults({\r\n Selection: _.defaults({\r\n CampaignId: state.get('subAccount_id') ? Number(state.get('subAccount_id')) : undefined,\r\n }, ReportRule.Selection),\r\n }, ReportRule),\r\n });\r\n\r\n downloadView.download();\r\n downloadView.remove();\r\n });\r\n }\r\n\r\n onShowCreateDialog() {\r\n const entitySet = edm.currentAccount\r\n .SubAccounts.$withKey(this.subAccountId.toString())\r\n .HotelGroups;\r\n const hotelGroupModel = new HotelGroupModel({ entitySet });\r\n\r\n const hotelNameInput = new EditControl({\r\n entity: hotelGroupModel,\r\n field: 'Name',\r\n description: i18n.getString('HotelCenter_Group_Create_Description'),\r\n });\r\n\r\n hotelGroupModel.errors.on('change:Name', (vm, error) => {\r\n if (_.isEmpty(error)) {\r\n $('.hotel-center-group-dialog-save').removeClass('disabled');\r\n } else {\r\n $('.hotel-center-group-dialog-save').addClass('disabled');\r\n }\r\n });\r\n\r\n const dialog = new Dialog({ className: 'hotel-center-group-dialog' }).setContent(hotelNameInput).setState({\r\n title: i18n.getString('HotelCenter_Group_Create_Title', this.getState().groupName),\r\n buttons: [{\r\n text: i18n.getString('HotelCenter_Shared_Create'),\r\n name: 'confirm',\r\n class: 'hotel-center-group-dialog-save',\r\n }, {\r\n text: i18n.getString('HotelCenter_Shared_Cancel'),\r\n name: 'cancel',\r\n class: 'dialog-cancel',\r\n }],\r\n });\r\n\r\n document.body.appendChild(dialog.el);\r\n dialog.show();\r\n $('.hotel-center-group-dialog-save').addClass('disabled');\r\n\r\n dialog.on('clickedButton', (name) => {\r\n if (name === 'confirm') {\r\n this._createHotelGroupAsync(hotelGroupModel).then((isSuccess) => {\r\n if (isSuccess) {\r\n dialog.remove();\r\n } else {\r\n $('.hotel-center-group-dialog-save').addClass('disabled');\r\n }\r\n });\r\n } else {\r\n dialog.remove();\r\n }\r\n });\r\n }\r\n\r\n _createHotelGroupAsync(hotelGroupModel) {\r\n return hotelGroupModel\r\n .save()\r\n .then((savedResult) => {\r\n const isSubAccountLevel = state.get('subAccount_id') === '';\r\n\r\n if (!isSubAccountLevel) {\r\n const { pageSize } = this.grid.pagination;\r\n const totalCount = this.grid.gridView.totalCountRows;\r\n const pageNumber = Math.floor(totalCount / pageSize);\r\n\r\n this.grid.pagination.pageNumber = pageNumber;\r\n }\r\n if (savedResult) {\r\n this.grid.gridView.selectRow([savedResult.value]);\r\n }\r\n this.grid.gridView.refresh(true);\r\n\r\n return true;\r\n })\r\n .catch((e) => {\r\n let errorCode = 'CreateFailed';\r\n\r\n if (e && e.body && e.body.value && e.body.value.length > 0) {\r\n errorCode = e.body.value[0].Code;\r\n }\r\n\r\n // Error is expecting an array to be set.\r\n hotelGroupModel.errors.set('Name', [this.errorCodeToStringMap[errorCode]]);\r\n\r\n return false;\r\n });\r\n }\r\n\r\n onGridUpdated() {\r\n const isSubAccountLevel = state.get('subAccount_id') === '';\r\n\r\n if (this.grid.gridView.selectedItems().length < 1 && this.grid.gridView.items.length > 0) {\r\n this.grid.gridView.selectRow(this.grid.gridView.items.slice(0, 1)[0].Id);\r\n } else if (isSubAccountLevel\r\n && this.grid.gridView.items.length === 0 && !this.grid.pagination) {\r\n // handle no subaccount\r\n this.trigger('noSubAccount');\r\n }\r\n // handle pagination change\r\n if (!isSubAccountLevel) {\r\n if (this.grid.gridView.items.length === 0 && _.result(this.grid.pagination, 'pageNumber') > 0) {\r\n this.grid.pagination.pageNumber = this.grid.pagination.pageNumber - 1;\r\n }\r\n }\r\n }\r\n\r\n onSelected(selected) {\r\n if (selected.length > 1) {\r\n // deselected all but the last one.\r\n _.each(selected.slice(0, selected.length - 1), (key) => {\r\n this.grid.gridView.deselectRow(key);\r\n });\r\n\r\n // select only the last one.\r\n this.grid.gridView.selectRow(selected[selected.length - 1]);\r\n }\r\n\r\n if (this.grid.gridView.selectedItems().length !== 0) {\r\n const selectedItem = this.grid.gridView.selectedItems()[0];\r\n\r\n if (this.selected !== selectedItem) {\r\n this.selected = selectedItem;\r\n if (this.selected.childrenKeys && this.selected.childrenKeys.length > 0) {\r\n // subaccount is selected\r\n const ungroupedGroup = this.grid.gridView\r\n .itemWithKey(_.first(this.selected.childrenKeys));\r\n\r\n this.subAccountId = this.selected.Id;\r\n this.trigger('selectionChanged', {\r\n selectedGroup: ungroupedGroup,\r\n selectedSubAccount: this.selected,\r\n isSubAccountSelected: true,\r\n ungroupedGroupId: '',\r\n });\r\n } else if (_.has(this.selected, 'childrenKeys')) {\r\n const parentNode = this.grid.gridView.itemWithKey(selectedItem.ParentId);\r\n const ungroupedGroup = this.grid.gridView.itemWithKey(_.first(parentNode.childrenKeys));\r\n\r\n this.subAccountId = parentNode.Id;\r\n this.trigger('selectionChanged', {\r\n selectedGroup: selectedItem,\r\n ungroupedGroupId: ungroupedGroup.Id,\r\n selectedSubAccount: parentNode,\r\n });\r\n } else {\r\n const ungroupedGroup = this.grid.gridView.items.slice(0, 1)[0];\r\n\r\n this.subAccountId = state.get('subAccount_id');\r\n this.trigger('selectionChanged', {\r\n selectedGroup: selectedItem,\r\n ungroupedGroupId: ungroupedGroup ? ungroupedGroup.Id : null,\r\n selectedSubAccount: { Id: this.subAccountId },\r\n });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport _ from 'underscore';\r\nimport { BaseView } from '@bingads-webui/base-view';\r\nimport { SubAccountHotelGroupEditPanel } from '@bingads-webui-campaign-react/subaccount-hotelgroup-selector';\r\n\r\nexport class SubAccountHotelGroupEditPanelView extends BaseView {\r\n initialize(options) {\r\n this.options = options;\r\n this.rootId = this.options.rootId || 'subaccount-hotelgroup-edit-panel-root';\r\n }\r\n\r\n render() {\r\n const props = {\r\n hotelGroups: this.options.hotelGroups || [],\r\n isSubAccountSelected: this.options.isSubAccountSelected || true,\r\n preSelectedKey: this.options.preSelectedKey,\r\n onSubAccountClick: this.options.onSubAccountClick || _.noop,\r\n onHotelGroupClick: this.options.onHotelGroupClick || _.noop,\r\n onCreateLinkClick: this.options.onCreateLinkClick || _.noop,\r\n onSearch: this.options.onSearch || _.noop,\r\n onSearchClear: this.options.onSearchClear || _.noop,\r\n onRenameSubaccountSubmit: this.options.onRenameSubaccountSubmit || _.noop,\r\n onDeleteSubaccountSubmit: this.options.onDeleteSubaccountSubmit || _.noop,\r\n onRenameHotelGroupSubmit: this.options.onRenameHotelGroupSubmit || _.noop,\r\n onDeleteHotelGroupSubmit: this.options.onDeleteHotelGroupSubmit || _.noop,\r\n i18n: this.options.i18n,\r\n };\r\n\r\n return React.createElement(SubAccountHotelGroupEditPanel, props, null);\r\n }\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(document.getElementById(this.rootId));\r\n\r\n return super.remove();\r\n }\r\n}\r\n","/* istanbul ignore next */\r\n/* eslint-disable no-underscore-dangle */\r\n\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport ReactDOM from 'react-dom';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { Dialog } from '@bingads-webui/dialog';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { gridOptionUtils } from '../hotel-center-service';\r\nimport {\r\n HotelGroupModel, SubAccountModel, lightDismissible,\r\n} from '../hotel-center-shared';\r\nimport { SubAccountHotelGroupEditPanelView } from './subaccount-hotelgroup-edit-panel-view';\r\nimport EditControl from '../assignment-utils/edit-control';\r\nimport HotelViewBase from '../assignment-utils/hotel-view-base';\r\nimport template from './template-uinext.pug';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst { DownloadViewV1 } = globalContext.require('campaignui/feature/griddownload/view/adapter');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst state = globalContext.require('component/state/index');\r\nconst pageContext = globalContext.require('PageContext');\r\nconst permissions = pageContext && pageContext.Permissions;\r\n\r\nlightDismissible();\r\n\r\nconst errorCodeToStringMap = {\r\n CreateFailed: i18n.getString('HotelCenter_Group_Create_Failed_Generic_Error_Message'),\r\n RenameFailed: i18n.getString('HotelCenter_Group_Rename_Failed_Generic_Error_Message'),\r\n DeleteFailed: i18n.getString('HotelCenter_Group_Delete_Failed_Generic_Error_Message'),\r\n SameValueAlreadyExist: i18n.getString('HotelCenter_Group_Name_Exists_Error_Message'),\r\n HotelGroupHasActiveAssociations: i18n.getString('HotelCenter_Group_Not_Empty_Delete_Error_Message'),\r\n GroupNotEmpty: i18n.getString('HotelCenter_Group_Not_Empty_Delete_Error_Message'),\r\n ValueTooLong: i18n.getString('Error_Campaign_API_ValueTooLong'),\r\n InternalError: i18n.getString('API_ErrorNumber_1011'),\r\n};\r\n\r\nconst defaultSelection = {\r\n Id: 'selectAllSubAccount',\r\n Name: i18n.getString('HotelCenter_Subheader_All_SubAccount_Label'),\r\n};\r\n\r\n/**\r\n * Class representing hotel group list part for hotel center assignment\r\n * @extends View\r\n */\r\nexport default class HotelGroups extends HotelViewBase {\r\n /**\r\n * Initializes HotelGroups\r\n * @param {Object} options - input parameters\r\n * @returns {undefined}\r\n */\r\n initialize(options = {}) {\r\n this.options = options;\r\n this.i18n = i18n;\r\n this.HotelGroupModel = HotelGroupModel;\r\n this.hotelGroups = [];\r\n this.isSubAccountSelected = true;\r\n this.isHotelCenterDeprecation = permissions && permissions.dynamic.HotelCenterDeprecation;\r\n this.subAccountId = state.get('subAccount_id') || defaultSelection.Id;\r\n this.editPanel = new SubAccountHotelGroupEditPanelView({\r\n hotelGroups: this.hotelGroups,\r\n isSubAccountSelected: this.isSubAccountSelected,\r\n preSelectedKey: this.subAccountId,\r\n onSubAccountClick: item => this.onSubAccountClick(item),\r\n onHotelGroupClick: item => this.onHotelGroupClick(item),\r\n onCreateLinkClick: () => this.onCreateSubAccountLinkClick(),\r\n onRenameSubaccountSubmit: item => this.onSubAccountRename(item),\r\n onDeleteSubaccountSubmit: item => this.onSubAccountDelete(item),\r\n onRenameHotelGroupSubmit: item => this.onHotelGroupRename(item),\r\n onDeleteHotelGroupSubmit: item => this.onHotelGroupDelete(item),\r\n i18n,\r\n });\r\n\r\n this.fetchAssociations()\r\n .then((response) => {\r\n this.disableDownload(response.totalCount === 0);\r\n });\r\n\r\n this.refreshHotelGroups();\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .create-button__container input': this.onShowCreateDialog,\r\n 'click .associations-download__container input': this.onDownloadAssociations,\r\n };\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n renderTrunk() {\r\n super.renderTrunk();\r\n }\r\n\r\n renderEditPanel() {\r\n const editPanelElement = this.editPanel.render();\r\n const panelRoot = document.getElementById('subaccount-hotelgroup-edit-panel-root');\r\n\r\n ReactDOM.unmountComponentAtNode(panelRoot);\r\n ReactDOM.render(\r\n editPanelElement,\r\n panelRoot\r\n );\r\n }\r\n\r\n refreshHotelGroups({\r\n resetSelection = true,\r\n loadState = true,\r\n query = '',\r\n } = {}) {\r\n this.fetchHotelGroups(query)\r\n .then((hotelGroups) => {\r\n this.refreshTreeDataSource(hotelGroups);\r\n if (resetSelection) {\r\n if (!hotelGroups || hotelGroups.length <= 0) {\r\n this.trigger('noSubAccount');\r\n } else {\r\n this.setDefaultSelection(loadState);\r\n }\r\n this.renderEditPanel();\r\n }\r\n }).finally(withUiBlock($('#hotel-center-assignment')));\r\n }\r\n\r\n refreshTreeDataSource(newHotelGroups) {\r\n this.hotelGroups.length = 0;\r\n _.each(newHotelGroups, item => this.hotelGroups.push(item));\r\n }\r\n\r\n getFirstSubaccount(hotelGroups) {\r\n const ungroup = _.find(\r\n hotelGroups,\r\n item => item.Name === 'Ungrouped'\r\n );\r\n\r\n return {\r\n SubAccount: {\r\n Id: ungroup.SubAccountId,\r\n Name: ungroup.SubAccountName,\r\n },\r\n Ungroup: {\r\n Id: ungroup.Id,\r\n Name: ungroup.Name,\r\n HotelAssociationCount: ungroup.HotelAssociationCount,\r\n },\r\n };\r\n }\r\n\r\n getSubaccountById(hotelGroups, subAccountId) {\r\n const group = _.find(\r\n hotelGroups,\r\n item => item.SubAccountId === subAccountId && item.Name === 'Ungrouped'\r\n );\r\n\r\n return group ? {\r\n Id: group.SubAccountId,\r\n Name: group.SubAccountName,\r\n UngroupId: group.Id,\r\n UngroupName: group.Name,\r\n HotelAssociationCount: group.HotelAssociationCount,\r\n } : null;\r\n }\r\n\r\n fetchAssociations() {\r\n const odataOptions = {\r\n cacheResponse: false,\r\n url: gridOptionUtils.getUrlByName('associations'),\r\n };\r\n\r\n return jsdata.HotelAssociation.findAll({}, odataOptions);\r\n }\r\n\r\n fetchHotelGroups(query = '') {\r\n const entitySet = edm.currentAccount.HotelGroups;\r\n const select = 'Id,Name,SubAccountName,SubAccountId,HotelAssociationCount';\r\n // if no $top limit passed in, a default $top=20 will be appended to query\r\n // so we passed the limit for MT allowed max\r\n // if exceed, an 400 error will return with code: InvalidQuery\r\n // and error message: The limit of '5000' for Top query has been exceeded\r\n const max = 5000;\r\n const queryOption = {\r\n $select: select,\r\n $top: max,\r\n };\r\n\r\n if (!_.isEmpty(query)) {\r\n queryOption.$filter = `contains(Name,'${query}')`;\r\n }\r\n\r\n return jsdata.HotelGroup.findAll({\r\n query: queryOption,\r\n }, {\r\n entitySet,\r\n cacheResponse: false,\r\n });\r\n }\r\n\r\n disableDownload(disabled) {\r\n const hasDisabled = this.$('.associations-download__container .btn').hasClass('disabled');\r\n\r\n if (!hasDisabled && disabled) {\r\n this.$('.associations-download__container .btn').addClass('disabled');\r\n } else if (hasDisabled && !disabled) {\r\n this.$('.associations-download__container .btn').removeClass('disabled');\r\n }\r\n }\r\n\r\n onDownloadAssociations() {\r\n this.fetchAssociations()\r\n .then((response) => {\r\n if (response.totalCount === 0) {\r\n this.disableDownload(true);\r\n this._showError(i18n.getString('HotelCenter_Group_Has_No_Association_Error_Message'));\r\n return;\r\n }\r\n const localizedHeaders = [\r\n i18n.getString('HotelCenter_Overview_Grid_Hotel_Advertiser_Hotel_ID_Label'),\r\n i18n.getString('HotelCenter_Group_Hotel_Name_Label'),\r\n i18n.getString('HotelCenter_Group_Name_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Shared_SubAccount_Name_Label'),\r\n ];\r\n const odataColumnNames = ['PartnerHotelId', 'HotelName', 'HotelGroupName', 'SubAccountName'];\r\n const downloadView = new DownloadViewV1({\r\n localizedHeaders,\r\n odataColumnNames,\r\n filterUrlParam: '',\r\n segmentationTypes: [],\r\n entity: 'HotelAssociation',\r\n gridId: 'HotelGroupAssociationsDownloadGrid',\r\n totalRecordCount: response.totalCount,\r\n processReportRule: ReportRule => _.defaults({\r\n Selection: _.defaults({\r\n CampaignId: Number(this.selectedSubAccount.Id),\r\n }, ReportRule.Selection),\r\n }, ReportRule),\r\n });\r\n\r\n downloadView.download();\r\n downloadView.remove();\r\n });\r\n }\r\n\r\n onShowCreateDialog() {\r\n const entitySet = edm.currentAccount\r\n .SubAccounts.$withKey(this.selectedSubAccount.Id)\r\n .HotelGroups;\r\n const hotelGroupModel = new HotelGroupModel({ entitySet });\r\n\r\n const hotelNameInput = new EditControl({\r\n entity: hotelGroupModel,\r\n field: 'Name',\r\n description: i18n.getString('HotelCenter_Group_Create_Description'),\r\n });\r\n\r\n hotelGroupModel.errors.on('change:Name', (vm, error) => {\r\n if (_.isEmpty(error)) {\r\n $('.hotel-center-group-dialog-save').removeClass('disabled');\r\n } else {\r\n $('.hotel-center-group-dialog-save').addClass('disabled');\r\n }\r\n });\r\n\r\n const dialog = new Dialog({ className: 'hotel-center-group-dialog' }).setContent(hotelNameInput).setState({\r\n title: i18n.getString('HotelCenter_Group_Create_Title', this.getState().groupName),\r\n buttons: [{\r\n text: i18n.getString('HotelCenter_Shared_Create'),\r\n name: 'confirm',\r\n class: 'hotel-center-group-dialog-save',\r\n }, {\r\n text: i18n.getString('HotelCenter_Shared_Cancel'),\r\n name: 'cancel',\r\n class: 'dialog-cancel',\r\n }],\r\n });\r\n\r\n document.body.appendChild(dialog.el);\r\n dialog.show();\r\n $('.hotel-center-group-dialog-save').addClass('disabled');\r\n $('.hotel-center-group-dialog .close').focus();\r\n\r\n dialog.on('clickedButton', (name) => {\r\n const isbuttonDisabled = $('.hotel-center-group-dialog-save').hasClass('disabled');\r\n if (name === 'confirm') {\r\n if (!isbuttonDisabled) {\r\n this._createHotelGroupAsync(hotelGroupModel).then((isSuccess) => {\r\n if (isSuccess) {\r\n dialog.remove();\r\n $('.create-hotel-group-button').focus();\r\n } else {\r\n $('.hotel-center-group-dialog-save').addClass('disabled');\r\n }\r\n });\r\n }\r\n } else {\r\n dialog.remove();\r\n $('.create-hotel-group-button').focus();\r\n }\r\n });\r\n }\r\n\r\n _createHotelGroupAsync(hotelGroupModel) {\r\n return hotelGroupModel\r\n .save()\r\n .then(() => {\r\n this.refreshHotelGroups({ resetSelection: false, loadState: false });\r\n this._showInfo(i18n.getString('Page_Pricing_ChangesSaved'));\r\n return true;\r\n })\r\n .catch((e) => {\r\n let errorCode = 'CreateFailed';\r\n\r\n if (e && e.body && e.body.value && e.body.value.length > 0) {\r\n errorCode = e.body.value[0].Code;\r\n }\r\n\r\n this._handleModelError(errorCode, hotelGroupModel);\r\n\r\n return false;\r\n });\r\n }\r\n\r\n _handleModelError(errorCode, model) {\r\n const errorMsg = errorCodeToStringMap[errorCode];\r\n\r\n // Error is expecting an array to be set.\r\n model.errors.set('Name', [errorMsg]);\r\n this._showError(errorMsg);\r\n }\r\n\r\n _showError(message) {\r\n const { alertCenter } = window.App.views;\r\n\r\n if (alertCenter && _.isFunction(alertCenter.showError)) {\r\n alertCenter.showError(message);\r\n }\r\n }\r\n\r\n _showInfo(message) {\r\n const { alertCenter } = window.App.views;\r\n\r\n if (alertCenter && _.isFunction(alertCenter.showInfo)) {\r\n alertCenter.showInfo(message);\r\n }\r\n }\r\n\r\n getHotelGroupModel(subAccountId, groupId) {\r\n const entitySet = edm.currentAccount\r\n .SubAccounts.$withKey(subAccountId.toString())\r\n .HotelGroups;\r\n\r\n return new HotelGroupModel({\r\n Id: groupId,\r\n entitySet,\r\n });\r\n }\r\n\r\n getSubAccountModel(subAccountId) {\r\n const entitySet = edm.currentAccount.SubAccounts;\r\n\r\n return new SubAccountModel({\r\n Id: subAccountId,\r\n entitySet,\r\n });\r\n }\r\n\r\n _UpdateNameAsync(model) {\r\n return model\r\n .save(['Name'], { patch: true })\r\n .then(() => {\r\n const updatedName = model.attributes.Name;\r\n\r\n return {\r\n isSuccess: true,\r\n updatedName,\r\n };\r\n })\r\n .catch((e) => {\r\n this.trigger('error', e);\r\n\r\n let errorCode = 'RenameFailed';\r\n\r\n if (e.body && e.body.value && e.body.value.length > 0) {\r\n errorCode = e.body.value[0].Code;\r\n }\r\n\r\n this._handleModelError(errorCode, model);\r\n this.refreshHotelGroups();\r\n\r\n return {\r\n isSuccess: false,\r\n updatedName: '',\r\n };\r\n }).finally(() => {\r\n // TODO\r\n });\r\n }\r\n\r\n _deleteCurrentGroupAsync(model) {\r\n return model.destroy()\r\n .then(() => ({\r\n isSuccess: true,\r\n }))\r\n .catch((e) => {\r\n this.trigger('error', e);\r\n\r\n let errorCode = 'DeleteFailed';\r\n\r\n if (e.body && e.body.value && e.body.value.length > 0) {\r\n errorCode = e.body.value[0].Code;\r\n }\r\n\r\n this._handleModelError(errorCode, model);\r\n\r\n return {\r\n isSuccess: false,\r\n errorCode,\r\n };\r\n }).finally(() => {\r\n // TODO\r\n });\r\n }\r\n\r\n setDefaultSelection(loadState = true) {\r\n const defaultSubAccount = this.getFirstSubaccount(this.hotelGroups);\r\n const stateSubAccountId = state.get('subAccount_id');\r\n const subAccount = !_.isEmpty(stateSubAccountId) ?\r\n this.getSubaccountById(this.hotelGroups, this.subAccountId) :\r\n null;\r\n\r\n this.isSubAccountSelected = true;\r\n\r\n if (loadState && !_.isEmpty(stateSubAccountId) && subAccount) {\r\n this.subAccountId = subAccount.Id;\r\n this.selectedSubAccount = {\r\n Id: subAccount.Id,\r\n Name: subAccount.Name,\r\n };\r\n this.selectedGroup = {\r\n Id: subAccount.UngroupId,\r\n Name: subAccount.UngroupName,\r\n ParentId: subAccount.Id,\r\n SubAccountId: subAccount.Id,\r\n SubAccountName: subAccount.Name,\r\n HotelAssociationCount: subAccount.HotelAssociationCount,\r\n };\r\n } else {\r\n this.subAccountId = defaultSubAccount.Id;\r\n this.selectedSubAccount = {\r\n Id: defaultSubAccount.SubAccount.Id,\r\n Name: defaultSubAccount.SubAccount.Name,\r\n ParentId: 0,\r\n childrenKeys: [],\r\n };\r\n this.selectedGroup = {\r\n Id: defaultSubAccount.Ungroup.Id,\r\n Name: defaultSubAccount.Ungroup.Name,\r\n ParentId: defaultSubAccount.SubAccount.Id,\r\n SubAccountId: defaultSubAccount.SubAccount.Id,\r\n SubAccountName: defaultSubAccount.SubAccount.Name,\r\n HotelAssociationCount: defaultSubAccount.Ungroup.HotelAssociationCount,\r\n };\r\n }\r\n state.set('subAccount_id', '');\r\n\r\n this.trigger('selectionChanged', {\r\n selectedGroup: this.selectedGroup,\r\n selectedSubAccount: this.selectedSubAccount,\r\n isSubAccountSelected: true,\r\n ungroupedGroupId: this.selectedGroup.Id,\r\n });\r\n }\r\n\r\n onSubAccountClick(subaccount) {\r\n if (this.hotelGroups.length <= 0) {\r\n this.subAccountId = '';\r\n this.trigger('noSubAccount');\r\n return;\r\n }\r\n\r\n if (subaccount.Id === 'selectAllSubAccount') {\r\n this.setDefaultSelection();\r\n return;\r\n }\r\n\r\n this.isSubAccountSelected = true;\r\n this.subAccountId = subaccount.Id;\r\n this.selectedGroup = {\r\n Id: subaccount.SelectedGroupId,\r\n Name: subaccount.SelectedGroupName,\r\n ParentId: subaccount.Id,\r\n SubAccountId: subaccount.Id,\r\n SubAccountName: subaccount.Name,\r\n HotelAssociationCount: subaccount.SelectedGroupAssociationCount,\r\n };\r\n this.selectedSubAccount = {\r\n Id: subaccount.Id,\r\n Name: subaccount.Name,\r\n ParentId: 0,\r\n childrenKeys: subaccount.ChildrenKeys,\r\n };\r\n\r\n state.set('subAccount_id', subaccount.Id);\r\n\r\n this.trigger('selectionChanged', {\r\n selectedGroup: this.selectedGroup,\r\n selectedSubAccount: this.selectedSubAccount,\r\n isSubAccountSelected: true,\r\n ungroupedGroupId: subaccount.UngroupChildId,\r\n });\r\n this.fetchAssociations().then((response) => {\r\n this.disableDownload(response.totalCount === 0);\r\n });\r\n }\r\n\r\n onHotelGroupClick(hotelGroup) {\r\n this.isSubAccountSelected = false;\r\n this.subAccountId = hotelGroup.ParentId;\r\n this.selectedGroup = {\r\n Id: hotelGroup.Id,\r\n Name: hotelGroup.Name,\r\n ParentId: hotelGroup.ParentId,\r\n };\r\n this.selectedSubAccount = {\r\n Id: hotelGroup.ParentId,\r\n childrenKeys: hotelGroup.SiblingKeys,\r\n };\r\n\r\n state.set('subAccount_id', hotelGroup.ParentId);\r\n\r\n this.trigger('selectionChanged', {\r\n selectedGroup: this.selectedGroup,\r\n selectedSubAccount: this.selectedSubAccount,\r\n isSubAccountSelected: false,\r\n ungroupedGroupId: hotelGroup.SiblingUngroup,\r\n });\r\n }\r\n\r\n onCreateSubAccountLinkClick() {\r\n if (this.options && this.options.router && _.isFunction(this.options.router.navigateToSetup)) {\r\n this.options.router.navigateToSetup();\r\n }\r\n }\r\n\r\n onSubAccountRename(subAccount) {\r\n const model = this.getSubAccountModel(subAccount.Id);\r\n model.set('Name', subAccount.NewName);\r\n this._UpdateNameAsync(model).bind(this).then(({ isSuccess }) => {\r\n if (isSuccess) {\r\n this.refreshHotelGroups({ resetSelection: false, loadState: false });\r\n this.isSubAccountSelected = true;\r\n this.selectedSubAccount.Name = subAccount.NewName;\r\n this.trigger('selectionChanged', {\r\n selectedGroup: this.selectedGroup,\r\n selectedSubAccount: this.selectedSubAccount,\r\n isSubAccountSelected: true,\r\n });\r\n }\r\n });\r\n }\r\n\r\n onSubAccountDelete(subAccount) {\r\n const model = this.getSubAccountModel(subAccount.Id);\r\n this._deleteCurrentGroupAsync(model).bind(this).then(({ isSuccess }) => {\r\n if (isSuccess) {\r\n this.refreshHotelGroups();\r\n }\r\n });\r\n }\r\n\r\n onHotelGroupRename(hotelGroup) {\r\n const model = this.getHotelGroupModel(this.selectedSubAccount.Id, hotelGroup.Id);\r\n model.set('Name', hotelGroup.NewName);\r\n this._UpdateNameAsync(model).bind(this).then(({ isSuccess }) => {\r\n if (isSuccess) {\r\n this.refreshHotelGroups({ resetSelection: false, loadState: false });\r\n this.isSubAccountSelected = false;\r\n this.selectedGroup.Name = hotelGroup.NewName;\r\n this.trigger('selectionChanged', {\r\n selectedGroup: this.selectedGroup,\r\n selectedSubAccount: this.selectedSubAccount,\r\n isSubAccountSelected: false,\r\n });\r\n }\r\n });\r\n }\r\n\r\n onHotelGroupDelete(hotelGroup) {\r\n const model = this.getHotelGroupModel(this.selectedSubAccount.Id, hotelGroup.Id);\r\n this._deleteCurrentGroupAsync(model).bind(this).then(({ isSuccess }) => {\r\n if (isSuccess) {\r\n this.refreshHotelGroups();\r\n }\r\n });\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport HotelAssociations from './hotel-associations/hotel-associations';\r\nimport template from './hotel-center-assignment-template.pug';\r\nimport HotelGroups from './hotel-groups/hotel-groups';\r\nimport HotelGroupsUINext from './hotel-groups/hotel-groups-uinext';\r\nimport CustomFilterView from './assignment-utils/custom-filter-view';\r\nimport EditControl from './assignment-utils/edit-control';\r\nimport InformationView from './assignment-utils/Information-view';\r\nimport HotelsInGroupView from './hotel-in-group/hotel-in-group';\r\nimport HotelsOutGroupView from './hotel-out-group/hotel-out-group';\r\nimport HotelViewBase from './assignment-utils/hotel-view-base';\r\n\r\nexport {\r\n CustomFilterView,\r\n EditControl,\r\n InformationView,\r\n HotelsInGroupView,\r\n HotelsOutGroupView,\r\n HotelGroups,\r\n HotelGroupsUINext,\r\n HotelAssociations,\r\n HotelViewBase,\r\n};\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n/**\r\n * Class representing a navigation tabs for HotelCenter Assignment\r\n * @extends View\r\n */\r\nexport class HotelCenterAssignment extends DeterministicView {\r\n /**\r\n * Initializes HotelCenterAssignment\r\n * @returns {undefined}\r\n */\r\n initialize({\r\n isUINext = false,\r\n router,\r\n perfMarker,\r\n preferenceStoreFactory,\r\n preferenceService,\r\n sessionStore,\r\n } = {}) {\r\n this.i18n = i18n;\r\n this.isUINext = isUINext;\r\n\r\n this.hotelGroups = new HotelGroupsUINext({ router, perfMarker });\r\n const hotelAssociations = new HotelAssociations({\r\n perfMarker,\r\n isUINext,\r\n preferenceStoreFactory,\r\n preferenceService,\r\n sessionStore,\r\n });\r\n\r\n this.listenTo(this.hotelGroups, 'selectionChanged', ({\r\n selectedGroup,\r\n ungroupedGroupId,\r\n selectedSubAccount,\r\n isSubAccountSelected,\r\n }) => {\r\n this.getChild('hotel-associations').setState({\r\n selectedGroup,\r\n ungroupedGroupId,\r\n selectedSubAccount,\r\n isSubAccountSelected,\r\n });\r\n this.isSubAccountSelected = isSubAccountSelected;\r\n });\r\n\r\n this.listenTo(this.hotelGroups, 'noSubAccount', () => this.getChild('hotel-associations').setState({ noSubAccount: true }));\r\n\r\n this.listenTo(hotelAssociations, 'selectionModified', () => this.onGroupModified(this.isSubAccountSelected));\r\n this.listenTo(hotelAssociations, 'selectionDeleted', () => this.onGroupModified(this.isSubAccountSelected));\r\n this.listenTo(hotelAssociations, 'associationChanged', this.onGroupModified);\r\n\r\n this.setChild('hotel-groups', this.hotelGroups);\r\n this.setChild('hotel-associations', hotelAssociations);\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n onGroupModified(updateTitleBar) {\r\n this.hotelGroups.refreshHotelGroups({ resetSelection: false, loadState: false });\r\n this.hotelGroups.fetchAssociations().then((response) => {\r\n this.hotelGroups.disableDownload(response.totalCount === 0);\r\n });\r\n if (updateTitleBar) {\r\n this.trigger('modify:subAccount');\r\n }\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\n\r\nexport const HotelCenterIntelligence = globalContext.define(\r\n [\r\n 'PageContext',\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center',\r\n 'campaignui/feature/hotel-center-edm/index',\r\n 'campaignui/feature/hotel-center-js-data/index',\r\n 'campaignui/feature/griddownload/view/adapter',\r\n 'component/azure-upload/index',\r\n 'component/bingads-grid/shared/column',\r\n 'component/toast/index',\r\n 'campaignui/feature/hotel-center-ad-extensions/callout/callout-adextension-associations-view',\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared',\r\n 'component/state/index',\r\n 'component/bingads-grid/service/date-filter-preferences',\r\n 'component/bingads-grid/service/segmentation-preferences',\r\n 'component/preference/service/index',\r\n 'component/edm-campaign/customeridtype',\r\n 'component/config/index',\r\n ],\r\n Promise => import(/* webpackMode: 'eager' */ './src/hotel-center-intelligence') // eslint-disable-line no-unused-vars\r\n);\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\nconst treeBarsData = {\r\n children: [{\r\n id: 1,\r\n text: i18n.getString('HotelCenter_Intelligence_Feeds_Title'),\r\n name: 'Feeds',\r\n hasChildren: true,\r\n children: [{\r\n id: 1,\r\n text: i18n.getString('HotelCenter_Intelligence_FeedUpload_Title'),\r\n name: 'Feed Upload',\r\n hasChildren: false,\r\n }, {\r\n id: 2,\r\n text: i18n.getString('HotelCenter_Intelligence_MatchingReport_Title'),\r\n name: 'Matching Report',\r\n hasChildren: false,\r\n }, {\r\n id: 3,\r\n text: i18n.getString('HotelCenter_Intelligence_FeedStatus_Title'),\r\n name: 'Feed Status',\r\n hasChildren: false,\r\n }],\r\n }, {\r\n id: 2,\r\n text: i18n.getString('HotelCenter_SOV_Report_Title'),\r\n name: 'SOV Report',\r\n hasChildren: false,\r\n }],\r\n};\r\n\r\nconst bookingMenu = {\r\n id: 3,\r\n text: i18n.getString('HotelCenter_Booking_Report_Title'),\r\n name: 'Booking Report',\r\n hasChildren: false,\r\n};\r\n\r\ntreeBarsData.children.push(bookingMenu);\r\n\r\nconst menu = {\r\n id: 4,\r\n text: i18n.getString('HotelCenter_Intelligence_AdExtensions_Title'),\r\n name: 'Ad Extensions',\r\n hasChildren: true,\r\n children: [{\r\n id: 1,\r\n text: i18n.getString('HotelCenter_Intelligence_CalloutExtensions_Title'),\r\n name: 'Callout Extensions',\r\n hasChildren: false,\r\n }],\r\n};\r\n\r\ntreeBarsData.children.push(menu);\r\n\r\nexport function getList() {\r\n return treeBarsData;\r\n}\r\n\r\nexport function getViewNameById(sectionIndex) {\r\n return _.reduce(\r\n sectionIndex, (memo, index) => memo.result('children')\r\n .findWhere({ id: index }),\r\n _.chain(treeBarsData)\r\n )\r\n .result('name')\r\n .value();\r\n}\r\n\r\n","import _ from 'underscore';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { AccessibleTreeview } from '@bingads-webui/accessible-treeview';\r\nimport { getList, getViewNameById } from './intelligence-sub-sections';\r\nimport template from './intelligence-tree-bars-template.pug';\r\n\r\nexport default class UtilitesTreeBars extends DeterministicView {\r\n initialize() {\r\n this.treeView = new AccessibleTreeview({\r\n nodeTemplate: template,\r\n });\r\n this.keyHierarchy = [1, 1];\r\n this.treeView.on('selected', (keyHierarchy) => {\r\n const [groupIndex, subSectionIndex] = keyHierarchy;\r\n const index = _.isUndefined(groupIndex) ? [] : [groupIndex];\r\n\r\n if (!_.isUndefined(subSectionIndex)) {\r\n index.push(subSectionIndex);\r\n }\r\n\r\n if (index.length > 0) {\r\n this.trigger('selected', { name: getViewNameById(index) });\r\n }\r\n this.keyHierarchy = keyHierarchy;\r\n });\r\n }\r\n\r\n renderTrunk() {\r\n super.renderTrunk();\r\n this.$el.html(this.treeView.render().el);\r\n this.treeView.update({ rootNode: getList() });\r\n this.treeView.select({ keyHierarchy: this.keyHierarchy });\r\n\r\n return this;\r\n }\r\n}\r\n","import { getHotelCenterUtils } from '@bingads-webui-campaign/hotel-center-utils';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst pageContext = globalContext.require('PageContext');\r\n\r\nexport const {\r\n inlineDownloadUtils,\r\n dateUtils,\r\n} = getHotelCenterUtils({ pageContext });\r\n","/* eslint-disable max-len */\r\n\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { withoutTime } from '@bingads-webui/primitive-utilities';\r\nimport { fromLegacyTimeZone, toIANATimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport downloadTemplate from './download-template.pug';\r\nimport { dateUtils } from '../../hotel-center-utils';\r\n\r\nconst pageContext = globalContext.require('PageContext');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst { showError } = globalContext.require('component/toast/index');\r\n\r\nconst statusEnumMap = {\r\n WARNINGS: 'HotelCenter_Intelligence_FeedStatus_Grid_Status_Enum_Warning',\r\n PENDING: 'HotelCenter_Intelligence_FeedStatus_Grid_Status_Enum_Pending',\r\n FAILURE: 'HotelCenter_Intelligence_FeedStatus_Grid_Status_Enum_Error',\r\n SUCCESS: 'HotelCenter_Intelligence_FeedStatus_Grid_Status_Enum_Success',\r\n};\r\n\r\nexport default class GridConfig {\r\n constructor({\r\n i18n,\r\n dateFilterContainer,\r\n }) {\r\n this.i18n = i18n;\r\n this.name = 'HotelCenterFeedStatusGrid';\r\n const minDate = withoutTime(dateUtils.local2account(new Date()));\r\n\r\n minDate.setDate(minDate.getDate() - 29);\r\n\r\n this.tableClasses = ['table', 'table-bordered'];\r\n this.scrolling = {\r\n virtualized: true,\r\n viewport: window,\r\n header: {\r\n type: 'sticky',\r\n offset() {\r\n return $('.navbar-fixed-top').height();\r\n },\r\n },\r\n };\r\n const entitySet = edm.currentCustomer.Feeds;\r\n const includeRanges = ['custom', 'customTime', 'today', 'yesterday', 'thisWeekSunday', 'thisWeekMonday', 'lastSevenDays', 'lastWeekSunday', 'lastWeekMonday', 'lastFourteenDays', 'last30Days'];\r\n\r\n this.dataSource = {\r\n type: 'js-data',\r\n resource: jsdata.TravelFeed,\r\n entity: jsdata.TravelFeed,\r\n primaryKey: 'Id',\r\n options: {\r\n entitySet,\r\n cacheResponse: false,\r\n afterFindAll: (resources, attrs) => {\r\n if (_.isArray(attrs)) {\r\n return attrs;\r\n }\r\n showError(i18n.getString('GenericErrorMessage'));\r\n return [];\r\n },\r\n },\r\n query: {\r\n // generate startdatetime from date picker\r\n // hard code feedtype here since we only support one type\r\n $filter: 'FeedType eq \\'transaction\\'',\r\n },\r\n };\r\n\r\n this.columns = [bingadsGridColumn({\r\n name: 'TimeStamp',\r\n property: 'TimeStamp',\r\n template: (local) => {\r\n if (_.isEmpty(local.value)) {\r\n return '';\r\n }\r\n\r\n return i18n.formatDate(new Date(local.value), {\r\n datetime: 'full',\r\n timeZone: toIANATimeZone(fromLegacyTimeZone(pageContext.AccountTimeZone)),\r\n });\r\n },\r\n title: this.i18n.getString('HotelCenter_Intelligence_FeedStatus_Grid_TimeStamp_Label'),\r\n sortable: true,\r\n }), bingadsGridColumn({\r\n name: 'FeedType',\r\n property: 'FeedType',\r\n title: 'HotelCenter_Intelligence_FeedStatus_Grid_FeedType_Label',\r\n helpId: 'Pop_BA_HotelAds_FileType',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'Status',\r\n property: 'Status',\r\n title: 'HotelCenter_Intelligence_FeedStatus_Grid_Status_Label',\r\n helpId: 'Pop_BA_HotelAds_Status',\r\n template: (local) => {\r\n /* istanbul ignore next */\r\n const localizedStatusText = statusEnumMap[local.value] ? this.i18n.getString(statusEnumMap[local.value]) : local.value;\r\n return localizedStatusText;\r\n },\r\n sortable: true,\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'ReportUrl',\r\n property: 'Status',\r\n template: local => downloadTemplate({\r\n isDisabled: local.value === 'PENDING',\r\n displayText: this.i18n.getString('HotelCenter_Intelligence_FeedStatus_Download_Button'),\r\n }),\r\n title: 'HotelCenter_Intelligence_FeedStatus_Grid_ReportUrl_Label',\r\n helpId: 'Pop_BA_HotelAds_File',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'SuccessCount',\r\n property: 'SuccessCount',\r\n title: this.i18n.getString('HotelCenter_Intelligence_FeedStatus_Grid_SuccessCount_Label'),\r\n // helpId: '',\r\n sortable: true,\r\n }), bingadsGridColumn({\r\n name: 'WarningCount',\r\n property: 'WarningCount',\r\n title: this.i18n.getString('HotelCenter_Intelligence_FeedStatus_Grid_WarningCount_Label'),\r\n // helpId: '',\r\n sortable: true,\r\n }), bingadsGridColumn({\r\n name: 'ErrorCount',\r\n property: 'ErrorCount',\r\n title: this.i18n.getString('HotelCenter_Intelligence_FeedStatus_Grid_ErrorCount_Label'),\r\n // helpId: '',\r\n sortable: true,\r\n })];\r\n\r\n this.plugins = {\r\n pagination: {\r\n pageSize: 20,\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n },\r\n\r\n uiBlocker: {\r\n el: $('.hotel-center-intelligence-container'),\r\n },\r\n placeholder: {\r\n container: '.grid-noresult',\r\n text: this.i18n.getString('HotelCenter_Intelligence_FeedStatus_Grid_NoFilteredRecords'),\r\n },\r\n\r\n dateFilter: {\r\n container: dateFilterContainer,\r\n isComparisonEnabled: false,\r\n minDate,\r\n odataTimeZone: 'UTC',\r\n enabledRangesPredicate: range => _.indexOf(includeRanges, range.key) !== -1,\r\n sharedInGrids: false,\r\n },\r\n // filterState: {\r\n // container: $('.hotel-center-global-toolbar-containter .global-filter-bar'),\r\n // entity: (() => {\r\n // let filterList = ['FeedType'];\r\n\r\n // return getFilterEntity(feedSchema, filterList);\r\n // })(),\r\n // },\r\n\r\n // quickFilter: {\r\n // toolbar: this.filterToolbar,\r\n // items: [{\r\n // key: 'all',\r\n // text: this.i18n.getString('HotelCenter_Intelligence_FeedStatus_FeedType_Enum_All'),\r\n // value: {\r\n // query: {\r\n // 'FeedType': {\r\n // $eq: 'all',\r\n // },\r\n // },\r\n // },\r\n // }, {\r\n // key: 'transaction',\r\n // text: this.i18n.getString('HotelCenter_Intelligence_FeedStatus_FeedType_Enum_Transaction'),\r\n // value: {\r\n // query: {\r\n // 'FeedType': {\r\n // $eq: 'transaction',\r\n // },\r\n // },\r\n // },\r\n // }, {\r\n // key: 'hints',\r\n // text: this.i18n.getString('HotelCenter_Intelligence_FeedStatus_FeedType_Enum_Hints'),\r\n // value: {\r\n // query: {\r\n // 'FeedType': {\r\n // $eq: 'hints',\r\n // },\r\n // },\r\n // },\r\n // }, {\r\n // key: 'query_control_message',\r\n // text: this.i18n.getString('HotelCenter_Intelligence_FeedStatus_FeedType_Enum_Query_Control'),\r\n // value: {\r\n // query: {\r\n // 'FeedType': {\r\n // $eq: 'query_control_message',\r\n // },\r\n // },\r\n // },\r\n // }],\r\n // },\r\n };\r\n }\r\n}\r\n","import { getHotelCenterShared } from '@bingads-webui-campaign/hotel-center-shared';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { schemaVnextArray } from '@bingads-webui/hotel-odata-schemas';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared');\r\nconst pageContext = globalContext.require('PageContext');\r\nconst state = globalContext.require('component/state/index');\r\nconst dateFilterPreferences = globalContext.require('component/bingads-grid/service/date-filter-preferences');\r\nconst segmentationPreferences = globalContext.require('component/bingads-grid/service/segmentation-preferences');\r\nconst preferencesService = globalContext.require('component/preference/service/index');\r\nconst CustomerIdType = globalContext.requireDefault('component/edm-campaign/customeridtype');\r\nconst config = globalContext.require('component/config/index');\r\n\r\nexport const {\r\n dateFilterPlugin,\r\n fetchPreferenceConfig,\r\n instrumentation,\r\n toolbarTemplate,\r\n jsdataBhc,\r\n} = getHotelCenterShared({\r\n i18n,\r\n pageContext,\r\n state,\r\n dateFilterPreferences,\r\n preferencesService,\r\n segmentationPreferences,\r\n config,\r\n schemas: schemaVnextArray,\r\n CustomerIdType,\r\n});\r\n","import { BaseView } from '@bingads-webui/base-view';\r\nimport $ from 'jquery';\r\nimport pgrid from 'projection-grid';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { download } from '@bingads-webui/download-service';\r\nimport * as putil from '@bingads-webui/primitive-utilities';\r\nimport { clientSidePaginationPlugin } from '@bingads-webui/projection-grid-client-pagination';\r\nimport { clientSideSortPlugin } from '@bingads-webui/projection-grid-client-sort';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport GridConfig from './grid-config';\r\nimport template from './template.pug';\r\nimport {\r\n dateFilterPlugin,\r\n fetchPreferenceConfig,\r\n instrumentation,\r\n toolbarTemplate,\r\n} from '../../hotel-center-shared';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\n\r\n\r\nexport default class FeedStatus extends BaseView {\r\n initialize({ perfMarker = null }) {\r\n this.i18n = i18n;\r\n this.utilityPageScenario = instrumentation.utilityPage.create();\r\n if (perfMarker) {\r\n this.perfMarker = perfMarker.createChild('HotelCenterFeedStatus');\r\n this.perfMarker.willInit();\r\n }\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .grid-table .downloadlink.reporturl': 'downloadFile',\r\n };\r\n }\r\n\r\n downloadFile(e) {\r\n const model = this.grid.gridView.itemOfElement(e.target);\r\n const feedId = putil.get(model, 'FeedId');\r\n\r\n return jsdata.TravelFeed\r\n .find(\r\n feedId,\r\n {\r\n entitySet: edm.currentCustomer.Feeds,\r\n }\r\n )\r\n .then((feed) => {\r\n download(feed.ReportUrl);\r\n });\r\n }\r\n\r\n render() {\r\n if (this.perfMarker) {\r\n this.perfMarker.willRender();\r\n }\r\n this.$el.html(template({\r\n title: i18n.getString('HotelCenter_Intelligence_FeedStatus_Description'),\r\n }));\r\n\r\n if ($('.intelligence-feed-status-toolbar-container .hotel-center-global-toolbar-containter').length === 0) {\r\n $('.intelligence-feed-status-toolbar-container').append(toolbarTemplate());\r\n }\r\n\r\n const config = new GridConfig({\r\n i18n,\r\n dateFilterContainer: this.$('.date-picker-container'),\r\n });\r\n const loadFeedStatusGridActivity = this.utilityPageScenario.loadFeedStatusGrid.create();\r\n\r\n fetchPreferenceConfig(config).then(() => {\r\n this.grid = pgrid\r\n .factory({ vnext: true })\r\n .use(paginationPlugin)\r\n .use(dateFilterPlugin)\r\n .use(placeholderPlugin)\r\n .use(uiBlockerPlugin)\r\n .use(clientSideSortPlugin)\r\n .use(clientSidePaginationPlugin)\r\n .create(config);\r\n\r\n this.grid.gridView.on('update:finished', () => {\r\n loadFeedStatusGridActivity.trace('Grid loading is completed');\r\n });\r\n\r\n this.grid.gridView.render(() => {\r\n super.render();\r\n });\r\n this.$('.grid-table').append(this.grid.gridView.$el);\r\n\r\n loadFeedStatusGridActivity.trace('Grid setup is completed');\r\n if (this.perfMarker) {\r\n this.perfMarker.done();\r\n }\r\n });\r\n\r\n return this;\r\n }\r\n\r\n remove(...args) {\r\n if (this.grid) {\r\n this.grid.gridView.remove();\r\n this.grid.pagination.remove();\r\n }\r\n super.remove(...args);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\nexport function feedErrorMapper(errorCode) {\r\n if (_.isEmpty(errorCode)) {\r\n return '';\r\n }\r\n\r\n return i18n.getString(`HotelCenter_Feed_Error_${errorCode}`) ||\r\n i18n.getString('HotelCenter_Feed_Error_OtherError');\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { fromLegacyTimeZone, toIANATimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { HotelFeed } from '@bingads-webui/hotel-odata-schemas';\r\nimport messageTemplate from './column-message.pug';\r\nimport { feedErrorMapper } from './feed-error-map';\r\n\r\nconst pageContext = globalContext.require('PageContext');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\n\r\n\r\nexport class FeedUploadGridOption {\r\n constructor({ jsdataBhc } = {}) {\r\n this.i18n = i18n;\r\n this.name = 'FeedUploadGrid';\r\n this.tableClasses = ['table', 'table-bordered'];\r\n this.dataSource = {\r\n type: 'js-data',\r\n entity: jsdataBhc.HotelFeed,\r\n schema: HotelFeed,\r\n query: { $top: 10 },\r\n options: {\r\n cacheResponse: false,\r\n url: '/Customers(:advertisercustomer_id)/HotelFeeds',\r\n },\r\n };\r\n this.columns = [\r\n bingadsGridColumn({\r\n name: 'originalFileName',\r\n title: this.i18n.getString('HotelCenter_FeedUpload_Grid_Filename'),\r\n }),\r\n bingadsGridColumn({\r\n name: 'ingenstionTime',\r\n title: this.i18n.getString('HotelCenter_FeedUpload_Grid_UploadTime'),\r\n template: local => i18n.formatDate(new Date(local.value), {\r\n datetime: 'full',\r\n timeZone: toIANATimeZone(fromLegacyTimeZone(pageContext.AccountTimeZone)),\r\n }),\r\n }),\r\n bingadsGridColumn({\r\n name: 'status',\r\n title: this.i18n.getString('HotelCenter_FeedUpload_Grid_Status'),\r\n }),\r\n bingadsGridColumn({\r\n name: 'message',\r\n property: item => _.pick(item, 'errors', 'matchingReportUri'),\r\n title: this.i18n.getString('HotelCenter_FeedUpload_Grid_Message'),\r\n template: local => messageTemplate({\r\n feedError: feedErrorMapper(local.value.errors),\r\n errorLink: local.value.matchingReportUri,\r\n linkText: i18n.getString('HotelCenter_FeedUpload_Grid_View_Detail'),\r\n }),\r\n }),\r\n ];\r\n this.plugins = {\r\n uiBlocker: {\r\n el: $('.feed-upload-grid'),\r\n },\r\n };\r\n }\r\n}\r\n","import pgrid from 'projection-grid';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { download } from '@bingads-webui/download-service';\r\nimport { FilePicker } from '@bingads-webui/file-picker';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { FeedUploadGridOption } from './grid-option';\r\nimport template from './template.pug';\r\nimport { feedErrorMapper } from './feed-error-map';\r\nimport { jsdataBhc } from '../../hotel-center-shared';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst UploadService = globalContext.require('component/azure-upload/index');\r\n\r\nfunction upload(file) {\r\n const odataOptions = {\r\n cacheResponse: false,\r\n url: '/Customers(:advertisercustomer_id)/HotelFeedUploadLocation',\r\n };\r\n\r\n return jsdataBhc.HotelFeedUploadLocation.find('', odataOptions)\r\n .then((uploadLocation) => {\r\n const uploadService = new UploadService({\r\n blobSetting: {\r\n SasUrl: uploadLocation.uri,\r\n blobName: file.name,\r\n },\r\n file,\r\n });\r\n\r\n return uploadService.start();\r\n }).then((blobUri) => {\r\n const newFeed = {\r\n language: 'en', // For V1 language is hardcoded\r\n rawUri: blobUri,\r\n originalFileName: file.name,\r\n };\r\n\r\n return jsdataBhc.HotelFeed.create(newFeed, {\r\n cacheResponse: false,\r\n url: '/Customers(:advertisercustomer_id)/HotelFeeds',\r\n });\r\n });\r\n}\r\n\r\n\r\nexport default class FeedUpload extends DeterministicView {\r\n initialize({ perfMarker = null }) {\r\n super.initialize();\r\n this.i18n = i18n;\r\n if (perfMarker) {\r\n this.perfMarker = perfMarker.createChild('HotelCenterFeedUpload');\r\n this.perfMarker.willInit();\r\n }\r\n this.setState({\r\n isUploadEnabled: false,\r\n isUploading: false,\r\n isFeedPending: false,\r\n });\r\n this.filePicker = new FilePicker({\r\n theme: 'default',\r\n allowedFileExtensions: ['.zip', '.tsv', '.csv', '.xml'],\r\n i18n,\r\n validator: () => {\r\n this.setState({ isUploadEnabled: true });\r\n },\r\n displayFilePath: 'filename',\r\n }).render();\r\n this.filePicker.on('error.extension', () => {\r\n this.setState({ isUploadEnabled: false });\r\n });\r\n const gridOption = new FeedUploadGridOption({ jsdataBhc });\r\n\r\n this.grid = pgrid.factory({ vnext: true })\r\n .use(uiBlockerPlugin)\r\n .create(gridOption);\r\n this.grid.gridView.render();\r\n\r\n this.fetchPendingSeed();\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .btn-submit': () => {\r\n if (!this.filePicker.fileObject) {\r\n return;\r\n }\r\n this.setState({ isUploading: true });\r\n upload(this.filePicker.fileObject)\r\n .then(() => {\r\n // reset feedError\r\n this.setState({ feedError: null });\r\n this.grid.gridView.refresh();\r\n })\r\n .catch((err) => {\r\n const errorCode = err.errors && err.errors[0].Code;\r\n this.setState({ feedError: feedErrorMapper(errorCode) || i18n.getString('HotelCenter_Feed_Error_OtherError') });\r\n });\r\n },\r\n 'click .feed-upload-grid .download-feed-error': 'downloadFeedError',\r\n };\r\n }\r\n\r\n downloadFeedError(e) {\r\n const item = this.grid.gridView.itemOfElement(e.target);\r\n if (item) {\r\n const feedId = item.Id;\r\n const odataOptions = {\r\n cacheResponse: false,\r\n url: `/Customers(:advertisercustomer_id)/HotelFeeds(${feedId})`,\r\n };\r\n\r\n jsdataBhc.HotelFeed.find(feedId, odataOptions)\r\n .then((response) => {\r\n download(response.matchingReportUri);\r\n });\r\n }\r\n }\r\n\r\n renderTrunk() {\r\n super.renderTrunk();\r\n if (this.perfMarker) {\r\n this.perfMarker.willRender();\r\n }\r\n const $filePicker = this.$('.file-picker');\r\n const $grid = this.$('.feed-upload-grid');\r\n\r\n $filePicker.append(this.filePicker.$el);\r\n $grid.append(this.grid.gridView.el);\r\n if (this.perfMarker) {\r\n this.perfMarker.done();\r\n }\r\n return this;\r\n }\r\n\r\n fetchPendingSeed() {\r\n const odataOptions = {\r\n cacheResponse: false,\r\n url: '/Customers(:advertisercustomer_id)/HotelFeeds',\r\n };\r\n const queryOptions = {\r\n where: { status: 'PENDING' },\r\n limit: 1,\r\n };\r\n\r\n jsdataBhc.HotelFeed.findAll(queryOptions, odataOptions)\r\n .then((response) => {\r\n this.setState({ isFeedPending: response.length > 0 });\r\n })\r\n .finally(withUiBlock(this.el));\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { download } from '@bingads-webui/download-service';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport template from './template.pug';\r\nimport { jsdataBhc } from '../../hotel-center-shared';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n/**\r\n * Class representing a navigation tabs for HotelCenter Intelligence\r\n * @extends View\r\n */\r\nexport default class MatchReport extends DeterministicView {\r\n /**\r\n * Initializes MatchReport\r\n * @returns {undefined}\r\n */\r\n initialize({ perfMarker = null }) {\r\n this.i18n = i18n;\r\n if (perfMarker) {\r\n this.perfMarker = perfMarker.createChild('HotelCenterMatchReport');\r\n this.perfMarker.willInit();\r\n }\r\n this.pageInitialize();\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .match-report-download-button': this.onMatchReportDownload,\r\n };\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n\r\n getState() {\r\n return {\r\n feedId: this.model.get('id'),\r\n };\r\n }\r\n\r\n onMatchReportDownload() {\r\n const { feedId } = this.getState();\r\n const odataOptions = {\r\n cacheResponse: false,\r\n url: `/Customers(:advertisercustomer_id)/HotelFeeds(${feedId})`,\r\n };\r\n\r\n return jsdataBhc.HotelFeed.find(feedId, odataOptions)\r\n .then((response) => {\r\n download(response.matchingReportUri);\r\n });\r\n }\r\n\r\n pageInitialize() {\r\n const odataOptions = {\r\n cacheResponse: false,\r\n url: '/Customers(:advertisercustomer_id)/HotelFeeds',\r\n };\r\n const queryOptions = {\r\n where: { status: 'LIVE' },\r\n limit: 1,\r\n };\r\n\r\n jsdataBhc.HotelFeed.findAll(queryOptions, odataOptions)\r\n .then((response) => {\r\n if (response.length === 0) {\r\n this.setState({ hasResult: false });\r\n } else {\r\n this.setState({ hasResult: true });\r\n const state = this.formatMatchReportRes(_.first(response));\r\n if (this.perfMarker) {\r\n this.perfMarker.willRender();\r\n }\r\n this.setState(state);\r\n if (this.perfMarker) {\r\n this.perfMarker.done();\r\n }\r\n }\r\n })\r\n .finally(withUiBlock(this.el));\r\n }\r\n\r\n formatMatchReportRes(data) {\r\n const feed = _.extend(data, {\r\n ingenstionTime: this.i18n.formatDate(new Date(data.ingenstionTime), { skeleton: 'yMMMdHms' }),\r\n matchedPercentage: this.i18n.formatPercent(data.machedCount / data.hotelsCount),\r\n });\r\n\r\n return {\r\n id: feed.Id,\r\n versionInfo: this.i18n.getString('HotelCenter_MatchReport_Content_Label_FeedVersion', feed),\r\n submittedInfo: this.i18n.getString('HotelCenter_MatchReport_Content_Label_SubmittedInfo', feed),\r\n matchedInfo: this.i18n.getString('HotelCenter_MatchReport_Content_Label_MatchedInfo', feed),\r\n overclusteredInfo: this.i18n.getString('HotelCenter_MatchReport_Content_Label_OverclusteredInfo', feed),\r\n };\r\n }\r\n}\r\n","/* eslint-disable no-proto */\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { DateFilter } from '@bingads-webui/date-filter';\r\nimport { RANGES } from '@bingads-webui/date-ranges';\r\nimport { withoutTime } from '@bingads-webui/primitive-utilities';\r\nimport { dateUtils } from '../../hotel-center-utils';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst { DownloadViewV1 } = globalContext.require('campaignui/feature/griddownload/view/adapter');\r\nconst state = globalContext.require('component/state/index');\r\nconst { local2account } = dateUtils;\r\nconst includeRanges = [RANGES.CUSTOM, RANGES.TODAY, RANGES.YESTERDAY, RANGES.THIS_WEEK_SUNDAY,\r\n RANGES.THIS_WEEK_MONDAY, RANGES.LAST_SEVEN_DAYS, RANGES.LAST_WEEK_SUNDAY,\r\n RANGES.LAST_WEEK_MONDAY, RANGES.LAST_FOURTEEN_DAYS, RANGES.THIS_MONTH, RANGES.LAST_MONTH,\r\n RANGES.LAST_THIRTY_DAYS, RANGES.ALL_TIME];\r\n\r\nexport class PerformanceReportBase extends DeterministicView {\r\n initialize({\r\n getTemplate,\r\n downloadButtonLocator,\r\n reportColumns,\r\n reportHeaders,\r\n gridId,\r\n processReportRule,\r\n p$daterange,\r\n perfMarker,\r\n }) {\r\n _.extend(this, {\r\n i18n,\r\n getTemplate,\r\n downloadButtonLocator,\r\n reportColumns,\r\n reportHeaders,\r\n gridId,\r\n processReportRule,\r\n p$daterange,\r\n perfMarker,\r\n });\r\n if (this.perfMarker) {\r\n this.perfMarker.willInit();\r\n this.on('rendered', () => {\r\n this.perfMarker.done();\r\n });\r\n }\r\n this.initDateFilter();\r\n }\r\n\r\n get events() {\r\n return {\r\n [`click ${this.downloadButtonLocator}`]: this.onReportDownload,\r\n };\r\n }\r\n\r\n get template() {\r\n return this.getTemplate();\r\n }\r\n\r\n initDateFilter() {\r\n const today = withoutTime(local2account(new Date()));\r\n const dateFilterConfig = {\r\n i18n: _.defaults({\r\n timeZone: null,\r\n __proto__: i18n.__proto__,\r\n }, i18n),\r\n isComparisonEnabled: false,\r\n enabledRangesPredicate: range => _.contains(includeRanges, range.key),\r\n dateFormat: 'yMd',\r\n get maxDate() {\r\n return today;\r\n },\r\n };\r\n let selection = { primaryRange: { key: RANGES.LAST_THIRTY_DAYS } };\r\n\r\n // get $daterange from state if exist\r\n state.getPromise('$daterange').then((dateRange) => {\r\n if (dateRange && dateRange.key && _.contains(includeRanges, dateRange.key)) {\r\n selection = { primaryRange: _.omit(dateRange, 'compared') };\r\n }\r\n }).finally(() => {\r\n const dateFilter = new DateFilter(dateFilterConfig).setState({ today, selection });\r\n\r\n this.setChild('date-filter', dateFilter);\r\n });\r\n }\r\n\r\n onReportDownload() {\r\n const { primaryRange } = this.getChild('date-filter').getSelection();\r\n const downloadView = new DownloadViewV1({\r\n localizedHeaders: this.reportHeaders,\r\n odataColumnNames: this.reportColumns,\r\n filterUrlParam: '',\r\n segmentationTypes: [],\r\n entity: 'DimensionRow',\r\n gridId: this.gridId,\r\n processReportRule: this.processReportRule,\r\n isForVNext: true,\r\n p$daterange: this.p$daterange,\r\n });\r\n\r\n state.set('$daterange', primaryRange);\r\n downloadView.download();\r\n downloadView.remove();\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { inlineDownloadUtils } from '../../hotel-center-utils';\r\nimport template from './template.pug';\r\nimport { PerformanceReportBase } from '../helper/performance-report-factory';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\nexport default class ShareOfVoiceReportView extends PerformanceReportBase {\r\n constructor({ p$daterange = null, perfMarker = null } = {}) {\r\n const reportColumns = [\r\n 'HotelId',\r\n 'HotelCountry',\r\n 'HotelName',\r\n 'PartnerHotelId',\r\n 'Impressions',\r\n 'EligibleImpressions',\r\n 'MissedImpressions',\r\n 'ImpressionShare',\r\n 'MissedImpressionsSpendingCapReached',\r\n 'MissedImpressionsInsufficientBid',\r\n 'MissedImpressionsNoTax',\r\n 'MissedImpressionsOther',\r\n 'Clicks',\r\n 'ClickShare',\r\n 'CTR',\r\n ];\r\n const reportHeaders = [\r\n i18n.getString('HotelCenter_Overview_Grid_Hotel_ID_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Country_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_SubAccount_Name_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Hotel_Advertiser_Hotel_ID_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Impression_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_SOV_Eligible_Impression_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_SOV_Missed_Impression_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_SOV_Impression_Share_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_SOV_Spending_Cap_Reached_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_SOV_Insufficient_Bid_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_SOV_No_Tax_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_SOV_Other_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Clicks_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_SOV_Click_Share_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_CTR_Label'),\r\n ];\r\n\r\n\r\n const SOVPerfMarker = perfMarker ? perfMarker.createChild('HotelCenterSOVReport') : null;\r\n\r\n super({\r\n getTemplate: () => template,\r\n downloadButtonLocator: '.sov-report-download-button',\r\n reportColumns,\r\n reportHeaders,\r\n gridId: 'HotelSovReportDownloadGrid',\r\n processReportRule: inlineDownloadUtils.processReportRuleForHotelCenterBIDimensionRow,\r\n p$daterange,\r\n perfMarker: SOVPerfMarker,\r\n });\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { inlineDownloadUtils } from '../../hotel-center-utils';\r\nimport template from './template.pug';\r\nimport { PerformanceReportBase } from '../helper/performance-report-factory';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\nexport default class BookingReportView extends PerformanceReportBase {\r\n constructor({ p$daterange = null, perfMarker = null } = {}) {\r\n const reportColumns = [\r\n 'SubAccountName',\r\n 'HotelGroupName',\r\n 'HotelId',\r\n 'PartnerHotelId',\r\n 'HotelName',\r\n 'BookingReferenceNumber',\r\n 'BookingDate',\r\n 'CheckinDate',\r\n 'TotalBookedNights',\r\n 'TotalPrice',\r\n 'BasePrice',\r\n 'Taxes',\r\n ];\r\n const reportHeaders = [\r\n i18n.getString('HotelCenter_Overview_Grid_Booking_Subaccount_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Booking_Hotel_Group_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Booking_Hotel_ID_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Booking_Partner_Hotel_ID_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Booking_Hotel_Name_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Booking_Reference_Number_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Booking_Date_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Booking_Checkin_Date_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Booking_Length_Of_Stay_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Booking_Total_Price_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Booking_Base_Price_Label'),\r\n i18n.getString('HotelCenter_Overview_Grid_Booking_Taxes_Fees_Label'),\r\n ];\r\n\r\n const bookingPerfMarker = perfMarker ? perfMarker.createChild('HotelCenterBookingReport') : null;\r\n\r\n super({\r\n getTemplate: () => template,\r\n downloadButtonLocator: '.booking-report-download-button',\r\n reportColumns,\r\n reportHeaders,\r\n gridId: 'HotelBookingReportDownloadGrid',\r\n processReportRule: inlineDownloadUtils.processReportRuleForHotelCenterBookingRow,\r\n p$daterange,\r\n perfMarker: bookingPerfMarker,\r\n });\r\n }\r\n}\r\n","/* istanbul ignore file */\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { DeterministicViewForBackBoneView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { PillControl } from '@bingads-webui/pill-control';\r\nimport template from './template.pug';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst { CalloutAdExtensionAssociationsView } = globalContext.require('campaignui/feature/hotel-center-ad-extensions/callout/callout-adextension-associations-view');\r\n\r\nclass WrappedPillControl extends DeterministicViewForBackBoneView {\r\n viewFactory(options) {\r\n return new PillControl(options);\r\n }\r\n}\r\n\r\nclass WrappedCalloutAdExtensionAssociationsView extends DeterministicViewForBackBoneView {\r\n viewFactory(options) {\r\n return new CalloutAdExtensionAssociationsView(options);\r\n }\r\n}\r\n\r\nexport class CalloutExtensionsView extends DeterministicView {\r\n initialize({ isNewEntitySelector = false, perfMarker } = {}) {\r\n _.extend(this, {\r\n isNewEntitySelector,\r\n });\r\n super.initialize();\r\n this.i18n = i18n;\r\n this.associationsView = new WrappedCalloutAdExtensionAssociationsView({\r\n associationType: 'SubAccount',\r\n typeString: i18n.getString('AdExtensionsSummary_Tab_Title_Callout'),\r\n isNewEntitySelector,\r\n i18nHotelCenter: i18n,\r\n perfMarker,\r\n });\r\n\r\n this.pillControl = new WrappedPillControl({\r\n items: [\r\n { text: i18n.getString('HotelCenter_Intelligence_CalloutExtensions_SwitchButton_Subaccount'), id: 'sub-account', value: 0 },\r\n { text: i18n.getString('HotelCenter_Intelligence_CalloutExtensions_SwitchButton_HotelGroup'), id: 'hotel-group', value: 1 },\r\n ],\r\n });\r\n\r\n this.setChild('pill-control', this.pillControl);\r\n this.setChild('associations-view', this.associationsView);\r\n\r\n this.pillControl.on('select', (event) => {\r\n const { item } = event;\r\n if (item.id === 'sub-account') {\r\n this.associationsView.remove();\r\n this.associationsView = new WrappedCalloutAdExtensionAssociationsView({\r\n associationType: 'SubAccount',\r\n typeString: i18n.getString('AdExtensionsSummary_Tab_Title_Callout'),\r\n isNewEntitySelector,\r\n i18nHotelCenter: i18n,\r\n perfMarker,\r\n });\r\n this.setChild('associations-view', this.associationsView);\r\n this.setState({ associationType: 'sub-account' });\r\n } else if (item.id === 'hotel-group') {\r\n this.associationsView.remove();\r\n this.associationsView = new WrappedCalloutAdExtensionAssociationsView({\r\n associationType: 'HotelGroup',\r\n typeString: i18n.getString('AdExtensionsSummary_Tab_Title_Callout'),\r\n isNewEntitySelector,\r\n i18nHotelCenter: i18n,\r\n perfMarker,\r\n });\r\n this.setChild('associations-view', this.associationsView);\r\n this.setState({ associationType: 'hotel-group' });\r\n }\r\n });\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n}\r\n","import { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport template from './hotel-center-intelligence-template.pug';\r\nimport * as intelligenceSubSections from './intelligence-sub-sections';\r\nimport IntelligenceTreeBars from './intelligence-tree-bars';\r\nimport FeedStatus from './sub-sections/feed-status/feed-status';\r\nimport FeedUpload from './sub-sections/feed-upload/feed-upload';\r\nimport MatchReport from './sub-sections/match-report/match-report';\r\nimport ShareOfVoice from './sub-sections/share-of-voice-report/share-of-voice-report';\r\nimport BookingReport from './sub-sections/booking-report/booking-report';\r\nimport { CalloutExtensionsView } from './sub-sections/callout-extensions';\r\nimport { feedErrorMapper } from './sub-sections/feed-upload/feed-error-map';\r\n\r\nexport {\r\n FeedStatus,\r\n FeedUpload,\r\n MatchReport,\r\n ShareOfVoice,\r\n BookingReport,\r\n feedErrorMapper,\r\n intelligenceSubSections,\r\n IntelligenceTreeBars,\r\n CalloutExtensionsView,\r\n};\r\n\r\n/**\r\n * Class representing a navigation tabs for HotelCenter intelligence\r\n * @extends DeterministicView\r\n */\r\nexport class HotelCenterIntelligence extends DeterministicView {\r\n /**\r\n * Initializes HotelCenterIntelligence\r\n * @returns {undefined}\r\n */\r\n initialize({ perfMarker } = {}) {\r\n this.intelligenceTreeBars = new IntelligenceTreeBars();\r\n this.setState({ selectedSubSectionName: 'Feed Upload' });\r\n this.setChild('intelligence-tree-bar', this.intelligenceTreeBars);\r\n this.listenTo(this.intelligenceTreeBars, 'selected', (data) => {\r\n this.setState({ selectedSubSectionName: data.name });\r\n });\r\n this.perfMarker = perfMarker;\r\n }\r\n\r\n renderTrunk() {\r\n super.renderTrunk();\r\n\r\n const {\r\n selectedSubSectionName,\r\n } = this.getState();\r\n\r\n // set feed status as default pages\r\n switch (selectedSubSectionName) {\r\n case 'Matching Report':\r\n this.setChild('match-report', new MatchReport({ perfMarker: this.perfMarker }));\r\n break;\r\n case 'Feed Status':\r\n this.setChild('feed-status', new FeedStatus({ perfMarker: this.perfMarker }).render());\r\n break;\r\n case 'SOV Report':\r\n this.setChild('sov-report', new ShareOfVoice({ perfMarker: this.perfMarker }));\r\n break;\r\n case 'Booking Report':\r\n this.setChild('booking-report', new BookingReport({ perfMarker: this.perfMarker }));\r\n break;\r\n case 'Callout Extensions':\r\n this.setChild('callout-extensions', new CalloutExtensionsView({ perfMarker: this.perfMarker }));\r\n break;\r\n case 'Feed Upload':\r\n default:\r\n // Since FeedStatus is a BaseView, we need to call render explicitly\r\n this.setChild('feed-upload', new FeedUpload({ perfMarker: this.perfMarker }));\r\n break;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nexport const HotelCenterOverview = globalContext.define(\r\n [\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center',\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared',\r\n 'PageContext',\r\n 'campaignui/feature/bulk-operation/edit-detail/detail-mapper',\r\n 'campaignui/feature/bulk-operation/util/bulk-edit-job',\r\n 'campaignui/feature/griddownload/view/adapter',\r\n 'campaignui/feature/hotel-center-edm/index',\r\n 'campaignui/feature/hotel-center-js-data/index',\r\n 'component/bingads-grid/plugin/column-chooser',\r\n 'component/bingads-grid/plugin/cross-page-select-all/index',\r\n 'component/bingads-grid/plugin/new-performance-log',\r\n 'component/bingads-grid/shared/column',\r\n 'component/bingads-grid/shared/schema-util',\r\n 'component/config/index',\r\n 'component/grid-customized-popup-editor/index',\r\n 'component/humanize/decimal',\r\n 'component/state/index',\r\n 'component/toast/index',\r\n 'component/preference/service/index',\r\n '$/schema-i18n!hotel-center',\r\n 'component/js-data-campaign/index',\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-utils',\r\n 'component/bingads-grid/service/date-filter-preferences',\r\n 'component/bingads-grid/service/segmentation-preferences',\r\n 'component/bingads-grid/service/column-chooser-preferences',\r\n ],\r\n Promise => Promise.all([import(/* webpackMode: 'eager' */ './src/hotel-center-overview'),\r\n import(/* webpackMode: 'eager' */ './src/bulk-edit/bulk-edit-bid-panel'),\r\n import(/* webpackMode: 'eager' */ './src/bulk-edit/bulk-edit-bid-multi-panel'),\r\n import(/* webpackMode: 'eager' */ './src/bulk-edit/increase-decrease-bid-panel'),\r\n ]) // eslint-disable-line no-unused-vars\r\n);\r\n\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport template from './bulk-edit-bid-multi-panel-template.pug';\r\nimport { BulkEditPanelBase } from './bulk-edit-panel-base';\r\nimport { completeToast, failedToast } from './bulk-edit-toast';\r\nimport { BidMultipliersView } from '../hotel-center-shared';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst TITLE_MAP = {\r\n hotel: {\r\n singular: 'HotelCenter_Overview_Edit_Change_Multipliers_Bids_Label_Hotel',\r\n plural: 'HotelCenter_Overview_Edit_Change_Multipliers_Bids_Label_Hotels',\r\n },\r\n hotelGroup: {\r\n singular: 'HotelCenter_Overview_Edit_Change_Multipliers_Bids_Label_HotelGroup',\r\n plural: 'HotelCenter_Overview_Edit_Change_Multipliers_Bids_Label_HotelGroups',\r\n },\r\n};\r\n\r\n\r\n/**\r\n * Class representing a panel for bulk bid multipliers edit\r\n * @extends View\r\n * @returns {BulkEditBidMultiPanel} - BulkEditBidMultiPanel\r\n */\r\nexport default class BulkEditBidMultiPanel extends BulkEditPanelBase {\r\n initialize({\r\n viewConfig,\r\n selectedRowCount,\r\n gridName,\r\n }) {\r\n let selectedItems = [];\r\n this.mainGrid = viewConfig.grid;\r\n selectedItems = this.mainGrid.gridView.selectedItems();\r\n this.mainGrid.gridView.on('didSelect', () => {\r\n this.onSelected();\r\n });\r\n this.onEvent();\r\n this.i18n = i18n;\r\n this.scope = 'hotel';\r\n if (gridName === 'HotelGroupGrid') {\r\n this.scope = 'hotelGroup';\r\n }\r\n\r\n this.bidMultipliersView = new BidMultipliersView({});\r\n this.setChild('bid-multipliers-view', this.bidMultipliersView);\r\n\r\n super.initialize({\r\n completeToast: _.partial(completeToast, 'HotelCenter_BulkEdit_Update_BidMultiplier_Success', 'HotelCenter_BulkEdit_Update_BidMultiplier_Partial_Success'),\r\n failedToast: _.partial(failedToast, 'HotelCenter_BulkEdit_Update_BidMultiplier_Failed'),\r\n activityName: 'bulkEditHotelMultiplier',\r\n });\r\n this.setState({\r\n scope: this.scope,\r\n errors: [],\r\n });\r\n this.updateSelection({\r\n selectionCount: selectedRowCount || 0,\r\n selectedItems,\r\n filter: null,\r\n });\r\n }\r\n\r\n getBatchAction(state) {\r\n const {\r\n bidMultipliers,\r\n } = state;\r\n const value = JSON.stringify(bidMultipliers.map(multiplier => _.defaults({\r\n Factor: Number(multiplier.Factor),\r\n }, multiplier)));\r\n const batchActions = {\r\n Actions: [{\r\n '@odata.type': '#Model.TextAction',\r\n ActionType: 'Set',\r\n Options: 'None',\r\n SearchString: null,\r\n Value: value,\r\n Property: 'BidMultipliers',\r\n }],\r\n EditCopy: false,\r\n };\r\n\r\n return batchActions;\r\n }\r\n\r\n updateSelection({\r\n selectionCount,\r\n selectedItems,\r\n filter,\r\n }) {\r\n const titleKey = TITLE_MAP[super.getState().scope][selectionCount === 1 ? 'singular' : 'plural'];\r\n const title = this.i18n.getString(titleKey)\r\n .replace('{0}', selectionCount);\r\n\r\n this.setState({\r\n selectionCount,\r\n selectedItems,\r\n filter,\r\n title,\r\n showRequestError: false,\r\n });\r\n this.bulkEditView.viewModel.disableAction(selectionCount === 0);\r\n }\r\n\r\n onSelected = () => {\r\n const selectedItems = this.mainGrid.gridView.selectedItems();\r\n const selectionCount =\r\n this.mainGrid.crossPageSelectAll && this.mainGrid.crossPageSelectAll.isAllSelected ?\r\n this.mainGrid.crossPageSelectAll.viewModel.totalRowsTotalPageCount() :\r\n selectedItems.length;\r\n const filter = null;\r\n\r\n this.updateSelection({ selectionCount, selectedItems, filter });\r\n }\r\n\r\n renderTrunk() {\r\n super.renderTrunk();\r\n this.$('.bulk-edit-container').append(this.bulkEditView.el);\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n getState() {\r\n const state = super.getState();\r\n const { bidMultipliers } = this.bidMultipliersView.getState();\r\n\r\n return _.defaults({\r\n bidMultipliers,\r\n }, state);\r\n }\r\n\r\n validate() {\r\n const isBidMultipliersValid = this.bidMultipliersView.getState().isValid;\r\n\r\n return isBidMultipliersValid;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport template from './bulk-edit-bid-panel-template.pug';\r\nimport { BulkEditPanelBase } from './bulk-edit-panel-base';\r\nimport { completeToast, failedToast } from './bulk-edit-toast';\r\nimport { BidStrategyView } from '../hotel-center-shared';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst TITLE_MAP = {\r\n hotel: {\r\n singular: 'HotelCenter_Overview_Edit_Change_Bids_Label_Hotel',\r\n plural: 'HotelCenter_Overview_Edit_Change_Bids_Label_Hotels',\r\n },\r\n hotelGroup: {\r\n singular: 'HotelCenter_Overview_Edit_Change_Bids_Label_HotelGroup',\r\n plural: 'HotelCenter_Overview_Edit_Change_Bids_Label_HotelGroups',\r\n },\r\n};\r\n\r\n\r\n/**\r\n * Class representing a panel for bulk bid edit\r\n * @extends View\r\n * @returns {BulkEditBidPanel} - BulkEditBidPanel\r\n */\r\nexport default class BulkEditBidPanel extends BulkEditPanelBase {\r\n initialize({\r\n viewConfig,\r\n selectedRowCount,\r\n gridName,\r\n serverContext = { DynamicPermissions: {} },\r\n }) {\r\n let selectedItems = [];\r\n this.mainGrid = viewConfig.grid;\r\n selectedItems = this.mainGrid.gridView.selectedItems();\r\n this.mainGrid.gridView.on('didSelect', () => {\r\n this.onSelected();\r\n });\r\n this.onEvent();\r\n this.i18n = i18n;\r\n this.scope = 'hotel';\r\n if (gridName === 'HotelGroupGrid') {\r\n this.scope = 'hotelGroup';\r\n }\r\n\r\n super.initialize({\r\n completeToast: _.partial(completeToast, 'HotelCenter_BulkEdit_Update_Bid_Success', 'HotelCenter_BulkEdit_Update_Bid_Partial_Success'),\r\n failedToast: _.partial(failedToast, 'HotelCenter_BulkEdit_Update_Bid_Failed'),\r\n activityName: 'bulkEditHotelBid',\r\n });\r\n\r\n const isPPSPhase2Pilot = serverContext.DynamicPermissions.ReconciliationReport;\r\n this.bidStrategyView = new BidStrategyView({ isReadonly: false, enablePPS: isPPSPhase2Pilot });\r\n this.setChild('bid-strategy-view', this.bidStrategyView);\r\n\r\n this.setState({\r\n scope: this.scope,\r\n errors: [],\r\n });\r\n this.updateSelection({\r\n selectionCount: selectedRowCount || 0,\r\n selectedItems,\r\n filter: null,\r\n });\r\n }\r\n\r\n getBatchAction(state) {\r\n const {\r\n bid,\r\n } = state;\r\n const value = _.isNull(bid.Amount) ? null : JSON.stringify(bid);\r\n const batchActions = {\r\n Actions: [{\r\n '@odata.type': '#Model.TextAction',\r\n ActionType: 'Set',\r\n Options: 'None',\r\n SearchString: null,\r\n Value: value,\r\n Property: 'Bid',\r\n }],\r\n EditCopy: false,\r\n };\r\n\r\n return batchActions;\r\n }\r\n onSelected = () => {\r\n const selectedItems = this.mainGrid.gridView.selectedItems();\r\n const selectionCount =\r\n this.mainGrid.crossPageSelectAll && this.mainGrid.crossPageSelectAll.isAllSelected ?\r\n this.mainGrid.crossPageSelectAll.viewModel.totalRowsTotalPageCount() :\r\n selectedItems.length;\r\n const filter = null;\r\n\r\n this.updateSelection({ selectionCount, selectedItems, filter });\r\n }\r\n onCancel() {\r\n super.onCancel();\r\n }\r\n updateSelection({\r\n selectionCount,\r\n selectedItems,\r\n filter,\r\n }) {\r\n const titleKey = TITLE_MAP[super.getState().scope][selectionCount === 1 ? 'singular' : 'plural'];\r\n const title = this.i18n.getString(titleKey)\r\n .replace('{0}', selectionCount);\r\n\r\n this.setState({\r\n selectionCount,\r\n selectedItems,\r\n filter,\r\n title,\r\n showRequestError: false,\r\n });\r\n this.bulkEditView.$('.preview-container').hide();\r\n this.bulkEditView.viewModel.disableAction(selectionCount === 0);\r\n }\r\n\r\n renderTrunk() {\r\n super.renderTrunk();\r\n this.$('.bulk-edit-container').append(this.bulkEditView.el);\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n getState() {\r\n const state = super.getState();\r\n const { bid } = this.bidStrategyView.getState();\r\n\r\n return _.defaults({\r\n bid,\r\n }, state);\r\n }\r\n\r\n validate() {\r\n const isBidValid = this.bidStrategyView.getState().isValid;\r\n\r\n if (!isBidValid) {\r\n this.bidStrategyView.setState({ showError: true });\r\n }\r\n return isBidValid;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\nconst ERROR_MAP = {\r\n BulkEditActionsForDifferentEntities: 'HotelCenter_Overview_Bulk_Errormsg_DifferentEntities',\r\n InternalError: 'HotelCenter_Overview_Bulk_Errormsg_InternalError',\r\n default: 'HotelCenter_Overview_Bulk_Errormsg_Default',\r\n};\r\n\r\n\r\nexport function parseErrors(response) {\r\n const errors = response.errors.map((error) => {\r\n const errorI18nKey = _.result(ERROR_MAP, error.Code, ERROR_MAP.default);\r\n return i18n.getString(errorI18nKey);\r\n });\r\n\r\n return errors;\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\nexport class PreviewGridOptions {\r\n constructor({\r\n el,\r\n }) {\r\n this.el = el;\r\n this.tableClasses = ['table', 'table-bordered'];\r\n this.columns = [\r\n {\r\n name: 'Name',\r\n field: 'Name',\r\n title: i18n.getString('HotelCenter_Overview_Grid_SubAccount_Name_Label'),\r\n },\r\n {\r\n name: 'OriginalValue',\r\n field: 'OriginalValue',\r\n title: i18n.getString('BulkEdit_OldValueHeader'),\r\n formatValue: i18n.formatDecimalToFixed,\r\n },\r\n {\r\n name: 'NewValue',\r\n field: 'NewValue',\r\n title: i18n.getString('BulkEdit_NewValueHeader'),\r\n formatValue: i18n.formatDecimalToFixed,\r\n }];\r\n this.dataSource = {\r\n type: 'memory',\r\n data: [],\r\n };\r\n this.scrollable = {\r\n virtual: true,\r\n };\r\n this.plugins = {\r\n pagination: {\r\n pageSize: 20,\r\n availablePageSizes: [20, 50, 100, 200, 500],\r\n enableRandomPage: false,\r\n },\r\n placeholder: {\r\n container: '.bulkedit-noresult-container',\r\n text: i18n.getString('HotelCenter_BulkEdit_Preview_NoResult'),\r\n },\r\n };\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\n\r\nimport _ from 'underscore';\r\nimport pgrid from 'projection-grid';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\n\r\nimport { parseErrors } from './error-map';\r\nimport { BulkEditView } from './bulk-edit-view';\r\nimport { PreviewGridOptions } from './preview-grid-options';\r\nimport { instrumentation } from '../hotel-center-shared';\r\nimport { bulkEditParams } from '../hotel-center-service';\r\n\r\nconst { getEntityWrapper, getOldValue, getNewValue } = globalContext.require('campaignui/feature/bulk-operation/edit-detail/detail-mapper');\r\nconst JobModel = globalContext.require('campaignui/feature/bulk-operation/util/bulk-edit-job');\r\nconst appState = globalContext.require('component/state/index');\r\n\r\nfunction renderPreviewGrid(view, { el }) {\r\n const gridOptions = new PreviewGridOptions({ el });\r\n const grid = pgrid.factory({ vnext: true })\r\n .use(paginationPlugin)\r\n .use(placeholderPlugin)\r\n .create(gridOptions);\r\n\r\n view.grid = grid;\r\n\r\n grid.gridView.render();\r\n}\r\n\r\nfunction updatePreviewResults(view, data) {\r\n const jobModel = new JobModel(data);\r\n const results = _.result(data, 'BulkEditResults', []);\r\n const gridData = _.map(results, result => ({\r\n Name: getEntityWrapper(jobModel)(result).entityName,\r\n OriginalValue: getOldValue(jobModel)(result),\r\n NewValue: getNewValue(jobModel)(result),\r\n }));\r\n\r\n view.grid.dataSource.data = gridData;\r\n view.grid.gridView.refresh(true);\r\n}\r\n\r\nfunction onSave(view, bulkEditView) {\r\n const { selectionCount } = view.getState();\r\n\r\n if (selectionCount < 1) {\r\n throw new Error('Save should not be called when no item is selected.');\r\n }\r\n if (!view.validate()) {\r\n return;\r\n }\r\n const overViewPageScenario = instrumentation.overViewPage.create();\r\n\r\n view.activity = overViewPageScenario[view.activityName].create();\r\n view.activity.trace(`Task ${view.activityName} started`);\r\n view.setState({ showRequestError: false });\r\n view.bulkEditView.viewModel.disableAction(true);\r\n bulkEditView.save();\r\n}\r\n\r\nfunction completeCB(view, response) {\r\n view.activity.trace(`Task ${view.activityName} completed`);\r\n view.bulkEditView.viewModel.showProgress(false);\r\n view.bulkEditView.viewModel.disableAction(false);\r\n view.bulkEditView.$('.preview-container').hide();\r\n view.completeToast(response);\r\n view.trigger('saved', response);\r\n}\r\n\r\nfunction failedCB(view, response) {\r\n view.activity.error(JSON.stringify(response));\r\n const errors = parseErrors(response);\r\n\r\n view.setState({\r\n showRequestError: true,\r\n errors,\r\n });\r\n view.bulkEditView.viewModel.showProgress(false);\r\n view.bulkEditView.viewModel.disableAction(false);\r\n view.bulkEditView.$('.preview-container').hide();\r\n view.failedToast(response);\r\n view.trigger('error', response);\r\n}\r\n\r\nfunction onPreview(view) {\r\n view.bulkEditView.$('.preview-container').hide();\r\n const { selectionCount } = view.getState();\r\n\r\n if (selectionCount < 1) {\r\n throw new Error('Preview should not be called when no item is selected.');\r\n }\r\n if (!view.validate()) {\r\n return;\r\n }\r\n view.bulkEditView.preview();\r\n}\r\n\r\nfunction initBulkEditView(view) {\r\n const bulkEditView = new BulkEditView({\r\n blockerEl: view.el,\r\n showPreview: true,\r\n getBulkEditParams: options => view.getBulkEditParams(options),\r\n completeCB: response => completeCB(view, response),\r\n failedCB: response => failedCB(view, response),\r\n renderPreviewGrid: options => renderPreviewGrid(view, options),\r\n updatePreviewResults: data => updatePreviewResults(view, data),\r\n }).render();\r\n\r\n bulkEditView.$('.preview-container').addClass('bingadsgrid');\r\n bulkEditView.on('saveClicked', () => onSave(view, bulkEditView));\r\n bulkEditView.on('cancelClicked', () => view.onCancel());\r\n bulkEditView.on('previewClicked', () => onPreview(view, bulkEditView));\r\n view.bulkEditView = bulkEditView;\r\n}\r\n\r\n\r\nexport class BulkEditPanelBase extends DeterministicView {\r\n initialize({\r\n completeToast,\r\n failedToast,\r\n activityName,\r\n }) {\r\n this.completeToast = completeToast;\r\n this.failedToast = failedToast;\r\n this.activityName = activityName;\r\n initBulkEditView(this);\r\n }\r\n\r\n getBatchAction() {\r\n throw new Error('Unimplemented BulkEditPanelBase.getBatchAction()');\r\n }\r\n\r\n getBulkEditParams({\r\n isPreview = false,\r\n } = {}) {\r\n const state = this.getState();\r\n const batchActions = this.getBatchAction(state);\r\n const entity = _.result({\r\n hotel: 'Hotel',\r\n hotelGroup: 'HotelGroup',\r\n }, state.scope);\r\n const { selectionCount, selectedItems, filter } = state;\r\n const campaignId = appState.get('subAccount_id') ? Number(appState.get('subAccount_id')) : null;\r\n const params = bulkEditParams({\r\n selectionCount,\r\n selectedIds: _.pluck(selectedItems, 'Id'),\r\n filter,\r\n batchActions,\r\n entity,\r\n campaignId,\r\n isPreview,\r\n });\r\n\r\n return params;\r\n }\r\n selectionAcrossPage() {\r\n const { mainGrid } = this;\r\n const { pgridPlugins } = mainGrid;\r\n\r\n return pgridPlugins &&\r\n pgridPlugins.crossPageSelectAll &&\r\n pgridPlugins.crossPageSelectAll.isAllSelected;\r\n }\r\n\r\n deselectAll() {\r\n if (this.selectionAcrossPage()) {\r\n this.mainGrid.pgridPlugins.crossPageSelectAll.deselectAll();\r\n } else {\r\n this.mainGrid.gridView.deselectAll();\r\n }\r\n }\r\n onEvent() {\r\n this.on('canceled', () => {\r\n this.trigger('hide');\r\n }, this);\r\n\r\n this.on('saved', () => {\r\n this.trigger('hide');\r\n this.deselectAll();\r\n this.mainGrid.gridView.refresh(true);\r\n }, this);\r\n\r\n this.on('error', () => {\r\n this.mainGrid.gridView.refresh(true);\r\n }, this);\r\n }\r\n onCancel() {\r\n this.setState({ showRequestError: false });\r\n this.bulkEditView.$('.preview-container').hide();\r\n this.trigger('canceled');\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\nexport function completeToast(successKey, partialSuccessKey, response) {\r\n if (response.SuccessRowCount === response.TotalRowCount) {\r\n window.App.views.alertCenter.toastConfirmation(i18n.getString(successKey, {\r\n success: response.SuccessRowCount,\r\n total: response.TotalRowCount,\r\n }));\r\n } else {\r\n window.App.views.alertCenter.toastWarning(i18n.getString(partialSuccessKey, {\r\n success: response.SuccessRowCount,\r\n total: response.TotalRowCount,\r\n }));\r\n }\r\n return response;\r\n}\r\n\r\nexport function failedToast(failedKey, response) {\r\n window.App.views.alertCenter.toastError(i18n.getString(failedKey));\r\n return response;\r\n}\r\n","import ko from 'knockout';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\nexport default class ViewModel {\r\n constructor() {\r\n this.disableAction = ko.observable(false);\r\n this.showProgress = ko.observable(false);\r\n this.totalRowCount = ko.observable(0);\r\n this.successRowCount = ko.observable(0);\r\n this.errorRowCount = ko.observable(0);\r\n this.percentage = ko.computed(() => {\r\n let percent = 0;\r\n\r\n if (this.totalRowCount() > 0) {\r\n percent = ((this.successRowCount() + this.errorRowCount()) / this.totalRowCount()) * 100;\r\n percent = percent.toFixed(2);\r\n }\r\n return percent;\r\n });\r\n this.percentageWidth = ko.computed(() => `${this.percentage()}%`);\r\n this.percentageText = ko.computed(() =>\r\n i18n.getString('Formatter_Percentage_New', {\r\n percentage: this.percentage(),\r\n }));\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport Backbone from 'backbone';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport ViewModel from './bulk-edit-vm';\r\nimport template from './bulk-edit-template.pug';\r\nimport { bulkEditService } from '../hotel-center-service';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\nexport class BulkEditView extends Backbone.View {\r\n initialize(options = {}) {\r\n this.options = _.defaults({}, options, {\r\n showPreview: true,\r\n });\r\n this.renderPreviewGrid = this.options.renderPreviewGrid || _.noop;\r\n this.updatePreviewResults = this.options.updatePreviewResults || _.noop;\r\n this.getBulkEditParams = this.options.getBulkEditParams || _.noop;\r\n this.blockerEl = this.options.blockerEl;\r\n this.viewModel = new ViewModel();\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click #Cancel': () => this.trigger('cancelClicked'),\r\n 'click #Save': () => this.trigger('saveClicked'),\r\n 'click #Preview': () => this.trigger('previewClicked'),\r\n };\r\n }\r\n\r\n progressCb(response) {\r\n this.viewModel.showProgress(true);\r\n this.viewModel.totalRowCount(response.TotalRowCount);\r\n this.viewModel.successRowCount(response.SuccessRowCount);\r\n this.viewModel.errorRowCount(response.ErrorRowCount);\r\n }\r\n\r\n preview() {\r\n const params = this.getBulkEditParams({ isPreview: true });\r\n\r\n this.viewModel.showProgress(false);\r\n // TODO: process error later\r\n bulkEditService.preview({\r\n params,\r\n })\r\n .finally(withUiBlock(this.blockerEl || this.$el.parent()))\r\n .then((data) => {\r\n this.showPreview(data);\r\n });\r\n }\r\n\r\n showPreview(data) {\r\n this.$('.preview-container').show();\r\n this.updatePreviewResults(data);\r\n }\r\n\r\n save() {\r\n bulkEditService.save(_.defaults({\r\n params: this.getBulkEditParams(),\r\n progressCB: _.bind(this.progressCb, this),\r\n }, _.pick(this.options, ['completeCB', 'failedCB'])))\r\n .finally(withUiBlock(this.blockerEl || this.$el.parent()));\r\n }\r\n\r\n render() {\r\n this.$el.html(template({\r\n showPreview: this.options.showPreview,\r\n saveText: this.options.saveText || i18n.getString('Button_Save'),\r\n cancelText: this.options.cancelText || i18n.getString('Button_Cancel'),\r\n previewText: this.options.previewText || i18n.getString('BulkEdit_PreviewChanges'),\r\n }));\r\n\r\n this.$('.preview-container').hide();\r\n\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n this.renderPreviewGrid({\r\n el: this.$('.grid-table'),\r\n });\r\n\r\n return this;\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\n\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { BackboneSchema as backboneSchema } from '@bingads-webui/backbone-schema';\r\nimport { InputControl } from '@bingads-webui/input-control';\r\nimport { PercentageBid, FixedBid } from '@bingads-webui/hotel-odata-schemas';\r\nimport { BulkEditPanelBase } from './bulk-edit-panel-base';\r\nimport { completeToast, failedToast } from './bulk-edit-toast';\r\nimport template from './increase-decrease-bid-panel-template.pug';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst config = globalContext.require('component/config/index');\r\nconst decimal = globalContext.require('component/humanize/decimal');\r\n\r\n/**\r\n * define Object State\r\n * @typedef {Object} State\r\n * @property {string} scope - enum, 'hotel' or 'hotelGroup'\r\n * @property {string} action - enum, 'increase' or 'decrease'\r\n * @property {number} amount\r\n * @property {string} unit - enum, 'number' or 'percent'\r\n * @property {number} bidCap\r\n * @property {boolean} isBidCapEnabled\r\n * @property {boolean} showRequestError\r\n * @property {string[]} errors\r\n * @property {number} selectionCount\r\n * @property {Object[]} selectedItems\r\n * @property {string} title\r\n * @property {string} bidType - enum, see BID_TYPE below\r\n * @property {Object} filter - equals to grid.filter.getCurrentFilter()\r\n */\r\n\r\nconst TITLE_MAP = {\r\n hotel: {\r\n singular: 'HotelCenter_Overview_Edit_Increase_Decrease_Bids_Label_Hotel',\r\n plural: 'HotelCenter_Overview_Edit_Increase_Decrease_Bids_Label_Hotels',\r\n },\r\n hotelGroup: {\r\n singular: 'HotelCenter_Overview_Edit_Increase_Decrease_Bids_Label_HotelGroup',\r\n plural: 'HotelCenter_Overview_Edit_Increase_Decrease_Bids_Label_HotelGroups',\r\n },\r\n};\r\n\r\nconst BID_TYPE = {\r\n fixed: '#Model.FixedBid',\r\n percentage: '#Model.PercentageBid',\r\n};\r\n\r\nfunction getBitTypeSet(selectedItems) {\r\n return _.chain(selectedItems)\r\n .map(item => item.Bid['@odata.type'])\r\n .uniq()\r\n .value();\r\n}\r\nfunction initBidNumberInput(view) {\r\n const Entity = backboneSchema(FixedBid, i18n, ['Amount', '@odata.type']);\r\n const entity = new Entity();\r\n\r\n view.bidNumberInput = new InputControl({\r\n entity,\r\n field: 'Amount',\r\n ariaLabel: i18n.getString('HotelCenter_Shared_Bid_Number'),\r\n });\r\n view.bidNumberInput.on('input-changed', () => {\r\n view.setState({ showRequestError: false });\r\n });\r\n view.setChild('bid-number-input', view.bidNumberInput);\r\n}\r\n\r\nfunction initBidPercentInput(view) {\r\n const Entity = backboneSchema(PercentageBid, i18n, ['Amount', '@odata.type']);\r\n const entity = new Entity();\r\n\r\n view.bidPercentInput = new InputControl({\r\n entity,\r\n field: 'Amount',\r\n ariaLabel: i18n.getString('HotelCenter_Shared_Bid_Percent'),\r\n });\r\n view.bidPercentInput.on('input-changed', () => {\r\n view.setState({ showRequestError: false });\r\n });\r\n view.setChild('bid-percent-input', view.bidPercentInput);\r\n}\r\n\r\nfunction initBidCapNumberInput(view) {\r\n const Entity = backboneSchema(FixedBid, i18n, ['Amount', '@odata.type']);\r\n const entity = new Entity();\r\n\r\n view.bidCapNumberInput = new InputControl({\r\n entity,\r\n field: 'Amount',\r\n ariaLabel: i18n.getString('HotelCenter_Shared_Bid_Cap_Number'),\r\n });\r\n view.bidCapNumberInput.on('input-changed', () => {\r\n view.setState({ showRequestError: false });\r\n });\r\n view.setChild('bid-cap-number-input', view.bidCapNumberInput);\r\n}\r\n\r\nfunction initBidCapPercentInput(view) {\r\n const Entity = backboneSchema(PercentageBid, i18n, ['Amount', '@odata.type']);\r\n const entity = new Entity();\r\n\r\n view.bidCapPercentInput = new InputControl({\r\n entity,\r\n field: 'Amount',\r\n ariaLabel: i18n.getString('HotelCenter_Shared_Bid_Cap_Percent'),\r\n });\r\n view.bidCapPercentInput.on('input-changed', () => {\r\n view.setState({ showRequestError: false });\r\n });\r\n view.setChild('bid-cap-percent-input', view.bidCapPercentInput);\r\n}\r\n\r\n/**\r\n * Class representing a panel for bulk increase or decrease bid\r\n * @extends BulkEditPanelBase\r\n * @event \"saved\" event is triggered when bulk operation compeleted successfully\r\n * @event \"canceled\" event is triggered when click cancel button\r\n * @event \"error\" event is triggered when bulk operation ends with error\r\n * @returns {BulkIncreaseDecreaseBidPanel} - BulkIncreaseDecreaseBidPanel\r\n */\r\nexport default class BulkIncreaseDecreaseBidPanel extends BulkEditPanelBase {\r\n initialize({\r\n viewConfig,\r\n selectedRowCount,\r\n gridName,\r\n }) {\r\n let selectedItems = [];\r\n let bidTypeSet = [];\r\n this.mainGrid = viewConfig.grid;\r\n selectedItems = this.mainGrid.gridView.selectedItems();\r\n bidTypeSet = getBitTypeSet(selectedItems);\r\n this.mainGrid.gridView.on('didSelect', () => {\r\n this.onSelected();\r\n });\r\n this.onEvent();\r\n this.i18n = i18n;\r\n this.accountCurrency = config.get('AccountCurrencyCode');\r\n this.percentSymbol = decimal.getFormat().percentSymbol;\r\n this.BID_TYPE = BID_TYPE;\r\n super.initialize({\r\n completeToast: _.partial(completeToast, 'HotelCenter_BulkEdit_Update_Bid_Success', 'HotelCenter_BulkEdit_Update_Bid_Partial_Success'),\r\n failedToast: _.partial(failedToast, 'HotelCenter_BulkEdit_Update_Bid_Failed'),\r\n activityName: 'bulkEditIncreaseDecreaseBid',\r\n });\r\n this.scope = 'hotel';\r\n if (gridName === 'HotelGroupGrid') {\r\n this.scope = 'hotelGroup';\r\n }\r\n this.setState({\r\n scope: this.scope,\r\n action: 'increase',\r\n unit: 'number',\r\n bidType: BID_TYPE.fixed,\r\n isBidCapEnabled: false,\r\n errors: [],\r\n });\r\n this.updateSelection({\r\n selectionCount: selectedRowCount || 0,\r\n selectedItems,\r\n bidTypeSet,\r\n filter: null,\r\n });\r\n }\r\n\r\n getBatchAction(state) {\r\n const {\r\n action, // increase || decrease\r\n amount,\r\n unit, // number || percent\r\n bidCap,\r\n isBidCapEnabled,\r\n } = state;\r\n const actionType = _.result({\r\n number: 'ChangeByAmount',\r\n percent: 'ChangeByPercent',\r\n }, unit);\r\n const factor = _.result({\r\n increase: '',\r\n decrease: '-',\r\n }, action);\r\n const value = factor + amount;\r\n const limit = isBidCapEnabled ? bidCap : null;\r\n const batchActions = {\r\n Actions: [{\r\n '@odata.type': '#Model.NumericAction',\r\n ActionType: actionType,\r\n Limit: limit,\r\n Value: value,\r\n Property: 'Bid/Amount',\r\n }],\r\n };\r\n\r\n return batchActions;\r\n }\r\n\r\n onSelected = () => {\r\n const selectedItems = this.mainGrid.gridView.selectedItems();\r\n const selectionCount =\r\n this.mainGrid.crossPageSelectAll && this.mainGrid.crossPageSelectAll.isAllSelected ?\r\n this.mainGrid.crossPageSelectAll.viewModel.totalRowsTotalPageCount() :\r\n selectedItems.length;\r\n const filter = null;\r\n const bidTypeSet = getBitTypeSet(selectedItems);\r\n this.updateSelection({\r\n selectionCount,\r\n selectedItems,\r\n bidTypeSet,\r\n filter,\r\n });\r\n }\r\n onCancel() {\r\n super.onCancel();\r\n }\r\n\r\n updateSelection({\r\n selectionCount,\r\n selectedItems,\r\n bidTypeSet,\r\n filter,\r\n }) {\r\n const titleKey = TITLE_MAP[super.getState().scope][selectionCount === 1 ? 'singular' : 'plural'];\r\n const title = this.i18n.getString(titleKey)\r\n .replace('{0}', selectionCount);\r\n\r\n this.setState({\r\n selectionCount,\r\n selectedItems,\r\n filter,\r\n title,\r\n showRequestError: false,\r\n });\r\n this.bulkEditView.$('.preview-container').hide();\r\n this.bulkEditView.viewModel.disableAction(_.size(bidTypeSet) !== 1);\r\n if (_.size(bidTypeSet) === 1) {\r\n const bidType = _.first(bidTypeSet);\r\n\r\n this.setState({ bidType });\r\n if (bidType === BID_TYPE.percentage) {\r\n this.setState({ unit: 'percent' });\r\n }\r\n }\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'change .action': ({ target }) => {\r\n this.setState({\r\n action: target.value,\r\n showRequestError: false,\r\n });\r\n },\r\n 'change .unit': ({ target }) => {\r\n this.setState({\r\n unit: target.value,\r\n showRequestError: false,\r\n });\r\n },\r\n 'change .bid-cap-enabled': ({ target }) => {\r\n this.setState({\r\n isBidCapEnabled: target.checked,\r\n showRequestError: false,\r\n });\r\n },\r\n };\r\n }\r\n\r\n get bidInput() {\r\n const { unit } = super.getState();\r\n\r\n return _.result({\r\n number: () => this.bidNumberInput,\r\n percent: () => this.bidPercentInput,\r\n }, unit);\r\n }\r\n\r\n get bidCapInput() {\r\n const { bidType } = super.getState();\r\n\r\n return _.result({\r\n [BID_TYPE.fixed]: () => this.bidCapNumberInput,\r\n [BID_TYPE.percentage]: () => this.bidCapPercentInput,\r\n }, bidType);\r\n }\r\n\r\n getState() {\r\n const state = super.getState();\r\n\r\n return _.defaults({\r\n amount: this.bidInput.getState().value,\r\n bidCap: this.bidCapInput.getState().value,\r\n }, state);\r\n }\r\n\r\n /**\r\n * set state\r\n * @param {State} state - see definition above\r\n * @returns {View} - return view itself\r\n */\r\n setState(state) {\r\n const oldState = super.getState();\r\n\r\n super.setState(state);\r\n const newState = super.getState();\r\n\r\n if (_.has(state, 'unit') && (state.unit !== oldState.unit)) {\r\n _.result({\r\n percent: () => initBidPercentInput(this),\r\n number: () => initBidNumberInput(this),\r\n }, state.unit);\r\n }\r\n if (_.has(state, 'bidType') && (state.bidType !== oldState.bidType)) {\r\n _.result({\r\n [BID_TYPE.percentage]: () => initBidCapPercentInput(this),\r\n [BID_TYPE.fixed]: () => initBidCapNumberInput(this),\r\n }, state.bidType);\r\n this.bidCapInput.setState({ readonly: !newState.isBidCapEnabled });\r\n }\r\n if (_.has(state, 'isBidCapEnabled')) {\r\n const childState = {\r\n readonly: !state.isBidCapEnabled,\r\n };\r\n\r\n if (state.isBidCapEnabled === false) {\r\n childState.value = '';\r\n childState.showError = false;\r\n }\r\n this.bidCapInput.setState(childState);\r\n }\r\n return this;\r\n }\r\n\r\n validate() {\r\n const { isBidCapEnabled } = super.getState();\r\n const isBidValid = this.bidInput.getState().isValid;\r\n const isBidCapValid = isBidCapEnabled ? this.bidCapInput.getState().isValid : true;\r\n const isBidNotZero = this.bidInput.getState().value !== '0';\r\n\r\n if (!isBidValid) {\r\n this.bidInput.setState({ showError: true });\r\n } else if (!isBidNotZero) {\r\n this.setState({\r\n showRequestError: true,\r\n errors: [i18n.getString('HotelCenter_Overview_Bulk_Errormsg_BidAmountIsZero')],\r\n });\r\n }\r\n if (!isBidCapValid) {\r\n this.bidCapInput.setState({ showError: true });\r\n }\r\n return isBidValid && isBidCapValid && isBidNotZero;\r\n }\r\n\r\n renderTrunk() {\r\n super.renderTrunk();\r\n this.$('.bulk-edit-container').append(this.bulkEditView.el);\r\n }\r\n\r\n remove() {\r\n this.bulkEditView.remove();\r\n super.remove();\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport const processError = ({ errors, scope, i18n }) => {\r\n let errorMsg = i18n.getString('HotelCenter_Overview_Bulk_Errormsg_GenericMsg');\r\n\r\n const result = _.pluck(errors, 'Code')[0];\r\n\r\n const errorMsgMap = {\r\n EntityDoesNotExist: i18n.getString('HotelCenter_Overview_Bulk_Errormsg_EntityDoesNotExist').replace(/\\{0\\}/g, scope),\r\n DefaultHotelGroupUpdateNotAllowed: i18n.getString('HotelCenter_Overview_Bulk_Errormsg_DefaultHotelGroupUpdateNotAllowed'),\r\n DuplicateValues: i18n.getString('HotelCenter_Overview_Bulk_Errormsg_DuplicateValues'),\r\n InvalidValue: i18n.getString(_TL_('Invalid value')),\r\n InvalidBidMultiplier: i18n.getString(_TL_('Invalid bid multiplier value')),\r\n SwitchingofBidTypeFromPPStoNonPPSAndViceVersaIsNotAllowed: i18n.getString(_TL_('Switching of bid type from PPS to non-PPS and vice versa is not allowed')),\r\n OnlySupportedBMValueIsDecreaseby100OrIncreaseby0: i18n.getString(_TL_('Only supported BM value is decrease by 100 or increase by 0')),\r\n };\r\n\r\n if (_.has(errorMsgMap, result)) {\r\n errorMsg = errorMsgMap[result];\r\n }\r\n\r\n return errorMsg;\r\n};\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\nexport const conversionColumns = parentProperty => [bingadsGridColumn({\r\n name: 'ConversionRate',\r\n property: `${parentProperty}ConversionRate`,\r\n title: i18n.getString('HotelCenter_Overview_Grid_ConversionRate_Label'),\r\n type: 'number',\r\n format: 'percentage-value',\r\n sortable: true,\r\n}), bingadsGridColumn({\r\n name: 'Conversions',\r\n property: `${parentProperty}Conversions`,\r\n title: i18n.getString('HotelCenter_Overview_Grid_Conversions_Label'),\r\n type: 'number',\r\n format: 'integer',\r\n sortable: true,\r\n}), bingadsGridColumn({\r\n name: 'CPA',\r\n property: `${parentProperty}CPA`,\r\n title: i18n.getString('HotelCenter_Overview_Grid_CPA_Label'),\r\n type: 'number',\r\n sortable: true,\r\n}), bingadsGridColumn({\r\n name: 'GrossRevenue',\r\n property: `${parentProperty}GrossRevenue`,\r\n title: i18n.getString('HotelCenter_Overview_Grid_GrossRevenue_Label'),\r\n type: 'number',\r\n sortable: true,\r\n}), bingadsGridColumn({\r\n name: 'GrossRevenuePerClick',\r\n property: `${parentProperty}GrossRevenuePerClick`,\r\n sortable: true,\r\n type: 'number',\r\n title: i18n.getString('HotelCenter_Overview_Grid_GrossRevenuePerClick_Label'),\r\n}), bingadsGridColumn({\r\n name: 'GrossRevenuePerConv',\r\n property: `${parentProperty}GrossRevenuePerConv`,\r\n sortable: true,\r\n type: 'number',\r\n title: i18n.getString('HotelCenter_Overview_Grid_GrossRevenuePerConv_Label'),\r\n}), bingadsGridColumn({\r\n name: 'GrossROAS',\r\n property: `${parentProperty}GrossROAS`,\r\n sortable: true,\r\n type: 'number',\r\n format: 'percentage-value',\r\n title: i18n.getString('HotelCenter_Overview_Grid_GrossROAS_Label'),\r\n}), bingadsGridColumn({\r\n name: 'NetRevenue',\r\n property: `${parentProperty}NetRevenue`,\r\n title: i18n.getString('HotelCenter_Overview_Grid_NetRevenue_Label'),\r\n type: 'number',\r\n sortable: true,\r\n}), bingadsGridColumn({\r\n name: 'NetRevenuePerClick',\r\n property: `${parentProperty}NetRevenuePerClick`,\r\n sortable: true,\r\n type: 'number',\r\n title: i18n.getString('HotelCenter_Overview_Grid_NetRevenuePerClick_Label'),\r\n}), bingadsGridColumn({\r\n name: 'NetRevenueConv',\r\n property: `${parentProperty}NetRevenueConv`,\r\n sortable: true,\r\n type: 'number',\r\n title: i18n.getString('HotelCenter_Overview_Grid_NetRevenueConv_Label'),\r\n}), bingadsGridColumn({\r\n name: 'NetROAS',\r\n property: `${parentProperty}NetROAS`,\r\n sortable: true,\r\n type: 'number',\r\n format: 'percentage-value',\r\n title: i18n.getString('HotelCenter_Overview_Grid_NetROAS_Label'),\r\n}), bingadsGridColumn({\r\n name: 'TotalBookedNights',\r\n property: `${parentProperty}TotalBookedNights`,\r\n title: i18n.getString('HotelCenter_Overview_Grid_TotalBookedNights_Label'),\r\n type: 'number',\r\n format: 'integer',\r\n sortable: true,\r\n}), bingadsGridColumn({\r\n name: 'AvgBookedABW',\r\n property: `${parentProperty}AvgBookedABW`,\r\n title: i18n.getString('HotelCenter_Overview_Grid_AvgBookedABW_Label'),\r\n type: 'number',\r\n sortable: true,\r\n}), bingadsGridColumn({\r\n name: 'AvgBookedNights',\r\n property: `${parentProperty}AvgBookedNights`,\r\n title: i18n.getString('HotelCenter_Overview_Grid_AvgBookedNights_Label'),\r\n type: 'number',\r\n sortable: true,\r\n}), bingadsGridColumn({\r\n name: 'BookedABW',\r\n property: `${parentProperty}BookedABW`,\r\n title: i18n.getString('HotelCenter_Overview_Grid_BookedABW_Label'),\r\n type: 'number',\r\n format: 'integer',\r\n sortable: true,\r\n})];\r\n\r\nexport const conversionColumnList = ['Conversions', 'ConversionRate', 'CPA', 'GrossRevenue', 'GrossRevenuePerClick',\r\n 'GrossRevenuePerConv', 'GrossROAS', 'NetRevenue', 'NetRevenuePerClick', 'NetRevenueConv', 'NetROAS', 'TotalBookedNights',\r\n 'AvgBookedABW', 'BookedABW', 'AvgBookedNights'];\r\n\r\nexport const conversionFilterReWriteMap = parentProperty => ({\r\n [`${parentProperty}Conversions`]: i18n.getString('HotelCenter_Overview_Grid_Conversions_Label'),\r\n [`${parentProperty}ConversionRate`]: i18n.getString('HotelCenter_Overview_Grid_ConversionRate_Label'),\r\n [`${parentProperty}CPA`]: i18n.getString('HotelCenter_Overview_Grid_CPA_Label'),\r\n [`${parentProperty}GrossRevenue`]: i18n.getString('HotelCenter_Overview_Grid_GrossRevenue_Label'),\r\n [`${parentProperty}GrossRevenuePerClick`]: i18n.getString('HotelCenter_Overview_Grid_GrossRevenuePerClick_Label'),\r\n [`${parentProperty}GrossRevenuePerConv`]: i18n.getString('HotelCenter_Overview_Grid_GrossRevenuePerConv_Label'),\r\n [`${parentProperty}GrossROAS`]: i18n.getString('HotelCenter_Overview_Grid_GrossROAS_Label'),\r\n [`${parentProperty}NetRevenue`]: i18n.getString('HotelCenter_Overview_Grid_NetRevenue_Label'),\r\n [`${parentProperty}NetRevenuePerClick`]: i18n.getString('HotelCenter_Overview_Grid_NetRevenuePerClick_Label'),\r\n [`${parentProperty}NetRevenueConv`]: i18n.getString('HotelCenter_Overview_Grid_NetRevenueConv_Label'),\r\n [`${parentProperty}NetROAS`]: i18n.getString('HotelCenter_Overview_Grid_NetROAS_Label'),\r\n [`${parentProperty}TotalBookedNights`]: i18n.getString('HotelCenter_Overview_Grid_TotalBookedNights_Label'),\r\n [`${parentProperty}AvgBookedABW`]: i18n.getString('HotelCenter_Overview_Grid_AvgBookedABW_Label'),\r\n [`${parentProperty}BookedABW`]: i18n.getString('HotelCenter_Overview_Grid_BookedABW_Label'),\r\n [`${parentProperty}AvgBookedNights`]: i18n.getString('HotelCenter_Overview_Grid_AvgBookedNights_Label'),\r\n});\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { OverridableToolbarView } from '@bingads-webui/toolbar';\r\nimport { HotelDimensionRow as schema } from '@bingads-webui/hotel-odata-schemas';\r\nimport { conversionColumns, conversionColumnList } from './hotel-center-conversion-columns';\r\nimport { instrumentation } from '../hotel-center-shared';\r\nimport { inlineDownloadUtils } from '../hotel-center-utils';\r\n\r\nconst s$i18n = globalContext.require('$/schema-i18n!hotel-center');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\nconst config = globalContext.require('component/config/index');\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst { DownloadView } = globalContext.require('campaignui/feature/griddownload/view/adapter');\r\nconst state = globalContext.require('component/state/index');\r\nconst pageContext = globalContext.require('PageContext');\r\n\r\nconst biPerformanceColumns = ['Impressions', 'Clicks', 'CTR', 'AverageCPC', 'AverageCPCUSD', 'AveragePosition', 'Spend', 'SpendUSD'];\r\nconst {\r\n Columns: ColumnsResource,\r\n SelectedColumns: SelectedColumnsResource,\r\n} = globalContext.require('component/bingads-grid/service/column-chooser-preferences');\r\n\r\nconst getColumnChooserConfig = ({\r\n columnsPrev,\r\n attributesColumns,\r\n performanceColumns,\r\n}) => ({\r\n categories: _.compact([{\r\n name: i18n.getString('Attributes'),\r\n options: _.map(attributesColumns, ({ name, title }) => ({\r\n key: name,\r\n name: title,\r\n })),\r\n }, {\r\n name: i18n.getString('Performance'),\r\n options: _.map(performanceColumns, ({ name, title }) => ({\r\n key: name,\r\n name: title,\r\n selectOption: 'optional',\r\n })),\r\n }, {\r\n name: i18n.getString('Conversions'),\r\n options: _.map(conversionColumns(''), ({ name, title }) => ({\r\n key: name,\r\n name: title,\r\n selectOption: 'optional',\r\n })),\r\n }]),\r\n selected: columnsPrev.concat(['Clicks', 'Impressions', 'CTR', 'Spend', 'SpendUSD', 'AverageCPC', 'AveragePosition']),\r\n locked: columnsPrev,\r\n customToolbarIcon: 'ba-TripleColumnSolid',\r\n Columns: ColumnsResource,\r\n SelectedColumns: SelectedColumnsResource,\r\n i18n,\r\n isForVNext: true,\r\n isHotelCenterGrid: true,\r\n});\r\n\r\nexport default class Options {\r\n constructor({\r\n gridName,\r\n dateFilterContainer,\r\n columnsPrev,\r\n preferenceService,\r\n p$daterange,\r\n filterService,\r\n }) {\r\n this.i18n = i18n;\r\n this.name = gridName;\r\n this.filterService = filterService;\r\n this.p$daterange = p$daterange;\r\n const pageSizes = [20, 50, 100, 200];\r\n const entitySet = edm.currentAccount['Default.PerformanceReport'];\r\n const selectColumn = columnsPrev.concat(biPerformanceColumns.concat(conversionColumnList)).join(',');\r\n const permissions = pageContext.Permissions;\r\n\r\n this.preferenceService = preferenceService;\r\n this.config = config;\r\n this.tableClasses = ['table', 'table-bordered'];\r\n this.scrolling = {\r\n virtualized: true,\r\n viewport: window,\r\n header: {\r\n type: 'sticky',\r\n offset() {\r\n return $('.navbar-fixed-top').height();\r\n },\r\n },\r\n };\r\n this.dataSource = {\r\n type: 'js-data',\r\n entity: jsdata.HotelDimensionRow,\r\n options: {\r\n entitySet,\r\n cacheResponse: false,\r\n },\r\n query: {\r\n $select: selectColumn,\r\n },\r\n };\r\n\r\n this.performanceColumns = [bingadsGridColumn({\r\n name: 'Clicks',\r\n field: 'Clicks',\r\n type: 'number',\r\n format: 'integer',\r\n sortable: true,\r\n title: 'HotelCenter_Overview_Grid_Clicks_Label',\r\n helpId: 'pop_BA_HotelAds_Clicks',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'Impressions',\r\n field: 'Impressions',\r\n sortable: true,\r\n type: 'number',\r\n format: 'integer',\r\n title: 'HotelCenter_Overview_Grid_Impression_Label',\r\n helpId: 'pop_BA_HotelAds_Impressions',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'CTR',\r\n field: 'CTR',\r\n sortable: true,\r\n type: 'number',\r\n format: 'percentage-value',\r\n title: 'HotelCenter_Overview_Grid_CTR_Label',\r\n helpId: 'pop_BA_HotelAds_CTR',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'Spend',\r\n field: 'Spend',\r\n sortable: true,\r\n type: 'number',\r\n title: 'HotelCenter_Overview_Grid_Spend_Label',\r\n helpId: 'pop_BA_HotelAds_Spend',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'SpendUSD',\r\n field: 'SpendUSD',\r\n sortable: true,\r\n type: 'number',\r\n title: 'HotelCenter_Overview_Grid_Spend_USD_Label',\r\n helpId: 'pop_BA_HotelAds_Spend',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'AverageCPC',\r\n filed: 'AverageCPC',\r\n sortable: true,\r\n type: 'number',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_AverageCPC_Label'),\r\n }), bingadsGridColumn({\r\n name: 'AverageCPCUSD',\r\n filed: 'AverageCPCUSD',\r\n sortable: true,\r\n type: 'number',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_AverageCPC_USD_Label'),\r\n })];\r\n\r\n if (!permissions.IsAvgPositionDeprecationPhase3Enabled) {\r\n this.performanceColumns.push(bingadsGridColumn({\r\n name: 'AveragePosition',\r\n filed: 'AveragePosition',\r\n sortable: true,\r\n type: 'number',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_AveragePosition_Label'),\r\n }));\r\n }\r\n\r\n this.columns = this.performanceColumns;\r\n this.columns = this.performanceColumns.concat(conversionColumns(''));\r\n\r\n const items = [\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 },\r\n ];\r\n\r\n this.gridToolbar = new OverridableToolbarView({\r\n toolbarId: _.uniqueId('grid-toolbar-'),\r\n items,\r\n }).render();\r\n $('.hotel-center-global-toolbar-containter .global-toolbar-container').append(this.gridToolbar.$el);\r\n\r\n this.plugins = {\r\n performanceLogNew: {\r\n instrumentation,\r\n },\r\n pagination: {\r\n pageSize: 20,\r\n availablePageSizes: pageSizes,\r\n enableRandomPage: false,\r\n pageSizeText: this.i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: this.i18n.getString('Grid_PageOf'),\r\n },\r\n dateFilter: {\r\n container: dateFilterContainer,\r\n isComparisonEnabled: false,\r\n isCustomRangeEnabled: true,\r\n },\r\n uiBlocker: {\r\n el: $('.hotel-center-overview-page'),\r\n },\r\n placeholder: {\r\n filteredContainer: '.grid-noresult',\r\n filteredEmptyText: i18n.getString('HotelCenter_Grid_NoFilteredRecords'),\r\n\r\n container: '.grid-noresult',\r\n text: this.i18n.getString('HotelCenter_Grid_NoRecords'),\r\n },\r\n editable: {\r\n i18n: this.i18n,\r\n },\r\n columnChooser: getColumnChooserConfig({\r\n columnsPrev,\r\n attributesColumns: [],\r\n performanceColumns: this.performanceColumns,\r\n }),\r\n inlineDownload: {\r\n isForVNext: true,\r\n i18n,\r\n DownloadView,\r\n isAvailable: true,\r\n schema: _.defaults({\r\n name: 'DimensionRow',\r\n }, schema),\r\n s$i18n,\r\n p$daterange,\r\n gridId: gridName,\r\n toolbar: undefined,\r\n downloadFormats: ['Csv', 'Csvzip'],\r\n processReportRule: inlineDownloadUtils.processReportRuleForHotelCenterBIDimensionRow,\r\n ReportEmailRule: (() => {\r\n const ReportEmailRule = state.get('$ReportEmailRule');\r\n state.unset('$ReportEmailRule');\r\n return _.isObject(ReportEmailRule) ? ReportEmailRule : null;\r\n })(),\r\n },\r\n };\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport HotelBiGridOptionsBase from './hotel-bi-grid-options-base';\r\n\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\n\r\nexport default class CountryCodeGridOptions extends HotelBiGridOptionsBase {\r\n constructor({\r\n view, gridName, dateFilterContainer, p$daterange, filterService, preferenceService,\r\n }) {\r\n const columnsPrev = ['HotelCountry'];\r\n\r\n super({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n columnsPrev,\r\n p$daterange,\r\n filterService,\r\n preferenceService,\r\n });\r\n\r\n this.columns.unshift(bingadsGridColumn({\r\n name: 'HotelCountry',\r\n title: i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Contry_Label'),\r\n sortable: true,\r\n filterable: true,\r\n }));\r\n\r\n this.plugins.columnChooser.categories[0].options.unshift({\r\n key: 'HotelCountry',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Contry_Label'),\r\n selectOption: 'locked',\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport HotelBiGridOptionsBase from './hotel-bi-grid-options-base';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\n\r\n\r\nexport default class HotelDateGridOptions extends HotelBiGridOptionsBase {\r\n constructor({\r\n view, gridName, dateFilterContainer, p$daterange, filterService, preferenceService,\r\n }) {\r\n const columnsPrev = ['Date'];\r\n\r\n super({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n columnsPrev,\r\n p$daterange,\r\n filterService,\r\n preferenceService,\r\n });\r\n\r\n this.columns.unshift(bingadsGridColumn({\r\n name: 'Date',\r\n title: i18n.getString('HotelCenter_Overview_Grid_Date_Label'),\r\n sortable: true,\r\n filterable: true,\r\n type: 'DayTime',\r\n property: 'Date',\r\n template: (local) => {\r\n if (_.isEmpty(local.value)) {\r\n return '';\r\n }\r\n\r\n return i18n.formatDate(new Date(local.value));\r\n },\r\n }));\r\n\r\n this.plugins.columnChooser.categories[0].options.unshift({\r\n key: 'Date',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Date_Label'),\r\n selectOption: 'locked',\r\n });\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport HotelBiGridOptionsBase from './hotel-bi-grid-options-base';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\n\r\n\r\nexport default class HotelDeviceTypeGridOptions extends HotelBiGridOptionsBase {\r\n constructor({\r\n view, gridName, dateFilterContainer, p$daterange, filterService, preferenceService,\r\n }) {\r\n const columnsPrev = ['DeviceType'];\r\n\r\n super({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n columnsPrev,\r\n p$daterange,\r\n filterService,\r\n preferenceService,\r\n });\r\n\r\n this.columns.unshift(bingadsGridColumn({\r\n name: 'DeviceType',\r\n field: 'DeviceType',\r\n title: i18n.getString('HotelCenter_Overview_Grid_DeviceType_Label'),\r\n locked: true,\r\n }));\r\n\r\n this.plugins.columnChooser.categories[0].options.unshift({\r\n key: 'DeviceType',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_DeviceType_Label'),\r\n selectOption: 'locked',\r\n });\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\n\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { include } from 'underscore.string';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { prompt as inlinePopupEditor } from '@bingads-webui/popup-editor';\r\nimport { OverridableToolbarView } from '@bingads-webui/toolbar';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { triggerScrollbarRepositionOnElementHeightChange } from '@bingads-webui-campaign-react/virtual-scrollbar-recalculate-trigger';\r\nimport { getGridName } from '@bingads-webui-campaign/inline-download-grids-metadata';\r\nimport { GridCustomizedPopupEditor } from '@bingads-webui-campaign/grid-customized-popup-editor';\r\nimport hotelNameColumnTemp from './hotel-name-column.pug';\r\nimport { conversionColumns } from './hotel-center-conversion-columns';\r\nimport { instrumentation, SubAccountModel } from '../hotel-center-shared';\r\nimport { bidMultiplierUtils } from '../hotel-center-utils';\r\n\r\nconst { crossPageSelectHeadRow } = globalContext.require('component/bingads-grid/plugin/cross-page-select-all/index');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst config = globalContext.require('component/config/index');\r\nconst decimal = globalContext.require('component/humanize/decimal');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst i18nShared = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared');\r\nconst state = globalContext.require('component/state/index');\r\nconst { DownloadView } = globalContext.require('campaignui/feature/griddownload/view/adapter');\r\nconst s$i18n = globalContext.require('$/schema-i18n!hotel-center');\r\nconst tableContainerSelector = '.bingadsgrid.hotel-center-overview-grid-container';\r\nconst {\r\n Columns: ColumnsResource,\r\n SelectedColumns: SelectedColumnsResource,\r\n} = globalContext.require('component/bingads-grid/service/column-chooser-preferences');\r\nconst pageContext = globalContext.require('PageContext');\r\n\r\nconst getColumnChooserConfig = ({\r\n attributesColumns,\r\n performanceColumns,\r\n}) => ({\r\n categories: _.compact([{\r\n name: i18n.getString('Attributes'),\r\n options: _.map(attributesColumns, ({ name, title }) => ({\r\n key: name,\r\n name: title,\r\n selectOption: name === 'Name' ? 'locked' : 'optional',\r\n })),\r\n }, {\r\n name: i18n.getString('Performance'),\r\n options: _.map(performanceColumns, ({ name, title }) => ({\r\n key: name,\r\n name: title,\r\n selectOption: 'optional',\r\n })),\r\n }, {\r\n name: i18n.getString('Conversions'),\r\n options: _.map(conversionColumns('Metrics/'), ({ name, title }) => ({\r\n key: name,\r\n name: title,\r\n selectOption: 'optional',\r\n })),\r\n }]),\r\n selected: ['Id', 'Name', 'Clicks', 'Impressions', 'CTR', 'Spend', 'AverageCPC', 'AveragePosition'],\r\n locked: ['Id'],\r\n customToolbarIcon: 'ba-TripleColumnSolid',\r\n Columns: ColumnsResource,\r\n SelectedColumns: SelectedColumnsResource,\r\n i18n,\r\n isForVNext: true,\r\n isHotelCenterGrid: true,\r\n});\r\n\r\nexport class HotelGridOptionsBase {\r\n constructor({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n schema,\r\n entitySet,\r\n onBulkEditChangeBids,\r\n onBulkEditChangeMultipliersBids,\r\n onBulkEditIncreseOrDecreseBids,\r\n serverContext,\r\n preferenceService,\r\n p$daterange,\r\n filterService,\r\n viewport,\r\n customHeaderOffset,\r\n }) {\r\n this.i18n = i18n;\r\n this.filterService = filterService;\r\n this.gridName = gridName;\r\n this.view = view;\r\n this.schema = schema;\r\n this.p$daterange = p$daterange;\r\n const pageSizes = [20, 50, 100, 200];\r\n const permissions = pageContext.Permissions;\r\n const isHotelCenterDeprecation = permissions && permissions.dynamic.HotelCenterDeprecation;\r\n\r\n this.name = getGridName(schema.name, {\r\n CampaignId: state.get('subAccount_id'),\r\n });\r\n this.preferenceService = preferenceService;\r\n this.config = config;\r\n this.tableClasses = ['table', 'table-bordered'];\r\n this.scrolling = {\r\n virtualized: true,\r\n viewport: viewport || window,\r\n header: {\r\n type: 'sticky',\r\n offset: customHeaderOffset || (() => $('.navbar-fixed-top').height()),\r\n },\r\n };\r\n this.dataSource = {\r\n type: 'js-data',\r\n options: {\r\n entitySet,\r\n cacheResponse: false,\r\n },\r\n schema,\r\n };\r\n\r\n this.selectable = true;\r\n\r\n this.selection = {\r\n enabled: !isHotelCenterDeprecation,\r\n };\r\n\r\n this.attributesColumns = [bingadsGridColumn({\r\n name: 'Bid',\r\n title: 'HotelCenter_Overview_Grid_Bid_Label',\r\n locked: true,\r\n property: {\r\n get(subAccount) {\r\n return subAccount.Bid;\r\n },\r\n key: 'Bid/Amount',\r\n },\r\n editable: {\r\n enableEdit: () => !isHotelCenterDeprecation,\r\n prompt: options => this.bidPrompt(options, serverContext),\r\n i18n: this.i18n,\r\n },\r\n template: (local) => {\r\n let bidString = '';\r\n\r\n if (local.value && local.value['@odata.type']) {\r\n if (local.value['@odata.type'] === '#Model.FixedBid') {\r\n bidString = `${i18n.formatDecimalToFixed(local.value.Amount)} ${config.get('AccountCurrencyCode')}`;\r\n } else if (local.value['@odata.type'] === '#Model.PercentageBid' || local.value['@odata.type'] === '#Model.PayPerStayBid') {\r\n bidString = `${i18n.formatDecimalToFixed(local.value.Amount)} ${decimal.getFormat().percentSymbol}`;\r\n }\r\n }\r\n\r\n return bidString;\r\n },\r\n sortable: 'Bid/Amount',\r\n colClasses: ['col-Bid'],\r\n helpId: 'pop_BA_HotelAds_Bid',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'BidMultipliers',\r\n title: 'HotelCenter_Overview_Grid_Bid_Multipliers_Label',\r\n property: 'BidMultipliers',\r\n editable: {\r\n enableEdit: () => !isHotelCenterDeprecation,\r\n prompt: options => this.bidMultipliersPrompt(options, serverContext),\r\n i18n: this.i18n,\r\n },\r\n template: (local) => {\r\n if (local.value && !_.isEmpty(local.value)) {\r\n return bidMultiplierUtils.getMultipliersText(local.value, false);\r\n }\r\n return '-';\r\n },\r\n colClasses: ['col-Bid-Multipliers'],\r\n bodyClasses: ['col-Bid-Multipliers'],\r\n helpId: 'pop_BA_HotelAds_BidMultiplier',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'Name',\r\n sortable: 'Name',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_SubAccount_Name_Label'),\r\n type: 'string',\r\n property: {\r\n get(currentColumn) {\r\n return currentColumn;\r\n },\r\n key: 'Name',\r\n },\r\n template: (local) => {\r\n if (gridName !== 'HotelIdGrid') {\r\n return hotelNameColumnTemp({\r\n name: local.value.Name || ' ',\r\n gridName,\r\n });\r\n }\r\n return local.value.Name || ' ';\r\n },\r\n editable: {\r\n enableEdit: () => gridName === 'HotelSubAccountGrid' && !isHotelCenterDeprecation,\r\n prompt: options => this.namePrompt(options),\r\n i18n: this.i18n,\r\n },\r\n bodyClasses: ['col-Name'],\r\n })];\r\n\r\n this.performanceColumns = [bingadsGridColumn({\r\n name: 'Clicks',\r\n property: 'Metrics/Clicks',\r\n title: 'HotelCenter_Overview_Grid_Clicks_Label',\r\n type: 'number',\r\n format: 'integer',\r\n sortable: true,\r\n helpId: 'pop_BA_HotelAds_Clicks',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'Impressions',\r\n property: 'Metrics/Impressions',\r\n title: 'HotelCenter_Overview_Grid_Impression_Label',\r\n type: 'number',\r\n format: 'integer',\r\n sortable: true,\r\n helpId: 'pop_BA_HotelAds_Impressions',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'CTR',\r\n property: 'Metrics/CTR',\r\n title: 'HotelCenter_Overview_Grid_CTR_Label',\r\n type: 'number',\r\n format: 'percentage-value',\r\n sortable: true,\r\n helpId: 'pop_BA_HotelAds_CTR',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'Spend',\r\n property: 'Metrics/Spend',\r\n title: 'HotelCenter_Overview_Grid_Spend_Label',\r\n type: 'number',\r\n sortable: true,\r\n helpId: 'pop_BA_HotelAds_Spend',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'SpendUSD',\r\n property: 'Metrics/SpendUSD',\r\n title: 'HotelCenter_Overview_Grid_Spend_USD_Label',\r\n type: 'number',\r\n sortable: true,\r\n helpId: 'pop_BA_HotelAds_Spend',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'AverageCPC',\r\n property: 'Metrics/AverageCPC',\r\n filed: 'AverageCPC',\r\n sortable: true,\r\n type: 'number',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_AverageCPC_Label'),\r\n }), bingadsGridColumn({\r\n name: 'AverageCPCUSD',\r\n property: 'Metrics/AverageCPCUSD',\r\n filed: 'AverageCPCUSD',\r\n sortable: true,\r\n type: 'number',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_AverageCPC_USD_Label'),\r\n })];\r\n\r\n if (!permissions.IsAvgPositionDeprecationPhase3Enabled) {\r\n this.performanceColumns.push(bingadsGridColumn({\r\n name: 'AveragePosition',\r\n property: 'Metrics/AveragePosition',\r\n sortable: true,\r\n type: 'number',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_AveragePosition_Label'),\r\n }));\r\n }\r\n\r\n this.columns = this.attributesColumns.concat(this.performanceColumns);\r\n\r\n // add subaccount name column for hotel/hotelgroup grid while all accounts is selected\r\n const enableColSubAccountName = gridName !== 'HotelSubAccountGrid' && !state.get('subAccount_id');\r\n\r\n if (enableColSubAccountName) {\r\n this.columns.push(bingadsGridColumn({\r\n name: 'SubAccountName',\r\n sortable: gridName !== 'HotelGroupGrid' && 'SubAccountName',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_Shared_SubAccount_Name_Label'),\r\n type: 'string',\r\n bodyClasses: ['col-Name'],\r\n template: (local) => {\r\n if (!isHotelCenterDeprecation) {\r\n return hotelNameColumnTemp({\r\n name: local.value,\r\n gridName: `${gridName}SubAccount`,\r\n });\r\n }\r\n return local.value || '-';\r\n },\r\n }));\r\n }\r\n this.columns = this.columns.concat(conversionColumns('Metrics/'));\r\n\r\n const items = [\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 },\r\n ];\r\n\r\n if (this.gridName !== 'HotelSubAccountGrid') {\r\n const bulkEditDropdown = {\r\n type: 'dropdown',\r\n button: {\r\n text: i18nShared.getString('HotelCenter_Shared_Bulk_Edit'),\r\n },\r\n id: 'bulk-edit-dropdown',\r\n menu: {\r\n items: [{\r\n text: i18n.getString('HotelCenter_Overview_Edit_Change_Bids_Label'),\r\n id: 'bulk-edit-change-bids',\r\n onClick: () => onBulkEditChangeBids(this.gridToolbar),\r\n }, {\r\n text: i18n.getString('HotelCenter_Overview_Edit_Increase_Decrease_Bids_Label'),\r\n id: 'bulk-edit-increase-decrease-bids',\r\n onClick: () => onBulkEditIncreseOrDecreseBids(this.gridToolbar),\r\n }, {\r\n type: 'dropdown-divider',\r\n }, {\r\n id: 'bulk-edit-change-multipliers-bids',\r\n text: i18n.getString('HotelCenter_Overview_Edit_Change_Multipliers_Bids_Label'),\r\n onClick: () => onBulkEditChangeMultipliersBids(this.gridToolbar),\r\n }],\r\n },\r\n };\r\n\r\n items.unshift(bulkEditDropdown);\r\n }\r\n\r\n this.gridToolbar = new OverridableToolbarView({\r\n toolbarId: _.uniqueId('grid-toolbar-'),\r\n items,\r\n }).render();\r\n $('.hotel-center-global-toolbar-containter .global-toolbar-container').append(this.gridToolbar.$el);\r\n\r\n this.plugins = {\r\n performanceLogNew: {\r\n instrumentation,\r\n },\r\n pagination: {\r\n pageSize: 20,\r\n availablePageSizes: pageSizes,\r\n enableRandomPage: false,\r\n pageSizeText: this.i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: this.i18n.getString('Grid_PageOf'),\r\n },\r\n dateFilter: {\r\n container: dateFilterContainer,\r\n isComparisonEnabled: false,\r\n isCustomRangeEnabled: true,\r\n },\r\n inlineDownload: {\r\n isForVNext: true,\r\n i18n,\r\n DownloadView,\r\n isAvailable: true,\r\n gridId: gridName,\r\n toolbar: undefined,\r\n s$i18n,\r\n p$daterange,\r\n schema,\r\n downloadFormats: ['Csv', 'Csvzip'],\r\n processReportRule: ReportRule => _.defaults({\r\n Selection: _.defaults({\r\n CampaignId: _.contains(['HotelGroup', 'Hotel'], schema.name) && state.get('subAccount_id') ?\r\n Number(state.get('subAccount_id')) :\r\n undefined,\r\n AdGroupId: schema.name === 'Hotel' && state.get('hotelGroup_drillDown') ?\r\n Number(state.get('hotelGroup_drillDown').hotelGroupId) :\r\n undefined,\r\n }, ReportRule.Selection),\r\n }, ReportRule),\r\n ReportEmailRule: (() => {\r\n const ReportEmailRule = state.get('$ReportEmailRule');\r\n state.unset('$ReportEmailRule');\r\n return _.isObject(ReportEmailRule) ? ReportEmailRule : null;\r\n })(),\r\n },\r\n uiBlocker: {\r\n el: $('.hotel-center-overview-page'),\r\n },\r\n editable: {\r\n i18n: this.i18n,\r\n },\r\n columnChooser: getColumnChooserConfig({\r\n attributesColumns: this.attributesColumns,\r\n performanceColumns: this.performanceColumns,\r\n }),\r\n };\r\n\r\n this.rows = {\r\n headRows: [\r\n crossPageSelectHeadRow(),\r\n 'column-header-rows',\r\n ],\r\n };\r\n }\r\n\r\n renderPopupEditor({\r\n newPosition, editorView, className,\r\n }) {\r\n const popupEditor = new GridCustomizedPopupEditor({\r\n editorView,\r\n cellPosition: newPosition,\r\n className,\r\n tableContainer: tableContainerSelector,\r\n parentContainerSelector: '.grid-and-disclaim-container',\r\n renderBelow: true,\r\n }).render();\r\n\r\n popupEditor.on('close', (options) => {\r\n if (options && options.refreshForGrid) {\r\n this.view.grid.gridView.refresh(true);\r\n }\r\n if (options && options.refreshForSubAccountBar) {\r\n this.view.grid.gridView.trigger('subAccountBarChanged');\r\n }\r\n });\r\n\r\n triggerScrollbarRepositionOnElementHeightChange(popupEditor.el);\r\n }\r\n\r\n bidPrompt({ position, newPosition, item }, serverContext) {\r\n const bidEditorPromise = import(/* webpackMode: 'eager' */'../inline-edit/bid-inline-edit-view');\r\n let bidEditor;\r\n const currentSubAccountId = state.get('subAccount_id');\r\n\r\n switch (this.gridName) {\r\n case 'HotelSubAccountGrid':\r\n bidEditorPromise.then(({ SubAccountBidInlineEditView }) => {\r\n bidEditor = new SubAccountBidInlineEditView({\r\n selectedItem: item,\r\n currentSubAccountId,\r\n serverContext,\r\n i18n: this.i18n,\r\n });\r\n this.renderPopupEditor({\r\n position, newPosition, editorView: bidEditor, className: 'grid-popupeditor bid-inline-edit-popupeditor',\r\n });\r\n });\r\n break;\r\n case 'HotelIdGrid':\r\n bidEditorPromise.then(({ HotelBidInlineEditView }) => {\r\n bidEditor = new HotelBidInlineEditView({ selectedItem: item, serverContext });\r\n this.renderPopupEditor({\r\n position, newPosition, editorView: bidEditor, className: 'grid-popupeditor bid-inline-edit-popupeditor',\r\n });\r\n });\r\n break;\r\n case 'HotelGroupGrid':\r\n bidEditorPromise.then(({ HotelGroupBidInlineEditView }) => {\r\n bidEditor = new HotelGroupBidInlineEditView({ selectedItem: item, serverContext });\r\n this.renderPopupEditor({\r\n position, newPosition, editorView: bidEditor, className: 'grid-popupeditor bid-inline-edit-popupeditor',\r\n });\r\n });\r\n break;\r\n default: break;\r\n }\r\n }\r\n\r\n bidMultipliersPrompt({ newPosition, item }, serverContext) {\r\n let bidMultipliersEditor;\r\n const bidMultipliersEditorPromise = import(/* webpackMode: 'eager' */'../inline-edit/multiplier-inline-edit-view');\r\n const currentSubAccountId = state.get('subAccount_id');\r\n\r\n switch (this.gridName) {\r\n case 'HotelSubAccountGrid':\r\n bidMultipliersEditorPromise.then(({ SubAccountBidMultipliersInlineEditView }) => {\r\n bidMultipliersEditor =\r\n new SubAccountBidMultipliersInlineEditView({\r\n selectedItem: item,\r\n currentSubAccountId,\r\n serverContext,\r\n });\r\n this.renderPopupEditor({\r\n newPosition, editorView: bidMultipliersEditor, className: 'grid-popupeditor bid-multi-inline-edit-popupeditor',\r\n });\r\n });\r\n\r\n break;\r\n case 'HotelIdGrid':\r\n bidMultipliersEditorPromise.then(({ HotelBidMultipliersInlineEditView }) => {\r\n bidMultipliersEditor = new HotelBidMultipliersInlineEditView({\r\n selectedItem: item,\r\n serverContext,\r\n });\r\n this.renderPopupEditor({\r\n newPosition, editorView: bidMultipliersEditor, className: 'grid-popupeditor bid-multi-inline-edit-popupeditor',\r\n });\r\n });\r\n break;\r\n case 'HotelGroupGrid':\r\n bidMultipliersEditorPromise.then(({ HotelGroupBidMultipliersInlineEditView }) => {\r\n bidMultipliersEditor = new HotelGroupBidMultipliersInlineEditView({\r\n selectedItem: item,\r\n serverContext,\r\n });\r\n this.renderPopupEditor({\r\n newPosition, editorView: bidMultipliersEditor, className: 'grid-popupeditor bid-multi-inline-edit-popupeditor',\r\n });\r\n });\r\n break;\r\n default: break;\r\n }\r\n }\r\n\r\n namePrompt({\r\n newPosition, item, event,\r\n }) {\r\n if (include(event.target.className, 'drillDownLink')) {\r\n return;\r\n }\r\n inlinePopupEditor({\r\n position: newPosition,\r\n schema: this.schema,\r\n model: item,\r\n fields: [{\r\n property: 'Name',\r\n }],\r\n hasLabels: false,\r\n template: 'inline',\r\n saveModel: (updated, editorView) => this.inlineEditSubAccountName(updated, editorView),\r\n i18n,\r\n parentContainerSelector: '.grid-and-disclaim-container',\r\n }, this);\r\n }\r\n\r\n inlineEditSubAccountName(updated, editorView) {\r\n const subAccountModel = new SubAccountModel({\r\n Id: updated.Id,\r\n Name: updated.Name,\r\n });\r\n\r\n subAccountModel.set('Name', updated.Name);\r\n\r\n return subAccountModel\r\n .save(['Name'], { patch: true }).then(() => {\r\n editorView.trigger('save', updated);\r\n this.view.grid.gridView.refresh(true);\r\n this.view.trigger('change:subAccountName');\r\n }).catch((e) => {\r\n if (e.errors) {\r\n const results = _.pluck(e.errors, 'Code')[0];\r\n\r\n _.each(results, (result) => {\r\n // TODO: mapping the error code\r\n window.App.views.alertCenter.toastError(result);\r\n });\r\n }\r\n }).finally(withUiBlock(this.el));\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { HotelGroup } from '@bingads-webui/hotel-odata-schemas';\r\n\r\nimport { HotelGridOptionsBase } from './hotel-grid-options-base';\r\nimport { gridOptionUtils } from '../hotel-center-service';\r\n\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst state = globalContext.require('component/state/index');\r\n\r\nexport default class HotelGroupGridOptions extends HotelGridOptionsBase {\r\n constructor({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n onBulkEditChangeBids,\r\n onBulkEditChangeMultipliersBids,\r\n onBulkEditIncreseOrDecreseBids,\r\n serverContext,\r\n preferenceService,\r\n p$daterange,\r\n filterService,\r\n viewport,\r\n customHeaderOffset,\r\n }) {\r\n const entitySet = gridOptionUtils.getEntitySetByName('hotelGroup');\r\n const searchBoxLabel = i18n.getString('HotelCenter_Overview_Grid_SearchBox_Hotel_Group_Label');\r\n\r\n super({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n schema: HotelGroup,\r\n entitySet,\r\n searchBoxLabel,\r\n onBulkEditChangeBids,\r\n onBulkEditChangeMultipliersBids,\r\n onBulkEditIncreseOrDecreseBids,\r\n serverContext,\r\n preferenceService,\r\n p$daterange,\r\n filterService,\r\n viewport,\r\n customHeaderOffset,\r\n });\r\n\r\n this.i18n = i18n;\r\n\r\n let allColumns = [];\r\n this.plugins.columnChooser.categories[0].options.unshift({\r\n key: 'Id',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Hotel_Group_ID_Label'),\r\n selectOption: 'optional',\r\n });\r\n this.plugins.columnChooser.categories[0].options.push({\r\n key: 'HotelAssociationCount',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_SubAccount_Hotel_Association_Count_Label'),\r\n selectOption: 'optional',\r\n });\r\n allColumns = _.pluck(this.plugins.columnChooser.categories[0].options, 'key').concat(['Metrics', 'BidSource', 'BidMultiplierSource']);\r\n this.plugins.columnChooser.selected = ['Name', 'Id', 'HotelAssociationCount', 'Bid', 'BidMultipliers', 'Clicks', 'Impressions', 'CTR', 'Spend', 'AverageCPC', 'AveragePosition'];\r\n this.plugins.columnChooser.locked = ['Name'];\r\n\r\n if (!state.get('subAccount_id')) {\r\n this.plugins.columnChooser.selected.push('SubAccountName');\r\n this.plugins.columnChooser.categories[0].options.push({\r\n key: 'SubAccountName',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Shared_SubAccount_Name_Label'),\r\n selectOption: 'optional',\r\n });\r\n allColumns = _.pluck(this.plugins.columnChooser.categories[0].options, 'key').concat(['Metrics', 'BidSource', 'BidMultiplierSource', 'SubAccountId']);\r\n }\r\n\r\n this.dataSource = _.defaults(this.dataSource, {\r\n resource: jsdata.HotelGroup,\r\n entity: jsdata.HotelGroup,\r\n query: {\r\n $select: allColumns.join(','),\r\n },\r\n });\r\n\r\n this.columns = this.columns.concat([bingadsGridColumn({\r\n name: 'HotelAssociationCount',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_SubAccount_Hotel_Association_Count_Label'),\r\n type: 'number',\r\n format: 'integer',\r\n }), bingadsGridColumn({\r\n name: 'Id',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_Hotel_Group_ID_Label'),\r\n })]);\r\n\r\n this.plugins.placeholder = {\r\n // Message for no results when using filter\r\n filteredContainer: '.grid-noresult',\r\n filteredEmptyText: i18n.getString('HotelCenter_Grid_NoFilteredRecords'),\r\n\r\n // Message for no data at all.\r\n container: '.grid-noresult',\r\n text: i18n.getString('HotelCenter_Overview_HotelGroup_Grid_NoRecords'),\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { Hotel } from '@bingads-webui/hotel-odata-schemas';\r\n\r\nimport { HotelGridOptionsBase } from './hotel-grid-options-base';\r\nimport hotelNameColumnTemp from './hotel-name-column.pug';\r\nimport { gridOptionUtils } from '../hotel-center-service';\r\n\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst state = globalContext.require('component/state/index');\r\n\r\nexport default class HotelIdGridOptions extends HotelGridOptionsBase {\r\n constructor({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n onBulkEditChangeBids,\r\n onBulkEditChangeMultipliersBids,\r\n onBulkEditIncreseOrDecreseBids,\r\n serverContext,\r\n p$daterange,\r\n filterService,\r\n viewport,\r\n customHeaderOffset,\r\n preferenceService,\r\n }) {\r\n const entitySet = gridOptionUtils.getEntitySetByName('hotel', 'hotelGroup');\r\n const searchBoxLabel = i18n.getString('HotelCenter_Overview_Grid_SearchBox_Hotel_Id_Label');\r\n\r\n super({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n schema: Hotel,\r\n entitySet,\r\n onBulkEditChangeBids,\r\n onBulkEditChangeMultipliersBids,\r\n onBulkEditIncreseOrDecreseBids,\r\n searchBoxLabel,\r\n serverContext,\r\n p$daterange,\r\n filterService,\r\n viewport,\r\n customHeaderOffset,\r\n preferenceService,\r\n });\r\n\r\n this.i18n = i18n;\r\n this.plugins.columnChooser.categories[0].options.unshift({\r\n key: 'Id',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Hotel_ID_Label'),\r\n selectOption: 'optional',\r\n });\r\n this.plugins.columnChooser.categories[0].options.push({\r\n key: 'PartnerHotelId',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Hotel_Advertiser_Hotel_ID_Label'),\r\n selectOption: 'optional',\r\n });\r\n this.plugins.columnChooser.categories[0].options.push({\r\n key: 'CountryCode',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Country_Label'),\r\n selectOption: 'optional',\r\n });\r\n this.plugins.columnChooser.categories[0].options.push({\r\n key: 'Status',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_SubAccount_Status_Label'),\r\n selectOption: 'locked',\r\n });\r\n\r\n this.columns = this.columns.concat([bingadsGridColumn({\r\n name: 'Id',\r\n title: 'HotelCenter_Overview_Grid_Hotel_ID_Label',\r\n helpId: 'pop_BA_HotelAds_HotelID',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'PartnerHotelId',\r\n title: 'HotelCenter_Overview_Grid_Hotel_Advertiser_Hotel_ID_Label',\r\n sortable: true,\r\n filterable: true,\r\n type: 'string',\r\n bodyClasses: ['truncated'],\r\n helpId: 'pop_BA_HotelAds_PartnerHotelID',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'CountryCode',\r\n property: 'CountryCode',\r\n title: 'HotelCenter_Overview_Grid_Country_Label',\r\n helpId: 'pop_BA_HotelAds_Country',\r\n i18n: this.i18n,\r\n }), bingadsGridColumn({\r\n name: 'Status',\r\n property: 'Status',\r\n sortable: 'Status',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_SubAccount_Status_Label'),\r\n })]);\r\n\r\n this.plugins.columnChooser.selected = ['Name', 'Status', 'CountryCode', 'PartnerHotelId', 'Bid', 'BidMultipliers', 'Clicks', 'Impressions', 'CTR', 'Spend', 'AverageCPC', 'AveragePosition'];\r\n this.plugins.columnChooser.locked = ['Name', 'Status'];\r\n\r\n if (!state.get('subAccount_id')) {\r\n this.plugins.columnChooser.selected.push('SubAccountName');\r\n this.plugins.columnChooser.categories[0].options.push({\r\n key: 'SubAccountName',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Shared_SubAccount_Name_Label'),\r\n selectOption: 'optional',\r\n });\r\n }\r\n\r\n this.columns.push(bingadsGridColumn({\r\n name: 'HotelGroupName',\r\n sortable: 'HotelGroupName',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Group_Label'),\r\n type: 'string',\r\n bodyClasses: ['col-Name'],\r\n template: local => hotelNameColumnTemp({\r\n name: local.value,\r\n gridName: `${gridName}HotelGroup`,\r\n }),\r\n colClasses: ['col-Name'],\r\n }));\r\n this.plugins.columnChooser.selected.push('HotelGroupName');\r\n let allColumns = [];\r\n this.plugins.columnChooser.categories[0].options.push({\r\n key: 'HotelGroupName',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Group_Label'),\r\n selectOption: 'optional',\r\n });\r\n allColumns = _.pluck(this.plugins.columnChooser.categories[0].options, 'key').concat(['Metrics', 'BidSource', 'BidMultiplierSource', 'HotelGroupId', 'SubAccountId']);\r\n\r\n this.dataSource = _.defaults(this.dataSource, {\r\n resource: jsdata.Hotel,\r\n entity: jsdata.Hotel,\r\n query: {\r\n $select: allColumns.join(','),\r\n },\r\n });\r\n\r\n this.plugins.placeholder = {\r\n // Message for no results when using filter\r\n filteredContainer: '.grid-noresult',\r\n filteredEmptyText: i18n.getString('HotelCenter_Grid_NoFilteredRecords'),\r\n\r\n // Message for no data at all.\r\n container: '.grid-noresult',\r\n text: i18n.getString('HotelCenter_Overview_HotelId_Grid_NoRecords'),\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { SubAccount as schema } from '@bingads-webui/hotel-odata-schemas';\r\n\r\nimport { HotelGridOptionsBase } from './hotel-grid-options-base';\r\nimport { gridOptionUtils } from '../hotel-center-service';\r\n\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\n\r\nexport default class HotelSubAccountGridOptions extends HotelGridOptionsBase {\r\n constructor({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n p$daterange,\r\n serverContext,\r\n preferenceService,\r\n filterService,\r\n viewport,\r\n customHeaderOffset,\r\n i18n,\r\n }) {\r\n const entitySet = gridOptionUtils.getEntitySetByName('subAccount');\r\n\r\n super({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n schema,\r\n entitySet,\r\n serverContext,\r\n preferenceService,\r\n p$daterange,\r\n filterService,\r\n viewport,\r\n customHeaderOffset,\r\n });\r\n\r\n this.i18n = i18n;\r\n\r\n let allColumns = [];\r\n this.plugins.columnChooser.categories[0].options.unshift({\r\n key: 'Id',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_SubAccount_Id_Label'),\r\n selectOption: 'optional',\r\n });\r\n this.plugins.columnChooser.categories[0].options.push({\r\n key: 'HotelAssociationCount',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_SubAccount_Hotel_Association_Count_Label'),\r\n selectOption: 'optional',\r\n });\r\n this.plugins.columnChooser.categories[0].options.push({\r\n key: 'Status',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_SubAccount_Status_Label'),\r\n selectOption: 'optional',\r\n });\r\n allColumns = _.pluck(this.plugins.columnChooser.categories[0].options, 'key').concat(['Metrics', 'PPSPauseType']);\r\n\r\n this.plugins.columnChooser.selected = ['Name', 'Id', 'HotelAssociationCount', 'Bid', 'BidMultipliers', 'Clicks', 'Impressions', 'CTR', 'Spend', 'AverageCPC', 'AveragePosition'];\r\n this.plugins.columnChooser.locked = ['Name'];\r\n\r\n this.dataSource = _.defaults(this.dataSource, {\r\n resource: jsdata.SubAccount,\r\n entity: jsdata.SubAccount,\r\n query: {\r\n $select: allColumns.join(','),\r\n },\r\n });\r\n\r\n this.columns.unshift(bingadsGridColumn({\r\n name: 'HotelAssociationCount',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_SubAccount_Hotel_Association_Count_Label'),\r\n type: 'number',\r\n format: 'integer',\r\n }));\r\n\r\n this.columns.unshift(bingadsGridColumn({\r\n name: 'Id',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_SubAccount_Id_Label'),\r\n type: 'string',\r\n }));\r\n\r\n this.columns.unshift({\r\n name: 'Status',\r\n sortable: 'Status',\r\n title: this.i18n.getString('HotelCenter_Overview_Grid_SubAccount_Status_Label'),\r\n property: item => _.pick(item, 'Status', 'PPSPauseType'),\r\n template: local => (local.value.PPSPauseType === 'Paused' ? i18n.getString(_TL_('Paused')) : local.value.Status),\r\n });\r\n\r\n this.plugins.placeholder = {\r\n container: '.grid-noresult',\r\n text: this.i18n.getString('HotelCenter_Grid_NoFilteredRecords'),\r\n };\r\n this.selection = {\r\n enabled: false,\r\n };\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport HotelBiGridOptionsBase from './hotel-bi-grid-options-base';\r\n\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\n\r\nexport default class LengthOfStayGridOptions extends HotelBiGridOptionsBase {\r\n constructor({\r\n view, gridName, dateFilterContainer, p$daterange, filterService, preferenceService,\r\n }) {\r\n const columnsPrev = ['LengthOfStay'];\r\n\r\n super({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n columnsPrev,\r\n p$daterange,\r\n filterService,\r\n preferenceService,\r\n });\r\n\r\n this.columns.unshift(bingadsGridColumn({\r\n name: 'LengthOfStay',\r\n title: i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Length_Of_Stay_Label'),\r\n sortable: true,\r\n filterable: true,\r\n type: 'Number',\r\n }));\r\n\r\n this.plugins.columnChooser.categories[0].options.unshift({\r\n key: 'LengthOfStay',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Length_Of_Stay_Label'),\r\n selectOption: 'locked',\r\n });\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport HotelBiGridOptionsBase from './hotel-bi-grid-options-base';\r\n\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\n\r\nexport default class PublisherCountryIdGridOptions extends HotelBiGridOptionsBase {\r\n constructor({\r\n view, gridName, dateFilterContainer, p$daterange, filterService, preferenceService,\r\n }) {\r\n const columnsPrev = ['UserCountry'];\r\n\r\n super({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n columnsPrev,\r\n p$daterange,\r\n filterService,\r\n preferenceService,\r\n });\r\n\r\n this.columns.unshift(bingadsGridColumn({\r\n name: 'UserCountry',\r\n field: 'UserCountry',\r\n title: i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_User_Country_Label'),\r\n sortable: true,\r\n filterable: true,\r\n }));\r\n\r\n this.plugins.columnChooser.categories[0].options.unshift({\r\n key: 'UserCountry',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_User_Country_Label'),\r\n selectOption: 'locked',\r\n });\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport HotelBiGridOptionsBase from './hotel-bi-grid-options-base';\r\n\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\n\r\nexport default class SlotTypeGridOptions extends HotelBiGridOptionsBase {\r\n constructor({\r\n view, gridName, dateFilterContainer, p$daterange, filterService, preferenceService,\r\n }) {\r\n const columnsPrev = ['SlotType'];\r\n\r\n super({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n columnsPrev,\r\n p$daterange,\r\n filterService,\r\n preferenceService,\r\n });\r\n\r\n this.columns.unshift(bingadsGridColumn({\r\n name: 'SlotType',\r\n title: 'HotelCenter_Overview_Grid_Switcher_Hotel_Slot_Type_Label',\r\n sortable: true,\r\n filterable: true,\r\n helpId: 'pop_BA_HotelAds_SlotType',\r\n i18n,\r\n }));\r\n\r\n this.plugins.columnChooser.categories[0].options.unshift({\r\n key: 'SlotType',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Slot_Type_Label'),\r\n selectOption: 'locked',\r\n });\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport HotelBiGridOptionsBase from './hotel-bi-grid-options-base';\r\n\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\n\r\nexport default class HotelAdvancedBookingGridOptions extends HotelBiGridOptionsBase {\r\n constructor({\r\n view, gridName, dateFilterContainer, p$daterange, filterService, preferenceService,\r\n }) {\r\n const columnsPrev = ['AdvancedBookingWindow'];\r\n\r\n super({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n columnsPrev,\r\n p$daterange,\r\n filterService,\r\n preferenceService,\r\n });\r\n\r\n this.columns.unshift(bingadsGridColumn({\r\n name: 'AdvancedBookingWindow',\r\n title: i18n.getString('HotelCenter_Overview_Grid_Switcher_Advanced_Booking_Label'),\r\n sortable: true,\r\n filterable: true,\r\n }));\r\n\r\n this.plugins.columnChooser.categories[0].options.unshift({\r\n key: 'AdvancedBookingWindow',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Switcher_Advanced_Booking_Label'),\r\n selectOption: 'locked',\r\n });\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport HotelBiGridOptionsBase from './hotel-bi-grid-options-base';\r\n\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\n\r\nexport default class HotelCheckinDayGridOptions extends HotelBiGridOptionsBase {\r\n constructor({\r\n view, gridName, dateFilterContainer, p$daterange, filterService, preferenceService,\r\n }) {\r\n const columnsPrev = ['CheckinDay'];\r\n\r\n super({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n columnsPrev,\r\n p$daterange,\r\n filterService,\r\n preferenceService,\r\n });\r\n\r\n this.columns.unshift(bingadsGridColumn({\r\n name: 'CheckinDay',\r\n title: i18n.getString('HotelCenter_Overview_Grid_Switcher_Checkin_Day_Label'),\r\n sortable: true,\r\n filterable: true,\r\n template: local => i18n.getString(`WeekDay_${local.value}`),\r\n }));\r\n\r\n this.plugins.columnChooser.categories[0].options.unshift({\r\n key: 'CheckinDay',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Switcher_Checkin_Day_Label'),\r\n selectOption: 'locked',\r\n });\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport HotelBiGridOptionsBase from './hotel-bi-grid-options-base';\r\n\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\n\r\nexport default class HotelDateTypeGridOptions extends HotelBiGridOptionsBase {\r\n constructor({\r\n view, gridName, dateFilterContainer, p$daterange, filterService, preferenceService,\r\n }) {\r\n const columnsPrev = ['DateType'];\r\n\r\n super({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n columnsPrev,\r\n p$daterange,\r\n filterService,\r\n preferenceService,\r\n });\r\n\r\n this.columns.unshift(bingadsGridColumn({\r\n name: 'DateType',\r\n title: i18n.getString('HotelCenter_Overview_Grid_Switcher_DateType_Label'),\r\n sortable: true,\r\n filterable: true,\r\n }));\r\n\r\n this.plugins.columnChooser.categories[0].options.unshift({\r\n key: 'DateType',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Switcher_DateType_Label'),\r\n selectOption: 'locked',\r\n });\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport HotelBiGridOptionsBase from './hotel-bi-grid-options-base';\r\n\r\nconst { bingadsGridColumn } = globalContext.require('component/bingads-grid/shared/column');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\n\r\nexport default class HotelSiteTypeGridOptions extends HotelBiGridOptionsBase {\r\n constructor({\r\n view, gridName, dateFilterContainer, p$daterange, filterService, preferenceService,\r\n }) {\r\n const columnsPrev = ['SiteType'];\r\n\r\n super({\r\n view,\r\n gridName,\r\n dateFilterContainer,\r\n columnsPrev,\r\n p$daterange,\r\n filterService,\r\n preferenceService,\r\n });\r\n\r\n this.columns.unshift(bingadsGridColumn({\r\n name: 'SiteType',\r\n title: i18n.getString('HotelCenter_Overview_Grid_Switcher_SiteType_Label'),\r\n sortable: true,\r\n filterable: true,\r\n }));\r\n\r\n this.plugins.columnChooser.categories[0].options.unshift({\r\n key: 'SiteType',\r\n name: this.i18n.getString('HotelCenter_Overview_Grid_Switcher_SiteType_Label'),\r\n selectOption: 'locked',\r\n });\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView, helpers } from '@bingads-webui/deterministic-view';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport templateUINext from './bid-cap-panel-ui-next-tempalte.pug';\r\nimport {\r\n SubAccountModel, BidCapView, instrumentation, lightDismissible,\r\n} from '../hotel-center-shared';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst config = globalContext.require('component/config/index');\r\nconst { showError } = globalContext.require('component/toast/index');\r\n\r\nlightDismissible();\r\n\r\n/**\r\n * View class for bid cap setup panel in budget tab\r\n * @extends Backbone.View\r\n */\r\nexport class BidCapPanelView extends DeterministicView {\r\n initialize() {\r\n this.i18n = i18n;\r\n\r\n this.initBidCapView();\r\n\r\n this.subAccountModel = new SubAccountModel();\r\n this.subAccountModel.fetch().then(() => {\r\n this.getChild('bid-cap-view').setState({\r\n capSelection: _.isEmpty(this.subAccountModel.get('MaximumBid')) ? 'empty' : 'cap',\r\n maximumBid: this.subAccountModel.get('MaximumBid') || '',\r\n });\r\n helpers.updateView(this, {\r\n bidCap: this.getBidCapText(),\r\n });\r\n });\r\n\r\n this.budgetPageScenario = instrumentation.budgetPage.create();\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .grid-menu-chooser-button': (e) => {\r\n // Since the event will bubble up to the light dismiss manager, it should specify\r\n // not to dismiss the target element\r\n e.originalEvent.noDismiss = 'bid-cap-edit-panel'; // eslint-disable-line no-param-reassign\r\n\r\n this.togglePopup();\r\n },\r\n 'click input.btn.save': 'onSave',\r\n 'click input.btn.cancel': () => {\r\n this.hidePopup();\r\n },\r\n };\r\n }\r\n\r\n togglePopup() {\r\n if (this.$('.light-dismissible').hasClass('show')) {\r\n this.hidePopup();\r\n } else {\r\n this.$('.light-dismissible').addClass('show');\r\n this.$('.light-dismissible').removeClass('hide');\r\n }\r\n }\r\n\r\n hidePopup() {\r\n this.$('.light-dismissible').addClass('hide');\r\n this.$('.light-dismissible').removeClass('show');\r\n }\r\n\r\n get template() {\r\n return templateUINext;\r\n }\r\n\r\n onSave() {\r\n if (!this.getChild('bid-cap-view').getState().isValid) {\r\n return;\r\n }\r\n\r\n this.subAccountModel.set(\r\n 'MaximumBid',\r\n this.getChild('bid-cap-view').getState().maximumBid\r\n );\r\n\r\n const uiBlockerToken = withUiBlock($('.hotel-center-overview-container'));\r\n const saveBidCapActivity = this.budgetPageScenario.saveBidCap.create();\r\n\r\n saveBidCapActivity.monitorAsync(this.subAccountModel\r\n .save(['MaximumBid'], { patch: true }))\r\n .then(() => {\r\n helpers.updateView(this, {\r\n bidCap: this.getBidCapText(),\r\n });\r\n\r\n saveBidCapActivity.trace('Bid cap is updated');\r\n })\r\n .catch((e) => {\r\n // todo [rayduan]: handle specific errors when we have error mapping\r\n showError(i18n.getString('GenericErrorMessage'));\r\n saveBidCapActivity.error(JSON.stringify(e));\r\n }).finally(() => {\r\n uiBlockerToken();\r\n this.hidePopup();\r\n });\r\n }\r\n\r\n initBidCapView() {\r\n const bidCapView = new BidCapView();\r\n\r\n this.setChild('bid-cap-view', bidCapView);\r\n }\r\n\r\n getBidCapText() {\r\n return _.isEmpty(this.subAccountModel.get('MaximumBid')) ?\r\n i18n.getString('HotelCenter_Setup_Budget_Max_Bid_Option_No_Cap') :\r\n `${i18n.formatDecimalToFixed(this.subAccountModel.get('MaximumBid').Amount)} ${config.get('AccountCurrencyCode')}`;\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { BackboneSchema as backboneSchema } from '@bingads-webui/backbone-schema';\r\nimport { DeterministicView, helpers } from '@bingads-webui/deterministic-view';\r\nimport { InputControl } from '@bingads-webui/input-control';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { Budget } from '@bingads-webui/hotel-odata-schemas';\r\nimport * as putil from '@bingads-webui/primitive-utilities';\r\nimport templateUINext from './budget-panel-ui-next-template.pug';\r\nimport { instrumentation, SubAccountModel, lightDismissible } from '../hotel-center-shared';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst config = globalContext.require('component/config/index');\r\nconst { showError } = globalContext.require('component/toast/index');\r\n\r\nlightDismissible();\r\n\r\n/**\r\n * View class for budget setup panel in budget tab\r\n * @extends Backbone.View\r\n */\r\nexport class BudgetPanelView extends DeterministicView {\r\n initialize() {\r\n this.i18n = i18n;\r\n\r\n this.initBudgetInput();\r\n\r\n this.subAccountModel = new SubAccountModel();\r\n this.subAccountModel.fetch().then(() => {\r\n this.budgetModel.parse(this.subAccountModel.get('DailyBudget'));\r\n this.getChild('budget-input').setState({\r\n value: this.budgetModel.get('Amount'),\r\n });\r\n helpers.updateView(this, {\r\n amount: this.getBudgetText(),\r\n });\r\n });\r\n\r\n this.budgetPageScenario = instrumentation.budgetPage.create();\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .grid-menu-chooser-button': (e) => {\r\n // Since the event will bubble up to the light dismiss manager, it should specify\r\n // not to dismiss the target element\r\n e.originalEvent.noDismiss = 'budget-edit-panel'; // eslint-disable-line no-param-reassign\r\n\r\n this.togglePopup();\r\n },\r\n 'click input.btn.save': 'onSave',\r\n 'click input.btn.cancel': () => {\r\n this.hidePopup();\r\n },\r\n };\r\n }\r\n\r\n get template() {\r\n return templateUINext;\r\n }\r\n\r\n togglePopup() {\r\n if (this.$('.light-dismissible').hasClass('show')) {\r\n this.hidePopup();\r\n } else {\r\n this.$('.light-dismissible').addClass('show');\r\n this.$('.light-dismissible').removeClass('hide');\r\n }\r\n }\r\n\r\n hidePopup() {\r\n this.$('.light-dismissible').addClass('hide');\r\n this.$('.light-dismissible').removeClass('show');\r\n }\r\n\r\n onSave() {\r\n if (!this.getChild('budget-input').getState().isValid) {\r\n return;\r\n }\r\n\r\n this.subAccountModel.set('DailyBudget', this.budgetModel.toJSON());\r\n\r\n const uiBlockerToken = withUiBlock($('.hotel-center-overview-container'));\r\n const saveBudgetActivity = this.budgetPageScenario.saveBudget.create();\r\n\r\n saveBudgetActivity.monitorAsync(this.subAccountModel\r\n .save(['DailyBudget'], { patch: true }))\r\n .then(() => {\r\n helpers.updateView(this, {\r\n amount: this.getBudgetText(),\r\n });\r\n\r\n saveBudgetActivity.trace('Budget is updated');\r\n })\r\n .catch((e) => {\r\n // todo [rayduan]: handle specific errors when we have error mapping\r\n const errorCode = putil.get(e, 'errors[0].Code');\r\n\r\n showError(i18n.getString(`HotelCenter_Error_${errorCode}`) || i18n.getString('GenericErrorMessage'));\r\n saveBudgetActivity.error(JSON.stringify(e));\r\n }).finally(() => {\r\n uiBlockerToken();\r\n this.hidePopup();\r\n });\r\n }\r\n\r\n initBudgetInput() {\r\n const BudgetModel = backboneSchema(Budget, i18n, ['Amount']);\r\n\r\n this.budgetModel = new BudgetModel();\r\n\r\n const budgetInput = new InputControl({\r\n entity: this.budgetModel,\r\n field: 'Amount',\r\n addonText: config.get('AccountCurrencyCode'),\r\n });\r\n\r\n this.setChild('budget-input', budgetInput);\r\n }\r\n\r\n getBudgetText() {\r\n const dailyBudget = this.subAccountModel.get('DailyBudget');\r\n const amount = dailyBudget ? dailyBudget.Amount : 0;\r\n\r\n return `${i18n.formatDecimalToFixed(amount)} ${config.get('AccountCurrencyCode')}`;\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView, helpers } from '@bingads-webui/deterministic-view';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport template from './subaccount-bid-edit-template.pug';\r\nimport { BidStrategyView, EditPanelView, instrumentation, lightDismissible } from '../hotel-center-shared';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst config = globalContext.require('component/config/index');\r\nconst decimal = globalContext.require('component/humanize/decimal');\r\nconst { showError } = globalContext.require('component/toast/index');\r\n\r\nlightDismissible();\r\n\r\n/**\r\n * Class representing a navigation tabs for SubAccount Edit Panel\r\n * @extends Backbone.View\r\n */\r\nexport default class SubAccountBidEdit extends DeterministicView {\r\n /**\r\n * Initializes SubAccountBidEdit\r\n * @returns {undefined}\r\n */\r\n initialize({\r\n subAccountModel,\r\n }) {\r\n this.i18n = i18n;\r\n this.subAccountModel = subAccountModel;\r\n\r\n this.bidStrategyView = new BidStrategyView({\r\n allowEmptyStrategy: false,\r\n isReadonly: false,\r\n });\r\n\r\n this.setChild('bid-strategy-view-container', this.bidStrategyView);\r\n\r\n this.editPanelView = new EditPanelView();\r\n this.setChild('edit-panel-view', this.editPanelView);\r\n this.editPanelView.on('saved', () => {\r\n this.onSave();\r\n }, this);\r\n this.editPanelView.on('canceled', () => {\r\n this.toggleVisibility();\r\n }, this);\r\n\r\n this.subAccountModel.fetch().then(() => {\r\n this.updateBidStrategyView();\r\n helpers.updateView(this, {\r\n amount: this.getBidText(),\r\n });\r\n });\r\n\r\n this.subAccountBarScenario = instrumentation.subAccountBar.create();\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n toggleVisibility() {\r\n this.$('.light-dismissible').toggleClass('show');\r\n }\r\n\r\n onSave() {\r\n if (!this.getChild('bid-strategy-view-container').getState().isValid) {\r\n return;\r\n }\r\n\r\n this.subAccountModel.set(\r\n 'Bid',\r\n this.getChild('bid-strategy-view-container').getState().bid\r\n );\r\n\r\n const saveSubAccountBidActivity = this.subAccountBarScenario.saveSubAccountBid.create();\r\n\r\n saveSubAccountBidActivity.monitorAsync(this.subAccountModel\r\n .save(['Bid'], { patch: true }))\r\n .then(() => {\r\n const bidText = this.getBidText();\r\n\r\n helpers.updateView(this, {\r\n amount: bidText,\r\n });\r\n\r\n this.toggleVisibility();\r\n\r\n this.trigger('bid-changed', bidText);\r\n\r\n saveSubAccountBidActivity.trace('Sub-account bid is saved');\r\n })\r\n .catch(() => {\r\n showError(i18n.getString('GenericErrorMessage'));\r\n })\r\n .finally(withUiBlock($('.hotel-center-overview-container')));\r\n }\r\n\r\n getBidText() {\r\n if (!this.subAccountModel.get('Bid')) {\r\n return '';\r\n }\r\n\r\n if (this.subAccountModel.get('Bid')['@odata.type'] === '#Model.FixedBid') {\r\n return `${i18n.formatDecimalToFixed(this.subAccountModel.get('Bid').Amount)} ${config.get('AccountCurrencyCode')}`;\r\n }\r\n return `${i18n.formatDecimalToFixed(this.subAccountModel.get('Bid').Amount)} ${decimal.getFormat().percentSymbol}`;\r\n }\r\n\r\n updateBidStrategyView() {\r\n if (!this.subAccountModel.get('Bid')) {\r\n return;\r\n }\r\n\r\n const bidAmount = this.subAccountModel.get('Bid').Amount;\r\n\r\n if (this.subAccountModel.get('Bid')['@odata.type'] === '#Model.PercentageBid') {\r\n this.getChild('bid-strategy-view-container').setState({ bidStrategy: 'percentage', bidAmount });\r\n } else if (this.subAccountModel.get('Bid')['@odata.type'] === '#Model.PayPerStayBid') {\r\n this.getChild('bid-strategy-view-container').setState({\r\n bidStrategy: 'payperstay',\r\n bidAmount,\r\n isReadonly: true,\r\n });\r\n } else {\r\n this.getChild('bid-strategy-view-container').setState({ bidStrategy: 'fixed', bidAmount });\r\n }\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport template from './subaccount-bid-multi-edit-template.pug';\r\nimport { processError } from '../error-mapping';\r\nimport { BidMultipliersView, EditPanelView, instrumentation } from '../hotel-center-shared';\r\nimport { bidMultiplierUtils } from '../hotel-center-utils';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst { showError } = globalContext.require('component/toast/index');\r\n\r\n\r\n/**\r\n * Class representing a navigation tabs for SubAccount Edit Panel\r\n * @extends Base.View\r\n */\r\n\r\nexport default class SubAccountBidMultipliersEdit extends DeterministicView {\r\n /**\r\n * Initializes SubAccountBidEdit\r\n * @returns {undefined}\r\n */\r\n initialize({\r\n subAccountModel,\r\n }) {\r\n this.i18n = i18n;\r\n this.subAccountModel = subAccountModel;\r\n\r\n this.bidMultipliersView = new BidMultipliersView({\r\n showUseParent: false,\r\n });\r\n this.setChild('bid-multipliers-view-container', this.bidMultipliersView);\r\n\r\n this.editPanelView = new EditPanelView().setState({ hasCleanButton: true });\r\n this.setChild('edit-panel-view', this.editPanelView);\r\n this.editPanelView.on('saved', () => {\r\n this.onSave();\r\n }, this);\r\n this.editPanelView.on('canceled', () => {\r\n this.toggleVisibility();\r\n }, this);\r\n this.editPanelView.on('cleaned', () => {\r\n this.getChild('bid-multipliers-view-container').clean();\r\n }, this);\r\n\r\n this.subAccountModel.fetch().then(() => {\r\n this.updateBidMultipliersView();\r\n });\r\n this.subAccountBarScenario = instrumentation.subAccountBar.create();\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n toggleVisibility() {\r\n this.$('.light-dismissible').toggleClass('show');\r\n }\r\n\r\n onSave() {\r\n const bidMultipliers = this.getChild('bid-multipliers-view-container').getState();\r\n\r\n if (!bidMultipliers.isValid) {\r\n return;\r\n }\r\n\r\n this.subAccountModel.set(\r\n 'BidMultipliers',\r\n bidMultipliers.bidMultipliers\r\n );\r\n\r\n const saveBidMultiplierActivity = this.subAccountBarScenario.saveBidMultiplier.create();\r\n\r\n saveBidMultiplierActivity.monitorAsync(this.subAccountModel\r\n .save(['BidMultipliers'], { patch: true }))\r\n .then(() => {\r\n const deviceTypeMultipliers = bidMultiplierUtils.getMultipliersText(this.subAccountModel.get('BidMultipliers'), false);\r\n\r\n this.toggleVisibility();\r\n this.trigger('bid-multipliers-changed', deviceTypeMultipliers);\r\n\r\n saveBidMultiplierActivity.trace('Sub-account multiplier is saved');\r\n })\r\n .catch((e) => {\r\n const errorInfo = e.errors ? processError({ errors: e.errors, scope: 'Subaccount', i18n }) : i18n.getString('GenericErrorMessage');\r\n showError(errorInfo);\r\n }).finally(withUiBlock($('.hotel-center-overview-container')));\r\n }\r\n\r\n updateBidMultipliersView() {\r\n if (!this.subAccountModel.get('BidMultipliers')) {\r\n return;\r\n }\r\n const bidMultipliers = bidMultiplierUtils.getMultipliersState(this.subAccountModel.get('BidMultipliers'));\r\n\r\n this.getChild('bid-multipliers-view-container').emptyDeviceTypeAndCheckInDay();\r\n this.getChild('bid-multipliers-view-container').setState({ bidMultipliers });\r\n\r\n this.bidMultipliersView.setState({ isPayPerStay: _.result(this.subAccountModel.get('Bid'), '@odata.type') === '#Model.PayPerStayBid' });\r\n }\r\n}\r\n","import Promise from 'bluebird';\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView, helpers } from '@bingads-webui/deterministic-view';\r\nimport { BidCapPanelView } from './bid-cap-panel';\r\nimport { BudgetPanelView } from './budget-panel';\r\nimport templateUINext from './subaccount-bar-ui-next-template.pug';\r\nimport SubAccountBidEdit from './subaccount-bid-edit';\r\nimport SubAccountBidMultipliersEdit from './subaccount-bid-multipliers-edit';\r\nimport { instrumentation, SubAccountModel } from '../hotel-center-shared';\r\nimport { bidMultiplierUtils } from '../hotel-center-utils';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst config = globalContext.require('component/config/index');\r\nconst decimal = globalContext.require('component/humanize/decimal');\r\nconst state = globalContext.require('component/state/index');\r\n\r\nexport {\r\n BidCapPanelView,\r\n BudgetPanelView,\r\n SubAccountBidEdit,\r\n SubAccountBidMultipliersEdit,\r\n};\r\n\r\n/**\r\n * Class representing a navigation tabs for SubAccount Bar\r\n * @extends View\r\n */\r\nexport class SubAccountBar extends DeterministicView {\r\n /**\r\n * Initializes SubAccountBar\r\n * @returns {undefined}\r\n */\r\n initialize() {\r\n this.i18n = i18n;\r\n this.subAccountBarScenario = instrumentation.subAccountBar.create();\r\n\r\n const loadSubAccountInfoActivity = this.subAccountBarScenario.loadSubAccountInfo.create();\r\n\r\n this.subAccountModel = new SubAccountModel();\r\n loadSubAccountInfoActivity.monitorAsync(this.subAccountModel.fetch())\r\n .then(() => {\r\n const subAccountName = state.get('subAccount_model') && state.get('subAccount_model').Name;\r\n $('.visible-element .summary-bar-breadcrumb .current-breadcrumb').removeClass('current-breadcrumb');\r\n $('.visible-element .summary-bar-breadcrumb+.summary-bar-divider').addClass('hide');\r\n helpers.updateView(this, {\r\n defaultBid: this.getBidText(),\r\n defaultDeviceTypesWithMultipliers: this.formatSummaryBarBidMultiplier(bidMultiplierUtils.getMultipliersText(this.subAccountModel.get('BidMultipliers'), false)),\r\n hotelTotalCount: decimal.fromLocalToString(this.subAccountModel.get('HotelAssociationCount'), 0),\r\n subAccountName,\r\n });\r\n });\r\n\r\n this.fetchHotelGroups(state.get('subAccount_id'));\r\n\r\n this.subAccountBidEdit = new SubAccountBidEdit({ subAccountModel: this.subAccountModel });\r\n this.setChild('subaccount-bar-edit', this.subAccountBidEdit);\r\n\r\n this.subAccountBidMultipliersEdit = new SubAccountBidMultipliersEdit({\r\n subAccountModel: this.subAccountModel,\r\n });\r\n this.setChild('subaccount-multipliers-bar-edit', this.subAccountBidMultipliersEdit);\r\n\r\n this.listenTo(this.subAccountBidEdit, 'bid-changed', (value) => {\r\n if (value) {\r\n helpers.updateView(this, {\r\n defaultBid: value,\r\n });\r\n\r\n this.trigger('subaccountChanged', ['HotelIdGrid', 'HotelGroupGrid', 'HotelSubAccountGrid']);\r\n }\r\n });\r\n\r\n this.listenTo(this.subAccountBidMultipliersEdit, 'bid-multipliers-changed', (value) => {\r\n let defaultDeviceTypesWithMultipliers = value;\r\n defaultDeviceTypesWithMultipliers =\r\n this.formatSummaryBarBidMultiplier(defaultDeviceTypesWithMultipliers);\r\n helpers.updateView(this, {\r\n defaultDeviceTypesWithMultipliers,\r\n });\r\n this.trigger('subaccountChanged', ['HotelIdGrid', 'HotelGroupGrid', 'HotelSubAccountGrid']);\r\n });\r\n helpers.updateView(this, {\r\n hotelTotalCount: ' -',\r\n hotelGroupTotalCount: ' -',\r\n subAccountName: ' -',\r\n });\r\n\r\n const budgetPanelView = new BudgetPanelView();\r\n\r\n this.setChild('budget-panel', budgetPanelView);\r\n\r\n const bidCapPanelView = new BidCapPanelView();\r\n\r\n this.setChild('bid-cap-panel', bidCapPanelView);\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .account-default-bid-edit': this.onAccountDefaultBidEdit,\r\n 'click .account-default-bid-multipliers-edit': this.onAccountDefaultMultipliersBidEdit,\r\n };\r\n }\r\n\r\n formatSummaryBarBidMultiplier(bidMultipliers) {\r\n if (bidMultipliers) {\r\n const multipliers = bidMultipliers.split(',');\r\n\r\n return multipliers.length > 1 ? this.i18n.getString('{{firstMultiplier}} and {{multiplierCount}} more', { firstMultiplier: multipliers[0], multiplierCount: multipliers.length - 1 }) : bidMultipliers;\r\n }\r\n return bidMultipliers;\r\n }\r\n\r\n onAccountDefaultBidEdit(e) {\r\n // Since the event will bubble up to the light dismiss manager, it should specify\r\n // not to dismiss the target element\r\n e.originalEvent.noDismiss = 'subaccount-bid-edit-panel'; // eslint-disable-line no-param-reassign\r\n this.getChild('subaccount-bar-edit').toggleVisibility();\r\n }\r\n\r\n onAccountDefaultMultipliersBidEdit(e) {\r\n // Since the event will bubble up to the light dismiss manager, it should specify\r\n // not to dismiss the target element\r\n e.originalEvent.noDismiss = 'subaccount-bid-multipliers-edit-container'; // eslint-disable-line no-param-reassign\r\n\r\n this.getChild('subaccount-multipliers-bar-edit').toggleVisibility();\r\n }\r\n\r\n onSubAccountBarChanged() {\r\n // update subaccount bar when inline edit or other operations changed subaccount model\r\n this.subAccountModel.fetch().then(() => {\r\n helpers.updateView(this, {\r\n defaultBid: this.getBidText(),\r\n defaultDeviceTypesWithMultipliers: this.formatSummaryBarBidMultiplier(bidMultiplierUtils.getMultipliersText(this.subAccountModel.get('BidMultipliers'), false)),\r\n });\r\n this.getChild('subaccount-bar-edit').updateBidStrategyView();\r\n this.getChild('subaccount-multipliers-bar-edit').updateBidMultipliersView();\r\n });\r\n\r\n const loadSubAccountInfoActivity = this.subAccountBarScenario.loadSubAccountInfo.create();\r\n\r\n loadSubAccountInfoActivity.trace('Sub-account info is loaded');\r\n }\r\n\r\n get template() {\r\n return templateUINext;\r\n }\r\n\r\n getBidText() {\r\n if (!this.subAccountModel.get('Bid')) {\r\n return '';\r\n }\r\n\r\n if (this.subAccountModel.get('Bid')['@odata.type'] !== '#Model.FixedBid') {\r\n return `${i18n.formatDecimalToFixed(this.subAccountModel.get('Bid').Amount)} ${decimal.getFormat().percentSymbol}`;\r\n }\r\n return `${i18n.formatDecimalToFixed(this.subAccountModel.get('Bid').Amount)} ${config.get('AccountCurrencyCode')}`;\r\n }\r\n\r\n fetchHotelGroups(subAccountId) {\r\n const hotelGroupCount = state.get('subAccount_hotelGroupCount');\r\n let groupCountLoader;\r\n\r\n if (_.result(hotelGroupCount, 'Id') === subAccountId && _.has(hotelGroupCount, 'totalCount')) {\r\n groupCountLoader = new Promise((resolve) => {\r\n resolve(hotelGroupCount.totalCount);\r\n });\r\n } else if (subAccountId === '') {\r\n groupCountLoader = new Promise((resolve) => {\r\n resolve(0);\r\n });\r\n } else {\r\n const entitySet = edm.currentAccount.SubAccounts.$withKey(subAccountId).HotelGroups;\r\n\r\n groupCountLoader = jsdata.HotelGroup\r\n .findAll({}, {\r\n entitySet,\r\n cacheResponse: false,\r\n })\r\n .then((hotelGroups) => {\r\n state.set('subAccount_hotelGroupCount', {\r\n Id: subAccountId,\r\n totalCount: hotelGroups.totalCount,\r\n });\r\n return hotelGroups.totalCount;\r\n });\r\n }\r\n\r\n groupCountLoader.then((totalCount) => {\r\n helpers.updateView(this, {\r\n hotelGroupTotalCount: decimal.fromLocalToString(totalCount, 0),\r\n });\r\n });\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\n\r\nimport Backbone from 'backbone';\r\nimport $ from 'jquery';\r\nimport { pgridFactory } from '@bingads-webui-campaign/pgrid-factory';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { inlineErrorPlugin } from '@bingads-webui/projection-grid-inline-error';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { inlineDownloadWithoutFilterstateAndSegmentPlugin } from '@bingads-webui-campaign/projection-grid-inline-download';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport * as putil from '@bingads-webui/primitive-utilities';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { toolbarPlugin } from '@bingads-webui/projection-grid-toolbar';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { getHotelCenterService } from '@bingads-webui-campaign/hotel-center-service';\r\nimport { BulkEditView } from './bulk-edit/bulk-edit-view';\r\nimport * as bulkEditToast from './bulk-edit/bulk-edit-toast';\r\nimport { BulkEditPanelBase } from './bulk-edit/bulk-edit-panel-base';\r\nimport BulkEditBidMultiPanel from './bulk-edit/bulk-edit-bid-multi-panel';\r\nimport BulkEditBidPanel from './bulk-edit/bulk-edit-bid-panel';\r\nimport BulkIncreaseDecreaseBidPanel from './bulk-edit/increase-decrease-bid-panel';\r\nimport CountryCodeGridOptions from './grid-options/country-code-grid-options';\r\nimport HotelDateGridOptions from './grid-options/hotel-date-grid-options';\r\nimport HotelDeviceTypeGridOptions from './grid-options/hotel-devicetype-grid-options';\r\nimport HotelGroupGridOptions from './grid-options/hotel-group-grid-options';\r\nimport HotelIdGridOptions from './grid-options/hotel-id-grid-options';\r\nimport HotelSubAccountGridOptions from './grid-options/hotel-subaccount-grid-options';\r\nimport LengthOfStayGridOptions from './grid-options/length-stay-grid-options';\r\nimport PublisherCountryIdGridOptions from './grid-options/publisher-country-id-grid-options';\r\nimport SlotTypeGridOptions from './grid-options/slot-type-grid-options';\r\nimport HotelAdvancedBookingGridOptions from './grid-options/advanced-booking-grid-options';\r\nimport HotelCheckinDayGridOptions from './grid-options/checkin-day-grid-options';\r\nimport DateTypeGridOptions from './grid-options/date-type-grid-options';\r\nimport SiteTypeGridOptions from './grid-options/site-type-grid-options';\r\nimport template from './hotel-center-overview-template.pug';\r\nimport {\r\n BidCapPanelView,\r\n BudgetPanelView,\r\n SubAccountBar,\r\n SubAccountBidEdit,\r\n SubAccountBidMultipliersEdit,\r\n} from './subaccount-bar/subaccount-bar';\r\nimport {\r\n HotelBidInlineEditView,\r\n HotelGroupBidInlineEditView,\r\n SubAccountBidInlineEditView,\r\n} from './inline-edit/bid-inline-edit-view';\r\nimport {\r\n HotelBidMultipliersInlineEditView,\r\n HotelGroupBidMultipliersInlineEditView,\r\n SubAccountBidMultipliersInlineEditView,\r\n} from './inline-edit/multiplier-inline-edit-view';\r\nimport { conversionColumnList } from './grid-options/hotel-center-conversion-columns';\r\nimport {\r\n HotelGroupInformationView,\r\n dateFilterPlugin,\r\n fetchPreferenceConfig as fetchPreference,\r\n instrumentation,\r\n toolbarTemplate,\r\n} from './hotel-center-shared';\r\nimport { gridOptionUtils } from './hotel-center-service';\r\nimport { getDefaultPlugins } from './plugin-config';\r\n\r\nexport {\r\n BidCapPanelView,\r\n BudgetPanelView,\r\n BulkEditView,\r\n bulkEditToast,\r\n BulkEditPanelBase,\r\n BulkEditBidPanel,\r\n BulkEditBidMultiPanel,\r\n BulkIncreaseDecreaseBidPanel,\r\n SubAccountBar,\r\n SubAccountBidEdit,\r\n SubAccountBidMultipliersEdit,\r\n HotelBidInlineEditView,\r\n HotelGroupBidInlineEditView,\r\n SubAccountBidInlineEditView,\r\n HotelBidMultipliersInlineEditView,\r\n HotelGroupBidMultipliersInlineEditView,\r\n SubAccountBidMultipliersInlineEditView,\r\n};\r\n\r\nconst legacyI18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst columnChooserPlugin = globalContext.requireDefault('component/bingads-grid/plugin/column-chooser');\r\nconst { crossPageSelectAllPlugin } = globalContext.require('component/bingads-grid/plugin/cross-page-select-all/index');\r\nconst { newPerformanceLogPlugin } = globalContext.require('component/bingads-grid/plugin/new-performance-log');\r\nconst state = globalContext.require('component/state/index');\r\nconst appConfig = globalContext.require('component/config/index');\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\nconst { AccountService } = getHotelCenterService({ state, edm, jsdata });\r\n\r\nconst hotelCenterOverviewGridMap = {\r\n 'grid-chooser-item-hotel-id': {\r\n gridName: 'HotelIdGrid',\r\n linkMenuLabelKey: 'HotelCenter_Overview_Grid_Switcher_Hotel_Id_Label',\r\n },\r\n 'grid-chooser-item-hotel-group': {\r\n gridName: 'HotelGroupGrid',\r\n linkMenuLabelKey: 'HotelCenter_Overview_Grid_Switcher_Hotel_Group_Label',\r\n },\r\n 'grid-chooser-item-subaccount': {\r\n gridName: 'HotelSubAccountGrid',\r\n linkMenuLabelKey: 'HotelCenter_Overview_Grid_Switcher_Hotel_SubAccount_Label',\r\n },\r\n 'grid-chooser-item-devicetype': {\r\n gridName: 'HotelDeviceTypeGrid',\r\n linkMenuLabelKey: 'HotelCenter_Overview_Grid_Switcher_Hotel_DeviceType_Label',\r\n },\r\n 'grid-chooser-item-date': {\r\n gridName: 'HotelDateGrid',\r\n linkMenuLabelKey: 'HotelCenter_Overview_Grid_Switcher_Hotel_Date_Label',\r\n },\r\n 'grid-chooser-item-length-of-stay': {\r\n gridName: 'HotelLengthOfStayGrid',\r\n linkMenuLabelKey: 'HotelCenter_Overview_Grid_Switcher_Hotel_Length_Of_Stay_Label',\r\n },\r\n 'grid-chooser-item-user-country': {\r\n gridName: 'HotelUserCountryGrid',\r\n linkMenuLabelKey: 'HotelCenter_Overview_Grid_Switcher_Hotel_User_Country_Label',\r\n },\r\n 'grid-chooser-item-slot-type': {\r\n gridName: 'HotelSlotTypeGrid',\r\n linkMenuLabelKey: 'HotelCenter_Overview_Grid_Switcher_Hotel_Slot_Type_Label',\r\n },\r\n 'grid-chooser-item-hotel-country': {\r\n gridName: 'HotelCountryGrid',\r\n linkMenuLabelKey: 'HotelCenter_Overview_Grid_Switcher_Hotel_Contry_Label',\r\n },\r\n 'grid-chooser-item-advanced-booking': {\r\n gridName: 'AdvancedBookingGrid',\r\n linkMenuLabelKey: 'HotelCenter_Overview_Grid_Switcher_Advanced_Booking_Label',\r\n },\r\n 'grid-chooser-item-checkin-day': {\r\n gridName: 'CheckinDayGrid',\r\n linkMenuLabelKey: 'HotelCenter_Overview_Grid_Switcher_Checkin_Day_Label',\r\n },\r\n 'grid-chooser-item-date-type': {\r\n gridName: 'DateTypeGrid',\r\n linkMenuLabelKey: 'HotelCenter_Overview_Grid_Switcher_DateType_Label',\r\n },\r\n 'grid-chooser-item-site-type': {\r\n gridName: 'SiteTypeGrid',\r\n linkMenuLabelKey: 'HotelCenter_Overview_Grid_Switcher_SiteType_Label',\r\n },\r\n};\r\n\r\nconst biGridNames = ['HotelDeviceTypeGrid', 'HotelDateGrid', 'HotelLengthOfStayGrid',\r\n 'HotelUserCountryGrid', 'HotelSubAccountGrid', 'HotelSlotTypeGrid', 'HotelCountryGrid',\r\n 'AdvancedBookingGrid', 'CheckinDayGrid', 'DateTypeGrid', 'SiteTypeGrid'];\r\n\r\n\r\nfunction initBulkEditBidPanel(view) {\r\n view.bulkEditBidPanel = new BulkEditBidPanel();\r\n view.setChild('bulk-bid-edit-panel-container', view.bulkEditBidPanel);\r\n\r\n view.bulkEditBidPanel.on('canceled', () => {\r\n view.$('.bulk-bid-edit-panel-container').addClass('hide');\r\n view.restoreToolBar();\r\n }, view);\r\n\r\n view.bulkEditBidPanel.on('saved', () => {\r\n view.$('.bulk-bid-edit-panel-container').addClass('hide');\r\n view.restoreToolBar();\r\n\r\n view.grid.gridView.deselectAll();\r\n view.grid.gridView.refresh(true);\r\n }, view);\r\n\r\n view.bulkEditBidPanel.on('error', () => {\r\n view.grid.gridView.refresh(true);\r\n }, view);\r\n}\r\n\r\n\r\nfunction initBulkEditBidMultiPanel(view) {\r\n view.bulkEditBidMultiPanel = new BulkEditBidMultiPanel();\r\n view.setChild('bulk-bid-multipliers-edit-panel-container', view.bulkEditBidMultiPanel);\r\n\r\n view.bulkEditBidMultiPanel.on('canceled', () => {\r\n view.$('.bulk-bid-multipliers-edit-panel-container').addClass('hide');\r\n view.restoreToolBar();\r\n }, view);\r\n\r\n view.bulkEditBidMultiPanel.on('saved', () => {\r\n view.$('.bulk-bid-multipliers-edit-panel-container').addClass('hide');\r\n view.restoreToolBar();\r\n\r\n view.grid.gridView.deselectAll();\r\n view.grid.gridView.refresh(true);\r\n }, view);\r\n\r\n view.bulkEditBidMultiPanel.on('error', () => {\r\n view.grid.gridView.refresh(true);\r\n }, view);\r\n}\r\n\r\n\r\nfunction initBulkIncreaseDecreaseBidPanel(view) {\r\n view.bulkIncreaseDecreaseBidPanel = new BulkIncreaseDecreaseBidPanel();\r\n view.setChild('bulk-increase-decrease-bid-panel-container', view.bulkIncreaseDecreaseBidPanel);\r\n\r\n view.bulkIncreaseDecreaseBidPanel.on('canceled', () => {\r\n view.$('.bulk-increase-decrease-bid-panel-container').addClass('hide');\r\n view.restoreToolBar();\r\n }, view);\r\n\r\n view.bulkIncreaseDecreaseBidPanel.on('saved', () => {\r\n view.$('.bulk-increase-decrease-bid-panel-container').addClass('hide');\r\n view.restoreToolBar();\r\n\r\n view.grid.gridView.deselectAll();\r\n view.grid.gridView.refresh(true);\r\n }, view);\r\n\r\n view.bulkIncreaseDecreaseBidPanel.on('error', () => {\r\n view.grid.gridView.refresh(true);\r\n }, view);\r\n}\r\n\r\n\r\n/**\r\n * Class representing a navigation tabs for HotelCenter Overview\r\n * @extends View\r\n */\r\n\r\nexport class HotelCenterOverview extends DeterministicView {\r\n /**\r\n * Initializes HotelCenterOverview\r\n * @returns {undefined}\r\n */\r\n initialize({\r\n i18n,\r\n fetchPreferenceConfig,\r\n preferenceConfig,\r\n preferenceService,\r\n serverContext,\r\n navigationLevels = [],\r\n extendPlugins = () => [],\r\n filterService,\r\n pluginFactories,\r\n updateSelectedSubaccount = () => {},\r\n gridName,\r\n p$daterange = null,\r\n refreshGridForUINext,\r\n jumpToReconReports,\r\n gridRefreshed,\r\n viewport,\r\n customHeaderOffset,\r\n perfMarker,\r\n notificationApi,\r\n } = {}) {\r\n this.i18n = i18n || legacyI18n; // use legacy i18n for integrated test\r\n this.gridName = gridName;\r\n this.p$daterange = p$daterange;\r\n this.serverContext = serverContext;\r\n this.fetchPreferenceConfig = fetchPreferenceConfig || fetchPreference;\r\n this.preferenceService = preferenceService;\r\n this.extendPlugins = extendPlugins;\r\n this.filterService = filterService;\r\n this.extendPluginFactories = pluginFactories;\r\n this.updateSelectedSubaccount = updateSelectedSubaccount;\r\n this.refreshGridForUINext = refreshGridForUINext;\r\n this.jumpToReconReports = jumpToReconReports;\r\n this.gridRefreshed = gridRefreshed;\r\n this.viewport = viewport;\r\n this.customHeaderOffset = customHeaderOffset;\r\n this.shouldSetUpGrid = false;\r\n this.isInitialGrid = true;\r\n this.notificationApi = notificationApi;\r\n this.overViewPageScenario = instrumentation.overViewPage.create();\r\n this.perfMarker = perfMarker;\r\n this.ppsPauseNotificationShowed = false;\r\n\r\n $('body').on('click', e => this.onBodyClicked(e));\r\n\r\n this.hotelGroupInformation = new HotelGroupInformationView().setState({\r\n hotelGroup: { Name: '' },\r\n });\r\n this.setChild('hotel-group-information-container', this.hotelGroupInformation);\r\n\r\n this.hotelGroupInformation.on('go-back', () => {\r\n state.unset('hotelGroup_drillDown');\r\n this.refreshGridForUINext('HotelGroupGrid');\r\n });\r\n\r\n this.hotelGroupInformation.on('remove-group-info', () => {\r\n state.unset('hotelGroup_drillDown');\r\n\r\n const entitySet = gridOptionUtils.getEntitySetByName('hotel');\r\n const { options } = this.grid.gridView.get('dataSource');\r\n\r\n options.entitySet = entitySet;\r\n this.showHotelGroupInformation();\r\n this.grid.gridView.refresh(true);\r\n }, this);\r\n\r\n if (navigationLevels.length > 0) {\r\n const currentLevel = navigationLevels.shift();\r\n const gridChooserItem = hotelCenterOverviewGridMap[currentLevel.name];\r\n this.model.set(gridChooserItem);\r\n this.setupGrid({ preferenceConfig });\r\n this.gridRefreshed();\r\n } else {\r\n initBulkEditBidPanel(this);\r\n initBulkEditBidMultiPanel(this);\r\n initBulkIncreaseDecreaseBidPanel(this);\r\n }\r\n $('body').on('click', '.recon-reports-link', e => this.onReconReportsLinkClicked(e));\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .hotel-center-overview-toolbar-container .grid-menu-chooser-button':\r\n () => this.onGridMenuChooserClicked(),\r\n 'click .grid-submenu': linkedMenu => this.onGridLinkMenuClicked(linkedMenu),\r\n 'click .drillDownLink.HotelGroupGrid': e => this.onHotelGroupNameClicked(e, 'HotelGroupGrid'),\r\n 'click .drillDownLink.HotelSubAccountGrid': e => this.onSubAccountNameClicked(e, 'HotelSubAccountGrid'),\r\n 'click .drillDownLink.HotelIdGridHotelGroup': e => this.onHotelGroupNameClicked(e, 'HotelIdGrid'),\r\n 'click .drillDownLink.HotelGroupGridSubAccount': e => this.onSubAccountNameClicked(e, 'HotelGroupGrid'),\r\n 'click .drillDownLink.HotelIdGridSubAccount': e => this.onSubAccountNameClicked(e, 'HotelIdGrid'),\r\n };\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n renderTrunk() {\r\n this.filterService.refreshSource();\r\n this.filterService.initializeCombinedFilterPromise.then(() => {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter()\r\n );\r\n });\r\n super.renderTrunk();\r\n\r\n if ($('.hotel-center-overview-toolbar-container .hotel-center-global-toolbar-containter').length === 0) {\r\n $('.hotel-center-overview-toolbar-container').append(toolbarTemplate());\r\n }\r\n if (state.get('subAccount_id')) {\r\n this.setUpSubAccountBar();\r\n } else {\r\n this.updateSelectedSubaccount('selectAllSubAccount');\r\n $('.visible-element .summary-bar-breadcrumb .breadcrumb-item').addClass('current-breadcrumb');\r\n }\r\n this.renderGrid();\r\n }\r\n\r\n onHotelGroupNameClicked(e, gridName) {\r\n const model = this.grid.gridView.itemOfElement(e.target);\r\n\r\n if (gridName === 'HotelGroupGrid') {\r\n state.set('hotelGroup_drillDown', {\r\n hotelGroupId: putil.get(model, 'Id'),\r\n hotelGroupName: putil.get(model, 'Name'),\r\n subAccountId: putil.get(model, 'SubAccountId') || state.get('subAccount_id'),\r\n });\r\n this.refreshGridForUINext('HotelIdGrid');\r\n } else {\r\n state.set('hotelGroup_drillDown', {\r\n hotelGroupId: putil.get(model, 'HotelGroupId'),\r\n hotelGroupName: putil.get(model, 'HotelGroupName'),\r\n subAccountId: putil.get(model, 'SubAccountId') || state.get('subAccount_id'),\r\n });\r\n this.showHotelGroupInformation();\r\n const entitySet = gridOptionUtils.getEntitySetByName('hotel', 'hotelGroup');\r\n const { options } = this.grid.gridView.get('dataSource');\r\n\r\n options.entitySet = entitySet;\r\n this.grid.gridView.refresh(true);\r\n }\r\n }\r\n\r\n onSubAccountNameClicked(e, gridName) {\r\n const model = this.grid.gridView.itemOfElement(e.target);\r\n const subAccountId = gridName === 'HotelSubAccountGrid' ? putil.get(model, 'Id') : putil.get(model, 'SubAccountId');\r\n\r\n // if subaccount changed, reset hotel group drill down\r\n if (subAccountId !== state.get('subAccount_id')) {\r\n state.unset('hotelGroup_drillDown');\r\n }\r\n\r\n state.set('subAccount_id', subAccountId);\r\n if (gridName === 'HotelGroupGrid') {\r\n this.onSubaccountChangedForUINext(subAccountId);\r\n } else {\r\n this.refreshGridForUINext('HotelGroupGrid');\r\n this.setUpSubAccountBar();\r\n }\r\n }\r\n\r\n onGridLinkMenuClicked(linkedMenu) {\r\n this.$('.grid-menu-chooser-button').parent().toggleClass('open');\r\n\r\n // Second class name of the clickable menu states which menu is clicked.\r\n const itemClassName = linkedMenu.currentTarget.classList[1];\r\n this.setState({ navigationLevels: [{ name: itemClassName }] });\r\n }\r\n\r\n onReconReportsLinkClicked() {\r\n this.notificationApi.dismiss(this.floatingBanner);\r\n this.jumpToReconReports();\r\n }\r\n\r\n setState({ navigationLevels }) {\r\n const defaultOverviewGrid = state.get('overviewGrid_key') || 'grid-chooser-item-subaccount';\r\n const defaultGridChooserItem = hotelCenterOverviewGridMap[defaultOverviewGrid];\r\n\r\n if (navigationLevels.length > 0) {\r\n const currentLevel = navigationLevels.shift();\r\n const gridChooserItem = hotelCenterOverviewGridMap[currentLevel.name];\r\n this.shouldSetUpGrid = !!state.get('overviewGrid_key') && (defaultOverviewGrid !== currentLevel.name);\r\n this.model.set(gridChooserItem);\r\n state.set('overviewGrid_key', currentLevel.name);\r\n } else {\r\n this.model.set(defaultGridChooserItem);\r\n state.set('overviewGrid_key', defaultOverviewGrid);\r\n }\r\n return this;\r\n }\r\n\r\n onGridMenuChooserClicked() {\r\n this.$('.grid-menu-chooser-button').parent().toggleClass('open');\r\n }\r\n\r\n showBulkChangeBid(toolbar, scope) {\r\n this.toolbar = toolbar;\r\n\r\n this.$('.bulk-bid-edit-panel-container').removeClass('hide');\r\n this.bulkEditBidPanel.setState({ scope });\r\n this.expandToolBar();\r\n }\r\n\r\n showBulkChangeBidMultipliers(toolbar, scope) {\r\n this.toolbar = toolbar;\r\n this.$('.bulk-bid-multipliers-edit-panel-container').removeClass('hide');\r\n this.bulkEditBidMultiPanel.setState({ scope });\r\n this.expandToolBar();\r\n }\r\n\r\n showBulkEditIncreseOrDecreseBids(toolbar, scope) {\r\n this.toolbar = toolbar;\r\n this.bulkIncreaseDecreaseBidPanel.setState({ scope });\r\n this.$('.bulk-increase-decrease-bid-panel-container').removeClass('hide');\r\n this.expandToolBar();\r\n }\r\n\r\n showHotelGroupInformation() {\r\n const drillDown = state.get('hotelGroup_drillDown');\r\n\r\n if (drillDown && drillDown.hotelGroupId && drillDown.hotelGroupName) {\r\n this.hotelGroupInformation.model.set('hotelGroup', { Name: drillDown.hotelGroupName });\r\n this.$('.hotel-group-information-container').removeClass('hide');\r\n } else if (!this.$('.hotel-group-information-container').hasClass('hide')) {\r\n this.$('.hotel-group-information-container').addClass('hide');\r\n }\r\n }\r\n\r\n expandToolBar() {\r\n const emptyBackboneView = new Backbone.View();\r\n\r\n this.toolbar.overrideWith(emptyBackboneView);\r\n }\r\n\r\n restoreToolBar() {\r\n this.toolbar.restoreToolbar();\r\n document.getElementById('bulk-edit-dropdown').click();\r\n }\r\n\r\n hideToolbarForNewUI() {\r\n $('.hotel-center-overview-toolbar-container').remove();\r\n }\r\n\r\n renderGrid() {\r\n const { gridName } = this.model.attributes;\r\n this.fetchPreferenceConfig().then((preferenceConfig) => {\r\n preferenceConfig.name = gridName;\r\n this.hideToolbarForNewUI();\r\n if (this.shouldSetUpGrid) {\r\n this.shouldSetUpGrid = false;\r\n this.setupGrid({ preferenceConfig });\r\n this.gridRefreshed();\r\n }\r\n if ($('.hotel-center-overview-grid-container')) {\r\n $('.hotel-center-overview-grid-container').empty().append(this.grid.gridView.render().$el);\r\n this.showHotelGroupInformation();\r\n }\r\n });\r\n }\r\n\r\n setupGrid({ preferenceConfig }) {\r\n const {\r\n gridName = this.gridName,\r\n } = this.model.attributes;\r\n\r\n let gridOptions = {};\r\n let gridActivity;\r\n const dateFilterContainer = this.$('.date-picker-container');\r\n\r\n switch (gridName) {\r\n case 'HotelGroupGrid':\r\n gridOptions = new HotelGroupGridOptions({\r\n view: this,\r\n gridName,\r\n dateFilterContainer,\r\n serverContext: this.serverContext,\r\n preferenceService: this.preferenceService,\r\n p$daterange: this.p$daterange,\r\n filterService: this.filterService,\r\n viewport: this.viewport,\r\n customHeaderOffset: this.customHeaderOffset,\r\n onBulkEditChangeBids: toolbar => this.showBulkChangeBid(toolbar, 'hotelGroup'),\r\n onBulkEditChangeMultipliersBids: toolbar => this.showBulkChangeBidMultipliers(toolbar, 'hotelGroup'),\r\n onBulkEditIncreseOrDecreseBids: toolbar => this.showBulkEditIncreseOrDecreseBids(toolbar, 'hotelGroup'),\r\n });\r\n gridActivity = this.overViewPageScenario.loadHotelGroupGrid.create();\r\n break;\r\n\r\n case 'HotelIdGrid':\r\n {\r\n this.showHotelGroupInformation();\r\n\r\n gridOptions = new HotelIdGridOptions({\r\n view: this,\r\n gridName,\r\n dateFilterContainer,\r\n serverContext: this.serverContext,\r\n preferenceService: this.preferenceService,\r\n p$daterange: this.p$daterange,\r\n filterService: this.filterService,\r\n viewport: this.viewport,\r\n customHeaderOffset: this.customHeaderOffset,\r\n onBulkEditChangeBids: toolbar => this.showBulkChangeBid(toolbar, 'hotel'),\r\n onBulkEditChangeMultipliersBids: toolbar => this.showBulkChangeBidMultipliers(toolbar, 'hotel'),\r\n onBulkEditIncreseOrDecreseBids: toolbar => this.showBulkEditIncreseOrDecreseBids(toolbar, 'hotel'),\r\n });\r\n gridActivity = this.overViewPageScenario.loadHotelIdGrid.create();\r\n break;\r\n }\r\n\r\n case 'HotelDeviceTypeGrid':\r\n gridOptions = new HotelDeviceTypeGridOptions({\r\n view: this,\r\n gridName,\r\n dateFilterContainer,\r\n preferenceService: this.preferenceService,\r\n p$daterange: this.p$daterange,\r\n filterService: this.filterService,\r\n });\r\n gridActivity = this.overViewPageScenario.loadDeviceTypeGrid.create();\r\n break;\r\n\r\n case 'HotelDateGrid':\r\n gridOptions = new HotelDateGridOptions({\r\n view: this,\r\n gridName,\r\n dateFilterContainer,\r\n preferenceService: this.preferenceService,\r\n p$daterange: this.p$daterange,\r\n filterService: this.filterService,\r\n });\r\n gridActivity = this.overViewPageScenario.loadDateGrid.create();\r\n break;\r\n\r\n case 'HotelLengthOfStayGrid':\r\n gridOptions = new LengthOfStayGridOptions({\r\n view: this,\r\n gridName,\r\n dateFilterContainer,\r\n preferenceService: this.preferenceService,\r\n p$daterange: this.p$daterange,\r\n filterService: this.filterService,\r\n });\r\n gridActivity = this.overViewPageScenario.loadLengthOfStayGrid.create();\r\n break;\r\n\r\n case 'HotelUserCountryGrid':\r\n gridOptions = new PublisherCountryIdGridOptions({\r\n view: this,\r\n gridName,\r\n dateFilterContainer,\r\n preferenceService: this.preferenceService,\r\n p$daterange: this.p$daterange,\r\n filterService: this.filterService,\r\n });\r\n gridActivity = this.overViewPageScenario.loadUserCountryGrid.create();\r\n break;\r\n\r\n case 'HotelSlotTypeGrid':\r\n gridOptions = new SlotTypeGridOptions({\r\n view: this,\r\n gridName,\r\n dateFilterContainer,\r\n preferenceService: this.preferenceService,\r\n p$daterange: this.p$daterange,\r\n filterService: this.filterService,\r\n });\r\n gridActivity = this.overViewPageScenario.loadSlotTypeGrid.create();\r\n break;\r\n\r\n case 'HotelCountryGrid':\r\n gridOptions = new CountryCodeGridOptions({\r\n view: this,\r\n gridName,\r\n dateFilterContainer,\r\n preferenceService: this.preferenceService,\r\n p$daterange: this.p$daterange,\r\n filterService: this.filterService,\r\n });\r\n gridActivity = this.overViewPageScenario.loadHotelCountryGrid.create();\r\n break;\r\n\r\n case 'AdvancedBookingGrid':\r\n gridOptions = new HotelAdvancedBookingGridOptions({\r\n view: this,\r\n gridName,\r\n dateFilterContainer,\r\n preferenceService: this.preferenceService,\r\n p$daterange: this.p$daterange,\r\n filterService: this.filterService,\r\n });\r\n gridActivity = this.overViewPageScenario.loadAdvancedBookingGrid.create();\r\n break;\r\n\r\n case 'CheckinDayGrid':\r\n gridOptions = new HotelCheckinDayGridOptions({\r\n view: this,\r\n gridName,\r\n dateFilterContainer,\r\n preferenceService: this.preferenceService,\r\n p$daterange: this.p$daterange,\r\n filterService: this.filterService,\r\n });\r\n gridActivity = this.overViewPageScenario.loadCheckinDayGrid.create();\r\n break;\r\n\r\n case 'DateTypeGrid':\r\n gridOptions = new DateTypeGridOptions({\r\n view: this,\r\n gridName,\r\n dateFilterContainer,\r\n preferenceService: this.preferenceService,\r\n p$daterange: this.p$daterange,\r\n filterService: this.filterService,\r\n });\r\n gridActivity = this.overViewPageScenario.loadDateTypeGrid.create();\r\n break;\r\n\r\n case 'SiteTypeGrid':\r\n gridOptions = new SiteTypeGridOptions({\r\n view: this,\r\n gridName,\r\n dateFilterContainer,\r\n preferenceService: this.preferenceService,\r\n p$daterange: this.p$daterange,\r\n filterService: this.filterService,\r\n });\r\n gridActivity = this.overViewPageScenario.loadSiteTypeGrid.create();\r\n break;\r\n\r\n case 'HotelSubAccountGrid':\r\n default:\r\n gridOptions = new HotelSubAccountGridOptions({\r\n view: this,\r\n gridName,\r\n dateFilterContainer,\r\n serverContext: this.serverContext,\r\n preferenceService: this.preferenceService,\r\n p$daterange: this.p$daterange,\r\n filterService: this.filterService,\r\n viewport: this.viewport,\r\n customHeaderOffset: this.customHeaderOffset,\r\n i18n: this.i18n,\r\n });\r\n gridActivity = this.overViewPageScenario.loadSubAccountGrid.create();\r\n break;\r\n }\r\n const inlineDownload = inlineDownloadWithoutFilterstateAndSegmentPlugin;\r\n const pluginFactories = {\r\n perfMarkerPlugin,\r\n toolbarPlugin,\r\n paginationPlugin,\r\n dateFilterPlugin,\r\n columnChooserPlugin,\r\n placeholderPlugin,\r\n uiBlockerPlugin,\r\n inlineDownload,\r\n newPerformanceLogPlugin,\r\n editablePlugin,\r\n crossPageSelectAllPlugin,\r\n inlineErrorPlugin,\r\n };\r\n\r\n if (this.extendPluginFactories && this.extendPluginFactories.columnChooserPlugin) {\r\n pluginFactories.columnChooserPlugin = this.extendPluginFactories.columnChooserPlugin;\r\n }\r\n const useEditablePlugin = (gridName === 'HotelSubAccountGrid' || gridName === 'HotelIdGrid' || gridName === 'HotelGroupGrid');\r\n const useQuickFilterPlugin = (gridName === 'HotelIdGrid');\r\n const defaultPlugins = getDefaultPlugins({\r\n pluginFactories,\r\n gridOptions,\r\n useQuickFilterPlugin,\r\n useEditablePlugin,\r\n appConfig,\r\n perfMarker: this.perfMarker,\r\n });\r\n const extendedPlugins = this.extendPlugins();\r\n this.grid = pgridFactory({\r\n gridConfig: gridOptions,\r\n plugins: defaultPlugins.concat(extendedPlugins),\r\n preferenceConfig: preferenceConfig || {},\r\n });\r\n this.grid.gridView.on('willReload', () => {\r\n this.trigger('willReload');\r\n });\r\n this.grid.gridView.on('didUpdate', (changes) => {\r\n this.checkShowWarning(this.grid.gridView.itemArray);\r\n const { _isRendered } = this.grid.gridView;\r\n if (_isRendered && _.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 this.preferenceService.setAtUserLevel({\r\n Name: `WebApp.CampaignUI.${gridName}`,\r\n Data: {\r\n sortInfo: {\r\n orderby,\r\n sortableHeader,\r\n },\r\n },\r\n });\r\n }\r\n\r\n if (_.has(changes, 'columns')) {\r\n const selectedColumns = _.pluck(changes.columns, 'name');\r\n const withConversions = _.intersection(selectedColumns, conversionColumnList);\r\n\r\n gridActivity.trace(`Grid did redraw ${withConversions.length > 0 ? 'with' : 'without'} conversion columns`);\r\n }\r\n });\r\n\r\n this.listenTo(this.filterService, 'filter-state-changed', () => {\r\n updateGridQuery(this.grid.gridView, this.filterService.getCombinedFilter(), true);\r\n });\r\n\r\n if (!_.contains(biGridNames, gridName)) {\r\n this.grid.gridView.on('didReload', () => {\r\n this.grid.gridView.deselectAll();\r\n });\r\n }\r\n\r\n this.grid.gridView.on('subAccountBarChanged', () => {\r\n if (this.subAccountBar) {\r\n this.subAccountBar.onSubAccountBarChanged();\r\n }\r\n });\r\n\r\n this.grid.gridView.on('update:finished', () => {\r\n gridActivity.trace('Grid loading is completed');\r\n });\r\n\r\n gridActivity.trace('Grid setup is completed');\r\n }\r\n\r\n checkShowWarning(items) {\r\n if (_.some(items, item => item.PPSPauseType === 'Paused') && !this.ppsPauseNotificationShowed) {\r\n this.floatingBanner = this.notificationApi.showWarning(this.i18n.getString(_TL_('An account reconciliation report for your pay-per-stay bids is overdue – {{aTagBegin}}click here{{aTagEnd}} to submit your report to unpause your ads.'), {\r\n aTagBegin: '',\r\n aTagEnd: '',\r\n }));\r\n this.ppsPauseNotificationShowed = true;\r\n }\r\n }\r\n\r\n onSelected(selectedItems) {\r\n // The grid names in which bulk edit is enabled\r\n const enabledGrids = ['HotelIdGrid', 'HotelGroupGrid'];\r\n const { gridName } = super.getState();\r\n\r\n if (!_.contains(enabledGrids, gridName)) {\r\n return;\r\n }\r\n const selectionCount =\r\n this.grid.crossPageSelectAll && this.grid.crossPageSelectAll.isAllSelected ?\r\n this.grid.crossPageSelectAll.viewModel.totalRowsTotalPageCount() :\r\n selectedItems.length;\r\n const filter = this.grid.filterState.getAllFilters();\r\n\r\n this.bulkEditBidPanel.updateSelection({ selectionCount, selectedItems, filter });\r\n this.bulkEditBidMultiPanel.updateSelection({ selectionCount, selectedItems, filter });\r\n const bidTypeSet = _.chain(selectedItems)\r\n .map(item => item.Bid['@odata.type'])\r\n .uniq()\r\n .value();\r\n\r\n this.grid.config.gridToolbar.update({\r\n id: 'bulk-edit-increase-decrease-bids',\r\n disabled: _.size(bidTypeSet) > 1,\r\n });\r\n this.bulkIncreaseDecreaseBidPanel.updateSelection({\r\n selectionCount,\r\n selectedItems,\r\n bidTypeSet,\r\n filter,\r\n });\r\n }\r\n\r\n onBodyClicked(e) {\r\n const clickedEl = $(e.target);\r\n\r\n // light dismiss\r\n if (clickedEl.closest(this.$('.grid-groupmenu-container')).length === 0) {\r\n this.$('.grid-menu-chooser-button').parent().removeClass('open');\r\n }\r\n }\r\n\r\n refreshGrids(gridsList) {\r\n if (_.indexOf(gridsList, this.grid.config.name) !== -1) {\r\n this.grid.gridView.refresh(true);\r\n }\r\n }\r\n\r\n setUpSubAccountBar() {\r\n if ($('.hotel-center-overview-page').length === 0) {\r\n return;\r\n }\r\n this.subAccountBar = new SubAccountBar();\r\n\r\n this.listenTo(this.subAccountBar, 'subaccountChanged', (gridsList) => {\r\n this.refreshGrids(gridsList);\r\n });\r\n\r\n const summaryBarItemsEl = this.subAccountBar.render().el;\r\n $('.visible-element #custom-summary-bar-items').html(summaryBarItemsEl);\r\n this.updateSelectedSubaccount(state.get('subAccount_id'));\r\n }\r\n\r\n remove() {\r\n if (this.subAccountBar) {\r\n this.subAccountBar.remove();\r\n }\r\n super.remove();\r\n }\r\n\r\n onSubaccountChangedForUINext(selectSubAccountId) {\r\n if (selectSubAccountId === 'selectAllSubAccount') {\r\n state.set('subAccount_id', '');\r\n $('.visible-element #custom-summary-bar-items').html('');\r\n } else {\r\n state.set('subAccount_id', selectSubAccountId);\r\n }\r\n state.unset('hotelGroup_drillDown');\r\n if (this.gridName === 'HotelSubAccountGrid' && selectSubAccountId !== 'selectAllSubAccount') {\r\n this.refreshGridForUINext('HotelGroupGrid');\r\n this.setUpSubAccountBar();\r\n return;\r\n }\r\n if (!this.accountService) {\r\n this.accountService = new AccountService();\r\n }\r\n this.accountService.fetchSubAccountAsync().then(() => {\r\n if ($('.hotel-center-overview-page').length === 0) {\r\n return;\r\n }\r\n this.shouldSetUpGrid = true;\r\n this.renderTrunk();\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport const getDefaultPlugins = ({\r\n pluginFactories,\r\n gridOptions,\r\n useEditablePlugin = false,\r\n appConfig,\r\n perfMarker,\r\n}) => _.compact([\r\n { plugin: pluginFactories.perfMarkerPlugin, config: { appConfig, marker: perfMarker } },\r\n {\r\n plugin: pluginFactories.toolbarPlugin,\r\n },\r\n {\r\n plugin: pluginFactories.paginationPlugin,\r\n config: gridOptions.plugins.pagination,\r\n },\r\n {\r\n plugin: pluginFactories.dateFilterPlugin,\r\n config: gridOptions.plugins.dateFilter,\r\n },\r\n {\r\n plugin: pluginFactories.columnChooserPlugin,\r\n config: gridOptions.plugins.columnChooser,\r\n },\r\n {\r\n plugin: pluginFactories.placeholderPlugin,\r\n config: gridOptions.plugins.placeholder,\r\n },\r\n {\r\n plugin: pluginFactories.uiBlockerPlugin,\r\n config: gridOptions.plugins.uiBlocker,\r\n },\r\n {\r\n plugin: pluginFactories.inlineDownload,\r\n config: gridOptions.plugins.inlineDownload,\r\n },\r\n {\r\n plugin: pluginFactories.newPerformanceLogPlugin,\r\n config: gridOptions.plugins.performanceLogNew,\r\n },\r\n useEditablePlugin && {\r\n plugin: pluginFactories.editablePlugin,\r\n config: gridOptions.plugins.editable,\r\n },\r\n useEditablePlugin && {\r\n plugin: pluginFactories.crossPageSelectAllPlugin,\r\n },\r\n useEditablePlugin && {\r\n plugin: pluginFactories.inlineErrorPlugin,\r\n },\r\n]);\r\n","import { getHotelCenterService } from '@bingads-webui-campaign/hotel-center-service';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst dataStore = globalContext.require('component/js-data-campaign/index');\r\nconst state = globalContext.require('component/state/index');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\n\r\nexport const {\r\n gridOptionUtils,\r\n bulkEditParams,\r\n bulkEditService,\r\n} = getHotelCenterService({ state, edm, dataStore });\r\n","import { getHotelCenterShared } from '@bingads-webui-campaign/hotel-center-shared';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { SubAccount, HotelGroup, Multiplier, Hotel, PercentageBid, FixedBid, PayPerStayBid } from '@bingads-webui/hotel-odata-schemas';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared');\r\nconst pageContext = globalContext.require('PageContext');\r\nconst state = globalContext.require('component/state/index');\r\nconst dateFilterPreferences = globalContext.require('component/bingads-grid/service/date-filter-preferences');\r\nconst segmentationPreferences = globalContext.require('component/bingads-grid/service/segmentation-preferences');\r\nconst preferencesService = globalContext.require('component/preference/service/index');\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\nconst config = globalContext.require('component/config/index');\r\n\r\nexport const {\r\n HotelGroupInformationView,\r\n dateFilterPlugin,\r\n fetchPreferenceConfig,\r\n instrumentation,\r\n toolbarTemplate,\r\n BidMultipliersView,\r\n BidStrategyView,\r\n HotelModel,\r\n HotelGroupModel,\r\n EditPanelView,\r\n SubAccountModel,\r\n BidCapView,\r\n lightDismissible,\r\n} = getHotelCenterShared({\r\n i18n,\r\n pageContext,\r\n state,\r\n dateFilterPreferences,\r\n preferencesService,\r\n segmentationPreferences,\r\n config,\r\n multiplierSchema: Multiplier,\r\n fixedBidSchema: FixedBid,\r\n percentageBidSchema: PercentageBid,\r\n payPerStayBidSchema: PayPerStayBid,\r\n hotelSchema: Hotel,\r\n jsdata,\r\n edm,\r\n hotelGroupSchema: HotelGroup,\r\n subAccountSchema: SubAccount,\r\n});\r\n","import { getHotelCenterUtils } from '@bingads-webui-campaign/hotel-center-utils';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-utils');\r\nconst state = globalContext.require('component/state/index');\r\n\r\nexport const {\r\n inlineDownloadUtils,\r\n bidMultiplierUtils,\r\n} = getHotelCenterUtils({ state, i18n });\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport template from './bid-inline-edit-template.pug';\r\nimport InlineEditView from './inline-edit-view';\r\nimport { HotelModel, SubAccountModel, HotelGroupModel, BidStrategyView } from '../hotel-center-shared';\r\n\r\nconst legacyI18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\n\r\nclass BidInlineEditView extends InlineEditView {\r\n constructor({\r\n selectedItem, allowEmptyStrategy, serverContext = { DynamicPermissions: {} }, i18n,\r\n }) {\r\n const bidStrategyView = new BidStrategyView({\r\n allowEmptyStrategy,\r\n isReadonly: false,\r\n enablePPS: serverContext.DynamicPermissions.ReconciliationReport,\r\n });\r\n\r\n super({ view: bidStrategyView, i18n });\r\n this.updateBidStrategyView(selectedItem);\r\n this.inlineEditBidActivity = this.overViewPageScenario.inlineEditHotelBid.create();\r\n }\r\n\r\n updateBidStrategyView(selectedItem) {\r\n if (!selectedItem.Bid) {\r\n return;\r\n }\r\n\r\n const bidAmount = selectedItem.Bid.Amount;\r\n\r\n if (selectedItem.Bid['@odata.type'] === '#Model.PercentageBid') {\r\n this.view.setState({ bidStrategy: 'percentage', bidAmount });\r\n } else if (selectedItem.Bid['@odata.type'] === '#Model.PayPerStayBid') {\r\n this.view.setState({\r\n bidStrategy: 'payperstay',\r\n bidAmount,\r\n isReadonly: true,\r\n });\r\n } else {\r\n this.view.setState({ bidStrategy: 'fixed', bidAmount });\r\n }\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n}\r\n\r\nexport class HotelBidInlineEditView extends BidInlineEditView {\r\n constructor({ selectedItem, serverContext }) {\r\n super({ selectedItem, allowEmptyStrategy: true, serverContext });\r\n this.selectedItem = selectedItem;\r\n this.scope = legacyI18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Id_Label');\r\n }\r\n\r\n processEditChange(state) {\r\n const subAccountId = this.selectedItem.SubAccountId;\r\n const entitySet = subAccountId ?\r\n edm.currentAccount.SubAccounts.$withKey(subAccountId).Hotels :\r\n _.noop();\r\n const hotelModel = new HotelModel({ Id: this.selectedItem.Id, entitySet });\r\n\r\n hotelModel.set('Bid', state.bid);\r\n\r\n const saveModel = hotelModel\r\n .save(['Bid'], { patch: true });\r\n this.inlineEditBidActivity.trace(`Hotel inline edit bid did save model with ${saveModel}`);\r\n return saveModel;\r\n }\r\n\r\n updateBidStrategyView(selectedItem) {\r\n super.updateBidStrategyView(selectedItem);\r\n if (selectedItem.BidSource === 'HotelGroup' || selectedItem.BidSource === 'SubAccount') {\r\n this.view.setState({ bidStrategy: 'empty' });\r\n }\r\n }\r\n}\r\n\r\nexport class HotelGroupBidInlineEditView extends BidInlineEditView {\r\n constructor({ selectedItem, serverContext }) {\r\n super({ selectedItem, allowEmptyStrategy: true, serverContext });\r\n this.selectedItem = selectedItem;\r\n this.scope = legacyI18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Group_Label');\r\n }\r\n\r\n processEditChange(state) {\r\n const subAccountId = this.selectedItem.SubAccountId;\r\n const entitySet = subAccountId ?\r\n edm.currentAccount.SubAccounts.$withKey(subAccountId).HotelGroups :\r\n _.noop();\r\n const hotelGroupModel = new HotelGroupModel({\r\n Id: this.selectedItem.Id,\r\n Name: this.selectedItem.Name,\r\n entitySet,\r\n });\r\n\r\n hotelGroupModel.set('Bid', state.bid);\r\n\r\n const saveModel = hotelGroupModel\r\n .save(['Bid'], { patch: true });\r\n\r\n this.inlineEditBidActivity.trace(`Hotel group inline edit bid did save model with ${saveModel}`);\r\n return saveModel;\r\n }\r\n\r\n updateBidStrategyView(selectedItem) {\r\n super.updateBidStrategyView(selectedItem);\r\n if (selectedItem.BidSource === 'SubAccount') {\r\n this.view.setState({ bidStrategy: 'empty' });\r\n }\r\n }\r\n}\r\n\r\nexport class SubAccountBidInlineEditView extends BidInlineEditView {\r\n constructor({\r\n selectedItem, currentSubAccountId, serverContext, i18n,\r\n }) {\r\n super({\r\n selectedItem, allowEmptyStrategy: false, serverContext, i18n,\r\n });\r\n this.selectedItem = selectedItem;\r\n this.scope = this.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_SubAccount_Label');\r\n if (currentSubAccountId === selectedItem.Id) {\r\n this.refreshForSubAccountBar = true;\r\n }\r\n }\r\n\r\n processEditChange(state) {\r\n const subAccountModel = new SubAccountModel({\r\n Id: this.selectedItem.Id,\r\n Name: this.selectedItem.Name,\r\n });\r\n\r\n subAccountModel.set('Bid', state.bid);\r\n\r\n const saveModel = subAccountModel\r\n .save(['Bid'], { patch: true });\r\n this.inlineEditBidActivity.trace(`SubAccount inline edit bid did save model with ${saveModel}`);\r\n return saveModel;\r\n }\r\n}\r\n\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport template from './inline-edit-view-template.pug';\r\nimport { processError } from '../error-mapping';\r\nimport { EditPanelView, instrumentation } from '../hotel-center-shared';\r\n\r\nconst legacyI18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\n/**\r\n * Class representing inline edit view\r\n * @extends View\r\n */\r\nexport default class InlineEditView extends DeterministicView {\r\n initialize({ view, hasCleanButton, i18n }) {\r\n this.i18n = i18n || legacyI18n;\r\n this.view = view;\r\n\r\n if (this.view instanceof DeterministicView) {\r\n this.setChild('child-view-container', this.view);\r\n }\r\n\r\n this.editPanelView = new EditPanelView();\r\n this.editPanelView.on('saved', () => {\r\n this.onSave();\r\n }, this);\r\n this.editPanelView.on('canceled', () => {\r\n this.onCancel();\r\n }, this);\r\n if (hasCleanButton) {\r\n this.editPanelView.setState({ hasCleanButton });\r\n this.editPanelView.on('cleaned', () => {\r\n this.getChild('child-view-container').clean();\r\n }, this);\r\n }\r\n this.setChild('edit-panel-view', this.editPanelView);\r\n\r\n this.setState({ errors: [] });\r\n this.overViewPageScenario = instrumentation.overViewPage.create();\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n onCancel() {\r\n this.setState({ errors: [] });\r\n this.trigger('close');\r\n }\r\n\r\n render() {\r\n super.renderTrunk();\r\n }\r\n\r\n onSave() {\r\n const state = this.view.getState();\r\n\r\n // not valid\r\n if (!state.isValid) {\r\n return;\r\n }\r\n\r\n this.processInlineEditChange(state, this);\r\n this.setState({ errors: [] });\r\n }\r\n\r\n processInlineEditChange(state, object) {\r\n const proto = Object.getPrototypeOf(object);\r\n const { i18n } = this;\r\n\r\n if (!proto) {\r\n return;\r\n }\r\n const properties = Object.getOwnPropertyNames(proto);\r\n const processEditFunction = _.filter(properties, func => func === 'processEditChange' && _.isFunction(this[func]));\r\n const { scope } = this;\r\n\r\n this[processEditFunction](state).then(() => {\r\n this.trigger('close', { refreshForGrid: true, refreshForSubAccountBar: this.refreshForSubAccountBar });\r\n }).catch((e) => {\r\n if (e.errors) {\r\n const errorInfo = processError({ errors: e.errors, scope, i18n });\r\n\r\n this.setState({ errors: [errorInfo] });\r\n }\r\n }).finally(withUiBlock(this.el));\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { bidMultiplierUtils } from '../hotel-center-utils';\r\nimport InlineEditView from './inline-edit-view';\r\nimport template from './multiplier-inline-edit-template.pug';\r\nimport {\r\n HotelModel, SubAccountModel, HotelGroupModel, BidMultipliersView,\r\n} from '../hotel-center-shared';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\n\r\nclass BidMultipliersInlineEditView extends InlineEditView {\r\n constructor({ selectedItem, bidMultipliersView, serverContext = { DynamicPermissions: {} } }) {\r\n super({ view: bidMultipliersView, hasCleanButton: true });\r\n this.view.on('update:isUseParent', (isUseParent) => {\r\n this.getChild('edit-panel-view').setState({ isCleanButtonDisabled: isUseParent });\r\n });\r\n this.serverContext = serverContext;\r\n this.updateBidMultipliersView(selectedItem);\r\n this.inlineEditHotelMultiplierActivity =\r\n this.overViewPageScenario.inlineEditHotelMultiplier.create();\r\n }\r\n\r\n updateBidMultipliersView(selectedItem) {\r\n if (!selectedItem.BidMultipliers) {\r\n return;\r\n }\r\n\r\n const bidMultipliers = bidMultiplierUtils.getMultipliersState(selectedItem.BidMultipliers);\r\n\r\n this.view.emptyDeviceTypeAndCheckInDay();\r\n this.view.setState({\r\n bidMultipliers,\r\n isPayPerStay: _.result(selectedItem.Bid, '@odata.type') === '#Model.PayPerStayBid',\r\n isPayPerStayPhase2Pilot: this.serverContext.DynamicPermissions.ReconciliationReport,\r\n });\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n}\r\n\r\nexport class HotelBidMultipliersInlineEditView extends BidMultipliersInlineEditView {\r\n constructor({ selectedItem, serverContext }) {\r\n const bidMultipliersView = new BidMultipliersView();\r\n\r\n super({ selectedItem, bidMultipliersView, serverContext });\r\n this.selectedItem = selectedItem;\r\n this.scope = i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Id_Label');\r\n }\r\n\r\n processEditChange(state) {\r\n const subAccountId = this.selectedItem.SubAccountId;\r\n const entitySet = subAccountId ?\r\n edm.currentAccount.SubAccounts.$withKey(subAccountId).Hotels :\r\n _.noop();\r\n const hotelModel = new HotelModel({ Id: this.selectedItem.Id, entitySet });\r\n\r\n hotelModel.set('BidMultipliers', state.bidMultipliers);\r\n\r\n const saveModel = hotelModel\r\n .save(['BidMultipliers'], { patch: true });\r\n\r\n this.inlineEditHotelMultiplierActivity.trace(`Hotel inline edit bid multiplier did save model with ${saveModel}`);\r\n return saveModel;\r\n }\r\n\r\n updateBidMultipliersView(selectedItem) {\r\n super.updateBidMultipliersView(selectedItem);\r\n const bidMultiplierSource = selectedItem.BidMultiplierSource;\r\n\r\n const isUseParent = bidMultiplierSource === 'HotelGroup' || bidMultiplierSource === 'SubAccount';\r\n const isPayPerStay = _.result(selectedItem.Bid, '@odata.type') === '#Model.PayPerStayBid';\r\n const isPayPerStayPhase2Pilot = this.serverContext.DynamicPermissions.ReconciliationReport;\r\n this.getChild('edit-panel-view').setState({\r\n isCleanButtonDisabled: isUseParent || isPayPerStay,\r\n isSaveButtonDisabled: isPayPerStay && !isPayPerStayPhase2Pilot,\r\n });\r\n\r\n this.view.setState({ isUseParent });\r\n }\r\n}\r\n\r\nexport class HotelGroupBidMultipliersInlineEditView extends BidMultipliersInlineEditView {\r\n constructor({ selectedItem, serverContext }) {\r\n const bidMultipliersView = new BidMultipliersView();\r\n\r\n super({ selectedItem, bidMultipliersView, serverContext });\r\n this.selectedItem = selectedItem;\r\n this.scope = i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Group_Label');\r\n }\r\n\r\n processEditChange(state) {\r\n const subAccountId = this.selectedItem.SubAccountId;\r\n const entitySet = subAccountId ?\r\n edm.currentAccount.SubAccounts.$withKey(subAccountId).HotelGroups :\r\n _.noop();\r\n const hotelGroupModel = new HotelGroupModel({\r\n Id: this.selectedItem.Id,\r\n Name: this.selectedItem.Name,\r\n entitySet,\r\n });\r\n\r\n hotelGroupModel.set('BidMultipliers', state.bidMultipliers);\r\n\r\n const saveModel = hotelGroupModel\r\n .save(['BidMultipliers'], { patch: true });\r\n this.inlineEditHotelMultiplierActivity.trace(`Hotel group inline edit bid multiplier did save model with ${saveModel}`);\r\n return saveModel;\r\n }\r\n\r\n updateBidMultipliersView(selectedItem) {\r\n super.updateBidMultipliersView(selectedItem);\r\n const bidMultiplierSource = selectedItem.BidMultiplierSource;\r\n\r\n const isUseParent = bidMultiplierSource === 'SubAccount' || _.result(selectedItem, 'Name') === 'Ungrouped';\r\n const isPayPerStay = _.result(selectedItem.Bid, '@odata.type') === '#Model.PayPerStayBid';\r\n const isPayPerStayPhase2Pilot = this.serverContext.DynamicPermissions.ReconciliationReport;\r\n\r\n this.getChild('edit-panel-view').setState({\r\n isCleanButtonDisabled: isUseParent || isPayPerStay,\r\n isSaveButtonDisabled: isPayPerStay && !isPayPerStayPhase2Pilot,\r\n });\r\n\r\n this.view.setState({ isUseParent });\r\n }\r\n}\r\n\r\nexport class SubAccountBidMultipliersInlineEditView extends BidMultipliersInlineEditView {\r\n constructor({ selectedItem, currentSubAccountId, serverContext }) {\r\n const bidMultipliersView = new BidMultipliersView({\r\n showUseParent: false,\r\n });\r\n\r\n super({ selectedItem, bidMultipliersView, serverContext });\r\n this.selectedItem = selectedItem;\r\n this.scope = i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_SubAccount_Label');\r\n if (currentSubAccountId === selectedItem.Id) {\r\n this.refreshForSubAccountBar = true;\r\n }\r\n }\r\n\r\n processEditChange(state) {\r\n const subAccountModel = new SubAccountModel({\r\n Id: this.selectedItem.Id,\r\n Name: this.selectedItem.Name,\r\n });\r\n\r\n subAccountModel.set('BidMultipliers', state.bidMultipliers);\r\n\r\n const saveModel = subAccountModel\r\n .save(['BidMultipliers'], { patch: true });\r\n\r\n this.inlineEditHotelMultiplierActivity.trace(`SubAccount inline edit bid multiplier did save model with ${saveModel}`);\r\n return saveModel;\r\n }\r\n}\r\n\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nexport const SetupView = globalContext.define(\r\n [\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-setup',\r\n 'component/config/index',\r\n 'component/toast/index',\r\n 'PageContext',\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared',\r\n 'component/state/index',\r\n 'campaignui/feature/hotel-center-js-data/index',\r\n 'campaignui/feature/hotel-center-edm/index',\r\n ],\r\n Promise => import(/* webpackMode: 'eager' */ './src/host/host-view') // eslint-disable-line no-unused-vars\r\n);\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { InputControl } from '@bingads-webui/input-control';\r\nimport _ from 'underscore';\r\nimport template from './account-template.pug';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-setup');\r\nconst config = globalContext.require('component/config/index');\r\nconst pageContext = globalContext.require('PageContext');\r\nconst permissions = pageContext && pageContext.Permissions;\r\n\r\n\r\n/**\r\n * View class for Hotel Ads setup wizard account step\r\n * @extends Backbone.View\r\n */\r\nexport class AccountSetupView extends DeterministicView {\r\n initialize({\r\n subAccountModel,\r\n }) {\r\n this.subAccountModel = subAccountModel;\r\n\r\n this.i18n = i18n;\r\n\r\n this.isHotelCenterDeprecation = permissions && permissions.dynamic.HotelCenterDeprecation;\r\n\r\n const subAccountNameInput = new InputControl({\r\n entity: this.subAccountModel,\r\n field: 'Name',\r\n });\r\n\r\n this.setChild('sub-account-name-input', subAccountNameInput);\r\n\r\n this.subAccountModel.errors.on('change:Name', (vm, error) => {\r\n if (_.isEmpty(error)) {\r\n this.$('.save-and-go-next-btn').removeClass('disabled');\r\n } else {\r\n this.$('.save-and-go-next-btn').addClass('disabled');\r\n }\r\n });\r\n\r\n this.account = config.get('CurrentAccount');\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click input.btn.finish': 'onFinish',\r\n 'click input.btn.cancel': () => {\r\n this.trigger('cancelled');\r\n },\r\n };\r\n }\r\n\r\n getState() {\r\n return {\r\n account: config.get('CurrentAccount').Id,\r\n name: this.getChild('sub-account-name-input').getState().value,\r\n };\r\n }\r\n\r\n isValid() {\r\n return this.getChild('sub-account-name-input').getState().isValid;\r\n }\r\n\r\n onFinish() {\r\n if (!this.isValid()) {\r\n return;\r\n }\r\n\r\n this.trigger('finished');\r\n }\r\n}\r\n","import { getHotelCenterShared } from '@bingads-webui-campaign/hotel-center-shared';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { SubAccount, PercentageBid, FixedBid, PayPerStayBid } from '@bingads-webui/hotel-odata-schemas';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-shared');\r\nconst pageContext = globalContext.require('PageContext');\r\nconst state = globalContext.require('component/state/index');\r\nconst jsdata = globalContext.require('campaignui/feature/hotel-center-js-data/index');\r\nconst edm = globalContext.requireDefault('campaignui/feature/hotel-center-edm/index');\r\nconst config = globalContext.require('component/config/index');\r\n\r\nexport const {\r\n BidStrategyView,\r\n BidCapView,\r\n AccountInformationView,\r\n SubAccountModel,\r\n instrumentation,\r\n} = getHotelCenterShared({\r\n i18n,\r\n pageContext,\r\n config,\r\n fixedBidSchema: FixedBid,\r\n percentageBidSchema: PercentageBid,\r\n payPerStayBidSchema: PayPerStayBid,\r\n state,\r\n subAccountSchema: SubAccount,\r\n jsdata,\r\n edm,\r\n});\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { InputControl } from '@bingads-webui/input-control';\r\nimport { BackboneSchema as backboneSchema } from '@bingads-webui/backbone-schema';\r\nimport { Budget } from '@bingads-webui/hotel-odata-schemas';\r\nimport _ from 'underscore';\r\nimport template from './budget-bid-template.pug';\r\nimport {\r\n BidStrategyView,\r\n BidCapView,\r\n AccountInformationView,\r\n} from '../hotel-center-shared';\r\n\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-setup');\r\nconst config = globalContext.require('component/config/index');\r\n\r\n/**\r\n * View class for Hotel Ads setup wizard account budget and bit step\r\n * @extends Backbone.View\r\n */\r\n\r\nexport class BudgetBidSetupView extends DeterministicView {\r\n initialize({\r\n subAccountModel,\r\n }) {\r\n this.subAccountModel = subAccountModel;\r\n this.i18n = i18n;\r\n\r\n this.initBudgetInput();\r\n\r\n const accountInformationView = new AccountInformationView().setState({\r\n account: { Name: '' },\r\n subAccount: { Name: '' },\r\n });\r\n\r\n this.setChild('account-information-view-container', accountInformationView);\r\n\r\n const bidCapView = new BidCapView();\r\n\r\n this.setChild('bid-cap-view', bidCapView);\r\n this.listenTo(bidCapView, 'input-changed', () => {\r\n this.updateValidationState();\r\n });\r\n\r\n const bidStrategyView = new BidStrategyView({\r\n allowEmptyStrategy: false,\r\n isReadonly: false,\r\n enablePPS: true,\r\n });\r\n\r\n this.setChild('bid-strategy-view', bidStrategyView);\r\n this.listenTo(bidStrategyView, 'input-changed', () => {\r\n this.updateValidationState();\r\n });\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click input.btn.finish': 'onFinish',\r\n 'click input.btn.return': () => {\r\n this.trigger('returned');\r\n },\r\n 'click input.btn.cancel': () => {\r\n this.trigger('cancelled');\r\n },\r\n };\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n setState(state) {\r\n const accountInformationView = this.getChild('account-information-view-container');\r\n\r\n if (_.has(state, 'account')) {\r\n this.model.set('account', state.account);\r\n }\r\n\r\n if (_.has(state, 'name')) {\r\n this.model.set('name', state.name);\r\n }\r\n\r\n if (_.has(state, 'account') && _.has(state, 'name')) {\r\n accountInformationView.setState({\r\n account: { Name: state.account },\r\n subAccount: { Name: state.name },\r\n });\r\n }\r\n }\r\n\r\n isValid() {\r\n return this.getChild('budget-input').getState().isValid &&\r\n this.getChild('bid-cap-view').getState().isValid &&\r\n this.getChild('bid-strategy-view').getState().isValid;\r\n }\r\n\r\n onFinish() {\r\n if (!this.isValid()) {\r\n return;\r\n }\r\n\r\n this.subAccountModel.set('DailyBudget', this.budgetModel.toJSON());\r\n this.subAccountModel.set(\r\n 'MaximumBid',\r\n this.getChild('bid-cap-view').getState().maximumBid\r\n );\r\n this.subAccountModel.set(\r\n 'Bid',\r\n this.getChild('bid-strategy-view').getState().bid\r\n );\r\n\r\n this.trigger('finished');\r\n }\r\n\r\n initBudgetInput() {\r\n const BudgetModel = backboneSchema(Budget, i18n, ['Amount']);\r\n\r\n this.budgetModel = new BudgetModel();\r\n const budgetInput = new InputControl({\r\n entity: this.budgetModel,\r\n field: 'Amount',\r\n addonText: config.get('AccountCurrencyCode'),\r\n });\r\n\r\n this.setChild('budget-input', budgetInput);\r\n\r\n this.listenTo(budgetInput, 'input-changed', () => {\r\n this.updateValidationState();\r\n });\r\n }\r\n\r\n updateValidationState() {\r\n if (this.getChild('budget-input').getState().isValid &&\r\n this.getChild('bid-cap-view').getState().isValid &&\r\n this.getChild('bid-strategy-view').getState().isValid) {\r\n this.$('.finish').removeClass('disabled');\r\n } else {\r\n this.$('.finish').addClass('disabled');\r\n }\r\n }\r\n}\r\n","import { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport _ from 'underscore';\r\nimport template from './header-template.pug';\r\n\r\n\r\n/**\r\n * View class for Hotel Ads setup wizard header\r\n * @extends Backbone.View\r\n */\r\nexport class HeaderView extends DeterministicView {\r\n initialize(options) {\r\n this.options = options;\r\n this.i18n = options.i18n;\r\n this.model.on('change:step', (vm, value) => {\r\n this.trigger('step-changed', value);\r\n });\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n setState({ step }) {\r\n if (_.has(this.options.steps, step)) {\r\n this.model.set({ step });\r\n }\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport _ from 'underscore';\r\nimport { AccountSetupView } from '../account-setup/account-view';\r\nimport { BudgetBidSetupView } from '../budget-bid-setup/budget-bid-view';\r\nimport { HeaderView } from '../header/header-view';\r\nimport template from './host-template.pug';\r\nimport { SubAccountModel, instrumentation } from '../hotel-center-shared';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center-setup');\r\nconst { showError } = globalContext.require('component/toast/index');\r\n\r\n/**\r\n * View class for Hotel Ads setup wizard host\r\n * @extends Backbone.View\r\n */\r\nclass HostView extends DeterministicView {\r\n initialize(options = {}) {\r\n this.options = options;\r\n this.steps = {\r\n account: 'account',\r\n budgetBid: 'budgetBid',\r\n };\r\n\r\n this.subAccountModel = new SubAccountModel();\r\n\r\n this.initHeader();\r\n this.initAccountView();\r\n this.initBudgetBidView();\r\n\r\n this.setState({ errorMessage: '' });\r\n\r\n this.subAccountSetupScenario = instrumentation.subAccountSetup.create();\r\n const initializeWizardActivity = this.subAccountSetupScenario.initializeWizard.create();\r\n\r\n initializeWizardActivity.trace('Sub-account setup wizard is initialized');\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n setState({ activeStep, errorMessage }) {\r\n if (_.has(this.steps, activeStep)) {\r\n this.model.set({\r\n activeStep,\r\n });\r\n }\r\n this.model.set({ errorMessage });\r\n }\r\n\r\n switchStep(newStep) {\r\n if (_.has(this.steps, newStep)) {\r\n this.setState({ activeStep: this.steps[newStep] });\r\n }\r\n }\r\n\r\n accountFinished() {\r\n const accountInfo = this.getChild(this.steps.account).getState();\r\n\r\n this.getChild(this.steps.budgetBid).setState(accountInfo);\r\n this.getChild('header').setState({ step: this.steps.budgetBid });\r\n }\r\n\r\n budgetBidFinished() {\r\n const saveSubAccountActivity = this.subAccountSetupScenario.saveSubAccount.create();\r\n\r\n saveSubAccountActivity.trace('Saving sub-account from setup wizard');\r\n\r\n this.setState({ errorMessage: '' });\r\n\r\n return saveSubAccountActivity.monitorAsync(this.subAccountModel.save())\r\n .then(() => {\r\n this.closeSetupWizard();\r\n }).catch((e) => {\r\n const error = this.mapErrors(e.errors);\r\n if (_.isEmpty(error)) {\r\n showError(i18n.getString('GenericErrorMessage'));\r\n saveSubAccountActivity.error(JSON.stringify(e));\r\n } else {\r\n this.setState({ errorMessage: error });\r\n }\r\n }).finally(withUiBlock(this.el));\r\n }\r\n\r\n initHeader() {\r\n const headerView = new HeaderView({\r\n steps: this.steps,\r\n strings: {\r\n account: i18n.getString('HotelCenter_Setup_Account'),\r\n budgetBid: i18n.getString('HotelCenter_Setup_Budget_Bid'),\r\n },\r\n i18n,\r\n });\r\n\r\n this.setChild('header', headerView);\r\n this.listenTo(headerView, 'step-changed', this.switchStep);\r\n headerView.setState({ step: this.steps.account });\r\n }\r\n\r\n initAccountView() {\r\n const accountSetupView = new AccountSetupView({\r\n subAccountModel: this.subAccountModel,\r\n });\r\n\r\n this.setChild(this.steps.account, accountSetupView);\r\n this.listenTo(accountSetupView, 'finished', this.accountFinished);\r\n this.listenTo(accountSetupView, 'cancelled', this.closeSetupWizard);\r\n }\r\n\r\n initBudgetBidView() {\r\n const budgetBidSetupView = new BudgetBidSetupView({\r\n subAccountModel: this.subAccountModel,\r\n });\r\n\r\n this.setChild(this.steps.budgetBid, budgetBidSetupView);\r\n this.listenTo(budgetBidSetupView, 'finished', this.budgetBidFinished);\r\n this.listenTo(budgetBidSetupView, 'cancelled', this.closeSetupWizard);\r\n this.listenTo(budgetBidSetupView, 'returned', () => {\r\n this.getChild('header').setState({ step: this.steps.account });\r\n });\r\n }\r\n\r\n closeSetupWizard() {\r\n const closeWizardActivity = this.subAccountSetupScenario.closeWizard.create();\r\n\r\n closeWizardActivity.trace('Closing setup wizard');\r\n\r\n if (this.options && this.options.isUINext &&\r\n this.options.router && _.isFunction(this.options.router.navigateToOverview)) {\r\n this.options.router.navigateToOverview();\r\n } else {\r\n window.location.href = '#overview';\r\n }\r\n }\r\n\r\n mapErrors(errors) {\r\n const errorMap = {\r\n /** fix bug3610009: encountered error when create subaccount with invalid Daily budget */\r\n /** use Error_Campaign_API_BudgetAmountIsAboveLimit Because it's more suitable */\r\n BudgetAmountIsAboveLimit: i18n.getString('Error_Campaign_API_BudgetAmountIsAboveLimit'),\r\n BudgetAmountIsBelowLimit: i18n.getString('HotelCenter_Error_BudgetAmountIsBelowLimit'),\r\n SameValueAlreadyExist: i18n.getString('HotelCenter_Error_SameValueAlreadyExist'),\r\n /** fix bug4616501: Bad error message displayed when create new subaccount */\r\n MaxSubAccountLimitationReached: i18n.getString('HotelCenter_Error_MaxSubAccountLimitationReached'),\r\n ValueTooLong: i18n.getString('Error_Campaign_API_ValueTooLong'),\r\n };\r\n\r\n return _.chain(errorMap)\r\n .pick(_.pluck(errors, 'Code'))\r\n .values()\r\n .first()\r\n .value();\r\n }\r\n}\r\n\r\n\r\nexport {\r\n AccountSetupView,\r\n BudgetBidSetupView,\r\n HeaderView,\r\n};\r\n\r\nexport const SetupView = HostView;\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) {pug_html = pug_html + \"\\u003Cinput class=\\\"grid-filter-input\\\" data-bind=\\\"attr: { placeholder: placeholder, "aria-label": placeholder }, textInput: searchString\\\"\\u003E\\u003C!-- ko ifnot: inEditMode--\\u003E\\u003Cbutton class=\\\"filter_search_icon_small spritedimage spritedimagealign\\\" disabled=\\\"\\\" data-bind=\\\"attr: { "aria-label": placeholder }\\\"\\u003E\\u003C\\u002Fbutton\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: inEditMode--\\u003E\\u003Cbutton\" + (\" class=\\\"filtercloseimage spritedimage spritedimagealign\\\"\"+pug.attr(\"aria-label\", i18n.get('Remove'), true, true)) + \"\\u003E\\u003C\\u002Fbutton\\u003E\\u003C!-- \\u002Fko--\\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=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput id=\\\"ShowPausedCampaigns\\\" type=\\\"checkbox\\\" data-bind=\\\"checked:showPaused, disable: disableShowPause\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('GoogleImport_SelectCampaign_ShowPaused')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\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 (hasNoData, i18n) {pug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\";\nif (hasNoData) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"error\\\" role=\\\"alert\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_SelectAccount_NoAvailableAccounts')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"import-account-grid\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"currency-conversion-control\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"hasNoData\" in locals_for_with?locals_for_with.hasNoData:typeof hasNoData!==\"undefined\"?hasNoData:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, singleAccountMode) {pug_html = pug_html + \"\\u003Cdiv class=\\\"currencyConversionInnerView\\\" data-bind=\\\"visible: shouldShow\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cspan id=\\\"currencyConversionDisc\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_AccountCurrencyConversion_Description')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (singleAccountMode) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"importSourceAccountCurrency\\\"\\u003E\\u003Cspan class=\\\"inline-bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_AccountCurrencyConversion_AccountLabel')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan data-bind=\\\"text: importSourceAccountCurrency\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"bingAccountCurrency\\\"\\u003E\\u003Cspan class=\\\"inline-bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_AccountCurrencyConversion_BingAccountLabel')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan data-bind=\\\"text: bingAccountCurrency\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"currencyConversionToolTip\\\"\\u003E\\u003Cspan class=\\\"bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_AccountCurrencyConversion_Tooltip')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"radio\\\"\\u003E\\u003Cinput type=\\\"radio\\\" role=\\\"radio\\\" name=\\\"currencyConvert\\\" value=\\\"true\\\" data-bind=\\\"checked:doConvert.Editing\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_AccountCurrencyConversion_Convert')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"radio\\\"\\u003E\\u003Cinput type=\\\"radio\\\" role=\\\"radio\\\" name=\\\"currencyConvert\\\" value=\\\"false\\\" data-bind=\\\"checked:doConvert.Editing\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_AccountCurrencyConversion_NotConvert')) ? \"\" : pug_interp)) + \"\\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,\"singleAccountMode\" in locals_for_with?locals_for_with.singleAccountMode:typeof singleAccountMode!==\"undefined\"?singleAccountMode: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=\\\"import-grid\\\"\\u003E\\u003Cdiv class=\\\"grid-toolbar\\\"\\u003E\\u003Cdiv class=\\\"grid-toolbar grid-toolbar-container\\\" role=\\\"toolbar\\\"\\u003E\\u003Cdiv class=\\\"grid-filter-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-table grid\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-noresult\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"visible: showValidationError\\\" role=\\\"alert\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Validation_SelectedAccountRequired')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"visible: showNoCampaignsError, text: noCampaignsErrorMessage\\\" role=\\\"alert\\\"\\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 + \"\\u003Cdiv class=\\\"form-group importsource-campaign-grid\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, signupMode, singleAccountMode) {if (singleAccountMode) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cspan id=\\\"SelectCampaignDesc\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_SelectCampaign_Description')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv role=\\\"radiogroup\\\" aria-labelledby=\\\"CampaignTitle SelectCampaignDesc\\\"\\u003E\\u003Clabel class=\\\"radio-inline\\\"\\u003E\\u003Cinput type=\\\"radio\\\" role=\\\"radio\\\" name=\\\"importCampaigns\\\" value=\\\"true\\\" data-bind=\\\"checked:importAll.Editing\\\"\\u003E\";\nif (signupMode) {\npug_html = pug_html + (pug.escape(null == (pug_interp = i18n.get('Import_SelectCampaign_ImportAll_ForSignUp')) ? \"\" : pug_interp));\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = i18n.get('Import_SelectCampaign_ImportAll')) ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003Clabel class=\\\"radio-inline\\\"\\u003E\\u003Cinput type=\\\"radio\\\" role=\\\"radio\\\" name=\\\"importCampaigns\\\" value=\\\"false\\\" data-bind=\\\"checked:importAll.Editing\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_SelectCampaign_ImportSpecific')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"importCampaignsGrid\\\" data-bind=\\\"visible: !importAll()\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"grid-toolbar\\\"\\u003E\\u003Cdiv class=\\\"grid-toolbar grid-toolbar-container\\\" role=\\\"toolbar\\\"\\u003E\\u003Cdiv class=\\\"grid-filter-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-table grid\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"visible: showValidationError\\\" role=\\\"alert\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Validation_CampaignSelectionRequired')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"show-paused-filter form-group\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"signupMode\" in locals_for_with?locals_for_with.signupMode:typeof signupMode!==\"undefined\"?signupMode:undefined,\"singleAccountMode\" in locals_for_with?locals_for_with.singleAccountMode:typeof singleAccountMode!==\"undefined\"?singleAccountMode: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 (doneText, navigateToButtonText) {pug_html = pug_html + \"\\u003Cdiv class=\\\"scheduling\\\"\\u003E\\u003Cdiv class=\\\"panel-body form-horizontal schedule\\\"\\u003E\\u003Cdiv class=\\\"section-item schedule form-group\\\"\\u003E\\u003Cdiv class=\\\"section-item\\\"\\u003E\\u003Cdiv class=\\\"col-xs-12\\\"\\u003E\\u003Ch6 style=\\\"font-size:14px;\\\"\\u003E\" + (pug.escape(null == (pug_interp = doneText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh6\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-xs-12\\\"\\u003E\\u003Cbutton class=\\\"btn btn-default view-import-history-log-grid\\\"\\u003E\" + (pug.escape(null == (pug_interp = navigateToButtonText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"doneText\" in locals_for_with?locals_for_with.doneText:typeof doneText!==\"undefined\"?doneText:undefined,\"navigateToButtonText\" in locals_for_with?locals_for_with.navigateToButtonText:typeof navigateToButtonText!==\"undefined\"?navigateToButtonText: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, importSourceName) {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[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, arialLabelText){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", (arialLabelText || 'Learn more') + ' ' + (ariaLabelContext || ''), true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"koCharactersRemaining\"] = pug_interp = function(item, id){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"remaining-hint help-block\\\"\\u003E\\u003Cspan\" + (pug.attr(\"data-bind\", 'text:' + item + '.char_rem', true, true)+pug.attr(\"id\", id ? id : item + '_CharactersRemaining', true, true)+\" role=\\\"status\\\" aria-live=\\\"polite\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + (\"\\u003Cdiv class=\\\"scheduling\\\"\\u003E\\u003Cdiv class=\\\"panel-body form-horizontal schedule\\\"\\u003E\\u003Cdiv class=\\\"section-item schedule form-group\\\"\\u003E\\u003Ch5 data-bind=\\\"visible: !scheduleFromImportSummary\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Scheduled_Import_Header')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh5\\u003E\\u003Ch5 data-bind=\\\"visible: scheduleFromImportSummary\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_RunNow_Schedule_Import_Message')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh5\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"schedule\\\"\\u003E\\u003Cdiv class=\\\"section-item form-group\\\"\\u003E\\u003Clabel class=\\\"control-label col-xs-2\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AutomatedRules_RuleAuthoring_Filter')) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]((importSourceName === 'facebook' ? 'pop_BA_Import_FB_ScheduleWhen' : 'pop_BA_Import_ScheduleWhen'), i18n.get('AutomatedRules_RuleAuthoring_Filter'), i18n.get('LearnMoreLinkText'));\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"section-item\\\"\\u003E\\u003Cdiv class=\\\"col-xs-2\\\"\\u003E\\u003Cselect\" + (\" class=\\\"form-control form-control\\\"\"+\" data-bind=\\\"options: availableFrequencies, optionsText: 'text', value: chosenFrequency\\\"\"+pug.attr(\"data-analyticsid\", `omniture-${importSourceName}-import-schedule-dropdown`, true, true)+pug.attr(\"aria-label\", i18n.get('Scheduled_Import_Available_Frequencies'), true, true)) + \"\\u003E\\u003C\\u002Fselect\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-xs-2\\\" data-bind=\\\"visible: chosenFrequency().value === 'Monthly'\\\"\\u003E\\u003Clabel class=\\\"control-label col-xs-4\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Scheduled_Import_On_Day')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-xs-8\\\"\\u003E\\u003Cselect\" + (\" class=\\\"form-control\\\"\"+\" data-bind=\\\"options: availableDaysOfTheMonth, value: chosenDayOfTheMonth, visible: chosenFrequency().value === 'Monthly'\\\"\"+pug.attr(\"aria-label\", i18n.get('Scheduled_Import_Available_DaysOfTheMonth'), true, true)) + \"\\u003E\\u003C\\u002Fselect\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-xs-2\\\" data-bind=\\\"visible: chosenFrequency().value === 'Weekly'\\\"\\u003E\\u003Cselect\" + (\" class=\\\"form-control form-control\\\"\"+\" data-bind=\\\"options: availableDays, optionsText: 'text', value: chosenDay, visible: chosenFrequency().value === 'Weekly'\\\"\"+pug.attr(\"aria-label\", i18n.get('Scheduled_Import_Available_Days'), true, true)) + \"\\u003E\\u003C\\u002Fselect\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-xs-2 date-picker\\\" data-bind=\\\"visible: chosenFrequency().value === 'Once'\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Clabel class=\\\"control-label col-xs-1\\\" data-bind=\\\"visible: nonAutoScheduledImport()\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Scheduled_Import_At')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-xs-2\\\"\\u003E\\u003Cselect\" + (\" class=\\\"form-control form-control\\\"\"+\" data-bind=\\\"options: availableTimes, optionsText: 'twelveHourDisplay', value: chosenTime, visible: nonAutoScheduledImport() && is12Hour()\\\"\"+pug.attr(\"aria-label\", i18n.get('Scheduled_Import_Available_Times_12_Hour_Display'), true, true)) + \"\\u003E\\u003C\\u002Fselect\\u003E\\u003Cselect\" + (\" class=\\\"form-control form-control\\\"\"+\" data-bind=\\\"options: availableTimes, optionsText: 'twentyFourHourDisplay', value: chosenTime, visible: nonAutoScheduledImport() && !is12Hour()\\\"\"+pug.attr(\"aria-label\", i18n.get('Scheduled_Import_Available_Times_24_Hour_Display'), true, true)) + \"\\u003E\\u003C\\u002Fselect\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- ko if: facCoupon && (chosenFrequency().value === 'Once' || chosenFrequency().value === 'Now')--\\u003E\\u003Cdiv class=\\\"section-item fac-coupon-alert\\\" data-bind=\\\"css: { 'fac-coupon-alert-now': chosenFrequency().value === 'Now' }\\\"\\u003E\\u003Cdiv class=\\\"alert alert-info\\\" role=\\\"alert\\\"\\u003E\\u003Cspan class=\\\"alert__icon alert-image\\\" aria-hidden=\\\"true\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"alert__content\\\"\\u003E\" + (null == (pug_interp = i18n.get('FAC_GImport_Inline_MustBeRecurring').replace(/{{bold}}/g, '').replace(/{{\\/bold}}/g, '')) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Cul class=\\\"col-sm-12 col-xs-offset-1 panel-body\\\" data-bind=\\\"visible: timeError() && chosenFrequency().value === 'Once'\\\" role=\\\"alert\\\"\\u003E\\u003Cli\\u003E\\u003Cdiv class=\\\"error\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AutomatedRules_Validate_ScheduleTimeInvalid')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003Cul class=\\\"col-sm-12 col-xs-offset-1 panel-body\\\" data-bind=\\\"visible: showUnSupportedDayOfMonth() && chosenFrequency().value === 'Monthly'\\\" role=\\\"alert\\\"\\u003E\\u003Cli\\u003E\\u003Cdiv class=\\\"alert alert-warning\\\" role=\\\"alert\\\"\\u003E\\u003Cspan class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Scheduled_Import_UnSupported_DayOfMonth')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003Cdiv class=\\\"section-item form-group\\\" data-bind=\\\"visible: nonAutoScheduledImport() && showRunNow()\\\"\\u003E\\u003Clabel class=\\\"item-label section-item-label col-xs-2 control-label\\\"\\u003E\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-xs-6\\\"\\u003E\\u003Cinput\" + (\" type=\\\"checkbox\\\" name=\\\"runNowWithScheduled\\\" data-bind=\\\"checked: runNowWithScheduled\\\"\"+pug.attr(\"aria-label\", i18n.get('Import_RunNow'), true, true)+\" style=\\\"vertical-align:bottom;\\\"\") + \"\\u003E\\u003Cspan style=\\\"padding:4px;\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_RunNow')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"section-item form-group\\\" data-bind=\\\"visible: nonAutoScheduledImport()\\\"\\u003E\\u003Clabel class=\\\"item-label section-item-label col-xs-2 control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Scheduled_Import_DisplayTime')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-xs-6\\\"\\u003E\\u003Cspan class=\\\"col-md-3 radio\\\"\\u003E\\u003Cinput\" + (\" type=\\\"radio\\\" name=\\\"timeformat\\\" value=\\\"12hour\\\" data-bind=\\\"checked: timeFormat\\\"\"+pug.attr(\"aria-label\", i18n.get('ImprovedAdScheduling_12_Hour_Label'), true, true)) + \"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('ImprovedAdScheduling_12_Hour_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"col-md-3 radio\\\"\\u003E\\u003Cinput\" + (\" type=\\\"radio\\\" name=\\\"timeformat\\\" value=\\\"24hour\\\" data-bind=\\\"checked: timeFormat\\\"\"+pug.attr(\"aria-label\", i18n.get('ImprovedAdScheduling_24_Hour_Label'), true, true)) + \"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('ImprovedAdScheduling_24_Hour_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"section-item form-group\\\" data-bind=\\\"visible: nonAutoScheduledImport()\\\"\\u003E\\u003Clabel class=\\\"item-label section-item-label col-xs-2 control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('CampaignSetting_TimeZone')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-xs-4\\\"\\u003E\\u003Cselect\" + (\" class=\\\"form-control form-control\\\"\"+\" data-bind=\\\"options: timeZones, value: chosenTimeZone\\\"\"+pug.attr(\"aria-label\", i18n.get('CampaignSetting_TimeZone'), true, true)) + \"\\u003E\\u003C\\u002Fselect\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"section-item form-group\\\" data-bind=\\\"visible: scheduledImport()\\\"\\u003E\\u003Clabel class=\\\"item-label section-item-label col-xs-2 control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Scheduled_Import_Name')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-xs-4\\\"\\u003E\\u003Cinput\" + (\" class=\\\"form-control form-control\\\"\"+\" type=\\\"text\\\" name=\\\"importname\\\" data-bind=\\\"textInput: importName, attr: { maxlength: maxLength }, css: {"error": !importName.isValid()}\\\" aria-describedby=\\\"ScheduledImportValidationError\\\"\"+pug.attr(\"aria-label\", i18n.get('Scheduled_Import_Name'), true, true)) + \"\\u003E\\u003Cdiv class=\\\"fieldInfoAd\\\"\\u003E\";\npug_mixins[\"koCharactersRemaining\"]('importName');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\npug_mixins[\"koValidationError\"]('importName', 'ScheduledImportValidationError');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"section-item form-group\\\" data-bind=\\\"visible: scheduledImport()\\\"\\u003E\\u003Clabel class=\\\"item-label section-item-label col-xs-2 control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('AutomatedRules_RuleAuthoring_EmailResults')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-xs-4\\\"\\u003E\\u003Cselect\" + (\" class=\\\"form-control form-control\\\"\"+\" data-bind=\\\"options: emailOptions, optionsText: 'text', value: chosenEmailOption\\\"\"+pug.attr(\"aria-label\", i18n.get('AutomatedRules_RuleAuthoring_EmailResults'), true, true)) + \"\\u003E\\u003C\\u002Fselect\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"section-item form-group notification-email-addresses\\\" data-bind=\\\"visible: scheduledImport() && showMultiEmail()\\\"\\u003E\\u003Clabel class=\\\"item-label-section-item-label col-xs-2 control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Scheduled_Import_MultiEmail')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-xs-4\\\"\\u003E\\u003Ctextarea class=\\\"form-control\\\" name=\\\"\\\" cols=\\\"20\\\" rows=\\\"3\\\" data-bind=\\\"textInput: emailAddresses\\\"\\u003E\\u003C\\u002Ftextarea\\u003E\\u003Cdiv class=\\\"fieldInfoAd\\\"\\u003E\\u003Cdiv class=\\\"remaining-hint help-block\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Scheduled_Import_MultiEmail_Hint')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"email-address-error error\\\" data-bind=\\\"visible: emailAddressError(), text: emailAddressErrorMessage()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"section-item form-group\\\" data-bind=\\\"visible: scheduledImport() && scheduleFromImportSummary\\\"\\u003E\\u003Cbutton class=\\\"btn btn-primary schedule-from-import-summary-button\\\" style=\\\"margin-left:10px;\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Scheduled_Import_Schedule_Button')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\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,\"importSourceName\" in locals_for_with?locals_for_with.importSourceName:typeof importSourceName!==\"undefined\"?importSourceName:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv class=\\\"schedule-import-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"error-panel\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, merchantCenterPlaceholderStoreNote, showAlert, summaryText) {pug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv\\u003E\" + (pug.escape(null == (pug_interp = summaryText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\" + (pug.escape(null == (pug_interp = merchantCenterPlaceholderStoreNote) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (showAlert) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"alert alert-info\\\" role=\\\"alert\\\" style=\\\"margin-bottom: 15px\\\"\\u003E\\u003Cspan class=\\\"infomark infoalign\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = i18n.get('Import_SelectCampaign_DisplayCampaignAlert')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"merchantCenterPlaceholderStoreNote\" in locals_for_with?locals_for_with.merchantCenterPlaceholderStoreNote:typeof merchantCenterPlaceholderStoreNote!==\"undefined\"?merchantCenterPlaceholderStoreNote:undefined,\"showAlert\" in locals_for_with?locals_for_with.showAlert:typeof showAlert!==\"undefined\"?showAlert:undefined,\"summaryText\" in locals_for_with?locals_for_with.summaryText:typeof summaryText!==\"undefined\"?summaryText: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 (currentAccount, currentGoogleAccount, i18n, singleAccountMode) {pug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003C!-- ko ifnot: isLoggedIn--\\u003E\";\nif (singleAccountMode) {\npug_html = pug_html + ((pug.escape(null == (pug_interp = i18n.get('GoogleImport_LoginDisclaimer')) ? \"\" : pug_interp)) + (pug.escape(null == (pug_interp = i18n.get('GoogleImport_BingAdsAccount_LoggedOut_Title')) ? \"\" : pug_interp)) + (pug.escape(null == (pug_interp = currentAccount) ? \"\" : pug_interp)));\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = i18n.get('GoogleImport_MultiAccount_LoginDisclaimer')) ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: isLoggedIn--\\u003E\";\nif (singleAccountMode) {\npug_html = pug_html + ((pug.escape(null == (pug_interp = i18n.get('GoogleImport_BingAdsAccount_Title')) ? \"\" : pug_interp)) + (pug.escape(null == (pug_interp = currentAccount) ? \"\" : pug_interp)) + \"\" + (pug.escape(null == (pug_interp = i18n.get('GoogleImport_LoginAccount_WithBingAdsAccount_Title')) ? \"\" : pug_interp)) + (pug.escape(null == (pug_interp = currentGoogleAccount) ? \"\" : pug_interp)));\n}\nelse {\npug_html = pug_html + ((pug.escape(null == (pug_interp = i18n.get('GoogleImport_MultiLoginAccount_WithBingAdsAccount_Title')) ? \"\" : pug_interp)) + (pug.escape(null == (pug_interp = currentGoogleAccount) ? \"\" : pug_interp)));\n}\npug_html = pug_html + \"\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cspan class=\\\"error\\\" data-bind=\\\"html:errorMsg, attr: { role: errorMsgRole }\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ciframe name=\\\"logoutIFrame\\\" style=\\\"display: none;\\\"\\u003E\\u003C\\u002Fiframe\\u003E\";}.call(this,\"currentAccount\" in locals_for_with?locals_for_with.currentAccount:typeof currentAccount!==\"undefined\"?currentAccount:undefined,\"currentGoogleAccount\" in locals_for_with?locals_for_with.currentGoogleAccount:typeof currentGoogleAccount!==\"undefined\"?currentGoogleAccount:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"singleAccountMode\" in locals_for_with?locals_for_with.singleAccountMode:typeof singleAccountMode!==\"undefined\"?singleAccountMode:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"attention-information__container\\\"\\u003E\\u003Cspan class=\\\"attention-information-content\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.content) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"attention-information-dismiss__container\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput\" + (\" type=\\\"checkbox\\\"\"+pug.attr(\"checked\", (model.isDismiss===true), true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Assignment_Associate_Attention_Dialog_Dissmiss_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"filter-bar\\\"\\u003E\\u003Cdiv class=\\\"panel-component\\\"\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"filter_title_collapsed\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"filter_row_readonly\\\"\\u003E\\u003Cspan class=\\\"humanized\\\"\\u003E\\u003Cspan class=\\\"column\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Group_Filter_Name_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"filter_operator\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Group_Filter_Contains_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"filterValue\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.filterValue) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"filter_links\\\"\\u003E\\u003Ca class=\\\"removeFilterLink\\\"\\u003E\\u003Cdiv class=\\\"spritedimage filtericonsalign remove_icon_gray_16\\\" title=\\\"Remove\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fa\\u003E\\u003Ca class=\\\"removeFilterLink\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = 'Remove') ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (nextPageText, pageNumberLabelText, previousPageText, totalPageCountText) {pug_html = pug_html + \"\\u003Cform class=\\\"form-inline pagination-control\\\"\\u003E\\u003Cdiv class=\\\"pager\\\" data-bind=\\\"visible: pageCount() > 1\\\"\\u003E\\u003Cbutton\" + (\" class=\\\"btn btn-default btn-flat nav-button prev\\\"\"+\" data-bind=\\\"click: decPageNumber, enable: pageNumber() > 0\\\" type=\\\"button\\\"\"+pug.attr(\"aria-label\", previousPageText, true, true)) + \"\\u003E\\u003Cdiv class=\\\"glyphicon glyphicon-triangle-left\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fbutton\\u003E\\u003Cdiv class=\\\"text\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = pageNumberLabelText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cinput\" + (\" class=\\\"form-control page-number-input\\\"\"+\" data-bind=\\\"value: pageNumberText, attr: { size: pageNumberSize, maxlength: pageNumberSize, disabled: !enableRandomPage() }\\\" type=\\\"text\\\"\"+pug.attr(\"aria-label\", pageNumberLabelText, true, true)) + \"\\u003E\\u003Cdiv class=\\\"text\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = totalPageCountText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E \\u003C\\u002Fspan\\u003E\\u003Cspan data-bind=\\\"text: pageCount\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cbutton\" + (\" class=\\\"btn btn-default btn-flat nav-button next\\\"\"+\" data-bind=\\\"click: incPageNumber, enable: pageNumber() < pageCount() - 1\\\" type=\\\"button\\\"\"+pug.attr(\"aria-label\", nextPageText, true, true)) + \"\\u003E\\u003Cdiv class=\\\"glyphicon glyphicon-triangle-right\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fform\\u003E\";}.call(this,\"nextPageText\" in locals_for_with?locals_for_with.nextPageText:typeof nextPageText!==\"undefined\"?nextPageText:undefined,\"pageNumberLabelText\" in locals_for_with?locals_for_with.pageNumberLabelText:typeof pageNumberLabelText!==\"undefined\"?pageNumberLabelText:undefined,\"previousPageText\" in locals_for_with?locals_for_with.previousPageText:typeof previousPageText!==\"undefined\"?previousPageText:undefined,\"totalPageCountText\" in locals_for_with?locals_for_with.totalPageCountText:typeof totalPageCountText!==\"undefined\"?totalPageCountText: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 (description, errorMessage) {pug_html = pug_html + \"\\u003Cdiv class=\\\"edit-control-description__container text-left\\\" id=\\\"edit-control-description\\\"\\u003E\" + (pug.escape(null == (pug_interp = description) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"edit-control__container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"edit-control-error-message__container\",\"text-left\",errorMessage.length > 0 ? '' : ' hidden'], [false,false,true]), false, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = errorMessage) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"description\" in locals_for_with?locals_for_with.description:typeof description!==\"undefined\"?description:undefined,\"errorMessage\" in locals_for_with?locals_for_with.errorMessage:typeof errorMessage!==\"undefined\"?errorMessage:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"group-information-line__container\",\"col-sm-9\",model.groupName ? '' : 'hidden'], [false,false,true]), false, true)) + \"\\u003E\\u003Cspan class=\\\"group-information-name col-sm-6 truncated\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.groupName === undefined ? '' : model.groupName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\" + (pug.attr(\"class\", pug.classes([model.count === undefined ? 'hidden' : ''], [true]), false, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Group_Information_Hotel_Count_Format', model.count)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"row assigment-hotels-information__row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv class=\\\"row\\\" data-ref=\\\"group-information\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nif (model.showEditMenu) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-groupmenu__container edit-dropdown dropdown\\\"\\u003E\\u003Cdiv class=\\\"btn group-edit-menu\\\" type=\\\"button\\\" role=\\\"button\\\"\\u003E\\u003Cspan class=\\\"grid-menu\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Group_Edit_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"spritedimage toolbar-icon icon-arrowdown-normal\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cul class=\\\"dropdown-menu group-edit-menu-list light-dismissible\\\" role=\\\"menu\\\"\\u003E\\u003Cdiv class=\\\"grid-submenu group-rename-menu\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Group_Rename_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-submenu group-delete-menu\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Group_Delete_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-4 association-status-message__container\\\"\\u003E\\u003Cdiv data-ref=\\\"association-status-message\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv class=\\\"toolbar-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv class=\\\"grid-container bingadsgrid\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model) {pug_html = pug_html + \"\\u003Cdiv class=\\\"status-message__container\\\"\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"status-message\",model.statusMessage ? '' : 'hidden'], [false,true]), false, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = model.statusMessage) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"status-error-message\",model.errorMessage ? '' : 'hidden'], [false,true]), false, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = model.errorMessage) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"hotel-group-associations-content\",model.noSubAccount ? 'hide' : ''], [false,true]), false, true)) + \"\\u003E\\u003Cdiv class=\\\"col-sm-5 hotel-in-group__container\\\"\\u003E\\u003Cdiv data-ref=\\\"hotels-in-group\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-1 hotel-association-assignment-container\\\"\\u003E\\u003Cdiv\\u003E\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"btn\",\"btn-primary\",\"associate-button\",model.isAssociationEnabled ? '' : 'disabled'], [false,false,false,true]), false, true)+pug.attr(\"disabled\", view.isHotelCenterDeprecation, true, true)+\" type=\\\"button\\\" role=\\\"button\\\" value=\\\"<<\\\"\"+pug.attr(\"aria-label\", view.i18n.getString('Grid_ColumnChooser_AddColumn'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Cinput\" + (pug.attr(\"class\", pug.classes([\"btn\",\"btn-primary\",\"disassociate-button\",(model.isDisassociationEnabled ? '' : 'disabled')], [false,false,false,true]), false, true)+pug.attr(\"disabled\", view.isHotelCenterDeprecation, true, true)+\" type=\\\"button\\\" role=\\\"button\\\" value=\\\">>\\\"\"+pug.attr(\"aria-label\", view.i18n.getString('Grid_ColumnChooser_RemoveColumn'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-5 hotel-out-group__container\\\"\\u003E\\u003Cdiv data-ref=\\\"hotels-out-group\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"hotel-group-associations-no-subaccount-container\",model.noSubAccount ? '' : 'hide'], [false,true]), false, true)) + \"\\u003E\\u003Cdiv\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Associations_No_SubAccount_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv class=\\\"hotel-groups__container col-sm-2\\\"\\u003E\\u003Cdiv data-ref=\\\"hotel-groups\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"hotel-associations__container col-sm-9\\\"\\u003E\\u003Cdiv data-ref=\\\"hotel-associations\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (depth, hasChildren, i18n, isExpanded, isRoot, value) {var 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 hotel-groups-name-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('HotelCenter_Group_Name_ExpandedIcon_Label') : i18n.getString('HotelCenter_Group_Name_ExpandableIcon_Label'), true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"style\", pug.style(textPadding), true, true)) + \"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"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,\"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 (view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"subaccount-hotelgroup-edit-panel-container col-sm-12\\\" id=\\\"subaccount-hotelgroup-edit-panel-root\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"create-button__container col-sm-12\\\"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-primary create-hotel-group-button\\\"\"+pug.attr(\"disabled\", view.isHotelCenterDeprecation, true, true)+\" type=\\\"button\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\"+pug.attr(\"value\", view.i18n.getString('HotelCenter_Group_Create_Button_Label'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"associations-download__container col-sm-12\\\"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-default download-association-button\\\"\"+\" type=\\\"button\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\"+pug.attr(\"value\", view.i18n.getString('HotelCenter_Group_Association_Download_Label'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"create-button__container col-sm-12\\\"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-primary\\\"\"+\" type=\\\"button\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\"+pug.attr(\"value\", view.i18n.getString('HotelCenter_Group_Create_Button_Label'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"associations-download__container col-sm-12\\\"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-primary\\\"\"+\" type=\\\"button\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\"+pug.attr(\"value\", view.i18n.getString('HotelCenter_Group_Association_Download_Label'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"hotel-groups-list__container col-sm-12\\\"\\u003E\\u003Cdiv class=\\\"hotel-groups-list-grid-toolbar\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"hotel-groups-list-grid-filter-state\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (\" class=\\\"hotel-groups-list-grid-container\\\"\"+pug.attr(\"style\", pug.style(view.isSubAccountLevel ? '' : 'overflow-y: auto;'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model) {pug_html = pug_html + \"\\u003Cdiv class=\\\"intelligence\\\"\\u003E\\u003Cdiv class=\\\"intelligence-tree-bar\\\"\\u003E\\u003Cdiv data-ref=\\\"intelligence-tree-bar\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"intelligence-subsections-container\\\"\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"hotel-center-feed-status-container\",model.selectedSubSectionName === 'Feed Status' ? '' : 'hidden'], [false,true]), false, true)) + \"\\u003E\\u003Cdiv data-ref=\\\"feed-status\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"hotel-center-match-report-container\",model.selectedSubSectionName === 'Matching Report' ? '' : 'hidden'], [false,true]), false, true)) + \"\\u003E\\u003Cdiv data-ref=\\\"match-report\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"hotel-center-feed-upload-container\",model.selectedSubSectionName === 'Feed Upload' ? '' : 'hidden'], [false,true]), false, true)) + \"\\u003E\\u003Cdiv data-ref=\\\"feed-upload\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"hotel-center-share-of-voice-container\",model.selectedSubSectionName === 'SOV Report' ? '' : 'hidden'], [false,true]), false, true)) + \"\\u003E\\u003Cdiv data-ref=\\\"sov-report\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"hotel-center-booking-report-container\",model.selectedSubSectionName === 'Booking Report' ? '' : 'hidden'], [false,true]), false, true)) + \"\\u003E\\u003Cdiv data-ref=\\\"booking-report\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"hotel-center-callout-extensions-container\",model.selectedSubSectionName === 'Callout Extensions' ? '' : 'hidden'], [false,true]), false, true)) + \"\\u003E\\u003Cdiv data-ref=\\\"callout-extensions\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model: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 (text) {pug_html = pug_html + \"\\u003Cspan class=\\\"tree-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"text\" in locals_for_with?locals_for_with.text:typeof text!==\"undefined\"?text:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"booking-report-container form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group title-container\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Booking_Report_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh3\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group description-container\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Booking_Report_Desc')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group date-picker-container\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Booking_Report_Date_Range')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-11\\\"\\u003E\\u003Cdiv data-ref=\\\"date-filter\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group download-button-container\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-primary booking-report-download-button clickable\\\"\"+\" type=\\\"button\\\" role=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('HotelCenter_MatchReport_Download_Label'), true, true)+\" tabindex=\\\"0\\\"\"+pug.attr(\"aria-label\", view.i18n.getString('HotelCenter_MatchReport_Download_Label'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"hotel-center-callout-extensions-container form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Intelligence_CalloutExtensions_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh3\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12 association-type-area\\\"\\u003E\\u003Cdiv class=\\\"div\\\" data-ref=\\\"pill-control\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12 ad-extenensions-associations\\\"\\u003E\\u003Cdiv class=\\\"div\\\" data-ref=\\\"associations-view\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (displayText, isDisabled) {if (isDisabled) {\npug_html = pug_html + \"\\u003Ctext class=\\\"downloadlink disabled\\\"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Ftext\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca class=\\\"downloadlink reporturl\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = displayText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}}.call(this,\"displayText\" in locals_for_with?locals_for_with.displayText:typeof displayText!==\"undefined\"?displayText:undefined,\"isDisabled\" in locals_for_with?locals_for_with.isDisabled:typeof isDisabled!==\"undefined\"?isDisabled: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 (title) {pug_html = pug_html + \"\\u003Cdiv class=\\\"intelligence-feed-status-container\\\"\\u003E\\u003Cdiv class=\\\"intelligence-feed-status-name-container\\\"\\u003E\\u003Cspan class=\\\"title\\\"\\u003E\" + (null == (pug_interp = title) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"intelligence-feed-status-toolbar-container\\\"\\u003E\\u003Cdiv class=\\\"date-picker-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"bingadsgrid intelligence-feed-status-grid\\\"\\u003E\\u003Cdiv class=\\\"grid-table\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-noresult\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"title\" in locals_for_with?locals_for_with.title:typeof title!==\"undefined\"?title:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (errorLink, feedError, linkText) {pug_html = pug_html + \"\\u003Cdiv class=\\\"feed-message\\\"\\u003E\";\nif (feedError) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = feedError) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\nif (errorLink) {\npug_html = pug_html + \"\\u003Cdiv\\u003E\\u003Ca class=\\\"download-feed-error\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = linkText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"errorLink\" in locals_for_with?locals_for_with.errorLink:typeof errorLink!==\"undefined\"?errorLink:undefined,\"feedError\" in locals_for_with?locals_for_with.feedError:typeof feedError!==\"undefined\"?feedError:undefined,\"linkText\" in locals_for_with?locals_for_with.linkText:typeof linkText!==\"undefined\"?linkText:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"intelligence-feed-upload-container form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_FeedUpload_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh3\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_FeedUpload_Descriptoin')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_FeedUpload_HelpLink')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_FeedUpload_Language_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-2 type-bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_FeedUpload_Language_English')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4\\\"\\u003E\\u003Cdiv class=\\\"file-picker\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-2\\\"\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"btn\",\"btn-primary\",\"btn-submit\",model.isUploadEnabled && !model.isFeedPending ? '' : 'disabled'], [false,false,false,true]), false, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_FeedUpload_Submit')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nif ((model.isUploading)) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12 feed-uploading\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_FeedUpload_Uploading')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nif ((model.isFeedPending)) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv class=\\\"alert alert-warning\\\"\\u003E\\u003Cspan class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_FeedUpload_Pending')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nif ((model.feedError)) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv class=\\\"alert alert-warning\\\"\\u003E\\u003Cspan class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = model.feedError) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12 feed-upload-grid\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"match-report-container\\\"\\u003E\\u003Cdiv class=\\\"match-report-desc\\\"\\u003E\\u003Ch3 class=\\\"match-report-title margin-zero type-bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_MatchReport_Description_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh3\\u003E\\u003Cdiv class=\\\"match-report-desc\\\"\\u003E\\u003Ch5 class=\\\"desc-line-one\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_MatchReport_Description_Label_1')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh5\\u003E\\u003Ch5 class=\\\"desc-line-two\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_MatchReport_Description_Label_2')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh5\\u003E\\u003Ch5 class=\\\"desc-line-three\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_MatchReport_Description_Label_3')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh5\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"match-report-no-result-container\",model.hasResult ? 'hidden' : ''], [false,true]), false, true)) + \"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_MatchReport_NoResult_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"match-report-result-container\",model.hasResult ? '' : 'hidden'], [false,true]), false, true)) + \"\\u003E\\u003Cform class=\\\"match-report-content form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"col-sm-2\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_MatchReport_Content_Title_FeedVersion')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Clabel class=\\\"col-sm-10\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.versionInfo) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"col-sm-2\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_MatchReport_Content_Title_Summary')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"row col-sm-10\\\"\\u003E\\u003Clabel class=\\\"col-sm-12 property-submit-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.submittedInfo) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Clabel class=\\\"col-sm-12 property-matched-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.matchedInfo) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Clabel class=\\\"col-sm-12 property-overclustered-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.overclusteredInfo) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group col-sm-12\\\"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-primary match-report-download-button clickable\\\"\"+\" type=\\\"button\\\" role=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('HotelCenter_MatchReport_Download_Label'), true, true)+\" tabindex=\\\"0\\\"\"+pug.attr(\"aria-label\", view.i18n.getString('HotelCenter_MatchReport_Download_Label'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fform\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"share-of-voice-report-container form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group title-container\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Ch3 class=\\\"type-bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_SOV_Report_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh3\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group description-container\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_SOV_Report_Desc')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group date-picker-container\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_SOV_Report_Date_Range')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-11\\\"\\u003E\\u003Cdiv data-ref=\\\"date-filter\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group download-button-container\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-primary sov-report-download-button clickable\\\"\"+\" type=\\\"button\\\" role=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('HotelCenter_MatchReport_Download_Label'), true, true)+\" tabindex=\\\"0\\\"\"+pug.attr(\"aria-label\", view.i18n.getString('HotelCenter_MatchReport_Download_Label'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model) {pug_html = pug_html + \"\\u003Cdiv class=\\\"panel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\"\\u003E\\u003Cspan class=\\\"panel-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv data-ref=\\\"bid-multipliers-view\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"errors-container\",model.showRequestError ? 'show' : 'hide'], [false,true]), false, true)) + \"\\u003E\";\n// iterate model.errors\n;(function(){\n var $$obj = model.errors;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var error = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"error\\\"\\u003E\" + (pug.escape(null == (pug_interp = error) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var error = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"error\\\"\\u003E\" + (pug.escape(null == (pug_interp = error) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"bulk-edit-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, arialLabelText){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", (arialLabelText || 'Learn more') + ' ' + (ariaLabelContext || ''), true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\"\\u003E\\u003Cspan class=\\\"panel-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Setup_Budget_Strategy_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_HotelAds_BidStrategy', view.i18n.getString('HotelCenter_Setup_Budget_Strategy_Label'), view.i18n.getString('Learn_more_link_text'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-3\\\"\\u003E\\u003Cdiv data-ref=\\\"bid-strategy-view\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"errors-container\",model.showRequestError ? 'show' : 'hide'], [false,true]), false, true)) + \"\\u003E\";\n// iterate model.errors\n;(function(){\n var $$obj = model.errors;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var error = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"error\\\"\\u003E\" + (pug.escape(null == (pug_interp = error) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var error = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"error\\\"\\u003E\" + (pug.escape(null == (pug_interp = error) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"bulk-edit-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (cancelText, previewText, saveText, showPreview) {pug_html = pug_html + \"\\u003Cdiv class=\\\"preview-container\\\"\\u003E\\u003Cdiv class=\\\"grid-table form-group\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"bulkedit-noresult-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-footer\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\" data-bind=\\\"visible: showProgress\\\"\\u003E\\u003Cdiv class=\\\"progress-text\\\"\\u003E\\u003Cdiv class=\\\"progress\\\"\\u003E\\u003Cdiv class=\\\"progress-bar\\\" data-bind=\\\"text: percentageText, style:{width: percentageWidth}\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"save-bar\\\"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-primary\\\"\"+\" id=\\\"Save\\\" type=\\\"button\\\"\"+pug.attr(\"value\", saveText, true, true)+\" data-bind=\\\"disable: disableAction\\\"\") + \"\\u003E\";\nif (showPreview) {\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"btn btn-default\\\"\"+\" id=\\\"Preview\\\" type=\\\"button\\\"\"+pug.attr(\"value\", previewText, true, true)+\" data-bind=\\\"disable: disableAction\\\"\") + \"\\u003E\";\n}\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"btn btn-default\\\"\"+\" id=\\\"Cancel\\\" type=\\\"button\\\"\"+pug.attr(\"value\", cancelText, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"cancelText\" in locals_for_with?locals_for_with.cancelText:typeof cancelText!==\"undefined\"?cancelText:undefined,\"previewText\" in locals_for_with?locals_for_with.previewText:typeof previewText!==\"undefined\"?previewText:undefined,\"saveText\" in locals_for_with?locals_for_with.saveText:typeof saveText!==\"undefined\"?saveText:undefined,\"showPreview\" in locals_for_with?locals_for_with.showPreview:typeof showPreview!==\"undefined\"?showPreview:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, arialLabelText){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", (arialLabelText || 'Learn more') + ' ' + (ariaLabelContext || ''), true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\nvar BID_TYPE = view.BID_TYPE\nvar bidCapLabel = model.action === 'increase' ? view.i18n.getString('HotelCenter_Overview_Edit_Max_Bid') : view.i18n.getString('HotelCenter_Overview_Edit_Min_Bid');\nvar isPercentage = model.bidType === BID_TYPE.percentage\nvar bidCapUnit = isPercentage ? view.percentSymbol : view.accountCurrency\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\"\\u003E\\u003Cspan class=\\\"panel-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.title) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"form-inline\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cspan class=\\\"form-text bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Shared_Action')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cselect\" + (\" class=\\\"form-control action\\\"\"+pug.attr(\"aria-label\", view.i18n.getString('HotelCenter_Shared_Action'), true, true)) + \"\\u003E\\u003Coption\" + (\" value=\\\"increase\\\"\"+pug.attr(\"selected\", model.action === 'increase', true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Edit_Increase_Bids_By_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Foption\\u003E\\u003Coption\" + (\" value=\\\"decrease\\\"\"+pug.attr(\"selected\", model.action === 'decrease', true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Edit_Decrease_Bids_By_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Foption\\u003E\\u003C\\u002Fselect\\u003E\";\nif (model.unit === 'percent') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"input-container bid-percent-input\\\"\\u003E\\u003Cdiv data-ref=\\\"bid-percent-input\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"input-container bid-number-input\\\"\\u003E\\u003Cdiv data-ref=\\\"bid-number-input\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nif (isPercentage) {\npug_html = pug_html + \"\\u003Cspan class=\\\"unit-percent\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.percentSymbol) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cselect\" + (\" class=\\\"form-control unit\\\"\"+pug.attr(\"aria-label\", view.i18n.getString('HotelCenter_Shared_Unit'), true, true)) + \"\\u003E\\u003Coption\" + (\" value=\\\"number\\\"\"+pug.attr(\"selected\", model.unit === 'number', true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = view.accountCurrency) ? \"\" : pug_interp)) + \"\\u003C\\u002Foption\\u003E\\u003Coption\" + (\" value=\\\"percent\\\"\"+pug.attr(\"selected\", model.unit === 'percent', true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = view.percentSymbol) ? \"\" : pug_interp)) + \"\\u003C\\u002Foption\\u003E\\u003C\\u002Fselect\\u003E\";\n}\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"bid-cap-enabled\\\"\"+\" type=\\\"checkbox\\\"\"+pug.attr(\"checked\", model.isBidCapEnabled, true, true)+pug.attr(\"aria-label\", bidCapLabel, true, true)) + \"\\u003E\\u003Cspan class=\\\"form-text bid-cap-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = bidCapLabel) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\nif (isPercentage) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"input-container bid-cap-percent-input\\\"\\u003E\\u003Cdiv data-ref=\\\"bid-cap-percent-input\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"input-container bid-cap-number-input\\\"\\u003E\\u003Cdiv data-ref=\\\"bid-cap-number-input\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cspan class=\\\"form-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = bidCapUnit) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"inline-block\\\"\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_HotelAds_BidStrategy', view.i18n.getString('HotelCenter_Setup_Budget_Strategy_Label'), view.i18n.getString('Learn_more_link_text'));\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"errors-container\",model.showRequestError ? 'show' : 'hide'], [false,true]), false, true)) + \"\\u003E\";\n// iterate model.errors\n;(function(){\n var $$obj = model.errors;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var error = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"error\\\"\\u003E\" + (pug.escape(null == (pug_interp = error) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var error = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"error\\\"\\u003E\" + (pug.escape(null == (pug_interp = error) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"bulk-edit-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (gridName, name) {pug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"drillDownLink\",gridName], [false,true]), false, true)+\" href=\\\"javascript:void(0);\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";}.call(this,\"gridName\" in locals_for_with?locals_for_with.gridName:typeof gridName!==\"undefined\"?gridName:undefined,\"name\" in locals_for_with?locals_for_with.name:typeof name!==\"undefined\"?name:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"hotel-center-overview__container\\\"\\u003E\\u003Cdiv data-ref=\\\"hotel-center-overview-subaccount-bar-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"hotel-center-overview-toolbar-container\\\"\\u003E\\u003Cdiv class=\\\"grid-groupmenu-container dropdown\\\"\\u003E\\u003Cdiv class=\\\"btn grid-menu-chooser-button toolbar-item\\\" type=\\\"button\\\" role=\\\"button\\\"\\u003E\\u003Cspan class=\\\"grid-menu\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_Format').replace('{0}', (view.i18n.getString(model.linkMenuLabelKey) || '').toLowerCase())) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"icon-right glyphicon glyphicon-triangle-bottom\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cul class=\\\"dropdown-menu\\\" role=\\\"menu\\\"\\u003E\\u003Cdiv class=\\\"grid-submenu grid-chooser-item-hotel-id\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Id_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-submenu grid-chooser-item-hotel-group\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Group_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-submenu grid-chooser-item-subaccount\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_SubAccount_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cli class=\\\"divider\\\" role=\\\"separator\\\"\\u003E\\u003C\\u002Fli\\u003E\\u003Cdiv class=\\\"grid-submenu grid-chooser-item-advanced-booking\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_Advanced_Booking_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-submenu grid-chooser-item-checkin-day\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_Checkin_Day_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-submenu grid-chooser-item-date\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Date_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-submenu grid-chooser-item-date-type\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_DateType_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-submenu grid-chooser-item-devicetype\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_DeviceType_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-submenu grid-chooser-item-hotel-country\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Contry_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-submenu grid-chooser-item-length-of-stay\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Length_Of_Stay_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-submenu grid-chooser-item-site-type\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_SiteType_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-submenu grid-chooser-item-slot-type\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_Slot_Type_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"grid-submenu grid-chooser-item-user-country\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Overview_Grid_Switcher_Hotel_User_Country_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"date-picker-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"bulk-bid-edit-panel-container hide\\\"\\u003E\\u003Cdiv data-ref=\\\"bulk-bid-edit-panel-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"bulk-bid-multipliers-edit-panel-container hide\\\"\\u003E\\u003Cdiv data-ref=\\\"bulk-bid-multipliers-edit-panel-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"bulk-increase-decrease-bid-panel-container hide\\\"\\u003E\\u003Cdiv data-ref=\\\"bulk-increase-decrease-bid-panel-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"hotel-group-information-container hide\\\"\\u003E\\u003Cdiv data-ref=\\\"hotel-group-information-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"bingadsgrid\",\"hotel-center-overview-grid-container\",view.gridName], [false,false,true]), false, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"noresult-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"filter-noresult-container\\\" style=\\\"display:none\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, arialLabelText){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", (arialLabelText || 'Learn more') + ' ' + (ariaLabelContext || ''), true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"inline-edit-container form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-3 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Setup_Budget_Strategy_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_HotelAds_BidStrategy', view.i18n.getString('HotelCenter_Setup_Budget_Strategy_Label'), view.i18n.getString('Learn_more_link_text'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-7\\\"\\u003E\\u003Cdiv data-ref=\\\"child-view-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv data-ref=\\\"edit-panel-view\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"inline-edit-errors\",\"font-error\",model.errors.length ? 'show' : 'hide'], [false,false,true]), false, true)+\" role=\\\"alert\\\"\") + \"\\u003E\";\n// iterate model.errors\n;(function(){\n var $$obj = model.errors;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var error = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"inline-edit-error\\\"\\u003E\" + (null == (pug_interp = error) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var error = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"inline-edit-error\\\"\\u003E\" + (null == (pug_interp = error) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model) {pug_html = pug_html + \"\\u003Cdiv class=\\\"inline-edit-container form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv data-ref=\\\"edit-panel-view\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"inline-edit-errors\",\"font-error\",model.errors.length ? 'show' : 'hide'], [false,false,true]), false, true)+\" role=\\\"alert\\\"\") + \"\\u003E\";\n// iterate model.errors\n;(function(){\n var $$obj = model.errors;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var error = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"inline-edit-error\\\"\\u003E\" + (null == (pug_interp = error) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var error = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"inline-edit-error\\\"\\u003E\" + (null == (pug_interp = error) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model) {pug_html = pug_html + \"\\u003Cdiv class=\\\"inline-edit-container form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-11\\\"\\u003E\\u003Cdiv data-ref=\\\"child-view-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv data-ref=\\\"edit-panel-view\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"inline-edit-errors\",\"font-error\",model.errors.length ? 'show' : 'hide'], [false,false,true]), false, true)+\" role=\\\"alert\\\"\") + \"\\u003E\";\n// iterate model.errors\n;(function(){\n var $$obj = model.errors;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var error = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"inline-edit-error\\\"\\u003E\" + (null == (pug_interp = error) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var error = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"inline-edit-error\\\"\\u003E\" + (null == (pug_interp = error) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, arialLabelText){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", (arialLabelText || 'Learn more') + ' ' + (ariaLabelContext || ''), true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"bid-cap-panel\\\"\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-item\\\"\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-label\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Setup_Budget_Max_Bid_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_HotelAds_MaxBidCap', view.i18n.getString('HotelCenter_Setup_Budget_Max_Bid_Label'), view.i18n.getString('Learn_more_link_text'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-value grid-menu-container grid-menu-chooser-button\\\" role=\\\"button\\\"\\u003E\\u003Cspan class=\\\"grid-menu\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.bidCap) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"glyphicon glyphicon-pencil clickable\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-bid-cap-edit-container\\\"\\u003E\\u003Cdiv class=\\\"grid-groupmenu modal-header light-dismissible bid-cap-edit-panel\\\" role=\\\"menu\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv data-ref=\\\"bid-cap-view\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12 button-panel\\\"\\u003E\\u003Cinput\" + (\" class=\\\"save btn btn-primary\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('Button_Save'), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"cancel btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('Button_Cancel'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, arialLabelText){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", (arialLabelText || 'Learn more') + ' ' + (ariaLabelContext || ''), true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"budget-panel\\\"\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-item\\\"\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-label\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Setup_Daily_Budget_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_HotelAds_DailyBudget', view.i18n.getString('HotelCenter_Setup_Daily_Budget_Label'), view.i18n.getString('Learn_more_link_text'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-value grid-menu-container grid-menu-chooser-button\\\" role=\\\"button\\\"\\u003E\\u003Cspan class=\\\"grid-menu\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.amount) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"glyphicon glyphicon-pencil clickable\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-budget-edit-container\\\"\\u003E\\u003Cdiv class=\\\"grid-groupmenu modal-header light-dismissible budget-edit-panel\\\" role=\\\"menu\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv data-ref=\\\"budget-input\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12 button-panel\\\"\\u003E\\u003Cinput\" + (\" class=\\\"save btn btn-primary\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('Button_Save'), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"cancel btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('Button_Cancel'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, arialLabelText){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", (arialLabelText || 'Learn more') + ' ' + (ariaLabelContext || ''), true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"hotel-center-overview-subaccount-bar-ui-next-container\\\"\\u003E\\u003Cdiv class=\\\"form-inline\\\"\\u003E\\u003Cdiv class=\\\"subaccount-bar-breadcrumbs\\\"\\u003E\\u003Cdiv class=\\\"breadcrumb-divider\\\"\\u003E\\u003Cspan class=\\\"chevron-right-icon iconba iconba-ChevronRight\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"breadcrumb-item\\\"\\u003E\\u003Cdiv class=\\\"breadcrumb-text-container\\\"\\u003E\\u003Cdiv class=\\\"breadcrumb-item-text current-breadcrumb\\\"\\u003E\" + (null == (pug_interp = model.subAccountName) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"summary-bar-divider\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-items\\\"\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-item\\\"\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('Entity')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-value\\\"\\u003E\" + (null == (pug_interp = view.i18n.getString('{{hotelCount}} hotel(s) in {{hotelGroupCount}} hotel group(s)', { hotelCount: model.hotelTotalCount, hotelGroupCount: model.hotelGroupTotalCount })) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-bar-bid-container\\\"\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-item\\\"\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-label\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_SubAccountBar_Account_Default_Bid_Format')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_HotelAds_SubaccountBid');\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-value\\\"\\u003E\\u003Cspan class=\\\"grid-menu\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.defaultBid) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"glyphicon glyphicon-pencil account-default-bid-edit clickable\\\" title=\\\"Edit\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-bid-edit-container\\\"\\u003E\\u003Cdiv data-ref=\\\"subaccount-bar-edit\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-bar-bid-cap-container\\\"\\u003E\\u003Cdiv data-ref=\\\"bid-cap-panel\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-bar-bid-multipliers-container\\\"\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-item\\\"\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('Bid multiplier')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-bar-entity-value\\\"\\u003E\\u003Cspan class=\\\"grid-menu\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.defaultDeviceTypesWithMultipliers || view.i18n.getString('No Bid multiplier')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"glyphicon glyphicon-pencil clickable account-default-bid-multipliers-edit\\\" title=\\\"Edit\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-bid-multipliers-edit-outside-container\\\"\\u003E\\u003Cdiv data-ref=\\\"subaccount-multipliers-bar-edit\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"subaccount-bar-budget-container\\\"\\u003E\\u003Cdiv data-ref=\\\"budget-panel\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (view) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, arialLabelText){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", (arialLabelText || 'Learn more') + ' ' + (ariaLabelContext || ''), true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"grid-groupmenu modal-header light-dismissible form-horizontal subaccount-bid-edit-panel\\\" role=\\\"menu\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-4 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Setup_Budget_Strategy_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_HotelAds_BidStrategy', view.i18n.getString('HotelCenter_Setup_Budget_Strategy_Label'), view.i18n.getString('Learn_more_link_text'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-8\\\"\\u003E\\u003Cdiv data-ref=\\\"bid-strategy-view-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv data-ref=\\\"edit-panel-view\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv class=\\\"grid-groupmenu modal-header subaccount-bid-multipliers-edit-container form-horizontal light-dismissible\\\" role=\\\"menu\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv data-ref=\\\"bid-multipliers-view-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cdiv data-ref=\\\"edit-panel-view\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"account-name-panel\\\"\\u003E\\u003Cdiv class=\\\"form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group col-sm-12\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Setup_Account_Select')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group col-sm-12\\\"\\u003E\\u003Cspan class=\\\"type-bold\\\"\\u003E\" + (pug.escape(null == (pug_interp = view.account.Name + '(' + view.account.Id + ')') ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group col-sm-12\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Setup_Subaccount_Name')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group col-sm-12\\\"\\u003E\\u003Cdiv data-ref=\\\"sub-account-name-input\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"button-panel\\\"\\u003E\\u003Cinput\" + (\" class=\\\"finish btn btn-primary save-and-go-next-btn disabled\\\"\"+pug.attr(\"disabled\", view.isHotelCenterDeprecation, true, true)+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('HotelCenter_Save_Next'), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"cancel btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('Button_Cancel'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (view) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, arialLabelText){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this)\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", (arialLabelText || 'Learn more') + ' ' + (ariaLabelContext || ''), true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"budget-bid-panel\\\"\\u003E\\u003Cdiv class=\\\"form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"info-header\\\"\\u003E\\u003Cdiv data-ref=\\\"account-information-view-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"budget-bid-setting\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Cspan\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Setup_Budget_Bid_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Setup_Daily_Budget_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_HotelAds_DailyBudget', view.i18n.getString('HotelCenter_Setup_Daily_Budget_Label'), view.i18n.getString('Learn_more_link_text'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-2\\\"\\u003E\\u003Cdiv data-ref=\\\"budget-input\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Setup_Budget_Strategy_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_HotelAds_BidStrategy', view.i18n.getString('HotelCenter_Setup_Budget_Strategy_Label'), view.i18n.getString('Learn_more_link_text'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-3\\\"\\u003E\\u003Cdiv data-ref=\\\"bid-strategy-view\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-2 control-label\\\"\\u003E\\u003Clabel\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Setup_Budget_Max_Bid_Label')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_HotelAds_MaxBidCap', view.i18n.getString('HotelCenter_Setup_Budget_Max_Bid_Label'), view.i18n.getString('Learn_more_link_text'));\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-6\\\"\\u003E\\u003Cdiv data-ref=\\\"bid-cap-view\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"button-panel\\\"\\u003E\\u003Cinput\" + (\" class=\\\"finish btn btn-primary disabled\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('Button_Done'), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"cancel btn btn-default\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", view.i18n.getString('Button_Cancel'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Ch1\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Subheader_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh1\\u003E\\u003Ch3\\u003E\" + (pug.escape(null == (pug_interp = view.i18n.getString('HotelCenter_Setup_Title_Desc')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fh3\\u003E\\u003Cnav class=\\\"navbar-default hotel-center-navbar\\\" role=\\\"navigation\\\"\\u003E\\u003Cul class=\\\"nav navbar-nav\\\"\\u003E\";\n// iterate view.options.steps\n;(function(){\n var $$obj = view.options.steps;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var step = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cli\" + (pug.attr(\"class\", pug.classes([step === model.step ? 'active' : 'normal'], [true]), false, true)) + \"\\u003E\\u003Ca\\u003E\" + (pug.escape(null == (pug_interp = view.options.strings[step]) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var step = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cli\" + (pug.attr(\"class\", pug.classes([step === model.step ? 'active' : 'normal'], [true]), false, true)) + \"\\u003E\\u003Ca\\u003E\" + (pug.escape(null == (pug_interp = view.options.strings[step]) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Ful\\u003E\\u003C\\u002Fnav\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {pug_html = pug_html + \"\\u003Cdiv class=\\\"header\\\"\\u003E\\u003Cdiv data-ref=\\\"header\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n// iterate view.steps\n;(function(){\n var $$obj = view.steps;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var step = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"page\\\"\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([step === model.activeStep ? 'show' : 'hidden'], [true]), false, true)) + \"\\u003E\\u003Cdiv\" + (pug.attr(\"data-ref\", step, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var step = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"page\\\"\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([step === model.activeStep ? 'show' : 'hidden'], [true]), false, true)) + \"\\u003E\\u003Cdiv\" + (pug.attr(\"data-ref\", step, true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\nif (model.errorMessage) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"error\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.errorMessage) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;"],"names":["InstantSearchViewModel","_createClass","_ref","placeholder","_classCallCheck","this","ko","searchString","inEditMode","InstantSearch","_Backbone$View","_callSuper","arguments","_inherits","key","value","_ref$placeholder","i18n","koModel","get","event","trimmedVal","replace","preventDefault","trigger","which","$el","html","template","el","Backbone","ShowPausedFilterViewModel","options","disableShowPause","disable","showPaused","ShowPausedFilter","_","shouldDisableThisFilter","_this","innerHTML","subscribe","newValue","gridView","func","set","dataSource","filter","generateFilterPlugin","_ref$logTrace","logTrace","definePlugin","config","searchBoxView","searchValue","showPausedView","showPausedChecked","activeData","filterConfig","plugins","searchConfig","search","searchProperty","property","pausedConfig","pausedFilter","showPausedFilterProperty","searchFilter","val","item","toLowerCase","indexOf","isActive","generateFilterFunction","filterConditions","push","title","$","container","on","setFilter","concat","data","forceHide","hasNoActiveData","length","alwaysEnable","filteredData","checked","render","remove","totalDataWithActiveFilter","enableShowPaused","getShowPausedValue","CampaignGridViewModel","repo","_ref$isAIMImportEnabl","isAIMImportEnabled","hasDiplayCampaign","containDisplayType","importAll","Editing","read","write","selectedCampaigns","showValidationError","hasError","showDisplayCampaignAlert","generateConfig","signupMode","columnsConfig","name","sortable","Name","toString","bodyClasses","Type","Status","a11y","getString","toolbar","tableName","type","scrolling","virtualized","header","attributes","selection","headClasses","columns","tableClasses","tableAttributes","CampaignGridView","_ref$data","_ref$showPaused","_ref$multiAccountMode","multiAccountMode","getGridConfig","localizedData","obj","sortedData","getConfig","toolbarList","dataForImportAll","maxLen","singleAccountMode","ensureRenderImportSpecific","renderImportSpecific","bind","_this2","grid","projectionGrid","vnext","use","a11yPlugin","assistedSelectionPlugin","create","memoryFilter","addClass","removeClass","selectedItems","Id","_this3","memo","campaignIds","_this4","wrappedSetCampaigns","setSelectedCampaignsInGrid","_isRendered","_this5","itemArray","primaryKey","selectRow","_this6","summaryText","totalCampaignsNumber","selectedCampaignsNumber","totalActiveCampaignsNumber","campaign","_superPropGet","arrayOf","shape","number","isRequired","string","getGoogleAdGroupsByCampaignId","id","status","availableWithFilter","bool","parseDecimal","selectedCampaignIds","selectedWithActiveOnly","selectedAdGroupMap","PropTypes","setSelectedDataGetter","setImportAllGetter","GoogleCampaignAndAdGroupHeader","_React$PureComponent","_len","args","Array","_key","handleSelectAllFilterChange","e","props","onSelectAllCheckboxChange","target","sortString","sortInDescendingOrder","sortIcon","_jsx","className","children","ariaLabel","_jsxs","Checkbox","selectAllChecked","onChange","sortedProperty","onClick","onSortChange","tabIndex","onKeyDown","keyCode","Enter","Space","React","ACTIVE_STATUS","PAUSED_STATUS","SELECTALL_CHECKBOX_STATUS","ListNode","node","TooltipHost","content","overflowMode","TooltipOverflowMode","Parent","isExpandable","selectionStatus","CampaignAdGroupTree","onNodeExpanded","unused","isThrottlingRequired","onErrorOrWarning","setUiBlocker","repository","googleCustomerId","then","expandedAdGroupData","setState","prevState","prevProps","nodes","newState","n","expandNode","state","expanded","collapseNode","finally","onNodeCollapsed","rebuildWithReplaceAction","onNodeSelected","isDisplayType","showPausedAdGroups","removeCampaignSelection","selectCampaignNode","onSelectionChange","updateSelectAllFilter","initialSelection","parentId","campaignId","parentNode","determineSelectionStatus","campaignSelectedStatus","ALL_EXISTING_AND_NEW","ALL_EXISTING_AND_NEW_ENABLED","SPECIFIC_SELECTED","newSelection","parentChecked","selectAdGroupNode","getClassNames","getFilteredCampaignIds","annotatedData","filteredNodes","isMaxSelectedSpecificCampaignReached","initializeSelectionAndExpansionData","callback","selectionData","combineOrDiff","combine","arr1","arr2","arr","action","checkAndPropogateEmptyError","checkAndRemoveThrotllingAlert","selectAllFiltered","selectAllCheckboxStatus","filteredCampaignIds","updateNodes","campaignNode","buildAdGroupNodes","selectedData","indeterminate","adGroupNode","resultNode","resultSelectionStatus","newChildren","NONE","changes","newProps","buildNodes","allSelectedIds","parseInt","remainingUnselectedCampaigns","toggleSelectAllCheckboxOnGridUpdate","pageNumber","expandedId","visCount","op","isExpanded","updateTypeHandlers","_defineProperty","NodeOperations","SELECTED","EXPANDED","COLLAPSED","TreeView","treeViewClassNames","nodeRenderer","CheckBoxNode","nodeChildRenderer","expandableNodeAriaLabel","expandIconAriaLabel","initialDataState","initialNodeState","stateGetter","GoogleCampaignAndAdGroupSelector","_Component","logScenario","setTimeout","getSelectedData","selectionToLog","campaigns","adGroups","campaignSelectionChanged","signal","onCampaignFilterChange","updates","_this$buildAnnotatedD","buildAnnotatedData","availableCount","Math","floor","_objectSpread","onPageNumberChanged","pageNumberChange","onQuery","query","onCampaignFilter","showPausedCampaigns","onAdGroupFilter","selectAllCheckboxChecked","blocking","sortAnnotatedData","reverse","initializeState","selectAllCampaigns","searchInCampaign","getShowNoActiveCampaignCouponAlert","coupon","showNoActiveCampaignCouponAlert","pausedCampaigns","initialState","showPausedCampaignsDisabled","initialAnnotatedState","_this$props","headerAriaLabel","showPausedAdGroupMessage","TypeId","UiBlocker","loadingText","SearchBox","onSearch","onQueryChange","Pagination","itemCount","pageSize","i18nAmdLoader","SearchResultLiveRegion","totalCount","emptyText","searchText","resultText","Alert","level","hasIcon","icon","dismissible","message","disabled","Component","defaultProps","undefined","GoogleCampaignAndAdGroupStep","handleRadioChange","importAllCampaignsSelected","importSpecificCampaignSelectedLog","handleErrorOrWarning","selectedDisplayIds","error","warning","onError","handleSelectionChange","radioItems","RadioGroup","items","renderItem","role","dataHasDisplayType","availableIdBoolMap","selectedIds","renderDisplayCampaignAlert","GoogleCampaignAndAdGroupView","appConfig","getter","selectedDataGetter","importAllGetter","getImportAll","triggerError","triggerEdit","parentEl","ReactDOM","stateData","areAnyPausedCampaignsSelected","googleCampaignsSummary","getSummaryInfo","CampaignSelectionStep","_BaseImportStep","importSourceName","getStateAdapter","isAdGroupLevelImportEnabled","deps","getCampaignGridConfig","isContinueButtonEnabled","uxMode","generateImportUserPreferencesFromPreviousOptions","permissions","stateAdapter","getState","patchState","buildTitle","activeTitle","summaryTitle","view","checkIfShouldUpdateAndResetFlagIfTrue","logActivities","renderSelectAdWordsCampaigns","start","importSourceCustomerId","importSourceCampaigns","importContext","isEditingScheduledImport","CampaignIds","isEdited","selectCampaigns","stop","selectCampaign","startSignal","displayText","htmlAttributes","class","enabled","original","finishStep","stopSignal","getUserPreferences","preferences","previousImportOptions","completeSchedule","startImportForSignup","onCredentialsError","catch","err","handleGenericError","withUiBlock","getStateData","updateState","importSourceEntitiesSelectionData","importSourceCampaignsSummary","includePausedCampaigns","Promise","resolve","element","document","createElement","style","display","append","detachModal","ByPassConfirmationModal","messageKey","onDismiss","onConfirm","getSelectedCampaigns","taskItemBody","notificationType","timeZoneId","importUserPreferences","prepareImportTaskItem","importOptions","stepState","finalBody","createScheduledImportTaskItem","getCurrentSetting","BaseImportStep","validateSelectedAccountCampaigns","selectedAccountCampaigns","INITIAL_ACCOUNT_CAMPAIGNS","AccountGridViewModel","_ref$signupMode","selectedAccount","noCampaignsErrorMessage","showNoCampaignsError","AccountGridView","parentElement","_ref$accountData","accountData","firstAccountCampaigns","accountName","AccountName","text","single","placeholderPlugin","clearNoCampaignError","once","CustomerId","accountWithoutCampaignSelected","CurrencyConversionViewModel","importSourceAccountCurrency","bingAccountCurrency","doConvert","shouldShow","CurrencyConversionView","isSingleAccountMode","AccountSelectionStep","withCurrencyConversionText","withoutCurrencyConversionText","summaryInfo","currencyConversionView","autoCurrencyConversionEnabled","currencyConversionDisplayed","getSelectedItem","renderSelectAdWordsAccount","importSourceAccount","accountList","count","hasNoData","logger","currencyConversionChanged","tempSelectedItem","Currency","tempSelectedAccount","selectAccountById","selectAccount","isValid","selectedItem","customerId","loginId","LoginCustomerId","blobName","entitiesBlobName","prepareForCampaignSelectionStep","extraState","setSelectedAccountCampaigns","importSourceAccountSummary","getSelectedAccountName","loginCustomerId","handleErrorInImport","ImportOptionsSummaryBuilder","_BaseImportOptionsSum","newExistingSummary","AdWordsAccountTrackingTemplate","ImportDeletedEntities","join","BaseImportOptionsSummaryBuilder","ImportOptionsStep","_BaseImportOptionsSte","summaryBuilder","BaseImportOptionsStep","failedValidators","validators","v","errorMessages","errors","failed","messages","validate","observable","observableWrapper","rawValue","validator","process","blockInput","failedValidations","hasBeenValid","notifySubscribers","extend","notify","mapCronToFrequency","cron","test","prepareCron","chosenFrequency","chosenTime","chosenDate","chosenDay","chosenDayOfTheMonth","getDate","getMonth","getFullYear","viewModel","timeError","ImportSchedulingOptions","twentyFourHourDisplay","twelveHourDisplay","withAutoOption","num","getTimeZoneIdByText","timeZoneText","timeZoneMapper","timeZoneObject","getTimeZoneOptions","index","ScheduleFormViewModel","enableAutoFrequency","facCoupon","importSchedulingOptions","currentUser","scheduleFromImportSummary","toggleImportButtonStatus","isMultiAccountImport","availableFrequencies","observableArray","getFrequenciesForRunNowScheduling","getFrequencies","emailOptions","getEmailOptions","availableTimes","getHours","availableDays","getDaysOfWeek","availableDaysOfTheMonth","getDaysOfMonth","timeZones","availableTimeZones","showUnSupportedDayOfMonth","runNowWithScheduled","isScheduledFromImportSummaryDone","frequency","initialSettings","Cron","split","chosenEmailOption","NotificationType","initialDayOfTheMonth","emailAddresses","NotificationEmailAddresses","isDayLightSavingTime","moment","isDST","time","utc","minutes","timeZoneOffsetValue","hours","day","Email","timeFormat","chosenTimeZone","defaultTimeZone","defaultimportName","computed","dateUtil","format","Date","AccountNumber","importName","Validation","required","input","summaryMessage","isTitleActive","isTitleDisabled","isSummaryVisible","isFormBodyVisible","scheduleImportText","emailAddressError","maxLength","emailAddressErrorMessage","remainingCharacters","char_rem","is12Hour","isAutoFrequency","scheduledImport","nonAutoScheduledImport","showRunNow","showMultiEmail","ScheduleFormView","showError","logTraceFunction","initialTimeZoneId","TimeZoneId","getTimeZoneTextById","getTimeZoneOffset","datePickerAriaLabel","minDate","year","month","date","hour","minute","second","maxDate","setYear","datePicker","DatePicker","selectedDate","getInitialDatePickerDate","_this$datePicker","apply","ScheduleFormTemplate","isScheduledImport","importNameChanged","redirectToImportScheduleAndHistory","serializeImportSchedulingOptions","scheduleOption","applyOpportunityIfApplicable","tap","taskItem","logApplyOpportunityInfoIfIfApplicable","getDisplayString","ScheduleFromDoneTemplate","doneText","navigateToButtonText","importButtonEnabled","handleErrors","currentDate","splitCron","today","getTime","getDateFromCron","setDate","serializedEmails","emailAddressArray","email","trim","areAllEmailsValid","validateEmailAddress","minTime","validateEmailAddresses","validateScheduleTime","body","JSON","stringify","scheduledTaskItemBody","notificationEmailAddresses","serializeEmailAddresses","runNowTaskItemBody","taskItemState","IsAutoFrequency","logTraceFunc","errorCode","Code","listener","datePickerValue","displayString","cronToDisplayString","toLocaleDateString","FAC_STATUS_ADOPTED","CCUIConstants","RecommendationAdoptionStatus","Adopted","ScheduleImportStep","enable","nextActionText","importOmnitureTrackingId","stepRemoved","scheduleFormView","showErrorMessage","IsMultiAccountImport","attachFrequencyListener","changeActionTextOnFrequencyChange","frequencyChanged","updateAction","i18nKey","replaceActionText","facCouponValidate","unmount","reject","Error","prepareSummaryPromise","closeBlock","importId","isContinueImport","pollRunningImportStatusAndGoNextWhenReady","createImportRunNowWithScheduledAndGoNextWhenReady","createImportAndGoNextWhenReady","customized","pollGetImportStatus","getImportSummary","importSummaryData","summary","taskItemPromise","scheduledTimeDisplayString","updateScheduledImportTaskItem","taskItemId","updateFACCoupon","showAlertHandler","isBillToCustomer","href","couponDetailsUrl","logOpportunity","createRunNowImportTaskItem","response","pollTaskItemExecutionStatus","TaskItemExecutions","_ref4","isBatch","isRunNowWithScheduledImport","createScheduledImportAndGoNextWhenReady","createRunNowImportAndGoNextWhenReady","_this7","scheduleBody","runNowBody","ImportSummaryStep","_BaseImportSummarySte","_ref$labels","labels","summaryDisclaimerKey","summaryDisclaimerHelpLinkKey","summaryDataContextManager","dataContextManager","default","merchantCenterPlaceholderStoreNote","showAlert","onSignupComplete","ScheduledImportSummaryTemplate","ImportSource","google","summaryInfos","label","loginSummary","importSourceLoginSummary","accountSummary","campaignsAndAdGroupsSummary","campaignSummary","Title","importOptionsSummary","successEmitter","method","redirectToAddPayment","googleCampaigns","BaseImportSummaryStep","GoogleLoginStep","_ref$singleAccountMod","dynamic","GSILocal","googleLoginRepository","GoogleLoginRepository","actions","isUserLoggedIn","getGoogleAccountName","errorMsg","isLoggedIn","signInFailedEmptySessionId","errorMsgRole","GoogleLoginTemplate","currentGoogleAccount","currentAccount","logInAccount","clickOnSignInButton","token","signIntoGoogleInDevEnvWithToken","googleSignIn","onSuccess","onFail","useConsentPrompt","onGoogleAuthSuccess","authErrors","sessionId","getGoogleImportInfoFromCookie","googleSessionId","finalState","getGoogleAccounts","googleAccount","googleLoginSummary","shouldConvertCurrency","bingCurrency","AdWordsImportContext","GoogleEntitiesBlobName","googleAccountSummary","accountSelectionSkipped","soleGoogleAccount","handleError","logoutGoogleWithErrorMessage","startSessionPromise","continue","processSignIn","startGoogleSession","code","startGoogleSessionWithToken","msg","i18nErrors","logoutGoogle","logout","GoogleImportOptionsStep","_ImportOptionsStep","importSource","_BaseScheduleImportSt","BaseScheduleImportStep","createGoogleCampaignGridView","others","_objectWithoutProperties","_excluded","createGoogleLoginStep","stepName","stepView","linkTextForTitle","createGoogleAccountStep","previousStepName","createGoogleCampaignStep","_ref$config","_ref$importSource","_ref$importSource2","IsAIMCampaignEnabled","createImportSummaryStep","GoogleImportStepFactory","check","steps","AccountTitleStep","createAccountTitleStep","createImportOptionsStep","createScheduleImportStep","FAC_STATUS_ACTIVE","Active","FAC_STATUS_NOT_IN_PROGRESS","NotInProgess","GoogleImportPage","_ref$options","checkRequiredDepsForGoogleImport","perfMarker","PerfMarkerFactory","createMarker","autoEnd","isSignUpMode","subTitle","pageSubTitle","pageTitle","isGoogleAccountSkipped","googleImportRepository","GoogleImportRepository","baseImportOptions","createStepsForSignup","showAllStepsInLastStepFunc","enableEdit","createSteps","subFieldsBlacklist","wizard","currentStepInstance","currentStep","onSwitchFinished","hide","$accountEdit","show","_this$googleImportRep","willRender","initBaseViewPromise","baseImportView","BaseImportView","initialStateFetchPromise","getImportTaskItem","currentUserId","ModifiedBy","cookieHelperForEditImport","getSessionId","deleteCookie","SessionId","ccJsData","enableFacOnScheduleStep","shouldHaveCoupon","disableFacEverywhere","addCouponBanner","bannerContainer","topBannerElement","CouponBannerNew","titleKey","prepend","ReactDom","rawData","$modal","closeLightbox","errorMessageKey","Errors","modalElement","CouponLightboxNew","onSubmit","onCancel","closest","attachPageEventHandlers","done","googleLoginStepView","googleAccountStepView","googleCampaignStepView","attr","savedSetting","isEditEnabledForWizard","goToStep","goToNextStep","onContinueImportView","_this$initialState$in","setGoogleImportAccountInfoInCookie","loginAccount","PermissionFactory","_CommonPermissionFact","importMode","isMerchantCenterStoreMappingStepEnabled","campaignsWithMerchantId","IsBSCSmartImportEnabled","ImportMode","Multi","isImportModeSwitchEnabled","IsSmartImportV2Enabled","toggleImportMode","mode","isCurrencyConvertorRelocateEnabled","IsSmartImportCurrencyConversionOptionEnabled","IsSmartImportEditExpertImportEnabled","IsGoogleImportVideoAdsEnabled","IsOneClickImportEnabled","ImportOneClick","IsImportFromMetaButtonEnabled","FBImportForGoogleImportSummary","FacebookImport","CommonPermissionFactory","StepConstants","SignInStep","path","_TL_","ChooseAccounts","ChooseAccountsGoogleAccount","ChooseAccountsBingAccountMapping","StartImportSmart","GoogleCampaignStep","ImportOptionStep","StartImportAdvanced","ImportStatusStep","MerchantCenterStoreMappingStep","SmartCampaignSignInStep","ESCSignInStep","withLoginStepPrefetch","PreExecuteStep","importCoreContext","useContext","ImportCoreContext","toggleImportType","existingGoogleAccount","_importCoreContext$lo","logOutButtonClicked","scope","values","didSwitchToExpertFromImport","nextStepPath","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","dispatchedOdataCall","setDispatchedOdataCall","keepAccountSelectionDueToDifferentEmail","serverContext","ApplicationName","SessionType","DefaultImportSettings","IsSmartImport","TaskType","TaskId","Event","isNameEdit","ImportUserPreference","UserPreferenceTrackingTemplate","AdWordsAccountFinalUrlSuffix","_taskItem$AdWordsImpo","initialPromise","fetchGoogleLoginEmail","importStep","otherFieldsExpanded","skipAccountSelectionDueToDirectJump","ImportType","Advanced","_initialState$initial","_initialState$initial2","autoConvertCurrencyEnabled","EnableAutoCurrencyConversion","GeneralGoogleLoginStep","stepTitle","stepPrefetchHoc","rootContainerClassName","BingAccountDropDownList","onDropDownClick","isOpen","onDropDownKeyDown","onItemClick","bingAccount","onSelect","isSelected","selectedAccountName","currentPageAccounts","firstPageBingAccounts","__","searchQuery","onFetch","skip","top","context","getBingAccounts","currentPageAccountsRaw","filterAccountCount","onDropDownDismiss","isBingAccountMapped","googleToBingAccountMap","mapItem","BingAccount","newI18n","dropDownButtonPlaceHolderText","searchBoxPlaceHolderText","bingAccountHeaderText","defaultSelectedBingAccount","GoogleAccount","bingAccountCount","dropDownRef","classes","_this$state","bingAccountDropdownList","bingAccountDropdownButton","ref","bingAccountDropdownPlaceholder","bingAccountDropdownCaretDown","Icon","iconName","Callout","bingAccountCallout","current","calloutWidth","clientWidth","isBeakVisible","gapSpace","setInitialFocus","bingAccountSelectionBox","bingAccountSearchBox","underlined","bingAccountHeader","bingAccountListWrapper","FocusZone","direction","FocusZoneDirection","vertical","map","CommandButton","bingAccountItem","BingAccountSelectorInternal","onSelectMappedBingAccount","updatedAccountMap","onRenderItemColumn","column","gridItem","fieldName","getBingAccountSelectorColumns","minWidth","maxWidth","isResizable","isMultiline","account","bingAccountFetcherPerfMarker","activity","_this$props2","rootClassName","selectedAccounts","classNames","bingAccountMappingStep","stepText","accountMappingList","DetailsList","selectionMode","SelectionMode","none","BingAccountSelector","withDefaultStyles","withActivityContext","_ref$palette","palette","marginBottom","marginTop","height","accountDetailList","fontSize","verticalAlign","padding","margin","fontWeight","position","borderStyle","borderWidth","borderColor","borderRadius","cursor","lineHeight","positon","overflow","whiteSpace","textOverflow","right","curson","paginationStyle","border","width","goToPrevStep","existingfirstPageBingAccounts","existingGoogleToBingAccountMap","createChild","willInit","firstPageBingAccountsRaw","BingAccountStepInternal","contextValues","getUniqueImportGUID","uniqueImportId","Activity","StepContainer","actionBarConfig","prevStepName","nextStepName","extraLeftPadding","BingAccountStep","Consumer","getNextStepName","shouldGoToMerchantCenterStoreMappingStep","getImportMode","getPrevStepName","_ref2","isEscImport","GoogleAccountStep","GeneralGoogleAccountStep","withSmartGoogleImportAccountSelectionStepPrefetch","prevStepNameIfPrefetchFail","nextStepNameIfPrefetchOnlyOneAccount","showCancelButton","getAdvancedCustomizingStepName","hasAccountsWithNoCampaigns","isRunNowImport","formatTaskData","taskData","permissionFactory","isNoCustomSettingOnSmartStep","defaultImportOptions","SmartOptionSettingsKeys","IsImportSmartScheduleStepImprovementPhaseTwoEnabled","importOptionOverride","IsExpertModeImport","scheduleStepState","googleEntitiesSelectionData","importOptionsRunnow","withSmartImportStepPrefetch","getSmartImportStepPrefetchHOC","merchantCenterStoreMappingStepPath","loginStepName","StartImportSmartStep","GeneralStartImportStep","isCustomizingModeEnabled","getActionBarItems","getDefaultActionBarItemsForStartImportStep","CampaignSelectorInternal","CampaignAndAdGroupSelector","CampaignSelector","iconFontFamily","statusStyle","paddingLeft","color","themePrimary","left","fontFamily","background","paddingTop","borderBottomStyle","borderBottomWidth","borderLeftStyle","borderLeftWidth","borderRightStyle","borderRightWidth","borderLeft","borderRight","borderBottom","borderTop","paddingBottom","paddingRight","outline","neutralSecondary","outlineOffset","GoogleCampaignStepInternal","showNoActiveCampaignsFacModal","updateFacData","campaignSelectionPerfMarker","_this$props$contextVa","facNoActiveCampaignsFromProps","facNoActiveCampaigns","setNoActiveCampaigns","shouldSwitchMode","Smart","expertImportOptionsPerfMarker","onNoActiveCampaignFacModalConfirm","dismissFacBypassModal","onNoActiveCampaignFacModalDismiss","shouldGoToPreviousStep","validateAndSaveData","shouldGoToNextStep","validateFunction","GoogleCampaignStepWithActivity","nextButtonEnabled","isGoogleImport","GeneralImportStatusStep","startImporting","isReadOnly","scheduleOnly","primary","StartImportAdvancedStep","GeneralStartImportAdvancedStep","noCampaignErrorMessage","GMCToMMCMappingGridWithSignIn","module","GoogleMerchantCenterStoreMappingStepInternal","onMappingGridRowsUpdate","mappingGridRows","onGMCEmailAddressUpdate","GMCEmail","onHasDraftStoreUpdate","hasDraftStore","onIsGetMappingsErrorUpdate","isGetMappingsError","onInfoForMMCGridUpdate","infoForMMCGrid","onScenarioUpdate","scenario","onLoginErrorTextUpdate","loginErrorText","onClientIdUpdate","clientId","generateMerchantIds","_context$accountToCam","accountToCampaignsOptionsMapping","_context$selectedAcco","merchantIds","MerchantId","saveMappingGridConfig","skipSetMappings","merchantCenterMappingStepPerfMarker","isOneClickTypeSelected","learnMoreLinkCallback","merchantCenterMappingLearnMoreLinkCallback","onDraftStoreLinkClick","disableGMCSignIn","onGMCSignInRedirectLinkClick","logError","isImportOneClickMultiAdAccountEnabled","ImportOneClickMultiAdAccount","GmcHeaderMoreInfos","fallback","gmcEmail","GoogleMerchantCenterStoreMappingStepInternalWithStyle","GoogleMerchantCenterStoreMappingStep","SmartCampaignGoogleLoginStep","GeneralSmartCampaignGoogleLoginStep","ESCGoogleLoginStep","GeneralESCGoogleLoginStep","nextStepPathIfOnlyOneAccount","nextStepPathIfMultipleAccounts","Step","VerticalSeparatedLayout","getGoogleLoginStep","onLoginPageHelpLinkClick","getLoginPageDisclaimer","renderDescription","step","generalRenderDescription","getImportSummaryStep","_ref3","showImportSummary","redirectToCampaignsPage","redirectToImportHistoryPage","onImportSummaryPageHelpLinkClicked","onSetupUETtagLinkClick","getImportSummaryDisclaimerText","isSmartCampaignImport","ImportSummaryPage","learnMoreId","getStartImportSmartStep","getImportType","setImportStatus","facScheduleInvalid","getSchedulePageDisclaimer","getDefaultSchedule","isEnabled","brandName","getGoogleCampaignStep","_ref5","showCampaignSelectionStep","getStartImportAdvancedStep","_ref7","getImportStatusStep","_ref8","getImportStatus","showImportStatusStep","getImportStatusPageDisclaimer","getOverwriteImportStatusOrderToStepTitleMap","componentDidUpdate","location","isInit","importType","Single","showMerchantCenterStoreMappingStep","importStatus","startStep","hideProgressList","showCouponBanner","showCouponLightbox","uniqueImportGUID","generateGuid","showSmartCampaignGoogleLoginStep","showESCGoogleLoginStep","initialize","getImportScope","ImportScope","willFetchData","checkRequiredDeps","loginPerfMarker","setFacScheduleInvalid","toggleShowImportSummary","toggleShowImportStatusStep","toggleMerchantCenterStoreMappingStep","toggleCampaignsSelectionStep","aid","SmartImportRepository","window","DynamicPermissions","FacCalloutRevamp","CurrentAccount","AccountMode","ACCOUNT_MODE","UNIFIED_SMART","SMART","constructSteps","googleAccountSubPath","bingAccountSubPath","bingAccountSubStepEnabled","getGoogleAccountsStep","_ref9","getMerchantCenterStoreMappingStep","_ref6","importAccountCurrencyTitle","getGoogleImportOptionsStep","_ref10","getSmartCampaignGoogleLoginStep","_ref11","getESCGoogleLoginStep","memoize","tapCatch","_this$repository","scenarioName","classnames","minHeight","flexDirection","FacCallout","onActivate","userPreferenceService","UserPreference","Scenario","BaseImportCore","stepConstants","loginRepository","handleCancelButtonClick","customCancelButtonClickHandler","redirectToCampaigns","HotelCenterAssignment","globalContext","define","dataStore","require","edm","requireDefault","_getHotelCenterServic","getHotelCenterService","gridOptionUtils","bulkEditParams","bulkEditService","templateMap","messageView","messageViewTemplate","hotelGroupInfo","hotelGroupInfoTemplate","attentionView","attentionViewTemplate","InformationView","_DeterministicView","_ref$name","isDismiss","DeterministicView","EditControl","entity","field","description","errorMessage","hotelNameInput","InputControl","ariaLabelledby","CustomFilterView","onRemoveFilterLinkClicked","removeFilterLinkClickedEvent","crossPageSelectAllPlugin","HotelViewBase","hotelGroupInformation","groupName","setChild","groupId","excludeGroupId","showEditMenu","subAccountId","isSubAccountSelected","getChild","model","gridFactory","pgrid","toolbarPlugin","paginationPlugin","uiBlockerPlugin","crossPageSelectAll","isAllSelected","totalRowsTotalPageCount","getSelectedItems","filterAgent","filterService","getCombinedFilter","mapper","condition","pairs","pair","object","$and","omit","deselectAll","refresh","hotelCount","totalCountRows","helpers","updateView","searchTerm","setEditableFilter","searchPropertyName","$contains","_tryRenderFilterAndInsert","filterStateView","currentFilter","getFilter","filterValue","_removeSearchItems","appendTo","listenTo","onFilterRemoved","last","_clearSearchBox","removeEditableFilter","filterToolbar","update","crossPageSelectHeadRow","HotelOptionsBase","viewport","offset","rows","headRows","singleToolbarHeadRows","pagination","availablePageSizes","enableRandomPage","pageSizeText","totalPageCountText","uiBlocker","jsdata","bingadsGridColumn","HotelsInGroupOptions","_HotelOptionsBase","hotelGroupId","_ref$isUINext","isUINext","onSearchInvoked","entitySet","SubAccounts","$withKey","HotelGroups","Hotels","Hotel","cacheResponse","$select","OverridableToolbarView","toolbarId","gridToolbar","singleToolbar","dateFilter","isOdataActionSource","addDateChangeListener","marker","filterable","helpId","pageContext","dateFilterPreferences","_getHotelCenterShared","getHotelCenterShared","hotelGroupSchema","HotelGroup","subAccountSchema","SubAccount","HotelGroupModel","SubAccountModel","lightDismissible","dateFilterPlugin","initializeFilterAgent","tabView","FilterAgent","toolbarView","updateGridQuery","showFilterBar","_initialRenderFilter","getFilterConfig","schema","featureName","preferenceStoreFactory","preferenceService","sessionStore","getCommonFilterConfig","entitySchema","getFilters","globalConfig","enableCampaignWaterfall","editor","errorCodeToStringMap","CreateFailed","RenameFailed","DeleteFailed","SameValueAlreadyExist","GroupNotEmpty","InternalError","HotelsInGroupView","_HotelViewBase","statusMessageBar","statusMessage","onGroupEditMenuClicked","onGroupRenameMenuClicked","onGroupDeleteMenuClicked","gridOptions","newDateFilterPlugin","perfMarkerPlugin","selected","hotelSchema","originalEvent","noDismiss","_showPopup","_hidePopup","getSubAccountModel","getHotelGroupModel","inputName","vm","showRenameDialog","dialog","Dialog","setContent","buttons","appendChild","_UpdateNameAsync","isSuccess","updatedName","isUnDeletable","unDeletableDesc","inputContent","showDeleteDialog","_deleteCurrentGroupAsync","setErrorMessage","save","patch","destroy","HotelOutGroupOptions","AssociationEntity","HotelAssociation","url","quickFilter","HotelGroupId","$ne","HotelOutGroupView","_globalContext$requir","getCustomUserInfos","setCustomUserInfos","Permissions","project","HotelAssociations","isHotelCenterDeprecation","HotelCenterDeprecation","hotelsInGroup","hotelsOutGroup","onSelectionRenamed","onSelectionDeleted","onHotelInGroupSelectionChanged","onHotelOutGroupSelectionChanged","result","hasShowedAssociateAttention","onAssociate","onDisassociate","selectedGroup","ungroupedGroupId","selectedSubAccount","noSubAccount","isUnGrouped","setAssociationBarState","selections","showAssociateAttention","_makeAssociationCallAsync","selectionCount","getSelectionCount","idAttribute","clearSelection","_refreshAssociationButtonStates","isCrossPage","customStrFilter","_showAssociateAttentionDialog","params","batchActions","Actions","ActionType","Limit","Value","Property","EditCopy","Number","completeCB","failedCB","refreshGrid","errorCount","ErrorRowCount","filterOptionsFromSchema","searchBox","dataPostProcess","resources","attrs","subAccountIds","subAccountLists","ParentId","SubAccountId","SubAccountName","unshift","formatGroupItem","associationCount","paginationTemplate","pageNumberLabelText","filterState","isComparisonEnabled","isCustomRangeEnabled","tree","toggleColumnName","templateDecorator","celTemplate","attributeText","isRoot","HotelAssociationCount","GridOptions","getEntitySetByName","isSubAccountLevel","resource","afterFindAll","hotelGroup","local","hasChildren","nameTemplate","DownloadViewV1","ignoreServerPaginationPlugin","originalQuery","call","take","MAX_VALUE","fetchAssociations","disableDownload","onShowCreateDialog","onDownloadAssociations","treePlugin","onSelected","onGridUpdated","odataOptions","getUrlByName","findAll","hasDisabled","hasClass","localizedHeaders","downloadView","odataColumnNames","filterUrlParam","segmentationTypes","gridId","totalRecordCount","processReportRule","ReportRule","Selection","CampaignId","download","hotelGroupModel","_createHotelGroupAsync","savedResult","slice","deselectRow","childrenKeys","ungroupedGroup","itemWithKey","SubAccountHotelGroupEditPanelView","_BaseView","rootId","hotelGroups","preSelectedKey","onSubAccountClick","onHotelGroupClick","onCreateLinkClick","onSearchClear","onRenameSubaccountSubmit","onDeleteSubaccountSubmit","onRenameHotelGroupSubmit","onDeleteHotelGroupSubmit","SubAccountHotelGroupEditPanel","getElementById","BaseView","HotelGroupHasActiveAssociations","ValueTooLong","defaultSelection","editPanel","onCreateSubAccountLinkClick","onSubAccountRename","onSubAccountDelete","onHotelGroupRename","onHotelGroupDelete","refreshHotelGroups","editPanelElement","panelRoot","_ref$resetSelection","resetSelection","_ref$loadState","loadState","_ref$query","fetchHotelGroups","refreshTreeDataSource","setDefaultSelection","renderEditPanel","newHotelGroups","ungroup","Ungroup","group","UngroupId","UngroupName","queryOption","$top","$filter","_showError","focus","isbuttonDisabled","_showInfo","_handleModelError","alertCenter","App","views","showInfo","_this8","defaultSubAccount","getFirstSubaccount","stateSubAccountId","subAccount","getSubaccountById","subaccount","_this9","SelectedGroupId","SelectedGroupName","SelectedGroupAssociationCount","ChildrenKeys","UngroupChildId","SiblingKeys","SiblingUngroup","router","navigateToSetup","_this10","NewName","_this11","_this12","_this13","HotelGroupsUINext","hotelAssociations","onGroupModified","updateTitleBar","HotelCenterIntelligence","treeBarsData","bookingMenu","menu","getList","getViewNameById","sectionIndex","findWhere","UtilitesTreeBars","treeView","AccessibleTreeview","nodeTemplate","keyHierarchy","_keyHierarchy","groupIndex","subSectionIndex","rootNode","select","_getHotelCenterUtils","getHotelCenterUtils","inlineDownloadUtils","dateUtils","statusEnumMap","WARNINGS","PENDING","FAILURE","SUCCESS","GridConfig","dateFilterContainer","withoutTime","local2account","currentCustomer","Feeds","includeRanges","TravelFeed","formatDate","datetime","timeZone","toIANATimeZone","fromLegacyTimeZone","AccountTimeZone","downloadTemplate","isDisabled","odataTimeZone","enabledRangesPredicate","range","sharedInGrids","segmentationPreferences","preferencesService","CustomerIdType","schemas","schemaVnextArray","fetchPreferenceConfig","instrumentation","toolbarTemplate","jsdataBhc","FeedStatus","_ref$perfMarker","utilityPageScenario","utilityPage","itemOfElement","feedId","putil","find","feed","ReportUrl","loadFeedStatusGridActivity","loadFeedStatusGrid","clientSideSortPlugin","clientSidePaginationPlugin","trace","feedErrorMapper","FeedUploadGridOption","HotelFeed","messageTemplate","feedError","errorLink","matchingReportUri","linkText","UploadService","FeedUpload","isUploadEnabled","isUploading","isFeedPending","filePicker","FilePicker","theme","allowedFileExtensions","displayFilePath","gridOption","fetchPendingSeed","file","fileObject","HotelFeedUploadLocation","uploadLocation","blobSetting","SasUrl","uri","blobUri","newFeed","language","rawUri","originalFileName","$filePicker","$grid","where","limit","MatchReport","pageInitialize","onMatchReportDownload","hasResult","formatMatchReportRes","ingenstionTime","skeleton","matchedPercentage","formatPercent","machedCount","hotelsCount","versionInfo","submittedInfo","matchedInfo","overclusteredInfo","RANGES","CUSTOM","TODAY","YESTERDAY","THIS_WEEK_SUNDAY","THIS_WEEK_MONDAY","LAST_SEVEN_DAYS","LAST_WEEK_SUNDAY","LAST_WEEK_MONDAY","LAST_FOURTEEN_DAYS","THIS_MONTH","LAST_MONTH","LAST_THIRTY_DAYS","ALL_TIME","PerformanceReportBase","getTemplate","downloadButtonLocator","reportColumns","reportHeaders","p$daterange","initDateFilter","onReportDownload","dateFilterConfig","__proto__","dateFormat","primaryRange","getPromise","dateRange","DateFilter","getSelection","isForVNext","ShareOfVoiceReportView","_PerformanceReportBas","_ref$p$daterange","SOVPerfMarker","processReportRuleForHotelCenterBIDimensionRow","BookingReportView","bookingPerfMarker","processReportRuleForHotelCenterBookingRow","CalloutAdExtensionAssociationsView","WrappedPillControl","_DeterministicViewFor","PillControl","DeterministicViewForBackBoneView","WrappedCalloutAdExtensionAssociationsView","_DeterministicViewFor2","CalloutExtensionsView","_ref$isNewEntitySelec","isNewEntitySelector","associationsView","associationType","typeString","i18nHotelCenter","pillControl","intelligenceTreeBars","IntelligenceTreeBars","selectedSubSectionName","ShareOfVoice","BookingReport","HotelCenterOverview","all","TITLE_MAP","hotel","singular","plural","BulkEditBidMultiPanel","_BulkEditPanelBase","mainGrid","updateSelection","viewConfig","selectedRowCount","gridName","onEvent","bidMultipliersView","BidMultipliersView","completeToast","failedToast","activityName","bidMultipliers","Options","SearchString","multiplier","Factor","showRequestError","bulkEditView","disableAction","BulkEditPanelBase","BulkEditBidPanel","_ref$serverContext","isPPSPhase2Pilot","ReconciliationReport","bidStrategyView","BidStrategyView","isReadonly","enablePPS","bid","Amount","isBidValid","ERROR_MAP","BulkEditActionsForDifferentEntities","PreviewGridOptions","formatValue","formatDecimalToFixed","scrollable","virtual","getEntityWrapper","getOldValue","getNewValue","JobModel","appState","errorI18nKey","parseErrors","showProgress","initBulkEditView","BulkEditView","blockerEl","showPreview","getBulkEditParams","renderPreviewGrid","updatePreviewResults","jobModel","results","gridData","entityName","OriginalValue","NewValue","overViewPageScenario","overViewPage","onSave","preview","onPreview","_ref3$isPreview","isPreview","getBatchAction","pgridPlugins","selectionAcrossPage","successKey","partialSuccessKey","SuccessRowCount","TotalRowCount","toastConfirmation","success","total","toastWarning","failedKey","toastError","ViewModel","totalRowCount","successRowCount","errorRowCount","percentage","percent","toFixed","percentageWidth","percentageText","parent","progressCB","progressCb","saveText","cancelText","previewText","decimal","BID_TYPE","fixed","getBitTypeSet","Bid","uniq","BulkIncreaseDecreaseBidPanel","bidTypeSet","accountCurrency","percentSymbol","getFormat","unit","bidType","isBidCapEnabled","amount","bidCap","increase","decrease","bidNumberInput","bidPercentInput","bidCapNumberInput","bidCapPercentInput","bidInput","bidCapInput","oldState","backboneSchema","PercentageBid","initBidPercentInput","FixedBid","initBidNumberInput","initBidCapPercentInput","initBidCapNumberInput","readonly","childState","isBidCapValid","isBidNotZero","processError","errorMsgMap","EntityDoesNotExist","DefaultHotelGroupUpdateNotAllowed","DuplicateValues","InvalidValue","InvalidBidMultiplier","SwitchingofBidTypeFromPPStoNonPPSAndViceVersaIsNotAllowed","OnlySupportedBMValueIsDecreaseby100OrIncreaseby0","conversionColumns","parentProperty","conversionColumnList","s$i18n","DownloadView","biPerformanceColumns","_globalContext$requir3","ColumnsResource","Columns","SelectedColumnsResource","SelectedColumns","getColumnChooserConfig","columnsPrev","attributesColumns","performanceColumns","categories","selectOption","locked","customToolbarIcon","isHotelCenterGrid","selectColumn","HotelDimensionRow","filed","IsAvgPositionDeprecationPhase3Enabled","performanceLogNew","filteredContainer","filteredEmptyText","editable","columnChooser","inlineDownload","isAvailable","downloadFormats","ReportEmailRule","unset","CountryCodeGridOptions","_HotelBiGridOptionsBa","HotelBiGridOptionsBase","HotelDateGridOptions","HotelDeviceTypeGridOptions","i18nShared","_globalContext$requir4","HotelGridOptionsBase","onBulkEditChangeBids","onBulkEditChangeMultipliersBids","onBulkEditIncreseOrDecreseBids","customHeaderOffset","getGridName","selectable","prompt","bidPrompt","bidString","colClasses","bidMultipliersPrompt","bidMultiplierUtils","getMultipliersText","currentColumn","hotelNameColumnTemp","namePrompt","bulkEditDropdown","button","AdGroupId","newPosition","editorView","popupEditor","GridCustomizedPopupEditor","cellPosition","tableContainer","parentContainerSelector","renderBelow","refreshForGrid","refreshForSubAccountBar","triggerScrollbarRepositionOnElementHeightChange","bidEditor","bidEditorPromise","currentSubAccountId","SubAccountBidInlineEditView","renderPopupEditor","HotelBidInlineEditView","HotelGroupBidInlineEditView","bidMultipliersEditor","bidMultipliersEditorPromise","_ref12","SubAccountBidMultipliersInlineEditView","_ref13","HotelBidMultipliersInlineEditView","_ref14","HotelGroupBidMultipliersInlineEditView","_ref15","include","inlinePopupEditor","fields","hasLabels","saveModel","updated","inlineEditSubAccountName","subAccountModel","HotelGroupGridOptions","_HotelGridOptionsBase","searchBoxLabel","allColumns","HotelIdGridOptions","HotelSubAccountGridOptions","PPSPauseType","LengthOfStayGridOptions","PublisherCountryIdGridOptions","SlotTypeGridOptions","HotelAdvancedBookingGridOptions","HotelCheckinDayGridOptions","HotelDateTypeGridOptions","HotelSiteTypeGridOptions","BidCapPanelView","initBidCapView","fetch","capSelection","maximumBid","getBidCapText","budgetPageScenario","budgetPage","togglePopup","hidePopup","templateUINext","uiBlockerToken","saveBidCapActivity","saveBidCap","monitorAsync","bidCapView","BidCapView","BudgetPanelView","initBudgetInput","budgetModel","parse","getBudgetText","toJSON","saveBudgetActivity","saveBudget","BudgetModel","Budget","budgetInput","addonText","dailyBudget","SubAccountBidEdit","allowEmptyStrategy","editPanelView","EditPanelView","toggleVisibility","updateBidStrategyView","getBidText","subAccountBarScenario","subAccountBar","toggleClass","saveSubAccountBidActivity","saveSubAccountBid","bidText","bidAmount","bidStrategy","SubAccountBidMultipliersEdit","showUseParent","hasCleanButton","clean","updateBidMultipliersView","saveBidMultiplierActivity","saveBidMultiplier","deviceTypeMultipliers","errorInfo","getMultipliersState","emptyDeviceTypeAndCheckInDay","isPayPerStay","SubAccountBar","loadSubAccountInfoActivity","loadSubAccountInfo","subAccountName","defaultBid","defaultDeviceTypesWithMultipliers","formatSummaryBarBidMultiplier","hotelTotalCount","fromLocalToString","subAccountBidEdit","subAccountBidMultipliersEdit","hotelGroupTotalCount","budgetPanelView","bidCapPanelView","onAccountDefaultBidEdit","onAccountDefaultMultipliersBidEdit","multipliers","firstMultiplier","multiplierCount","groupCountLoader","hotelGroupCount","legacyI18n","columnChooserPlugin","newPerformanceLogPlugin","AccountService","hotelCenterOverviewGridMap","linkMenuLabelKey","biGridNames","preferenceConfig","_ref$navigationLevels","navigationLevels","_ref$extendPlugins","extendPlugins","pluginFactories","_ref$updateSelectedSu","updateSelectedSubaccount","refreshGridForUINext","jumpToReconReports","gridRefreshed","notificationApi","fetchPreference","extendPluginFactories","shouldSetUpGrid","isInitialGrid","ppsPauseNotificationShowed","onBodyClicked","HotelGroupInformationView","showHotelGroupInformation","currentLevel","shift","gridChooserItem","setupGrid","bulkEditBidPanel","restoreToolBar","initBulkEditBidPanel","bulkEditBidMultiPanel","initBulkEditBidMultiPanel","bulkIncreaseDecreaseBidPanel","initBulkIncreaseDecreaseBidPanel","onReconReportsLinkClicked","onGridMenuChooserClicked","linkedMenu","onGridLinkMenuClicked","onHotelGroupNameClicked","onSubAccountNameClicked","refreshSource","initializeCombinedFilterPromise","setUpSubAccountBar","renderGrid","hotelGroupName","onSubaccountChangedForUINext","itemClassName","currentTarget","classList","dismiss","floatingBanner","defaultOverviewGrid","defaultGridChooserItem","expandToolBar","drillDown","emptyBackboneView","overrideWith","restoreToolbar","click","hideToolbarForNewUI","empty","gridActivity","_this$model$attribute","showBulkChangeBid","showBulkChangeBidMultipliers","showBulkEditIncreseOrDecreseBids","loadHotelGroupGrid","loadHotelIdGrid","loadDeviceTypeGrid","loadDateGrid","loadLengthOfStayGrid","loadUserCountryGrid","loadSlotTypeGrid","loadHotelCountryGrid","loadAdvancedBookingGrid","loadCheckinDayGrid","DateTypeGridOptions","loadDateTypeGrid","SiteTypeGridOptions","loadSiteTypeGrid","loadSubAccountGrid","inlineDownloadWithoutFilterstateAndSegmentPlugin","editablePlugin","inlineErrorPlugin","defaultPlugins","_ref$useEditablePlugi","useEditablePlugin","plugin","getDefaultPlugins","useQuickFilterPlugin","extendedPlugins","pgridFactory","gridConfig","checkShowWarning","orderby","sortableHeader","setAtUserLevel","Data","sortInfo","selectedColumns","withConversions","onSubAccountBarChanged","showWarning","aTagBegin","aTagEnd","getAllFilters","gridsList","refreshGrids","summaryBarItemsEl","selectSubAccountId","accountService","fetchSubAccountAsync","renderTrunk","multiplierSchema","Multiplier","fixedBidSchema","percentageBidSchema","payPerStayBidSchema","PayPerStayBid","HotelModel","BidInlineEditView","_InlineEditView","inlineEditBidActivity","inlineEditHotelBid","InlineEditView","_BidInlineEditView","hotelModel","BidSource","_BidInlineEditView2","_BidInlineEditView3","processInlineEditChange","proto","Object","getPrototypeOf","properties","getOwnPropertyNames","processEditFunction","BidMultipliersInlineEditView","isUseParent","isCleanButtonDisabled","inlineEditHotelMultiplierActivity","inlineEditHotelMultiplier","BidMultipliers","isPayPerStayPhase2Pilot","_BidMultipliersInline","bidMultiplierSource","BidMultiplierSource","isSaveButtonDisabled","_BidMultipliersInline2","_BidMultipliersInline3","SetupView","AccountSetupView","subAccountNameInput","AccountInformationView","BudgetBidSetupView","accountInformationView","updateValidationState","HeaderView","HostView","budgetBid","initHeader","initAccountView","initBudgetBidView","subAccountSetupScenario","subAccountSetup","initializeWizard","activeStep","newStep","accountInfo","saveSubAccountActivity","saveSubAccount","closeSetupWizard","mapErrors","headerView","strings","switchStep","accountSetupView","accountFinished","budgetBidSetupView","budgetBidFinished","closeWizard","navigateToOverview","errorMap","BudgetAmountIsAboveLimit","BudgetAmountIsBelowLimit","MaxSubAccountLimitationReached","pick","first","pug","exports","locals","pug_html","locals_for_with","pug_interp","escape","pug_mixins","block","popupId","ariaLabelContext","arialLabelText","nextPageText","previousPageText","isAssociationEnabled","isDisassociationEnabled","depth","textPadding","toggleIconMargin","$$obj","pug_index0","$$l","bidCapLabel","isPercentage","bidCapUnit"],"sourceRoot":""}