{"version":3,"file":"static/js/application.async.non-landing~5d3f7ed2.7106375f.chunk.js","mappings":"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","sources":["../../../../feeds/packages/cron-frequency-editor/src/frequency.js","../../../../feeds/packages/cron-frequency-editor/src/get-cron-model.js","../../../../feeds/packages/cron-frequency-editor/src/extra/hour.js","../../../../feeds/packages/cron-frequency-editor/src/extra/daily-extra.js","../../../../feeds/packages/cron-frequency-editor/src/extra/day-of-week.js","../../../../feeds/packages/cron-frequency-editor/src/extra/weekly-extra.js","../../../../feeds/packages/cron-frequency-editor/src/extra/day-of-month.js","../../../../feeds/packages/cron-frequency-editor/src/extra/monthly-extra.js","../../../../feeds/packages/cron-frequency-editor/src/extra/extra.js","../../../../feeds/packages/cron-frequency-editor/src/cron-frequency-editor.js","../../../../feeds/packages/cron-frequency-editor/src/get-default-cron.js","../../../../feeds/packages/cron-frequency-editor/src/cron-frequency-editor-with-validation.js","../../../../fluctuation/packages/auction-insight-popup/src/instrumentation-schema.js","../../../../fluctuation/packages/auction-insight-popup/src/action-cause-container.js","../../../../fluctuation/packages/auction-insight-popup/src/auction-insight-log-service.js","../../../../fluctuation/packages/auction-insight-popup/src/auction-insight-popup.js","../../../../fluctuation/packages/auction-insight-popup/src/auction-insight-popup-factory.js","../../../../hotel-center/packages/hotel-center-assignment/index.js","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-center-service.js","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/Information-view.js","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/edit-control.js","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/custom-filter-view.js","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/hotel-view-base.js","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/hotel-options-base.js","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-in-group/grid-options.js","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-center-shared.js","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/filter-agent.js","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/filter-config.js","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-in-group/hotel-in-group.js","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-out-group/grid-options.js","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-out-group/hotel-out-group.js","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-associations/hotel-associations.js","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-groups/grid-options.js","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-groups/hotel-groups.js","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-groups/subaccount-hotelgroup-edit-panel-view.js","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-groups/hotel-groups-uinext.js","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-center-assignment.js","../../../../hotel-center/packages/hotel-center-intelligence/index.js","../../../../hotel-center/packages/hotel-center-intelligence/src/intelligence-sub-sections.js","../../../../hotel-center/packages/hotel-center-intelligence/src/intelligence-tree-bars.js","../../../../hotel-center/packages/hotel-center-intelligence/src/hotel-center-utils.js","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/feed-status/grid-config.js","../../../../hotel-center/packages/hotel-center-intelligence/src/hotel-center-shared.js","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/feed-status/feed-status.js","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/feed-upload/feed-error-map.js","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/feed-upload/grid-option.js","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/feed-upload/feed-upload.js","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/match-report/match-report.js","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/helper/performance-report-factory.js","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/share-of-voice-report/share-of-voice-report.js","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/booking-report/booking-report.js","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/callout-extensions/callout-extensions-view.js","../../../../hotel-center/packages/hotel-center-intelligence/src/hotel-center-intelligence.js","../../../../hotel-center/packages/hotel-center-overview/index.js","../../../../hotel-center/packages/hotel-center-overview/src/bulk-edit/bulk-edit-bid-multi-panel.js","../../../../hotel-center/packages/hotel-center-overview/src/bulk-edit/bulk-edit-bid-panel.js","../../../../hotel-center/packages/hotel-center-overview/src/bulk-edit/error-map.js","../../../../hotel-center/packages/hotel-center-overview/src/bulk-edit/preview-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/bulk-edit/bulk-edit-panel-base.js","../../../../hotel-center/packages/hotel-center-overview/src/bulk-edit/bulk-edit-toast.js","../../../../hotel-center/packages/hotel-center-overview/src/bulk-edit/bulk-edit-vm.js","../../../../hotel-center/packages/hotel-center-overview/src/bulk-edit/bulk-edit-view.js","../../../../hotel-center/packages/hotel-center-overview/src/bulk-edit/increase-decrease-bid-panel.js","../../../../hotel-center/packages/hotel-center-overview/src/error-mapping.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/hotel-center-conversion-columns.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/hotel-bi-grid-options-base.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/country-code-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/hotel-date-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/hotel-devicetype-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/hotel-grid-options-base.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/hotel-group-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/hotel-id-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/hotel-subaccount-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/length-stay-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/publisher-country-id-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/slot-type-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/advanced-booking-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/checkin-day-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/date-type-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/site-type-grid-options.js","../../../../hotel-center/packages/hotel-center-overview/src/subaccount-bar/bid-cap-panel.js","../../../../hotel-center/packages/hotel-center-overview/src/subaccount-bar/budget-panel.js","../../../../hotel-center/packages/hotel-center-overview/src/subaccount-bar/subaccount-bid-edit.js","../../../../hotel-center/packages/hotel-center-overview/src/subaccount-bar/subaccount-bid-multipliers-edit.js","../../../../hotel-center/packages/hotel-center-overview/src/subaccount-bar/subaccount-bar.js","../../../../hotel-center/packages/hotel-center-overview/src/hotel-center-overview.js","../../../../hotel-center/packages/hotel-center-overview/src/plugin-config.js","../../../../hotel-center/packages/hotel-center-overview/src/hotel-center-service.js","../../../../hotel-center/packages/hotel-center-overview/src/hotel-center-shared.js","../../../../hotel-center/packages/hotel-center-overview/src/hotel-center-utils.js","../../../../hotel-center/packages/hotel-center-overview/src/inline-edit/bid-inline-edit-view.js","../../../../hotel-center/packages/hotel-center-overview/src/inline-edit/inline-edit-view.js","../../../../hotel-center/packages/hotel-center-overview/src/inline-edit/multiplier-inline-edit-view.js","../../../../hotel-center/packages/hotel-center-setup/index.js","../../../../hotel-center/packages/hotel-center-setup/src/account-setup/account-view.js","../../../../hotel-center/packages/hotel-center-setup/src/hotel-center-shared.js","../../../../hotel-center/packages/hotel-center-setup/src/budget-bid-setup/budget-bid-view.js","../../../../hotel-center/packages/hotel-center-setup/src/header/header-view.js","../../../../hotel-center/packages/hotel-center-setup/src/host/host-view.js","../../dimensions-page/src/styles/dimensions-page-style.js","../../dimensions-page/src/legacy-deps-list.js","../../dimensions-page/src/utils.js","../../dimensions-page/src/filter-schema-processors/language-filter-processor.js","../../dimensions-page/src/filter-schema-processors/location-filter-processor.js","../../dimensions-page/src/filter-schema-processors/call-forwarding-filter-processor.js","../../dimensions-page/src/filter-schema-processors/age-and-gender-filter-processor.js","../../dimensions-page/src/filter-schema-processors/publisher-website-filter-processor.js","../../dimensions-page/src/filter-schema-processors/search-term-filter-processor.js","../../dimensions-page/src/filter-config.js","../../dimensions-page/src/additional-plugins.js","../../dimensions-page/src/dimensions-factory.js","../../dimensions-page/src/dimensions-data-source.js","../../dimensions-page/src/account-selector.js","../../dimensions-page/src/dimensions-page.js","../../dimensions-page/src/toolbar-config.js","../../dimensions-page/src/dimensions-shell.js","../../dimensions-page/src/common-dimensions-shell.js","../../hotel-center-page/src/page/overview/overview-grid-picker-config.js","../../hotel-center-page/src/page/overview/filter-config.js","../../hotel-center-page/src/page/overview/overview-bulk-edit.js","../../hotel-center-page/src/page/overview/extend-plugins.js","../../hotel-center-page/src/page/overview/overview-page-factory.js","../../hotel-center-page/src/style/intelligence-pages/intelligence-common-style.js","../../hotel-center-page/src/style/intelligence-pages/booking-report.js","../../hotel-center-page/src/style/intelligence-pages/share-of-voice.js","../../hotel-center-page/src/style/intelligence-pages/feed-status.js","../../hotel-center-page/src/style/intelligence-pages/index.js","../../hotel-center-page/src/style/overview-pages/overview-editor-styles.js","../../hotel-center-page/src/style/overview-pages/overview-common-style.js","../../hotel-center-page/src/style/overview-pages/override-pagination-style.js","../../hotel-center-page/src/page/overview/components/subaccount-selector.js","../../hotel-center-page/src/style/overview-pages/subaccount-selector-style.js","../../hotel-center-page/src/page/overview/components/subaccount-selector-panel.js","../../hotel-center-page/src/page/overview/overview-page.js","../../hotel-center-page/src/page/overview/toolbar-config.js","../../hotel-center-page/src/style/overview-pages/index.js","../../hotel-center-page/src/page/intelligence/ad-extension/grid-popover.js","../../hotel-center-page/src/page/intelligence/ad-extension/toolbar-config.js","../../hotel-center-page/src/page/intelligence/ad-extension/entity-selector-proxy.js","../../hotel-center-page/src/page/intelligence/ad-extension/grid-factory.js","../../hotel-center-page/src/page/intelligence/ad-extension/callout-extension-page.js","../../hotel-center-page/src/page/intelligence/ad-extension/association-config.js","../../hotel-center-page/src/style/intelligence-pages/callout-extension.js","../../hotel-center-page/src/page/intelligence/index.js","../../hotel-center-page/src/style/intelligence-pages/feed-upload.js","../../hotel-center-page/src/style/intelligence-pages/match-report.js","../../hotel-center-page/src/page/assignment-page.js","../../hotel-center-page/src/style/assignment-page-styles.js","../../hotel-center-page/src/page/set-up-page.js","../../hotel-center-page/src/style/setup-page-style.js","../../hotel-center-page/src/hotel-center-shell.js","../../hotel-center-processed-recon-report-page/src/index.js","../../hotel-center-processed-recon-report-page/src/style/index.js","../../hotel-center-recon-report-grid/src/grid-option.js","../../hotel-center-recon-report-grid/src/style/index.js","../../hotel-center-recon-report-grid/src/index.js","../../hotel-center-uploaded-recon-report-page/src/upload/api.js","../../hotel-center-uploaded-recon-report-page/src/upload/upload-input.js","../../hotel-center-uploaded-recon-report-page/src/upload/summary.js","../../hotel-center-uploaded-recon-report-page/src/upload/errorMap.js","../../hotel-center-uploaded-recon-report-page/src/index.js","../../hotel-center-uploaded-recon-report-page/src/style/index.js","../../import-schedule-page/src/constants/index.js","../../import-schedule-page/src/styles/import-callout-styles.js","../../import-schedule-page/src/styles/logs-grid-style.js","../../import-schedule-page/src/styles/schedule-grid-style.js","../../import-schedule-page/src/styles/common-styles.js","../../import-schedule-page/src/styles/index.js","../../imports-shared-styles/src/import-options-form-style.js","../../imports-shared-styles/src/import-summary-cell-style.js","../../imports-shared-styles/src/import-summary-tooltip-override-style.js","../../imports-shared-styles/src/import-table-override-style.js","../../imports-shell/src/repository.js","../../imports-shell/src/utils.js","../../imports-shell/src/styles/common-style.js","../../imports-shell/src/styles/google-import-page-style.js","../../imports-shell/src/facebook-import-page.js","../../imports-shell/src/google-import-page.js","../../imports-shell/src/styles/file-import-page-style.js","../../imports-shell/src/file-import-page.js","../../imports-shell/src/styles/multi-account-google-import-page-style.js","../../imports-shell/src/multi-account-google-import-page.js","../../imports-shell/src/styles/import-credential-id-page-style.js","../../imports-shell/src/import-credential-id-page.js","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/attention-info-template.pug","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/custom-filter-template.pug","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/custom-pagination-template.pug","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/edit-control-template.pug","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/hotel-group-info-template.pug","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/hotel-view-template.pug","../../../../hotel-center/packages/hotel-center-assignment/src/assignment-utils/message-view-template.pug","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-associations/template.pug","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-center-assignment-template.pug","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-groups/grid-column-name.pug","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-groups/template-uinext.pug","../../../../hotel-center/packages/hotel-center-assignment/src/hotel-groups/template.pug","../../../../hotel-center/packages/hotel-center-intelligence/src/hotel-center-intelligence-template.pug","../../../../hotel-center/packages/hotel-center-intelligence/src/intelligence-tree-bars-template.pug","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/booking-report/template.pug","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/callout-extensions/template.pug","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/feed-status/download-template.pug","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/feed-status/template.pug","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/feed-upload/column-message.pug","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/feed-upload/template.pug","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/match-report/template.pug","../../../../hotel-center/packages/hotel-center-intelligence/src/sub-sections/share-of-voice-report/template.pug","../../../../hotel-center/packages/hotel-center-overview/src/bulk-edit/bulk-edit-bid-multi-panel-template.pug","../../../../hotel-center/packages/hotel-center-overview/src/bulk-edit/bulk-edit-bid-panel-template.pug","../../../../hotel-center/packages/hotel-center-overview/src/bulk-edit/bulk-edit-template.pug","../../../../hotel-center/packages/hotel-center-overview/src/bulk-edit/increase-decrease-bid-panel-template.pug","../../../../hotel-center/packages/hotel-center-overview/src/grid-options/hotel-name-column.pug","../../../../hotel-center/packages/hotel-center-overview/src/hotel-center-overview-template.pug","../../../../hotel-center/packages/hotel-center-overview/src/inline-edit/bid-inline-edit-template.pug","../../../../hotel-center/packages/hotel-center-overview/src/inline-edit/inline-edit-view-template.pug","../../../../hotel-center/packages/hotel-center-overview/src/inline-edit/multiplier-inline-edit-template.pug","../../../../hotel-center/packages/hotel-center-overview/src/subaccount-bar/bid-cap-panel-ui-next-tempalte.pug","../../../../hotel-center/packages/hotel-center-overview/src/subaccount-bar/budget-panel-ui-next-template.pug","../../../../hotel-center/packages/hotel-center-overview/src/subaccount-bar/subaccount-bar-ui-next-template.pug","../../../../hotel-center/packages/hotel-center-overview/src/subaccount-bar/subaccount-bid-edit-template.pug","../../../../hotel-center/packages/hotel-center-overview/src/subaccount-bar/subaccount-bid-multi-edit-template.pug","../../../../hotel-center/packages/hotel-center-setup/src/account-setup/account-template.pug","../../../../hotel-center/packages/hotel-center-setup/src/budget-bid-setup/budget-bid-template.pug","../../../../hotel-center/packages/hotel-center-setup/src/header/header-template.pug","../../../../hotel-center/packages/hotel-center-setup/src/host/host-template.pug"],"sourcesContent":["import _ from 'underscore';\r\nimport React, { useState, memo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Select } from '@bingads-webui-react/primitive';\r\n\r\nexport const Frequency = memo(({\r\n id,\r\n cronFormatter,\r\n onChange,\r\n selected,\r\n className,\r\n enabledFrequencies,\r\n ariaLabelledby,\r\n}) => {\r\n const [selectedFrequency, setFrequency] = useState(selected.toString());\r\n\r\n const cronFrequencies = cronFormatter.getCronFrequenciesEnum();\r\n const noneFrequency = cronFrequencies.NONE;\r\n const frequencies = enabledFrequencies ?\r\n [noneFrequency, ...enabledFrequencies] : _.values(cronFrequencies);\r\n\r\n return (\r\n {\r\n const frequency = parseInt(event.target.value, 10);\r\n setFrequency(frequency.toString());\r\n onChange(frequency);\r\n }}\r\n aria-labelledby={ariaLabelledby}\r\n >\r\n {frequencies.map(frequency =>\r\n (\r\n \r\n {cronFormatter.formatCronFrequencyUpperCase(frequency)}\r\n \r\n ))}\r\n \r\n );\r\n});\r\n\r\nFrequency.propTypes = {\r\n id: PropTypes.string,\r\n className: PropTypes.string.isRequired,\r\n cronFormatter: PropTypes.shape({\r\n formatCronFrequency: PropTypes.func,\r\n }).isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n selected: PropTypes.number.isRequired,\r\n enabledFrequencies: PropTypes.arrayOf(PropTypes.number),\r\n ariaLabelledby: PropTypes.string,\r\n};\r\n\r\nFrequency.defaultProps = {\r\n id: undefined,\r\n enabledFrequencies: undefined,\r\n ariaLabelledby: '',\r\n};\r\n","export function getCronModel(cronFormatter, cron) {\r\n return cron ?\r\n cronFormatter.parse(cron) :\r\n { frequency: cronFormatter.getCronFrequenciesEnum().NONE };\r\n}\r\n","import _ from 'underscore';\r\nimport React, { useState, memo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Select } from '@bingads-webui-react/primitive';\r\n\r\nexport const Hour = memo(({\r\n classNamePrefix,\r\n cronFormatter,\r\n onChange,\r\n selected,\r\n ariaLabelledby,\r\n}) => {\r\n const [selectedHour, setHour] = useState(selected);\r\n const translations = cronFormatter.getHoursOfDay();\r\n\r\n return (\r\n {\r\n const hour = parseInt(event.target.value, 10);\r\n setHour(hour);\r\n onChange(hour);\r\n }}\r\n aria-labelledby={ariaLabelledby}\r\n >\r\n {_.range(0, 24).map(hour =>\r\n )}\r\n \r\n );\r\n});\r\n\r\nHour.propTypes = {\r\n classNamePrefix: PropTypes.string.isRequired,\r\n cronFormatter: PropTypes.shape({\r\n getHoursOfDay: PropTypes.func,\r\n }).isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n selected: PropTypes.number.isRequired,\r\n ariaLabelledby: PropTypes.string,\r\n};\r\n\r\nHour.defaultProps = {\r\n ariaLabelledby: '',\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Hour } from './hour';\r\n\r\nexport function DailyExtra({\r\n classNamePrefix,\r\n cronFormatter,\r\n hour,\r\n onChange,\r\n ariaLabelledby,\r\n}) {\r\n const { DAILY } = cronFormatter.getCronFrequenciesEnum();\r\n return (\r\n \r\n {i18n => (\r\n {\r\n onChange(cronFormatter.toCronString({\r\n frequency: DAILY,\r\n hour: selectedHour,\r\n }));\r\n }}\r\n selected={hour}\r\n ariaLabelledby={ariaLabelledby}\r\n />\r\n ),\r\n }}\r\n template={` ${i18n.getString(_TL_('CronFrequencyEditor_Daily_Template'))}`}\r\n />\r\n )}\r\n \r\n );\r\n}\r\n\r\nDailyExtra.propTypes = {\r\n classNamePrefix: PropTypes.string.isRequired,\r\n cronFormatter: PropTypes.shape({\r\n toCronString: PropTypes.func,\r\n }).isRequired,\r\n hour: PropTypes.number.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n ariaLabelledby: PropTypes.string,\r\n};\r\n\r\nDailyExtra.defaultProps = {\r\n ariaLabelledby: '',\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useState, memo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Select } from '@bingads-webui-react/primitive';\r\n\r\nexport const DayOfWeek = memo(({\r\n classNamePrefix,\r\n cronFormatter,\r\n onChange,\r\n selected,\r\n ariaLabelledby,\r\n}) => {\r\n const [selectedDayOfWeek, setDayOfWeek] = useState(selected);\r\n\r\n const translations = cronFormatter.getDaysOfWeek();\r\n\r\n return (\r\n {\r\n const dayOfWeek = parseInt(event.target.value, 10);\r\n setDayOfWeek(dayOfWeek);\r\n onChange(dayOfWeek);\r\n }}\r\n aria-labelledby={ariaLabelledby}\r\n >\r\n {_.range(0, 7).map(dayOfWeek =>\r\n )}\r\n \r\n );\r\n});\r\n\r\nDayOfWeek.propTypes = {\r\n classNamePrefix: PropTypes.string.isRequired,\r\n cronFormatter: PropTypes.shape({\r\n getDaysOfWeek: PropTypes.func,\r\n }).isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n selected: PropTypes.number.isRequired,\r\n ariaLabelledby: PropTypes.string,\r\n};\r\n\r\nDayOfWeek.defaultProps = {\r\n ariaLabelledby: '',\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { DayOfWeek } from './day-of-week';\r\nimport { Hour } from './hour';\r\n\r\nexport function WeeklyExtra({\r\n classNamePrefix,\r\n cronFormatter,\r\n dayOfWeek,\r\n hour,\r\n onChange,\r\n ariaLabelledby,\r\n}) {\r\n const { WEEKLY } = cronFormatter.getCronFrequenciesEnum();\r\n\r\n return (\r\n \r\n {i18n => (\r\n {\r\n onChange(cronFormatter.toCronString({\r\n dayOfWeek: selectedDayOfWeek,\r\n frequency: WEEKLY,\r\n hour,\r\n }));\r\n }}\r\n selected={dayOfWeek}\r\n ariaLabelledby={ariaLabelledby}\r\n />\r\n ),\r\n hour: (\r\n {\r\n onChange(cronFormatter.toCronString({\r\n dayOfWeek,\r\n frequency: WEEKLY,\r\n hour: selectedHour,\r\n }));\r\n }}\r\n selected={hour}\r\n ariaLabelledby={ariaLabelledby}\r\n />\r\n ),\r\n }}\r\n template={` ${i18n.getString(_TL_('CronFrequencyEditor_Weekly_Template'))}`}\r\n />\r\n )}\r\n \r\n );\r\n}\r\n\r\nWeeklyExtra.propTypes = {\r\n classNamePrefix: PropTypes.string.isRequired,\r\n cronFormatter: PropTypes.shape({\r\n toCronString: PropTypes.func,\r\n }).isRequired,\r\n dayOfWeek: PropTypes.number.isRequired,\r\n hour: PropTypes.number.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n ariaLabelledby: PropTypes.string,\r\n};\r\n\r\nWeeklyExtra.defaultProps = {\r\n ariaLabelledby: '',\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useState, memo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Select } from '@bingads-webui-react/primitive';\r\n\r\nexport const DayOfMonth = memo(({\r\n classNamePrefix,\r\n cronFormatter,\r\n onChange,\r\n selected,\r\n ariaLabelledby,\r\n}) => {\r\n const translations = cronFormatter.getDaysOfMonth();\r\n\r\n const [selectedDayOfMonth, setDayOfMonth] = useState(selected);\r\n\r\n return (\r\n {\r\n const dayOfMonth = parseInt(event.target.value, 10);\r\n setDayOfMonth(dayOfMonth);\r\n onChange(dayOfMonth);\r\n }}\r\n aria-labelledby={ariaLabelledby}\r\n >\r\n {_.range(1, 29).map(dayOfMonth =>\r\n )}\r\n \r\n );\r\n});\r\n\r\nDayOfMonth.propTypes = {\r\n classNamePrefix: PropTypes.string.isRequired,\r\n cronFormatter: PropTypes.shape({\r\n getDaysOfMonth: PropTypes.func,\r\n }).isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n selected: PropTypes.number.isRequired,\r\n ariaLabelledby: PropTypes.string,\r\n};\r\n\r\nDayOfMonth.defaultProps = {\r\n ariaLabelledby: '',\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { DayOfMonth } from './day-of-month';\r\nimport { Hour } from './hour';\r\n\r\nexport function MonthlyExtra({\r\n classNamePrefix,\r\n cronFormatter,\r\n dayOfMonth,\r\n hour,\r\n onChange,\r\n ariaLabelledby,\r\n}) {\r\n const { MONTHLY } = cronFormatter.getCronFrequenciesEnum();\r\n return (\r\n \r\n {i18n => (\r\n {\r\n onChange(cronFormatter.toCronString({\r\n dayOfMonth: selectedDayOfMonth,\r\n frequency: MONTHLY,\r\n hour,\r\n }));\r\n }}\r\n selected={dayOfMonth}\r\n ariaLabelledby={ariaLabelledby}\r\n />\r\n ),\r\n hour: (\r\n {\r\n onChange(cronFormatter.toCronString({\r\n dayOfMonth,\r\n frequency: MONTHLY,\r\n hour: selectedHour,\r\n }));\r\n }}\r\n selected={hour}\r\n ariaLabelledby={ariaLabelledby}\r\n />\r\n ),\r\n }}\r\n template={` ${i18n.getString(_TL_('CronFrequencyEditor_Monthly_Template'))}`}\r\n />\r\n )}\r\n \r\n );\r\n}\r\n\r\nMonthlyExtra.propTypes = {\r\n classNamePrefix: PropTypes.string.isRequired,\r\n cronFormatter: PropTypes.shape({\r\n toCronString: PropTypes.func,\r\n }).isRequired,\r\n dayOfMonth: PropTypes.number.isRequired,\r\n hour: PropTypes.number.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n ariaLabelledby: PropTypes.string,\r\n};\r\n\r\nMonthlyExtra.defaultProps = {\r\n ariaLabelledby: '',\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { getCronModel } from '../get-cron-model';\r\nimport { DailyExtra } from './daily-extra';\r\nimport { WeeklyExtra } from './weekly-extra';\r\nimport { MonthlyExtra } from './monthly-extra';\r\n\r\nexport function Extra({\r\n classNamePrefix,\r\n cronFormatter,\r\n cron,\r\n onChange,\r\n ariaLabelledby,\r\n}) {\r\n const {\r\n NONE, DAILY, WEEKLY, MONTHLY,\r\n } = cronFormatter.getCronFrequenciesEnum();\r\n const {\r\n frequency,\r\n dayOfMonth,\r\n dayOfWeek,\r\n hour,\r\n } = getCronModel(cronFormatter, cron);\r\n\r\n switch (frequency) {\r\n case DAILY:\r\n return (\r\n \r\n );\r\n case WEEKLY:\r\n return (\r\n \r\n );\r\n case MONTHLY:\r\n return (\r\n \r\n );\r\n case NONE:\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nExtra.propTypes = {\r\n classNamePrefix: PropTypes.string.isRequired,\r\n cronFormatter: PropTypes.shape({\r\n toCronString: PropTypes.func,\r\n }).isRequired,\r\n cron: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n ariaLabelledby: PropTypes.string,\r\n};\r\n\r\nExtra.defaultProps = {\r\n cron: undefined,\r\n ariaLabelledby: '',\r\n};\r\n","import React, { useState, memo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CronFormatter } from '@bingads-webui/cron-formatter';\r\nimport { Frequency } from './frequency';\r\nimport { Extra } from './extra/extra';\r\nimport { getCronModel } from './get-cron-model';\r\nimport { getDefaultCron } from './get-default-cron';\r\n\r\nexport const CronFrequencyEditor = memo(({\r\n id,\r\n cron,\r\n i18n,\r\n enabledFrequencies,\r\n onChange,\r\n ariaLabelledby,\r\n}) => {\r\n const [selectedCron, setCron] = useState(cron);\r\n\r\n const cronFormatter = new CronFormatter({ i18n });\r\n const onChangeCron = (newCron) => {\r\n onChange(newCron);\r\n setCron(newCron);\r\n };\r\n const onChangeFrequency = frequency =>\r\n onChangeCron(getDefaultCron(cronFormatter, frequency));\r\n\r\n const {\r\n frequency,\r\n } = getCronModel(cronFormatter, cron);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\nCronFrequencyEditor.propTypes = {\r\n id: PropTypes.string,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n cron: PropTypes.string,\r\n enabledFrequencies: PropTypes.arrayOf(PropTypes.number),\r\n onChange: PropTypes.func.isRequired,\r\n ariaLabelledby: PropTypes.string,\r\n};\r\n\r\nCronFrequencyEditor.defaultProps = {\r\n id: undefined,\r\n cron: undefined,\r\n enabledFrequencies: undefined,\r\n ariaLabelledby: '',\r\n};\r\n","export function getDefaultCron(cronFormatter, frequency) {\r\n const {\r\n NONE, DAILY, WEEKLY, MONTHLY, EVERY_6_HOURS, EVERY_12_HOURS,\r\n } = cronFormatter.getCronFrequenciesEnum();\r\n switch (frequency) {\r\n case NONE:\r\n return null;\r\n case DAILY:\r\n return '0 0 * * * *';\r\n case WEEKLY:\r\n return '0 0 * * 0 *';\r\n case MONTHLY:\r\n return '0 0 1 * * *';\r\n case EVERY_6_HOURS:\r\n return '0 */6 * * * *';\r\n case EVERY_12_HOURS:\r\n return '0 */12 * * * *';\r\n default:\r\n return null;\r\n }\r\n}\r\n","import { AdapterFactory, withValidation } from '@bingads-webui-react/validation';\r\nimport { CronFrequencyEditor } from './cron-frequency-editor';\r\n\r\nconst CronFrequencyEditorValidationAdapter = AdapterFactory({\r\n valueToInject: 'cron',\r\n});\r\n\r\nexport const CronFrequencyEditorWithValidation = withValidation(\r\n CronFrequencyEditor,\r\n CronFrequencyEditorValidationAdapter\r\n);\r\n","export const instrumentationSchema = {\r\n scenario: [{\r\n name: 'auctionInsight',\r\n value: 'auctionInsight',\r\n setting: {},\r\n activity: [\r\n {\r\n name: 'loadInsightAuctionInsightPage',\r\n value: 'loadInsightAuctionInsightPage',\r\n },\r\n {\r\n name: 'auctionInsightFeedback',\r\n value: 'auctionInsightFeedback',\r\n },\r\n {\r\n name: 'userAction',\r\n value: 'userAction',\r\n },\r\n ],\r\n }],\r\n};\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport URI from 'urijs';\r\nimport { getRoutePathById, allSiteMap, filterMapByRootIds } from '@bingads-webui-react/with-site-map';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport { Link } from '@bingads-webui-react/fabric-control';\r\n\r\nconst getCompetitionTabUrl = ({ context, accountId }) => {\r\n const competitionSiteMap = filterMapByRootIds(allSiteMap, 'competition');\r\n\r\n return new URI(getRoutePathById(competitionSiteMap, 'auction-insights'))\r\n .addQuery({\r\n cid: context.CurrentCustomer.Id,\r\n aid: accountId,\r\n uid: context.CurrentUser.Id,\r\n recsrc: 'MCCAuctionInsight',\r\n })\r\n .toString();\r\n};\r\n\r\nexport const ActionCauseContainer = ({\r\n i18n,\r\n accountsInfo,\r\n insightData,\r\n context,\r\n isDetailDomExpanded,\r\n onDetailDomShow,\r\n onDeepLinkClick,\r\n}) => {\r\n const { accountIds } = insightData;\r\n const title = i18n.getString(_TL_('Accounts where biggest impact can be made'));\r\n\r\n const accountNumberLink = (\r\n \r\n );\r\n\r\n const expandedDetailsDom = (\r\n
\r\n {_.map(accountIds, (accountId) => {\r\n const currentAccount = _.find(accountsInfo, account => account.Id === accountId);\r\n const linkUrl = getCompetitionTabUrl({ context, accountId });\r\n const actionInfo = {\r\n link: 'competition-auctioninsight',\r\n accountId,\r\n action: 'click',\r\n };\r\n return (\r\n \r\n onDeepLinkClick(actionInfo)}\r\n >\r\n {currentAccount.Name}\r\n \r\n
);\r\n })}\r\n \r\n );\r\n\r\n\r\n return (\r\n
\r\n
{title}
\r\n
\r\n \r\n
\r\n {isDetailDomExpanded && expandedDetailsDom}\r\n
\r\n );\r\n};\r\n\r\nActionCauseContainer.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n accountsInfo: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.number,\r\n Name: PropTypes.string,\r\n })).isRequired,\r\n insightData: PropTypes.shape({\r\n accountIds: PropTypes.arrayOf(PropTypes.number).isRequired,\r\n }).isRequired,\r\n context: PropTypes.shape({\r\n CurrentCustomer: PropTypes.shape({\r\n Id: PropTypes.number,\r\n }),\r\n CurrentUser: PropTypes.shape({\r\n Id: PropTypes.number,\r\n IsInternal: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n isDetailDomExpanded: PropTypes.bool.isRequired,\r\n onDetailDomShow: PropTypes.func.isRequired,\r\n onDeepLinkClick: PropTypes.func.isRequired,\r\n};\r\n","import { instrumentationSchema } from './instrumentation-schema';\r\n\r\nexport class AuctionInsightLogService {\r\n constructor(props) {\r\n const {\r\n instrumentation,\r\n } = props;\r\n instrumentation.addScenario(instrumentationSchema);\r\n const fluctuationScenario = instrumentation.auctionInsight.create();\r\n this.activities = {\r\n userActionActivity: fluctuationScenario.userAction.create(),\r\n feedbackActivity: fluctuationScenario.auctionInsightFeedback.create(),\r\n };\r\n }\r\n\r\n composeLogObj({\r\n eventType, insightData, context, note,\r\n }) {\r\n return {\r\n eventType,\r\n insightData,\r\n userId: context.CurrentUser.Id,\r\n customerId: context.CurrentCustomer.Id,\r\n isInternal: context.CurrentUser.IsInternal,\r\n note,\r\n };\r\n }\r\n\r\n logFeedback({ insightData, context, note }) {\r\n const logObject = this.composeLogObj({\r\n insightData,\r\n eventType: 'feedback',\r\n context,\r\n note,\r\n });\r\n this.activities.feedbackActivity.trace(`AuctionInsightLog: ${JSON.stringify(logObject)}`, 'AuctionInsightFeedback');\r\n }\r\n\r\n logAction({ insightData, context, note }) {\r\n const logObject = this.composeLogObj({\r\n insightData,\r\n eventType: 'userAction',\r\n context,\r\n note,\r\n });\r\n this.activities.userActionActivity.trace(`AuctionInsightLog: ${JSON.stringify(logObject)}`, 'AuctionInsightAction');\r\n }\r\n}\r\n","/* eslint-disable max-len */\r\nimport React, { useEffect, useState, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { MetricCounter,\r\n DescriptionContainer,\r\n CalloutWithAutoPlacement,\r\n InsightAction,\r\n ActionSubPanel,\r\n} from '@bingads-webui-campaign/fluctuation-common';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\n\r\nimport { instrumentationSchema } from './instrumentation-schema';\r\nimport { ActionCauseContainer } from './action-cause-container';\r\nimport { AuctionInsightLogService } from './auction-insight-log-service';\r\n\r\nexport const AuctionInsightPopup = ({\r\n i18n,\r\n legacyI18n,\r\n instrumentation,\r\n context,\r\n insightData,\r\n accountsInfo,\r\n onDismiss,\r\n triggerButton,\r\n}) => {\r\n const {\r\n startDate, endDate, metric, domainNumber,\r\n } = insightData;\r\n const dateRange = startDate === endDate ? startDate : `${startDate} - ${endDate}`;\r\n\r\n const [currentSubPanel, setCurrentSubPanel] = useState(ActionSubPanel.None);\r\n const [isDetailDomExpanded, setIsDetailDomExpanded] = useState(false);\r\n const activities = useRef({});\r\n const logService = new AuctionInsightLogService({ instrumentation });\r\n\r\n useEffect(() => {\r\n instrumentation.addScenario(instrumentationSchema);\r\n const fluctuationScenario = instrumentation.auctionInsight.create();\r\n activities.current = {\r\n userActionActivity: fluctuationScenario.userAction.create(),\r\n feedbackActivity: fluctuationScenario.auctionInsightFeedback.create(),\r\n };\r\n }, [instrumentation]);\r\n\r\n const domainNumberString = (\r\n {i18n.getString(_TL_('{{number}} domains'), { number: domainNumber })}\r\n );\r\n\r\n const description = (\r\n );\r\n\r\n const feedbackOptions = [\r\n {\r\n key: '0',\r\n text: i18n.getString(_TL_('This was helpful.')),\r\n name: 'feedback1',\r\n }, {\r\n key: '1',\r\n text: i18n.getString(_TL_('I disagree with this assessment.')),\r\n name: 'feedback2',\r\n },\r\n ];\r\n\r\n const onFeedbackSubmit = (log) => {\r\n const feedbackData = {\r\n Comment: log.comment,\r\n Feedbacks: log.feedbacks ? log.feedbacks.map((item) => {\r\n if (item === '0') {\r\n return 'InsightIsHelpful';\r\n }\r\n return 'DisagreeTheInsight';\r\n }) : [],\r\n };\r\n logService.logFeedback({\r\n insightData,\r\n context,\r\n note: feedbackData,\r\n });\r\n };\r\n\r\n const onDeepLinkClick = (actionInfo) => {\r\n logService.logAction({\r\n insightData,\r\n context,\r\n note: actionInfo,\r\n });\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n
{dateRange}
\r\n \r\n
\r\n \r\n setIsDetailDomExpanded(!isDetailDomExpanded)}\r\n onDeepLinkClick={onDeepLinkClick}\r\n />\r\n
\r\n setCurrentSubPanel(subPanel)}\r\n subPanels={[ActionSubPanel.FeedbackPanel]}\r\n feedbackOptions={feedbackOptions}\r\n learnMoreLinkTopic=\"51126\"\r\n />\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nAuctionInsightPopup.propTypes = {\r\n instrumentation: PropTypes.shape({\r\n addScenario: PropTypes.func,\r\n fluctuation: PropTypes.shape({\r\n create: PropTypes.func,\r\n }),\r\n }).isRequired,\r\n context: PropTypes.shape({\r\n CurrentCustomer: PropTypes.shape({\r\n Id: PropTypes.number,\r\n }),\r\n CurrentUser: PropTypes.shape({\r\n Id: PropTypes.number,\r\n IsInternal: PropTypes.bool,\r\n }),\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n formatDate: PropTypes.func,\r\n }).isRequired,\r\n legacyI18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n formatDate: PropTypes.func,\r\n }).isRequired,\r\n insightData: PropTypes.shape({\r\n startDate: PropTypes.string,\r\n endDate: PropTypes.string,\r\n metric: PropTypes.shape({\r\n name: PropTypes.string,\r\n value: PropTypes.string,\r\n }),\r\n accountIds: PropTypes.arrayOf(PropTypes.number),\r\n domainNumber: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n }).isRequired,\r\n accountsInfo: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.number,\r\n Name: PropTypes.string,\r\n })),\r\n onDismiss: PropTypes.func,\r\n triggerButton: PropTypes.instanceOf(Element).isRequired,\r\n};\r\n\r\nAuctionInsightPopup.defaultProps = {\r\n onDismiss: _.noop,\r\n accountsInfo: [{}],\r\n};\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { withLock, keyVault } from '@bingads-webui-react/popup-manager';\r\nimport { AuctionInsightPopup } from './auction-insight-popup';\r\nimport { instrumentationSchema } from './instrumentation-schema';\r\n\r\nexport function createAuctionInsightPopupFactory(props, placeholderElement) {\r\n const {\r\n onDismiss,\r\n instrumentation,\r\n context,\r\n } = props;\r\n\r\n instrumentation.addScenario(instrumentationSchema);\r\n const auctionInsightScenario = instrumentation.auctionInsight.create();\r\n const userActionActivity = auctionInsightScenario.userAction.create();\r\n\r\n const onOutsideClick = (e, srcTarget) => {\r\n if (e.target !== srcTarget) {\r\n /* istanbul ignore next */\r\n if (onDismiss) {\r\n onDismiss();\r\n }\r\n userActionActivity\r\n .trace(\r\n `Insight popup closed. cid: ${context.CurrentCustomer.Id}, uid: ${context.CurrentUser.Id}, isInternal: ${context.CurrentUser.IsInternal ? 'true' : 'false'}`,\r\n 'AuctionInsightAction'\r\n );\r\n ReactDOM.unmountComponentAtNode(placeholderElement);\r\n }\r\n };\r\n\r\n userActionActivity\r\n .trace(\r\n `Insight popup opened. cid: ${context.CurrentCustomer.Id}, uid: ${context.CurrentUser.Id}, isInternal: ${context.CurrentUser.IsInternal ? 'true' : 'false'}`,\r\n 'AuctionInsightAction'\r\n );\r\n\r\n const AuctionInsightPopupWithLock = withLock(AuctionInsightPopup, {\r\n lockKey: keyVault.clickingPopup,\r\n force: true,\r\n });\r\n\r\n ReactDOM.render(\r\n React.createElement(AuctionInsightPopupWithLock, {\r\n ...props,\r\n onDismiss: onOutsideClick,\r\n }),\r\n placeholderElement\r\n );\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","import { extend } from 'underscore';\r\nimport {\r\n paginationStyle,\r\n getColumnSolidBorderStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { pagePaddingStyle } from '@bingads-webui-campaign-react/page-padding-style';\r\n\r\nconst iconFontFamily = 'MsAds MDL2 Assets';\r\n\r\nexport const getDimensionsPageStyle = (_, { palette = {} }) => ({\r\n gridCustomStyles: getColumnSolidBorderStyle(0, 2),\r\n topGridPanelCustomStyles: paginationStyle({ palette, iconFontFamily }),\r\n '@global': extend({\r\n '.dimensions-table td.text-left': {\r\n wordWrap: 'break-word',\r\n wordBreak: 'break-word',\r\n },\r\n ...pagePaddingStyle(),\r\n }),\r\n accountSelectorPopover: {\r\n padding: 0,\r\n margin: 0,\r\n height: 0,\r\n width: 0,\r\n border: 0,\r\n '& .arrow': {\r\n display: 'none',\r\n },\r\n\r\n '& .hidden': {\r\n display: 'none',\r\n },\r\n\r\n '& .popover-content': {\r\n fontSize: 14,\r\n float: 'right',\r\n height: 0,\r\n padding: 0,\r\n margin: 0,\r\n\r\n '& .account-selector-popup': {\r\n height: 538,\r\n },\r\n },\r\n },\r\n\r\n customToolbarItem: {\r\n flex: '0 0 auto',\r\n border: 'none',\r\n height: 56,\r\n fontSize: 14,\r\n fontWeight: 'unset !important',\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n\r\n '& .text': {\r\n verticalAlign: 'text-bottom',\r\n },\r\n\r\n '& .caret': {\r\n height: 20,\r\n paddingLeft: 4,\r\n '&:before': {\r\n content: '\"\\\\E70D\"',\r\n fontFamily: iconFontFamily,\r\n },\r\n },\r\n },\r\n\r\n downloadIcon: {\r\n margin: '0 4px',\r\n color: palette.themeDarkAlt,\r\n\r\n '&:before': {\r\n content: '\"\\\\E896\"',\r\n fontFamily: iconFontFamily,\r\n },\r\n },\r\n});\r\n","/* eslint-disable import/extensions */\r\n/* eslint-disable import/no-unresolved */\r\n\r\nimport appConfig from '@bingads-webui-component-legacy/config/index';\r\nimport appState from '@bingads-webui-component-legacy/state/index';\r\nimport * as instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport * as columnChooserPreference from '@bingads-webui-component-legacy/bingads-grid/service/column-chooser-preferences';\r\nimport * as legacyColumnChooserPreference from '@bingads-webui-component-legacy/bingads-grid/service/legacy-column-chooser-preferences';\r\nimport * as customColumnPreference from '@bingads-webui-component-legacy/bingads-grid/service/custom-column-preferences';\r\nimport * as legacyGridFlagPreference from '@bingads-webui-component-legacy/bingads-grid/service/legacy-grid-flag-preferences';\r\nimport * as gridDownloadAdapter from '@bingads-webui-campaign-legacy/griddownload/view/adapter';\r\nimport * as edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\n\r\n\r\nconst i18nGlobal = window.globalLegacyI18n.get('component/i18n/loader!global');\r\nconst dimensionI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/dimension');\r\n\r\n\r\nexport const dimensionsGridLegacyDepsList = {\r\n 'component/edm-campaign/index': edm,\r\n 'component/js-data-campaign/index': jsdata,\r\n '$/i18n!global': i18nGlobal,\r\n 'campaignui/feature/instrumentation/index': instrumentation,\r\n 'component/state/index': appState,\r\n 'component/bingads-grid/service/column-chooser-preferences': columnChooserPreference,\r\n 'component/bingads-grid/service/legacy-column-chooser-preferences': legacyColumnChooserPreference,\r\n 'component/bingads-grid/service/custom-column-preferences': customColumnPreference,\r\n 'component/bingads-grid/service/legacy-grid-flag-preferences': legacyGridFlagPreference,\r\n 'campaignui/feature/griddownload/view/adapter': gridDownloadAdapter,\r\n '@bingads-webui/i18n-amd-loader!campaignui/feature/dimension': dimensionI18n,\r\n 'component/config/index': appConfig,\r\n};\r\n","export const filterOutCampaignAndAdgroupName = (scope, entitySchema) => {\r\n const entitySchemaCopy = entitySchema;\r\n if (scope.values.campaignId && entitySchemaCopy.properties.CampaignName) {\r\n entitySchemaCopy.properties.CampaignName.filterable = false;\r\n }\r\n if (scope.values.adGroupId && entitySchemaCopy.properties.AdGroupName) {\r\n entitySchemaCopy.properties.AdGroupName.filterable = false;\r\n }\r\n\r\n return entitySchemaCopy;\r\n};\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { filterOutCampaignAndAdgroupName } from '../utils';\r\n\r\nfunction lambdaConvertForLanguages(logic) {\r\n return (values) => {\r\n let url = '';\r\n\r\n _.each(values, (value, index) => {\r\n url += `contains(Language, '${value}')`;\r\n if (index !== values.length - 1) {\r\n url += ` ${logic} `;\r\n }\r\n });\r\n\r\n let finalurl = '';\r\n if (values.length > 0) {\r\n finalurl = `(${url})`;\r\n return finalurl;\r\n }\r\n return url;\r\n };\r\n}\r\n\r\nfunction getLanguagesItems(globalConfig, i18n) {\r\n const permissions = globalConfig.get('Permissions');\r\n\r\n if (permissions.IsDomesticSimplifiedChineseEnabled) {\r\n return _.all([{\r\n Id: 'ZH_HANS',\r\n Name: i18n.getString('Dimension_Lang_ZH_HANS'),\r\n }]);\r\n }\r\n\r\n let languageItems = [{\r\n Id: 'EN',\r\n Name: i18n.getString('Dimension_Lang_EN'),\r\n }, {\r\n Id: 'DA',\r\n Name: i18n.getString('Dimension_Lang_DA'),\r\n }, {\r\n Id: 'NL',\r\n Name: i18n.getString('Dimension_Lang_NL'),\r\n }, {\r\n Id: 'FI',\r\n Name: i18n.getString('Dimension_Lang_FI'),\r\n }, {\r\n Id: 'TH',\r\n Name: i18n.getString('Dimension_Lang_TH'),\r\n }, {\r\n Id: 'VI',\r\n Name: i18n.getString('Dimension_Lang_VI'),\r\n }, {\r\n Id: 'FR',\r\n Name: i18n.getString('Dimension_Lang_FR'),\r\n }, {\r\n Id: 'DE',\r\n Name: i18n.getString('Dimension_Lang_DE'),\r\n }, {\r\n Id: 'IT',\r\n Name: i18n.getString('Dimension_Lang_IT'),\r\n }, {\r\n Id: 'NB',\r\n Name: i18n.getString('Dimension_Lang_NO'),\r\n }, {\r\n Id: 'PT',\r\n Name: i18n.getString('Dimension_Lang_PT'),\r\n }, {\r\n Id: 'ES',\r\n Name: i18n.getString('Dimension_Lang_ES'),\r\n }, {\r\n Id: 'SV',\r\n Name: i18n.getString('Dimension_Lang_SV'),\r\n }, {\r\n Id: 'ZH-HANT',\r\n Name: i18n.getString('Dimension_Lang_ZH_HANT'),\r\n }];\r\n\r\n if (permissions.IsAdsGlobalizationPhase1Enabled) {\r\n languageItems = languageItems.concat([\r\n {\r\n Id: 'EL',\r\n Name: i18n.getString('Dimension_Lang_EL'),\r\n }, {\r\n Id: 'PL ',\r\n Name: i18n.getString('Dimension_Lang_PL'),\r\n }, {\r\n Id: 'BG',\r\n Name: i18n.getString('Dimension_Lang_BG'),\r\n }, {\r\n Id: 'HR',\r\n Name: i18n.getString('Dimension_Lang_HR'),\r\n }, {\r\n Id: 'CS',\r\n Name: i18n.getString('Dimension_Lang_CS'),\r\n }, {\r\n Id: 'ET',\r\n Name: i18n.getString('Dimension_Lang_ET'),\r\n }, {\r\n Id: 'HU',\r\n Name: i18n.getString('Dimension_Lang_HU'),\r\n }, {\r\n Id: 'LV',\r\n Name: i18n.getString('Dimension_Lang_LV'),\r\n }, {\r\n Id: 'LT',\r\n Name: i18n.getString('Dimension_Lang_LT'),\r\n }, {\r\n Id: 'MT',\r\n Name: i18n.getString('Dimension_Lang_MT'),\r\n }, {\r\n Id: 'RO',\r\n Name: i18n.getString('Dimension_Lang_RO'),\r\n }, {\r\n Id: 'SK',\r\n Name: i18n.getString('Dimension_Lang_SK'),\r\n }, {\r\n Id: 'SL',\r\n Name: i18n.getString('Dimension_Lang_SL'),\r\n },\r\n ]);\r\n }\r\n\r\n if (permissions.IsAdsGlobalizationPhase2Enabled) {\r\n languageItems = languageItems.concat([\r\n {\r\n Id: 'TR',\r\n Name: i18n.getString('Dimension_Lang_TR'),\r\n }, {\r\n Id: 'SR',\r\n Name: i18n.getString('Dimension_Lang_SR'),\r\n }, {\r\n Id: 'BS',\r\n Name: i18n.getString('Dimension_Lang_BS'),\r\n }, {\r\n Id: 'SQ',\r\n Name: i18n.getString('Dimension_Lang_SQ'),\r\n }, {\r\n Id: 'MK',\r\n Name: i18n.getString('Dimension_Lang_MK'),\r\n }, {\r\n Id: 'IS',\r\n Name: i18n.getString('Dimension_Lang_IS'),\r\n },\r\n ]);\r\n }\r\n\r\n if (permissions.IsAdsGlobalizationPhase6Enabled) {\r\n languageItems = languageItems.concat([\r\n {\r\n Id: 'AR',\r\n Name: i18n.getString('Dimension_Lang_AR'),\r\n },\r\n {\r\n Id: 'IW',\r\n Name: i18n.getString('Dimension_Lang_IW'),\r\n },\r\n {\r\n Id: 'RU',\r\n Name: i18n.getString('Dimension_Lang_RU'),\r\n },\r\n ]);\r\n }\r\n\r\n if (permissions.IsAdsGlobalizationPhase2JapanEnabled) {\r\n languageItems = languageItems.concat([\r\n {\r\n Id: 'JA',\r\n Name: i18n.getString('Dimension_Lang_JA'),\r\n },\r\n ]);\r\n }\r\n\r\n return _.sortBy(languageItems, language => language.Name);\r\n}\r\n\r\nclass LanaguageDataSource {\r\n constructor(options) {\r\n this.globalConfig = options.globalConfig;\r\n this.i18n = options.i18n;\r\n this.languages = getLanguagesItems(this.globalConfig, this.i18n);\r\n }\r\n\r\n get(_viewFilter, searchFilter) {\r\n if (!searchFilter) {\r\n return Promise.resolve(this.languages);\r\n }\r\n\r\n const searchFilterLowerCase = searchFilter.toLowerCase();\r\n const languagesToReturn =\r\n _.select(\r\n this.languages,\r\n language => language.Name.toLowerCase().includes(searchFilterLowerCase)\r\n );\r\n\r\n return Promise.resolve(languagesToReturn);\r\n }\r\n\r\n getByIds() {\r\n return Promise.resolve(this.languages);\r\n }\r\n}\r\n\r\nfunction updateEntitySchemaForCampaignLanguages({\r\n entitySchema,\r\n i18n,\r\n globalConfig,\r\n scope,\r\n}) {\r\n let entitySchemaCopy = entitySchema;\r\n\r\n entitySchemaCopy.properties.Language = {\r\n property: 'Languages',\r\n name: i18n.getString('ColumnName_Language'),\r\n title: i18n.getString('ColumnName_Language'),\r\n operatorDisplayNameMap: {\r\n containsany: i18n.getString('FilterOperator_ContainsAny'),\r\n },\r\n operators: ['containsany'],\r\n type: 'id',\r\n filterable: true,\r\n addtionalParams: {\r\n dataSource: new LanaguageDataSource({\r\n globalConfig,\r\n i18n,\r\n }),\r\n selectorOptions: {\r\n keyMap: {\r\n // eslint-disable-next-line camelcase\r\n Selector_Filter_Placeholder: () => i18n.getString('LanguageLabelText'),\r\n },\r\n },\r\n },\r\n };\r\n\r\n entitySchemaCopy = filterOutCampaignAndAdgroupName(scope, entitySchemaCopy);\r\n\r\n return entitySchemaCopy;\r\n}\r\n\r\nexport function updateOdataOptionsForCampaignLanguages(options) {\r\n const optionsCopy = options || { custom: {} };\r\n\r\n _.extendOwn(optionsCopy.custom, {\r\n Language: {\r\n containsany: lambdaConvertForLanguages('or'),\r\n },\r\n });\r\n return optionsCopy;\r\n}\r\n\r\n\r\nexport class DimensionsShoppingSchemaProcessor {\r\n constructor(options) {\r\n this.i18n = options.i18n;\r\n this.schemaI18nCampaign = options.schemaI18nCampaign;\r\n this.dataContextManager = options.dataContextManager;\r\n this.cacheService = options.cacheService;\r\n this.jsdata = options.jsdata;\r\n this.globalConfig = options.globalConfig;\r\n this.scope = options.scope;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updateEntitySchema = {\r\n properties: {\r\n },\r\n };\r\n\r\n _.each(entitySchema.properties, (schema) => {\r\n updateEntitySchema.properties[schema.originalProperty] = schema;\r\n });\r\n\r\n updateEntitySchema.name = entitySchema.name;\r\n\r\n updateEntitySchemaForCampaignLanguages({\r\n entitySchema: updateEntitySchema,\r\n i18n: this.i18n,\r\n schemaI18nCampaign: this.schemaI18nCampaign,\r\n dataContextManager: this.dataContextManager,\r\n cacheService: this.cacheService,\r\n jsdata: this.jsdata,\r\n globalConfig: this.globalConfig,\r\n scope: this.scope,\r\n });\r\n return updateEntitySchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n updateOdataOptionsForCampaignLanguages(odataOptions);\r\n return odataOptions;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { filterOutCampaignAndAdgroupName } from '../utils';\r\n\r\nfunction updateEntitySchemaForLocationType({\r\n entitySchema,\r\n i18n,\r\n scope,\r\n}) {\r\n let entitySchemaCopy = entitySchema;\r\n\r\n entitySchemaCopy.properties.TargetedLocationType = {\r\n property: 'TargetedLocationType',\r\n name: i18n.getString('ColumnName_TargetedLocationType'),\r\n title: i18n.getString('ColumnName_TargetedLocationType'),\r\n enumType: 'TargetedLocationType',\r\n enum: [0, 1, 2],\r\n type: 'string',\r\n enumValueMap: {\r\n 0: i18n.getString('Dimension_TargetLocationType_0'),\r\n 1: i18n.getString('Dimension_TargetLocationType_1'),\r\n 2: i18n.getString('Dimension_TargetLocationType_2'),\r\n },\r\n chooseType: 'checkbox',\r\n filterable: true,\r\n };\r\n\r\n entitySchemaCopy = filterOutCampaignAndAdgroupName(scope, entitySchemaCopy);\r\n\r\n return entitySchemaCopy;\r\n}\r\n\r\nexport class DimensionsLocationSchemaProcessor {\r\n constructor(options) {\r\n this.i18n = options.i18n;\r\n this.scope = options.scope;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updateEntitySchema = {\r\n properties: {\r\n },\r\n };\r\n\r\n _.each(entitySchema.properties, (schema) => {\r\n updateEntitySchema.properties[schema.originalProperty] = schema;\r\n });\r\n\r\n updateEntitySchema.name = entitySchema.name;\r\n\r\n updateEntitySchemaForLocationType({\r\n entitySchema: updateEntitySchema,\r\n i18n: this.i18n,\r\n scope: this.scope,\r\n });\r\n return updateEntitySchema;\r\n }\r\n}\r\n","import { filterOutCampaignAndAdgroupName } from '../utils';\r\n\r\nfunction updateEntitySchemaForCallStatus({\r\n entitySchema,\r\n i18n,\r\n scope,\r\n}) {\r\n let entitySchemaCopy = entitySchema;\r\n\r\n entitySchemaCopy.properties.CallStatus = {\r\n property: 'CallStatus',\r\n name: i18n.getString('ColumnName_CallStatus'),\r\n title: i18n.getString('ColumnName_CallStatus'),\r\n enumType: 'CallStatus',\r\n enum: [0, 1],\r\n type: 'string',\r\n enumValueMap: {\r\n 0: i18n.getString('Dimension_CallStatus_0'),\r\n 1: i18n.getString('Dimension_CallStatus_1'),\r\n },\r\n chooseType: 'checkbox',\r\n filterable: true,\r\n };\r\n\r\n entitySchemaCopy = filterOutCampaignAndAdgroupName(scope, entitySchemaCopy);\r\n\r\n return entitySchemaCopy;\r\n}\r\n\r\nexport class DimensionsCallForwardingSchemaProcessor {\r\n constructor(options) {\r\n this.i18n = options.i18n;\r\n this.scope = options.scope;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n updateEntitySchemaForCallStatus({\r\n entitySchema,\r\n i18n: this.i18n,\r\n scope: this.scope,\r\n });\r\n return entitySchema;\r\n }\r\n}\r\n","import { filterOutCampaignAndAdgroupName } from '../utils';\r\n\r\nfunction updateEntitySchemaForAgeGender({\r\n entitySchema,\r\n i18n,\r\n scope,\r\n}) {\r\n let entitySchemaCopy = entitySchema;\r\n\r\n entitySchemaCopy.properties.AgeGroup = {\r\n property: 'AgeGroup',\r\n name: i18n.getString('ColumnName_AgeGroup'),\r\n title: i18n.getString('ColumnName_AgeGroup'),\r\n enumType: 'AgeGroup',\r\n enum: [0, 1, 2, 3, 4, 5, 6, 7],\r\n type: 'string',\r\n enumValueMap: {\r\n 0: i18n.getString('Dimension_AgeGroup_0'),\r\n 1: i18n.getString('Dimension_AgeGroup_1'),\r\n 2: i18n.getString('Dimension_AgeGroup_2'),\r\n 3: i18n.getString('Dimension_AgeGroup_3'),\r\n 4: i18n.getString('Dimension_AgeGroup_4'),\r\n 5: i18n.getString('Dimension_AgeGroup_5'),\r\n 6: i18n.getString('Dimension_AgeGroup_6'),\r\n 7: i18n.getString('Dimension_AgeGroup_7'),\r\n },\r\n chooseType: 'checkbox',\r\n filterable: true,\r\n };\r\n\r\n entitySchemaCopy.properties.Gender = {\r\n property: 'Gender',\r\n name: i18n.getString('ColumnName_Gender'),\r\n title: i18n.getString('ColumnName_Gender'),\r\n enumType: 'Gender',\r\n enum: [0, 1, 2],\r\n type: 'string',\r\n enumValueMap: {\r\n 0: i18n.getString('Dimension_Gender_0'),\r\n 1: i18n.getString('Dimension_Gender_1'),\r\n 2: i18n.getString('Dimension_Gender_2'),\r\n },\r\n chooseType: 'checkbox',\r\n filterable: true,\r\n };\r\n\r\n entitySchemaCopy.properties.Medium = {\r\n property: 'Medium',\r\n name: i18n.getString('ColumnName_Medium'),\r\n title: i18n.getString('ColumnName_Medium'),\r\n enumType: 'Medium',\r\n enum: [0, 1, 2, 10, 11],\r\n type: 'string',\r\n enumValueMap: {\r\n 0: i18n.getString('Dimension_Medium_0'),\r\n 1: i18n.getString('Dimension_Medium_1'),\r\n 2: i18n.getString('Dimension_Medium_2'),\r\n 10: i18n.getString('Dimension_Medium_3'),\r\n 11: i18n.getString('Dimension_Medium_4'),\r\n },\r\n chooseType: 'checkbox',\r\n filterable: true,\r\n };\r\n\r\n entitySchemaCopy = filterOutCampaignAndAdgroupName(scope, entitySchemaCopy);\r\n\r\n return entitySchemaCopy;\r\n}\r\n\r\nexport class DimensionsAgeAndGenderSchemaProcessor {\r\n constructor(options) {\r\n this.i18n = options.i18n;\r\n this.scope = options.scope;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n updateEntitySchemaForAgeGender({\r\n entitySchema,\r\n i18n: this.i18n,\r\n scope: this.scope,\r\n });\r\n return entitySchema;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { filterOutCampaignAndAdgroupName } from '../utils';\r\n\r\nfunction updateEntitySchemaForNetwork({\r\n entitySchema,\r\n i18n,\r\n scope,\r\n}) {\r\n let entitySchemaCopy = entitySchema;\r\n\r\n entitySchemaCopy.properties.Network = {\r\n property: 'Network',\r\n name: i18n.getString('ColumnName_Network'),\r\n title: i18n.getString('ColumnName_Network'),\r\n enumType: 'Network',\r\n enum: [0, 1, 2, 3, 4, 5],\r\n type: 'string',\r\n enumValueMap: {\r\n 0: i18n.getString('Dimension_Network_0'),\r\n 1: i18n.getString('Dimension_Network_1'),\r\n 2: i18n.getString('Dimension_Network_2'),\r\n 3: i18n.getString('Dimension_Network_3'),\r\n 4: i18n.getString('Dimension_Network_4'),\r\n 5: i18n.getString('Dimension_Network_5'),\r\n },\r\n chooseType: 'checkbox',\r\n filterable: true,\r\n };\r\n\r\n entitySchemaCopy = filterOutCampaignAndAdgroupName(scope, entitySchemaCopy);\r\n\r\n return entitySchemaCopy;\r\n}\r\n\r\nexport class DimensionsPublisherWebsiteSchemaProcessor {\r\n constructor(options) {\r\n this.i18n = options.i18n;\r\n this.scope = options.scope;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updateEntitySchema = {\r\n properties: {\r\n },\r\n };\r\n\r\n _.each(entitySchema.properties, (schema) => {\r\n updateEntitySchema.properties[schema.originalProperty] = schema;\r\n });\r\n\r\n updateEntitySchema.name = entitySchema.name;\r\n\r\n updateEntitySchemaForNetwork({\r\n entitySchema: updateEntitySchema,\r\n i18n: this.i18n,\r\n scope: this.scope,\r\n });\r\n return updateEntitySchema;\r\n }\r\n}\r\n","\r\nimport _ from 'underscore';\r\nimport { filterOutCampaignAndAdgroupName } from '../utils';\r\n\r\n\r\n// Search term does not support ViewThroughConversions\r\nconst viewThroughConversionsPropList = [\r\n 'ViewThroughConversions',\r\n 'ViewThroughConversionsRevenue',\r\n 'ViewThroughConversionsCPA',\r\n 'ViewThroughConversionsReturnOnAdSpend',\r\n 'ViewThroughConversionsRate',\r\n];\r\n\r\nfunction updateEntitySchemaForCampaignType({\r\n entitySchema,\r\n i18n,\r\n scope,\r\n}) {\r\n let entitySchemaCopy = entitySchema;\r\n\r\n entitySchemaCopy.properties.CampaignCampaignType = {\r\n property: 'CampaignCampaignType',\r\n name: i18n.getString('ColumnName_CampaignCampaignType'),\r\n title: i18n.getString('ColumnName_CampaignCampaignType'),\r\n enumType: 'CampaignCampaignType',\r\n enum: [1, 3, 4, 6],\r\n type: 'string',\r\n enumValueMap: {\r\n 1: i18n.getString('Dimension_CampaignType_0'),\r\n 3: i18n.getString('Dimension_CampaignType_1'),\r\n 4: i18n.getString('Dimension_CampaignType_2'),\r\n 6: i18n.getString('Dimension_CampaignType_3'),\r\n },\r\n chooseType: 'checkbox',\r\n filterable: true,\r\n };\r\n\r\n entitySchemaCopy = filterOutCampaignAndAdgroupName(scope, entitySchemaCopy);\r\n\r\n return entitySchemaCopy;\r\n}\r\n\r\nexport class DimensionsSearchTermsSchemaProcessor {\r\n constructor(options) {\r\n this.i18n = options.i18n;\r\n this.scope = options.scope;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updateEntitySchema = {\r\n properties: {\r\n },\r\n };\r\n\r\n _.each(entitySchema.properties, (schema) => {\r\n if (viewThroughConversionsPropList.indexOf(schema.originalProperty) === -1) {\r\n updateEntitySchema.properties[schema.originalProperty] = schema;\r\n }\r\n });\r\n\r\n updateEntitySchema.name = entitySchema.name;\r\n\r\n updateEntitySchemaForCampaignType({\r\n entitySchema: updateEntitySchema,\r\n i18n: this.i18n,\r\n scope: this.scope,\r\n });\r\n\r\n return updateEntitySchema;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { LabelsDataSource } from '@bingads-webui-campaign/labels';\r\nimport { getCommonFilterConfig } from '@bingads-webui-campaign/common-grid-config';\r\nimport { DimensionsShoppingSchemaProcessor, updateOdataOptionsForCampaignLanguages } from './filter-schema-processors/language-filter-processor';\r\nimport { DimensionsLocationSchemaProcessor } from './filter-schema-processors/location-filter-processor';\r\nimport { DimensionsCallForwardingSchemaProcessor } from './filter-schema-processors/call-forwarding-filter-processor';\r\nimport { DimensionsAgeAndGenderSchemaProcessor } from './filter-schema-processors/age-and-gender-filter-processor';\r\nimport { DimensionsPublisherWebsiteSchemaProcessor } from './filter-schema-processors/publisher-website-filter-processor';\r\nimport { DimensionsSearchTermsSchemaProcessor } from './filter-schema-processors/search-term-filter-processor';\r\nimport { filterOutCampaignAndAdgroupName } from './utils';\r\n\r\nfunction getLabelId(value) {\r\n const newValue = JSON.parse(value);\r\n return newValue.Id ? newValue.Id : newValue;\r\n}\r\n\r\nfunction lambdaConvertForLabels(logic, operator) {\r\n return (values) => {\r\n let ids = '';\r\n\r\n _.each(values, (value, index) => {\r\n if (index > 0) {\r\n ids += ` ${logic} `;\r\n }\r\n ids += `LabelId ${operator} ${getLabelId(value)}`;\r\n });\r\n const url = `(${ids})`;\r\n return url;\r\n };\r\n}\r\n\r\nexport function updateEntitySchemaForLabels({\r\n entitySchema,\r\n schemaI18nCampaign,\r\n i18n,\r\n cacheService,\r\n scope,\r\n dataContextManager,\r\n jsdata,\r\n edm,\r\n}) {\r\n let entitySchemaCopy = entitySchema;\r\n entitySchemaCopy.properties.Labels = {\r\n property: 'Labels',\r\n name: schemaI18nCampaign.property('Campaign', 'Labels'),\r\n title: schemaI18nCampaign.property('Campaign', 'Labels'),\r\n operatorDisplayNameMap: {\r\n containsany: i18n.getString('FilterOperator_ContainsAny'),\r\n },\r\n operators: ['containsany'],\r\n type: 'id',\r\n addtionalParams: {\r\n dataSource: new LabelsDataSource({\r\n cacheService,\r\n dataContextManager,\r\n jsdata,\r\n scope,\r\n edm,\r\n }),\r\n },\r\n filterable: true,\r\n };\r\n\r\n entitySchemaCopy = filterOutCampaignAndAdgroupName(scope, entitySchemaCopy);\r\n}\r\n\r\nexport function updateOdataOptionsForLabels(options) {\r\n if (options) {\r\n const optionsCopy = { custom: {} };\r\n\r\n _.extendOwn(optionsCopy.custom, {\r\n Labels: {\r\n containsany: lambdaConvertForLabels('or', 'eq'),\r\n },\r\n });\r\n return optionsCopy;\r\n }\r\n return options;\r\n}\r\n/*\r\na custom schema processor\r\nboth single account and multiple account dimensions MT accepts the originalProperty as filter key\r\ne.g. MT accepts \"Impressions\" instead of \"PerformanceMetrics/Impressions\" or \"PerformanceMetricsImpressions\"\r\nthis custom schema processor returns the same schema but using originalProperty as key\r\n\r\nbelow original property,\r\n PerformanceMetricsImpressions: <- replaced to Impressions\r\n filterable: true\r\n name: \"PerformanceMetricsImpressions\"\r\n type: \"integer\"\r\n property: \"PerformanceMetrics/Impressions\"\r\n originalProperty: \"Impressions\"\r\n ...\r\n alias:\r\n legacy: \"Impressions\"\r\n\r\nis returned as below, only key is changed, all properties remain as is\r\n\r\n Impressions:\r\n filterable: true\r\n name: \"PerformanceMetricsImpressions\"\r\n type: \"integer\"\r\n property: \"PerformanceMetrics/Impressions\"\r\n originalProperty: \"Impressions\"\r\n ...\r\n alias:\r\n legacy: \"Impressions\"\r\n*/\r\nclass DimensionsSchemaProcessor {\r\n constructor(options) {\r\n this.scope = options.scope;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updateEntitySchema = {\r\n properties: {\r\n },\r\n };\r\n\r\n _.each(entitySchema.properties, (schema) => {\r\n updateEntitySchema.properties[schema.originalProperty] = schema;\r\n if (this.scope.values.campaignId && updateEntitySchema.properties.CampaignName) {\r\n updateEntitySchema.properties.CampaignName.filterable = false;\r\n }\r\n if (this.scope.values.adGroupId && updateEntitySchema.properties.AdGroupName) {\r\n updateEntitySchema.properties.AdGroupName.filterable = false;\r\n }\r\n });\r\n\r\n updateEntitySchema.name = entitySchema.name;\r\n\r\n return updateEntitySchema;\r\n }\r\n}\r\n\r\nclass DimensionsLablesSchemaProcessor {\r\n constructor(options) {\r\n this.i18n = options.i18n;\r\n this.schemaI18nCampaign = options.schemaI18nCampaign;\r\n this.dataContextManager = options.dataContextManager;\r\n this.cacheService = options.cacheService;\r\n this.jsdata = options.jsdata;\r\n this.scope = options.scope;\r\n this.edm = options.edm;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n updateEntitySchemaForLabels({\r\n entitySchema,\r\n i18n: this.i18n,\r\n schemaI18nCampaign: this.schemaI18nCampaign,\r\n dataContextManager: this.dataContextManager,\r\n cacheService: this.cacheService,\r\n jsdata: this.jsdata,\r\n scope: this.scope,\r\n edm: this.edm,\r\n });\r\n return entitySchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n updateOdataOptionsForLabels(odataOptions);\r\n return odataOptions;\r\n }\r\n}\r\n\r\nexport function getFilterConfig({\r\n entitySchema,\r\n i18n,\r\n sessionStore,\r\n preferenceStoreFactory,\r\n legacyGlobalI18n,\r\n schemaI18nCampaign,\r\n cacheService,\r\n dataContextManager,\r\n preferenceService,\r\n appConfig,\r\n scope,\r\n jsdata,\r\n featureName,\r\n edm,\r\n}) {\r\n let commonFeatureName = featureName;\r\n\r\n let dimensionsSchemaProcessor = new DimensionsSchemaProcessor({\r\n scope,\r\n });\r\n if (featureName.indexOf('Label') !== -1) {\r\n _.each(entitySchema.properties, (prop) => {\r\n // eslint-disable-next-line no-param-reassign\r\n prop.filterable = false;\r\n });\r\n const labelsEntitySchema = {\r\n properties: {\r\n Labels: {\r\n\r\n },\r\n },\r\n };\r\n\r\n dimensionsSchemaProcessor = new DimensionsLablesSchemaProcessor({\r\n entitySchema: labelsEntitySchema,\r\n i18n,\r\n schemaI18nCampaign,\r\n jsdata,\r\n dataContextManager,\r\n cacheService,\r\n scope,\r\n edm,\r\n });\r\n\r\n // use the same filter name for all dimensions labels pages\r\n // to share the saved filters.\r\n commonFeatureName = 'LabelReport';\r\n }\r\n\r\n if (featureName.indexOf('Shopping') !== -1) {\r\n dimensionsSchemaProcessor = new DimensionsShoppingSchemaProcessor({\r\n entitySchema,\r\n i18n,\r\n schemaI18nCampaign,\r\n jsdata,\r\n dataContextManager,\r\n cacheService,\r\n scope,\r\n globalConfig: appConfig,\r\n });\r\n }\r\n\r\n if (featureName.indexOf('CallForwardingDetailDimensionsGrid') !== -1) {\r\n dimensionsSchemaProcessor = new DimensionsCallForwardingSchemaProcessor({\r\n entitySchema,\r\n i18n,\r\n scope,\r\n });\r\n }\r\n\r\n if (featureName.indexOf('GeographicDimensionsGrid') !== -1) {\r\n dimensionsSchemaProcessor = new DimensionsLocationSchemaProcessor({\r\n entitySchema,\r\n i18n,\r\n scope,\r\n });\r\n }\r\n\r\n if (featureName.indexOf('AgeAndGenderDimensionsGrid') !== -1) {\r\n dimensionsSchemaProcessor = new DimensionsAgeAndGenderSchemaProcessor({\r\n entitySchema,\r\n i18n,\r\n scope,\r\n });\r\n }\r\n\r\n if (featureName.indexOf('PublisherWebsiteDimensionsGrid') !== -1) {\r\n dimensionsSchemaProcessor = new DimensionsPublisherWebsiteSchemaProcessor({\r\n entitySchema,\r\n i18n,\r\n scope,\r\n });\r\n }\r\n\r\n if (featureName.indexOf('SearchTermsDimensionsGrid') !== -1) {\r\n dimensionsSchemaProcessor = new DimensionsSearchTermsSchemaProcessor({\r\n entitySchema,\r\n i18n,\r\n scope,\r\n });\r\n }\r\n\r\n const filterConfig = getCommonFilterConfig({\r\n featureName: commonFeatureName,\r\n preferenceService,\r\n entitySchema,\r\n i18n,\r\n legacyGlobalI18n,\r\n sessionStore,\r\n preferenceStoreFactory,\r\n globalConfig: appConfig,\r\n schemaI18nCampaign,\r\n cacheService,\r\n dataContextManager,\r\n jsdata,\r\n editor: {},\r\n odata: {\r\n ignoreCase: false,\r\n },\r\n schemaProcessor: dimensionsSchemaProcessor,\r\n scope,\r\n edm,\r\n });\r\n\r\n return filterConfig;\r\n}\r\n\r\n// override odataOptionsProcessor and remove fieldMap from odataOptions\r\n// with fieldMap, jsdata data source replaces query key to its property name\r\n// e.g. \"Impressions\" => \"PerformanceMetrics/Impressions\"\r\n// single-account dimensions query is different than most of other grids\r\n// MT actually accepts \"Impressions\" so we don't need fieldMap for the extra translation\r\nexport const dimensionsFilterOdataOptionsProcessor = (odataOptions) => {\r\n // eslint-disable-next-line no-param-reassign\r\n odataOptions.fieldMap = null;\r\n\r\n // eslint-disable-next-line no-param-reassign\r\n odataOptions = updateOdataOptionsForLabels(odataOptions);\r\n return updateOdataOptionsForCampaignLanguages(odataOptions);\r\n};\r\n","import _ from 'underscore';\r\nimport { projectionGridScopeNavigator } from '@bingads-webui-campaign/projection-grid-scope-navigator';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\n\r\nconst { noop } = _;\r\n\r\nexport const getAdditionalPlugins = ({\r\n toolbarPlugin,\r\n scope,\r\n i18n,\r\n reportName,\r\n}) => (view) => {\r\n let isTimeGrid = false;\r\n if (reportName.indexOf('Time') !== -1) {\r\n isTimeGrid = true;\r\n }\r\n\r\n return [\r\n toolbarPlugin,\r\n {\r\n plugin: projectionGridScopeNavigator,\r\n config: scope,\r\n }, {\r\n plugin: placeholderPlugin,\r\n config: {\r\n container: '.dimensions-page .grid-noresult',\r\n text: isTimeGrid ? i18n.getString('Dimension_GridNoData') : i18n.getString('Grid_NoRecords'),\r\n filteredContainer: '.dimensions-page .grid-noresult',\r\n filteredEmptyText: i18n.getString('Grid_NoFilteredRecords'),\r\n get asyncEmptyText() {\r\n return view.tooMuchDataDownloadErrorText;\r\n },\r\n asyncCallback: () => Promise.resolve(view.showTooMuchDataError),\r\n },\r\n }, {\r\n plugin: definePlugin => definePlugin('filter', [], noop),\r\n }, {\r\n plugin: definePlugin => definePlugin('filterState', [], noop),\r\n },\r\n ];\r\n};\r\n","/* eslint-disable import/extensions */\r\n/* eslint-disable import/no-unresolved */\r\n\r\nimport Promise from 'bluebird';\r\nimport $ from 'jquery';\r\nimport { cloneDeep } from 'lodash';\r\nimport { noop, extend, defer } from 'underscore';\r\nimport { FilterService } from '@bingads-webui/filter-service';\r\nimport { getDimensionsGridFactory } from '@bingads-webui-campaign/dimensions-grid';\r\nimport { WaterfallFilterStorage, WaterfallFilterType, waterfallDateFilterProcessor } from '@bingads-webui-campaign/filter-storage';\r\nimport { getDimensionsGridConfig, Constants } from '@bingads-webui-campaign/dimensions-grids-config';\r\nimport {\r\n DimensionAgeGender,\r\n DimensionCallForwarding,\r\n DimensionGeographic,\r\n DimensionLanding,\r\n DimensionLocation,\r\n DimensionPublisher,\r\n DimensionSearchTerm,\r\n DimensionShopping,\r\n Time,\r\n KeywordLabelReport,\r\n AdLabelReport,\r\n AdGroupLabelReport,\r\n CampaignLabelReport,\r\n AccountLabelMccReport,\r\n} from '@bingads-webui-campaign/campaign-ui-schemas';\r\n\r\nimport * as edm from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport appConfig from '@bingads-webui-component-legacy/config/index';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\nimport cacheService from '@bingads-webui-static-legacy/cache-service';\r\nimport dataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport sessionStore from '@bingads-webui-component-legacy/js-data-storage/session-storage';\r\nimport * as preferenceStoreFactoryImport from '@bingads-webui-component-legacy/bingads-grid/service/filter-preferences';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\n\r\nimport { dimensionsGridLegacyDepsList } from './legacy-deps-list';\r\nimport { getFilterConfig, dimensionsFilterOdataOptionsProcessor } from './filter-config';\r\nimport { getAdditionalPlugins } from './additional-plugins';\r\n\r\n\r\nconst dimensionsPromiseFactory = () => new Promise((resolve) => {\r\n defer(() => {\r\n const dependecyList = dimensionsGridLegacyDepsList;\r\n\r\n getDimensionsGridFactory()(dependecyList)\r\n .then((result) => {\r\n resolve(result);\r\n });\r\n });\r\n});\r\n\r\nfunction promisifyDimensionSchemaLoader(schemaName) {\r\n return () => new Promise((res) => {\r\n const schemaCopy = cloneDeep(schemaName);\r\n if (schemaCopy.properties.PerformanceMetrics) {\r\n if (schemaCopy.properties.PerformanceMetrics.schema.properties.ViewThroughConversionsCPA) {\r\n delete schemaCopy.properties.PerformanceMetrics.schema.properties.ViewThroughConversionsCPA;\r\n }\r\n\r\n if (schemaCopy.properties.PerformanceMetrics.schema.properties.ViewThroughConversionsRevenue) {\r\n delete schemaCopy.properties.PerformanceMetrics.schema.properties.ViewThroughConversionsRevenue;\r\n }\r\n\r\n if (schemaCopy.properties.PerformanceMetrics.schema.properties.ViewThroughConversionsReturnOnAdSpend) {\r\n delete schemaCopy.properties.PerformanceMetrics.schema.properties.ViewThroughConversionsReturnOnAdSpend;\r\n }\r\n\r\n if (schemaCopy.properties.PerformanceMetrics.schema.properties.ViewThroughConversionsRate) {\r\n delete schemaCopy.properties.PerformanceMetrics.schema.properties.ViewThroughConversionsRate;\r\n }\r\n }\r\n\r\n res(schemaCopy);\r\n });\r\n}\r\n\r\nfunction getLevel(scope) {\r\n if (scope.values.adGroupId) {\r\n return Constants.AdgroupLevel;\r\n } else if (scope.values.campaignId) {\r\n return Constants.CampaignLevel;\r\n }\r\n return Constants.AccountLevel;\r\n}\r\n\r\nexport function createDimensionsGridForUiNext({\r\n serverContext,\r\n toolbarPlugin,\r\n preferenceService,\r\n scope,\r\n permissions,\r\n currentCampaign,\r\n currentAdGroup,\r\n perfMarker,\r\n gridName,\r\n gridType,\r\n customDataSource = null,\r\n willParentViewUnMount,\r\n}) {\r\n return new Promise((resolve) => {\r\n const campaignContext = {\r\n currentCampaign,\r\n currentAdGroup,\r\n };\r\n\r\n dimensionsPromiseFactory({\r\n serverContext,\r\n scope,\r\n permissions,\r\n campaignContext,\r\n preferenceService,\r\n }).then(({ createDimensionGrid }) => {\r\n const i18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/dimension');\r\n const globali18n = window.globalLegacyI18n.get('$/i18n!legacy/global');\r\n const preferenceStoreFactory = preferenceStoreFactoryImport.getFilters;\r\n // some of dependencies, such as error mapper, need this file.\r\n const schemaI18nCampaign = window.globalLegacyI18n.get('$/schema-i18n!campaign');\r\n const legacyGlobalI18n = window.globalLegacyI18n.get('$/i18n!global');\r\n\r\n const schemaLoaders = {\r\n getAgeSchema: promisifyDimensionSchemaLoader(DimensionAgeGender),\r\n getCallForwardingSchema: promisifyDimensionSchemaLoader(DimensionCallForwarding),\r\n getGeographicSchema: promisifyDimensionSchemaLoader(DimensionGeographic),\r\n getLandingSchema: promisifyDimensionSchemaLoader(DimensionLanding),\r\n getLocationSchema: promisifyDimensionSchemaLoader(DimensionLocation),\r\n getPublisherSchema: promisifyDimensionSchemaLoader(DimensionPublisher),\r\n getSearchTermSchema: promisifyDimensionSchemaLoader(DimensionSearchTerm),\r\n getShoppingSchema: promisifyDimensionSchemaLoader(DimensionShopping),\r\n getTimeSchema: promisifyDimensionSchemaLoader(Time),\r\n getKeywordsLabelSchema: promisifyDimensionSchemaLoader(KeywordLabelReport),\r\n getAdLabelSchema: promisifyDimensionSchemaLoader(AdLabelReport),\r\n getAdGroupLabelSchema: promisifyDimensionSchemaLoader(AdGroupLabelReport),\r\n getCampaignLabelSchema: promisifyDimensionSchemaLoader(CampaignLabelReport),\r\n getAccountLabelSchema: promisifyDimensionSchemaLoader(AccountLabelMccReport),\r\n };\r\n\r\n getDimensionsGridConfig({\r\n gridType,\r\n legacyDeps: {\r\n i18n: globali18n,\r\n jsDataCampaign: jsdata,\r\n edm,\r\n globalConfig: appConfig,\r\n deleteSchema: noop,\r\n getCurrentLevel: () => getLevel(scope),\r\n bingadsGridColumn,\r\n pageContext: PageContext,\r\n },\r\n schemaLoaders,\r\n newI18n: i18n,\r\n isForVNext: true,\r\n }).then((gridConfig) => {\r\n if (willParentViewUnMount()) {\r\n resolve({});\r\n return;\r\n }\r\n\r\n const reportName = gridConfig.getReportName();\r\n const filterConfig = getFilterConfig({\r\n entitySchema: gridConfig.getSchema(),\r\n i18n,\r\n sessionStore,\r\n preferenceStoreFactory,\r\n legacyGlobalI18n,\r\n schemaI18nCampaign,\r\n cacheService,\r\n dataContextManager,\r\n preferenceService,\r\n appConfig,\r\n scope,\r\n jsdata,\r\n featureName: `${reportName.trim()}DimensionsGrid`,\r\n isForVNext: true,\r\n edm,\r\n });\r\n\r\n filterConfig.odataOptionsProcessor = dimensionsFilterOdataOptionsProcessor;\r\n\r\n const filterService = new FilterService(filterConfig);\r\n const waterfallFilterStorage = new WaterfallFilterStorage({\r\n preferenceService,\r\n });\r\n if (customDataSource) {\r\n // eslint-disable-next-line no-param-reassign\r\n customDataSource.filterSchema = filterService.entitySchema.properties;\r\n }\r\n\r\n resolve({\r\n filterConfig,\r\n filterService,\r\n gridView: createDimensionGrid({\r\n filterService,\r\n getAdditionalPlugins: getAdditionalPlugins({\r\n toolbarPlugin,\r\n scope,\r\n reportName,\r\n i18n,\r\n }),\r\n scope: scope.values,\r\n addDateChangeListener: noop,\r\n p$daterange: () => {\r\n const dateFilter = waterfallDateFilterProcessor(\r\n waterfallFilterStorage.getFilters([WaterfallFilterType.DateFilter]),\r\n serverContext\r\n );\r\n return Promise.resolve(dateFilter);\r\n },\r\n gridType,\r\n entitySet: gridConfig.getEntitySet(),\r\n startDate: '',\r\n endDate: '',\r\n isForVNext: true,\r\n viewport: $('.dimensions-page'),\r\n perfMarker,\r\n customHeaderOffset: () => $('.sticky-container').height(),\r\n preferenceConfig: {},\r\n campaignContext,\r\n gridName,\r\n schema: gridConfig.getSchema(),\r\n columnChooserConfig: extend(gridConfig.getColumnChooserConfiguration(), {\r\n i18n,\r\n columns: gridConfig.getColumns(),\r\n }),\r\n reportName,\r\n customDataSource,\r\n reportSchema: gridConfig.getReportSchema(),\r\n preferenceService,\r\n appConfig,\r\n }),\r\n i18n: legacyGlobalI18n,\r\n appConfig,\r\n });\r\n });\r\n });\r\n });\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport OdataAdapter from '@bingads-webui/js-data-odata';\r\nimport { convertPredicatesToFilters } from '@bingads-webui-campaign/report-create';\r\nimport pgrid from 'projection-grid';\r\n\r\nconst { cloneDeep } = require('lodash');\r\n\r\n// keep polling task for 2 minutes until the task is completed\r\nconst InitialPollTimeout = 990;\r\nconst RepeatedPollTimeout = 2990;\r\nconst PollMaxRetry = 41;\r\nconst CheckStateInterval = 2990;\r\nconst CheckStateMaxRetry = 41;\r\n\r\nconst HoursToExpire = 2;\r\n\r\n// There is a column translation between Reporting columns and grid columns\r\n// e.g. Spend is recognized as TotalEffectiveCost in Reporting.\r\n// odata used to do the translation for UI, so UI always uses Spend\r\n// now reporting does not do the translation, so UI needs to do the translation\r\n// so UI can send columns to MT that it understands\r\nconst ReportingColumnMap = {\r\n // global map\r\n Spend: 'TotalEffectiveCost',\r\n\r\n ViewThroughConversionsRevenue: 'ViewThroughRevenue',\r\n ViewThroughConversionsCPA: 'ViewThroughCPA',\r\n ViewThroughConversionsReturnOnAdSpend: 'ViewThroughReturnOnAdSpend',\r\n ViewThroughConversionsRate: 'ViewThroughConversionRate',\r\n\r\n // per report-type map\r\n AgeAndGender: {\r\n EstimatedImpressions: 'Impressions',\r\n EstimatedImpressionRate: 'ImpressionRate',\r\n EstimatedClicks: 'Clicks',\r\n EstimatedClickRate: 'ClickRate',\r\n EstimatedConversions: 'Conversions',\r\n EstimatedConversionRate: 'ConversionRate',\r\n EstimatedAllConversions: 'AllConversions',\r\n EstimatedAllConversionRate: 'AllConversionRate',\r\n EstimatedCTR: 'CTR',\r\n },\r\n\r\n SearchTerms: {\r\n CampaignType: 'CampaignCampaignType',\r\n },\r\n};\r\n\r\n// vice versa, we need to translate data back to columns that UI understands\r\n// before sending the data to pgrid\r\nconst GridColumnMap = {\r\n // global map\r\n TotalEffectiveCost: 'Spend',\r\n\r\n ViewThroughRevenue: 'ViewThroughConversionsRevenue',\r\n ViewThroughCPA: 'ViewThroughConversionsCPA',\r\n ViewThroughReturnOnAdSpend: 'ViewThroughConversionsReturnOnAdSpend',\r\n ViewThroughConversionRate: 'ViewThroughConversionsRate',\r\n\r\n // per report-type map\r\n AgeAndGender: {\r\n Impressions: 'EstimatedImpressions',\r\n ImpressionRate: 'EstimatedImpressionRate',\r\n Clicks: 'EstimatedClicks',\r\n ClickRate: 'EstimatedClickRate',\r\n Conversions: 'EstimatedConversions',\r\n ConversionRate: 'EstimatedConversionRate',\r\n AllConversions: 'EstimatedAllConversions',\r\n AllConversionRate: 'EstimatedAllConversionRate',\r\n CTR: 'EstimatedCTR',\r\n },\r\n\r\n SearchTerms: {\r\n CampaignCampaignType: 'CampaignType',\r\n },\r\n};\r\n\r\nconst ReportAggregationMap = {\r\n TimeHourOfDay: 'HourOfDay',\r\n TimeDayOfWeek: 'DayOfWeek',\r\n // TimeDate: 'Summary', put here for completion\r\n TimeWeek: 'Weekly',\r\n TimeMonth: 'Monthly',\r\n TimeQuarter: 'Quarterly',\r\n TimeYear: 'Yearly',\r\n};\r\n\r\nconst DefaultReportDataRequestPayload = {\r\n '@odata.type': '#Model.ReportDataTaskItem',\r\n AttachFileToEmail: false,\r\n CampaignReportScopes: [],\r\n ClientApplicationType: 'ReportingUI',\r\n Cron: '',\r\n IsDVS: false,\r\n MaxRowCount: 0,\r\n Name: 'CampaignUI VNext Dimensions Report',\r\n RenderType: 'Table',\r\n SchemaName: '_Default',\r\n Type: 'DimensionTabReport',\r\n};\r\n\r\nconst taskItemsEntity = {\r\n class: 'TaskItems',\r\n endpoint: 'TaskItems',\r\n idAttribute: undefined,\r\n name: 'TaskItems',\r\n};\r\n\r\nconst taskItemExecutionEntity = {\r\n class: 'TaskItemExecution',\r\n endpoint: 'TaskItemExecution',\r\n idAttribute: undefined,\r\n name: 'TaskItemExecution',\r\n};\r\n\r\nconst NOT_STARTED = 0;\r\nconst RUNNING = 1;\r\nconst COMPLETED = 2;\r\nconst TIMED_OUT = 3;\r\nconst FAILED = 4;\r\n\r\nexport class DimensionsDataSource extends pgrid.dataSource.Base {\r\n constructor(props) {\r\n super('Id'); // pass in the key\r\n const {\r\n scope,\r\n serverContext,\r\n reportType,\r\n getSelectedScope,\r\n i18n,\r\n updateDownloadUrl,\r\n } = props;\r\n\r\n this.scope = scope;\r\n this.serverContext = serverContext;\r\n this.reportType = reportType;\r\n\r\n this.getSelectedScope = getSelectedScope;\r\n this.i18n = i18n;\r\n this.updateDownloadUrl = updateDownloadUrl;\r\n\r\n this.odataAdapter = new OdataAdapter();\r\n\r\n this.state = NOT_STARTED;\r\n this.pollRetry = 0;\r\n this.checkStateRetry = 0;\r\n\r\n // options is required by error-handlers\r\n this.options = {};\r\n }\r\n\r\n isTaskValid = (oldTime, newTime) => {\r\n // only check same day or next day as user session only lasts 20 hours\r\n let duration = newTime.getHours() - oldTime.getHours();\r\n if (duration < 0) {\r\n duration += 24;\r\n }\r\n return duration <= HoursToExpire;\r\n }\r\n\r\n paramChanged = param => !_.isEqual(this.oldParam.query, param.query)\r\n || !_.isEqual(this.oldParam.select, param.select)\r\n || !_.isEqual(this.oldParam.orderby, param.orderby)\r\n || !_.isEqual(this.oldParam.filter, param.filter);\r\n\r\n shouldUseExistingReport = (selectedScope, param) => this.taskId\r\n && this.oldTime\r\n && this.oldParam\r\n && !this.paramChanged(param)\r\n && _.isEqual(selectedScope, this.selectedScope)\r\n && this.isTaskValid(this.oldTime, new Date());\r\n\r\n query(param) {\r\n // clone param to avoid changing its value\r\n const paramClone = cloneDeep(param);\r\n\r\n // get selected account ids from dimensions page\r\n const selectedScope = this.getSelectedScope();\r\n\r\n if (this.shouldUseExistingReport(selectedScope, paramClone)) {\r\n // if we have valid task and still within time limit\r\n // directly pull this report without creating new data\r\n // this is to improve performace\r\n\r\n return new Promise((resolve, reject) => {\r\n resolve(this.getReportData(paramClone, reject));\r\n });\r\n }\r\n\r\n this.selectedScope = selectedScope;\r\n this.state = RUNNING;\r\n return new Promise((resolve, reject) => {\r\n this.createReport(paramClone, reject);\r\n\r\n const CheckState = () => {\r\n if (this.checkStateRetry === CheckStateMaxRetry) {\r\n reject();\r\n }\r\n this.checkStateRetry += 1;\r\n switch (this.state) {\r\n case COMPLETED:\r\n resolve(this.getReportData(paramClone, reject));\r\n break;\r\n case RUNNING:\r\n setTimeout(CheckState, CheckStateInterval);\r\n break;\r\n case TIMED_OUT:\r\n case NOT_STARTED:\r\n case FAILED:\r\n default:\r\n reject();\r\n }\r\n };\r\n\r\n // a loop to check state until it's either complete/timed out or it reaches retry limit\r\n CheckState();\r\n });\r\n }\r\n\r\n createReport(param, reject) {\r\n this.odataAdapter.create(\r\n taskItemsEntity,\r\n { ReportData: this.buildPayload(param) },\r\n this.buildOptions(`/Customers(${this.scope.values.cid})/TaskItems/SubmitReportDataTaskItem?$expand=TaskItemExecutions`)\r\n ).then((response) => {\r\n this.taskId = response.TaskItemExecutions[0].Id;\r\n setTimeout(this.pollTaskStatus.bind(this), InitialPollTimeout);\r\n }).catch((error) => {\r\n this.state = FAILED;\r\n reject(`create report failed with error ${error}`);\r\n });\r\n }\r\n\r\n pollTaskStatus() {\r\n if (this.pollRetry >= PollMaxRetry) {\r\n this.state = TIMED_OUT;\r\n return;\r\n }\r\n\r\n this.pollRetry += 1;\r\n\r\n this.odataAdapter.find(\r\n taskItemExecutionEntity,\r\n this.taskId,\r\n this.buildOptions(`/Customers(${this.scope.values.cid})/TaskItemExecutions(${this.taskId})/Default.PollReportDataTaskItemExecution`)\r\n ).then((response) => {\r\n switch (response.Status) {\r\n case 'PendingExecution':\r\n case 'InProgress':\r\n this.state = RUNNING;\r\n break;\r\n case 'Completed':\r\n this.updateDownloadUrl(response.ResultId);\r\n this.state = COMPLETED;\r\n break;\r\n case 'Failed':\r\n // eslint-disable-next-line no-fallthrough\r\n default:\r\n this.state = FAILED;\r\n }\r\n if (this.state === RUNNING) {\r\n // poll again after timeout\r\n setTimeout(this.pollTaskStatus.bind(this), RepeatedPollTimeout);\r\n }\r\n });\r\n }\r\n\r\n getReportData(param, reject) {\r\n if (this.state !== COMPLETED) {\r\n reject();\r\n }\r\n\r\n return this.odataAdapter.find(\r\n taskItemExecutionEntity,\r\n this.taskId,\r\n this.buildOptions(`/Customers(${this.scope.values.cid})/TaskItemExecutions(${this.taskId})/Default.ReportData()?$top=${param.take}&$skip=${param.skip}`)\r\n ).then((odata) => {\r\n // remove first row from data which is column definitions\r\n if (odata.value) {\r\n odata.value.shift();\r\n }\r\n\r\n // translate reporting columns back to grid columns for display\r\n // iterate each row then each cell in the row, replace key if it's found in the mapping\r\n // then return a new key: value pair entry to recreate the row\r\n odata.value = _.map(odata.value, row =>\r\n (_.map(Object.entries(row), ([column, value]) =>\r\n [this.translateColumn(GridColumnMap, column), value]).reduce((op, [column, value]) => {\r\n op[column] = value;\r\n return op;\r\n }, {})));\r\n\r\n const data = {\r\n items: odata.value || [],\r\n totalCount: odata['@odata.count'] || 0,\r\n };\r\n // only cache time and param if they're not set\r\n // or the param was set but changed\r\n // otherwise we'll infinitely push the timeout away\r\n if ((!this.oldTime && !this.oldParam) || this.paramChanged(param)) {\r\n this.oldTime = new Date();\r\n this.oldParam = param;\r\n }\r\n return data;\r\n });\r\n }\r\n\r\n buildPayload(param) {\r\n // generate dates\r\n const dateFormat = 'yyyy-MM-dd';\r\n const StartDate = this.i18n.formatDate(new Date(param.query.startDate), { raw: dateFormat });\r\n const EndDate = this.i18n.formatDate(new Date(param.query.endDate), { raw: dateFormat });\r\n\r\n // generate sorts\r\n // ignore sort column if it's not found in all selected columns\r\n const validSorts = _.filter(param.orderby, orderby => _.contains(param.select, orderby.key));\r\n const ReportSorts = _.map(validSorts, (orderby) => {\r\n const column = orderby.key;\r\n return {\r\n ReportColumn: this.translateColumn(ReportingColumnMap, column),\r\n SortDirection: orderby.direction === 1 ? 'ASCENDING' : 'DESCENDING',\r\n };\r\n });\r\n\r\n // generate filters\r\n // when there is only one filter, its format is like this\r\n // we need to push the only one into predicates\r\n // param.filter {\r\n // AdGroupName: {\r\n // $contains: '1'\r\n // }\r\n // }\r\n // when there is more than one filter, the format is different, an array\r\n // we need to concat the array to predicates\r\n // param.filter {\r\n // $and: [\r\n // AdGroupName: {\r\n // $contains: '1'\r\n // },\r\n // Clicks: {\r\n // $equals: 10\r\n // },\r\n // ]\r\n // }\r\n\r\n let predicates = [];\r\n if (param.filter) {\r\n _.each(param.filter, (filter) => {\r\n if (Array.isArray(filter)) {\r\n predicates = predicates.concat(filter);\r\n } else {\r\n predicates.push(param.filter);\r\n }\r\n });\r\n }\r\n\r\n // transform predicates from\r\n // EstimatedClicks: {\r\n // $eq: '1'\r\n // }\r\n // to\r\n // Clicks: {\r\n // $eq: '1'\r\n // }\r\n let processedPredicates = _.map(predicates, (predicate) => {\r\n const newPrediate = {};\r\n\r\n _.each(Object.keys(predicate), (key) => {\r\n newPrediate[this.translateColumn(ReportingColumnMap, key)] = predicate[key];\r\n });\r\n\r\n return newPrediate;\r\n });\r\n\r\n // transform schema from\r\n // schema: {\r\n // EstimatedClicks: {\r\n // name: 'EstimatedClicks',\r\n // originalProperty: 'EstimatedClicks',\r\n // property: 'EstimatedClicks',\r\n // ... other props\r\n // }\r\n // }\r\n // to\r\n // schema: {\r\n // Clicks: {\r\n // name: 'Clicks',\r\n // originalProperty: 'Clicks',\r\n // property: 'Clicks',\r\n // ... other props\r\n // }\r\n // }\r\n\r\n const processedSchema = {};\r\n\r\n _.each(Object.keys(this.filterSchema), (key) => {\r\n const newKey = this.translateColumn(ReportingColumnMap, key);\r\n\r\n // append Clicks to new schema instead of EstimatedClicks\r\n processedSchema[newKey] = this.filterSchema[key];\r\n\r\n // change newSchame.Clicks.name from EstimatedClicks to Clicks, so are originalProperty and property\r\n if (processedSchema[newKey].name && typeof processedSchema[newKey].name === 'string') {\r\n processedSchema[newKey].name = this.translateColumn(ReportingColumnMap, processedSchema[newKey].name);\r\n }\r\n if (processedSchema[newKey].originalProperty && typeof processedSchema[newKey].originalProperty === 'string') {\r\n processedSchema[newKey].originalProperty = this.translateColumn(ReportingColumnMap, processedSchema[newKey].originalProperty);\r\n }\r\n if (processedSchema[newKey].property && typeof processedSchema[newKey].property === 'string') {\r\n processedSchema[newKey].property = this.translateColumn(ReportingColumnMap, processedSchema[newKey].property);\r\n }\r\n });\r\n\r\n // preprocess filter into dimension MT expected format,\r\n // e.g. for number enums [1,2,3], turn them into strings ['1','2','3']\r\n\r\n processedPredicates = _.map(processedPredicates, (predicate) => {\r\n const propertyName = _.keys(predicate)[0];\r\n const propertySchema = processedSchema[propertyName];\r\n const propertyValueObject = predicate[propertyName];\r\n const operatorUi = _.keys(propertyValueObject)[0];\r\n const propertyValueUi = propertyValueObject[operatorUi];\r\n\r\n if (propertySchema.enum) {\r\n propertyValueObject[operatorUi] = propertyValueUi.map(String);\r\n } else if (propertySchema.type === 'string') {\r\n propertyValueObject[operatorUi] = [propertyValueUi];\r\n } else if (propertySchema.type === 'integer' || propertySchema.type === 'number') {\r\n propertyValueObject[operatorUi] = [propertyValueUi.toString()];\r\n } else if (propertySchema.type === 'id') {\r\n propertyValueObject[operatorUi] = propertyValueUi;\r\n }\r\n\r\n return predicate;\r\n });\r\n\r\n const valueHandledByCaller = true;\r\n const Filters = convertPredicatesToFilters(processedPredicates, processedSchema, valueHandledByCaller);\r\n\r\n const payload = {\r\n CustomerId: this.scope.values.cid,\r\n Filters,\r\n LCID: this.serverContext.CurrentUser.LocaleID,\r\n ReportAggregation: _.result(ReportAggregationMap, this.reportType, 'Summary'),\r\n // replace grid columns to Reporting columns\r\n ReportColumns: _.map(param.select, column =>\r\n this.translateColumn(ReportingColumnMap, column)),\r\n ReportOptions: 'IncludeColumnHeaders,IncludeReportFooter,IncludeReportHeader',\r\n ReportSorts,\r\n ReportTime: {\r\n StartDate,\r\n EndDate,\r\n },\r\n ReportType: this.reportType,\r\n TimeZoneId: this.serverContext.CurrentAccount.TimeZone,\r\n UserId: this.scope.values.uid,\r\n };\r\n\r\n // for customer level request, send CID in CustomerScopes\r\n // for account level request, send AIDs in AccountIds\r\n // these two are mutually exclusive\r\n if (!this.selectedScope.AccountIds || (this.selectedScope.AccountIds.length === 0)) {\r\n payload.CustomerScopes = [this.scope.values.cid];\r\n } else {\r\n payload.AccountIds = this.selectedScope.AccountIds;\r\n }\r\n\r\n _.defaults(payload, DefaultReportDataRequestPayload);\r\n\r\n return payload;\r\n }\r\n\r\n buildOptions(url) {\r\n return {\r\n ajaxOptions: {\r\n host: this.appConfig.get('odata.url'),\r\n path: this.appConfig.get('odata.multipart_path'),\r\n oDataToken: this.serverContext.Token,\r\n sessionId: this.serverContext.Omniture.SessionId,\r\n },\r\n edm: {\r\n types:\r\n {},\r\n },\r\n entitySet: {\r\n odataURL: url,\r\n navigation: {\r\n source: {\r\n type: {\r\n },\r\n },\r\n },\r\n $withKey: () => ({\r\n odataURL: url,\r\n }),\r\n },\r\n };\r\n }\r\n\r\n translateColumn(columnMap, column) {\r\n // first find a global match\r\n const globalMatch = _.result(columnMap, column, column);\r\n\r\n // check if there is per report-type map\r\n return _.result(columnMap[this.reportType], column, globalMatch);\r\n }\r\n}\r\n","/* eslint-disable react/jsx-no-bind */\r\nimport React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { MultipleAccountSelector } from '@bingads-webui-campaign-react/multiple-account-selector';\r\nimport { Button } from '@bingads-webui-react/primitive';\r\nimport { withPopover } from '@bingads-webui/filter-commons';\r\n\r\nconst MultipleAccountSelectorPopover = withPopover(MultipleAccountSelector);\r\n\r\n// popover state transition\r\n// on page loading:\r\n// this.state.masVisible: true\r\n// this.initialized: undefined\r\n// \"hidden\" is appended to popover class, popover is rendered and hidden (display:none)\r\n// user clicks account selector button for the first time\r\n// this.state.masVisible remains true\r\n// this.initialized becomes true\r\n// \"hidden\" is removed and popover immediately becomes visible because \"display:none\" is removed\r\n// user clicks Apply/Cancel/All Accounts\r\n// this.state.masVisible turns false, popover is dismissed and account selector is **destructed**\r\n// user clicks outside account selector\r\n// nothing happens, withPopover.props.onClose is no-op\r\n// user clicks All Accounts\r\n// this.state.masVisible turns true, popover is rendered with a **new** account selector\r\n// cc is called again to get customer tree\r\n\r\nexport class AccountSelector extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n masVisible: true,\r\n };\r\n }\r\n\r\n onMasSelectedChange = (selected) => {\r\n this.toggleMas();\r\n\r\n // inform dimensions page that selected accounts are updated\r\n this.props.updateSelected(selected);\r\n }\r\n\r\n onAccountSelectorButtonClick = () => {\r\n if (!this.initialized) {\r\n this.initialized = true;\r\n document.getElementById('account-selector-popover').classList.remove('hidden');\r\n } else {\r\n this.toggleMas();\r\n }\r\n }\r\n\r\n toggleMas() {\r\n this.setState({\r\n masVisible: !this.state.masVisible,\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n {this.props.description}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nAccountSelector.propTypes = {\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n aid: PropTypes.number,\r\n }),\r\n }).isRequired,\r\n serverContext: PropTypes.shape({\r\n ServicesEndpoints: PropTypes.object.isRequired,\r\n Permissions: PropTypes.object.isRequired,\r\n Token: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types\r\n updateSelected: PropTypes.func.isRequired,\r\n getSelectedScope: PropTypes.func.isRequired,\r\n description: PropTypes.string.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { bind, compose } from 'underscore';\r\nimport classNames from 'classnames';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { StyledGridViewWrapper } from '@bingads-webui-campaign-react/grid-view-wrapper';\r\nimport { withGlobalFilter } from '@bingads-webui-campaign-react/global-filter-context';\r\nimport { getToolbarEditor } from '@bingads-webui-campaign-react/toolbar-plugin';\r\nimport { FilterViewManagerWithGlobalFilterContext } from '@bingads-webui-campaign-react/filter-view-manager';\r\nimport { TopGridPanel } from '@bingads-webui-campaign-react/top-grid-panel';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { withTablePageStateManager } from '@bingads-webui-campaign-react/table-page-state-manager';\r\nimport { StyledTablePageContainer } from '@bingads-webui-campaign-react/table-page-container';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { download } from '@bingads-webui/download-service';\r\nimport { Button } from '@bingads-webui-react/primitive';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { AccountLabelMccReport } from '@bingads-webui-campaign/campaign-ui-schemas';\r\n\r\nimport { getDimensionsPageStyle } from './styles/dimensions-page-style';\r\nimport { createDimensionsGridForUiNext } from './dimensions-factory';\r\nimport { getToolbarConfig } from './toolbar-config';\r\nimport { DimensionsDataSource } from './dimensions-data-source';\r\nimport { AccountSelector } from './account-selector';\r\n\r\nconst StyledGridViewWrapperWithFilterContext = withGlobalFilter(StyledGridViewWrapper);\r\n\r\nclass DimensionsPage extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n const {\r\n permissions,\r\n scope,\r\n } = props;\r\n\r\n this.scope = scope;\r\n this.permissions = permissions;\r\n this.willUnMount = false;\r\n\r\n this.state = {\r\n selectedScope: [],\r\n backboneGridView: null,\r\n };\r\n\r\n this.createGrid();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.scope !== this.props.scope || prevProps.type !== this.props.type) {\r\n this.createGrid();\r\n }\r\n\r\n // when user switches report type from tree menu, toolbar could be forced hidden, e.g. column chooser was open\r\n // in this case column chooser did not get a chance to show toolbar on its dismiss\r\n // below action is needed to ensure toolbar is visible on new report\r\n if (prevProps.reportType !== this.props.reportType\r\n && this.props.forceHideToolbar\r\n && this.props.resetToolbarVisibility\r\n ) {\r\n this.props.resetToolbarVisibility({\r\n forceHideToolbar: false,\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.state.backboneGridView) {\r\n this.state.backboneGridView.remove();\r\n }\r\n this.willUnMount = true;\r\n }\r\n\r\n getHourOfDayErrorMessage() {\r\n return (\r\n \r\n
\r\n
\r\n
\r\n {this.props.i18n.getString(_TL_('The Hour of Day dimension will only show data for the past 6 months.'))}\r\n
\r\n
\r\n \r\n );\r\n }\r\n\r\n getFilterBar = ({\r\n filterConfig,\r\n filterService,\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n updateToolbar,\r\n resetToolbarVisibility,\r\n newI18n,\r\n isMultiAccountPage,\r\n }) => {\r\n const toolbarEditor = getToolbarEditor({\r\n toolbarConfig: { toolbarSelectedConfig, toolbarUnselectedConfig },\r\n updateToolbar,\r\n });\r\n\r\n this.toolbarEditor = toolbarEditor;\r\n\r\n let updateToolbarBinded;\r\n if (this.permissions.dynamic && this.permissions.dynamic.ToolbarViewStateFilterPills) {\r\n // BUG 4487899 - table-page-state-manager scheduled tasks are not being executed for landing pages page preventing toolbar render on update\r\n // Now that PredicateListReadonly is changed to PredicateListUneditable, there's a need to update the toolbar\r\n // more than once hence the implementation of predicateListReadonlyToolbarUpdated is not good enough.\r\n // Until BUG 4487899 is fixed - creating this updated implementation to be trigger render after each update.\r\n updateToolbarBinded = (value) => {\r\n bind(toolbarEditor.update, toolbarEditor)(value);\r\n this.predicateListToolbarUpdated(value);\r\n };\r\n } else {\r\n // add a callback predicateListReadOnlyToolbarUpdated so we can update the page when the readonly predicate list is rendered.\r\n // we've seen race condition that the readonly predicate list is rendered AFTER\r\n // the last DimensionsPage::render invoke from resizeGroupBase during page initialization,\r\n // so the + Add Filter becomes invisible\r\n updateToolbarBinded = compose(this.predicateListReadOnlyToolbarUpdated, bind(toolbarEditor.update, toolbarEditor));\r\n }\r\n\r\n if (isMultiAccountPage) {\r\n // initialize account selector button and download for multi-account scenarios\r\n this.toolbarEditor.update({\r\n id: 'account-selector-toolbar-item',\r\n content: this.state.selectedScope}\r\n description={this.props.i18n.getString(_TL_('All accounts'))}\r\n />,\r\n });\r\n\r\n this.toolbarEditor.update({\r\n id: 'multiaccount-download-toolbar-item',\r\n content:\r\n {\r\n if (this.multiAccountDownloadUrl &&\r\n this.multiAccountDownloadUrl.length) {\r\n // eslint-disable-next-line function-paren-newline\r\n notificationApi.showInfo(this.props.i18n.getString(\r\n _TL_('Download will be started shortly.')));\r\n\r\n download(this.multiAccountDownloadUrl);\r\n } else {\r\n // eslint-disable-next-line function-paren-newline\r\n notificationApi.showWarning(this.props.i18n.getString(\r\n _TL_('There was error to fetch report data, no report will be downloaded.')));\r\n }\r\n }}\r\n className={`${this.props.classes.customToolbarItem} download-button`}\r\n >\r\n \r\n \r\n {this.props.i18n.getString(_TL_('Download'))}\r\n \r\n ,\r\n });\r\n }\r\n\r\n if (this.willUnMount) {\r\n return {};\r\n }\r\n\r\n const {\r\n i18n,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n permissions,\r\n ...filterProps\r\n } = filterConfig;\r\n\r\n return ();\r\n }\r\n\r\n predicateListToolbarUpdated = (value) => {\r\n if (this.state.predicateListToolbarUpdated !== value) {\r\n this.setState({\r\n predicateListToolbarUpdated: value,\r\n });\r\n }\r\n }\r\n\r\n predicateListReadOnlyToolbarUpdated = () => {\r\n if (!this.state.predicateListReadOnlyToolbarUpdated) {\r\n this.setState({\r\n predicateListReadOnlyToolbarUpdated: true,\r\n });\r\n }\r\n }\r\n\r\n updateSelected = (selected) => {\r\n this.setState({\r\n selectedScope: selected,\r\n });\r\n if (this.state.backboneGridView && this.state.backboneGridView.gridView) {\r\n this.state.backboneGridView.gridView.refresh(true);\r\n }\r\n\r\n // update account selector button text\r\n this.toolbarEditor.update({\r\n id: 'account-selector-toolbar-item',\r\n content: this.state.selectedScope}\r\n description={selected.AccountIds && selected.AccountIds.length ?\r\n this.props.i18n.getString(_TL_('Multiple accounts selected')) :\r\n this.props.i18n.getString(_TL_('All accounts'))\r\n }\r\n />,\r\n });\r\n }\r\n\r\n updateMultiAccountDownloadUrl = (url) => {\r\n this.multiAccountDownloadUrl = url;\r\n };\r\n\r\n createGrid() {\r\n const {\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n updateToolbar,\r\n resetToolbarVisibility,\r\n serverContext,\r\n scope,\r\n preferenceService,\r\n permissions,\r\n toolbarPlugin,\r\n currentCampaign,\r\n currentAdGroup,\r\n onGridInjected,\r\n showTopOfGridPanel,\r\n reportType,\r\n perfMarker,\r\n type,\r\n } = this.props;\r\n\r\n this.viewport = React.createRef();\r\n this.willUnMount = false;\r\n\r\n if (this.state && this.state.backboneGridView) {\r\n this.state.backboneGridView.remove();\r\n }\r\n if (this.state) {\r\n this.setState({ backboneGridView: null, filterViewManager: null });\r\n } else {\r\n this.state = {\r\n backboneGridView: null,\r\n filterViewManager: null,\r\n };\r\n }\r\n const newI18n = this.props.i18n;\r\n const isMultiAccountPage = !scope.values.aid && reportType !== AccountLabelMccReport.name;\r\n\r\n // if aid is not in scope, create custom data source for customer scope\r\n const customDataSource = isMultiAccountPage ?\r\n new DimensionsDataSource({\r\n scope,\r\n serverContext,\r\n reportType,\r\n getSelectedScope: () => this.state.selectedScope,\r\n i18n: newI18n,\r\n updateDownloadUrl: this.updateMultiAccountDownloadUrl.bind(this),\r\n permissions,\r\n }) : null;\r\n\r\n const dimensionsGridPromise = createDimensionsGridForUiNext({\r\n serverContext,\r\n scope,\r\n preferenceService,\r\n permissions,\r\n toolbarPlugin,\r\n currentCampaign,\r\n currentAdGroup,\r\n viewport: this.viewport.current,\r\n gridName: 'summary_tab_dimensions',\r\n gridType: type,\r\n customDataSource,\r\n perfMarker,\r\n willParentViewUnMount: () => this.willUnMount,\r\n });\r\n\r\n const DimensionsGridView = React.lazy(() => { // eslint-disable-line arrow-body-style\r\n return dimensionsGridPromise.then(({\r\n gridView,\r\n filterService,\r\n i18n,\r\n appConfig,\r\n filterConfig,\r\n }) => {\r\n if (this.willUnMount) {\r\n return {};\r\n }\r\n\r\n gridView.overrideWith = showTopOfGridPanel; // eslint-disable-line no-param-reassign\r\n this.filterService = filterService;\r\n onGridInjected({\r\n backboneGridView: gridView,\r\n deselectAll: gridView.grid.gridView.deselectAll.bind(gridView.grid.gridView),\r\n });\r\n this.i18n = i18n;\r\n\r\n const filterViewManager = this.getFilterBar({\r\n filterService,\r\n filterConfig,\r\n newI18n,\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n updateToolbar,\r\n resetToolbarVisibility,\r\n isMultiAccountPage,\r\n });\r\n\r\n this.setState({ backboneGridView: gridView, filterViewManager });\r\n\r\n if (customDataSource) {\r\n customDataSource.appConfig = appConfig;\r\n }\r\n\r\n return {\r\n default: () => (),\r\n };\r\n }).bind(this);\r\n });\r\n\r\n this.dimensionsGrid = ();\r\n }\r\n\r\n render() {\r\n const {\r\n serverContext: {\r\n CurrentAccount: { TimeZone },\r\n },\r\n panelView,\r\n renderToolbarContainer,\r\n showTopGridPanel,\r\n } = this.props;\r\n const topGridPanel = showTopGridPanel ? (\r\n ) : null;\r\n\r\n const topOfGridContent = (\r\n }>\r\n {topGridPanel}\r\n \r\n );\r\n\r\n const stickyTopOfGridContent = (\r\n }>\r\n {renderToolbarContainer()}\r\n {this.state.filterViewManager}\r\n \r\n );\r\n\r\n const isHourOfDayGrid = this.props.reportType === 'TimeHourOfDay';\r\n\r\n return (\r\n }>\r\n {isHourOfDayGrid ? this.getHourOfDayErrorMessage() : null}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nDimensionsPage.propTypes = {\r\n type: PropTypes.number.isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n aid: PropTypes.number,\r\n }),\r\n }).isRequired,\r\n serverContext: PropTypes.shape({\r\n ServicesEndpoints: PropTypes.object.isRequired,\r\n Permissions: PropTypes.object.isRequired,\r\n Token: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types\r\n permissions: PropTypes.shape({}).isRequired,\r\n toolbarPlugin: PropTypes.shape({\r\n plugin: PropTypes.func.isRequired,\r\n }).isRequired,\r\n preferenceService: PropTypes.shape({}).isRequired,\r\n showTopOfGridPanel: PropTypes.func.isRequired,\r\n onGridInjected: PropTypes.func.isRequired,\r\n toolbarSelectedConfig: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types\r\n toolbarUnselectedConfig: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types\r\n updateToolbar: PropTypes.func.isRequired,\r\n resetToolbarVisibility: PropTypes.func.isRequired,\r\n panelView: PropTypes.func.isRequired,\r\n renderToolbarContainer: PropTypes.func.isRequired,\r\n showInlineChart: PropTypes.bool.isRequired,\r\n showTopGridPanel: PropTypes.bool.isRequired,\r\n forceHideToolbar: PropTypes.bool.isRequired,\r\n forceResetScrollFlag: PropTypes.bool.isRequired,\r\n currentCampaign: PropTypes.shape({}).isRequired,\r\n currentAdGroup: PropTypes.shape({}).isRequired,\r\n reportType: PropTypes.string.isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n};\r\n\r\nexport const StyledDimensionsPage = compose(\r\n withScope,\r\n withI18nConsumer,\r\n WrappedComponent => withDefaultStyles(WrappedComponent, getDimensionsPageStyle),\r\n withTablePageStateManager({ getToolbarConfig })\r\n)(DimensionsPage);\r\n","import { chain } from 'underscore';\r\nimport { AccountLabelMccReport } from '@bingads-webui-campaign/campaign-ui-schemas';\r\n\r\n/* global Map */\r\nexport function getToolbarConfig({\r\n scope, reportType,\r\n}) {\r\n const isLabelsAccountPage = reportType === AccountLabelMccReport.name;\r\n return {\r\n toolbarSelectedConfig: new Map(),\r\n toolbarUnselectedConfig: chain([\r\n ['predicate-list', {\r\n id: 'predicate-list',\r\n type: 'custom',\r\n }],\r\n ['expander', {\r\n type: 'expander',\r\n }],\r\n // only show account selector button when aid is not in scope\r\n (!scope.values.aid && !isLabelsAccountPage) && ['account-selector-toolbar-item', {\r\n id: 'account-selector-toolbar-item',\r\n type: 'custom',\r\n }],\r\n ['dropdown-column-chooser', {\r\n id: 'dropdown-column-chooser',\r\n type: 'dropdown',\r\n }],\r\n (scope.values.aid || isLabelsAccountPage) && ['button-download', {\r\n id: 'button-download',\r\n type: 'nav-item',\r\n iconLeftGlyphName: 'ba-Download',\r\n }],\r\n (!scope.values.aid && !isLabelsAccountPage) && ['multiaccount-download-toolbar-item', {\r\n id: 'multiaccount-download-toolbar-item',\r\n type: 'custom',\r\n }],\r\n ]).compact().reduce(\r\n (map, [key, value]) => {\r\n map.set(key, value);\r\n return map;\r\n },\r\n new Map()\r\n ).value(),\r\n };\r\n}\r\n","import React from 'react';\r\nimport { Route, Switch } from '@bingads-webui-campaign-react/router';\r\nimport { Constants } from '@bingads-webui-campaign/dimensions-grids-config';\r\nimport { triggerQualtricsEvent } from '@bingads-webui-campaign/qualtrics';\r\n\r\nimport { StyledDimensionsPage as DimensionsPage } from './dimensions-page';\r\n\r\nconst {\r\n LabelAdgroup,\r\n LabelKeyword,\r\n LabelAd,\r\n TimeHour,\r\n TimeDay,\r\n TimeDate,\r\n TimeWeek,\r\n TimeMonth,\r\n TimeQuarter,\r\n TimeYear,\r\n SearchQuery,\r\n UserLocation,\r\n Geographic,\r\n AgeGender,\r\n LandingPage,\r\n Publisher,\r\n CallDetails,\r\n ShoppingCategory,\r\n ShoppingProductType,\r\n ShoppingBrand,\r\n ShoppingItem,\r\n ShoppingStore,\r\n LabelCampaign,\r\n LabelAccount,\r\n} = Constants;\r\n\r\nconst DimensionsShell = React.memo((props) => {\r\n try {\r\n triggerQualtricsEvent('DimensionShellLoaded');\r\n } catch (e) {\r\n // Not a severe error\r\n }\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 }\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\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\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\n }\r\n />\r\n \r\n );\r\n});\r\n\r\n\r\nexport { DimensionsShell };\r\n","import React from 'react';\r\nimport { Route, Switch } from '@bingads-webui-campaign-react/router';\r\nimport { Constants } from '@bingads-webui-campaign/dimensions-grids-config';\r\nimport { triggerQualtricsEvent } from '@bingads-webui-campaign/qualtrics';\r\n\r\nimport { StyledDimensionsPage as DimensionsPage } from './dimensions-page';\r\n\r\nconst {\r\n TimeDay,\r\n TimeHour,\r\n TimeDate,\r\n TimeWeek,\r\n TimeMonth,\r\n TimeQuarter,\r\n TimeYear,\r\n LandingPage,\r\n Geographic,\r\n UserLocation,\r\n LabelCampaign,\r\n LabelAdgroup,\r\n LabelKeyword,\r\n LabelAd,\r\n LabelAccount,\r\n} = Constants;\r\n\r\nconst CampaignDimensionShell = React.memo((props) => {\r\n try {\r\n triggerQualtricsEvent('CampaignDimensionShellLoaded');\r\n } catch (e) {\r\n // Not a severe error\r\n }\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 }\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\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\nexport { CampaignDimensionShell };\r\n","const refreshGrid = (history, gridName) => {\r\n if (!history) {\r\n return;\r\n }\r\n history.push({\r\n pathname: `/campaign/vnext/hotelcenter/overview/${gridName.toLowerCase()}`,\r\n search: history.location.search,\r\n });\r\n};\r\n\r\nconst overviewGridPickeritems = ({ i18n, history, gridName, permissions }) => [{\r\n text: i18n.getString(_TL_('Hotel')),\r\n classes: gridName === 'HotelIdGrid' ? 'selected' : '',\r\n onClick: () => {\r\n refreshGrid(history, 'HotelIdGrid');\r\n },\r\n},\r\n{\r\n text: i18n.getString(_TL_('Hotel group')),\r\n classes: gridName === 'HotelGroupGrid' ? 'selected' : '',\r\n onClick: () => {\r\n refreshGrid(history, 'HotelGroupGrid');\r\n },\r\n},\r\n{\r\n text: i18n.getString(_TL_('Subaccount')),\r\n classes: gridName === 'HotelSubAccountGrid' ? 'selected' : '',\r\n disabled: permissions && permissions.dynamic.HotelCenterDeprecation,\r\n onClick: () => {\r\n refreshGrid(history, 'HotelSubAccountGrid');\r\n },\r\n},\r\n{\r\n text: i18n.getString(_TL_('Advanced booking window')),\r\n classes: gridName === 'AdvancedBookingGrid' ? 'selected' : '',\r\n onClick: () => {\r\n refreshGrid(history, 'AdvancedBookingGrid');\r\n },\r\n},\r\n{\r\n text: i18n.getString(_TL_('Check in day')),\r\n classes: gridName === 'CheckinDayGrid' ? 'selected' : '',\r\n onClick: () => {\r\n refreshGrid(history, 'CheckinDayGrid');\r\n },\r\n},\r\n{\r\n text: i18n.getString(_TL_('Date')),\r\n classes: gridName === 'HotelDateGrid' ? 'selected' : '',\r\n onClick: () => {\r\n refreshGrid(history, 'HotelDateGrid');\r\n },\r\n},\r\n{\r\n text: i18n.getString(_TL_('Date type')),\r\n classes: gridName === 'DateTypeGrid' ? 'selected' : '',\r\n onClick: () => {\r\n refreshGrid(history, 'DateTypeGrid');\r\n },\r\n},\r\n{\r\n text: i18n.getString(_TL_('Device type')),\r\n classes: gridName === 'HotelDeviceTypeGrid' ? 'selected' : '',\r\n onClick: () => {\r\n refreshGrid(history, 'HotelDeviceTypeGrid');\r\n },\r\n},\r\n{\r\n text: i18n.getString(_TL_('Hotel country/region')),\r\n classes: gridName === 'HotelCountryGrid' ? 'selected' : '',\r\n onClick: () => {\r\n refreshGrid(history, 'HotelCountryGrid');\r\n },\r\n},\r\n{\r\n text: i18n.getString(_TL_('Length of stay')),\r\n classes: gridName === 'HotelLengthOfStayGrid' ? 'selected' : '',\r\n onClick: () => {\r\n refreshGrid(history, 'HotelLengthOfStayGrid');\r\n },\r\n},\r\n{\r\n text: i18n.getString(_TL_('Site type')),\r\n classes: gridName === 'SiteTypeGrid' ? 'selected' : '',\r\n onClick: () => {\r\n refreshGrid(history, 'SiteTypeGrid');\r\n },\r\n},\r\n{\r\n text: i18n.getString(_TL_('Slot type')),\r\n classes: gridName === 'HotelSlotTypeGrid' ? 'selected' : '',\r\n onClick: () => {\r\n refreshGrid(history, 'HotelSlotTypeGrid');\r\n },\r\n},\r\n{\r\n text: i18n.getString(_TL_('User country/region')),\r\n classes: gridName === 'HotelLengthOfStayGrid' ? 'selected' : '',\r\n onClick: () => {\r\n refreshGrid(history, 'HotelUserCountryGrid');\r\n },\r\n},\r\n];\r\n\r\nexport const overviewGridPickerConfig = ({ i18n, gridName, history, permissions }) => {\r\n const gridNameMap = {\r\n HotelIdGrid: i18n.getString(_TL_('View by Hotel')),\r\n HotelGroupGrid: i18n.getString(_TL_('View by Hotel group')),\r\n HotelSubAccountGrid: i18n.getString(_TL_('View by Subaccount')),\r\n AdvancedBookingGrid: i18n.getString(_TL_('View by Advanced booking window')),\r\n CheckinDayGrid: i18n.getString(_TL_('View by Check in day')),\r\n HotelDateGrid: i18n.getString(_TL_('View by Date')),\r\n DateTypeGrid: i18n.getString(_TL_('View by Date type')),\r\n HotelDeviceTypeGrid: i18n.getString(_TL_('View by Device type')),\r\n HotelCountryGrid: i18n.getString(_TL_('View by Hotel country/region')),\r\n HotelLengthOfStayGrid: i18n.getString(_TL_('View by Length of stay')),\r\n SiteTypeGrid: i18n.getString(_TL_('View by Site type')),\r\n HotelSlotTypeGrid: i18n.getString(_TL_('View by Slot type')),\r\n HotelUserCountryGrid: i18n.getString(_TL_('View by User country/region')),\r\n };\r\n\r\n return ({\r\n id: 'grid-picker',\r\n type: 'dropdown',\r\n text: (gridNameMap[gridName] || i18n.getString(_TL_('View by Subaccount'))),\r\n menu: {\r\n items: overviewGridPickeritems({ i18n, history, gridName, permissions }),\r\n },\r\n });\r\n};\r\n","import { getCommonFilterConfig } from '@bingads-webui-campaign/common-grid-config';\r\nimport { extend } from 'underscore';\r\n\r\nconst getSearchFilterPlaceHolder = (i18n, gridName) => {\r\n let placeHolder = '';\r\n switch (gridName) {\r\n case 'HotelIdGrid':\r\n placeHolder = i18n.getString('HotelCenter_Overview_Grid_SearchBox_Hotel_Id_Label');\r\n break;\r\n case 'HotelGroupGrid':\r\n placeHolder = i18n.getString('HotelCenter_Overview_Grid_SearchBox_Hotel_Group_Label');\r\n break;\r\n default:\r\n placeHolder = '';\r\n break;\r\n }\r\n return placeHolder;\r\n};\r\n\r\nexport function getFilterConfig({\r\n entitySchema,\r\n i18n,\r\n sessionStore,\r\n preferenceStoreFactory,\r\n legacyGlobalI18n,\r\n schemaI18nCampaign,\r\n dataContextManager,\r\n preferenceService,\r\n appConfig,\r\n jsData,\r\n gridName,\r\n}) {\r\n const permissions = appConfig.get('Permissions');\r\n const filterConfig = getCommonFilterConfig(extend({\r\n preferenceService,\r\n featureName: `HotelCenterOverviewGrid${gridName}`,\r\n entitySchema,\r\n i18n,\r\n legacyGlobalI18n,\r\n sessionStore,\r\n preferenceStoreFactory,\r\n globalConfig: appConfig,\r\n schemaI18nCampaign,\r\n dataContextManager,\r\n jsdata: jsData,\r\n editor: {},\r\n enableCampaignWaterfall: false,\r\n enableAdGroupWaterfall: false,\r\n enableAvgPositionDeprecation: permissions.IsAvgPositionDeprecationPhase3Enabled ? permissions.IsAvgPositionDeprecationPhase3Enabled : false,\r\n searchbox: {\r\n placeholder: getSearchFilterPlaceHolder(i18n, gridName),\r\n searchProperty: 'Name',\r\n searchOperator: '$contains',\r\n },\r\n }, gridName === 'HotelIdGrid' ?\r\n {\r\n selector: [{\r\n property: 'Status',\r\n items: [\r\n {\r\n text: i18n.getString('HotelCenter_Overview_Hotel_Quickfilter_AllButDeleted'),\r\n value: ['Enum.Status\\'Active\\''],\r\n },\r\n {\r\n text: i18n.getString('HotelCenter_Overview_Hotel_Quickfilter_All'),\r\n value: null,\r\n },\r\n ],\r\n removable: false,\r\n defaultValue: null,\r\n }],\r\n } : {}));\r\n\r\n return filterConfig;\r\n}\r\n","import { projectionGridBulkEdit } from '@bingads-webui-campaign/projection-grid-bulk-edit';\r\n\r\nfunction hotelCenterOverviewBulkEdit(options) {\r\n const {\r\n serverContext,\r\n config,\r\n filterService,\r\n gridName,\r\n hotelCenterI18n,\r\n BulkEditBidPanel,\r\n BulkEditBidMultiPanel,\r\n BulkIncreaseDecreaseBidPanel,\r\n } = options;\r\n\r\n function getBulkEditBidPanel({ viewConfig, selectedRowCount }) {\r\n return new BulkEditBidPanel({\r\n viewConfig,\r\n selectedRowCount,\r\n gridName,\r\n isForVNext: true,\r\n serverContext,\r\n });\r\n }\r\n\r\n const items = [\r\n {\r\n text: hotelCenterI18n.getString('HotelCenter_Overview_Edit_Change_Bids_Label'),\r\n classes: ['bulk-edit-change-bids-option'],\r\n createView: getBulkEditBidPanel,\r\n },\r\n {\r\n text: hotelCenterI18n.getString('HotelCenter_Overview_Edit_Increase_Decrease_Bids_Label'),\r\n classes: ['bulk-edit-increase-decrease-bids'],\r\n createView: ({ viewConfig, selectedRowCount }) => new BulkIncreaseDecreaseBidPanel({\r\n viewConfig,\r\n selectedRowCount,\r\n gridName,\r\n isForVNext: true,\r\n }),\r\n }, {\r\n classes: ['bulk-edit-change-multipliers-bids'],\r\n text: hotelCenterI18n.getString('HotelCenter_Overview_Edit_Change_Multipliers_Bids_Label'),\r\n createView: ({ viewConfig, selectedRowCount }) => new BulkEditBidMultiPanel({\r\n viewConfig,\r\n selectedRowCount,\r\n gridName,\r\n isForVNext: true,\r\n }),\r\n },\r\n ];\r\n\r\n return projectionGridBulkEdit({\r\n entityType: 'campaign',\r\n config,\r\n filterService,\r\n i18n: hotelCenterI18n,\r\n items,\r\n showDelete: false,\r\n showEnable: false,\r\n showPause: false,\r\n isForVNext: true,\r\n });\r\n}\r\n\r\nexport { hotelCenterOverviewBulkEdit };\r\n","import { compact, noop } from 'underscore';\r\nimport { dateFilterPlugin } from '@bingads-webui-campaign/projection-grid-date-filter';\r\nimport { hotelCenterOverviewBulkEdit } from './overview-bulk-edit';\r\n\r\nexport const extendPlugins = ({\r\n serverContext,\r\n toolbarPlugin,\r\n crossPageSelectPlugin,\r\n appConfig,\r\n i18n,\r\n hotelCenterI18n,\r\n filterService,\r\n BulkEditBidPanel,\r\n BulkEditBidMultiPanel,\r\n BulkIncreaseDecreaseBidPanel,\r\n gridName,\r\n appState,\r\n p$daterange,\r\n}) => () => compact([\r\n toolbarPlugin,\r\n (gridName === 'HotelIdGrid' || gridName === 'HotelGroupGrid') && crossPageSelectPlugin,\r\n {\r\n plugin: dateFilterPlugin,\r\n config: {\r\n state: appState,\r\n isOdataActionSource: false,\r\n addDateChangeListener: noop,\r\n p$daterange,\r\n },\r\n },\r\n {\r\n plugin: definePlugin => definePlugin('filterState', [], noop),\r\n },\r\n {\r\n plugin: definePlugin => definePlugin('filter', [], noop),\r\n },\r\n {\r\n plugin: definePlugin => definePlugin('quickFilter', [], noop),\r\n },\r\n (gridName === 'HotelIdGrid' || gridName === 'HotelGroupGrid') && {\r\n plugin: hotelCenterOverviewBulkEdit({\r\n serverContext,\r\n config: appConfig,\r\n filterService,\r\n i18n,\r\n gridName,\r\n hotelCenterI18n,\r\n BulkEditBidPanel,\r\n BulkEditBidMultiPanel,\r\n BulkIncreaseDecreaseBidPanel,\r\n }),\r\n },\r\n]);\r\n","import $ from 'jquery';\r\nimport { FilterService } from '@bingads-webui/filter-service';\r\nimport { getGridPreferences } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { Hotel, HotelGroup, SubAccount, HotelDimensionRow } from '@bingads-webui/hotel-odata-schemas';\r\nimport { columnChooserPlugin } from '@bingads-webui-campaign/projection-grid-column-chooser';\r\nimport { WaterfallFilterStorage, WaterfallFilterType, waterfallDateFilterProcessor } from '@bingads-webui-campaign/filter-storage';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { mergeI18n } from '@bingads-webui-campaign-react/i18n-merger';\r\n\r\n/* eslint-disable import/extensions,import/no-unresolved, */\r\nimport * as preferenceStoreFactory from '@bingads-webui-component-legacy/bingads-grid/service/filter-preferences';\r\nimport { HotelCenterOverview as HotelCenterOverviewPromise, userCountryService } from '@bingads-webui-campaign-legacy/hotel-center-overview/overview-ui-next';\r\nimport appConfig from '@bingads-webui-component-legacy/config/index';\r\nimport appState from '@bingads-webui-component-legacy/state/index';\r\nimport dataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport jsData from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport sessionStore from '@bingads-webui-component-legacy/js-data-storage/session-storage';\r\nimport { fetchPaginationConfig } from '@bingads-webui-component-legacy/bingads-grid/service/fetch-pagination';\r\nimport preferenceServiceLegacy from '@bingads-webui-component-legacy/preference/service/index';\r\n/* eslint-enable */\r\n\r\nimport { getFilterConfig } from './filter-config';\r\nimport { extendPlugins } from './extend-plugins';\r\n\r\nconst getGridSchemaByName = (gridName) => {\r\n let schema = null;\r\n switch (gridName) {\r\n case 'HotelIdGrid':\r\n schema = Hotel;\r\n break;\r\n case 'HotelGroupGrid':\r\n schema = HotelGroup;\r\n break;\r\n case 'HotelSubAccountGrid':\r\n schema = SubAccount;\r\n break;\r\n default:\r\n schema = HotelDimensionRow;\r\n break;\r\n }\r\n return schema;\r\n};\r\n\r\nconst getGridNavigationLevelsByName = (gridName) => {\r\n let navigationLevels = [];\r\n switch (gridName) {\r\n case 'HotelIdGrid':\r\n navigationLevels = [{ name: 'grid-chooser-item-hotel-id' }];\r\n break;\r\n case 'HotelGroupGrid':\r\n navigationLevels = [{ name: 'grid-chooser-item-hotel-group' }];\r\n break;\r\n case 'HotelSubAccountGrid':\r\n navigationLevels = [{ name: 'grid-chooser-item-subaccount' }];\r\n break;\r\n case 'HotelDeviceTypeGrid':\r\n navigationLevels = [{ name: 'grid-chooser-item-devicetype' }];\r\n break;\r\n case 'HotelDateGrid':\r\n navigationLevels = [{ name: 'grid-chooser-item-date' }];\r\n break;\r\n case 'HotelLengthOfStayGrid':\r\n navigationLevels = [{ name: 'grid-chooser-item-length-of-stay' }];\r\n break;\r\n case 'HotelUserCountryGrid':\r\n navigationLevels = [{ name: 'grid-chooser-item-user-country' }];\r\n break;\r\n case 'HotelSlotTypeGrid':\r\n navigationLevels = [{ name: 'grid-chooser-item-slot-type' }];\r\n break;\r\n case 'HotelCountryGrid':\r\n navigationLevels = [{ name: 'grid-chooser-item-hotel-country' }];\r\n break;\r\n case 'AdvancedBookingGrid':\r\n navigationLevels = [{ name: 'grid-chooser-item-advanced-booking' }];\r\n break;\r\n case 'CheckinDayGrid':\r\n navigationLevels = [{ name: 'grid-chooser-item-checkin-day' }];\r\n break;\r\n case 'DateTypeGrid':\r\n navigationLevels = [{ name: 'grid-chooser-item-date-type' }];\r\n break;\r\n case 'SiteTypeGrid':\r\n navigationLevels = [{ name: 'grid-chooser-item-site-type' }];\r\n break;\r\n default:\r\n navigationLevels = [];\r\n break;\r\n }\r\n return navigationLevels;\r\n};\r\n\r\nconst loadOverview = () => HotelCenterOverviewPromise;\r\n\r\nexport const createOverviewGrid = ({\r\n serverContext,\r\n scope,\r\n permissions,\r\n preferenceService,\r\n i18n,\r\n toolbarPlugin,\r\n crossPageSelectPlugin,\r\n gridName,\r\n updateSelectedSubaccount,\r\n refreshGridForUINext,\r\n jumpToReconReports,\r\n perfMarker,\r\n gridRefreshed,\r\n}) =>\r\n loadOverview({\r\n serverContext,\r\n scope,\r\n permissions,\r\n preferenceService,\r\n }).then((HotelCenterOverviewObj) => {\r\n const [{ HotelCenterOverview }, ...bulkItems] = HotelCenterOverviewObj;\r\n const legacyGlobalI18n = window.globalLegacyI18n.get('$/i18n!legacy/global');\r\n const hotelCenterI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n const schemaI18nCampaign = window.globalLegacyI18n.get('$/schema-i18n!campaign');\r\n const filterConfig = getFilterConfig({\r\n entitySchema: getGridSchemaByName(gridName),\r\n i18n: hotelCenterI18n,\r\n sessionStore,\r\n preferenceStoreFactory: preferenceStoreFactory.getFilters,\r\n legacyGlobalI18n,\r\n schemaI18nCampaign,\r\n dataContextManager,\r\n preferenceService,\r\n appConfig,\r\n jsData,\r\n permissions,\r\n gridName,\r\n });\r\n const filterService = new FilterService(filterConfig);\r\n const waterfallFilterStorage = new WaterfallFilterStorage({\r\n preferenceService,\r\n });\r\n const getGridPreferencesPromise = getGridPreferences({\r\n gridName,\r\n dateUtil: {\r\n format: value => i18n.formatDate(value),\r\n },\r\n state: appState,\r\n fetchPaginationConfig,\r\n });\r\n const p$daterange = () => {\r\n const dateFilter = waterfallDateFilterProcessor(\r\n waterfallFilterStorage.getFilters([WaterfallFilterType.DateFilter]),\r\n serverContext\r\n );\r\n return Promise.resolve(dateFilter);\r\n };\r\n return getGridPreferencesPromise.then((preferenceConfig) => {\r\n userCountryService.getCountriesAndSetState();\r\n const injectedView = new HotelCenterOverview({\r\n i18n: mergeI18n(hotelCenterI18n, i18n),\r\n isUINext: true,\r\n serverContext,\r\n fetchPreferenceConfig: () => Promise.resolve(preferenceConfig),\r\n preferenceConfig,\r\n preferenceService: preferenceServiceLegacy,\r\n extendPlugins: extendPlugins({\r\n serverContext,\r\n toolbarPlugin,\r\n crossPageSelectPlugin,\r\n hotelCenterI18n,\r\n preferenceService: preferenceServiceLegacy,\r\n appConfig,\r\n filterService,\r\n BulkEditBidPanel: bulkItems[0].default,\r\n BulkEditBidMultiPanel: bulkItems[1].default,\r\n BulkIncreaseDecreaseBidPanel: bulkItems[2].default,\r\n gridName,\r\n appState,\r\n p$daterange,\r\n }),\r\n filterService,\r\n pluginFactories: {\r\n columnChooserPlugin,\r\n },\r\n updateSelectedSubaccount,\r\n gridName,\r\n p$daterange,\r\n perfMarker,\r\n refreshGridForUINext,\r\n jumpToReconReports,\r\n gridRefreshed,\r\n viewport: $('.hotel-center-overview-page'),\r\n customHeaderOffset: () => $('.sticky-container').height(),\r\n navigationLevels: getGridNavigationLevelsByName(gridName),\r\n notificationApi,\r\n });\r\n return {\r\n filterConfig, filterService, injectedView, hotelCenterI18n,\r\n };\r\n });\r\n });\r\n","import { truncatedStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getIntelligenceCommonStyles = (_, { palette = {} }) => ({\r\n '& input[type=button]': {\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondaryAlt}`,\r\n boxShadow: `inset 0 0 0 1px ${palette.neutralSecondary}`,\r\n outlineOffset: 0,\r\n border: `2px solid ${palette.white}`,\r\n },\r\n },\r\n ...truncatedStyle,\r\n});\r\n","import { getIntelligenceCommonStyles } from './intelligence-common-style';\r\n\r\nexport const getBookingReportStyles = (_, { palette = {} }) => ({\r\n marginTop: 32,\r\n marginLeft: 32,\r\n\r\n '& .booking-report-container': {\r\n '& .form-group.title-container': {\r\n display: 'none',\r\n },\r\n\r\n '& .form-group.description-container': {\r\n marginBottom: 20,\r\n },\r\n\r\n '& .booking-report-download-button': {\r\n marginTop: 20,\r\n },\r\n\r\n '& .form-group': {\r\n '& .col-sm-1.control-label': {\r\n width: '100%',\r\n textAlign: 'left',\r\n },\r\n },\r\n '& .date-picker-container': {\r\n display: 'none',\r\n },\r\n ...getIntelligenceCommonStyles(_, { palette }),\r\n },\r\n});\r\n","import { getIntelligenceCommonStyles } from './intelligence-common-style';\r\n\r\nexport const getShareOfVoiceStyles = (_, { palette = {} }) => ({\r\n marginLeft: 32,\r\n marginTop: 32,\r\n\r\n '& .share-of-voice-report-container': {\r\n '& .form-group.title-container': {\r\n display: 'none',\r\n },\r\n\r\n '& .form-group.description-container': {\r\n marginBottom: 20,\r\n },\r\n\r\n '& .sov-report-download-button': {\r\n marginTop: 20,\r\n },\r\n\r\n '& .form-group': {\r\n '& .col-sm-1.control-label': {\r\n width: '100%',\r\n textAlign: 'left',\r\n },\r\n },\r\n\r\n '& .date-picker-container': {\r\n display: 'none',\r\n },\r\n ...getIntelligenceCommonStyles(_, { palette }),\r\n },\r\n});\r\n","import { convertToLocalStyle, getColumnSolidBorderStyle, dateFilterStyle, glyphIconStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { getTableStyles, getTableGlobalStyles } from '@bingads-webui-campaign-react/grid-view-wrapper';\r\nimport { merge } from '@bingads-webui/primitive-utilities';\r\n\r\nconst getKcalendarStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n position: 'relative',\r\n display: 'inline-block',\r\n // width: '16.917em',\r\n overflow: 'hidden',\r\n\r\n '& td, .k-link': {\r\n textDecoration: 'none',\r\n },\r\n\r\n '& .k-action-link': {\r\n textDecoration: 'underline',\r\n },\r\n\r\n '& .k-header, .k-footer': {\r\n position: 'relative',\r\n textAlign: 'center',\r\n zoom: 1,\r\n },\r\n\r\n '& .k-nav-prev, .k-nav-next': {\r\n position: 'absolute',\r\n top: '0.16666em',\r\n lineHeight: '1.8333em',\r\n height: '1.8333em',\r\n },\r\n\r\n '& .k-nav-prev': {\r\n left: '1%',\r\n },\r\n\r\n '& .k-nav-next': {\r\n right: '1%',\r\n },\r\n\r\n '& .k-content': {\r\n float: 'left',\r\n borderSpacing: 0,\r\n width: '100%',\r\n height: '14.167em',\r\n borderWidth: 0,\r\n margin: 0,\r\n tableLayout: 'fixed',\r\n textAlign: 'right',\r\n outline: 0,\r\n },\r\n\r\n '& .k-header': {\r\n '& .k-icon': {\r\n verticalAlign: 'middle',\r\n height: '1.8333em',\r\n width: '1.8333em',\r\n },\r\n\r\n '& .k-i-arrow-w': {\r\n fontFamily: iconFontFamily,\r\n },\r\n\r\n '& .k-i-arrow-w:before': {\r\n content: '\"\\\\E76B\"',\r\n },\r\n\r\n '& .k-i-arrow-e': {\r\n fontFamily: iconFontFamily,\r\n },\r\n\r\n '& .k-i-arrow-e:before': {\r\n content: '\"\\\\E76C\"',\r\n },\r\n\r\n '& .k-nav-fast': {\r\n display: 'inline-block',\r\n width: '75%',\r\n height: '1.8333em',\r\n lineHeight: '1.8333em',\r\n margin: '0.16666em -0.08333em 0.3333em 0',\r\n },\r\n },\r\n\r\n '& th': {\r\n borderBottomStyle: 'solid',\r\n borderBottomWidth: '1px',\r\n padding: '.4em .3em .4em .3em',\r\n fontWeight: 'normal',\r\n cursor: 'default',\r\n },\r\n\r\n '& td': {\r\n padding: '0.08333em',\r\n cursor: 'pointer',\r\n },\r\n\r\n '& .k-state-focus': {\r\n borderStyle: 'dotted',\r\n borderWidth: '0.08333em',\r\n padding: 0,\r\n },\r\n\r\n '& .k-other-month': {\r\n pointerEvents: 'none',\r\n cursor: 'default',\r\n textDecoration: 'none',\r\n color: 'gray',\r\n },\r\n\r\n '& .k-content .k-link': {\r\n display: 'block',\r\n overflow: 'hidden',\r\n minHeight: '1.8333em',\r\n lineHeight: '1.8333em',\r\n padding: '0 .45em 0 .1em',\r\n },\r\n\r\n '& .k-meta-view .k-link': {\r\n padding: '.25em 0 .3em',\r\n textAlign: 'center',\r\n },\r\n\r\n '& .k-footer': {\r\n clear: 'both',\r\n\r\n '& .k-nav-today, > .k-state-disabled': {\r\n display: 'block',\r\n height: '100%',\r\n padding: '.5em 0',\r\n },\r\n },\r\n\r\n '& tbody td .k-state-disabled': {\r\n color: '#a2a2a2',\r\n padding: '0 0.45em 0 0.1em',\r\n },\r\n\r\n '& .k-nav-today:hover': {\r\n textDecoration: 'underline',\r\n },\r\n\r\n '& .k-link:hover': {\r\n textDecoration: 'underline',\r\n },\r\n\r\n ...convertToLocalStyle(glyphIconStyle({ palette })),\r\n});\r\n\r\nexport const getFeedStatusStyles = (_, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '@global': {\r\n '.bingads-campaign-react-sub-page-menu': {\r\n '& .compared-date-range-picker': {\r\n display: 'none',\r\n },\r\n },\r\n\r\n '.k-calendar-container': {\r\n width: '203px',\r\n border: '2px solid #ccc',\r\n backgroundColor: palette.white,\r\n\r\n '& .k-calendar': getKcalendarStyle({ palette, iconFontFamily }),\r\n },\r\n\r\n '.k-list-container': {\r\n overflow: 'auto',\r\n backgroundColor: palette.white,\r\n width: 86,\r\n fontSize: 12,\r\n\r\n '& ul': {\r\n listStyle: 'none',\r\n padding: 0,\r\n\r\n '& li': {\r\n padding: 5,\r\n },\r\n },\r\n },\r\n },\r\n\r\n FeedStatus: merge({\r\n marginLeft: '32px',\r\n marginTop: '32px',\r\n display: 'flex',\r\n overflow: 'auto',\r\n flex: '1 0 1px',\r\n flexDirection: 'column',\r\n\r\n '& .intelligence-feed-status-name-container': {\r\n marginBottom: '20px',\r\n },\r\n\r\n '& .intelligence-feed-status-toolbar-container': {\r\n marginLeft: '15px',\r\n marginBottom: '15px',\r\n },\r\n\r\n '& .table-bordered': {\r\n border: 0,\r\n },\r\n\r\n '& .helpbutton:before': {\r\n content: '\"\\\\E9CE\"',\r\n fontFamily: iconFontFamily,\r\n verticalAlign: 'middle',\r\n },\r\n\r\n '& .helpbutton': {\r\n fontSize: 15,\r\n fontWeight: 'normal',\r\n marginLeft: 7,\r\n },\r\n\r\n '& .intelligence-feed-status-grid': getTableStyles(_, { palette }),\r\n ...getColumnSolidBorderStyle(0, 2),\r\n ...dateFilterStyle({ palette }),\r\n }, convertToLocalStyle(getTableGlobalStyles(_, { palette }))),\r\n});\r\n","import { getBookingReportStyles } from './booking-report';\r\nimport { getShareOfVoiceStyles } from './share-of-voice';\r\n\r\nexport const getIntelligencePageStyles = (_, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n BookingReport: getBookingReportStyles(_, { palette, iconFontFamily }),\r\n ShareOfVoice: getShareOfVoiceStyles(_, { palette, iconFontFamily }),\r\n});\r\n\r\nexport * from './feed-upload';\r\nexport * from './feed-status';\r\nexport * from './match-report';\r\nexport * from './callout-extension';\r\n","\r\nexport const getBidMultipliersEditorStyle = (iconFontFamily = 'MsAds MDL2 Assets') => ({\r\n '& ul': {\r\n listStyle: 'none',\r\n margin: 0,\r\n '& li': {\r\n float: 'left',\r\n '& .btn': {\r\n border: '1px solid #dcdcdc',\r\n height: 32,\r\n lineHeight: '28px',\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n\r\n '& .ui-tabs-selected': {\r\n backgroundColor: '#EFF6FC',\r\n },\r\n },\r\n\r\n '& .glyphicon-remove': {\r\n color: '#0078d4',\r\n fontFamily: iconFontFamily,\r\n },\r\n\r\n '& .glyphicon-remove:before': {\r\n content: '\"\\\\E711\"',\r\n },\r\n\r\n '& .bid-multipliers-content': {\r\n margin: 0,\r\n marginTop: '10px !important',\r\n '& .control-label': {\r\n paddingTop: 0,\r\n textAlign: 'left',\r\n },\r\n '& .form-group ': {\r\n marginBottom: 8,\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n '& .control-label': {\r\n width: '100%',\r\n },\r\n '& .form-control[readonly]': {\r\n background: '#f3f2f1',\r\n borderColor: '#f3f2f1',\r\n color: '#a19f9d',\r\n '& + .input-group-addon': {\r\n borderColor: '#f3f2f1',\r\n },\r\n },\r\n },\r\n '& .mulitpliers-query-add': {\r\n '& .col-sm-offset-5': {\r\n marginLeft: 0,\r\n paddingLeft: 0,\r\n },\r\n '& .col-sm-6': {\r\n width: '70%',\r\n },\r\n },\r\n '& .col-sm-4': {\r\n paddingLeft: 0,\r\n paddingRight: 8,\r\n width: '45%',\r\n },\r\n '& .form-control': {\r\n width: '100%',\r\n },\r\n '& .mulitpliers-query-add, .length-of-stay-multiplier': {\r\n '& .col-sm-1': {\r\n height: 32,\r\n lineHeight: '28px',\r\n textAlign: 'left',\r\n padding: 0,\r\n },\r\n '& .col-sm-11': {\r\n padding: 0,\r\n },\r\n },\r\n '& .col-sm-11 .col-sm-4:last-of-type': {\r\n padding: 0,\r\n },\r\n '& .col-sm-1.mulitplier-query-remove': {\r\n paddingTop: 6,\r\n paddingLeft: 2,\r\n },\r\n '& .user-country-multiplier': {\r\n '& .col-sm-11': {\r\n paddingLeft: 0,\r\n },\r\n '& .mulitplier-query-remove': {\r\n alignSelf: 'flex-end',\r\n marginBottom: 15,\r\n },\r\n },\r\n '& .length-of-stay-multiplier': {\r\n '& .mulitplier-query-remove': {\r\n alignSelf: 'flex-end',\r\n marginBottom: 8,\r\n },\r\n },\r\n },\r\n\r\n '& .edit-panel': {\r\n paddingLeft: 15,\r\n },\r\n\r\n '& .bid-multipliers-panel': {\r\n '& .col-sm-12': {\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n },\r\n },\r\n\r\n '& .form-group ': {\r\n margin: 0,\r\n '& .edit-panel': {\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n marginTop: 8,\r\n },\r\n },\r\n});\r\n\r\nexport const getBidEditorStyle = () => ({\r\n '& .control-label': {\r\n paddingTop: 0,\r\n },\r\n '& .form-group': {\r\n margin: 0,\r\n },\r\n\r\n '& .col-sm-7, .col-sm-3, .col-sm-4, .col-sm-8': {\r\n width: 'auto',\r\n float: 'none',\r\n textAlign: 'left',\r\n },\r\n\r\n '& .bid-strategy-panel': {\r\n '& .radio': {\r\n display: 'block',\r\n },\r\n '& .input-group': {\r\n marginLeft: 8,\r\n },\r\n },\r\n '& .edit-panel': {\r\n marginTop: 12,\r\n },\r\n});\r\n","export const getOverviewCommonStyles = (_, { palette = {} }) => ({\r\n '& input[type=button]': {\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondaryAlt}`,\r\n boxShadow: `inset 0 0 0 1px ${palette.neutralSecondary}`,\r\n outlineOffset: 0,\r\n border: `2px solid ${palette.white}`,\r\n },\r\n },\r\n});\r\n","import { paginationStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { merge } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nexport const getOverridePaginationStyles = (_, { palette = {} }) => ({\r\n '.pagination-container': {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n ...merge({\r\n '& .ba-pagination': {\r\n height: 24,\r\n '& .btn.prev, .btn.next': {\r\n height: 24,\r\n verticalAlign: 'unset',\r\n },\r\n '& > .text': {\r\n display: 'inline-block',\r\n padding: '0px 0px 4px 5px',\r\n verticalAlign: 'middle',\r\n },\r\n\r\n '& input.pager-input': {\r\n height: 24,\r\n width: 32,\r\n margin: 0,\r\n },\r\n },\r\n }, paginationStyle({ palette })),\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport classnames from 'classnames';\r\nimport { Icon, Dropdown, List, SearchBox, Spinner } from '@fluentui/react';\r\nimport { Pagination } from '@bingads-webui-react/pagination';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { getSubaccountStyles } from '../../../style/overview-pages/subaccount-selector-style';\r\n\r\nconst pageContext = globalContext.require('PageContext');\r\nconst permissions = pageContext && pageContext.Permissions;\r\nconst isHotelCenterDeprecation = permissions && permissions.dynamic.HotelCenterDeprecation;\r\n\r\nclass UnstyledSubAccountSelector extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n searchQuery: '',\r\n pageNumber: 0,\r\n };\r\n this.dropdownRef = React.createRef();\r\n this.allOption = {\r\n Id: 'selectAllSubAccount',\r\n Name: props.i18n.getString('HotelCenter_Subheader_All_SubAccount_Label'),\r\n };\r\n\r\n this.createOption = {\r\n Id: 'createNew',\r\n Name: props.i18n.getString('HotelCenter_Subheader_CreateSubAccount_Label'),\r\n Icon: 'Add',\r\n IsLink: true,\r\n disabled: isHotelCenterDeprecation,\r\n };\r\n }\r\n\r\n onKeyDown = (event, option) => {\r\n if (event.key === 'Enter') {\r\n this.onChange(option);\r\n }\r\n }\r\n\r\n onChange = (option) => {\r\n switch (option.Id) {\r\n case 'createNew':\r\n if (!isHotelCenterDeprecation) {\r\n this.props.onCreateNewClicked();\r\n }\r\n break;\r\n default:\r\n this.props.onSelectionChanged({\r\n Id: option.Id,\r\n Name: option.Name,\r\n });\r\n break;\r\n }\r\n // eslint-disable-next-line no-underscore-dangle\r\n this.dropdownRef.current._onDismiss();\r\n };\r\n\r\n onSearch = (searchQuery) => {\r\n this.setState({\r\n pageNumber: 0,\r\n searchQuery,\r\n });\r\n this.props.onFetch({\r\n searchQuery,\r\n pageNumber: 0,\r\n pageSize: this.props.pageSize,\r\n });\r\n }\r\n\r\n onSearchClear = () => {\r\n this.setState({\r\n pageNumber: 0,\r\n searchQuery: '',\r\n });\r\n this.props.onFetch();\r\n }\r\n\r\n onPageNumberChanged = (pageNumber) => {\r\n this.setState({ pageNumber });\r\n this.props.onFetch({\r\n searchQuery: this.state.searchQuery,\r\n pageNumber,\r\n pageSize: this.props.pageSize,\r\n });\r\n }\r\n\r\n renderSearchbox = () => {\r\n const { isMultiPage, i18n } = this.props;\r\n if (isMultiPage) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n renderPagination = () => {\r\n const {\r\n totalCount,\r\n isMultiPage,\r\n pageSize,\r\n i18n,\r\n } = this.props;\r\n const { pageNumber } = this.state;\r\n\r\n if (isMultiPage) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n renderOption = (option) => {\r\n const { classes, selectedSubaccountId } = this.props;\r\n\r\n return (\r\n { this.onChange(option); }}\r\n onKeyDown={(event) => { this.onKeyDown(event, option); }}\r\n role=\"button\"\r\n tabIndex=\"0\"\r\n disabled={option.disabled}\r\n >\r\n {option.Icon && (\r\n \r\n \r\n \r\n )}\r\n {option.Name}\r\n
\r\n );\r\n }\r\n\r\n renderUIBlocker = () => {\r\n const { isLoading, classes, i18n } = this.props;\r\n return isLoading ?\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n : null;\r\n }\r\n\r\n renderDropdownList = () => {\r\n const { subaccounts } = this.props;\r\n return (\r\n
\r\n {this.renderUIBlocker()}\r\n
\r\n {this.renderSearchbox()}\r\n {this.renderOption(this.allOption)}\r\n \r\n {this.renderPagination()}\r\n {this.renderOption(this.createOption)}\r\n
\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n const { classes, i18n, selectedSubaccountName } = this.props;\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nUnstyledSubAccountSelector.propTypes = {\r\n onSelectionChanged: PropTypes.func.isRequired,\r\n onCreateNewClicked: PropTypes.func.isRequired,\r\n subaccounts: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.string,\r\n Name: PropTypes.string,\r\n })),\r\n classes: PropTypes.objectOf(PropTypes.any).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n selectedSubaccountId: PropTypes.string.isRequired,\r\n selectedSubaccountName: PropTypes.string.isRequired,\r\n pageSize: PropTypes.number,\r\n totalCount: PropTypes.number.isRequired,\r\n isMultiPage: PropTypes.bool,\r\n onFetch: PropTypes.func,\r\n isLoading: PropTypes.bool,\r\n};\r\n\r\nUnstyledSubAccountSelector.defaultProps = {\r\n subaccounts: [],\r\n pageSize: 10,\r\n onFetch: _.noop,\r\n isMultiPage: false,\r\n isLoading: false,\r\n};\r\n\r\nexport const SubAccountSelector = withDefaultStyles(UnstyledSubAccountSelector, getSubaccountStyles);\r\n","import { getOverridePaginationStyles } from './override-pagination-style';\r\n\r\nexport const getSubaccountStyles = (_, { palette = {} }) => ({\r\n '@global': getOverridePaginationStyles(_, { palette }),\r\n option: {\r\n height: 36,\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n cursor: 'pointer',\r\n '&:hover': {\r\n color: palette.themePrimary,\r\n },\r\n },\r\n optionLink: {\r\n color: palette.themePrimary,\r\n borderTop: `1px solid ${palette.neutralLight}`,\r\n '&[disabled]': {\r\n color: '#BEBBB8',\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n optionIcon: {\r\n marginRight: 8,\r\n verticalAlign: 'middle',\r\n },\r\n optionSelected: {\r\n backgroundColor: palette.neutralLighter,\r\n },\r\n optionText: {\r\n lineHeight: '36px',\r\n },\r\n uiBlockerContainer: {\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n },\r\n\r\n uiBlockerBackground: {\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n backgroundColor: palette.white,\r\n opacity: '0.4',\r\n zIndex: 1,\r\n },\r\n\r\n uiBlockerContent: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n '-webkit-transform': 'translate(-50%, -50%)',\r\n zIndex: 1,\r\n },\r\n});\r\n","/* eslint-disable import/extensions */\r\n/* eslint-disable import/no-unresolved */\r\n\r\nimport React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport edm from '@bingads-webui-campaign-legacy/hotel-center-edm/index';\r\nimport jsData from '@bingads-webui-campaign-legacy/hotel-center-js-data/index';\r\nimport { SubAccountSelector } from './subaccount-selector';\r\n\r\nexport class SubaccountSelectorPanel extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n subAccounts: [],\r\n totalCount: 0,\r\n totalCountWithoutQuery: 0,\r\n isLoading: false,\r\n selectedSubaccountName: props.i18n.getString('HotelCenter_Subheader_All_SubAccount_Label'),\r\n };\r\n\r\n this.pageSize = 6;\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchSubaccounts();\r\n }\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.selectedSubaccountId !== this.props.selectedSubaccountId) {\r\n this.fetchSubaccounts();\r\n }\r\n }\r\n onCreateNewClicked = () => {\r\n const { history } = this.props;\r\n history.push({\r\n pathname: '/campaign/vnext/hotelcenter/setup',\r\n search: history.location.search,\r\n });\r\n };\r\n\r\n getPlaceHolder = () => {\r\n const { subaccounts } = this.state;\r\n const { selectedSubaccountId, i18n } = this.props;\r\n let selectedSubaccountName = i18n.getString('HotelCenter_Subheader_All_SubAccount_Label');\r\n if (!selectedSubaccountId || selectedSubaccountId === 'selectAllSubAccount') {\r\n this.setState({ selectedSubaccountName });\r\n return;\r\n }\r\n let isFind = false;\r\n _.each(subaccounts, (item) => {\r\n if (item.Id === selectedSubaccountId) {\r\n selectedSubaccountName = item.Name;\r\n isFind = true;\r\n }\r\n });\r\n if (isFind || selectedSubaccountId === 'selectAllSubAccount') {\r\n this.setState({ selectedSubaccountName });\r\n return;\r\n }\r\n // eslint-disable-next-line consistent-return\r\n return jsData.SubAccount.find(selectedSubaccountId, { entitySet: edm.currentCustomer.SubAccounts })\r\n .then((subaccount) => {\r\n // navigate from assignment page to overview page will trigger getPlaceHolder twice, add this judgement to prevent continue execute when props change\r\n if (this.props.selectedSubaccountId !== selectedSubaccountId) {\r\n return;\r\n }\r\n selectedSubaccountName = subaccount.Name;\r\n this.setState({ selectedSubaccountName });\r\n });\r\n };\r\n\r\n transformQueryOptions = (params) => {\r\n const queryOptions = {\r\n where: {\r\n Status: {\r\n $eq: 'Active',\r\n },\r\n },\r\n };\r\n\r\n if (params && params.searchQuery) {\r\n queryOptions.where.Name = {\r\n $contains: params.searchQuery,\r\n };\r\n }\r\n\r\n if (params && params.pageNumber) {\r\n queryOptions.limit = params.pageSize;\r\n queryOptions.offset = params.pageNumber * params.pageSize;\r\n } else {\r\n queryOptions.limit = this.pageSize;\r\n queryOptions.offset = 0;\r\n }\r\n return queryOptions;\r\n };\r\n\r\n fetchSubaccounts = (params) => {\r\n const options = {\r\n entitySet: edm.currentCustomer.SubAccounts,\r\n cacheResponse: false,\r\n };\r\n const query = this.transformQueryOptions(params);\r\n this.setState({\r\n isLoading: true,\r\n });\r\n return jsData.SubAccount.findAll(query, options)\r\n .then((originalSubAccounts) => {\r\n this.updateSubAccounts(originalSubAccounts, params);\r\n this.getPlaceHolder();\r\n }).finally(() => {\r\n this.setState({\r\n isLoading: false,\r\n });\r\n });\r\n };\r\n\r\n updateSubAccounts = (originalSubAccounts, params) => {\r\n if (originalSubAccounts && _.isArray(originalSubAccounts)) {\r\n const subAccounts = _.map(originalSubAccounts, subAccount => (\r\n {\r\n Id: subAccount.Id,\r\n Name: subAccount.Name,\r\n isDisabled: subAccount.Status !== 'Active',\r\n }\r\n ));\r\n if (params) {\r\n this.setState({\r\n subAccounts,\r\n totalCount: originalSubAccounts.totalCount,\r\n });\r\n } else {\r\n this.setState({\r\n subAccounts,\r\n totalCount: originalSubAccounts.totalCount,\r\n totalCountWithoutQuery: originalSubAccounts.totalCount,\r\n });\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n i18n, onSubaccountChanged, classes, selectedSubaccountId,\r\n } = this.props;\r\n const {\r\n subAccounts,\r\n totalCount,\r\n totalCountWithoutQuery,\r\n isLoading,\r\n selectedSubaccountName,\r\n } = this.state;\r\n\r\n return (\r\n
\r\n this.pageSize}\r\n isLoading={isLoading}\r\n />\r\n
\r\n );\r\n }\r\n}\r\n\r\nSubaccountSelectorPanel.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onSubaccountChanged: PropTypes.func.isRequired,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n overviewPage: PropTypes.string,\r\n }).isRequired,\r\n selectedSubaccountId: PropTypes.string.isRequired,\r\n};\r\n\r\n","/* eslint-disable react/no-unused-state */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { bind, noop } from 'underscore';\r\nimport { withTablePageStateManager } from '@bingads-webui-campaign-react/table-page-state-manager';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { FilterViewManagerWithGlobalFilterContext } from '@bingads-webui-campaign-react/filter-view-manager';\r\nimport { StyledGridViewWrapper } from '@bingads-webui-campaign-react/grid-view-wrapper';\r\nimport { TopGridPanel } from '@bingads-webui-campaign-react/top-grid-panel';\r\nimport { getToolbarEditor } from '@bingads-webui-campaign-react/toolbar-plugin';\r\nimport { StyledTablePageContainer } from '@bingads-webui-campaign-react/table-page-container';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { withGlobalFilter } from '@bingads-webui-campaign-react/global-filter-context';\r\nimport { getToolbarConfig } from './toolbar-config';\r\nimport { createOverviewGrid } from './overview-page-factory';\r\nimport { getOverviewPageStyles } from '../../style';\r\nimport { SubaccountSelectorPanel } from './components/subaccount-selector-panel';\r\nimport { overviewGridPickerConfig } from './overview-grid-picker-config';\r\n\r\nconst StyledGridViewWrapperWithFilterContext = withGlobalFilter(StyledGridViewWrapper);\r\nclass HotelCenterOverviewNew extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.viewport = React.createRef();\r\n this.state = {\r\n backboneGridView: null,\r\n isGridValid: false,\r\n hotelCenterI18n: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.createGrid();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.scope !== this.props.scope) {\r\n this.createGrid();\r\n }\r\n if (prevProps.gridName !== this.props.gridName) {\r\n this.createGrid();\r\n }\r\n }\r\n\r\n onSubaccountChangedFromSelector(selectSubAccount) {\r\n if (selectSubAccount.Id !== this.props.selectedSubaccountId) {\r\n this.state.backboneGridView.onSubaccountChangedForUINext(selectSubAccount.Id);\r\n this.props.updateSelectedSubaccount(selectSubAccount.Id);\r\n }\r\n }\r\n\r\n onSubaccountChangedFromInjectedView(selectedSubaccountId) {\r\n this.props.updateSelectedSubaccount(selectedSubaccountId);\r\n }\r\n\r\n setGridState = (isValid) => {\r\n this.setState({ isGridValid: isValid });\r\n };\r\n\r\n refreshGridForUINext = (gridName) => {\r\n const { history } = this.props;\r\n if (history) {\r\n history.push({\r\n pathname: `/campaign/vnext/hotelcenter/overview/${gridName.toLowerCase()}`,\r\n search: history.location.search,\r\n });\r\n }\r\n };\r\n\r\n jumpToReconReports = () => {\r\n const { history } = this.props;\r\n if (history) {\r\n history.push({\r\n pathname: '/campaign/vnext/hotelcenter/uploadedreconreports',\r\n search: history.location.search,\r\n });\r\n }\r\n };\r\n\r\n createGrid() {\r\n const {\r\n history,\r\n i18n,\r\n serverContext,\r\n scope,\r\n siteMap,\r\n permissions,\r\n preferenceService,\r\n resetToolbarVisibility,\r\n toolbarPlugin,\r\n crossPageSelectPlugin,\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n onGridInjected,\r\n updateToolbar,\r\n perfMarker,\r\n gridName,\r\n } = this.props;\r\n this.setGridState(false);\r\n const createGridPromise = createOverviewGrid({\r\n serverContext,\r\n scope,\r\n siteMap,\r\n permissions,\r\n preferenceService,\r\n toolbarPlugin,\r\n crossPageSelectPlugin,\r\n perfMarker,\r\n history,\r\n i18n,\r\n gridName,\r\n viewport: this.viewport.current,\r\n updateSelectedSubaccount: (subaccountId) => {\r\n this.onSubaccountChangedFromInjectedView(subaccountId);\r\n },\r\n refreshGridForUINext: this.refreshGridForUINext,\r\n jumpToReconReports: this.jumpToReconReports,\r\n gridRefreshed: () => this.setGridState(true),\r\n });\r\n\r\n const OverviewPageView = React.lazy(() =>\r\n createGridPromise.then(({ injectedView, hotelCenterI18n }) => {\r\n onGridInjected({\r\n backboneGridView: injectedView,\r\n deselectAll: injectedView.grid.gridView.deselectAll.bind(injectedView.grid.gridView),\r\n });\r\n\r\n this.setState({\r\n backboneGridView: injectedView,\r\n hotelCenterI18n,\r\n });\r\n\r\n return {\r\n default: () => (),\r\n };\r\n }).catch(err => err));\r\n this.overviewGrid = ();\r\n const toolbarEditor = getToolbarEditor({\r\n toolbarConfig: { toolbarSelectedConfig, toolbarUnselectedConfig },\r\n updateToolbar,\r\n });\r\n const gridPickerConfig = overviewGridPickerConfig({ i18n, history, gridName, permissions });\r\n toolbarEditor.update(gridPickerConfig);\r\n const FilterBarView = React.lazy(() => createGridPromise.then(({ filterService, filterConfig }) => {\r\n const { i18n: legacyI18n, ...filterProps } = filterConfig;\r\n const updateToolbarBinded = bind(toolbarEditor.update, toolbarEditor);\r\n\r\n return {\r\n default: () => (\r\n \r\n ),\r\n };\r\n }));\r\n\r\n this.filterViewManager = ();\r\n }\r\n render() {\r\n const {\r\n serverContext: {\r\n CurrentAccount: { TimeZone },\r\n },\r\n panelView,\r\n showTopGridPanel,\r\n renderToolbarContainer,\r\n history,\r\n classes,\r\n selectedSubaccountId,\r\n } = this.props;\r\n\r\n const { hotelCenterI18n } = this.state;\r\n const topGridPanel = showTopGridPanel ? () : null;\r\n const topOfGridContent = (\r\n }>\r\n \r\n {topGridPanel}\r\n \r\n \r\n );\r\n\r\n const stickyTopOfGridContent = (\r\n \r\n {renderToolbarContainer()}\r\n {this.filterViewManager}\r\n \r\n );\r\n return (\r\n }>\r\n {\r\n hotelCenterI18n ?\r\n
\r\n { this.onSubaccountChangedFromSelector(subaccount); }}\r\n history={history}\r\n classes={classes}\r\n />\r\n
: null\r\n }\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nHotelCenterOverviewNew.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.object.isRequired,\r\n CurrentCustomer: PropTypes.object.isRequired,\r\n }).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n preferenceService: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({}),\r\n }).isRequired,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n }).isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n route: PropTypes.string,\r\n })).isRequired,\r\n renderToolbarContainer: PropTypes.func.isRequired,\r\n classes: PropTypes.shape({\r\n overviewPage: PropTypes.string,\r\n }).isRequired,\r\n toolbarPlugin: PropTypes.shape({\r\n plugin: PropTypes.func.isRequired,\r\n }).isRequired,\r\n crossPageSelectPlugin: PropTypes.shape({\r\n plugin: PropTypes.func.isRequired,\r\n }).isRequired,\r\n panelView: PropTypes.func.isRequired,\r\n onGridInjected: PropTypes.func.isRequired,\r\n showTopGridPanel: PropTypes.bool.isRequired,\r\n toolbarSelectedConfig: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types\r\n toolbarUnselectedConfig: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types\r\n updateToolbar: PropTypes.func.isRequired,\r\n resetToolbarVisibility: PropTypes.func.isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n forceHideToolbar: PropTypes.bool.isRequired,\r\n forceResetScrollFlag: PropTypes.bool.isRequired,\r\n gridName: PropTypes.string,\r\n selectedSubaccountId: PropTypes.string,\r\n updateSelectedSubaccount: PropTypes.func,\r\n};\r\n\r\nHotelCenterOverviewNew.defaultProps = {\r\n gridName: 'HotelSubAccountGrid',\r\n selectedSubaccountId: 'selectAllSubAccount',\r\n updateSelectedSubaccount: noop,\r\n};\r\n\r\nexport const StyledOverviewPage = withDefaultStyles(\r\n withTablePageStateManager({ getToolbarConfig })(HotelCenterOverviewNew),\r\n getOverviewPageStyles\r\n);\r\n","import { compact } from 'underscore';\r\nimport { overviewGridPickerConfig } from './overview-grid-picker-config';\r\n\r\n/* global Map */\r\nconst toolbarItemsWithSelection = ({ onSelectCrossPage }) => [\r\n ['selection-widget', {\r\n type: 'selection-widget',\r\n onSelectCrossPage,\r\n }],\r\n ['divider', {\r\n type: 'divider',\r\n }],\r\n ['dropdown-edit', {\r\n id: 'dropdown-edit',\r\n type: 'dropdown',\r\n }],\r\n ['expander', {\r\n type: 'expander',\r\n }],\r\n ['button-clear-selection', {\r\n id: 'button-clear-selection',\r\n type: 'button-clear-selection',\r\n }],\r\n];\r\n\r\nconst toolbarItemsNoSelection = ({ i18n, history, gridName }) => compact([\r\n ['grid-picker', overviewGridPickerConfig({ i18n, history, gridName })],\r\n ['predicate-list', {\r\n id: 'predicate-list',\r\n type: 'custom',\r\n }],\r\n ['expander', {\r\n type: 'expander',\r\n }],\r\n // fix bug 3660668:An unnamed input box appear after click the Download button\r\n // The grid toolbar that is not HotelidGrid or HotelGroupGrid does not display search-box-filter\r\n (gridName === 'HotelIdGrid' || gridName === 'HotelGroupGrid') && ['search-box-filter', {\r\n id: 'search-box-filter',\r\n type: 'search-box',\r\n }],\r\n ['dropdown-column-chooser', {\r\n id: 'dropdown-column-chooser',\r\n type: 'dropdown',\r\n pullRight: true,\r\n }],\r\n ['button-download', {\r\n id: 'button-download',\r\n type: 'nav-item',\r\n iconLeftGlyphName: 'ba-Download',\r\n }],\r\n]);\r\n\r\nexport function getToolbarConfig({\r\n onSelectCrossPage, i18n, history, gridName,\r\n}) {\r\n const toolbarSelectedConfig = new Map();\r\n\r\n toolbarItemsWithSelection({ i18n, onSelectCrossPage }).forEach(([key, value]) => {\r\n toolbarSelectedConfig.set(key, value);\r\n });\r\n\r\n const toolbarUnselectedConfig = new Map();\r\n\r\n toolbarItemsNoSelection({ i18n, history, gridName }).forEach(([key, value]) => {\r\n toolbarUnselectedConfig.set(key, value);\r\n });\r\n\r\n return {\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n };\r\n}\r\n","import { glyphIconStyle, convertToLocalStyle, getColumnSolidBorderStyle, inputFieldStyle, truncatedStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { getBidMultipliersEditorStyle, getBidEditorStyle } from './overview-editor-styles';\r\nimport { getOverviewCommonStyles } from './overview-common-style';\r\n\r\nexport const getOverviewPageStyles = (_, { palette = {} }) => ({\r\n overviewPage: {\r\n ...getOverviewCommonStyles(_, { palette }),\r\n '& .navbar-nav': {\r\n margin: '0 !important',\r\n },\r\n '& .grid-picker': {\r\n maxHeight: 300,\r\n '& ul li .selected': {\r\n background: palette.neutralLighter,\r\n },\r\n '& ul li:nth-child(3)': {\r\n borderBottom: `1px solid ${palette.neutralLight}`,\r\n },\r\n },\r\n '& #bulkEditContainer': {\r\n '& .bulk-edit-container table .noborder': {\r\n borderBottomStyle: 'hidden',\r\n borderLeftStyle: 'hidden',\r\n borderRightStyle: 'hidden',\r\n },\r\n '& .control-label': {\r\n paddingTop: 0,\r\n '& label': {\r\n display: 'inline-block',\r\n },\r\n },\r\n '& .bid-strategy-panel': {\r\n '& .input-control': {\r\n paddingTop: 5,\r\n paddingLeft: 5,\r\n },\r\n },\r\n '& .form-inline': {\r\n marginBottom: 30,\r\n '& div': {\r\n display: 'inline-block',\r\n },\r\n '& input[type=\"checkbox\"]': {\r\n margin: '8px 2px 0 8px',\r\n top: 3,\r\n position: 'relative',\r\n },\r\n '& input[readonly]': {\r\n backgroundColor: '#f4f4f4',\r\n },\r\n '& .form-text.bold': {\r\n fontWeight: 600,\r\n },\r\n '& span.unit-percent, span.form-text': {\r\n marginLeft: 2,\r\n },\r\n '& .input-control': {\r\n position: 'relative',\r\n '& div:nth-child(2)': {\r\n position: 'absolute',\r\n left: 0,\r\n top: 32,\r\n '& .error': {\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n },\r\n },\r\n '& .bid-multipliers-panel': {\r\n ...getBidMultipliersEditorStyle(),\r\n '& .bid-multipliers-content > .col-sm-12': {\r\n padding: 0,\r\n },\r\n },\r\n '& .inline-download-form': {\r\n '& label:focus-within': {\r\n outline: 'none',\r\n },\r\n },\r\n },\r\n '& .hotel-center-overview-grid-container': {\r\n padding: 0,\r\n },\r\n '& .grid-and-disclaim-container': {\r\n '& .bid-inline-edit-popupeditor': {\r\n ...getBidEditorStyle(),\r\n '& .bid-strategy-panel.form-horizontal': {\r\n '& label.checkbox, label.radio': {\r\n left: 1,\r\n },\r\n },\r\n },\r\n\r\n '& .bid-multi-inline-edit-popupeditor': {\r\n width: '715px',\r\n ...getBidMultipliersEditorStyle(),\r\n },\r\n\r\n '& .hotel-group-information-container': {\r\n padding: 0,\r\n borderTop: `1px solid ${palette.neutralLighter}`,\r\n '& .margin-zero': {\r\n margin: 0,\r\n },\r\n '& h3': {\r\n fontSize: 14,\r\n height: 21,\r\n lineHeight: '21px',\r\n },\r\n '& .col-sm-5, .col-sm-7, .col-sm-8, ': {\r\n width: 'auto',\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n },\r\n '& .col-sm-1, .col-sm-6': {\r\n padding: 0,\r\n width: 'auto',\r\n },\r\n '& .glyphicon': {\r\n verticalAlign: 'top',\r\n cursor: 'pointer',\r\n height: 21,\r\n lineHeight: '21px',\r\n },\r\n },\r\n },\r\n '& .column-chooser .column-chooser-bulk-control': {\r\n '& .arrow-button': {\r\n display: 'none',\r\n },\r\n },\r\n '& .HotelSubAccountGrid, .HotelDeviceTypeGrid, .HotelDateGrid, .HotelLengthOfStayGrid, .HotelUserCountryGrid, .HotelSlotTypeGrid, .HotelCountryGrid, .AdvancedBookingGrid, .CheckinDayGrid, .DateTypeGrid, .SiteTypeGrid': {\r\n ...getColumnSolidBorderStyle(0, 2),\r\n },\r\n '& .HotelIdGrid, .HotelGroupGrid': {\r\n ...getColumnSolidBorderStyle(1, 2),\r\n },\r\n ...convertToLocalStyle(glyphIconStyle({ palette })),\r\n ...convertToLocalStyle(inputFieldStyle({ palette })),\r\n ...truncatedStyle,\r\n },\r\n SubAccountSelectorContainer: {\r\n width: 220,\r\n margin: '30px 0 38px 32px',\r\n },\r\n '@global': {\r\n '.hotel-center-overview-subaccount-bar-ui-next-container': {\r\n '& > div': {\r\n display: 'flex',\r\n },\r\n '& .breadcrumb-text-container': {\r\n maxWidth: '180px',\r\n },\r\n '& .current-breadcrumb': {\r\n fontWeight: 600,\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n '& .summary-bar-divider': {\r\n flex: '0 1 auto',\r\n height: '32px',\r\n minWidth: '1px',\r\n alignSelf: 'center',\r\n background: '#e1dfdd',\r\n margin: '0 15px',\r\n },\r\n '& .breadcrumb-divider': {\r\n paddingRight: '8px',\r\n marginLeft: '-7px',\r\n '& .iconba-ChevronRight': {\r\n color: '#605e5c',\r\n fontSize: '12px',\r\n fontWeight: 'normal',\r\n },\r\n },\r\n '& .subaccount-bar-breadcrumbs': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n backgroundColor: '#f5f5f5',\r\n },\r\n '& .subaccount-bar-entity-items': {\r\n display: 'flex',\r\n height: '44px',\r\n },\r\n '& .subaccount-bar-entity-item': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginRight: '24px',\r\n minWidth: '90px',\r\n flexShrink: '0',\r\n },\r\n '& .subaccount-bar-entity-label, .subaccount-bar-entity-value': {\r\n display: 'flex',\r\n flexShrink: '0',\r\n '& > span': {\r\n flexShrink: '0',\r\n },\r\n },\r\n '& .btn ~ .btn': {\r\n marginLeft: '8px',\r\n },\r\n '& .subaccount-bar-bid-multipliers-container': {\r\n '& .subaccount-bar-entity-item': {\r\n minWidth: '140px',\r\n },\r\n },\r\n '& .glyphicon.glyphicon-pencil': {\r\n marginLeft: '10px',\r\n },\r\n '& .glyphicon.glyphicon-pencil::before': {\r\n color: '#005a9e',\r\n content: '\"\\\\E70F\"',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .hide': {\r\n display: 'none !important',\r\n },\r\n '& .show': {\r\n display: 'block !important',\r\n },\r\n '& .grid-groupmenu': {\r\n zIndex: '1090',\r\n position: 'absolute',\r\n display: 'none',\r\n backgroundColor: '#fff',\r\n border: '2px solid #ccc',\r\n minWidth: '100px',\r\n fontSize: '12px',\r\n },\r\n height: '44px',\r\n '& .form-inline': {\r\n '& .radio': {\r\n '& input[type=\"radio\"]': {\r\n marginLeft: '-18px',\r\n },\r\n },\r\n },\r\n '& .subaccount-bid-multipliers-edit-container': {\r\n '& .btn-group.col-sm-12': {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n width: '735px',\r\n maxHeight: 500,\r\n overflow: 'auto',\r\n '& .bid-multipliers-panel': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n ...getBidMultipliersEditorStyle(),\r\n },\r\n '& .subaccount-bid-edit-panel': {\r\n width: '500px',\r\n ...getBidEditorStyle(),\r\n '& .col-sm-4.control-label': {\r\n paddingLeft: 8,\r\n },\r\n '& .bid-strategy-panel.form-horizontal': {\r\n '& label.checkbox, label.radio': {\r\n left: -5,\r\n },\r\n },\r\n },\r\n '& .budget-edit-panel': {\r\n width: '300px',\r\n '& .col-sm-12': {\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n },\r\n },\r\n '& .bid-cap-edit-panel': {\r\n width: '400px',\r\n '& .form-group': {\r\n display: 'block',\r\n },\r\n '& .col-sm-12': {\r\n padding: 0,\r\n },\r\n '& .bid-selection': {\r\n '& .bid-selection-label': {\r\n float: 'none',\r\n },\r\n '& .col-sm-7': {\r\n float: 'none',\r\n marginLeft: 16,\r\n },\r\n '& .col-sm-12.radio': {\r\n padding: 0,\r\n },\r\n },\r\n '& .col-sm-12.radio.form-group': {\r\n marginLeft: '0px',\r\n },\r\n '& .button-panel': {\r\n marginTop: 16,\r\n },\r\n },\r\n '& label': {\r\n display: 'inline-block',\r\n },\r\n '& ul[role=\"alert\"]': {\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n },\r\n '& .error': {\r\n color: palette.redDark,\r\n },\r\n ...getOverviewCommonStyles(_, { palette }),\r\n ...convertToLocalStyle(inputFieldStyle({ palette })),\r\n },\r\n },\r\n});\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport $ from 'jquery';\r\nimport { extend } from 'underscore';\r\nimport { queryify } from '@bingads-webui/url-util';\r\nimport { Callout } from '@bingads-webui-react/callout';\r\n\r\nfunction toUrl(template, scope, type) {\r\n const args = extend({\r\n aid: scope.values.aid,\r\n cid: scope.values.cid,\r\n cmpid: scope.values.campaignId,\r\n adgid: scope.values.adGroupId,\r\n type: type.replace('AdExtension', ''),\r\n });\r\n\r\n return queryify(template, args);\r\n}\r\n\r\nconst rejectionReasonMap = {\r\n CampaignUserPaused: _TL_('You have paused this campaign, so no ads are running. To start running your ads, go to the Campaigns tab, select the check box for this campaign, and on the Edit menu, click Enable.'),\r\n AdGroupUserPaused: _TL_('You have paused this ad group, so no ads are running. To start running your ads, go to the Ad Groups tab, select the check box for this ad group, and then on the Edit menu, click Enable.'),\r\n AssociationDeleted: _TL_('This ad extension is not running because it is not associated with any campaigns.'),\r\n AdExtensionAssociationDeleted: _TL_('This ad extension and all its associations are not running because the ad extension has been deleted.'),\r\n ApplicationDestinationUrlMismatch: _TL_('The app/measurement URL for this app ID/package is incorrect. Please verify that following the App/Measurement URL leads to the correct app.'),\r\n EditorialPending: _TL_('This ad, keyword, product target, or ad extension is not running because it is still pending editorial review. Most reviews are completed within one business day.'),\r\n};\r\n\r\nexport function showRejectionReason(event, model, scope, type, associationType, i18n) {\r\n const adextension = {\r\n extensionId: model.AdExtension.Id,\r\n version: model.AdExtension.Version,\r\n campaignId: model.VerticalSubAccount.Id,\r\n adGroupId: model.VerticalHotelGroup.Id,\r\n Id: model.Id,\r\n delivery: model.AdExtension.Delivery,\r\n };\r\n\r\n const reason = rejectionReasonMap[adextension.delivery];\r\n const activeElement = document && document.activeElement;\r\n\r\n if (reason) {\r\n const calloutContent = {\r\n className: 'callout-basic',\r\n popoverId: 'popover-basic',\r\n closeButton: false,\r\n content: i18n.getString(reason),\r\n focusLockContent: activeElement === event.target,\r\n };\r\n\r\n ReactDOM.render(\r\n ,\r\n document.getElementById('rejectionContainer')\r\n );\r\n\r\n return;\r\n }\r\n\r\n let url = toUrl('/campaign/AdExtensions.m/GetRejectionReason', scope, type === 'sitelink' ? 'Sitelink2' : type);\r\n\r\n url = $.advertiser.setUrlParameter('adExtensionId', adextension.extensionId, url);\r\n url = $.advertiser.setUrlParameter('campaignId', scope.values.campaignId || adextension.campaignId, url);\r\n url = $.advertiser.setUrlParameter('adGroupId', scope.values.adGroupId || adextension.adGroupId, url);\r\n url = $.advertiser.setUrlParameter('version', adextension.version, url);\r\n url = $.advertiser.setUrlParameter('overrideAssociationType', associationType, url);\r\n url = $.advertiser.setUrlParameter('BidataNotRequired', true, url);\r\n\r\n $.advertiser.ajaxPost({\r\n url,\r\n data: {},\r\n ignoreBeforeAjax: true,\r\n dataType: 'html',\r\n onSuccess: (response) => {\r\n const calloutContent = {\r\n className: 'callout-basic',\r\n popoverId: 'popover-basic',\r\n closeButton: false,\r\n // eslint-disable-next-line react/no-danger\r\n content:
,\r\n focusLockContent: activeElement === event.target,\r\n };\r\n\r\n ReactDOM.render(\r\n ,\r\n document.getElementById('rejectionContainer')\r\n );\r\n },\r\n onsuccessEventData: { event, rowId: adextension.Id },\r\n });\r\n}\r\n\r\nexport function hideRejectionReason() {\r\n ReactDOM.unmountComponentAtNode(document.getElementById('rejectionContainer'));\r\n}\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst pageContext = globalContext.require('PageContext');\r\nconst permissions = pageContext && pageContext.Permissions;\r\nconst isHotelCenterDeprecation = permissions && permissions.dynamic.HotelCenterDeprecation;\r\n\r\n/* global Map */\r\nexport function getToolbarConfig({\r\n i18n,\r\n lazyInject,\r\n}) {\r\n const toolbarSelectedConfig = _.chain([\r\n ['dropdown-extension-edit', {\r\n type: 'dropdown',\r\n id: 'dropdown-extension-edit',\r\n iconLeftGlyphName: 'ba-Edit',\r\n button: {\r\n text: i18n.getString(_TL_('Edit')),\r\n classes: ['btn', 'btn-secondary'],\r\n attributes: { tabindex: '0' },\r\n disabled: isHotelCenterDeprecation,\r\n },\r\n menu: {\r\n items: [\r\n {\r\n id: 'delete-association',\r\n iconLeftGlyphName: 'ba-Delete',\r\n text: i18n.getString(_TL_('Delete association')),\r\n onClick: () => {\r\n const gridView = lazyInject().backboneGridView;\r\n gridView.deleteAssociation();\r\n },\r\n }, {\r\n type: 'dropdown-divider',\r\n }, {\r\n id: 'edit-an-extension',\r\n iconLeftGlyphName: 'ba-Edit',\r\n text: i18n.getString(_TL_('Edit an extension')),\r\n onClick: () => {\r\n const gridView = lazyInject().backboneGridView;\r\n gridView.editExtension();\r\n },\r\n },\r\n ],\r\n },\r\n }],\r\n ['expander', {\r\n type: 'expander',\r\n }],\r\n ['button-clear-selection', {\r\n id: 'button-clear-selection',\r\n type: 'button-clear-selection',\r\n }],\r\n ])\r\n .compact()\r\n .reduce(\r\n (map, [key, value]) => {\r\n map.set(key, value);\r\n return map;\r\n },\r\n new Map()\r\n )\r\n .value();\r\n\r\n const toolbarUnselectedConfig = _.chain([\r\n ['create-adextension-button', {\r\n id: 'create-adextension-button',\r\n type: 'button',\r\n text: i18n.getString(_TL_('Create ad extension')),\r\n iconLeftGlyphName: 'ba-Add',\r\n classes: ['btn', 'btn-primary'],\r\n disabled: isHotelCenterDeprecation,\r\n onClick: () => {\r\n const gridView = lazyInject().backboneGridView;\r\n gridView.createAssociations();\r\n },\r\n }],\r\n ])\r\n .compact()\r\n .reduce(\r\n (map, [key, value]) => {\r\n map.set(key, value);\r\n return map;\r\n },\r\n new Map()\r\n )\r\n .value();\r\n\r\n return {\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n };\r\n}\r\n","/* eslint-disable camelcase */\r\n/* eslint-disable import/extensions */\r\n/* eslint-disable import/no-unresolved */\r\n\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport jsdata from '@bingads-webui-campaign-legacy/hotel-center-js-data/index';\r\nimport edm from '@bingads-webui-campaign-legacy/hotel-center-edm/index';\r\nimport { CampaignAdgroupSelectorView } from '@bingads-webui-campaign-react/campaign-adgroup-selector';\r\nimport { CampaignSelectorView } from '@bingads-webui-campaign-react/campaign-selector';\r\n\r\nexport const CAMPAIGN_PAGESIZE = 10;\r\nexport const ADGROUP_PAGESIZE = 6;\r\n\r\nfunction transformCampaignData(data) {\r\n if (!data || !_.isArray(data)) {\r\n return [];\r\n }\r\n\r\n const campaignData = data.map(item => ({\r\n Id: item.Id,\r\n name: item.Name,\r\n status: item.Status,\r\n }));\r\n\r\n return {\r\n totalCount: data.totalCount,\r\n items: campaignData,\r\n };\r\n}\r\n\r\nfunction transformAdgroupData(data) {\r\n if (!data || !_.isArray(data)) {\r\n return [];\r\n }\r\n\r\n const adgroupData = data.map(item => ({\r\n Id: item.Id,\r\n name: item.Name,\r\n status: item.Status,\r\n campaignId: item.SubAccountId,\r\n campaignName: item.SubAccountName,\r\n }));\r\n\r\n return {\r\n totalCount: data.totalCount,\r\n items: adgroupData,\r\n };\r\n}\r\n\r\nconst fecthCampaignData = ({ query = '', pageNumber = 0, pageSize = CAMPAIGN_PAGESIZE }, isSubaccountSelector = true) => {\r\n const jsDataOptions = {\r\n cacheResponse: false,\r\n };\r\n\r\n const queryOption = {\r\n offset: pageNumber * pageSize,\r\n limit: pageSize,\r\n where: { Name: { $contains: query }, Status: { $eq: 'Active' } },\r\n };\r\n\r\n const uiBlockContainer = isSubaccountSelector ? $('.ba-campaign-selector .dropdown-menu') :\r\n $('.ba-campaign-adgroup-selector .dropdown-menu');\r\n\r\n return jsdata.SubAccount.findAll(queryOption, jsDataOptions)\r\n .then(data => transformCampaignData(data)).finally(withUiBlock(uiBlockContainer));\r\n};\r\n\r\nconst fecthAdgroupData = ({\r\n query = '',\r\n pageNumber = 0,\r\n pageSize = ADGROUP_PAGESIZE,\r\n scopeParentItem,\r\n}) => {\r\n const jsDataOptions = {\r\n cacheResponse: false,\r\n };\r\n\r\n const queryOption = {\r\n offset: pageNumber * pageSize,\r\n limit: pageSize,\r\n where: { Name: { $contains: query } },\r\n };\r\n\r\n const uiBlockContainer = $('.ba-campaign-adgroup-selector .dropdown-menu');\r\n\r\n if (scopeParentItem) {\r\n jsDataOptions.entitySet = edm.currentAccount.SubAccounts.$withKey(scopeParentItem.Id).HotelGroups;\r\n }\r\n return jsdata.HotelGroup.findAll(queryOption, jsDataOptions)\r\n .then(data => transformAdgroupData(data)).finally(withUiBlock(uiBlockContainer));\r\n};\r\n\r\nconst campaignSelectorStringKeys = {\r\n emptyListContent: 'CampaignSelector_EmptyList_Content',\r\n listHeader: 'SubaccountHotelSelector_List_Subaccount_Header',\r\n selectEntities: 'AdExtensions_MultiSelect_Select_Subaccounts',\r\n actionBar: 'CampaignSelector_Result_Action_Bar',\r\n resultHeader: 'SubaccountSelector_Result_List_Header',\r\n};\r\n\r\nconst campaignAdgroupSelectorStringKeys = {\r\n emptyListContent: 'CampaignSelector_EmptyList_Content', // No results to display.\r\n campaignListHeader: 'SubaccountHotelSelector_List_Subaccount_Header', // Subaccounts: {{itemCount}}\r\n adgroupListHeader: 'SubaccountHotelSelector_List_Hotel_Header', // Available hotel groups: {{itemCount}}\r\n campaignEntities: 'AdgroupSelector_EntityType_Subaccounts',\r\n adgroupEntities: 'AdgroupSelector_EntityType_Hotelgroups',\r\n selectEntities: 'AdExtensions_MultiSelect_Select_Hotelgroups', // Select hotel group(s)\r\n actionBar: 'CampaignSelector_Result_Action_Bar', // Select all on this page\r\n resultHeader: 'SubaccountHotelSelector_Result_List_Header', // Selected hotel groups: {{itemCount}}\r\n};\r\n\r\nconst createCampaignView = ({ ko_model, i18n }) => new CampaignSelectorView({\r\n fetch: args => fecthCampaignData(args, true),\r\n stringKeys: campaignSelectorStringKeys,\r\n isMultiMode: true,\r\n onSelectDone: values => ko_model.selectedCampaigns(values),\r\n i18n,\r\n});\r\n\r\nconst createCampaignAdgroupView = ({ ko_model, i18n }) => new CampaignAdgroupSelectorView({\r\n campaign: {\r\n pageSize: CAMPAIGN_PAGESIZE,\r\n onFetch: args => fecthCampaignData(args, false),\r\n },\r\n adgroup: {\r\n pageSize: ADGROUP_PAGESIZE,\r\n onFetch: args => fecthAdgroupData(args),\r\n },\r\n onSelectDone: values => ko_model.selectedAdgroups(values),\r\n isMultiMode: true,\r\n stringKeys: campaignAdgroupSelectorStringKeys,\r\n i18n,\r\n});\r\n\r\nexport default {\r\n fecthCampaignData,\r\n fecthAdgroupData,\r\n createCampaignView,\r\n createCampaignAdgroupView,\r\n campaignSelectorStringKeys,\r\n campaignAdgroupSelectorStringKeys,\r\n CAMPAIGN_PAGESIZE,\r\n ADGROUP_PAGESIZE,\r\n};\r\n","import $ from 'jquery';\r\n/* eslint-disable import/extensions,import/no-unresolved, */\r\nimport HotelCenterBaseAdExtensionView from '@bingads-webui-campaign-legacy/hotel-center-ad-extensions/shared/view/hotel-center-base-adextension-view';\r\nimport appState from '@bingads-webui-component-legacy/state/index';\r\nimport { fetchPaginationConfig } from '@bingads-webui-component-legacy/bingads-grid/service/fetch-pagination';\r\n/* eslint-enable */\r\n\r\nimport { CalloutAdExtension } from '@bingads-webui/campaign-odata-schemas';\r\nimport { getGridPreferences } from '@bingads-webui-campaign/summary-grid-helper';\r\n\r\nconst associationTypeGridMap = {\r\n SubAccount: 'CalloutAdExtensionAccountSubAccount',\r\n HotelGroup: 'CalloutAdExtensionAccountHotelGroup',\r\n};\r\n\r\nconst CreateCalloutExtensionGrid = ({\r\n associationType,\r\n createAssociationEditorForUiNext,\r\n columns,\r\n i18n,\r\n toolbarPlugin,\r\n perfMarker,\r\n}) => {\r\n const getGridPreferencesPromise = getGridPreferences({\r\n gridName: associationTypeGridMap[associationType],\r\n dateUtil: {\r\n format: value => i18n.formatDate(value),\r\n },\r\n state: appState,\r\n fetchPaginationConfig,\r\n });\r\n\r\n return getGridPreferencesPromise.then((preferenceConfig) => {\r\n const injectedview = new HotelCenterBaseAdExtensionView({\r\n associationType,\r\n schema: CalloutAdExtension,\r\n createAssociationEditorForUiNext,\r\n columns,\r\n typeString: i18n.getString(_TL_('Callout Extensions')),\r\n overThresholdErrorMessage: i18n.getString(_TL_('Your current selection has more callout extensions than can be displayed. Select a specific campaign or ad group to narrow down the number of callouts or use Bing Ads Editor.')),\r\n uinextToolbarPlugin: toolbarPlugin,\r\n perfMarker,\r\n isUINext: true,\r\n extendPlugins: () => ([toolbarPlugin]),\r\n preferenceConfig,\r\n viewport: $('.callout-extension-table-page-container'),\r\n customHeaderOffset: () => $('.sticky-container').height(),\r\n });\r\n return injectedview;\r\n });\r\n};\r\n\r\n\r\nexport const createSubAccountLevelCalloutExtensionGrid = ({\r\n createAssociationEditorForUiNext,\r\n columns,\r\n i18n,\r\n toolbarPlugin,\r\n perfMarker,\r\n serverContext,\r\n scope,\r\n permissions,\r\n preferenceService,\r\n}) =>\r\n CreateCalloutExtensionGrid({\r\n associationType: 'SubAccount',\r\n createAssociationEditorForUiNext,\r\n columns,\r\n i18n,\r\n toolbarPlugin,\r\n perfMarker,\r\n serverContext,\r\n scope,\r\n permissions,\r\n preferenceService,\r\n });\r\n\r\n\r\nexport const createHotelGroupLevelCalloutExtensionGrid = ({\r\n createAssociationEditorForUiNext,\r\n columns,\r\n i18n,\r\n toolbarPlugin,\r\n perfMarker,\r\n serverContext,\r\n scope,\r\n permissions,\r\n preferenceService,\r\n}) =>\r\n CreateCalloutExtensionGrid({\r\n associationType: 'HotelGroup',\r\n createAssociationEditorForUiNext,\r\n columns,\r\n i18n,\r\n toolbarPlugin,\r\n perfMarker,\r\n serverContext,\r\n scope,\r\n permissions,\r\n preferenceService,\r\n });\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { StyledGridViewWrapper } from '@bingads-webui-campaign-react/grid-view-wrapper';\r\nimport { ScopeSelector } from '@bingads-webui-react/scope-selector';\r\nimport { StyledTablePageContainer } from '@bingads-webui-campaign-react/table-page-container';\r\nimport { TopGridPanel } from '@bingads-webui-campaign-react/top-grid-panel';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withTablePageStateManager } from '@bingads-webui-campaign-react/table-page-state-manager';\r\n\r\n// eslint-disable-next-line\r\nimport { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\n// eslint-disable-next-line\r\nimport gridRowTemplate from '@bingads-webui-campaign-legacy/adextension-callout/template/gridRowTemplate.pug';\r\n\r\nimport { showRejectionReason, hideRejectionReason } from './grid-popover';\r\nimport { getCalloutExtensionStyles } from '../../../style';\r\nimport { getToolbarConfig } from './toolbar-config';\r\nimport { getAssociationConfigs } from './association-config';\r\nimport {\r\n\r\n createSubAccountLevelCalloutExtensionGrid,\r\n createHotelGroupLevelCalloutExtensionGrid\r\n} from './grid-factory';\r\n\r\nconst createCalloutExtensionScopeOptions = ({ i18n }) => [{\r\n name: i18n.getString(_TL_('Sub account')),\r\n value: 'SubAccount',\r\n associationType: 4,\r\n},\r\n{\r\n name: i18n.getString(_TL_('Hotel group')),\r\n value: 'HotelGroup',\r\n associationType: 5,\r\n}];\r\n\r\nconst createGridColumns = ({ i18n }) => [\r\n bingadsGridColumn({\r\n name: 'AdExtension',\r\n property: item => (item.isAggregateRow ? item.AdExtension : _.pick(item.AdExtension, 'Text')),\r\n template: (local) => {\r\n if (_.isEmpty(local.value)) {\r\n return '';\r\n } else if (typeof local.value !== 'object') {\r\n return local.value;\r\n }\r\n return gridRowTemplate({\r\n data: {\r\n Text: local.value.Text,\r\n },\r\n });\r\n },\r\n type: 'string',\r\n sortable: false,\r\n title: i18n.getString(_TL_('Extension')),\r\n helpId: 'Page_CampaignGrids_AdExtensions', // TODO: Update with Hotel Center help id\r\n helpAriaLabelTextTemplate: `${i18n.getString(_TL_('Click to learn more about'))} ${i18n.getString(_TL_('Extension'))}`,\r\n bodyClasses: ['col-AdExtension'],\r\n }),\r\n];\r\n\r\nclass HotelCenterCalloutExtensionPage extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.scopeOptions = createCalloutExtensionScopeOptions({ i18n: props.i18n });\r\n this.i18nHotelCenter = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\n this.state = {\r\n backboneGridView: null,\r\n scopeIndex: 0,\r\n };\r\n\r\n this.createGrid();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.scopeIndex !== this.state.scopeIndex) {\r\n this.createGrid();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.state.backboneGridView) {\r\n this.state.backboneGridView.remove();\r\n }\r\n }\r\n\r\n onScopeChange = (index) => {\r\n this.setState({ scopeIndex: index });\r\n }\r\n\r\n onBeginEditAssociation = (editorOptionsFromGrid) => {\r\n const { showTopOfGridPanel } = this.props;\r\n const { containerConfig, editorConfig } = getAssociationConfigs(editorOptionsFromGrid, { i18nHotelCenter: this.i18nHotelCenter });\r\n\r\n import(/* webpackMode: 'eager' */'@bingads-webui-campaign-legacy/adextension-associations-container/view/index')\r\n .then((AssociationContainer) => {\r\n const AssociationContainerView = AssociationContainer.default;\r\n const editorViewInstance = new AssociationContainerView(containerConfig, editorConfig).render();\r\n\r\n editorViewInstance.on('cancel', () => {\r\n editorViewInstance.remove();\r\n this.props.showTopOfGridPanel(null);\r\n this.refreshGrid();\r\n });\r\n\r\n editorViewInstance.on('save', () => {\r\n editorViewInstance.remove();\r\n this.props.showTopOfGridPanel(null);\r\n this.refreshGrid();\r\n });\r\n const topEditorPanel = (\r\n
\r\n \r\n
\r\n );\r\n\r\n showTopOfGridPanel(topEditorPanel);\r\n });\r\n }\r\n\r\n createGrid() {\r\n const {\r\n i18n,\r\n perfMarker,\r\n onGridInjected,\r\n toolbarPlugin,\r\n serverContext,\r\n scope,\r\n permissions,\r\n preferenceService,\r\n } = this.props;\r\n\r\n if (this.state && this.state.backboneGridView) {\r\n this.state.backboneGridView.remove();\r\n }\r\n if (this.state) {\r\n this.setState({ backboneGridView: null });\r\n }\r\n\r\n const columns = createGridColumns({ i18n });\r\n const scopeSelection = this.scopeOptions[this.state.scopeIndex];\r\n\r\n const gridParams = {\r\n createAssociationEditorForUiNext: (options) => { this.onBeginEditAssociation(options); },\r\n toolbarPlugin,\r\n columns,\r\n i18n,\r\n perfMarker,\r\n serverContext,\r\n scope,\r\n permissions,\r\n preferenceService,\r\n };\r\n\r\n const backboneGridViewPromise = scopeSelection.value === 'SubAccount' ?\r\n createSubAccountLevelCalloutExtensionGrid(gridParams) :\r\n createHotelGroupLevelCalloutExtensionGrid(gridParams);\r\n\r\n const CalloutExtensionGridView = React.lazy(() =>\r\n backboneGridViewPromise.then((injectedView) => {\r\n const { gridView } = injectedView.grid;\r\n\r\n this.installDeliveryStatusReactor(gridView);\r\n gridView.on('didUpdate', () => { this.installDeliveryStatusReactor(gridView); });\r\n\r\n onGridInjected({\r\n backboneGridView: injectedView,\r\n deselectAll: _.isFunction(gridView.deselectAll) ? gridView.deselectAll.bind(gridView) : undefined,\r\n });\r\n\r\n this.setState({ backboneGridView: injectedView });\r\n\r\n return ({\r\n default: () => (),\r\n });\r\n }).catch(err => err));\r\n\r\n this.calloutExtensionGridView = ();\r\n }\r\n\r\n refreshGrid = () => {\r\n if (this.state.backboneGridView) {\r\n this.state.backboneGridView.grid.gridView.refresh(true);\r\n }\r\n }\r\n\r\n installDeliveryStatusReactor = (gridView) => {\r\n if ($('.delivery-info').length > 0) {\r\n $('.trigger-popup').mouseenter(event => this.handleTouchingDeliveryStatusRejectionReason(event, gridView));\r\n $('.delivery-info, .grid-table, .table-page-container').mouseleave(this.handleLeavingDeliveryStatusRejectionReason);\r\n }\r\n }\r\n\r\n handleTouchingDeliveryStatusRejectionReason = (event, gridView) => {\r\n event.stopPropagation();\r\n\r\n const { scope, i18n } = this.props;\r\n const key = gridView.keyOfElement(event.target);\r\n const model = gridView.itemWithKey(key);\r\n const scopeSelection = this.scopeOptions[this.state.scopeIndex];\r\n\r\n if (model) {\r\n showRejectionReason(event, model, scope, 'CalloutAdExtension', scopeSelection.associationType, i18n);\r\n }\r\n };\r\n\r\n handleLeavingDeliveryStatusRejectionReason = (event) => {\r\n if ($(event.relatedTarget).closest('#popover-basic').length === 0) {\r\n hideRejectionReason();\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n panelView,\r\n renderToolbarContainer,\r\n showTopGridPanel,\r\n } = this.props;\r\n\r\n const topGridPanel = showTopGridPanel ? () : null;\r\n\r\n const topOfGridContent = (\r\n }>\r\n \r\n {topGridPanel}\r\n \r\n \r\n );\r\n\r\n const stickyTopOfGridContent = (\r\n \r\n {renderToolbarContainer()}\r\n \r\n );\r\n\r\n const scopeSelector = (\r\n this.onScopeChange(index),\r\n levelItems: this.scopeOptions,\r\n }}\r\n />\r\n );\r\n\r\n return (\r\n }>\r\n
\r\n {scopeSelector}\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nHotelCenterCalloutExtensionPage.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.object.isRequired,\r\n CurrentCustomer: PropTypes.object.isRequired,\r\n }).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n preferenceService: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({}),\r\n }).isRequired,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n }).isRequired,\r\n renderToolbarContainer: PropTypes.func.isRequired,\r\n classes: PropTypes.shape({\r\n CalloutExtension: PropTypes.string,\r\n CalloutExtensionScopeContainer: PropTypes.string,\r\n }).isRequired,\r\n toolbarPlugin: PropTypes.shape({\r\n plugin: PropTypes.func.isRequired,\r\n }).isRequired,\r\n panelView: PropTypes.func.isRequired,\r\n onGridInjected: PropTypes.func.isRequired,\r\n showTopGridPanel: PropTypes.bool.isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n forceHideToolbar: PropTypes.bool.isRequired,\r\n forceResetScrollFlag: PropTypes.bool.isRequired,\r\n showTopOfGridPanel: PropTypes.func.isRequired,\r\n};\r\n\r\nexport const StyledHotelCenterCalloutExtensionPage = withDefaultStyles(\r\n withTablePageStateManager({ getToolbarConfig })(HotelCenterCalloutExtensionPage),\r\n getCalloutExtensionStyles\r\n);\r\n","import _ from 'underscore';\r\n\r\n// eslint-disable-next-line\r\nimport CalloutAssociationEditor from '@bingads-webui-campaign-legacy/adextension-callout/view/associationsEditor';\r\n// eslint-disable-next-line\r\nimport { HotelCenterEntitySelectorService } from '@bingads-webui-campaign-legacy/hotel-center-ad-extensions/shared/service/hotel-center-entity-selector-service';\r\nimport proxy from './entity-selector-proxy';\r\n\r\nexport const getAssociationConfigs = (options, { i18nHotelCenter }) => {\r\n const containerConfig = _.clone(options);\r\n\r\n containerConfig.AssociationEditor = CalloutAssociationEditor;\r\n containerConfig.findScope = association =>\r\n scope =>\r\n (association.Type === 'SubAccount' && scope.campaignId === association.EntityId) ||\r\n (association.Type === 'HotelGroup' && scope.adGroupId === association.EntityId);\r\n\r\n containerConfig.i18nKeys = {\r\n title: 'AdExtensions_Callout_Editor_Title',\r\n multiSelectSubtitle: [],\r\n AdgroupSelectorEntityTypeAdgroups: 'AdgroupSelector_EntityType_Hotelgroups',\r\n AdgroupSelectorEntityTypeCampaigns: 'AdgroupSelector_EntityType_Subaccounts',\r\n AdExtensionsMultiSelectSelectCampaigns: 'AdExtensions_MultiSelect_Select_Subaccounts',\r\n AdExtensionsMultiSelectSelectAdgroups: 'AdExtensions_MultiSelect_Select_Hotelgroups',\r\n };\r\n\r\n // TODO: converting entity type back to Campaign UI entities to reuse\r\n // association container's and editor's code\r\n containerConfig.entityType = containerConfig.entityType === 'subaccount' ? 'campaign' : 'adgroup';\r\n containerConfig.entitySelectorService = new HotelCenterEntitySelectorService();\r\n containerConfig.maxSelectedItemsCount = 20;\r\n containerConfig.isNewEntitySelector = true;\r\n containerConfig.i18nHotelCenter = i18nHotelCenter;\r\n containerConfig.proxy = proxy;\r\n\r\n const editorConfig = {\r\n i18nKeys: {\r\n subtitle: [],\r\n ErrorGridEntityAdgroupColumn: 'ErrorGrid_Entity_HotelGroup_Column',\r\n ErrorGridEntityCampaignColumn: 'ErrorGrid_Entity_SubAccount_Column',\r\n // eslint-disable-next-line camelcase\r\n delete_confirm: 'AdExtensions_Callout_Delete_Warning_Hotel',\r\n // eslint-disable-next-line camelcase\r\n AdExtensions_Edit_Warning: 'AdExtensions_Edit_Warning_Hotel',\r\n },\r\n };\r\n\r\n return { containerConfig, editorConfig };\r\n};\r\n","import {\r\n adsExtensionDoubleListStyle,\r\n entitySelectorStyle,\r\n paginationStyle,\r\n statusStyle,\r\n searchboxStyle,\r\n tableStyle,\r\n glyphIconStyle,\r\n campaignMultiSelectorWithoutDropdownStyle,\r\n convertToLocalStyle,\r\n commonDoubleListBoxStyle,\r\n getColumnSolidBorderStyle,\r\n truncatedStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getCalloutExtensionStyles = (_, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '@global': {\r\n '.bingads-campaign-react-sub-page-menu': {\r\n '& .compared-date-range-picker': {\r\n display: 'none',\r\n },\r\n },\r\n\r\n '.popover-content': {\r\n paddingTop: '20px',\r\n paddingLeft: '24px',\r\n paddingBottom: '20px',\r\n paddingRight: '24px',\r\n },\r\n\r\n '.extension-editor__container': {\r\n '& .alert-image': {\r\n marginTop: 0,\r\n },\r\n\r\n '& .has-error': {\r\n '& label': {\r\n color: palette.black,\r\n },\r\n\r\n '& ul': {\r\n listStyleType: 'none',\r\n paddingLeft: 0,\r\n },\r\n\r\n '& ul.error': {\r\n color: '#A80000',\r\n },\r\n },\r\n },\r\n },\r\n\r\n CalloutExtension: {\r\n '& #create-adextension-button': {\r\n marginTop: '13px',\r\n },\r\n\r\n '& .callout-extension-grid-container': {\r\n '& .grid-parent-container .adextensions-grid': {\r\n paddingLeft: '0px',\r\n\r\n '& .delivery-info': {\r\n '& .status-icon': {\r\n marginRight: 5,\r\n position: 'static',\r\n },\r\n '& .status-warning': {\r\n color: '#D83B01',\r\n },\r\n '& .iconba-Warning': {\r\n color: '#D83B01',\r\n },\r\n '& .status-error': {\r\n color: '#A80000',\r\n },\r\n '& .iconba-ErrorBadge': {\r\n color: '#A80000',\r\n },\r\n },\r\n\r\n '& .trigger-popup': {\r\n width: 'fit-content',\r\n cursor: 'pointer',\r\n display: 'inline',\r\n borderBottom: '1px dashed #0078D4',\r\n },\r\n\r\n '& .sticky-header thead tr:first-child': {\r\n display: 'none',\r\n },\r\n\r\n ...getColumnSolidBorderStyle(1, 2),\r\n },\r\n },\r\n ...convertToLocalStyle(glyphIconStyle({ palette })),\r\n ...truncatedStyle,\r\n },\r\n CalloutExtensionScopeContainer: {\r\n paddingLeft: '32px',\r\n\r\n\r\n '& .bulkedit.association-editor': {\r\n marginLeft: '0px',\r\n paddingLeft: '0px',\r\n width: '1500px',\r\n\r\n '& .doubleListBox ': {\r\n '& .form-group': {\r\n margin: '0px',\r\n },\r\n\r\n '& .row': {\r\n marginLeft: '0px',\r\n marginRight: '0px',\r\n },\r\n\r\n '& .layout-columns-container': {\r\n '& .layout-columns-element:nth-child(2)': {\r\n width: '450px',\r\n },\r\n '& .layout-columns-element:nth-child(3)': {\r\n width: '450px',\r\n },\r\n },\r\n\r\n '& .dlb-filter-alignPlaceholder': {\r\n paddingLeft: '0px',\r\n },\r\n\r\n '& .searchbox-input': {\r\n width: '450px',\r\n },\r\n },\r\n\r\n '& .errors-container': {\r\n '& .status_error:before': {\r\n fontFamily: iconFontFamily,\r\n content: '\"\\\\E946\"',\r\n color: palette.redDark,\r\n marginRight: '4px',\r\n verticalAlign: 'middle',\r\n },\r\n '& .status_success:before': {\r\n fontFamily: iconFontFamily,\r\n content: '\"\\\\E930\"',\r\n color: palette.green,\r\n marginRight: '4px',\r\n verticalAlign: 'middle',\r\n },\r\n '& .error-grid-container': {\r\n paddingTop: '10px',\r\n },\r\n },\r\n },\r\n\r\n '& .bulkedit > .panel': {\r\n '& .panel-heading': {\r\n paddingLeft: '0px',\r\n },\r\n '& .panel-body': {\r\n paddingLeft: '0px',\r\n },\r\n },\r\n\r\n '& .form-group.save-bar': {\r\n paddingLeft: '0px',\r\n },\r\n ...commonDoubleListBoxStyle({ palette, iconFontFamily }),\r\n ...adsExtensionDoubleListStyle({ palette, iconFontFamily }),\r\n ...entitySelectorStyle({ palette, iconFontFamily }),\r\n ...searchboxStyle({ palette, iconFontFamily }),\r\n ...paginationStyle({ palette, iconFontFamily }),\r\n ...statusStyle({ palette, iconFontFamily }),\r\n ...tableStyle({ palette, iconFontFamily }),\r\n ...campaignMultiSelectorWithoutDropdownStyle({ palette, iconFontFamily }),\r\n },\r\n});\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport Promise from 'bluebird';\r\nimport React from 'react';\r\n\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n// eslint-disable-next-line\r\nimport { HotelCenterIntelligence as HotelCenterIntelligencePromise } from '@bingads-webui-campaign-legacy/hotel-center-intelligence/intelligence-ui-next';\r\n// eslint-disable-next-line\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\n\r\nimport {\r\n getIntelligencePageStyles,\r\n getFeedUploadStyles,\r\n getFeedStatusStyles,\r\n getMatchReportStyles,\r\n} from '../../style';\r\n\r\nimport { StyledHotelCenterCalloutExtensionPage } from './ad-extension/callout-extension-page';\r\n\r\n\r\nconst p$daterange = () => Promise.resolve(state.get('$daterange'));\r\n\r\nclass HotelCenterIntelligenceNew extends React.PureComponent {\r\n componentDidMount() {\r\n HotelCenterIntelligencePromise.then((HotelCenterIntelligence) => {\r\n const View = _.property(this.props.viewName)(HotelCenterIntelligence);\r\n this.view = new View({\r\n isForVNext: true,\r\n isNewEntitySelector: true,\r\n p$daterange,\r\n perfMarker: this.props.perfMarker,\r\n });\r\n $('#hotel-center-intelligence').append(this.view.render().$el);\r\n });\r\n }\r\n render() {\r\n return (\r\n
\r\n );\r\n }\r\n}\r\n\r\nHotelCenterIntelligenceNew.propTypes = {\r\n styleClassName: PropTypes.string.isRequired,\r\n viewName: PropTypes.string.isRequired,\r\n perfMarker: PropTypes.string.isRequired,\r\n};\r\n\r\nconst FeedUploadPage = props => ();\r\nFeedUploadPage.propTypes = {\r\n classes: PropTypes.shape({\r\n FeedUpload: PropTypes.object.isRequired,\r\n }).isRequired,\r\n perfMarker: PropTypes.string.isRequired,\r\n};\r\nexport const StyledFeedUploadPage = withDefaultStyles(FeedUploadPage, getFeedUploadStyles);\r\n\r\nexport const StyledCalloutExtensionsPage = StyledHotelCenterCalloutExtensionPage;\r\n\r\nconst BookingReportPage = props => ();\r\nBookingReportPage.propTypes = {\r\n classes: PropTypes.shape({\r\n BookingReport: PropTypes.object.isRequired,\r\n }).isRequired,\r\n perfMarker: PropTypes.string.isRequired,\r\n};\r\nexport const StyledBookingReportPage = withDefaultStyles(BookingReportPage, getIntelligencePageStyles);\r\n\r\nconst ShareOfVoicePage = props => ();\r\nShareOfVoicePage.propTypes = {\r\n classes: PropTypes.shape({\r\n ShareOfVoice: PropTypes.object.isRequired,\r\n }).isRequired,\r\n perfMarker: PropTypes.string.isRequired,\r\n};\r\nexport const StyledShareOfVoicePage = withDefaultStyles(ShareOfVoicePage, getIntelligencePageStyles);\r\n\r\nconst FeedStatusPage = props => ();\r\nFeedStatusPage.propTypes = {\r\n classes: PropTypes.shape({\r\n FeedStatus: PropTypes.object.isRequired,\r\n }).isRequired,\r\n perfMarker: PropTypes.string.isRequired,\r\n};\r\nexport const StyledFeedStatusPage = withDefaultStyles(FeedStatusPage, getFeedStatusStyles);\r\n\r\nconst MatchReportPage = props => ();\r\nMatchReportPage.propTypes = {\r\n classes: PropTypes.shape({\r\n MatchReport: PropTypes.object.isRequired,\r\n }).isRequired,\r\n perfMarker: PropTypes.string.isRequired,\r\n};\r\nexport const StyledMatchReportPage = withDefaultStyles(MatchReportPage, getMatchReportStyles);\r\n","import { convertToLocalStyle, getColumnSolidBorderStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { getTableStyles, getTableGlobalStyles } from '@bingads-webui-campaign-react/grid-view-wrapper';\r\nimport { merge } from '@bingads-webui/primitive-utilities';\r\n\r\nexport const getFeedUploadStyles = (_, { palette = {} }) => ({\r\n '@global': {\r\n '.bingads-campaign-react-sub-page-menu': {\r\n '& .compared-date-range-picker': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n FeedUpload: merge({\r\n marginLeft: '32px',\r\n marginTop: '32px',\r\n display: 'flex',\r\n overflow: 'auto',\r\n flex: '1 0 1px',\r\n flexDirection: 'column',\r\n\r\n '& .intelligence-feed-upload-container': {\r\n '& .disabled': {\r\n pointerEvents: 'none',\r\n },\r\n\r\n '& .form-group': {\r\n marginRight: 0,\r\n },\r\n\r\n '& .form-group:nth-child(1)': {\r\n display: 'none',\r\n },\r\n\r\n '& .form-group:nth-child(2)': {\r\n lineHeight: '19px',\r\n marginBottom: '52px',\r\n },\r\n\r\n '& .form-group:nth-child(3)': {\r\n marginBottom: 8,\r\n '& .col-sm-1': {\r\n width: 'auto',\r\n },\r\n '& .col-sm-2.type-bold': {\r\n padding: 0,\r\n },\r\n },\r\n\r\n '& .form-group:nth-child(4)': {\r\n '& .col-sm-4': {\r\n paddingRight: 8,\r\n '& .file-picker': {\r\n '& .file-text': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n display: 'inherit',\r\n },\r\n },\r\n },\r\n '& .col-sm-2': {\r\n padding: 0,\r\n '& .btn': {\r\n lineHeight: '32px',\r\n },\r\n },\r\n },\r\n\r\n '& .form-group:nth-child(5)': {\r\n marginTop: '20px',\r\n },\r\n '& .table-bordered': {\r\n border: 0,\r\n },\r\n },\r\n '& .feed-upload-grid': getTableStyles(_, { palette }),\r\n ...getColumnSolidBorderStyle(0, 2),\r\n }, convertToLocalStyle(getTableGlobalStyles(_, { palette }))),\r\n});\r\n","import { getIntelligenceCommonStyles } from './intelligence-common-style';\r\n\r\nexport const getMatchReportStyles = (_, { palette = {} }) => ({\r\n '@global': {\r\n '.bingads-campaign-react-sub-page-menu': {\r\n '& .compared-date-range-picker': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n\r\n MatchReport: {\r\n marginLeft: '32px',\r\n marginTop: '32px',\r\n display: 'flex',\r\n overflow: 'auto',\r\n flex: '1 0 1px',\r\n flexDirection: 'column',\r\n\r\n '& .match-report-container': {\r\n '& .match-report-desc:first-child': {\r\n\r\n '& .match-report-title': {\r\n display: 'none',\r\n },\r\n\r\n '& .match-report-desc': {\r\n marginBottom: '34px',\r\n\r\n '& h5': {\r\n marginTop: '15px',\r\n marginBottom: '15px',\r\n fontSize: '14px',\r\n fontWeight: 'normal',\r\n },\r\n },\r\n\r\n '& .match-report-result-container': {\r\n\r\n '& .form-group:nth-child(1)': {\r\n marginBottom: '33px',\r\n\r\n '& label': {\r\n float: 'none',\r\n },\r\n\r\n '& .col-sm-10': {\r\n fontWeight: 'normal',\r\n },\r\n },\r\n\r\n '& .form-group:nth-child(2)': {\r\n marginBottom: '33px',\r\n\r\n '& label': {\r\n float: 'none',\r\n },\r\n\r\n '& .col-sm-2': {\r\n fontSize: '16px',\r\n },\r\n\r\n '& .col-sm-10 label': {\r\n fontWeight: 'normal',\r\n paddingTop: '0px',\r\n paddingBottom: '0px',\r\n },\r\n },\r\n },\r\n },\r\n ...getIntelligenceCommonStyles(_, { palette }),\r\n },\r\n },\r\n});\r\n","import $ from 'jquery';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\n\r\nimport * as preferenceService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport sessionStore from '@bingads-webui-component-legacy/js-data-storage/session-storage';\r\nimport * as preferenceStoreFactory from '@bingads-webui-component-legacy/bingads-grid/service/filter-preferences';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getAssignmentPageStyles } from '../style';\r\n\r\n// eslint-disable-next-line\r\nimport { HotelCenterAssignment as HotelCenterAssignmentPromise } from '@bingads-webui-campaign-legacy/hotel-center-assignment/assignment-ui-next';\r\n\r\nclass HotelCenterAssignmentNew extends React.PureComponent {\r\n componentDidMount() {\r\n HotelCenterAssignmentPromise.bind(this).then((HotelCenterAssignment) => {\r\n this.view = new HotelCenterAssignment({\r\n isUINext: true,\r\n router: {\r\n navigateToSetup: () => {\r\n if (this.props && this.props.history) {\r\n this.props.history.push({\r\n pathname: '/campaign/vnext/hotelcenter/setup',\r\n search: this.props.history.location.search,\r\n });\r\n }\r\n },\r\n },\r\n perfMarker: this.props.perfMarker,\r\n preferenceService,\r\n sessionStore,\r\n preferenceStoreFactory,\r\n });\r\n this.view.render();\r\n $('#hotel-center-assignment').append(this.view.$el);\r\n });\r\n }\r\n render() {\r\n return (\r\n
\r\n );\r\n }\r\n}\r\n\r\nHotelCenterAssignmentNew.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.any).isRequired,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n location: PropTypes.shape({\r\n pathname: PropTypes.string,\r\n search: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n};\r\n\r\nexport const StyledAssignmentPage = withDefaultStyles(HotelCenterAssignmentNew, getAssignmentPageStyles);\r\n","import {\r\n glyphIconStyle,\r\n helpbuttonStyle,\r\n inputFieldStyle,\r\n searchboxStyle,\r\n buttonInputStyle,\r\n uiblockerStyle,\r\n linkStyle,\r\n convertToLocalStyle,\r\n tableStyle,\r\n paginationStyle,\r\n truncatedStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { getTableStyles } from '@bingads-webui-campaign-react/grid-view-wrapper';\r\n\r\nexport const getAssignmentPageStyles = (_, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n assignment: {\r\n margin: '20px 0px',\r\n display: 'flex',\r\n flex: '1 0 1px',\r\n overflow: 'auto',\r\n flexDirection: 'column',\r\n\r\n '& .alert': {\r\n fontSize: 14,\r\n },\r\n\r\n '& .error': {\r\n color: palette.redDark,\r\n },\r\n\r\n '& ul[role=alert]': {\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n },\r\n\r\n '& .inactive': {\r\n color: palette.neutralTertiary,\r\n },\r\n\r\n '& .hotel-groups__container': {\r\n width: '100%',\r\n '& .create-button__container': {\r\n width: 'auto',\r\n },\r\n '& .associations-download__container': {\r\n width: 'auto',\r\n padding: 0,\r\n '& input': {\r\n background: palette.white,\r\n color: palette.neutralPrimary,\r\n border: `1px solid ${palette.neutralSecondaryAlt}`,\r\n },\r\n '& input.disabled': {\r\n background: palette.neutralLighter,\r\n color: palette.neutralTertiary,\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n '& .subaccount-edit__container': {\r\n width: 'auto',\r\n height: 32,\r\n lineHeight: '32px',\r\n '& span': {\r\n padding: '0px 5px',\r\n },\r\n },\r\n '& .hotel-groups-list__container': {\r\n display: 'none',\r\n },\r\n '& .subaccount-hotelgroup-edit-panel-container': {\r\n marginBottom: 32,\r\n '& button.is-disabled .edit-menu-icon': {\r\n color: palette.neutralTertiary,\r\n },\r\n '& .edit-menu-icon': {\r\n margin: '0px 4px',\r\n top: 0,\r\n color: palette.themePrimary,\r\n },\r\n },\r\n },\r\n\r\n '& .search-box': {\r\n '& input': {\r\n height: 32,\r\n paddingLeft: 30,\r\n border: `1px solid ${palette.neutralSecondaryAlt}`,\r\n },\r\n '& input:hover': {\r\n border: `1px solid ${palette.neutralPrimary}`,\r\n outline: 'none',\r\n },\r\n '& input:focus': {\r\n border: `1px solid ${palette.themePrimary}`,\r\n outline: 'none',\r\n },\r\n '& button': {\r\n background: 'none',\r\n border: 'none',\r\n position: 'absolute',\r\n left: 21,\r\n top: 6,\r\n width: 21,\r\n height: 21,\r\n '& .filter_search_icon_small': {\r\n position: 'relative',\r\n left: -3,\r\n },\r\n },\r\n '& button:focus': {\r\n border: `1px solid ${palette.neutralSecondaryAlt}`,\r\n outline: 'none',\r\n },\r\n },\r\n\r\n '& .hotel-group-associations-no-subaccount-container': {\r\n marginLeft: 15,\r\n },\r\n\r\n '& .hotel-associations__container': {\r\n width: 1500,\r\n marginTop: 30,\r\n ...tableStyle({ palette }),\r\n ...getTableStyles(_, { palette }),\r\n ...paginationStyle({ palette }),\r\n '& .table-bordered': {\r\n width: 600,\r\n },\r\n '& .group-edit-menu': {\r\n display: 'none',\r\n },\r\n '& .filter-bar': {\r\n backgroundColor: palette.neutralLighter,\r\n '& .panel-body': {\r\n width: 'fit-content',\r\n height: 'fit-content',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .filter_title_collapsed': {\r\n display: 'none',\r\n },\r\n '& .filter_row_readonly': {\r\n display: 'inline-block',\r\n backgroundColor: palette.neutralSecondary,\r\n color: palette.white,\r\n fontSize: 14,\r\n lineHeight: '24px',\r\n padding: '0px 30px 0px 10px',\r\n maxWidth: 550,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n '& .humanized': {\r\n margin: '0px 10px',\r\n '& .filter_operator': {\r\n margin: '0px 5px',\r\n },\r\n },\r\n },\r\n '& .filter_links': {\r\n display: 'inline-block',\r\n fontSize: 14,\r\n lineHeight: '24px',\r\n '& .editFilterLink': {\r\n display: 'none',\r\n },\r\n '& .removeFilterLink': {\r\n paddingLeft: 8,\r\n },\r\n '& a:nth-child(4)': {\r\n display: 'none',\r\n },\r\n '& .remove_icon_gray_16': {\r\n fontFamily: iconFontFamily,\r\n color: palette.white,\r\n cursor: 'pointer',\r\n marginLeft: -25,\r\n display: 'inline',\r\n position: 'absolute',\r\n },\r\n '& .remove_icon_gray_16:before': {\r\n content: '\"\\\\E711\"',\r\n },\r\n },\r\n },\r\n '& .hotel-in-group__container, .hotel-out-group__container': {\r\n '& .group-information-line__container': {\r\n padding: 0,\r\n marginBottom: 10,\r\n '& .group-information-name': {\r\n padding: 0,\r\n fontWeight: 600,\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n },\r\n '& > div > div:nth-child(2) > div.col-sm-12': {\r\n paddingRight: 0,\r\n },\r\n '& .toolbar-container': {\r\n marginBottom: 10,\r\n },\r\n '& input[type=\"checkbox\"]:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n '& .pagination-control .page-size-selector:focus': {\r\n borderColor: palette.themePrimary,\r\n },\r\n },\r\n '& .hotel-in-group__container': {\r\n '& .status-message__container .status-message': {\r\n display: 'none',\r\n },\r\n '& colgroup': {\r\n '& col.col-selection': {\r\n width: 50,\r\n },\r\n '& col.col-PartnerHotelId': {\r\n width: 150,\r\n },\r\n '& col.col-Name': {\r\n width: 250,\r\n },\r\n '& col.col-HotelGroupName': {\r\n width: 150,\r\n },\r\n },\r\n },\r\n '& .hotel-association-assignment-container': {\r\n marginTop: 70,\r\n paddingLeft: 30,\r\n '& .btn-primary': {\r\n marginBottom: 20,\r\n },\r\n '& .btn-primary.disabled': {\r\n color: palette.neutralSecondary,\r\n },\r\n '& .btn-primary.disabled:focus': {\r\n color: palette.neutralSecondary,\r\n borderColor: palette.neutralLighter,\r\n backgroundColor: palette.neutralLighter,\r\n },\r\n },\r\n '& .hotel-out-group__container': {\r\n '& colgroup': {\r\n '& col.col-selection': {\r\n width: 50,\r\n },\r\n '& col.col-PartnerHotelId': {\r\n width: 150,\r\n },\r\n '& col.col-HotelName': {\r\n width: 200,\r\n },\r\n '& col.col-HotelGroupName': {\r\n width: 100,\r\n },\r\n '& col.col-SubAccountName': {\r\n width: 100,\r\n },\r\n },\r\n },\r\n '& .bingadsgrid': {\r\n width: 600,\r\n '& .table > thead > tr > th': {\r\n borderBottom: `2px solid ${palette.neutralSecondaryAlt} !important`,\r\n },\r\n '& .table > tbody > tr > td': {\r\n padding: '8px 10px',\r\n },\r\n '& thead.header': {\r\n '& tr th:first-child': {\r\n paddingLeft: 10,\r\n },\r\n '& tr th.column-header span.grid-header-text': {\r\n wordBreak: 'keep-all',\r\n overflowWrap: 'unset',\r\n },\r\n },\r\n '& .footer .header-subview-0': {\r\n paddingTop: 0,\r\n },\r\n '& .pagination-control': {\r\n '& .text': {\r\n padding: 8,\r\n },\r\n '& .page-number-input': {\r\n marginLeft: 0,\r\n },\r\n },\r\n\r\n '& input[type=\"checkbox\"]:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n outlineOffset: 1,\r\n },\r\n },\r\n },\r\n ...convertToLocalStyle(glyphIconStyle({ palette })),\r\n ...convertToLocalStyle(helpbuttonStyle({ palette })),\r\n ...convertToLocalStyle(inputFieldStyle({ palette })),\r\n ...buttonInputStyle({ palette }),\r\n ...searchboxStyle({ palette }),\r\n ...linkStyle,\r\n ...truncatedStyle,\r\n },\r\n '@global': {\r\n '.bingads-campaign-react-sub-page-menu .compared-date-range-picker': {\r\n display: 'none',\r\n },\r\n '.hotel-center-group-dialog': {\r\n '& .input-control': {\r\n marginTop: 15,\r\n marginBottom: 15,\r\n },\r\n '& ul[role=alert]': {\r\n color: palette.redDark,\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n },\r\n '& .hotel-center-group-dialog-save.disabled': {\r\n background: palette.neutralLighter,\r\n color: palette.neutralTertiary,\r\n },\r\n '& .hotel-center-group-dialog-save': {\r\n background: palette.themePrimary,\r\n color: palette.white,\r\n },\r\n '& .close': {\r\n fontSize: 28,\r\n },\r\n },\r\n '.hotel-center-associate-attention-dialog': {\r\n '& .attention-information-dismiss__container': {\r\n margin: '20px 0px',\r\n },\r\n '& .hotel-center-associate-attention-dialog-save': {\r\n backgroundColor: palette.themePrimary,\r\n color: palette.white,\r\n },\r\n '& .close': {\r\n fontSize: 28,\r\n },\r\n },\r\n '.ms-Dropdown-callout': {\r\n '& .ms-SearchBox': {\r\n borderColor: palette.neutralTertiary,\r\n margin: 8,\r\n },\r\n '& .ms-SearchBox-icon': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 14,\r\n content: '\"\\\\E721\"',\r\n },\r\n '& .nav-tree-container': {\r\n '& a.ms-Nav-link': {\r\n color: palette.neutralPrimary,\r\n '& > span > span': {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n },\r\n '& .create-new-icon': {\r\n left: -20,\r\n color: palette.themePrimary,\r\n },\r\n '& #nav-action-create-new': {\r\n marginLeft: -15,\r\n },\r\n },\r\n },\r\n ...uiblockerStyle({ palette }),\r\n },\r\n});\r\n","import $ from 'jquery';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getSetupPageStyes } from '../style';\r\n\r\n// eslint-disable-next-line\r\nimport { HotelCenteSetup as HotelCenteSetupPromise } from '@bingads-webui-campaign-legacy/hotel-center-setup/setup-ui-next';\r\n\r\nclass HotelCenterSetupNew extends React.PureComponent {\r\n componentDidMount() {\r\n HotelCenteSetupPromise.bind(this).then((HotelCenterSetup) => {\r\n this.view = new HotelCenterSetup({\r\n isUINext: true,\r\n router: {\r\n navigateToOverview: () => {\r\n if (this.props && this.props.history) {\r\n this.props.history.push({\r\n pathname: '/campaign/vnext/hotelcenter/overview/hotelsubaccountgrid',\r\n search: this.props.history.location.search,\r\n });\r\n }\r\n },\r\n },\r\n perfMarker: this.props.perfMarker,\r\n });\r\n $('#hotel-center-setup').append(this.view.render().$el);\r\n });\r\n }\r\n render() {\r\n return (\r\n
\r\n );\r\n }\r\n}\r\n\r\nHotelCenterSetupNew.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.any).isRequired,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n location: PropTypes.shape({\r\n pathname: PropTypes.string,\r\n search: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n};\r\n\r\nexport const StyledSetupPage = withDefaultStyles(HotelCenterSetupNew, getSetupPageStyes);\r\n","import {\r\n glyphIconStyle,\r\n helpbuttonStyle,\r\n inputFieldStyle,\r\n buttonInputStyle,\r\n uiblockerStyle,\r\n linkStyle,\r\n convertToLocalStyle,\r\n truncatedStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getSetupPageStyes = (_, { palette = {} }) => ({\r\n setupPage: {\r\n margin: '20px 32px',\r\n\r\n '& .alert': {\r\n fontSize: 14,\r\n },\r\n\r\n '& .error': {\r\n color: palette.redDark,\r\n },\r\n\r\n '& ul[role=alert]': {\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n },\r\n\r\n '& .inactive': {\r\n color: palette.neutralTertiary,\r\n },\r\n\r\n '& .header': {\r\n '& h1': {\r\n fontSize: 20,\r\n fontWeight: 600,\r\n lineHeight: '27px',\r\n marginTop: 0,\r\n },\r\n '& h3': {\r\n fontSize: 14,\r\n fontWeight: 400,\r\n lineHeight: '20px',\r\n },\r\n },\r\n\r\n '& nav.hotel-center-navbar': {\r\n margin: '20px -32px 10px -32px',\r\n boxShadow: '0px 4px 8px rgba(0, 0, 0, 0.1)',\r\n background: 'none',\r\n '& ul.nav.navbar-nav': {\r\n fontSize: 18,\r\n lineHeight: '44px',\r\n marginLeft: 32,\r\n '& li.active a': {\r\n background: 'none',\r\n color: palette.neutralPrimary,\r\n fontWeight: 600,\r\n fontSize: 18,\r\n borderBottom: `2px solid ${palette.themePrimary}`,\r\n height: 'fit-content',\r\n cursor: 'default',\r\n },\r\n '& li.normal a': {\r\n color: palette.neutralSecondary,\r\n cursor: 'default',\r\n },\r\n },\r\n },\r\n\r\n '& .account-name-panel': {\r\n '& .form-group': {\r\n marginBottom: 8,\r\n },\r\n '& .input-group': {\r\n marginBottom: 15,\r\n },\r\n },\r\n\r\n '& .button-panel': {\r\n '& .btn-primary': {\r\n marginRight: 10,\r\n },\r\n },\r\n\r\n '& .budget-bid-panel': {\r\n width: 800,\r\n\r\n '& .info-header': {\r\n marginBottom: 20,\r\n\r\n '& .col-sm-1': {\r\n minWidth: 150,\r\n },\r\n '& h3': {\r\n fontSize: 14,\r\n fontWeight: 400,\r\n margin: '10px 0px',\r\n },\r\n '& .type-bold': {\r\n fontWeight: 600,\r\n },\r\n },\r\n\r\n '& .budget-bid-setting': {\r\n '& .col-sm-2, .col-sm-3': {\r\n width: '100%',\r\n },\r\n '& .control-label': {\r\n textAlign: 'left',\r\n '& label': {\r\n display: 'inline',\r\n },\r\n },\r\n '& .input-control': {\r\n width: 400,\r\n marginTop: 5,\r\n },\r\n '& .input-group-addon': {\r\n border: 'none',\r\n background: 'none',\r\n color: palette.neutralPrimary,\r\n },\r\n '& .form-group': {\r\n marginBottom: 10,\r\n },\r\n '& .radio input[type=\"radio\"]': {\r\n marginLeft: 0,\r\n },\r\n '& .bid-strategy-panel': {\r\n marginLeft: -20,\r\n '& label': {\r\n fontWeight: 400,\r\n },\r\n },\r\n },\r\n\r\n '& .bid-selection': {\r\n '& .col-sm-12': {\r\n margin: 0,\r\n },\r\n '& .radio label': {\r\n padding: 0,\r\n marginLeft: -8,\r\n },\r\n '& .col-sm-7.show': {\r\n paddingLeft: 0,\r\n marginLeft: -15,\r\n },\r\n },\r\n },\r\n\r\n '& .save-and-go-next-btn[disabled]': {\r\n cursor: 'not-allowed',\r\n background: '#f3f2f1',\r\n borderColor: 'transparent',\r\n color: '#a19f9d',\r\n },\r\n\r\n ...convertToLocalStyle(glyphIconStyle({ palette })),\r\n ...convertToLocalStyle(helpbuttonStyle({ palette })),\r\n ...convertToLocalStyle(inputFieldStyle({ palette })),\r\n ...buttonInputStyle({ palette }),\r\n ...linkStyle,\r\n ...truncatedStyle,\r\n },\r\n '@global': {\r\n '.bingads-campaign-react-sub-page-menu .compared-date-range-picker': {\r\n display: 'none',\r\n },\r\n ...uiblockerStyle({ palette }),\r\n },\r\n});\r\n","import { Route, Switch } from 'react-router';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport $ from 'jquery';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport { MessageBar, MessageBarType } from '@fluentui/react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { ContentFooter } from '@bingads-webui-campaign-react/content-footer';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport {\r\n StyledOverviewPage,\r\n StyledAssignmentPage,\r\n StyledSetupPage,\r\n StyledFeedUploadPage,\r\n StyledCalloutExtensionsPage,\r\n StyledBookingReportPage,\r\n StyledShareOfVoicePage,\r\n StyledFeedStatusPage,\r\n StyledMatchReportPage,\r\n} from './page';\r\n\r\n// eslint-disable-next-line\r\nimport { bootstrapHotelCenter } from '@bingads-webui-campaign-legacy/hotel-center/bootstrap/bootstrap-ui-next';\r\n// eslint-disable-next-line\r\nimport { HotelCenterUploadedReconReport } from '@bingads-webui-campaign-react/hotel-center-uploaded-recon-report-page';\r\n// eslint-disable-next-line\r\nimport { HotelCenterProcessedReconReport } from '@bingads-webui-campaign-react/hotel-center-processed-recon-report-page';\r\n\r\nexport const getHotelCenterShellStyles = () => ({\r\n contentFooter: {\r\n display: 'flex',\r\n flexDirection: 'column-reverse',\r\n width: '100%',\r\n position: 'static',\r\n marginTop: 'auto',\r\n minWidth: '1032px',\r\n },\r\n});\r\nclass UnStyledHotelCenter extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n selectedSubaccountId: 'selectAllSubAccount',\r\n };\r\n const { permissions } = props;\r\n this.isHotelCenterDeprecation = permissions && permissions.dynamic.HotelCenterDeprecation;\r\n\r\n if ($('.visible-element .summary-bar-breadcrumb+.summary-bar-divider')) {\r\n $('.visible-element .summary-bar-breadcrumb+.summary-bar-divider').addClass('hide');\r\n }\r\n\r\n this.ReactView = React.lazy(() => bootstrapHotelCenter().then((results) => {\r\n if (results && results.isHotelAdsDBPilotEnabled === false) {\r\n return {\r\n default: () => (\r\n
\r\n \r\n {i18n => (\r\n
\r\n {i18n.getString(_TL_('This account is currently being set up to support Lodging campaigns. Please contact your account manager or msalodgingsolutions@microsoft.com.'))}\r\n
\r\n )}\r\n
\r\n
),\r\n };\r\n }\r\n\r\n if (results && results.isHotelAdsDBPilotEnabled && results.isPageReady) {\r\n if (results.pageId === 'setup' && props && props.history) {\r\n props.history.push({\r\n pathname: '/campaign/vnext/hotelcenter/setup',\r\n search: props.history.location.search,\r\n });\r\n }\r\n return ({\r\n default: () => (\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\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\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\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\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\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\n )}\r\n />\r\n \r\n ),\r\n });\r\n }\r\n\r\n return { default: () => null };\r\n }));\r\n }\r\n\r\n updateSelectedSubaccount = (selectedSubaccountId) => {\r\n this.setState({\r\n selectedSubaccountId,\r\n });\r\n };\r\n\r\n getBannerMessage = (i18n) => {\r\n const getLodgingCampaignLink = text => {text}\r\n const getReadmoreLink = text => {text}\r\n\r\n return (\r\n <>\r\n \r\n \r\n )\r\n };\r\n\r\n render() {\r\n return (\r\n }>\r\n \r\n {i18n => (\r\n \r\n {this.getBannerMessage(i18n)}\r\n \r\n )}\r\n \r\n \r\n {this.props.history.location.pathname.includes('overview') ? null : (\r\n
\r\n \r\n
)\r\n }\r\n
);\r\n }\r\n}\r\n\r\nUnStyledHotelCenter.propTypes = {\r\n classes: PropTypes.shape({\r\n contentFooter: PropTypes.string,\r\n }).isRequired,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n location: PropTypes.shape({\r\n pathname: PropTypes.string,\r\n search: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({}),\r\n }).isRequired,\r\n};\r\n\r\nexport const StyledHotelCenter = withDefaultStyles(UnStyledHotelCenter, getHotelCenterShellStyles);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { mergeI18n } from '@bingads-webui-campaign-react/i18n-merger';\r\nimport { HotelCenterReconReportGrid } from '@bingads-webui-campaign-react/hotel-center-recon-report-grid';\r\nimport getStyles from './style/index';\r\n\r\nconst hotelCenterI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\nclass HotelCenterProcessedReconReport extends React.PureComponent {\r\n render() {\r\n const { classes, i18n, perfMarker } = this.props;\r\n const mergedI18n = mergeI18n(hotelCenterI18n, i18n);\r\n return (\r\n \r\n
\r\n

{i18n.getString(_TL_('The Processed Reconciliation Report allow you to view which stayed booking in the report.'))}

\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nHotelCenterProcessedReconReport.propTypes = {\r\n classes: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n perfMarker: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nconst Wrapped = withDefaultStyles(HotelCenterProcessedReconReport, getStyles);\r\n\r\nexport { Wrapped as HotelCenterProcessedReconReport };\r\n","export default function getStyles() {\r\n return {\r\n '@global': {\r\n\r\n },\r\n marginContainer: {\r\n marginLeft: 32,\r\n marginTop: 32,\r\n paddingRight: 30,\r\n display: 'flex',\r\n overflow: 'auto',\r\n flex: '1 0 1px',\r\n flexDirection: 'column',\r\n },\r\n };\r\n}\r\n","import $ from 'jquery';\r\nimport { fromLegacyTimeZone, toIANATimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { ReconciliationReport } from '@bingads-webui/hotel-odata-schemas';\r\nimport jsdata from '@bingads-webui-campaign-legacy/hotel-center-js-data/index';\r\nimport { getHotelCenterUtils } from '@bingads-webui-campaign/hotel-center-utils';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport { withoutTime } from '@bingads-webui/primitive-utilities';\r\nimport edm from '@bingads-webui-campaign-legacy/hotel-center-edm/index';\r\nimport globalConfig from '@bingads-webui-component-legacy/config/index';\r\nimport { bingadsGridColumn } from '@bingads-webui-component-legacy/bingads-grid/shared/column';\r\n\r\nfunction parseDate(dateStr) {\r\n const year = dateStr.substr(0, 4);\r\n const month = Number(dateStr.substr(4, 2) - 1);\r\n const day = dateStr.substr(6, 2);\r\n const hour = dateStr.substr(8, 2);\r\n const min = dateStr.substr(10, 2);\r\n const sec = dateStr.substr(12, 2);\r\n const millSec = dateStr.substr(14, 3);\r\n return new Date(year, month, day, hour, min, sec, millSec);\r\n}\r\n\r\nexport class GridOption {\r\n constructor({\r\n i18n, dateFilterContainer, reportType, perfMarker,\r\n } = {}) {\r\n this.i18n = i18n;\r\n this.name = 'HotelCenterProcessedReconGrid';\r\n this.tableClasses = ['table', 'table-bordered'];\r\n\r\n this.dataSource = {\r\n type: 'js-data',\r\n entity: jsdata.ReconciliationReport,\r\n schema: ReconciliationReport,\r\n options: {\r\n cacheResponse: false,\r\n entitySet: edm.currentAccount.ReconciliationReports['Default.GetReconciliationReports'].$call({\r\n ReportType: reportType,\r\n }),\r\n },\r\n query: {\r\n $orderby: reportType === 'ProcessedReconciliationReport' ? 'ProcessedDateTime desc' : 'UploadDateTime desc',\r\n },\r\n };\r\n this.columns = [\r\n bingadsGridColumn({\r\n name: reportType === 'ProcessedReconciliationReport' ? 'ProcessedDateTime' : 'UploadDateTime',\r\n title: reportType === 'ProcessedReconciliationReport' ? i18n.getString(_TL_('Processed date & time')) : i18n.getString(_TL_('Uploaded date & time')),\r\n template: local => i18n.formatDate(parseDate(local.value), {\r\n datetime: 'full',\r\n timeZone: toIANATimeZone(fromLegacyTimeZone(pageContext.AccountTimeZone)),\r\n }),\r\n }),\r\n bingadsGridColumn({\r\n name: 'UserFileName',\r\n title: reportType === 'ProcessedReconciliationReport' ? i18n.getString(_TL_('Processed file')) : i18n.getString(_TL_('Uploaded file')),\r\n template: local => `${local.value}`,\r\n }),\r\n bingadsGridColumn({\r\n name: 'summary',\r\n property: {\r\n get: item => `${item.SuccessCount} ${i18n.getString(_TL_('matched'))} | ${item.ErrorCount} ${i18n.getString(_TL_('unmatched'))}`,\r\n },\r\n title: i18n.getString(_TL_('Summary')),\r\n }),\r\n ];\r\n\r\n const includeRanges = ['custom', 'customTime', 'today', 'yesterday', 'thisWeekSunday', 'thisWeekMonday', 'lastSevenDays', 'lastWeekSunday', 'lastWeekMonday', 'lastFourteenDays', 'last30Days'];\r\n\r\n const { dateUtils } = getHotelCenterUtils({ pageContext });\r\n const maxDate = withoutTime(dateUtils.local2account(new Date()));\r\n maxDate.setDate(maxDate.getDate() + 1);\r\n\r\n this.plugins = {\r\n perfMarker: {\r\n appConfig: globalConfig,\r\n marker: perfMarker,\r\n },\r\n a11y: { i18n },\r\n uiBlocker: {\r\n el: $('.recon-grid'),\r\n },\r\n dateFilter: {\r\n container: dateFilterContainer,\r\n isComparisonEnabled: false,\r\n odataTimeZone: 'UTC',\r\n enabledRangesPredicate: range => includeRanges.indexOf(range.key) !== -1,\r\n sharedInGrids: false,\r\n maxDate,\r\n upToNowWhenToday: false,\r\n },\r\n placeholder: {\r\n container: '.grid-noresult',\r\n text: i18n.getString(_TL_('There are no reconciliation reports based on your filtered search.')),\r\n },\r\n pagination: {\r\n pageSize: 20,\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n },\r\n };\r\n }\r\n}\r\n","import { dateFilterStyle, uiblockerStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { ComponentSettings } from '@bingads-webui-theme-2018/theme-fluent';\r\n\r\nconst { datePickerStyle } = ComponentSettings;\r\n\r\nconst { getSharedFooterStyles } = ComponentSettings.GridSharedStyles;\r\nexport default function getStyles(_, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) {\r\n return {\r\n '@global': {\r\n ...uiblockerStyle({ palette }),\r\n ...datePickerStyle({ palette, iconFontFamily }),\r\n '.k-list-container': {\r\n overflow: 'auto',\r\n backgroundColor: palette.white,\r\n width: 86,\r\n fontSize: 12,\r\n\r\n '&.k-popup': {\r\n border: '1px solid #e5e5e5',\r\n height: '100%',\r\n },\r\n\r\n '& ul': {\r\n listStyle: 'none',\r\n padding: 0,\r\n\r\n '& li': {\r\n padding: 5,\r\n cursor: 'pointer',\r\n '&:hover': {\r\n background: '#edebe9',\r\n },\r\n },\r\n },\r\n },\r\n '.bingads-campaign-react-sub-page-menu': {\r\n '& .compared-date-range-picker': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n ReconReortGridContainer: {\r\n marginTop: 20,\r\n '& .recon-grid': {\r\n '& table': {\r\n border: 0,\r\n },\r\n '& thead.header tr th.column-header': {\r\n borderTop: '2px solid #81868B',\r\n borderBottom: '2px solid #81868B',\r\n borderLeft: 'none',\r\n '&:last-child': {\r\n borderRight: 'none',\r\n },\r\n },\r\n '& tr .text-left': {\r\n borderLeft: 'none',\r\n '&:last-child': {\r\n borderRight: 'none',\r\n },\r\n },\r\n '& .pagination-row td': {\r\n border: 'none',\r\n },\r\n },\r\n '& .grid-noresult': {\r\n color: '#605e5c',\r\n padding: '20px 0 20px 40px',\r\n fontSize: 26,\r\n lineHeight: '36px',\r\n },\r\n '& .date-filter-container': {\r\n margin: 15,\r\n '& .customDateRangePanel .errors': {\r\n display: 'none',\r\n },\r\n },\r\n '& .page-size-selector': {\r\n display: 'inline-block',\r\n width: 'auto',\r\n verticalAlign: 'middle',\r\n },\r\n ...getSharedFooterStyles(_, { palette }),\r\n ...dateFilterStyle({ palette }),\r\n },\r\n };\r\n}\r\n","import $ from 'jquery';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport pgrid from 'projection-grid';\r\nimport { iframeDownload } from '@bingads-webui/download-service';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getHotelCenterShared } from '@bingads-webui-campaign/hotel-center-shared';\r\nimport { placeholderPlugin } from '@bingads-webui/projection-grid-placeholder';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nimport * as dateFilterPreferences from '@bingads-webui-component-legacy/bingads-grid/service/date-filter-preferences';\r\n\r\nimport { GridOption } from './grid-option';\r\nimport getStyles from './style/index';\r\n\r\nclass HotelCenterReconReportGrid extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.dateFilterRef = React.createRef();\r\n this.gridrRef = React.createRef();\r\n this.floatingBanner = null;\r\n }\r\n\r\n componentDidMount() {\r\n const { i18n, reportType, perfMarker } = this.props;\r\n\r\n const { dateFilterPlugin } = getHotelCenterShared({\r\n i18n,\r\n pageContext,\r\n state,\r\n dateFilterPreferences,\r\n });\r\n\r\n const gridOption = new GridOption({\r\n i18n, reportType, dateFilterContainer: $(this.dateFilterRef.current), perfMarker,\r\n });\r\n let grid = pgrid.factory({ vnext: true })\r\n .use(perfMarkerPlugin)\r\n .use(a11yPlugin)\r\n .use(uiBlockerPlugin)\r\n .use(placeholderPlugin)\r\n .use(paginationPlugin)\r\n .use(dateFilterPlugin);\r\n grid = grid.create(gridOption);\r\n this.gridrRef.current.appendChild(grid.gridView.render().$el[0]);\r\n $(this.gridrRef.current).on('click', '.download-recon', e => this.handleDownload(e));\r\n this.grid = grid;\r\n this.props.onGridLoad(grid);\r\n }\r\n\r\n handleDownload(e) {\r\n const { i18n } = this.props;\r\n const item = this.grid.gridView.itemOfElement(e.target);\r\n notificationApi.dismiss(this.floatingBanner);\r\n if (!item.ReportPath) {\r\n this.floatingBanner = notificationApi.showWarning(i18n.getString(_TL_('We\\'ve encountered an error. Please try again or contact support.')));\r\n return;\r\n }\r\n iframeDownload(item.ReportPath);\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nHotelCenterReconReportGrid.propTypes = {\r\n classes: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n reportType: PropTypes.string.isRequired,\r\n onGridLoad: PropTypes.func,\r\n perfMarker: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nHotelCenterReconReportGrid.defaultProps = {\r\n onGridLoad: () => {},\r\n};\r\n\r\nconst Wrapped = withDefaultStyles(HotelCenterReconReportGrid, getStyles);\r\nexport { Wrapped as HotelCenterReconReportGrid };\r\n\r\nexport default HotelCenterReconReportGrid;\r\n","import odata from '@bingads-webui-component-legacy/http/channel/odata';\r\n\r\nasync function postTask({\r\n BlobName, fileName, TaskType, UploadDateTime = null, BookingCount = 0, IsProdEnv = true,\r\n}) {\r\n const odataOptions = {\r\n cacheResponse: false,\r\n url: '/Customers(:advertisercustomer_id)/Accounts(:account_id)/TaskItems?$expand=TaskItemExecutions',\r\n data: {\r\n '@odata.type': '#Model.PpsReconciliationReportUploadTaskItem',\r\n Name: 'PpsReconciliationReportUpload',\r\n Type: IsProdEnv ? 'PpsReconciliationReportUpload' : 'PpsReconciliationReportUploadTest',\r\n Cron: '',\r\n NotificationType: 'Always',\r\n NotificationMedium: 'Email',\r\n // PSTTimezoneId: 71,\r\n ModifiedAt: null,\r\n // RequestId: Math.random().toString().substr(2),\r\n FileIdentifier: BlobName,\r\n TaskType,\r\n UploadedFileName: fileName,\r\n UploadDateTime,\r\n BookingCount,\r\n },\r\n };\r\n\r\n const res = await odata.post(odataOptions);\r\n return res;\r\n}\r\n\r\nexport const getBlobUploadUrl = async ({ extension = 'csv' }) => {\r\n const odataOptions = {\r\n cacheResponse: false,\r\n url: `/BulkUploadFiles/GetBlobUploadUrl(CustomerId=:advertisercustomer_id,BulkFileType=20,FileExtension=.${extension})`,\r\n };\r\n\r\n const res = await odata.get(odataOptions);\r\n return res;\r\n};\r\n\r\nexport const postPreviewTask = async ({ BlobName, fileName, IsProdEnv }) => {\r\n const res = await postTask({\r\n BlobName, fileName, TaskType: 'Preview', IsProdEnv,\r\n });\r\n return res;\r\n};\r\n\r\nexport const postCommitTask = async ({\r\n BlobName, fileName, UploadDateTime, BookingCount, IsProdEnv,\r\n}) => {\r\n const res = await postTask({\r\n BlobName, fileName, TaskType: 'Commit', UploadDateTime, BookingCount, IsProdEnv,\r\n });\r\n return res;\r\n};\r\n\r\nexport const pollExecutionResult = ({ id }) => {\r\n const odataOptions = {\r\n cacheResponse: false,\r\n url: `/Customers(:advertisercustomer_id)/Accounts(:account_id)/TaskItemExecutions(${id})`,\r\n };\r\n\r\n return new Promise((resolve) => {\r\n const timer = setInterval(() => {\r\n odata.get(odataOptions).then((res) => {\r\n if (res.Status === 'Completed' || res.Status === 'Failed') {\r\n clearInterval(timer);\r\n resolve(res);\r\n }\r\n });\r\n }, 5000);\r\n });\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FilePicker } from '@bingads-webui/file-picker';\r\nimport { PrimaryButton } from '@fluentui/react/lib/Button';\r\nimport { ProgressIndicator } from '@fluentui/react/lib/ProgressIndicator';\r\nimport UploadService from '@bingads-webui-component-legacy/azure-upload/index';\r\nimport { iframeDownload } from '@bingads-webui/download-service';\r\nimport { getBlobUploadUrl, postPreviewTask, pollExecutionResult } from './api';\r\n\r\nclass UploadInput extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isUploadEnabled: false,\r\n progressPercentage: 0,\r\n progressMaxPercentage: 0.1,\r\n };\r\n this.timer = null;\r\n this.filePicker = null;\r\n this.filePickerRef = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n const { i18n } = this.props;\r\n this.filePicker = new FilePicker({\r\n theme: 'default',\r\n allowedFileExtensions: ['.csv', '.zip'],\r\n i18n,\r\n validator: () => {\r\n this.setState({ isUploadEnabled: true });\r\n this.clearError();\r\n },\r\n displayFilePath: 'filename',\r\n }).render();\r\n this.filePicker.on('error.extension', () => {\r\n this.setState({ isUploadEnabled: false });\r\n this.clearError();\r\n });\r\n this.filePicker.on('cleared', () => {\r\n this.setState({ isUploadEnabled: false });\r\n this.clearError();\r\n });\r\n this.filePickerRef.current.appendChild(this.filePicker.el);\r\n }\r\n\r\n clearError() {\r\n this.props.onError('');\r\n }\r\n\r\n async upload() {\r\n const { i18n, IsProdEnv } = this.props;\r\n const file = this.filePicker.fileObject;\r\n try {\r\n this.props.onUploadStart();\r\n this.setState({ progressPercentage: 0, progressMaxPercentage: 0.1 });\r\n this.timer = setInterval(() => {\r\n const { progressPercentage, progressMaxPercentage } = this.state;\r\n if (progressPercentage < progressMaxPercentage) {\r\n this.setState({\r\n progressPercentage: progressPercentage + 0.002,\r\n });\r\n }\r\n }, 100);\r\n const fileNameSplitArray = file.name.split('.');\r\n const extension = fileNameSplitArray[fileNameSplitArray.length - 1];\r\n const { SasUrl, BlobName } = await getBlobUploadUrl({ extension });\r\n this.setState({ progressPercentage: 0.1, progressMaxPercentage: 0.2 });\r\n\r\n const uploadService = new UploadService({\r\n blobSetting: {\r\n SasUrl,\r\n blobName: BlobName,\r\n },\r\n file,\r\n });\r\n\r\n await uploadService.start();\r\n this.setState({ progressPercentage: 0.2, progressMaxPercentage: 0.4 });\r\n const previweTask = await postPreviewTask({ BlobName, fileName: file.name, IsProdEnv });\r\n this.setState({ progressPercentage: 0.4, progressMaxPercentage: 1 });\r\n const taskId = previweTask.TaskItemExecutions[0].Id;\r\n const previewResult = await pollExecutionResult({ id: taskId });\r\n this.setState({ progressPercentage: 1 });\r\n clearInterval(this.timer);\r\n this.filePicker.$el.find(`#${this.filePicker.fileInputCssId}`).val('');\r\n this.filePicker.removeFile();\r\n this.props.onUploadFinish({\r\n ...previewResult,\r\n BlobName,\r\n fileName: file.name,\r\n });\r\n } catch (e) {\r\n this.props.onError(i18n.getString(_TL_('We\\'ve encountered an error. Please try again or contact support.')));\r\n this.setState({ progressPercentage: 1 });\r\n clearInterval(this.timer);\r\n } finally {\r\n this.setState({ isUploadEnabled: false });\r\n }\r\n }\r\n\r\n downloadSampleFile() {\r\n const { publicPath } = this.props;\r\n iframeDownload(`${publicPath}files/templates/HotelCenter/ReconciliationReportSample.csv`);\r\n }\r\n\r\n render() {\r\n const { isUploadEnabled, progressPercentage } = this.state;\r\n const { i18n, uploading } = this.props;\r\n\r\n return (\r\n \r\n {uploading && }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{i18n.getString(_TL_('Supported File formats: CSV, ZIP. '))} this.downloadSampleFile()}>{i18n.getString(_TL_('Sample file'))}

\r\n
\r\n
\r\n
\r\n
\r\n this.upload()} allowDisabledFocus disabled={!isUploadEnabled} />\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nUploadInput.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n IsProdEnv: PropTypes.bool.isRequired,\r\n publicPath: PropTypes.string.isRequired,\r\n uploading: PropTypes.bool.isRequired,\r\n onUploadStart: PropTypes.func.isRequired,\r\n onUploadFinish: PropTypes.func.isRequired,\r\n onError: PropTypes.func.isRequired,\r\n};\r\nexport default UploadInput;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { DefaultButton, PrimaryButton } from '@fluentui/react/lib/Button';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nfunction getStyles() {\r\n return {\r\n UploadSummaryContainer: {\r\n '& table': {\r\n margin: '20px 0',\r\n textAlign: 'center',\r\n '& th, td': {\r\n padding: '5px 20px',\r\n },\r\n },\r\n '& .discard-btn': {\r\n marginLeft: '10px',\r\n },\r\n },\r\n };\r\n}\r\n\r\nfunction UploadSummary(props) {\r\n const {\r\n classes, result, i18n, stage, downloadPath,\r\n } = props;\r\n\r\n const previewBtns = (\r\n
\r\n 0} onClick={props.onApply} />\r\n {downloadPath && }\r\n \r\n
\r\n );\r\n\r\n const commitBtns = (\r\n
\r\n \r\n \r\n
\r\n );\r\n return (\r\n
\r\n
\r\n

{i18n.getString(stage === 'preview' ? _TL_('Preview bookings') : _TL_('Saved bookings'))}

\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\n \r\n \r\n \r\n
\r\n {i18n.getString(stage === 'preview' ? _TL_('To be reconciled') : _TL_('Reconciled'))}{i18n.getString(_TL_('Errors'))}{i18n.getString(_TL_('Total'))}
{i18n.getString(_TL_('Booking details'))}{result.SuccessCount}{result.ErrorCount}{result.BookingCount}
\r\n
\r\n {stage === 'preview' ? previewBtns : commitBtns}\r\n
\r\n );\r\n}\r\n\r\nUploadSummary.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n stage: PropTypes.string.isRequired,\r\n downloadPath: PropTypes.string.isRequired,\r\n result: PropTypes.shape({}).isRequired,\r\n onApply: PropTypes.func.isRequired,\r\n onDiscard: PropTypes.func.isRequired,\r\n onDownload: PropTypes.func.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n};\r\n\r\nconst Wrapped = withDefaultStyles(UploadSummary, getStyles);\r\n\r\nexport default Wrapped;\r\n","export default {\r\n PpsReconciliationReportColumnHotelIDNotFound: _TL_('Reconciliation report column Hotel ID not found.'),\r\n PpsReconciliationReportColumnHotelNameNotFound: _TL_('Reconciliation report column Hotel Name not found.'),\r\n PpsReconciliationReportColumnHotelAddressNotFound: _TL_('Reconciliation report column Hotel Address not found.'),\r\n PpsReconciliationReportColumnHotelCityNotFound: _TL_('Reconciliation report column Hotel City not found.'),\r\n PpsReconciliationReportColumnHotelStateRegionNotFound: _TL_('Reconciliation report column Hotel State/Region not found.'),\r\n PpsReconciliationReportColumnHotelPostalCodeNotFound: _TL_('Reconciliation report column Hotel Postal Code not found.'),\r\n PpsReconciliationReportColumnHotelCountryCodeNotFound: _TL_('Reconciliation report column Hotel Country Code not found.'),\r\n PpsReconciliationReportColumnHotelPhoneNumberNotFound: _TL_('Reconciliation report column Hotel Phone Number not found.'),\r\n PpsReconciliationReportColumnBookingReferenceNotFound: _TL_('Reconciliation report column Booking Reference not found.'),\r\n PpsReconciliationReportColumnBookingDateandTimeNotFound: _TL_('Reconciliation report column Booking Date and Time not found.'),\r\n PpsReconciliationReportColumnCheckinDateNotFound: _TL_('Reconciliation report column Check-in Date not found.'),\r\n PpsReconciliationReportColumnCheckoutDateNotFound: _TL_('Reconciliation report column Check-out Date not found.'),\r\n PpsReconciliationReportColumnNumberofRoomsNotFound: _TL_('Reconciliation report column Number of Rooms not found.'),\r\n PpsReconciliationReportColumnNumberofGuestsNotFound: _TL_('Reconciliation report column Number of Guests not found.'),\r\n PpsReconciliationReportColumnBookingRevenueNotFound: _TL_('Reconciliation report column Booking Revenue not found.'),\r\n PpsReconciliationReportColumnBookingRevenueCurrencyNotFound: _TL_('Reconciliation report column Booking Revenue Currency not found.'),\r\n PpsReconciliationReportColumnBookingRevenueCurrencytoBillingCurrencyConversionRateNotFound: _TL_('Reconciliation report column Booking Revenue Currency to Billing Currency Conversion Rate not found.'),\r\n PpsReconciliationReportColumnBookingStatusNotFound: _TL_('Reconciliation report column Booking Status not found.'),\r\n PpsReconciliationReportColumnCommissionNotFound: _TL_('Reconciliation report column Commission not found.'),\r\n PpsReconciliationReportColumnCommissionCurrencyNotFound: _TL_('Reconciliation report column Commission Currency not found.'),\r\n PpsReconciliationReportColumnCommissionCurrencytoBillingCurrencyConversionRateNotFound: _TL_('Reconciliation report column Commission Currency to Billing Currency Conversion Rate not found.'),\r\n PpsReconciliationReportColumnPaymentDateNotFound: _TL_('Reconciliation report column Payment Date not found.'),\r\n PpsReconciliationReportColumnPaymentStatusNotFound: _TL_('Reconciliation report column Payment Status not found.'),\r\n PpsReconciliationReportParseFailedInvalidValuesInDataRows: _TL_('Reconciliation report parse failed: Invalid values in dataRows'),\r\n PpsReconciliationReportFileMissingHeaderRow: _TL_('Reconciliation report file missing header row'),\r\n PpsReconciliationReportUploadFileSizeExceeded: _TL_('Reconciliation report upload file size exceeded'),\r\n PpsReconciliationReportUploadBlobDownloadError: _TL_('Reconciliation report upload blob download error'),\r\n PpsReconciliationReportUploadBlobUploadError: _TL_('Reconciliation report upload blob upload error'),\r\n PpsReconciliationReportUploadZipFileEmpty: _TL_('Reconciliation report upload zip file empty'),\r\n PpsReconciliationReportFileFormatInvalid: _TL_('Reconciliation report file format invalid'),\r\n PpsReconciliationReportServiceFeeColumnsPartiallyNotFound: _TL_('Reconciliation report service fee columns partially not found'),\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { mergeI18n } from '@bingads-webui-campaign-react/i18n-merger';\r\nimport { HotelCenterReconReportGrid } from '@bingads-webui-campaign-react/hotel-center-recon-report-grid';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { iframeDownload } from '@bingads-webui/download-service';\r\nimport UploadInput from './upload/upload-input';\r\nimport UploadSummary from './upload/summary';\r\nimport { postCommitTask, pollExecutionResult } from './upload/api';\r\nimport errorMap from './upload/errorMap';\r\nimport getStyles from './style/index';\r\n\r\nconst hotelCenterI18n = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/hotel-center');\r\n\r\nclass HotelCenterUploadedReconReport extends React.PureComponent {\r\n constructor() {\r\n super();\r\n this.state = {\r\n uploading: false,\r\n loading: false,\r\n isUploadSccess: false,\r\n result: {},\r\n downloadPath: '',\r\n stage: 'preview',\r\n error: '',\r\n };\r\n this.grid = null;\r\n }\r\n\r\n downloadReports() {\r\n const { downloadPath } = this.state;\r\n iframeDownload(downloadPath);\r\n }\r\n\r\n handleUploadFinish(res) {\r\n const { i18n } = this.props;\r\n this.setState({\r\n loading: false,\r\n result: res,\r\n isUploadSccess: true,\r\n stage: 'preview',\r\n downloadPath: res.PreviewFileSasUrl,\r\n error: res.ErrorCount > 0 ?\r\n \r\n {res.Errors.map(error =>

{i18n.getString(errorMap[error.Code])}

)}\r\n

{i18n.getString(_TL_('Download the previewed report to see specific errors.'))}

\r\n
: '',\r\n });\r\n }\r\n\r\n async handleApplyPreview() {\r\n this.setState({\r\n loading: true,\r\n });\r\n\r\n const { i18n, serverContext } = this.props;\r\n const {\r\n PreviewFileIdentifier, UploadedFileName, UploadDateTime, BookingCount,\r\n } = this.state.result;\r\n\r\n try {\r\n const previweTask = await postCommitTask({\r\n BlobName: PreviewFileIdentifier,\r\n fileName: UploadedFileName,\r\n UploadDateTime,\r\n BookingCount,\r\n IsProdEnv: serverContext.IsProdEnv,\r\n });\r\n const taskId = previweTask.TaskItemExecutions[0].Id;\r\n const commitResult = await pollExecutionResult({ id: taskId });\r\n this.setState({\r\n stage: 'commit',\r\n loading: false,\r\n result: commitResult,\r\n });\r\n this.grid.gridView.refresh(true);\r\n } catch (e) {\r\n this.setState({\r\n error: i18n.getString(_TL_('We\\'ve encountered an error. Please try again or contact support.')),\r\n });\r\n }\r\n }\r\n\r\n handleDiscardPreview() {\r\n this.setState({\r\n error: '',\r\n result: {},\r\n isUploadSccess: false,\r\n uploading: false,\r\n });\r\n }\r\n\r\n handleCloseCommit() {\r\n this.setState({\r\n error: '',\r\n result: {},\r\n isUploadSccess: false,\r\n uploading: false,\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n classes, i18n, serverContext, perfMarker,\r\n } = this.props;\r\n const {\r\n isUploadSccess, uploading, loading, result, error, stage, downloadPath,\r\n } = this.state;\r\n const mergedI18n = mergeI18n(hotelCenterI18n, i18n);\r\n return (\r\n \r\n
\r\n \r\n { this.setState({ uploading: true }); }}\r\n onUploadFinish={res => this.handleUploadFinish(res)}\r\n onError={err => this.setState({ error: err })}\r\n />\r\n {isUploadSccess && this.handleApplyPreview()}\r\n onDiscard={() => this.handleDiscardPreview()}\r\n onDownload={() => this.downloadReports()}\r\n onClose={() => this.handleCloseCommit()}\r\n />}\r\n \r\n { error &&\r\n
\r\n
\r\n \r\n {error}\r\n
\r\n
}\r\n {\r\n this.grid = grid;\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nHotelCenterUploadedReconReport.propTypes = {\r\n serverContext: PropTypes.shape({\r\n Token: PropTypes.string.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n perfMarker: PropTypes.string.isRequired,\r\n};\r\n\r\nconst Wrapped = withDefaultStyles(HotelCenterUploadedReconReport, getStyles);\r\n\r\nexport { Wrapped as HotelCenterUploadedReconReport };\r\n","export default function getStyles() {\r\n return {\r\n marginContainer: {\r\n marginLeft: 32,\r\n marginTop: 32,\r\n paddingRight: 30,\r\n display: 'flex',\r\n overflow: 'auto',\r\n flex: '1 0 1px',\r\n flexDirection: 'column',\r\n '& .file-text': {\r\n overflow: 'hidden',\r\n },\r\n '& .ms-ProgressIndicator': {\r\n width: 1000,\r\n },\r\n '& .upload-err-info': {\r\n margin: '10px 0',\r\n paddingLeft: 0,\r\n width: 1000,\r\n paddingRight: 0,\r\n '& p': {\r\n marginBottom: 0,\r\n },\r\n },\r\n },\r\n };\r\n}\r\n","export const CalloutWidth = 700;\r\n","import {\r\n scrollbarStyle,\r\n convertToLocalStyle,\r\n inputFieldStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport {\r\n getImportOptionsFormStyle,\r\n getImportSummaryTooltipOverrideStyle,\r\n getImportTableOverrideStyle,\r\n} from '@bingads-webui-campaign-react/imports-shared-styles';\r\nimport { CalloutWidth } from '../constants';\r\n\r\nexport const getImportCalloutStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '#import-settings-callout, #import-summary-callout': {\r\n maxWidth: 'unset',\r\n width: CalloutWidth,\r\n ...convertToLocalStyle(scrollbarStyle({ palette })),\r\n\r\n '& .arrow': {\r\n boxShadow: 'none',\r\n border: 'none',\r\n },\r\n\r\n '& .popover-content': {\r\n padding: 0,\r\n\r\n '& .ba-backbone-instance-wrapper': {\r\n margin: [0, 24, 20],\r\n textAlign: 'left',\r\n },\r\n },\r\n },\r\n\r\n '#import-settings-callout .ba-backbone-instance-wrapper': {\r\n height: 300,\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n ...getImportOptionsFormStyle({ palette }),\r\n ...convertToLocalStyle(inputFieldStyle({ palette, iconFontFamily })),\r\n },\r\n '#import-summary-callout': {\r\n '& .popover-content': {\r\n '& .ba-backbone-instance-wrapper': {\r\n '& .panel': {\r\n border: 'none',\r\n boxShadow: 'none',\r\n marginBottom: 0,\r\n\r\n '& .panel-heading, & .panel-header': {\r\n padding: [12, 18, 15, 0],\r\n },\r\n\r\n '& .panel-body': {\r\n padding: 0,\r\n maxHeight: 300,\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n },\r\n\r\n '& .panel-footer': {\r\n padding: 0,\r\n border: 'none',\r\n },\r\n },\r\n ...getImportSummaryTooltipOverrideStyle({ palette }),\r\n ...getImportTableOverrideStyle({ palette }),\r\n },\r\n },\r\n },\r\n});\r\n","import {\r\n getImportSummaryCellStyle,\r\n} from '@bingads-webui-campaign-react/imports-shared-styles';\r\nimport {\r\n convertToLocalStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { getImportCalloutStyles } from './import-callout-styles';\r\n\r\n// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\nexport const getLogsGridStyle = ({ palette = {} }) => ({\r\n ...getImportSummaryCellStyle(),\r\n ...convertToLocalStyle(getImportCalloutStyles({ palette })),\r\n\r\n '& colgroup': {\r\n '& .col-StartTime, & .col-ImportType': {\r\n width: '15%',\r\n },\r\n '& .col-Name, & .col-ImportSettings, & .col-summary': {\r\n width: '20%',\r\n },\r\n '& .col-Error': {\r\n width: '10%',\r\n },\r\n },\r\n\r\n '& tbody>tr>td': {\r\n '& p.child-account-task, & p.child-batch': {\r\n marginLeft: '10%',\r\n },\r\n\r\n '& p.child-batch.child-account-task': {\r\n marginLeft: '20%',\r\n },\r\n },\r\n\r\n '& .col-Name p': {\r\n wordBreak: 'break-word',\r\n },\r\n});\r\n","import {\r\n getImportTableOverrideStyle,\r\n} from '@bingads-webui-campaign-react/imports-shared-styles';\r\nimport {\r\n convertToLocalStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { getImportCalloutStyles } from './import-callout-styles';\r\n\r\nexport const getScheduleGridStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n ...convertToLocalStyle(getImportCalloutStyles({ palette })),\r\n '& table.table': {\r\n '& thead>tr>th, & tbody>tr>td': {\r\n '&:first-child': {\r\n borderRight: 'none !important',\r\n },\r\n\r\n '&:nth-child(2)': {\r\n borderLeft: 'none !important',\r\n },\r\n },\r\n\r\n '& colgroup': {\r\n '& .col-Name, & .col-CreatedBy': {\r\n width: '20%',\r\n },\r\n },\r\n },\r\n\r\n '& .statuschangesubtask': {\r\n cursor: 'pointer',\r\n\r\n '&:hover': {\r\n backgroundColor: palette.neutralLight,\r\n },\r\n '& .statuschangelink': {\r\n padding: [5, 15],\r\n display: 'block',\r\n lineHeight: '1.5',\r\n\r\n '& .statuschange-icon': {\r\n marginRight: 5,\r\n },\r\n\r\n '& span': {\r\n verticalAlign: 'text-top',\r\n },\r\n '&>strong': {\r\n verticalAlign: 'text-bottom',\r\n },\r\n },\r\n },\r\n\r\n '& .statuschangehover:after': {\r\n color: palette.themeDark,\r\n content: '\"\\\\E70D\"',\r\n fontSize: 11,\r\n fontFamily: iconFontFamily,\r\n marginLeft: 5,\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n opacity: 0,\r\n },\r\n\r\n '& table.table tbody>tr:hover .statuschangehover:after': {\r\n opacity: 1,\r\n },\r\n\r\n '& .import-schedule-accounts-detail': {\r\n paddingLeft: 3,\r\n },\r\n '& .edit-task': {\r\n color: palette.themePrimary,\r\n },\r\n '& .insight_icon': {\r\n color: palette.themePrimary,\r\n paddingRight: '3px',\r\n },\r\n\r\n\r\n '& .statusDeleted_icon': {\r\n color: 'red',\r\n },\r\n\r\n '& .col-Name p': {\r\n wordBreak: 'break-word',\r\n },\r\n});\r\n\r\nexport const getGoogleAdsAccountViewStyle = ({ palette = {} }) => ({\r\n '.GoogleAdsAccountView': {\r\n padding: [10, 20],\r\n\r\n '& .popover-view__content': {\r\n padding: [21, 0, 10, 0],\r\n },\r\n\r\n ...getImportTableOverrideStyle({ palette }),\r\n },\r\n});\r\n","import {\r\n getImportTableOverrideStyle,\r\n} from '@bingads-webui-campaign-react/imports-shared-styles';\r\n\r\nexport const getImportsCommonStyle = ({ palette = {} }) => ({\r\n '& .description-content': {\r\n marginTop: 20,\r\n marginLeft: 5,\r\n },\r\n '& .page-title-header-placeholder-alert': {\r\n marginTop: 10,\r\n '& a': {\r\n color: '#006ed4',\r\n },\r\n },\r\n '&>.section-title': {\r\n '&>.page-title': {\r\n\r\n '&>*': {\r\n padding: [0, 32, 0, 32],\r\n },\r\n\r\n '&>h1': {\r\n fontSize: 26,\r\n padding: [0, 32, 18, 32],\r\n borderBottom: `1px solid ${palette.neutralLighter}`,\r\n },\r\n },\r\n\r\n '&>.form-group': {\r\n padding: [13, 32, 0, 32],\r\n },\r\n },\r\n\r\n '&>.section-body': {\r\n '& .toolbar': {\r\n '& #refresh_log, & #refresh_schedule, & #upload_file': {\r\n padding: [16, 8],\r\n height: 56,\r\n border: 'none',\r\n },\r\n\r\n '& .navbar-nav': {\r\n margin: 0,\r\n },\r\n },\r\n\r\n '& .ba-backbone-instance-wrapper': {\r\n marginLeft: 32,\r\n marginRight: 32,\r\n },\r\n },\r\n\r\n ...getImportTableOverrideStyle({ palette }),\r\n});\r\n","import {\r\n paginationStyle,\r\n statusStyle,\r\n glyphIconStyle,\r\n helpbuttonStyle,\r\n uiblockerStyle,\r\n} from '@bingads-webui-campaign-react/common-styles';\r\nimport { getLogsGridStyle } from './logs-grid-style';\r\nimport { getScheduleGridStyle, getGoogleAdsAccountViewStyle } from './schedule-grid-style';\r\nimport { getImportsCommonStyle } from './common-styles';\r\n\r\nexport const getImportScheduleGridViewStyles = (_, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n topGridPanelCustomStyles: {\r\n '& .preference-upload-form.panel': {\r\n '&.form-horizontal .control-label': {\r\n padding: '0 0 8px 0',\r\n },\r\n '& .col-sm-3': {\r\n width: 'unset',\r\n },\r\n '& .col-sm-3, & .col-sm-6, & .col-sm-8': {\r\n float: 'unset',\r\n paddingLeft: 'unset',\r\n },\r\n '& .preference-upload-description': {\r\n marginTop: 5,\r\n marginBottom: 20,\r\n },\r\n },\r\n },\r\n '@global': Object.assign(\r\n {\r\n '#import-recommendation-callout': {\r\n maxWidth: 'unset',\r\n width: 300,\r\n '& .recommendation-popup': {\r\n padding: 12,\r\n fontSize: 14,\r\n '& .title': {\r\n marginBottom: 10,\r\n },\r\n '& .operation': {\r\n display: 'flex',\r\n 'justify-content': 'space-between',\r\n },\r\n },\r\n '& .popover-content': {\r\n padding: 0,\r\n '& span.iconba.iconba-ChevronRightMed, & span.iconba.iconba-ChevronLeftMed': {\r\n marginLeft: 5,\r\n top: 10,\r\n color: palette.themePrimary,\r\n },\r\n '& .insight_icon': {\r\n color: palette.themePrimary,\r\n },\r\n },\r\n },\r\n },\r\n uiblockerStyle({ palette }),\r\n glyphIconStyle({ palette, iconFontFamily }),\r\n getGoogleAdsAccountViewStyle({ palette }),\r\n helpbuttonStyle({ palette })\r\n ),\r\n ImportErrorResolutionContainer: {\r\n padding: '0 32px',\r\n margin: '16px 0',\r\n },\r\n importSchedulePage: Object.assign(\r\n {},\r\n statusStyle({ palette }),\r\n paginationStyle({ palette }),\r\n getImportsCommonStyle({ palette }),\r\n {\r\n '& .section-body.log': getLogsGridStyle({ palette }),\r\n '& .section-body.schedule': getScheduleGridStyle({ palette, iconFontFamily }),\r\n }\r\n ),\r\n});\r\n","// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\nimport { uetTagSelectorStyles, convertToLocalStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getImportOptionsFormStyle = ({ palette = {} } = {}) => ({\r\n '& .advanced-import-options-form': {\r\n marginBottom: 15,\r\n\r\n '& .form-horizontal': {\r\n '& .error': {\r\n color: '#A80000',\r\n },\r\n '& .col-sm-4, & .col-sm-8': {\r\n paddingLeft: 28,\r\n width: '100%',\r\n\r\n '& .import-options-indented-section': {\r\n '& .input': {\r\n width: '66.7%',\r\n },\r\n },\r\n },\r\n\r\n '& .form-group': {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n marginBottom: 0,\r\n },\r\n\r\n '& .control-label': {\r\n textAlign: 'left',\r\n },\r\n\r\n '& .checkbox': {\r\n paddingTop: 0,\r\n\r\n '& >label': {\r\n display: 'inline-block',\r\n },\r\n },\r\n\r\n '& .scheduling-form': {\r\n '& .control-label': {\r\n paddingLeft: 0,\r\n\r\n '& .spritedimage': {\r\n marginRight: 8,\r\n },\r\n },\r\n },\r\n\r\n '& .form-label-container.col-sm-4': {\r\n float: 'unset',\r\n },\r\n\r\n '& .form-input-container[data-property=\"ImportAccountUrlOptions\"]': {\r\n '& .template-subtext': {\r\n marginLeft: 8,\r\n\r\n '& .bold': {\r\n fontWeight: 600,\r\n display: 'inline-block',\r\n\r\n '& .import-options-link': {\r\n fontWeight: 400,\r\n },\r\n },\r\n\r\n '& .tracking-template-url': {\r\n display: 'inline-block',\r\n paddingLeft: 4,\r\n },\r\n },\r\n },\r\n\r\n '& .form-input-container[data-property=\"EnableAutoCurrencyConversion\"]': {\r\n '& .currency-description': {\r\n marginLeft: 8,\r\n },\r\n\r\n '& .currency-title': {\r\n marginLeft: 8,\r\n\r\n '& .bold': {\r\n fontWeight: 600,\r\n display: 'inline-block',\r\n },\r\n\r\n '& .currency-value': {\r\n display: 'inline-block',\r\n paddingLeft: 4,\r\n },\r\n },\r\n },\r\n\r\n '& .form-group[data-property=\"AssociatedUETTagId\"] > .col-sm-8': {\r\n paddingLeft: 56,\r\n },\r\n\r\n '& .uet-tag-selector': {\r\n width: 'unset',\r\n '& select': {\r\n marginLeft: -14,\r\n width: '66.7%',\r\n },\r\n '& .row.row-gap': {\r\n marginBottom: 8,\r\n },\r\n },\r\n\r\n '& .form-input-container[data-property=\"ImportNewEntities\"], & .form-input-container[data-property=\"UpdateEntityPreferences\"]': {\r\n '& .checkbox': {\r\n '& label + span > a.helpbutton': {\r\n marginLeft: '-6px',\r\n },\r\n\r\n '& .toggle-link': {\r\n paddingLeft: 10,\r\n },\r\n },\r\n\r\n '& .advanced-options': {\r\n '& .advanced-options-form, & .col-sm-4, & .col-sm-8': {\r\n paddingLeft: 28,\r\n },\r\n },\r\n },\r\n\r\n '& .import-options-indented-section.numeric-adjustment': {\r\n paddingLeft: 28,\r\n paddingBottom: 4,\r\n\r\n '& select.form-control': {\r\n width: 135,\r\n },\r\n\r\n '& input.form-control': {\r\n width: 66,\r\n },\r\n\r\n '& .inline-label-text': {\r\n height: 32,\r\n lineHeight: '32px',\r\n width: 'unset',\r\n },\r\n },\r\n\r\n '& .form-validation-container': {\r\n '& ul.help-block.error': {\r\n listStyle: 'none',\r\n paddingLeft: 28,\r\n },\r\n },\r\n\r\n '& .form-group.scheduling-form': {\r\n '& .control-label': {\r\n '& a': {\r\n display: 'block',\r\n\r\n '&:focus, &:hover': {\r\n border: 'none',\r\n textDecoration: 'none',\r\n backgroundColor: '#F3F2F1',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .error-panel': {\r\n maxWidth: 900,\r\n\r\n '& #ImportErrorTable': {\r\n marginBottom: 15,\r\n\r\n '& table': {\r\n width: '100%',\r\n color: palette.neutralPrimary,\r\n tableLayout: 'fixed',\r\n\r\n '& .grid-header-row': {\r\n '& .grid-header-cell': {\r\n fontWeight: 600,\r\n padding: '8px 10px',\r\n borderTop: '2px solid #81868B',\r\n borderBottom: '2px solid #81868B',\r\n\r\n '& .grid-header-text': {\r\n color: palette.neutralPrimary,\r\n wordBreak: 'break-word',\r\n },\r\n },\r\n\r\n '& .grid-header-cell:nth-child(2), .grid-header-cell:nth-child(3)': {\r\n width: '30%',\r\n },\r\n },\r\n\r\n '& tbody': {\r\n '& .grid-row': {\r\n '& .grid-cell': {\r\n padding: '8px 10px',\r\n\r\n '& .grid-content-container': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& th, td': {\r\n borderRight: `1px solid ${palette.neutralLight}`,\r\n borderBottom: `1px solid ${palette.neutralLight}`,\r\n\r\n '&:last-child': {\r\n borderRight: 0,\r\n },\r\n },\r\n\r\n '& .iconba-ErrorBadge, .iconba-ErrorBadge + span': {\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n },\r\n\r\n ...convertToLocalStyle(uetTagSelectorStyles()),\r\n});\r\n","export const getImportSummaryCellStyle = () => ({\r\n '& .status-row': {\r\n position: 'relative',\r\n\r\n '&>div, &>div>div, &>div>div>div': {\r\n display: 'inline',\r\n },\r\n\r\n '&>div': {\r\n '& .status-image': {\r\n position: 'relative',\r\n },\r\n\r\n '& .status_icon': {\r\n marginLeft: 5,\r\n position: 'relative',\r\n top: 1,\r\n },\r\n\r\n '& .status-icon': {\r\n marginRight: 5,\r\n position: 'relative',\r\n top: 3,\r\n },\r\n },\r\n },\r\n});\r\n","export const getImportSummaryTooltipOverrideStyle = ({ palette = {} }) => ({\r\n '& .import-error-table': {\r\n '& .import-error-message': {\r\n marginTop: 18,\r\n },\r\n\r\n '& .import-error-message + table': {\r\n marginTop: 15,\r\n maxHeight: 300,\r\n overflowX: 'hidden',\r\n overflowY: 'auto',\r\n width: 'max-content',\r\n display: 'block',\r\n },\r\n\r\n '& .grid-header-text': {\r\n color: palette.neutralPrimary,\r\n cursor: 'default',\r\n textDecoration: 'none',\r\n },\r\n\r\n '& .grid-row.error': {\r\n backgroundColor: '#FDE7E9',\r\n },\r\n },\r\n});\r\n","import { tableStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getImportTableOverrideStyle = ({ palette = {} }) => ({\r\n '& table': {\r\n ...tableStyle({ palette })['& .table'],\r\n marginBottom: 0,\r\n\r\n '& thead>tr>th': {\r\n borderBottom: '2px solid #81868B !important',\r\n borderTop: '2px solid #81868B !important',\r\n lineHeight: 1.5,\r\n padding: 8,\r\n\r\n '& .grid-header-text': {\r\n display: 'inline',\r\n },\r\n\r\n '& input[type=\"checkbox\"].select-all:focus': {\r\n outline: `1px solid ${palette.neutralSecondary} !important`,\r\n },\r\n },\r\n\r\n '& tbody>tr>td': {\r\n padding: 8,\r\n\r\n '&>p': {\r\n margin: 0,\r\n },\r\n\r\n '& input[type=\"checkbox\"].select-row:focus': {\r\n outline: `1px solid ${palette.neutralSecondary} !important`,\r\n },\r\n },\r\n\r\n '& tbody>tr:hover': {\r\n backgroundColor: palette.neutralLighter,\r\n },\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Promise from 'bluebird';\r\nimport { queryify, getParameter } from '@bingads-webui/url-util';\r\nimport { getPendingImportStatus } from '@bingads-webui-campaign/import-components';\r\n/* eslint-disable import/extensions */\r\n\r\n/* eslint-disable import/no-unresolved */\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\n\r\nexport function fetchInitData(values, isGoogleImport, isFacebookImport) {\r\n const actionName = `/campaign/Imports/${isGoogleImport ? 'GoogleImport' : 'FileImport'}`;\r\n const urlParameters = _.omit({\r\n uid: values.uid,\r\n cid: values.cid,\r\n aid: values.aid,\r\n }, value => !value);\r\n const isselenium = getParameter('isselenium');\r\n let token = null;\r\n\r\n if (isselenium) {\r\n const testAccount = getParameter('testAccount');\r\n if (isFacebookImport) {\r\n token = getParameter('token');\r\n }\r\n\r\n urlParameters.isselenium = isselenium;\r\n urlParameters.testAccount = testAccount;\r\n }\r\n\r\n const url = queryify(actionName, urlParameters);\r\n\r\n return new Promise((resolve) => {\r\n $.ajax({\r\n url,\r\n success: data => resolve(token ? _.extend(data, { token }) : data),\r\n type: 'GET',\r\n });\r\n }).catch(_.noop);\r\n}\r\n\r\nexport function getPendingImportStatusPromise() {\r\n return getPendingImportStatus(odata);\r\n}\r\n","import Promise from 'bluebird';\r\nimport { getRouterDep } from '@bingads-webui-campaign-react/legacy-router-dep';\r\nimport cacheManager from '@bingads-webui-campaign-legacy/cache-manager/index';\r\n/* eslint-disable import/extensions */\r\n\r\n/* eslint-disable import/no-unresolved */\r\nimport * as spaFactory from '@bingads-webui-campaign-legacy/import-campaigns/spa/index';\r\n\r\nexport function loadLegacyDeps(legacyParams, requireGapi = true) {\r\n return new Promise((resolve) => {\r\n if (requireGapi === true) {\r\n const css = document.createElement('link');\r\n css.type = 'text/css';\r\n css.href = 'https://fonts.googleapis.com/css?family=Roboto';\r\n css.rel = 'stylesheet';\r\n document.getElementsByTagName('head')[0].appendChild(css);\r\n\r\n window.require(requireGapi ? ['ext/google/gsi'] : [], () => {\r\n resolve(spaFactory);\r\n });\r\n } else {\r\n resolve(spaFactory);\r\n }\r\n });\r\n}\r\n\r\nexport function createCommonDeps({\r\n permissions,\r\n scope,\r\n siteMap,\r\n data,\r\n preferenceService,\r\n}) {\r\n return {\r\n adGroupMedium: `Search${permissions.IsUserContentAllowed ? 'AndContent' : ''}`,\r\n language: data.language,\r\n market: data.market,\r\n storeList: data.storeList,\r\n showPayment: data.showPayment,\r\n paymentMethodUrl: data.paymentMethodUrl,\r\n sharedCookieDomain: data.sharedCookieDomain,\r\n token: data.token,\r\n isForVNext: true,\r\n router: getRouterDep(scope, siteMap),\r\n CampaignCacheManager: cacheManager,\r\n preferenceService,\r\n };\r\n}\r\n","import { getImportOptionsFormStyle } from '@bingads-webui-campaign-react/imports-shared-styles';\r\n\r\nconst getGlobalCommonStyle = ({ palette = {} }) => ({\r\n '& .import-steps': {\r\n maxWidth: 1020,\r\n marginTop: 32,\r\n\r\n '& .step-container': {\r\n marginBottom: 24,\r\n },\r\n '& .step-header': {\r\n borderBottom: '1px solid #a2a2a2',\r\n\r\n '& h3': {\r\n fontSize: 14,\r\n marginTop: 0,\r\n fontWeight: 400,\r\n\r\n '& span': {\r\n verticalAlign: 'middle',\r\n },\r\n '& span.summary-section': {\r\n display: 'inline-block',\r\n color: '#A2A2A2',\r\n maxWidth: 600,\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n lineHeight: 1.4,\r\n },\r\n '& a': {\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n\r\n '& .edit-step.glyphicon-pencil': {\r\n float: 'none!important',\r\n marginLeft: 8,\r\n },\r\n },\r\n\r\n '& .step-body': {\r\n marginLeft: 7.5,\r\n },\r\n\r\n '& .step-footer': {\r\n marginLeft: 7.5,\r\n\r\n '& .btn + .btn': {\r\n marginLeft: 8,\r\n },\r\n },\r\n\r\n '& .step-content': {\r\n paddingTop: 15,\r\n maxWidth: 1020,\r\n\r\n '& h3': {\r\n fontSize: 14,\r\n fontWeight: 600,\r\n },\r\n\r\n '& .export-errors': {\r\n textDecoration: 'underline',\r\n },\r\n },\r\n\r\n '& .step-header[data-step-status=\"done\"] h3': {\r\n display: 'inline-block',\r\n },\r\n\r\n '& .step-header[data-step-status=\"active\"] h3': {\r\n fontWeight: 600,\r\n },\r\n\r\n '& [data-step-status=\"pending\"]': {\r\n color: '#cccccc',\r\n },\r\n\r\n '& .form-group': {\r\n maxWidth: 900,\r\n\r\n '& .control-label, .summary-info': {\r\n paddingTop: 4,\r\n },\r\n },\r\n\r\n '& .error': {\r\n color: '#A80000',\r\n margin: '5px 0',\r\n },\r\n\r\n '& .iconba': {\r\n position: 'static',\r\n marginRight: 5,\r\n },\r\n\r\n '& .iconba-Warning': {\r\n color: '#D83B01',\r\n },\r\n\r\n '& .iconba-ErrorBadge': {\r\n color: '#A80000',\r\n },\r\n\r\n '& .bingadsgrid .table-container colgroup.column-group .col-Name': {\r\n width: 300,\r\n minWidth: 300,\r\n },\r\n\r\n '& .bingadsgrid .table-container colgroup.column-group .col-Errors': {\r\n width: 140,\r\n minWidth: 140,\r\n },\r\n\r\n '& .table-bordered': {\r\n border: 0,\r\n },\r\n },\r\n\r\n '& .import-page-title': {\r\n '& h1': {\r\n fontSize: 20,\r\n lineHeight: '27px',\r\n },\r\n '& .page-title-subheader': {\r\n fontSize: 14,\r\n lineHeight: '24px',\r\n fontWeight: 'normal',\r\n marginTop: 30,\r\n marginBottom: 0,\r\n },\r\n },\r\n\r\n '& #importPage': {\r\n '& .section': {\r\n paddingBottom: 10,\r\n overflow: 'hidden',\r\n },\r\n\r\n '& .disabled-section': {\r\n color: '#cccccc',\r\n },\r\n\r\n '& .btn + .btn': {\r\n marginLeft: 8,\r\n },\r\n },\r\n\r\n // import options\r\n ...getImportOptionsFormStyle({ palette }),\r\n\r\n '& [data-step-name=\"import-options-step\"] .import-options-indented-section': {\r\n paddingLeft: '28px',\r\n },\r\n '& .schedule-import-step .error': {\r\n color: '#A80000',\r\n margin: '5px 0',\r\n },\r\n\r\n // import summary\r\n '& .step-body[data-step-name=\"import-summary-step\"]': {\r\n '& .form-horizontal': {\r\n '& .col-sm-2.control-label': {\r\n textAlign: 'left',\r\n width: '100%',\r\n },\r\n\r\n '& .col-sm-4.summary-info': {\r\n float: 'unset',\r\n width: '100%',\r\n },\r\n },\r\n\r\n '& .import-summary-grid': {\r\n width: 900,\r\n marginTop: 25,\r\n marginBottom: 20,\r\n minHeight: 0,\r\n backgroundColor: '#e5e5e5',\r\n borderBottomColor: '#ddd',\r\n borderBottomStyle: 'solid',\r\n borderBottomWidth: '1px',\r\n\r\n '& .viewport': {\r\n maxHeight: 420,\r\n overflow: 'auto',\r\n backgroundColor: '#ffffff',\r\n\r\n '@media screen and (max-height: 1000px)': {\r\n maxHeight: 300,\r\n },\r\n\r\n '@media screen and (max-height: 900px)': {\r\n maxHeight: 120,\r\n },\r\n },\r\n\r\n '& .fixed-header': {\r\n backgroundColor: '#ffffff',\r\n },\r\n\r\n '& .fixed-height .viewport': {\r\n height: 420,\r\n },\r\n\r\n '& .expanded-margin': {\r\n marginLeft: 15,\r\n },\r\n\r\n '& .table.table-bordered': {\r\n '& .header tr': {\r\n '& th': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n '& th[data-name=\"Name\"]': {\r\n padding: '8px 10px',\r\n borderRight: `1px solid ${palette.neutralLight}`,\r\n },\r\n\r\n '& th[data-name=\"Additions\"]': {\r\n borderRight: `1px solid ${palette.neutralLight}`,\r\n },\r\n },\r\n\r\n '& tbody tr': {\r\n '& .truncated': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n padding: '8px 10px',\r\n borderRight: `1px solid ${palette.neutralLight}`,\r\n },\r\n\r\n '& td:nth-child(2)': {\r\n borderRight: `1px solid ${palette.neutralLight}`,\r\n },\r\n },\r\n\r\n '& .spritedimagealign': {\r\n paddingRight: 5,\r\n },\r\n },\r\n },\r\n\r\n '& .import-summary-grid + .form-group': {\r\n '& >.HelpTopic': {\r\n paddingLeft: 5,\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const importUiBlockerStyle = ({ palette = {} }, iconFontFamily = 'MsAds MDL2 Assets') => ({\r\n '.blocker-container': {\r\n '& .blocker-indicator': {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n padding: '0 0 12px 0',\r\n\r\n '& .blocker-image': {\r\n position: 'absolute',\r\n top: 10,\r\n left: 10,\r\n },\r\n\r\n '& .blocker-text': {\r\n margin: '12px 0 0 50px',\r\n\r\n '& .import-blocker': {\r\n color: palette.neutralPrimary,\r\n maxWidth: 400,\r\n margin: '-12px 0 -12px -50px',\r\n padding: 10,\r\n boxShadow: '0px 4.8px 14.4px rgba(0, 0, 0, 0.18), 0px 25.6px 57.6px rgba(0, 0, 0, 0.22)',\r\n\r\n '& >span': {\r\n fontWeight: 600,\r\n paddingLeft: 40,\r\n verticalAlign: 'middle',\r\n },\r\n\r\n '& .blocker-subtext': {\r\n marginTop: 10,\r\n\r\n '& .indicator-steps-panel': {\r\n marginTop: 19,\r\n\r\n '& >ul': {\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n\r\n '& .indicator': {\r\n marginBottom: 10,\r\n\r\n '& .error-class': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 14,\r\n display: 'inline-block',\r\n marginRight: 12,\r\n verticalAlign: 'middle',\r\n width: 14,\r\n height: 14,\r\n lineHeight: '14px',\r\n color: palette.themePrimary,\r\n },\r\n\r\n '& .indicator-done:before': {\r\n content: '\"\\\\EC61\"',\r\n },\r\n\r\n '& .indicator-done + span': {\r\n fontWeight: 600,\r\n },\r\n\r\n '& .error-class + span': {\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst pageContainerTop = 24;\r\nconst pageContainerLeft = 32;\r\n\r\nexport const getCommonStyle = ({ palette = {} }) => ({\r\n pageContainer: {\r\n marginTop: pageContainerTop,\r\n marginLeft: pageContainerLeft,\r\n marginBottom: 32,\r\n\r\n '& .fac-banner-positioning-container': {\r\n marginTop: -pageContainerTop,\r\n marginLeft: -pageContainerLeft,\r\n },\r\n\r\n ...getGlobalCommonStyle({ palette }),\r\n },\r\n});\r\n","import { extend } from 'underscore';\r\nimport { uiblockerStyle, glyphIconStyle, paginationStyle, statusStyle, helpbuttonStyle, inputFieldStyle, datePickerStyle, buttonInputStyle, learnMoreStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { getTableStyles } from '@bingads-webui-campaign-react/grid-view-wrapper';\r\n\r\nimport { getCommonStyle, importUiBlockerStyle } from './common-style';\r\n\r\nconst getCurrencyConversionPanelStyle = () => ({\r\n '& .currency-conversion-control': {\r\n paddingTop: 10,\r\n '& .bold': {\r\n fontWeight: 'bold',\r\n },\r\n '& .inline-bold': {\r\n display: 'inline',\r\n fontWeight: 'bold',\r\n },\r\n '& input[type=\"radio\"]': {\r\n margin: '0 8px',\r\n verticalAlign: 'middle',\r\n bottom: 2,\r\n },\r\n '& .form-group > .radio': {\r\n padding: '8px 5px 8px 0',\r\n width: 'max-content',\r\n left: -8,\r\n '&:focus-within': {\r\n outline: '1px solid #605e5c',\r\n },\r\n },\r\n '& .bingAccountCurrency, & .googleAccountCurrency, & .importSourceAccountCurrency': {\r\n paddingLeft: 20,\r\n },\r\n },\r\n});\r\n\r\nexport const getGoogleImportStyle = (_, { palette = {} }, iconFontFamily = 'MsAds MDL2 Assets') => ({\r\n '@global': extend(\r\n {},\r\n uiblockerStyle({ palette }),\r\n glyphIconStyle({ palette }),\r\n helpbuttonStyle({ palette }),\r\n inputFieldStyle({ palette }),\r\n datePickerStyle({ palette }),\r\n importUiBlockerStyle({ palette })\r\n ),\r\n ...getCommonStyle({ palette }),\r\n googleImportPage: extend(\r\n {},\r\n paginationStyle({ palette }),\r\n statusStyle({ palette }),\r\n buttonInputStyle({ palette }),\r\n learnMoreStyle({ palette }),\r\n getTableStyles(_, { palette }),\r\n getCurrencyConversionPanelStyle(),\r\n {\r\n // override some table styles from above\r\n '& .import-grid tbody tr td:first-child': {\r\n paddingLeft: 0,\r\n },\r\n '& .import-grid tbody tr td:nth-child(3), & .import-grid thead.header tr th:nth-child(3)': {\r\n borderLeft: '1px solid #EDEBE9',\r\n },\r\n },\r\n {\r\n // toolbar\r\n '& .grid-toolbar, & .ba-search-box': {\r\n marginBottom: 5,\r\n },\r\n '& .grid-toolbar .grid-filter-container, & .ba-search-box .search-box__input-group': {\r\n display: 'inline-block',\r\n position: 'relative',\r\n },\r\n '& .grid-toolbar .grid-filter-container .grid-filter-input, & .ba-search-box .search-box__input-group .search-box__input': {\r\n width: '220px',\r\n padding: '6px 32px 7px 8px',\r\n height: 32,\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n '& button.filter_search_icon_small, & button.filtercloseimage, & .search-box__icon': {\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 '& button.filter_search_icon_small[disabled], & .search-box__icon[disabled]': {\r\n cursor: 'default',\r\n },\r\n '& .filter_search_icon_small, & .filtercloseimage, & .search-box__icon': {\r\n fontFamily: iconFontFamily,\r\n color: palette.themePrimary,\r\n fontSize: 16,\r\n position: 'absolute',\r\n right: 8,\r\n top: 4,\r\n height: 16,\r\n width: 16,\r\n },\r\n '& .filter_search_icon_small:before, .search-box__icon:before': {\r\n content: '\"\\\\E721\"',\r\n },\r\n '& .filtercloseimage:before': {\r\n content: '\"\\\\E711\"',\r\n },\r\n // grid\r\n '& input[type=\"radio\"]': {\r\n position: 'relative',\r\n },\r\n '& .import-grid.grid-table, & .import-grid .grid-table, & .full-treeview-table, & .importCampaignsGrid .grid-table': {\r\n minHeight: '0',\r\n backgroundColor: '#e5e5e5',\r\n borderBottomColor: '#ddd',\r\n borderBottomStyle: 'solid',\r\n borderBottomWidth: '1px',\r\n margin: 0,\r\n border: 'none',\r\n padding: 0,\r\n height: '100%',\r\n },\r\n '& .viewport, & .full-treeview-table .tree-view-container': {\r\n maxHeight: '300px',\r\n backgroundColor: '#fff',\r\n // overflow is an inline style added by grid. Need to use import to override it.\r\n overflowX: 'hidden!important',\r\n },\r\n '& .import-grid .fixed-height .viewport, & .full-treeview-table .tree-view-container': {\r\n height: '300px',\r\n },\r\n '& .col-selection': {\r\n width: '5%',\r\n },\r\n '& .col-Currency': {\r\n width: '10%',\r\n },\r\n '& .import-grid .col-CustomerId': {\r\n width: '20%',\r\n },\r\n '& .col-Status, & .col-Type': {\r\n width: '15%',\r\n },\r\n '& .import-grid .col-New, & .import-grid .col-Updated, & .import-grid .col-Deleted': {\r\n width: '12%',\r\n },\r\n '& .import-grid .col-Skipped': {\r\n width: '16%',\r\n },\r\n '& .import-grid .table-container thead.header .sort-indicator': {\r\n marginRight: '5px',\r\n },\r\n '& .import-grid .grid-table .table-bordered': {\r\n '& input[type=\"radio\"]:focus': {\r\n outline: `1px solid ${palette.neutralSecondary} !important`,\r\n outlineOffset: 1,\r\n },\r\n },\r\n '& .truncated': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n // google ads campaigns and ad groups\r\n '& .google-campaign-grid, & .importsource-campaign-grid': {\r\n '& .radio>label': {\r\n display: 'inline-block',\r\n },\r\n\r\n '& .campaign-and-ad-group-selector': {\r\n paddingTop: 4,\r\n\r\n '& .full-treeview-table': {\r\n '& .table-bordered': {\r\n marginBottom: 0,\r\n\r\n '& .adgroup-level-header': {\r\n '& th': {\r\n borderLeft: 0,\r\n borderRight: 0,\r\n borderTop: '2px solid #81868B',\r\n borderBottom: '2px solid #81868B',\r\n },\r\n\r\n '& .column-header-select-all': {\r\n width: 60,\r\n },\r\n\r\n '& .column-header-name-sortable': {\r\n cursor: 'pointer',\r\n width: 380,\r\n },\r\n\r\n '& .column-header-type-sortable': {\r\n cursor: 'pointer',\r\n width: 180,\r\n },\r\n },\r\n },\r\n\r\n '& .tree-view-container': {\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 },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n // schedule imports\r\n '& .schedule-import-container': {\r\n '& .form-horizontal.schedule': {\r\n padding: 0,\r\n maxWidth: 900,\r\n\r\n '& .section-item.schedule.form-group': {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n\r\n '& .schedule': {\r\n '& h5': {\r\n fontSize: 14,\r\n fontWeight: 400,\r\n lineHeight: 1.5,\r\n margin: 0,\r\n },\r\n\r\n '& .control-label.col-xs-2': {\r\n textAlign: 'left',\r\n width: '100%',\r\n },\r\n\r\n '& .date-picker': {\r\n '& .date-picker-component.k-input': {\r\n height: '32px',\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n borderRadius: 2,\r\n padding: '6px 12px',\r\n },\r\n },\r\n\r\n '& .control-label.col-xs-1': {\r\n width: 'auto',\r\n },\r\n\r\n '& .col-md-3.radio': {\r\n float: 'unset',\r\n padding: '8px 5px 8px 28px',\r\n left: '-8px',\r\n\r\n '&:focus-within': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n\r\n '& input': {\r\n marginRight: 8,\r\n verticalAlign: 'bottom',\r\n },\r\n },\r\n\r\n '& .col-xs-2[data-bind=\"visible: chosenFrequency().value === \\'Monthly\\'\"]': {\r\n width: 'auto',\r\n\r\n '& .control-label.col-xs-4, .col-xs-8': {\r\n width: 'auto',\r\n },\r\n },\r\n\r\n '& .control-label.col-xs-4, .control-label.col-xs-1': {\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n },\r\n\r\n '& #ScheduledImportValidationError': {\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n },\r\n\r\n '& ul.panel-body': {\r\n padding: 0,\r\n margin: 0,\r\n listStyle: 'none',\r\n },\r\n },\r\n },\r\n '& .fac-coupon-alert.fac-coupon-alert-now': {\r\n marginBottom: 10,\r\n },\r\n },\r\n }\r\n ),\r\n});\r\n","/* eslint-disable import/extensions */\r\n/* eslint-disable import/no-unresolved */\r\n\r\n\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport Promise from 'bluebird';\r\nimport dataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\n// import { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { fetchInitData, getPendingImportStatusPromise } from './repository';\r\nimport { loadLegacyDeps, createCommonDeps } from './utils';\r\n// todo: facebook style\r\nimport { getGoogleImportStyle } from './styles/google-import-page-style';\r\n\r\nfunction initImportPage(props) {\r\n const {\r\n perfMarker,\r\n scope,\r\n serverContext: { CurrentAccount },\r\n } = props;\r\n const { values } = scope || {};\r\n const {\r\n importId,\r\n taskItemId,\r\n opportunityId,\r\n source,\r\n opportunityType,\r\n } = values || {};\r\n const currency = CurrentAccount && CurrentAccount.CurrencyCode;\r\n\r\n perfMarker.willFetchData();\r\n\r\n return Promise.all([\r\n fetchInitData(values, true, true), // todo: handle test token for facebook in repository\r\n getPendingImportStatusPromise(),\r\n ]).then(([data, importStatus]) => {\r\n const deps = {\r\n ...createCommonDeps({ ...props, data }),\r\n currency,\r\n importStatus,\r\n importId,\r\n taskItemId,\r\n uxMode: 'main', // signup mode is not supported so far\r\n perfMarker,\r\n dataContextManager,\r\n opportunityId,\r\n opportunitySource: source,\r\n opportunityType,\r\n };\r\n return loadLegacyDeps(props).then(spaFactory => spaFactory.initFacebookImportPage(deps));\r\n });\r\n}\r\n\r\nfunction loadView(props) {\r\n return React.lazy(() => initImportPage(props)\r\n .then(view => view.render())\r\n .then((instance) => {\r\n instance.startPollingAfterContinueImport();\r\n return {\r\n default: () => (),\r\n };\r\n }));\r\n}\r\n\r\nclass FacebookImport extends React.PureComponent {\r\n constructor(props) {\r\n super();\r\n // loadView(props);\r\n this.state = {\r\n importId: props.scope.values.importId,\r\n };\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (nextProps.scope.values.importId !== prevState.importId) {\r\n return {\r\n importId: nextProps.scope.values.importId,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n render() {\r\n this.FacebookImportPageView = loadView(this.props);\r\n return (\r\n }>\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nFacebookImport.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.object.isRequired,\r\n CurrentCustomer: PropTypes.object.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n pageContainer: PropTypes.string.isRequired,\r\n googleImportPage: PropTypes.string.isRequired, // todo: replace it?\r\n }).isRequired,\r\n // perfMarker: perfMarkerPropTypes.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n};\r\n\r\nexport const StyledFacebookImport = _.compose(\r\n withI18nConsumer,\r\n WrappedComponent => withSiteMap(withDefaultStyles(WrappedComponent, getGoogleImportStyle))\r\n)(FacebookImport);\r\n","/* eslint-disable import/extensions */\r\n/* eslint-disable import/no-unresolved */\r\n\r\n\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport Promise from 'bluebird';\r\nimport { compose, extend, find } from 'underscore';\r\nimport dataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { FAC_FEATURE_ID } from '@bingads-webui-campaign/recommendation-core';\r\nimport { withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { withCcJsData } from '@bingads-webui-cc-react/js-data-rest';\r\nimport { Constants as CCUIConstants } from '@bingads-webui-clientcenter/entity-utils';\r\nimport { getUrlBuilders } from '@bingads-webui-clientcenter/url-builder-base';\r\nimport { notificationApi } from '@bingads-webui-react/notification-center';\r\nimport { fetchInitData, getPendingImportStatusPromise } from './repository';\r\nimport { loadLegacyDeps, createCommonDeps } from './utils';\r\nimport { getGoogleImportStyle } from './styles/google-import-page-style';\r\n\r\nconst FAC_FEATUREID =\r\n parseInt(FAC_FEATURE_ID.GOOGLE_IMPORT, 10);\r\nconst FAC_STATUS_NOT_IN_PROGRESS = CCUIConstants.RecommendationAdoptionStatus.NotInProgess;\r\nconst FAC_STATUS_ACTIVE = CCUIConstants.RecommendationAdoptionStatus.Active;\r\n\r\nclass GoogleImport extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.perfMarker = props.perfMarker;\r\n this.initialize(props);\r\n this.state = {\r\n importId: props.scope.values.importId,\r\n };\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (nextProps.scope.values.importId !== prevState.importId) {\r\n return {\r\n importId: nextProps.scope.values.importId,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n componentWillUnmount() {\r\n // call google import page remove function\r\n if (this.googleImportPage) {\r\n this.googleImportPage.remove();\r\n }\r\n }\r\n\r\n initialize(props) {\r\n this.perfMarker.willFetchData();\r\n const fetchInitDataPromise = fetchInitData(props.scope.values, true);\r\n // don't take reject param, if coupon call fails, we will just not show the offer\r\n const getCouponPromise = new Promise((resolve) => {\r\n if (props.scope.values.aid) {\r\n resolve(props.ccJsData.FeatureAdoptionCoupon\r\n .findAll({ aid: props.scope.values.aid }));\r\n }\r\n resolve(null);\r\n })\r\n // if call fails, eat the error to avoid blocking workflow\r\n .then(coupons =>\r\n find(\r\n coupons,\r\n coupon =>\r\n coupon.FeatureId === FAC_FEATUREID &&\r\n (coupon.Status === FAC_STATUS_NOT_IN_PROGRESS || coupon.Status === FAC_STATUS_ACTIVE)\r\n )).catch(() => null);\r\n\r\n return React.lazy(() => Promise.all([\r\n fetchInitDataPromise,\r\n getPendingImportStatusPromise(),\r\n getCouponPromise,\r\n ]).then(([data, importStatus, coupon]) => {\r\n const deps = this.createDeps(data, props, importStatus, coupon);\r\n return loadLegacyDeps(props).then(spaFactory => spaFactory.initGoogleImportPage(deps));\r\n })\r\n .then(view => view.render())\r\n .then((instance) => {\r\n this.googleImportPage = instance;\r\n ReactDOM.render(\r\n ,\r\n document.getElementById('googleImportPageViewMount')\r\n );\r\n instance.startPollingAfterContinueImport();\r\n\r\n return {\r\n default: () => null,\r\n };\r\n }));\r\n }\r\n\r\n createDeps(data, props, importStatus, coupon) {\r\n const {\r\n importId,\r\n taskItemId,\r\n opportunityId,\r\n source,\r\n opportunityType,\r\n } = props.scope.values;\r\n const currency = props.serverContext.CurrentAccount && props.serverContext.CurrentAccount.CurrencyCode;\r\n\r\n const deps = createCommonDeps({\r\n ...props,\r\n data,\r\n });\r\n\r\n const { BillingUrlBuilder } = getUrlBuilders({\r\n ccBaseUrl: props.serverContext.Urls.ClientCenterBaseUrl,\r\n aidFetcher: () => props.serverContext.CurrentAccount.Id,\r\n cidFetcher: () => props.serverContext.CurrentCustomer.Id,\r\n uidFetcher: () => props.serverContext.CurrentUser.Id,\r\n });\r\n\r\n extend(\r\n deps,\r\n {\r\n currency,\r\n importStatus,\r\n importId,\r\n taskItemId,\r\n opportunityId,\r\n opportunitySource: source,\r\n opportunityType,\r\n uxMode: 'main',\r\n perfMarker: this.perfMarker,\r\n ccJsData: props.ccJsData,\r\n showAlertHandler: ({\r\n title,\r\n message,\r\n level,\r\n action,\r\n }) => {\r\n let constructedMessage = message;\r\n\r\n if (title) {\r\n constructedMessage = `${title} ${constructedMessage}`;\r\n }\r\n if (action) {\r\n const openingAnchor = ``;\r\n\r\n constructedMessage = `${constructedMessage} ${openingAnchor}${action.message}`;\r\n }\r\n notificationApi.add({\r\n severity: level,\r\n title,\r\n message: constructedMessage,\r\n target: 'FloatingBanner',\r\n });\r\n },\r\n isBillToCustomer: data.isBillToCustomer,\r\n couponDetailsUrl: new BillingUrlBuilder({ isShortUrl: false }).action('coupondetails').url,\r\n dataContextManager,\r\n },\r\n coupon && { coupon }\r\n );\r\n\r\n return deps;\r\n }\r\n\r\n render() {\r\n this.GoogleImportPageView = this.initialize(this.props);\r\n return (\r\n }>\r\n
\r\n \r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nGoogleImport.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.object.isRequired,\r\n CurrentCustomer: PropTypes.object.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n pageContainer: PropTypes.string.isRequired,\r\n googleImportPage: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n IsUserContentAllowed: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n};\r\n\r\nexport const StyledGoogleImport = compose(\r\n withI18nConsumer,\r\n withCcJsData,\r\n WrappedComponent => withSiteMap(withDefaultStyles(WrappedComponent, getGoogleImportStyle))\r\n)(GoogleImport);\r\n","import { extend } from 'underscore';\r\nimport { uiblockerStyle, glyphIconStyle, helpbuttonStyle, inputFieldStyle, tableStyle, buttonInputStyle, learnMoreStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { getCommonStyle, importUiBlockerStyle } from './common-style';\r\n\r\nexport const getFileImportStyle = (_, { palette = {} }) => ({\r\n '@global': extend(\r\n {},\r\n uiblockerStyle({ palette }),\r\n glyphIconStyle({ palette }),\r\n helpbuttonStyle({ palette }),\r\n inputFieldStyle({ palette }),\r\n importUiBlockerStyle({ palette })\r\n ),\r\n ...getCommonStyle({ palette }),\r\n fileImportPage: extend(\r\n {},\r\n tableStyle({ palette }),\r\n buttonInputStyle({ palette }),\r\n learnMoreStyle({ palette }),\r\n {\r\n '& .import-preview-grid .table, .import-summary-grid .table': {\r\n '& > thead > tr > th': {\r\n borderTop: '2px solid #81868B !important',\r\n borderBottom: '2px solid #81868B !important',\r\n },\r\n '& > tbody > tr > td': {\r\n padding: 8,\r\n },\r\n },\r\n },\r\n {\r\n '& .column-matching-grid': {\r\n maxHeight: '900px',\r\n overflowY: 'auto',\r\n overflowX: 'auto',\r\n '& tbody tr': {\r\n height: '35px',\r\n padding: '4px',\r\n },\r\n '& col[class^=\"col-\"]': {\r\n width: '100px',\r\n minWidth: '100px',\r\n },\r\n '& .column-header': {\r\n verticalAlign: 'middle',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n fontSize: '15px',\r\n padding: '8px 10px 8px 10px !important',\r\n },\r\n '& select': {\r\n verticalAlign: '-webkit-baseline-middle',\r\n padding: '1px 0',\r\n height: '25px',\r\n width: '100%',\r\n fontWeight: '400',\r\n },\r\n '& .table-container thead.header': {\r\n borderLeft: 0,\r\n borderRight: 0,\r\n borderTop: '2px solid #81868B',\r\n borderBottom: '2px solid #81868B',\r\n '& th': {\r\n padding: '5px 10px 5px 10px',\r\n },\r\n },\r\n '& table': {\r\n tableLayout: 'fixed',\r\n borderCollapse: 'collapse',\r\n borderSpacing: '0',\r\n '& tbody td': {\r\n verticalAlign: 'middle',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n '& .table-container colgroup.column-group': {\r\n width: '300px',\r\n minWidth: '300px',\r\n },\r\n },\r\n },\r\n {\r\n '& .file-picker': {\r\n maxWidth: '450px',\r\n '& .file-text': {\r\n display: 'block',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n '& .clickable.error': {\r\n color: '#ffffff !important',\r\n margin: 'auto !important',\r\n marginLeft: '8px!important',\r\n },\r\n },\r\n }\r\n ),\r\n});\r\n","/* eslint-disable import/extensions */\r\n/* eslint-disable import/no-unresolved */\r\n\r\n\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport Promise from 'bluebird';\r\nimport { compose, extend, result } from 'underscore';\r\nimport dataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { fetchInitData, getPendingImportStatusPromise } from './repository';\r\nimport { loadLegacyDeps, createCommonDeps } from './utils';\r\nimport { getFileImportStyle } from './styles/file-import-page-style';\r\n\r\nclass FileImport extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.perfMarker = props.perfMarker;\r\n this.state = { FileImportPageView: null };\r\n this.initialize(props);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.scope.values.importId !== this.props.scope.values.importId) {\r\n this.initialize(this.props);\r\n }\r\n }\r\n\r\n initialize(props) {\r\n this.perfMarker.willFetchData();\r\n const fetchInitDataPromise = fetchInitData(props.scope.values, false);\r\n\r\n Promise.all([\r\n fetchInitDataPromise,\r\n getPendingImportStatusPromise(),\r\n ]).then(([data, importStatus]) => {\r\n const deps = this.createDeps(data, props, importStatus);\r\n return loadLegacyDeps(props, false).then(spaFactory => spaFactory.initFileImportPage(deps).render());\r\n })\r\n .then((instance) => {\r\n instance.startPollingAfterContinueImport();\r\n this.setState({\r\n FileImportPageView: (),\r\n });\r\n });\r\n }\r\n\r\n createDeps(data, props, importStatus) {\r\n const deps = createCommonDeps({\r\n ...props,\r\n data,\r\n });\r\n\r\n let importTemplateFileName = 'ImportTemplateWithAdExtensions.csv';\r\n const IsEnhancedShoppingCampaignAllowed = result(props.permissions, 'IsEnhancedShoppingCampaignAllowed', false);\r\n const IsDSAMixedModeCampaignEnabled = result(props.permissions, 'IsDSAMixedModeCampaignEnabled', false);\r\n\r\n if (IsDSAMixedModeCampaignEnabled) {\r\n if (IsEnhancedShoppingCampaignAllowed) {\r\n importTemplateFileName = 'ImportTemplateWithAdExtensionsAndBSCAndAdGroupType.csv';\r\n } else {\r\n importTemplateFileName = 'ImportTemplateWithAdExtensionsAndAdGroupType.csv';\r\n }\r\n } else if (IsEnhancedShoppingCampaignAllowed) {\r\n importTemplateFileName = 'ImportTemplateWithAdExtensionsAndBSC.csv';\r\n } else {\r\n importTemplateFileName = 'ImportTemplateWithAdExtensions.csv';\r\n }\r\n\r\n extend(deps, {\r\n importStatus,\r\n importId: props.scope.values.importId,\r\n notMappedValue: data.notMappedValue,\r\n defaultColumns: data.defaultColumns,\r\n perfMarker: this.perfMarker,\r\n importTemplateUrl: `${props.serverContext.TemplatesPathUrl}Import/${importTemplateFileName}`,\r\n dataContextManager,\r\n });\r\n\r\n return deps;\r\n }\r\n\r\n render() {\r\n return (\r\n }>\r\n
\r\n {this.state.FileImportPageView &&\r\n \r\n {this.state.FileImportPageView}\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nFileImport.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.object.isRequired,\r\n CurrentCustomer: PropTypes.object.isRequired,\r\n TemplatesPathUrl: PropTypes.string.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n pageContainer: PropTypes.string.isRequired,\r\n fileImportPage: PropTypes.string.isRequired,\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n IsUserContentAllowed: PropTypes.bool.isRequired,\r\n IsEnhancedShoppingCampaignAllowed: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n};\r\n\r\nexport const StyledFileImport = compose(\r\n withI18nConsumer,\r\n WrappedComponent => withSiteMap(withDefaultStyles(WrappedComponent, getFileImportStyle))\r\n)(FileImport);\r\n","import { extend } from 'underscore';\r\nimport { merge } from '@bingads-webui/primitive-utilities';\r\nimport { convertToLocalStyle, scrollbarStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nimport { getGoogleImportStyle } from './google-import-page-style';\r\n\r\nconst singleListBoxWidth = 400;\r\nconst singleListBoxHeight = 300;\r\n\r\nconst globalStyleForMultiAccountGoogleImport = ({ palette = {} }) => ({\r\n '.BingAccountViewDetailsView, .StepSummaryDetailView, .TrackingTemplateView, .FinalUrlSuffixView': {\r\n border: `0 solid ${palette.neutralLight}`,\r\n '-webkit-box-shadow': '0 6.4px 14.4px 0 rgba(0,0,0,.132), 0 1.2px 3.6px 0 rgba(0,0,0,.108)',\r\n boxShadow: '0 6.4px 14.4px 0 rgba(0,0,0,.132), 0 1.2px 3.6px 0 rgba(0,0,0,.108)',\r\n borderRadius: 2,\r\n outline: 'none',\r\n backgroundColor: palette.white,\r\n padding: '10px 20px',\r\n width: 350,\r\n\r\n '& .popover-titled-content__title': {\r\n fontWeight: 600,\r\n fontSize: 16,\r\n marginTop: 21,\r\n marginBottom: 10,\r\n },\r\n\r\n '& .popover-titled-content__body': {\r\n '& .selected-account': {\r\n '& h6.truncated': {\r\n fontWeight: 400,\r\n fontSize: 12,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '.StepSummaryDetailView, .TrackingTemplateView, .FinalUrlSuffixView': {\r\n width: 480,\r\n\r\n '& .popover-titled-content__body': {\r\n paddingBottom: 10,\r\n maxHeight: '400px',\r\n overflowY: 'auto',\r\n\r\n '& .table-container': {\r\n '& .table': {\r\n border: 0,\r\n\r\n '& .col-AccountName': {\r\n width: '50%',\r\n },\r\n\r\n '& th.column-header-leaf': {\r\n borderTop: '2px solid #81868B',\r\n borderBottom: '2px solid #81868B',\r\n },\r\n\r\n '& th[data-name=\"AccountName\"], td.AccountName': {\r\n borderLeft: 0,\r\n },\r\n\r\n '& th[data-name=\"customizedContents\"], td.customizedContents, th[data-name=\"urlContents\"], td.urlContents': {\r\n borderRight: 0,\r\n },\r\n\r\n '& td.AccountName, td.customizedContents, td.urlContents': {\r\n verticalAlign: 'middle',\r\n wordBreak: 'break-word',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst getGoogleImportStyleWithGlobal = (_, { palette = {} }) => (merge(\r\n getGoogleImportStyle(_, { palette }),\r\n {\r\n '@global': extend(\r\n {},\r\n globalStyleForMultiAccountGoogleImport({ palette })\r\n ),\r\n }\r\n));\r\n\r\nexport const getMultiAccountGoogleImportStyle = (_, { palette = {} }) => ({\r\n ...getGoogleImportStyleWithGlobal(_, { palette }),\r\n multiAccountGoogleImportPage: extend(\r\n {},\r\n {\r\n // choose accounts\r\n '& .multi-account-title-grid': {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n width: '100%',\r\n },\r\n\r\n '& .multi-account-title-grid + .row > .col-sm-9': {\r\n width: '100%',\r\n\r\n '& .multi-bing-account-grid': {\r\n '& .doubleListBox': {\r\n ...convertToLocalStyle(scrollbarStyle({ palette })),\r\n\r\n '& .row, .form-group': {\r\n margin: 0,\r\n },\r\n\r\n '& .layout-columns-container.row': {\r\n '& .layout-columns-element': {\r\n width: singleListBoxWidth,\r\n marginRight: 8,\r\n },\r\n\r\n '& .layout-columns-element[data-bind=\"visible: features.filtering || showMaximumSelectionAlert\"]': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: 0,\r\n float: 'none',\r\n\r\n '& .form-group[data-bind=\"visible: features.filtering\"]': {\r\n order: 2,\r\n },\r\n\r\n '& >div[data-bind=\"visible: showMaximumSelectionAlert\"]': {\r\n order: 1,\r\n marginBottom: 10.5,\r\n },\r\n },\r\n\r\n '& .dlb-filter-alignPlaceholder': {\r\n padding: 0,\r\n width: '100%',\r\n position: 'absolute',\r\n\r\n '& .searchbox': {\r\n '& .searchbox-input': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n borderBottom: 0,\r\n height: 48,\r\n paddingLeft: 48,\r\n },\r\n\r\n '& .form-control-feedback': {\r\n position: 'absolute',\r\n left: 0,\r\n lineHeight: '46px',\r\n pointerEvents: 'auto',\r\n },\r\n\r\n '& .filter_search_icon_small': {\r\n right: 0,\r\n },\r\n },\r\n },\r\n\r\n\r\n '& .layout-columns-element:nth-child(2)': {\r\n height: 'auto',\r\n marginTop: 45,\r\n padding: 0,\r\n\r\n '& .row.form-group': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n\r\n '& .panel-body': {\r\n height: singleListBoxHeight - 48 - 36,\r\n },\r\n },\r\n\r\n '& .layout-columns-element:nth-child(3)': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n padding: 0,\r\n height: singleListBoxHeight,\r\n\r\n '& .panel-body': {\r\n height: singleListBoxHeight - 36,\r\n },\r\n },\r\n\r\n '& .panel-form': {\r\n position: 'relative',\r\n\r\n '& .panel-heading': {\r\n padding: 0,\r\n\r\n '& .panel-title': {\r\n fontSize: 14,\r\n height: 'auto',\r\n lineHeight: '36px',\r\n padding: '0 8px',\r\n margin: 0,\r\n },\r\n },\r\n\r\n '& .panel-body': {\r\n padding: 0,\r\n overflowY: 'auto',\r\n\r\n '& .dlb-selectAll, .dlb-deselectAll': {\r\n position: 'absolute',\r\n right: 0,\r\n top: 0,\r\n padding: '5px 10px',\r\n\r\n '& .remove.arrow-button, .enabled.arrow-button': {\r\n display: 'none',\r\n },\r\n\r\n '& span': {\r\n color: palette.themePrimary,\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .col-sm-12': {\r\n padding: 0,\r\n },\r\n },\r\n\r\n '& .dlb-source, & .dlb-selected': {\r\n '&:focus': {\r\n outline: 'none',\r\n },\r\n },\r\n\r\n '& .k-state-focused': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n\r\n '& .k-state-selected, & .selected': {\r\n backgroundColor: palette.neutralLight,\r\n },\r\n\r\n '& .dlbItem': {\r\n padding: '0 8px',\r\n position: 'relative',\r\n\r\n '&:hover': {\r\n background: palette.neutralLighter,\r\n },\r\n\r\n '& .dlbItem-status-icon': {\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n paddingRight: 5,\r\n },\r\n\r\n '& .dlbItem-text': {\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n },\r\n\r\n '& .dlbItem-content': {\r\n minHeight: 36,\r\n lineHeight: '36px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n width: '90%',\r\n },\r\n\r\n '& .dlbItem-actions': {\r\n position: 'absolute',\r\n top: 8,\r\n right: 8,\r\n\r\n '& .arrow-button:focus': {\r\n textDecoration: 'none',\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n },\r\n\r\n },\r\n\r\n '& .pager': {\r\n height: 'auto',\r\n\r\n '& .pager-page': {\r\n float: 'right',\r\n\r\n '& span': {\r\n marginLeft: 6,\r\n verticalAlign: 'baseline',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .truncated': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n // multi google account/campaign grid\r\n '& .multi-google-account-grid, & .multi-google-campaign-grid': {\r\n '& .table-container': {\r\n '& .text-center.column-header-leaf': {\r\n padding: '8px 10px 8px 0',\r\n },\r\n\r\n '& .column-header-leaf[data-name=\"AccountName\"], .column-header-leaf[data-name=\"Name\"]': {\r\n borderRight: `1px solid ${palette.neutralLight}`,\r\n },\r\n\r\n '& tr': {\r\n '& td.truncated': {\r\n borderRight: `1px solid ${palette.neutralLight}`,\r\n },\r\n },\r\n\r\n '& tr:hover, tr.row-selected': {\r\n '& td.truncated': {\r\n borderRight: `1px solid ${palette.white}`,\r\n },\r\n },\r\n },\r\n\r\n '& .bing-account-selector, & .google-account-selector': {\r\n width: '100%',\r\n maxWidth: 300,\r\n\r\n '& .ba-dropdown-selector': {\r\n position: 'relative',\r\n\r\n '& .dropdown-toggle': {\r\n width: '100%',\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n\r\n '& .truncated': {\r\n height: 30,\r\n lineHeight: '30px',\r\n paddingRight: 25,\r\n },\r\n\r\n '& .glyphicon-triangle-bottom': {\r\n position: 'absolute',\r\n top: '50%',\r\n right: 20,\r\n transform: 'translate(0, -50%)',\r\n\r\n '&:before': {\r\n content: '\"\\\\E70D\"',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .ba-dropdown-list-popup, & .ba-dropdown-selector.open': {\r\n position: 'relative',\r\n\r\n '& .dropdown-menu': {\r\n opacity: 1,\r\n visibility: 'visible',\r\n zIndex: 1,\r\n padding: '10px 15px',\r\n width: 300,\r\n top: '100%',\r\n\r\n '& .search-box-container': {\r\n '& .search-box__input-group': {\r\n width: '100%',\r\n\r\n '& .search-box__input': {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n\r\n '& .list-selector-container': {\r\n '& .list-selector-content': {\r\n '& >div': {\r\n padding: '8px 0',\r\n },\r\n\r\n '& .list-selector-item': {\r\n cursor: 'pointer',\r\n\r\n '&:hover': {\r\n background: palette.neutralLighter,\r\n },\r\n\r\n '&.selected': {\r\n background: palette.neutralLight,\r\n },\r\n },\r\n\r\n '& .list-selector-option': {\r\n '& >.truncated': {\r\n display: 'block',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n // multi google campaign grid\r\n '& .multi-google-campaign-grid': {\r\n '& div[role=\"radiogroup\"]': {\r\n '& .radio-inline:nth-child(2)': {\r\n display: 'table-cell',\r\n marginLeft: 0,\r\n },\r\n },\r\n\r\n '& .table-container': {\r\n '& td.text-center': {\r\n padding: '8px 10px 8px 0',\r\n },\r\n },\r\n\r\n '& .show-paused-filter': {\r\n '& .checkbox': {\r\n display: 'inline-block',\r\n },\r\n },\r\n\r\n '& .importCampaignsGrid + .alert-info': {\r\n display: 'block',\r\n },\r\n },\r\n }\r\n ),\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { compose, extend, size } from 'underscore';\r\nimport { get, set } from '@bingads-webui/cookie';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { fetchInitData } from './repository';\r\nimport { loadLegacyDeps, createCommonDeps } from './utils';\r\nimport { getMultiAccountGoogleImportStyle } from './styles/multi-account-google-import-page-style';\r\n\r\nconst multiAcountScheduleImportTaskItemId = 'multi-account-scheduled-import-task-item-id';\r\n\r\nclass MultiAccountGoogleImport extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.perfMarker = props.perfMarker;\r\n\r\n if (props.serverContext && props.serverContext.CurrentAccount) {\r\n // eslint-disable-next-line no-param-reassign\r\n props.serverContext.CurrentAccount.AdvertiserCustomerID = null;\r\n // Note: this is needed, because for multi-account, we should never use CurrentAccount.AdvertiserCustomerID in API request.\r\n // Set this to null, and later on odata's withContextArgs extension will use CurrentCustomer.ID instead.\r\n }\r\n this.initialize(props);\r\n }\r\n\r\n initialize(props) {\r\n this.perfMarker.willFetchData();\r\n const fetchInitDataPromise = fetchInitData(props.scope.values, true);\r\n\r\n this.MultiAccountGoogleImportPageView = React.lazy(() => fetchInitDataPromise.then((data) => {\r\n const deps = this.createDeps(data, props);\r\n return loadLegacyDeps(props).then(spaFactory => spaFactory.initGoogleImportPage(deps));\r\n })\r\n .then(view => view.render())\r\n .then((instance) => {\r\n instance.startPollingAfterContinueImport();\r\n return {\r\n default: () => (\r\n ),\r\n };\r\n }));\r\n }\r\n\r\n createDeps(data, props) {\r\n let taskItemId = get(multiAcountScheduleImportTaskItemId);\r\n if (size(taskItemId)) {\r\n taskItemId = parseInt(taskItemId, 10);\r\n set(multiAcountScheduleImportTaskItemId, '');\r\n }\r\n\r\n const deps = createCommonDeps({\r\n ...props,\r\n data,\r\n });\r\n extend(deps, {\r\n showPayment: false,\r\n importId: null,\r\n taskItemId,\r\n uxMode: 'main',\r\n isMultiAccountImport: true,\r\n perfMarker: this.perfMarker,\r\n });\r\n\r\n return deps;\r\n }\r\n\r\n render() {\r\n return (\r\n }>\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nMultiAccountGoogleImport.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.object.isRequired,\r\n CurrentCustomer: PropTypes.object.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n pageContainer: PropTypes.string.isRequired,\r\n googleImportPage: PropTypes.string.isRequired,\r\n multiAccountGoogleImportPage: PropTypes.string.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n IsUserContentAllowed: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n};\r\n\r\nexport const StyledMultiAccountGoogleImport = compose(\r\n withI18nConsumer,\r\n WrappedComponent => withSiteMap(withDefaultStyles(WrappedComponent, getMultiAccountGoogleImportStyle))\r\n)(MultiAccountGoogleImport);\r\n","import { extend } from 'underscore';\r\nimport { uiblockerStyle, glyphIconStyle, helpbuttonStyle, inputFieldStyle, buttonInputStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nimport { getCommonStyle, importUiBlockerStyle } from './common-style';\r\n\r\nexport const getImportCredentialIDStyle = (_, { palette = {} }) => ({\r\n '@global': extend(\r\n {},\r\n uiblockerStyle({ palette }),\r\n glyphIconStyle({ palette }),\r\n helpbuttonStyle({ palette }),\r\n inputFieldStyle({ palette }),\r\n importUiBlockerStyle({ palette })\r\n ),\r\n ...getCommonStyle({ palette }),\r\n importCredentialIdPage: extend(\r\n {},\r\n buttonInputStyle({ palette }),\r\n {\r\n '& .form-group': {\r\n marginBottom: 26,\r\n },\r\n '& span.google-account-name, a.signout, .userid-text-input, .userid-submit-button': {\r\n display: 'inline-block',\r\n },\r\n '& .userid-text-input': {\r\n minWidth: 500,\r\n },\r\n '& a.signout': {\r\n marginLeft: 18,\r\n },\r\n '& .credential-id-text-copy-row, .user-id-setting-row, .user-id-text-row': {\r\n marginTop: 7,\r\n },\r\n '& .credential-id-text': {\r\n display: 'inline-block',\r\n height: 32,\r\n padding: '6px 8px',\r\n width: 300,\r\n 'background-color': '#F3F2F1',\r\n },\r\n '& .copy-button, .userid-submit-button': {\r\n marginLeft: 12,\r\n },\r\n }\r\n ),\r\n});\r\n","/* eslint-disable jsx-a11y/iframe-has-title */\r\n/* eslint-disable jsx-a11y/anchor-has-content */\r\nimport React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport _, { chain, compose, extend, isEmpty, result } from 'underscore';\r\nimport $ from 'jquery';\r\nimport Promise from 'bluebird';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { FormGroup, Label, Row, Col } from '@bingads-webui-react/primitive';\r\nimport { TextField, DefaultButton, PrimaryButton } from '@bingads-webui-react/fabric-with-signal';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { HelpLink } from '@bingads-webui-react/help-link';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { GoogleLoginRepository, GoogleImportRepository } from '@bingads-webui-campaign/import-shared-repositories';\r\nimport { GoogleLoginButton } from '@bingads-webui-campaign/imports-core';\r\nimport { fetchInitData } from './repository';\r\nimport { loadLegacyDeps, createCommonDeps } from './utils';\r\nimport { getImportCredentialIDStyle } from './styles/import-credential-id-page-style';\r\n\r\nconst MAXLEN = 1000;\r\nconst MAXINT32 = 2147483647;\r\nclass ImportCredentialId extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.perfMarker = props.perfMarker;\r\n this.GSILocal = result(props.permissions.dynamic, 'GSILocal');\r\n this.initialize(props);\r\n this.defaultState = {\r\n isSignIn: false,\r\n credentialId: '',\r\n errorMsg: '',\r\n };\r\n this.IsImportCredentialIdShareUserEnabled = result(props.permissions.dynamic, 'ImportCredentialIdShareUser');\r\n\r\n const { shareWithUserIds: shareWithUserIdsOrigin } = this.props.scope.values;\r\n const shareWithUserIds = this.getValidShareWithUserIds((shareWithUserIdsOrigin || '').toString());\r\n\r\n this.state = extend({\r\n isInit: false,\r\n isUserIdSettingExpanded: false,\r\n shareWithUserIds,\r\n }, this.defaultState);\r\n\r\n this.signInFailedEmptySessionId = false;\r\n }\r\n\r\n onSignIn = () => {\r\n if (this.deps.token) {\r\n this.signIntoGoogleInDevEnvWithToken();\r\n } else {\r\n this.logTrace(`use offline-access consent: ${this.signInFailedEmptySessionId}`);\r\n new Promise((resolve, reject) => {\r\n this.googleLoginRepository.googleSignIn({\r\n onSuccess: resolve,\r\n onFail: reject,\r\n useConsentPrompt: this.signInFailedEmptySessionId,\r\n });\r\n }).then(response => this.onGoogleAuthSuccess(response))\r\n .catch((error) => {\r\n this.logTrace(`failed to login to google import spa, err: ${error && error.authErrors}`);\r\n if (error.authErrors === 'popup_failed_to_open') {\r\n this.setState({ errorMsg: this.i18n.get('GoogleImport_AuthorizationError_Popup_Blocked') });\r\n } else if (error.authErrors === 'idpiframe_initialization_failed') {\r\n this.setState({ errorMsg: this.i18n.get('GoogleImport_AuthorizationError_Cookies_Disabled') });\r\n } else if (error.authErrors === 'popup_closed') {\r\n this.setState({ errorMsg: this.i18n.get('GoogleImport_AuthorizationError_Closed_By_User') });\r\n } else {\r\n this.setState({ errorMsg: this.i18n.get('GoogleImport_AuthorizationError') });\r\n }\r\n })\r\n .finally(withUiBlock($('.import-credential-id-page-container'), this.i18n.getString('Loading')));\r\n }\r\n };\r\n\r\n onSignOut = () => {\r\n this.repository.logout();\r\n this.setState(this.defaultState);\r\n };\r\n\r\n onCopy = () => {\r\n window.navigator.clipboard.writeText(this.state.credentialId);\r\n notificationApi.showInfo(this.props.i18n.getString(_TL_('Copied!')));\r\n };\r\n\r\n onGoogleAuthSuccess = response => this.processSignIn(this.repository.startGoogleSession(response.code, this.state.shareWithUserIds));\r\n\r\n onUserIdSettingExpand = () => {\r\n this.setState({\r\n isUserIdSettingExpanded: true,\r\n });\r\n };\r\n\r\n onUserIdChange = (e, val) => {\r\n if (!val || val.length <= MAXLEN) {\r\n this.setState({\r\n userIdsFromInput: val,\r\n });\r\n }\r\n };\r\n\r\n onUserIdConfirm = () => {\r\n const shareWithUserIds = this.getValidShareWithUserIds(this.state.userIdsFromInput);\r\n if (!isEmpty(shareWithUserIds)) {\r\n this.setState({\r\n shareWithUserIds,\r\n });\r\n }\r\n };\r\n\r\n getValidShareWithUserIds(strIds) {\r\n if (isEmpty(strIds)) {\r\n return '';\r\n }\r\n const ids = chain(strIds.split(','))\r\n .map(num => Number(num))\r\n // userid should be int32.\r\n .filter(num => num > 0 && num <= MAXINT32)\r\n .uniq()\r\n .value();\r\n\r\n return ids.join(',');\r\n }\r\n\r\n getGoogleAccountName() {\r\n return this.repository.getGoogleAccountName();\r\n }\r\n\r\n initialize(props) {\r\n this.perfMarker.willFetchData();\r\n const fetchInitDataPromise = fetchInitData(props.scope.values, true);\r\n\r\n fetchInitDataPromise.then((data) => {\r\n const settings = this.createDeps(data, props);\r\n return loadLegacyDeps(props)\r\n .then(spaFactory => spaFactory.initDeps(settings))\r\n .then((deps) => {\r\n this.deps = deps;\r\n this.i18n = this.deps.i18n;\r\n this.repository = new GoogleImportRepository({\r\n deps: this.deps,\r\n });\r\n this.logTrace(`GSILocal: ${this.GSILocal}`);\r\n this.googleLoginRepository = new GoogleLoginRepository({ deps: { google: window.google, GSILocal: this.GSILocal } });\r\n this.setState({ isInit: true });\r\n });\r\n });\r\n }\r\n\r\n createDeps(data, props) {\r\n const deps = createCommonDeps({\r\n ...props,\r\n data,\r\n });\r\n extend(deps, {\r\n perfMarker: this.perfMarker,\r\n });\r\n\r\n return deps;\r\n }\r\n\r\n logTrace(...args) {\r\n this.repository.logTrace(...args);\r\n }\r\n\r\n signIntoGoogleInDevEnvWithToken = () => this.processSignIn(this.repository.startGoogleSessionWithToken(this.deps.token, this.state.shareWithUserIds));\r\n\r\n processSignIn = startSessionPromise => startSessionPromise.then((sessionId) => {\r\n if (sessionId) {\r\n this.setState({\r\n credentialId: sessionId,\r\n isSignIn: true,\r\n });\r\n this.signInFailedEmptySessionId = false;\r\n } else {\r\n this.signInFailedEmptySessionId = true;\r\n this.setState({ 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($('.import-credential-id-page-container'), this.i18n.getString('Loading')));\r\n\r\n handleError(err) {\r\n let code;\r\n let msg;\r\n const { i18n } = this;\r\n const email = this.getGoogleAccountName();\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.setState({ errorMsg: msg });\r\n this.onSignOut();\r\n } else {\r\n // this error will be shown on alert center\r\n this.handleGenericError(err);\r\n }\r\n }\r\n\r\n handleGenericError(err) {\r\n this.repository.logException(err);\r\n\r\n notificationApi.showWarning(this.repository.getLocalizedErrorMessage());\r\n }\r\n\r\n render() {\r\n return this.state.isInit ? (\r\n
\r\n
\r\n

{this.props.i18n.getString(_TL_('Import credential ID'))}

\r\n

\r\n {this.props.i18n.getString(_TL_('An import credential ID is only required by the application programming interface (API) to start importing accounts from Google Ads to Microsoft Advertising. To obtain an import credential ID, please sign in to your Google account.'))}\r\n  \r\n \r\n \r\n {this.props.i18n.getString(_TL_('Learn more about the API.'))}\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\n \r\n {`${this.props.serverContext.CurrentCustomer.Name} - ${this.props.serverContext.CurrentCustomer.Number}`}\r\n \r\n \r\n \r\n {\r\n isEmpty(this.state.shareWithUserIds) ? <> :\r\n \r\n \r\n {this.props.i18n.getString(_TL_('Will also be shared with user ids: {{userIds}}'), { userIds: this.state.shareWithUserIds })}\r\n \r\n \r\n }\r\n {this.IsImportCredentialIdShareUserEnabled && isEmpty(this.state.shareWithUserIds) ?\r\n \r\n \r\n {this.state.isUserIdSettingExpanded ?\r\n \r\n \r\n \r\n :\r\n }\r\n \r\n : <>\r\n }\r\n \r\n