{"version":3,"file":"static/js/application.initial~bfdd1ec0.774fabe0.js","mappings":"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","sources":["../../../../experiments/packages/experiment-score-card/src/shared/utils.js","../../../../experiments/packages/experiment-actions/src/apply.js","../../../../experiments/packages/experiment-actions/src/end.js","../../../../experiments/packages/experiment-actions/src/view-vnext.js","../../../../experiments/packages/experiment-score-card/src/views/title-vnext.js","../../../../experiments/packages/experiment-score-card/src/views/label-row.js","../../../../experiments/packages/experiment-score-card/src/shared/format.js","../../../../experiments/packages/experiment-score-card/src/views/label-column.js","../../../../experiments/packages/experiment-score-card/src/views/span-experiment.js","../../../../experiments/packages/experiment-score-card/src/views/span-original.js","../../../../experiments/packages/experiment-score-card/src/views/table-fixed-vnext.js","../../../../experiments/packages/experiment-score-card/src/views/metric-picker.js","../../../../experiments/packages/experiment-score-card/src/views/metric-experiment.js","../../../../experiments/packages/experiment-score-card/src/views/metric-original.js","../../../../experiments/packages/experiment-score-card/src/views/table-scrollable-vnext.js","../../../../experiments/packages/experiment-score-card/src/views/stroke.js","../../../../experiments/packages/experiment-score-card/src/shared/experiment-actions-styles.js","../../../../experiments/packages/experiment-score-card/src/index-vnext.js","../../../../experiments/packages/experiment-score-card/src/views/title.js","../../../../experiments/packages/experiment-score-card/src/views/table-fixed.js","../../../../experiments/packages/experiment-score-card/src/views/table-scrollable.js","../../../../experiments/packages/experiment-actions/src/apply.pug","../../../../experiments/packages/experiment-actions/src/end.pug","../../../../experiments/packages/experiment-actions/src/template-vnext.pug","../../../../experiments/packages/experiment-actions/src/template.pug"],"sourcesContent":["import 'jquery';\r\nimport kendo from '@bingads-webui/kendo/kendo.core';\r\n\r\nexport function addDateListener(state, handler) {\r\n state.on('change:$daterange', handler);\r\n}\r\n\r\nexport function removeDateListener(state, handler) {\r\n state.off('change:$daterange', handler);\r\n}\r\n\r\n// Use passed in format to read the dateString into a Date object.\r\nexport function parseDate(dateString, format) {\r\n return kendo.parseDate(dateString, format);\r\n}\r\n\r\nconst defaultDateFormat = 'M/d/yyyy';\r\n\r\n// Take JS Date object and transform it to a string to display in the UI.\r\nexport function formatDateForUI(date, isUINext, pageContext, serverContext) {\r\n let format = defaultDateFormat;\r\n\r\n if (isUINext) {\r\n format = serverContext.CurrentUser.CultureDateTimeFormat.ShortDatePattern || defaultDateFormat;\r\n } else {\r\n format = pageContext.CultureDateTimeFormat.ShortDatePattern || defaultDateFormat;\r\n }\r\n\r\n return kendo.toString(date, format);\r\n}\r\n\r\n// ICM 177956313\r\n// This function formats a Date object to a string of format M/d/yyyy.\r\n// Do not use this function for displaying to the UI.\r\nexport function formatDateForMT(date) {\r\n return kendo.toString(date, defaultDateFormat);\r\n}\r\n\r\nexport function parseDateRangeToQuery(dateRange) {\r\n const query = {\r\n startDate: formatDateForMT(dateRange.start),\r\n endDate: formatDateForMT(dateRange.end),\r\n };\r\n\r\n return query;\r\n}\r\n\r\n// Trims 2019-07-24T00:00:00-07:00 to 2019-07-24 and then parses that to a Date object.\r\nexport function getDateFromYearMonthDayDateString(dateString) {\r\n if (!dateString) {\r\n return null;\r\n }\r\n\r\n const dateStringToBeParsed = dateString.substring(0, dateString.indexOf('T'));\r\n const date = parseDate(dateStringToBeParsed, 'yyyy-MM-dd');\r\n return date;\r\n}\r\n\r\n// ICM 172236553\r\n// We want to display the maximum start date and the minimum end date to tell the user that\r\n// the metrics data is valid for when the experiment is active within the selected date range.\r\n// The selected date range comes from the date picker.\r\n// The date picker date range is compared with the experiment's start and end date.\r\nexport function getPerformanceComparisonPeriodDateText({\r\n datePickerStartDate,\r\n datePickerEndDate,\r\n experimentStartDate,\r\n experimentEndDate,\r\n isUINext,\r\n pageContext = {},\r\n serverContext = {},\r\n}) {\r\n // Create JavaScript Date objects for use in equality and greater/less than comparisons.\r\n // If MT changes the format of the returned StartDate and EndDate, we'll need to change this.\r\n const parsedExpStartDate = getDateFromYearMonthDayDateString(experimentStartDate);\r\n const parsedExpEndDate = getDateFromYearMonthDayDateString(experimentEndDate);\r\n\r\n // In a valid scenario, parsedExpStartDate will exist since an experiment must have a start date.\r\n // Check to see if the Experiment's start and end date are within the date picker's date range.\r\n const doDateValuesExist = parsedExpEndDate && datePickerStartDate && datePickerEndDate;\r\n const existsAndIntersects = doDateValuesExist &&\r\n parsedExpStartDate <= datePickerEndDate &&\r\n datePickerStartDate <= parsedExpEndDate;\r\n\r\n // If the experiment has no end date,\r\n // check to see that the experiment start date is within the date picker's end date.\r\n const existsAndIntersectsExceptExperimentEndDate = !parsedExpEndDate &&\r\n datePickerStartDate && datePickerEndDate &&\r\n parsedExpStartDate <= datePickerEndDate;\r\n\r\n let perfCompPeriodStartDate = datePickerStartDate;\r\n\r\n // This logic is to display the start date of the performance comparison period:\r\n // perfCompPeriodStartDate = max(ExperimentStartDate, DatePickerStartDate).\r\n // There is a case where the Experiment has no end date, then we will\r\n // still display the max of the 2 start dates.\r\n if ((existsAndIntersects || existsAndIntersectsExceptExperimentEndDate) &&\r\n parsedExpStartDate > datePickerStartDate) {\r\n perfCompPeriodStartDate = parsedExpStartDate;\r\n }\r\n\r\n let perfCompPeriodEndDate = datePickerEndDate;\r\n\r\n // This logic is to display the end date of the performance comparison period:\r\n // end = min(ExperimentEndDate, DatePickerEndDate).\r\n if (existsAndIntersects && datePickerEndDate > parsedExpEndDate) {\r\n perfCompPeriodEndDate = parsedExpEndDate;\r\n }\r\n\r\n // Done comparing with Date objects, now we want to get strings for the UI.\r\n const start = formatDateForUI(perfCompPeriodStartDate, isUINext, pageContext, serverContext);\r\n const end = formatDateForUI(perfCompPeriodEndDate, isUINext, pageContext, serverContext);\r\n\r\n return {\r\n start,\r\n end,\r\n };\r\n}\r\n\r\nexport function shouldCookieBasedWarningBeShown(startDate, experimentType) {\r\n if (startDate && experimentType === 'CookieBased') {\r\n const twoMonthsAgo = new Date();\r\n twoMonthsAgo.setMonth(twoMonthsAgo.getMonth() - 2);\r\n return startDate <= twoMonthsAgo;\r\n }\r\n\r\n return false;\r\n}\r\n","import { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport template from './apply.pug';\r\n\r\nexport class ApplyView extends DeterministicView {\r\n initialize({\r\n i18n,\r\n experimentName,\r\n originalCampaignName,\r\n }) {\r\n this.i18n = i18n;\r\n this.experimentName = experimentName;\r\n this.originalCampaignName = originalCampaignName;\r\n this.setState({\r\n selectedItem: 'update-original',\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 'click input[name=\"apply-option\"]': (e) => {\r\n this.setState({\r\n selectedItem: e.target.id,\r\n });\r\n },\r\n };\r\n }\r\n}\r\n","import { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport template from './end.pug';\r\n\r\nexport class EndView extends DeterministicView {\r\n initialize({\r\n i18n,\r\n experimentName,\r\n }) {\r\n this.i18n = i18n;\r\n this.experimentName = experimentName;\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n}\r\n","/* eslint-disable import/no-unresolved */\r\n/* eslint-disable import/extensions */\r\nimport _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport $ from 'jquery';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { Dialog } from '@bingads-webui/dialog';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { buildLegacyI18n } from '@bingads-webui-campaign-react/smart-i18n';\r\nimport { AlertHelper } from '@bingads-webui-campaign/alert-helper';\r\nimport { ApplyView } from './apply';\r\nimport { EndView } from './end';\r\nimport template from './template-vnext.pug';\r\n\r\n// Needed for cases where this view loads before legacy-bootstrap can do this\r\nBackbone.$ = $;\r\n\r\nconst i18nMap = {\r\n Experiment_UseExperimentSettingsIn: _TL_('Apply experiment to...'),\r\n Experiment_Error_ExperimentStatusInvalid: _TL_('Experiment status is invalid'),\r\n Experiment_Error_EndedExperimentCannotBeChanged: _TL_('The experiment has already ended and cannot be changed.'),\r\n Experiment_Error_undefined: _TL_('Bing Ads has encountered an error. Please try again or contact Support.'),\r\n Cancel: _TL_('Cancel'),\r\n Save: _TL_('Save'),\r\n Experiment_EndDialog_Title: _TL_('Are you sure you want to end this experiment now?'),\r\n Experiment_EndDialog_SaveButton: _TL_('Yes, end experiment'),\r\n Experiment_EndDialog_Description1: _TL_('{{name}} will be ended now.'),\r\n Experiment_EndDialog_Description2: _TL_('Once an experiment is ended, it cannot be restarted.'),\r\n Experiment_ConvertToNewCampaign_Description: _TL_('Your new campaign will have the same daily budget as your original campaign ({{name}}) and will adopt the settings of this experiment. {{name}} will pause automatically.'),\r\n Experiment_ConvertToNewCampaign_Title: _TL_('A new campaign'),\r\n Experiment_UpdateOriginalCampaign_Description: _TL_('Your original campaign will adopt the settings of this experiment and {{name}} will pause automatically.'),\r\n Experiment_UpdateOriginalCampaign_Title: _TL_('Your original campaign'),\r\n Experiment_EndNow: _TL_('End experiment now'),\r\n};\r\n\r\nexport class ExperimentActions extends DeterministicView {\r\n initialize({\r\n experimentEntity,\r\n expItemFromEdm,\r\n i18n,\r\n scope,\r\n }) {\r\n this.i18n = buildLegacyI18n(i18n, [i18nMap]);\r\n // Allow fallback to general error string, see handleServerError\r\n this.i18n.failFast = false;\r\n this.experimentEntity = experimentEntity;\r\n this.expItemFromEdm = expItemFromEdm;\r\n this.setState({\r\n status: experimentEntity.Status,\r\n });\r\n this.scope = scope;\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n updateExperiment = (status) => {\r\n const requestBody = _.defaults({\r\n Status: status,\r\n }, _.pick(this.experimentEntity, ['ExperimentName', 'ExperimentCampaignId', 'ExperimentType', 'StartDate', 'EndDate', 'TrafficSplitPercent', 'BaseCampaignId']));\r\n\r\n const observable = this.expItemFromEdm.patch(requestBody);\r\n const observer = {\r\n next: () => this.handleExperimentUpdate(status),\r\n error: response => this.handleServerError(response),\r\n };\r\n\r\n this.subscription = observable.subscribe(observer);\r\n }\r\n\r\n\r\n handleExperimentUpdate = (status) => {\r\n this.setState({ status });\r\n if (status !== 'Ended') {\r\n // redirect to experiments page\r\n this.scope.set({\r\n cid: this.scope.values.cid,\r\n aid: this.scope.values.aid,\r\n uid: this.scope.values.uid,\r\n });\r\n this.scope.save('/campaign/vnext/experiments');\r\n }\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n handleServerError = (response) => {\r\n const alertHelper = new AlertHelper({ i18n: this.i18n });\r\n const errorCode = putil.get(response, 'errors[0].Code');\r\n this.subscription.unsubscribe();\r\n alertHelper.showError(this.i18n.getString(`Experiment_Error_${errorCode}`) || this.i18n.getString('Experiment_Error_undefined'));\r\n }\r\n\r\n showApplyDialog() {\r\n const contentView = new ApplyView({\r\n i18n: this.i18n,\r\n experimentName: this.experimentEntity.ExperimentName,\r\n originalCampaignName: this.experimentEntity.BaseCampaignName,\r\n });\r\n\r\n this.dialog = new Dialog()\r\n .setContent(contentView)\r\n .setState({\r\n title: this.i18n.getString('Experiment_UseExperimentSettingsIn'),\r\n buttons: [{\r\n text: this.i18n.getString('Save'),\r\n name: 'confirm',\r\n class: 'btn-primary',\r\n }, {\r\n text: this.i18n.getString('Cancel'),\r\n name: 'cancel',\r\n }],\r\n });\r\n\r\n this.dialog.on('clickedButton', (name) => {\r\n if (name === 'confirm') {\r\n const status = _.result({\r\n 'update-original': 'Promoted',\r\n 'convert-to-new': 'Graduated',\r\n }, contentView.getState().selectedItem);\r\n\r\n this.updateExperiment(status);\r\n }\r\n\r\n this.removeDialog();\r\n });\r\n\r\n this.dialog.$el.appendTo(document.body);\r\n this.dialog.show();\r\n this.dialog.$('.modal').addClass('experiment-actions-apply-dialog');\r\n }\r\n\r\n showEndDialog() {\r\n const contentView = new EndView({\r\n i18n: this.i18n,\r\n experimentName: this.experimentEntity.ExperimentName,\r\n });\r\n\r\n this.dialog = new Dialog()\r\n .setContent(contentView)\r\n .setState({\r\n title: this.i18n.getString('Experiment_EndDialog_Title'),\r\n buttons: [{\r\n text: this.i18n.getString('Experiment_EndDialog_SaveButton'),\r\n name: 'confirm',\r\n class: 'btn-primary',\r\n }, {\r\n text: this.i18n.getString('Cancel'),\r\n name: 'cancel',\r\n }],\r\n });\r\n\r\n this.dialog.on('clickedButton', (name) => {\r\n if (name === 'confirm') {\r\n this.updateExperiment('Ended');\r\n }\r\n\r\n this.removeDialog();\r\n });\r\n\r\n this.dialog.$el.appendTo(document.body);\r\n this.dialog.show();\r\n this.dialog.$('.modal').addClass('experiment-actions-end-dialog');\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .apply-experiment': () => this.showApplyDialog(),\r\n 'click .end-experiment': () => this.showEndDialog(),\r\n };\r\n }\r\n\r\n removeDialog() {\r\n if (this.dialog) {\r\n this.dialog.remove();\r\n this.dialog = null;\r\n }\r\n }\r\n\r\n remove() {\r\n this.removeDialog();\r\n super.remove();\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { getPerformanceComparisonPeriodDateText } from '../shared/utils';\r\n\r\nexport class Title extends React.PureComponent {\r\n render() {\r\n const {\r\n i18n,\r\n datePickerStartDate,\r\n datePickerEndDate,\r\n experimentStartDate,\r\n experimentEndDate,\r\n serverContext,\r\n } = this.props;\r\n\r\n const isUINext = true;\r\n const { start, end } = getPerformanceComparisonPeriodDateText({\r\n datePickerStartDate,\r\n datePickerEndDate,\r\n experimentStartDate,\r\n experimentEndDate,\r\n isUINext,\r\n serverContext,\r\n });\r\n\r\n return (\r\n
\r\n {i18n.getString('Experiment_ScoreCard_PerformanceComparisonPeriod', { start, end })}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nTitle.defaultProps = {\r\n experimentStartDate: null,\r\n experimentEndDate: null,\r\n};\r\n\r\nTitle.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n datePickerStartDate: PropTypes.instanceOf(Date).isRequired,\r\n datePickerEndDate: PropTypes.instanceOf(Date).isRequired,\r\n experimentStartDate: PropTypes.string,\r\n experimentEndDate: PropTypes.string,\r\n serverContext: PropTypes.shape({\r\n CurrentUser: PropTypes.shape({\r\n CultureDateTimeFormat: PropTypes.shape({\r\n ShortDatePattern: PropTypes.string,\r\n }),\r\n }),\r\n }).isRequired,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport class LabelRow extends React.PureComponent {\r\n render() {\r\n const { children } = this.props;\r\n\r\n return (\r\n
\r\n { children }\r\n
\r\n );\r\n }\r\n}\r\n\r\nLabelRow.propTypes = {\r\n children: PropTypes.string.isRequired,\r\n};\r\n\r\n","import _ from 'underscore';\r\n\r\nlet i18n;\r\n\r\nexport function setupFormatter(deps) {\r\n ({ i18n } = deps);\r\n}\r\n\r\nfunction isInvalid(value) {\r\n return _.isUndefined(value) || _.isNull(value) || _.isNaN(value);\r\n}\r\n\r\nconst basicOptions = {\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 2,\r\n};\r\n\r\nconst formatters = {\r\n decimal(value) {\r\n if (isInvalid(value)) {\r\n return '--';\r\n }\r\n return i18n.decimalFormatter({\r\n ...basicOptions,\r\n })(value);\r\n },\r\n decimalWithSign(value) {\r\n if (isInvalid(value)) {\r\n return '--';\r\n }\r\n return i18n.decimalFormatter({\r\n ...basicOptions,\r\n withSign: 'always',\r\n })(value);\r\n },\r\n percent(value) {\r\n if (isInvalid(value)) {\r\n return '--%';\r\n }\r\n return i18n.percentFormatter({\r\n ...basicOptions,\r\n })(value);\r\n },\r\n percentWithSign(value) {\r\n if (isInvalid(value)) {\r\n return '--%';\r\n }\r\n return i18n.percentFormatter({\r\n ...basicOptions,\r\n withSign: 'always',\r\n })(value);\r\n },\r\n};\r\n\r\n\r\nconst TYPE = {\r\n PERCENT: 'percent',\r\n DEFAULT: 'decimal',\r\n};\r\n\r\nconst nameToType = {\r\n CTR: TYPE.PERCENT,\r\n ConversionRate: TYPE.PERCENT,\r\n AllConversionRate: TYPE.PERCENT,\r\n};\r\n\r\nconst typeToOp = {\r\n [TYPE.PERCENT]: {\r\n formatValue: formatters.percent,\r\n formatChangedValue: formatters.percentWithSign,\r\n formatChangedPercent: formatters.percentWithSign,\r\n },\r\n [TYPE.DEFAULT]: {\r\n formatValue: formatters.decimal,\r\n formatChangedValue: formatters.decimalWithSign,\r\n formatChangedPercent: formatters.percentWithSign,\r\n },\r\n};\r\n\r\nexport function getFormatter(name) {\r\n const type = nameToType[name] || TYPE.DEFAULT;\r\n const op = typeToOp[type];\r\n\r\n return op;\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport class LabelColumn extends React.PureComponent {\r\n render() {\r\n const { children } = this.props;\r\n\r\n return (\r\n
\r\n { children }\r\n
\r\n );\r\n }\r\n}\r\n\r\nLabelColumn.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.array,\r\n ]).isRequired,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport class SpanExperiment extends React.PureComponent {\r\n render() {\r\n const { children } = this.props;\r\n\r\n return (\r\n
\r\n { children }\r\n
\r\n );\r\n }\r\n}\r\n\r\nSpanExperiment.propTypes = {\r\n children: PropTypes.string.isRequired,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport class SpanOriginal extends React.PureComponent {\r\n render() {\r\n const { children } = this.props;\r\n\r\n return (\r\n
\r\n { children }\r\n
\r\n );\r\n }\r\n}\r\n\r\nSpanOriginal.propTypes = {\r\n children: PropTypes.string.isRequired,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { LabelRow } from './label-row';\r\nimport { LabelColumn } from './label-column';\r\nimport { SpanExperiment } from './span-experiment';\r\nimport { SpanOriginal } from './span-original';\r\n\r\nexport class TableFixedVnext extends React.PureComponent {\r\n render() {\r\n const { i18n, DecimalFormatter, data } = this.props;\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 {i18n.getString('Experiment_ScoreCard_Split')}\r\n \r\n
\r\n \r\n {i18n.getString('Experiment_ScoreCard_Experiment')}\r\n \r\n \r\n \r\n {`${data.TrafficSplitPercent}${DecimalFormatter.percentSymbol}`}\r\n \r\n
\r\n \r\n {i18n.getString('Experiment_ScoreCard_Original')}\r\n \r\n \r\n \r\n {`${(100 - data.TrafficSplitPercent)}${DecimalFormatter.percentSymbol}`}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nTableFixedVnext.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n DecimalFormatter: PropTypes.objectOf(PropTypes.any).isRequired,\r\n data: PropTypes.objectOf(PropTypes.any).isRequired,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { LabelColumn } from './label-column';\r\n\r\nexport class MetricPicker extends React.PureComponent {\r\n render() {\r\n const {\r\n index,\r\n i18n,\r\n selected,\r\n others,\r\n onPick,\r\n } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n { i18n.getString(`ColumnName_${selected}`) }\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\nMetricPicker.propTypes = {\r\n index: PropTypes.number.isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n selected: PropTypes.string.isRequired,\r\n others: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n onPick: PropTypes.func.isRequired,\r\n};\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { OverlayTrigger, Popover } from '@bingads-webui-react/primitive';\r\nimport { SpanExperiment } from './span-experiment';\r\nimport { getFormatter } from '../shared/format';\r\n\r\nconst COLORMAP = {\r\n green: '#006D21',\r\n red: '#D90026',\r\n grey: '#666',\r\n black: '#333',\r\n};\r\n\r\nexport function getColor(name, value) {\r\n let color;\r\n\r\n if (value) {\r\n if (value.IsSignificant) {\r\n let isPositive = value.ExperimentAggregatedValue >= value.BaseAggregatedValue;\r\n\r\n if (_.contains(['CPA', 'AverageCPC'], name)) {\r\n isPositive = !isPositive;\r\n }\r\n\r\n color = isPositive ? 'green' : 'red';\r\n } else {\r\n color = 'grey';\r\n }\r\n } else {\r\n color = 'black';\r\n }\r\n\r\n return COLORMAP[color];\r\n}\r\n\r\nexport function getAnnotation(isSignificant, i18n) {\r\n if (isSignificant === false) {\r\n return (\r\n \r\n {i18n.getString('Experiment_ScoreCard_NonStatSigAnnotation')}\r\n \r\n }\r\n >\r\n *\r\n \r\n );\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport class MetricExperiment extends React.PureComponent {\r\n render() {\r\n const {\r\n name,\r\n value,\r\n i18n,\r\n } = this.props;\r\n const {\r\n ExperimentAggregatedValue,\r\n BaseAggregatedValue,\r\n PercentChange,\r\n IsSignificant,\r\n } = (value || {});\r\n const {\r\n formatValue,\r\n formatChangedValue,\r\n formatChangedPercent,\r\n } = getFormatter(name);\r\n const color = getColor(name, value);\r\n\r\n return (\r\n \r\n
\r\n \r\n {formatValue(ExperimentAggregatedValue)}\r\n \r\n
\r\n \r\n {formatChangedPercent(PercentChange / 100)}\r\n {' ('}\r\n {formatChangedValue(ExperimentAggregatedValue - BaseAggregatedValue)}\r\n {')'}\r\n {getAnnotation(IsSignificant, i18n)}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nMetricExperiment.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n value: PropTypes.shape({\r\n IsSignificant: PropTypes.bool,\r\n BaseAggregatedValue: PropTypes.number,\r\n ExperimentAggregatedValue: PropTypes.number,\r\n PercentChange: PropTypes.number,\r\n }),\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nMetricExperiment.defaultProps = {\r\n value: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { SpanOriginal } from './span-original';\r\nimport { getFormatter } from '../shared/format';\r\n\r\n\r\nexport class MetricOriginal extends React.PureComponent {\r\n render() {\r\n const { name, value } = this.props;\r\n const {\r\n BaseAggregatedValue,\r\n } = (value || {});\r\n const {\r\n formatValue,\r\n } = getFormatter(name);\r\n\r\n return (\r\n \r\n \r\n {formatValue(BaseAggregatedValue)}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nMetricOriginal.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n value: PropTypes.shape({\r\n IsSignificant: PropTypes.bool,\r\n BaseAggregatedValue: PropTypes.number,\r\n ExperimentAggregatedValue: PropTypes.number,\r\n PercentChange: PropTypes.number,\r\n }),\r\n};\r\n\r\nMetricOriginal.defaultProps = {\r\n value: null,\r\n};\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { MetricPicker } from './metric-picker';\r\nimport { MetricExperiment } from './metric-experiment';\r\nimport { MetricOriginal } from './metric-original';\r\n\r\n/* eslint-disable react/no-array-index-key */\r\n\r\nfunction derivedStateFromProps(props) {\r\n const { biData } = props;\r\n const metricsList = _.difference(_.keys(biData), ['ComparisonStartDate', 'ComparisonEndDate', '@odata.type']);\r\n const slots = _.clone(metricsList);\r\n\r\n return { metricsList, slots, biData };\r\n}\r\n\r\nexport class TableScrollable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = derivedStateFromProps(props);\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (nextProps.biData !== prevState.biData) {\r\n return derivedStateFromProps(nextProps);\r\n }\r\n return null;\r\n }\r\n\r\n onPickMetric(metric, index) {\r\n const slots = _.clone(this.state.slots);\r\n\r\n slots[index] = metric;\r\n\r\n this.setState({ slots });\r\n }\r\n\r\n render() {\r\n const { i18n, biData } = this.props;\r\n const { metricsList, slots } = this.state;\r\n\r\n const slotsToDisplay = _.first(slots, 6);\r\n\r\n return (\r\n \r\n \r\n \r\n {slotsToDisplay.map((metric, index) => (\r\n this.onPickMetric(pickedMetric, index)}\r\n />\r\n ))}\r\n \r\n \r\n {slotsToDisplay.map((metric, index) => (\r\n \r\n ))}\r\n \r\n \r\n {slotsToDisplay.map((metric, index) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nTableScrollable.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n biData: PropTypes.objectOf(PropTypes.any).isRequired,\r\n};\r\n\r\n","import React from 'react';\r\n\r\nexport function Stroke() {\r\n return (\r\n
\r\n );\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nimport { Constants } from '@bingads-webui-theme-2018/theme-fluent';\r\n\r\nexport const experimentActionsStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '.modal-backdrop.in': {\r\n zIndex: `${Constants.ZIndexShellComponents.ModalBackDrop} !important`,\r\n backgroundColor: '#ffffff !important',\r\n },\r\n '.experiment-score-card': {\r\n '& button.btn-default': {\r\n background: 'transparent',\r\n },\r\n '& input.btn-default[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 '& .open .dropdown-menu-right': {\r\n left: '0px !important',\r\n width: 'min-content',\r\n },\r\n },\r\n '.experiment-actions-apply-dialog, .experiment-actions-end-dialog': {\r\n '& input[type=\"radio\"]': {\r\n position: 'relative',\r\n },\r\n '& .form-horizontal': {\r\n marginBottom: 20,\r\n '& .form-group': {\r\n marginBottom: 16,\r\n },\r\n },\r\n },\r\n});\r\n","import { extend, pick, reduce, compact, reject } from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { buildLegacyI18n } from '@bingads-webui-campaign-react/smart-i18n';\r\nimport { ExperimentActions } from '@bingads-webui-campaign/experiment-actions';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Title } from './views/title-vnext';\r\nimport { TableFixedVnext } from './views/table-fixed-vnext';\r\nimport { TableScrollable } from './views/table-scrollable-vnext';\r\nimport { Stroke } from './views/stroke';\r\nimport { shouldCookieBasedWarningBeShown } from './shared/utils';\r\nimport { setupFormatter } from './shared/format';\r\nimport { experimentActionsStyles } from './shared/experiment-actions-styles';\r\n\r\nconst i18nMap = {\r\n Experiment_ScoreCard_CookieBasedWarning: _TL_('This period extends beyond 60 days in the past. Performance comparison data older than 60 days is not statistically significant.'),\r\n Experiment_ScoreCard_NonStatSigAnnotation: _TL_('This change is not statistically significant, meaning that it is not attributable to a specific cause.'),\r\n Experiment_ScoreCard_Split: _TL_('Split'),\r\n Experiment_ScoreCard_Experiment: _TL_('Experiment'),\r\n Experiment_ScoreCard_Original: _TL_('Original campaign'),\r\n Experiment_ScoreCard_PerformanceComparisonPeriod: _TL_('Performance comparison period: {{start}} - {{end}}'),\r\n ColumnName_Impressions: _TL_('Impr.'),\r\n ColumnName_Clicks: _TL_('Clicks'),\r\n ColumnName_CTR: _TL_('CTR'),\r\n ColumnName_Spend: _TL_('Spend'),\r\n ColumnName_AverageCPC: _TL_('Avg. CPC'),\r\n ColumnName_AveragePosition: _TL_('Avg. pos'),\r\n ColumnName_Conversions: _TL_('Compare to Conv.'),\r\n ColumnName_CPA: _TL_('CPA'),\r\n ColumnName_ConversionRate: _TL_('Conversion rate'),\r\n ColumnName_ConversionValue: _TL_('Revenue'),\r\n ColumnName_ROA: _TL_('Return on ad spend'),\r\n ColumnName_AllConversions: _TL_('All conv.'),\r\n ColumnName_AllConversionCPA: _TL_('All conv. CPA'),\r\n ColumnName_AllConversionRate: _TL_('All conv. rate'),\r\n ColumnName_AllConversionValue: _TL_('All conv. revenue'),\r\n ColumnName_AllConversionROA: _TL_('All conv. return on ad spend'),\r\n ColumnName_Experiment: _TL_('Experiment name'),\r\n ColumnName_Campaign: _TL_('Campaign'),\r\n ColumnName_Split: _TL_('Split'),\r\n ColumnName_Status: _TL_('Status'),\r\n ColumnName_StartDate: _TL_('Start date'),\r\n ColumnName_EndDate: _TL_('End date'),\r\n ColumnName_Actions: _TL_('Actions'),\r\n ColumnName_TopImpressionRate: _TL_('Top impr. rate'),\r\n ColumnName_AbsoluteTopImpressionRate: _TL_('Abs. top impr. rate'),\r\n 'Click to learn more about performance comparison period': _TL_('Click to learn more about performance comparison period'),\r\n};\r\n\r\nfunction getExperimentMetricsWhiteList(permissions) {\r\n const { IsAvgPositionDeprecationPhase1Enabled } = permissions;\r\n\r\n return compact([\r\n 'ComparisonStartDate',\r\n 'ComparisonEndDate',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'Spend',\r\n 'AverageCPC',\r\n // 'AveragePosition' is removed\r\n IsAvgPositionDeprecationPhase1Enabled && 'TopImpressionRate',\r\n IsAvgPositionDeprecationPhase1Enabled && 'AbsoluteTopImpressionRate',\r\n 'Conversions',\r\n 'CPA',\r\n 'ConversionRate',\r\n 'ConversionValue',\r\n 'ROA',\r\n 'AllConversions',\r\n 'AllConversionCPA',\r\n 'AllConversionRate',\r\n 'AllConversionValue',\r\n 'AllConversionROA',\r\n ]);\r\n}\r\n\r\nconst getExperimentsStyles = (_, { palette = {} }) => extend({\r\n '@global': Object.assign(\r\n {},\r\n experimentActionsStyles({ palette })\r\n ),\r\n});\r\n\r\nclass ExperimentScoreCard extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.i18n = buildLegacyI18n(this.props.i18n, [i18nMap]);\r\n\r\n setupFormatter({ i18n: this.i18n });\r\n this.experimentMetricsWhiteList = getExperimentMetricsWhiteList(this.props.permissions);\r\n\r\n let { ExperimentMetrics } = this.props.experimentData;\r\n\r\n if (ExperimentMetrics) {\r\n ExperimentMetrics = pick(ExperimentMetrics, this.experimentMetricsWhiteList);\r\n } else {\r\n // When no ExperimentMetrics are available use start/end dates from dateFilter directly\r\n this.experimentMetricsWhiteList = reject(this.experimentMetricsWhiteList, metric => metric === 'ComparisonStartDate' || metric === 'ComparisonEndDate');\r\n\r\n ExperimentMetrics = reduce(\r\n this.experimentMetricsWhiteList,\r\n (memo, property) => ({\r\n ...memo,\r\n [property]: null,\r\n }),\r\n {\r\n ComparisonStartDate: this.props.dateFilter.RangeStartDate,\r\n ComparisonEndDate: this.props.dateFilter.RangeEndDate,\r\n }\r\n );\r\n }\r\n\r\n this.data = {\r\n ...this.props.experimentData,\r\n ExperimentMetrics,\r\n };\r\n\r\n this.experimentActions = new ExperimentActions({\r\n experimentEntity: this.data,\r\n i18n: this.props.i18n,\r\n scope: this.props.scope,\r\n expItemFromEdm: this.props.expItemFromEdm,\r\n });\r\n }\r\n\r\n render() {\r\n const biData = putil.get(this.data, 'ExperimentMetrics', {});\r\n\r\n const isInCookieBasedPilot = this.props.permissions.IsCookieBasedExperimentTypeEnabled;\r\n const showCookieBasedWarning = isInCookieBasedPilot &&\r\n this.data && this.data.ExperimentType &&\r\n shouldCookieBasedWarningBeShown(\r\n this.props.dateFilter.start,\r\n this.data.ExperimentType\r\n );\r\n\r\n return (\r\n this.data && (\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 {showCookieBasedWarning &&\r\n \r\n {this.i18n.getString('Experiment_ScoreCard_CookieBasedWarning')}\r\n
\r\n }\r\n \r\n \r\n )\r\n );\r\n }\r\n}\r\n\r\nExperimentScoreCard.propTypes = {\r\n serverContext: PropTypes.shape({\r\n DecimalFormatter: PropTypes.object.isRequired,\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n IsCookieBasedExperimentTypeEnabled: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n dateFilter: PropTypes.shape({\r\n RangeStartDate: PropTypes.string.isRequired,\r\n RangeEndDate: PropTypes.string.isRequired,\r\n start: PropTypes.instanceOf(Date).isRequired,\r\n end: PropTypes.instanceOf(Date).isRequired,\r\n }).isRequired,\r\n experimentData: PropTypes.shape({\r\n ExperimentMetrics: PropTypes.object,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.shape({\r\n save: PropTypes.func.isRequired,\r\n values: PropTypes.object.isRequired,\r\n }).isRequired,\r\n // eslint-disable-next-line react/require-default-props\r\n expItemFromEdm: PropTypes.shape({}),\r\n};\r\n\r\nexport const ExperimentScoreCard2 = withDefaultStyles(ExperimentScoreCard, getExperimentsStyles);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { getPerformanceComparisonPeriodDateText } from '../shared/utils';\r\n\r\nexport class Title extends React.PureComponent {\r\n render() {\r\n const {\r\n i18n,\r\n datePickerStartDate,\r\n datePickerEndDate,\r\n experimentStartDate,\r\n experimentEndDate,\r\n pageContext,\r\n } = this.props;\r\n\r\n const isUINext = false;\r\n const { start, end } = getPerformanceComparisonPeriodDateText({\r\n datePickerStartDate,\r\n datePickerEndDate,\r\n experimentStartDate,\r\n experimentEndDate,\r\n isUINext,\r\n pageContext,\r\n });\r\n\r\n return (\r\n \r\n {i18n.getString('Experiment_ScoreCard_PerformanceComparisonPeriod', { start, end })}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nTitle.defaultProps = {\r\n experimentStartDate: null,\r\n experimentEndDate: null,\r\n};\r\n\r\nTitle.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n datePickerStartDate: PropTypes.instanceOf(Date).isRequired,\r\n datePickerEndDate: PropTypes.instanceOf(Date).isRequired,\r\n experimentStartDate: PropTypes.string,\r\n experimentEndDate: PropTypes.string,\r\n pageContext: PropTypes.shape({\r\n CultureDateTimeFormat: PropTypes.shape({\r\n ShortDatePattern: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { LabelRow } from './label-row';\r\nimport { LabelColumn } from './label-column';\r\nimport { SpanExperiment } from './span-experiment';\r\nimport { SpanOriginal } from './span-original';\r\n\r\nexport class TableFixed extends React.PureComponent {\r\n render() {\r\n const { i18n, pageContext, data } = this.props;\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 { i18n.getString('Experiment_ScoreCard_Split') }\r\n \r\n
\r\n \r\n { i18n.getString('Experiment_ScoreCard_Experiment') }\r\n \r\n \r\n \r\n { `${data.TrafficSplitPercent}${pageContext.DecimalFormatter.percentSymbol}` }\r\n \r\n
\r\n \r\n { i18n.getString('Experiment_ScoreCard_Original') }\r\n \r\n \r\n \r\n { `${(100 - data.TrafficSplitPercent)}${pageContext.DecimalFormatter.percentSymbol}` }\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nTableFixed.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n pageContext: PropTypes.objectOf(PropTypes.any).isRequired,\r\n data: PropTypes.objectOf(PropTypes.any).isRequired,\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { MetricPicker } from './metric-picker';\r\nimport { MetricExperiment } from './metric-experiment';\r\nimport { MetricOriginal } from './metric-original';\r\n\r\n/* eslint-disable react/no-array-index-key */\r\n\r\nfunction derivedStateFromProps(props) {\r\n const { biData } = props;\r\n const metricsList = _.difference(_.keys(biData), ['ComparisonStartDate', 'ComparisonEndDate', '@odata.type']);\r\n const slots = _.clone(metricsList);\r\n\r\n return { metricsList, slots, biData };\r\n}\r\n\r\nexport class TableScrollable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = derivedStateFromProps(props);\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (nextProps.biData !== prevState.biData) {\r\n return derivedStateFromProps(nextProps);\r\n }\r\n return null;\r\n }\r\n\r\n onPickMetric(metric, index) {\r\n const slots = _.clone(this.state.slots);\r\n\r\n slots[index] = metric;\r\n\r\n this.setState({ slots });\r\n }\r\n\r\n render() {\r\n const { i18n, biData } = this.props;\r\n const { metricsList, slots } = this.state;\r\n\r\n return (\r\n \r\n \r\n \r\n {slots.map((metric, index) => (\r\n this.onPickMetric(pickedMetric, index)}\r\n />\r\n ))}\r\n \r\n \r\n {slots.map((metric, index) => (\r\n \r\n ))}\r\n \r\n \r\n {slots.map((metric, index) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nTableScrollable.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n biData: PropTypes.objectOf(PropTypes.any).isRequired,\r\n};\r\n\r\n","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {var i18n = view.i18n\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group clearfix\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 text-right\\\"\\u003E\\u003Cinput\" + (\" type=\\\"radio\\\" name=\\\"apply-option\\\" id=\\\"update-original\\\"\"+pug.attr(\"checked\", (model.selectedItem === 'update-original'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-11 radioInput\\\"\\u003E\\u003Clabel class=\\\"type-normal\\\" for=\\\"update-original\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_UpdateOriginalCampaign_Title') + ' ') ? \"\" : pug_interp)) + \"\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = view.originalCampaignName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-11 col-sm-offset-1\\\"\\u003E\\u003Cspan style=\\\"word-break: break-word;\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_UpdateOriginalCampaign_Description').split('{{name}}')[0]) ? \"\" : pug_interp)) + \"\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = view.experimentName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_UpdateOriginalCampaign_Description').split('{{name}}')[1]) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row clearfix\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 text-right\\\"\\u003E\\u003Cinput\" + (\" type=\\\"radio\\\" name=\\\"apply-option\\\" id=\\\"convert-to-new\\\"\"+pug.attr(\"checked\", (model.selectedItem === 'convert-to-new'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-11\\\"\\u003E\\u003Clabel class=\\\"type-normal\\\" for=\\\"convert-to-new\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_ConvertToNewCampaign_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-11 col-sm-offset-1\\\"\\u003E\\u003Cspan style=\\\"word-break: break-word;\\\"\\u003E\" + (null == (pug_interp = i18n.getString('Experiment_ConvertToNewCampaign_Description').split('{{name}}')[0]) ? \"\" : pug_interp) + \"\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = view.originalCampaignName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\" + (null == (pug_interp = i18n.getString('Experiment_ConvertToNewCampaign_Description').split('{{name}}')[1]) ? \"\" : pug_interp) + \"\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = view.originalCampaignName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\" + (null == (pug_interp = i18n.getString('Experiment_ConvertToNewCampaign_Description').split('{{name}}')[2]) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (view) {var i18n = view.i18n\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\" style=\\\"word-break: break-word;\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_EndDialog_Description1').split('{{name}}')[0]) ? \"\" : pug_interp)) + \"\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = view.experimentName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_EndDialog_Description1').split('{{name}}')[1]) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_EndDialog_Description2')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {var i18n = view.i18n\nvar isCreation = model.status === 'Creating' || model.status === 'CreationFailed'\nvar isPromoted = model.status === 'Promoting' || model.status === 'Promoted' || model.status === 'PromoteFailed'\nvar isGraduated = model.status === 'Graduating' || model.status === 'Graduated' || model.status === 'GraduateFailed'\nvar isEnded = model.status === 'Ended'\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"btn btn-default apply-experiment\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"disabled\", (isCreation || isPromoted || isGraduated), true, true)+pug.attr(\"value\", i18n.getString('Experiment_UseExperimentSettingsIn'), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-default end-experiment\\\"\"+\" type=\\\"button\\\" style=\\\"margin-left: 10px;\\\"\"+pug.attr(\"disabled\", (isCreation || isPromoted || isGraduated || isEnded), true, true)+pug.attr(\"value\", i18n.getString('Experiment_EndNow'), true, true)) + \"\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {var i18n = view.i18n\nvar isCreation = model.status === 'Creating' || model.status === 'CreationFailed'\nvar isPromoted = model.status === 'Promoting' || model.status === 'Promoted' || model.status === 'PromoteFailed'\nvar isGraduated = model.status === 'Graduating' || model.status === 'Graduated' || model.status === 'GraduateFailed'\nvar isEnded = model.status === 'Ended'\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"btn btn-primary apply-experiment\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"disabled\", (isCreation || isPromoted || isGraduated), true, true)+pug.attr(\"value\", i18n.getString('Experiment_UseExperimentSettingsIn'), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-default end-experiment\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"disabled\", (isCreation || isPromoted || isGraduated || isEnded), true, true)+pug.attr(\"value\", i18n.getString('Experiment_EndNow'), true, true)) + \"\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;"],"names":["defaultDateFormat","formatDateForUI","date","isUINext","pageContext","serverContext","format","CurrentUser","CultureDateTimeFormat","ShortDatePattern","kendo","formatDateForMT","parseDateRangeToQuery","dateRange","startDate","start","endDate","end","getDateFromYearMonthDayDateString","dateString","parseDate","substring","indexOf","getPerformanceComparisonPeriodDateText","_ref","datePickerStartDate","datePickerEndDate","experimentStartDate","experimentEndDate","_ref$pageContext","_ref$serverContext","parsedExpStartDate","parsedExpEndDate","existsAndIntersects","perfCompPeriodStartDate","perfCompPeriodEndDate","ApplyView","_DeterministicView","_classCallCheck","_callSuper","arguments","_inherits","_createClass","key","value","i18n","experimentName","originalCampaignName","this","setState","selectedItem","get","template","_this","e","target","id","DeterministicView","EndView","Backbone","$","i18nMap","Experiment_UseExperimentSettingsIn","_TL_","Experiment_Error_ExperimentStatusInvalid","Experiment_Error_EndedExperimentCannotBeChanged","Experiment_Error_undefined","Cancel","Save","Experiment_EndDialog_Title","Experiment_EndDialog_SaveButton","Experiment_EndDialog_Description1","Experiment_EndDialog_Description2","Experiment_ConvertToNewCampaign_Description","Experiment_ConvertToNewCampaign_Title","Experiment_UpdateOriginalCampaign_Description","Experiment_UpdateOriginalCampaign_Title","Experiment_EndNow","ExperimentActions","_len","length","args","Array","_key","concat","updateExperiment","status","requestBody","_","Status","experimentEntity","observable","expItemFromEdm","patch","observer","next","handleExperimentUpdate","error","response","handleServerError","subscription","subscribe","scope","set","cid","values","aid","uid","save","unsubscribe","alertHelper","AlertHelper","errorCode","putil","showError","getString","buildLegacyI18n","failFast","_this2","contentView","ExperimentName","BaseCampaignName","dialog","Dialog","setContent","title","buttons","text","name","class","on","getState","removeDialog","$el","appendTo","document","body","show","addClass","_this3","_this4","showApplyDialog","showEndDialog","remove","_superPropGet","Title","_React$PureComponent","_this$props","props","_getPerformanceCompar","_jsxs","children","_jsx","HelpPopup","topic","React","defaultProps","LabelRow","className","LabelColumn","style","fontSize","SpanExperiment","lineHeight","SpanOriginal","TableFixedVnext","DecimalFormatter","data","display","borderCollapse","borderSpacing","marginTop","verticalAlign","height","TrafficSplitPercent","percentSymbol","MetricPicker","index","selected","others","onPick","position","whiteSpace","border","minWidth","padding","map","metric","onClick","role","isInvalid","basicOptions","minimumFractionDigits","maximumFractionDigits","formatters","decimal","decimalFormatter","_objectSpread","decimalWithSign","withSign","percent","percentFormatter","percentWithSign","TYPE","nameToType","CTR","ConversionRate","AllConversionRate","typeToOp","_defineProperty","formatValue","formatChangedValue","formatChangedPercent","getFormatter","COLORMAP","green","red","grey","black","getAnnotation","isSignificant","OverlayTrigger","trigger","placement","overlay","Popover","MetricExperiment","ExperimentAggregatedValue","BaseAggregatedValue","PercentChange","IsSignificant","_getFormatter","color","isPositive","getColor","MetricOriginal","derivedStateFromProps","biData","metricsList","slots","TableScrollable","_React$Component","state","_this$state","slotsToDisplay","marginRight","pickedMetric","onPickMetric","nextProps","prevState","Stroke","width","backgroundColor","experimentActionsStyles","_ref$palette","palette","iconFontFamily","zIndex","Constants","ZIndexShellComponents","ModalBackDrop","background","outline","neutralSecondaryAlt","boxShadow","neutralSecondary","outlineOffset","white","left","marginBottom","Experiment_ScoreCard_CookieBasedWarning","Experiment_ScoreCard_NonStatSigAnnotation","Experiment_ScoreCard_Split","Experiment_ScoreCard_Experiment","Experiment_ScoreCard_Original","Experiment_ScoreCard_PerformanceComparisonPeriod","ColumnName_Impressions","ColumnName_Clicks","ColumnName_CTR","ColumnName_Spend","ColumnName_AverageCPC","ColumnName_AveragePosition","ColumnName_Conversions","ColumnName_CPA","ColumnName_ConversionRate","ColumnName_ConversionValue","ColumnName_ROA","ColumnName_AllConversions","ColumnName_AllConversionCPA","ColumnName_AllConversionRate","ColumnName_AllConversionValue","ColumnName_AllConversionROA","ColumnName_Experiment","ColumnName_Campaign","ColumnName_Split","ColumnName_Status","ColumnName_StartDate","ColumnName_EndDate","ColumnName_Actions","ColumnName_TopImpressionRate","ColumnName_AbsoluteTopImpressionRate","ExperimentScoreCard","deps","experimentMetricsWhiteList","permissions","IsAvgPositionDeprecationPhase1Enabled","compact","getExperimentMetricsWhiteList","ExperimentMetrics","experimentData","pick","reject","reduce","memo","property","ComparisonStartDate","dateFilter","RangeStartDate","ComparisonEndDate","RangeEndDate","experimentActions","showCookieBasedWarning","IsCookieBasedExperimentTypeEnabled","ExperimentType","experimentType","twoMonthsAgo","Date","setMonth","getMonth","shouldCookieBasedWarningBeShown","flexDirection","overflow","maxWidth","marginLeft","paddingBottom","paddingTop","float","StartDate","EndDate","BackboneInstanceWrapper","instance","borderLeft","borderRight","paddingLeft","ExperimentScoreCard2","withDefaultStyles","extend","Object","assign","pug","module","exports","locals","pug_interp","pug_html","locals_for_with","model","view","attr","escape","split","call","undefined","isCreation","isPromoted","isGraduated","isEnded"],"sourceRoot":""}