{"version":3,"file":"js/controllers-ce9dc647b8027ea04da0.js","mappings":"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","sources":["webpack://app/./app/assets/images/icons/group.svg","webpack://app/./app/javascript/highchart_options.ts","webpack://app/./app/javascript/controllers/application.ts","webpack://app/./app/javascript/controllers/button_controller.ts","webpack://app/./app/javascript/controllers/checkbox_controller.ts","webpack://app/./app/assets/images/icons/arrow-left.svg","webpack://app/./app/javascript/ui/link.jsx","webpack://app/./app/javascript/competitors_list_autosuggest/index.jsx","webpack://app/./app/javascript/controllers/competitors_controller.ts","webpack://app/./app/javascript/controllers/tables/data_table.js","webpack://app/./app/javascript/controllers/charts/competitors_value_volume_chart.js","webpack://app/./app/javascript/controllers/competitors_trend_over_time_chart_controller.ts","webpack://app/./app/javascript/controllers/downloads_controller.ts","webpack://app/./app/javascript/controllers/dropdown_controller.ts","webpack://app/./app/javascript/controllers/element_download_controller.ts","webpack://app/./app/javascript/controllers/enable_action_button_controller.ts","webpack://app/./app/javascript/controllers/form_controller.ts","webpack://app/./app/javascript/controllers/hide_element_controller.ts","webpack://app/./app/javascript/controllers/tables/key_decision_maker_module.js","webpack://app/./app/javascript/controllers/key_decision_makers_controller.ts","webpack://app/./app/javascript/controllers/key_decision_makers_download_controller.ts","webpack://app/./app/javascript/controllers/loading_overlay_controller.ts","webpack://app/./app/javascript/controllers/modal_controller.ts","webpack://app/./app/javascript/controllers/modal_reveal_controller.ts","webpack://app/./app/javascript/controllers/notifications_controller.ts","webpack://app/./app/javascript/controllers/popover_controller.ts","webpack://app/./app/javascript/controllers/popup_controller.ts","webpack://app/./app/javascript/controllers/reveal_content_controller.ts","webpack://app/./app/javascript/controllers/semi_circle_donut_chart_controller.ts","webpack://app/./app/javascript/ui/textarea.jsx","webpack://app/./app/assets/images/icons/envelope.svg","webpack://app/./app/assets/images/icons/link.svg","webpack://app/./app/javascript/share_notice/index.jsx","webpack://app/./app/javascript/controllers/share_notice_modal_controller.ts","webpack://app/./app/javascript/controllers/charts/area_chart.js","webpack://app/./app/javascript/controllers/trend_by_buyer_chart_controller.ts","webpack://app/./app/javascript/controllers/charts/value_volume_chart.js","webpack://app/./app/javascript/controllers/trend_over_time_chart_controller.ts","webpack://app/./app/javascript/controllers/index.ts","webpack://app/./app/javascript/supplier_group_state_manager.js","webpack://app/./app/javascript/ui/button.jsx","webpack://app/./app/assets/images/icons/checkbox-minus.svg","webpack://app/./app/javascript/ui/half_selected_checkbox.jsx","webpack://app/./app/javascript/hooks/fetcher.js","webpack://app/./app/javascript/hooks/useSupplierGroup.js","webpack://app/./app/assets/images/right.svg","webpack://app/./app/assets/images/down.svg","webpack://app/./app/javascript/ui/supplier_group.jsx"],"sourcesContent":["var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nconst SvgGroup = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 21,\n height: 21,\n fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#DEE3DF\",\n d: \"M4 21a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4h13a4 4 0 0 1 4 4v13a4 4 0 0 1-4 4H4Z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#505D52\",\n d: \"M15.046 11.864h-.91V10.5a.454.454 0 0 0-.454-.454h-2.728v-.91h.91a.454.454 0 0 0 .454-.454V5.955a.454.454 0 0 0-.454-.455H9.136a.455.455 0 0 0-.454.455v2.727a.455.455 0 0 0 .454.454h.91v.91H7.318a.454.454 0 0 0-.454.454v1.364h-.91a.454.454 0 0 0-.454.454v2.728a.455.455 0 0 0 .455.454h2.727a.455.455 0 0 0 .454-.454v-2.728a.454.454 0 0 0-.454-.454h-.91v-.91h5.455v.91h-.909a.454.454 0 0 0-.454.454v2.728a.455.455 0 0 0 .454.454h2.728a.455.455 0 0 0 .454-.454v-2.728a.455.455 0 0 0-.454-.454Zm-6.819.909v1.818H6.41v-1.818h1.818Zm1.364-4.546V6.41h1.818v1.818H9.591Zm5 6.364h-1.818v-1.818h1.818v1.818Z\"\n})));\nexport default SvgGroup;","import type { Options } from 'highcharts';\nimport * as Highcharts from 'highcharts';\nimport { merge as deepMerge } from 'lodash';\n// @ts-expect-error chartFontFamily is an array of strings\nimport { chartFontFamily } from './constants';\nimport exporting from 'highcharts/modules/exporting';\nimport offlineExporting from 'highcharts/modules/offline-exporting';\nimport accessibility from 'highcharts/modules/accessibility';\n\n// Create a type alias for Highcharts to avoid circular reference issues\ntype HighchartsType = typeof Highcharts;\n\nexport const highchartsOptionsWithExporting = function(Highcharts: HighchartsType, overrides: Options = {}): Options {\n exporting(Highcharts);\n offlineExporting(Highcharts);\n accessibility(Highcharts);\n\n const options = highchartsOptions(Highcharts, {\n // See https://api.highcharts.com/highcharts/exporting\n exporting: {\n chartOptions: {\n chart: {\n backgroundColor: 'white',\n },\n plotOptions: {\n column: {\n pointPadding: 0.2,\n pointWidth: undefined, // Ensure this value is not defined.\n }\n }\n },\n scale: 1.25,\n sourceWidth: 1280,\n sourceHeight: 540,\n buttons: {\n contextButton: {\n enabled: false \n },\n // Frustratingly, this is undocumented in the Highcharts API.\n exportButton: {\n // See https://api.highcharts.com/highcharts/exporting.buttons.contextButton.menuItems\n menuItems: [\n 'downloadPNG',\n 'downloadPDF'\n ],\n theme: {\n fill: 'transparent',\n // See https://api.highcharts.com/highcharts/plotOptions.series.states\n states: {\n hover: {\n fill: 'transparent'\n },\n select: {\n fill: 'transparent'\n }\n }\n },\n useHTML: true,\n text: `\n \n Export\n
\n \n \n \n \n
\n \n `\n }\n },\n // See https://api.highcharts.com/highcharts/exporting.menuItemDefinitions\n menuItemDefinitions: {\n // viewFullscreen: {},\n // printChart: {},\n // separator: {},\n downloadPNG: {\n onclick: onDownload({ exportFormat: 'PNG' }),\n text: 'Download chart as a PNG image'\n },\n // downloadJPEG: {},\n // downloadSVG: {},\n downloadPDF: {\n onclick: onDownload({ exportFormat: 'PDF' }),\n text: 'Download chart as a PDF'\n }\n }\n },\n navigation: {\n buttonOptions: {\n align: 'left',\n verticalAlign: 'bottom'\n },\n menuItemStyle: {\n fontFamily: chartFontFamily.join(','),\n fontSize: '14px',\n letterSpacing: '0',\n lineHeight: '18px',\n padding: '0.5em'\n },\n menuStyle: {\n padding: '0',\n backgroundColor: 'rgb(249 250 251)',\n border: '1px solid rgb(249 250 251)',\n color: 'rgb(75 85 99)',\n boxShadow: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)'\n },\n menuItemHoverStyle: {\n backgroundColor: 'rgb(229 231 235)',\n color: 'rgb(17 24 39)'\n }\n }\n });\n\n return deepMerge(options, overrides);\n};\n\nexport const highchartsOptions = function(Highcharts: HighchartsType, overrides: Options = {}): Options {\n // Set default options for Highcharts.\n const options: Options = {\n // Tussell green\n colors: ['#0e9c1b'],\n chart: { backgroundColor: 'none' },\n lang: { numericSymbols: ['K', 'M', 'B', 'T', 'Q', 'Qi'] },\n tooltip: {\n backgroundColor: '#000000',\n borderColor: '#000000',\n formatter: function() {\n const date = Highcharts.dateFormat('%Y', new Date(this.x).getTime());\n return '

' + date + ': £' + toHumanNumber(typeof this.y === 'number' ? this.y : 0) + '

';\n }\n },\n // Removes highcharts.com credit link\n credits: { enabled: false }\n };\n\n return deepMerge(options, overrides);\n};\n\n// Convert a number to a human-readable format with abbreviated units (K, M, B)\nexport const toHumanNumber = (number: number): string => {\n const units = ['B', 'M', 'K'];\n const divisors = [1e9, 1e6, 1e3];\n\n for (let i = 0; i < divisors.length; i++) {\n if (number >= divisors[i]) {\n return (number / divisors[i]).toFixed(1).replace(/\\.0$/, '') + units[i];\n }\n }\n\n return number.toString();\n};\n\n// Map the export format to the MIME type\nconst formatMapper = (exportFormat: string): string => {\n switch (exportFormat) {\n case 'PNG':\n return 'image/png';\n case 'PDF':\n return 'application/pdf';\n default:\n // @ts-expect-error Rollbar is a global object.\n if (typeof window.Rollbar !== 'undefined') {\n // @ts-expect-error as above.\n window.Rollbar.error(`Unknown export format: ${exportFormat}`);\n }\n return 'image/png';\n }\n};\n\n\n// Download the chart as a file\nconst onDownload = (options: { exportFormat: string }) => function() {\n this.exportChart(\n {\n type: formatMapper(options.exportFormat),\n filename: 'chart'\n }\n );\n const csrfToken = document.querySelector('meta[name=\"csrf-token\"]')?.getAttribute('content');\n\n fetch('/charts/downloads', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-TOKEN': typeof csrfToken === 'string' ? csrfToken : ''\n },\n body: JSON.stringify({\n export_format: options.exportFormat\n })\n })\n .then(response => {\n if (!response.ok) {\n throw new Error('Failed to log chart download event');\n }\n })\n .catch(error => {\n console.error(error.message);\n // @ts-expect-error Rollbar is a global object.\n if (typeof window.Rollbar !== 'undefined') {\n // @ts-expect-error Rollbar as above.\n window.Rollbar.error(error.message);\n }\n });\n};\n\nexport default {\n highchartsOptions,\n highchartsOptionsWithExporting,\n toHumanNumber\n};\n","import { Application } from '@hotwired/stimulus';\n\ndeclare global {\n interface Window {\n Stimulus: Application;\n }\n}\n\nconst application = Application.start();\n\n// Configure Stimulus development experience\napplication.debug = false;\nwindow.Stimulus = application;\n\nexport { application };\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class ButtonController extends Controller{\n static targets = ['button'];\n static values = { text: String };\n\n declare buttonTarget: HTMLButtonElement;\n declare textValue: string;\n\n disable(): void {\n this.buttonTarget.disabled = true;\n this.buttonTarget.innerText = this.textValue;\n }\n\n enable(): void {\n this.buttonTarget.disabled = false;\n }\n}\n","// This controller is for changing the opacity of the svg we use for our\n// personalised checkboxes.\nimport { Controller } from '@hotwired/stimulus';\n\nexport default class CheckboxController extends Controller {\n static targets = ['checkbox', 'svg'];\n\n declare checkboxTarget: HTMLInputElement;\n declare svgTarget: HTMLImageElement;\n\n // Upon connection, this displays the checkbox correctly if checked\n connect(): void {\n if (this.checkboxTarget.checked) {\n this.svgTarget.style.opacity = '1';\n }\n }\n\n changeCheckbox(): void {\n if (this.checkboxTarget.checked) {\n this.svgTarget.style.opacity = '1';\n } else {\n this.svgTarget.style.opacity = '0';\n }\n }\n}\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nconst SvgArrowLeft = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 10 10\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M8.75 4.25H3.058l2.475-2.467A.753.753 0 0 0 4.468.718l-3.75 3.75a.75.75 0 0 0-.158.247.75.75 0 0 0 0 .57.75.75 0 0 0 .158.248l3.75 3.75a.75.75 0 0 0 1.065 0 .75.75 0 0 0 0-1.065L3.058 5.75H8.75a.75.75 0 0 0 0-1.5Z\"\n})));\nexport default SvgArrowLeft;","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// Component to render primary, secondary, tertiary and disabled buttons\n// Usage:\n// Submit\nexport default function Link(props) {\n const { type, onClick, href, disabled, children } = props;\n\n const baseStyles = 'flex items-center gap-x-1.5 py-1.5 px-2 rounded font-medium';\n\n const styles = {\n primary: `${baseStyles} bg-green-500 hover:bg-green-700 text-grey-50`,\n secondary: `${baseStyles} bg-grey-700 hover:bg-grey-800 text-grey-500`,\n tertiary: `${baseStyles} bg-grey-200 hover:bg-grey-400 text-grey-700`,\n selected: `${baseStyles} bg-green-700 hover:bg-green-900 text-grey-50`,\n disabled: `${baseStyles} bg-grey-200 text-grey-500 cursor-not-allowed`\n };\n\n // Set button styles based on type.\n // Default to primary.\n let buttonStyles = 'primary';\n if (disabled) {\n buttonStyles = styles.disabled;\n } else if (type === 'selected') {\n buttonStyles = styles.selected;\n } else {\n buttonStyles = styles[type];\n }\n\n return (\n \n {children}\n \n );\n}\n\nLink.propTypes = {\n type: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n href: PropTypes.string,\n disabled: PropTypes.bool,\n children: PropTypes.node\n};\n","// This file is based on `SupplierAutosuggestFilter`, but with key differences:\n// - It only handles `exact` and `group` supplier selections.\n// - Users cannot deselect a list of suppliers by clicking on their supplier group name.\n// - Includes form submission logic with AJAX and error handling.\n// The refactoring extracts shared logic while simplifying the competitor selection process.\n\nimport React, { Component } from \"react\";\nimport $ from 'jquery';\nimport Rails from '@rails/ujs';\nimport update from \"immutability-helper\";\n\nimport SupplierGroupStateManager from \"../supplier_group_state_manager\";\n\nimport AutosuggestWrapper from \"../filters/autosuggest/autosuggest_wrapper\";\nimport Button from \"../ui/button\";\nimport BackIcon from \"../../assets/images/icons/arrow-left.svg\";\nimport Link from \"../ui/link\";\nimport SupplierGroupIcon from \"../../assets/images/icons/group.svg\";\nimport SelectedCheckbox from \"../ui/selected_checkbox\";\nimport SupplierGroup from \"../ui/supplier_group\";\n\nexport default class CompetitorsListAutosuggest extends Component {\n constructor(props) {\n super(props);\n this.state = {\n suppliers: {\n exact: [],\n group: {}\n },\n alertMessage: null,\n loading: false\n };\n }\n\n // Initialize the group manager to track the selected supplier groups.\n componentDidMount() {\n this.groupManager = new SupplierGroupStateManager(\n this.state.suppliers.group,\n (updateObj) => this.handleGroupInputChange(updateObj)\n );\n }\n\n // Updates the state when a supplier group is selected/modified. \n handleGroupInputChange = (updateObj) => {\n this.setState((prevState) =>\n update(prevState, {\n suppliers: updateObj\n })\n );\n };\n\n // Removes the suppliers from the selected list.\n handleDeselect = (filter, index) => {\n this.setState((prevState) =>\n update(prevState, {\n suppliers: { [filter]: { $splice: [[index, 1]] } }\n })\n );\n };\n\n // Adds a supplier or a supplier_groups' suppliers to the selected list.\n handleFieldChange = (suggestion) => {\n if (suggestion.suggestionType === \"group\" || suggestion.groupName) {\n return this.groupManager.handleChange(\"select\", suggestion);\n }\n this.setState((prevState) =>\n update(prevState, { suppliers: { exact: { $push: [suggestion] } } })\n );\n };\n\n renderLocation(option) {\n const location = [option.city, option.country]\n .filter((a) => { return a !== null; })\n .join(', ');\n\n return
\n {location}\n
;\n }\n\n // Prevent already selected suppliers from appearing in the supplier auto suggestions.\n shouldRenderSuggestion = (suggestion) => {\n if (typeof suggestion === \"string\") return true;\n const { exact } = this.state.suppliers;\n const buildSuggestionId = (supplier) => `supplier-${supplier.id}`;\n const suggestionsToIgnore = [\n ...exact.map(buildSuggestionId),\n ...this.groupManager.resultsToIgnore(),\n ];\n return !suggestionsToIgnore.includes(suggestion.suggestionId);\n };\n\n // Display the selected suppliers.\n renderSuggestion = (option, additionalClasses = \"\") => {\n return (\n
\n {option.suggestionType === \"group\" && (\n \n )}\n
\n
{option.name}
\n {option.suggestionType === \"supplier\" && this.renderLocation(option)}\n
\n
\n );\n };\n\n handleSubmit = () => {\n const { suppliers } = this.state;\n this.setState({ loading: true })\n\n const exactSupplierIds = suppliers.exact.map((supplier) => supplier.id);\n const groupSupplierIds = Object.values(suppliers.group).flatMap(group => {\n if (group.selected) {\n // If the whole group has been selected, return the ids from the suppliersArray\n return group.suppliers.map(supplier => supplier.id)\n } else {\n // Otherwise, return the selected suppliers.\n return group.selectedSuppliers.map(supplier => supplier.id)\n }\n });\n const supplierIds = [...exactSupplierIds, ...groupSupplierIds];\n\n this.request = $.ajax({\n type: \"POST\",\n url: \"/saved_competitors/bulk_create\",\n data: {\n authenticity_token: Rails.csrfToken() || \"\",\n supplier_ids: supplierIds,\n origin: \"Competitors page\",\n },\n success: () => {\n window.location.reload();\n },\n error: () => {\n this.setState({\n loading: false,\n alertMessage: \"Whoops! Something went wrong. Please try again.\"\n })\n },\n });\n }\n\n render = () => {\n const { suppliers, loading, alertMessage } = this.state;\n const handleGroupChange = this.groupManager?.handleChange.bind(this.groupManager);\n const groups = this.groupManager?.getGroups() || [];\n const hasSelectedSuppliers = suppliers.exact.length > 0 || Object.keys(suppliers.group).length > 0;\n // If the user navigated from a page within the Tussell website, allow them to go back normally. \n // Otherwise, redirect them to the suppliers page.\n const backUrl = document.referrer.includes(window.location.origin) ? document.referrer : \"/suppliers\";\n\n if (alertMessage) alert(alertMessage)\n\n return (\n
\n

Build your competitors list below to get started

\n option.name || option}\n itemsProps=\"py-1\"\n renderSuggestion={(suggestion) => this.renderSuggestion(suggestion, \"py-1 px-2 items-center hover:bg-grey-200\")}\n shouldRenderSuggestion={this.shouldRenderSuggestion}\n />\n { hasSelectedSuppliers && \n
\n
Supplier name
\n {suppliers.exact.map((supplier, i) => (\n
\n this.handleDeselect(\"exact\", i)}\n label={supplier.name}\n labelClasses=\"text-grey-900\"\n />\n {this.renderLocation(supplier)}\n \n ))}\n {groups.map((group) => (\n (\n
\n {supplier.name}\n {this.renderLocation(supplier)}\n
\n )}\n handleChange={handleGroupChange}\n label={this.renderSuggestion(group)}\n displayCheckbox={false}\n />\n ))}\n
\n }\n
\n this.handleSubmit(e)}\n >\n Confirm\n \n \n \n Back\n \n
\n
\n );\n };\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\n\nimport CompetitorsListAutosuggest from \"../competitors_list_autosuggest\";\n\n// Controller to render the competitors search input\nexport default class CompetitorsModalController extends Controller {\n static targets = [\"content\"];\n\n declare contentTarget: HTMLElement;\n\n connect(): void { \n ReactDOM.render(\n React.createElement(CompetitorsListAutosuggest),\n this.contentTarget,\n );\n }\n}\n","import $ from 'jquery';\n\n// AJAX request for displaying the data table below the value-volume or area\n// graph. Fetches the data for a selected point on the graph, and the\n// reordered data when a user clicks on a sortable column title.\nexport default function displayDataTable(url, data) {\n $.ajax({\n url,\n data,\n dataType: 'html',\n beforeSend: toggleOverlay,\n success: function(html) {\n $('#js-data-table').html(html);\n },\n error: function() {\n console.error('Failed to load data table');\n if (window.Rollbar) {\n window.Rollbar.error('Failed to load data table');\n }\n },\n complete: function() {\n $('#js-data-table').css({ opacity: 1 });\n toggleOverlay();\n }\n });\n}\n\n// Function to reveal or hide the loading overlay.\nfunction toggleOverlay() {\n const loadingOverlay = document.getElementById('js-table-loading');\n if (loadingOverlay) {\n loadingOverlay.classList.toggle('hidden');\n loadingOverlay.classList.toggle('absolute');\n }\n}\n","import Highcharts, { Chart, dateFormat } from \"highcharts\";\nimport { highchartsOptions, toHumanNumber } from \"../../highchart_options\";\nimport { map as lodashMap, max as lodashMax } from \"lodash\";\nimport displayDataTable from \"../tables/data_table\";\nimport { chartFontFamily } from \"../../constants\";\n\n/*\n * Constructs a value/volume chart (based on value_volume_chart),\n * but without automatically selecting a bucket (bar) on initial render.\n *\n * By default, no bucket is selected, so the table displays all contracts\n * within the full time range of the chart.\n *\n * Users can manually select a bucket to filter results for that time period,\n * or deselect it to remove the filter and return to the full dataset.\n*/\n/*\n - seriesA & seriesB: hashes containing the title (string) and\n data (nested arrays) for each series\n e.g. seriesA = {title: \"Contract values\", data: @values_array]}\n\n Highcharts expects to receive an array for each series, with nested array\n points e.g. @values_array = [[y], [y], [y]\n\n - categories: The x-axis values. These are separate from the y-axis values\n to force Highcharts to treat it as discrete data and label it correctly.\n\n - bucketSize: Size of the column widths as a string e.g. \"day\", \"month\",\n \"quarter\".\n\n - uuid: The uuid to identify the search. Passed through when sending AJAX\n requests for drilled down data.\n\n - tableUrl: The URL to request a table of data (when clicking on a point in\n the chart).\n*/\nexport default function competitorsValueVolumeChart(\n seriesA,\n seriesB,\n categories,\n bucketSize,\n uuid,\n dateline,\n tableUrl\n) {\n // 🤯\n const magnitude = (n) => {\n const order = Math.floor(Math.log(n) / Math.LN10 + 0.000000001);\n return Math.pow(10, order);\n }\n\n // Maximum tick position is the maximum n rounded to the nearest magnitude(n)-1\n const maximumTickForSeries = (series) => {\n const max = lodashMax(series);\n const mag = magnitude(max) / 10;\n\n return Math.ceil(max / mag) * mag;\n }\n\n const seriesAMax = maximumTickForSeries(lodashMap(seriesA.data, function(x) { return parseFloat(x); }));\n const seriesBMax = maximumTickForSeries(seriesB.data);\n\n // Top margin above plot\n const TOP_MARGIN = 25;\n\n // Render Highcharts chart\n const chart = new Chart(\n \"js-chart-container\",\n highchartsOptions(\n Highcharts,\n {\n accessibility: {\n enabled: false\n },\n chart: {\n // Magic height number from Figma\n height: 304,\n marginTop: TOP_MARGIN\n },\n // Remove default title\n title: { text: \"\" },\n xAxis: {\n type: \"datetime\",\n tickLength: 0,\n crosshair: true,\n categories: parseDateSeries(categories),\n labels: {\n style: {\n fontSize: \"10px\",\n color: \"#99A89B\",\n fontFamily: chartFontFamily.join(\", \")\n },\n formatter: function() {\n return xAxisFormatter.call(this);\n }\n }\n },\n yAxis: [{\n // y-axis label for the first series, displayed on the left hand side\n title: { text: null },\n tickAmount: 3,\n tickPositions: [0, seriesAMax / 2, seriesAMax],\n min: 0,\n labels: {\n style: {\n fontSize: \"10px\",\n color: \"#99A89B\",\n fontFamily: chartFontFamily.join(\", \")\n },\n formatter: function() {\n return \"£\" + toHumanNumber(this.value);\n }\n }\n }, {\n // y-axis label for second series, displayed on the right hand side\n title: { text: null },\n tickPositions: [0, seriesBMax / 2, seriesBMax],\n opposite: true,\n gridLineWidth: 0,\n labels: {\n style: {\n fontSize: \"10px\",\n color: \"#99A89B\",\n fontFamily: chartFontFamily.join(\", \")\n },\n formatter: function() {\n return toHumanNumber(this.value);\n }\n }\n }],\n plotOptions: {\n series: {\n borderRadius: 0,\n allowPointSelect: true,\n cursor: \"pointer\",\n marker: {\n enabled: false,\n states: {\n hover: {\n lineWidth: 0,\n radius: 0\n },\n select: {\n enabled: false\n }\n }\n },\n point: {\n events: {\n select: function() {\n onPointSelect.call(this);\n },\n unselect: function() {\n onPointDeselect.call(this);\n }\n }\n }\n }\n },\n series: [{\n name: seriesA.title,\n data: parseStringToInteger(seriesA.data),\n type: \"line\",\n color: \"#005E09\",\n zIndex: 1\n }, {\n name: seriesB.title,\n data: seriesB.data,\n type: \"column\",\n // Light green column\n color: \"#D1F2CF\",\n borderWidth: 0,\n yAxis: 1,\n groupPadding: 0,\n pointPadding: 0.2,\n states: {\n // Selected column\n select: { color: \"#0E9C1B\" },\n hover: {\n color: \"#0E9C1B\"\n }\n }\n }],\n legend: {\n itemStyle: {\n fontWeight: \"normal\",\n fontSize: \"12px\",\n color: \"#99A89B\",\n fontFamily: chartFontFamily.join(\", \")\n },\n align: \"right\"\n },\n tooltip: {\n backgroundColor: \"#FAFBFA\",\n borderColor: \"#E9ECE9\",\n borderRadius: 4,\n borderWidth: 1,\n outside: true,\n stickOnContact: true,\n padding: 5,\n shadow: {\n color: \"#005E09\",\n opacity: 0.02,\n offsetX: 0,\n offsetY: 0,\n width: 8\n },\n formatter: function() {\n const date = new Date(this.x);\n const dataInfo = [];\n\n // First, add a date\n switch (bucketSize) {\n case \"day\": {\n // A full date\n dataInfo.push(dateFormat(\"%e %b %Y\", date));\n break;\n }\n case \"week\": {\n dataInfo.push(`W${weekNumber(date)} ${date.getFullYear()}`);\n break;\n }\n case \"month\": {\n // A full-ish date\n dataInfo.push(dateFormat(\"%b %Y\", date));\n break;\n }\n case \"quarter\": {\n dataInfo.push(`Q${quarter(date)} ${date.getFullYear()}`);\n break;\n }\n case \"year\": {\n dataInfo.push(date.getFullYear());\n break;\n }\n }\n\n // Then the values from each plot\n this.points.forEach(function(point) {\n if (point.series.name.includes(\"value\")) {\n dataInfo.push(\"Value: £\" + toHumanNumber(point.y));\n } else {\n dataInfo.push(\"Volume: \" + toHumanNumber(point.y));\n }\n });\n\n // Combine them in a
\n return `\n
\n ${dataInfo.map((dataString) => `
${dataString}
`).join(\"\")}\n
\n `;\n },\n positioner: function(labelWidth, labelHeight, point) {\n // Offset the tooltip to be above the top of the actual graph area.\n const y = this.chart.plotTop - labelHeight - 6;\n // Center the tooltip horizontally on the point.\n const x = point.plotX + this.chart.plotLeft - labelWidth / 2;\n return { x, y };\n },\n shared: true,\n // Support rendering HTML in the tooltip\n useHTML: true\n }\n }\n )\n );\n\n // On initial load, no buckets should be selected.\n // This ensures the graph and all contracts are shown without any filters applied.\n if (chart.series[0].points.length > 0) {\n showFullDataset();\n }\n\n // Internal: Handles when a point is selected on a series.\n function onPointSelect() {\n // Trigger AJAX send\n displayDataTable(tableUrl, {\n bucket: categories[parseInt(this.x, 10)],\n bucket_size: bucketSize,\n uuid,\n dateline,\n mixpanel_clicked_event: true\n });\n\n // After this event has finished, set the state of corresponding series\n // points to selected.\n //\n // This is a little quirky!\n const seriesIndex = this.series.index;\n return setTimeout(selectCorrespondingSeries.bind(this, seriesIndex), 0);\n }\n\n // Internal: Handles when a point is unselected on a series.\n function onPointDeselect() {\n const point = this.series.points[parseInt(this.x, 10)]\n if (point.selected) {\n showFullDataset();\n }\n }\n\n // Internal: Handles when the page first loads or when a point is unselected.\n // No buckets are selected.\n function showFullDataset() {\n const bucket_start_date = categories.at(0)\n const bucket_end_date = categories.at(-1)\n displayDataTable(tableUrl, {\n bucket: bucket_start_date,\n bucket_end: bucket_end_date,\n uuid,\n dateline\n });\n }\n\n // Internal: Loop through all the other series on the chart and select them.\n //\n // seriesIndex - index of the series that was selected\n function selectCorrespondingSeries(seriesIndex) {\n // Get all the series in the chart\n const series = this.series.chart.series;\n // Loop over them\n for (let i = 0; i < series.length; i++) {\n // If its not the series that was just clicked...\n if (series[i].index !== seriesIndex) {\n const point = series[i].points[this.index];\n // This is a little undocumented. Take a look at what Highcharts\n // does: https://github.com/highcharts/highcharts/blob/6c73edc2e561a950abbbe5d5d5eeeea410cfe99c/js/parts/Interaction.js#L500\n point.selected = true;\n point.setState(\"select\");\n }\n }\n }\n\n // Internal: Format an x-axis label. They\"re similar to the tooltip labels\n // but also include the short year if its the first item in the x axis,\n // or the first month of the year.\n //\n // Example:\n //\n // // When the value is in January\n // xAxisFormatter()\n // \"Jan 17\"\n //\n // // When the value is half way through a year and not the first element\n // xAxisFormatter()\n // \"Mar\"\n function xAxisFormatter() {\n const date = new Date(this.value);\n\n // Do nothing with year labels\n if (bucketSize === \"year\") { return date.getFullYear(); }\n\n let label;\n\n switch (bucketSize) {\n case \"day\": {\n label = dateFormat(\"%e %b\", date);\n break;\n }\n case \"week\": {\n label = `W${weekNumber(date)}`;\n break;\n }\n case \"quarter\": {\n label = `Q${quarter(date)}`;\n break;\n }\n case \"year\": {\n label = date.getFullYear();\n break;\n }\n default: {\n label = dateFormat(\"%b\", date);\n break;\n }\n }\n\n const month = date.getMonth();\n const dayOfMonth = date.getDate();\n const shouldShowYear = (month === 0 && (bucketSize !== \"day\" || dayOfMonth === 1));\n\n if (\n this.isFirst ||\n shouldShowYear\n ) {\n label = `${label} \"${shortYear(date)}`;\n }\n\n return label;\n }\n\n // Date parses the first argument of each point in the data array. Returns\n // number of milliseconds since epoch, which is formatted by Highcharts by\n // specifying x-axis type of \"datetime\" (see above config)\n function parseDateSeries(data) {\n if (!data) { return []; }\n return data.map(function(date) {\n return Date.parse(date);\n });\n }\n\n // Parses all elements of array from string to integer.\n function parseStringToInteger(data) {\n if (!data) { return []; }\n return data.map(function(str) {\n return parseInt(str, 10);\n });\n }\n\n function weekNumber(date) {\n const onejan = new Date(date.getFullYear(), 0, 1);\n return Math.ceil((((date - onejan) / 86400000) + onejan.getDay() + 1) / 7);\n }\n\n function quarter(date) {\n const month = date.getMonth();\n return ~~(month / 3) + 1;\n }\n\n // Last two digits of the year\n function shortYear(date) {\n return date.getFullYear().toString().match(/\\d{2}$/);\n } \n}","import { Controller } from \"@hotwired/stimulus\";\nimport competitorsValueVolumeChart from \"./charts/competitors_value_volume_chart\";\nimport displayDataTable from \"./tables/data_table\";\n\n// Controller to load the Trend over Time graph on the competitors feed.\nexport default class CompetitorsTrendOverTimeChartController extends Controller {\n static values = {\n seriesA: Object,\n seriesB: Object,\n categories: Array,\n bucketSize: String,\n uuid: String,\n dateline: String,\n url: String\n };\n\n declare seriesAValue: object;\n declare seriesBValue: object;\n declare categoriesValue: string[];\n declare bucketSizeValue: string;\n declare uuidValue: string;\n declare datelineValue: string;\n declare urlValue: string;\n\n connect(): void {\n // Render the chart and the table\n competitorsValueVolumeChart(\n this.seriesAValue,\n this.seriesBValue,\n this.categoriesValue,\n this.bucketSizeValue,\n this.uuidValue,\n this.datelineValue,\n this.urlValue\n );\n\n // Paginate the data table below the value-volume graph.\n document.addEventListener(\"DOMContentLoaded\", function () {\n const dataTable = document.getElementById(\"js-data-table\");\n if (dataTable === null) return;\n dataTable.addEventListener(\"click\", function (e) {\n if (e.target === null) return;\n const target = e.target as HTMLAnchorElement;\n if (target.matches(\"#js-pagination a\") || target.matches(\"th a\")) {\n e.preventDefault();\n displayDataTable(target.href);\n }\n });\n });\n }\n}\n","import { Controller } from '@hotwired/stimulus';\nimport type NotificationsController from './notifications_controller';\nimport Rails from '@rails/ujs';\n\n// This controller is used to create a download, update the notifications pane,\n// and open then pane.\nexport default class DownloadsController extends Controller {\n BUTTON_TIMEOUT = 3000;\n static targets = ['button'];\n declare buttonTarget: HTMLButtonElement;\n static outlets = [ 'notifications' ];\n declare notificationsOutlet: NotificationsController;\n\n // This function submits the form, updates the notifications pane content,\n // and opens the pane.\n async submitAndRender(): Promise {\n const form = this.element;\n // First, disable the button so we don't submit the form twice.\n this.buttonTarget.disabled = true;\n try {\n const response = await fetch(form.action, {\n method: form.method,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-CSRF-TOKEN': Rails.csrfToken(),\n },\n // This as any is a hack to get around the fact that FormData might\n // contain a File object. In that case, FormData cannot be turned\n // into a URLSearchParams. We know that this form doesn't contain\n // a File object, but Typescript doesn't.\n // See: https://github.com/microsoft/TypeScript/issues/30584\n body: new URLSearchParams(new FormData(form) as any)\n });\n const parsedResponse = await response.json();\n // update the DOM first so we don't see a random flash of the new content\n this.notificationsOutlet.updateDOM(parsedResponse);\n } catch (error) {\n // This isn't such a big issue as we open the notifications pane anyway.\n // And it starts polling the server for updates.\n console.log(error);\n }\n // Finally open the pane\n void this.notificationsOutlet.open();\n // Re-enable the button after 3 seconds\n setTimeout(() => { this.buttonTarget.disabled = false; }, this.BUTTON_TIMEOUT);\n }\n}","import { Controller } from '@hotwired/stimulus';\nimport {\n computePosition, offset, flip, shift, type Placement, type Middleware\n} from '@floating-ui/dom';\n\n// This is the type of the CustomEvent that is dispatched when a dropdown\n// is opened. It contains a reference to the dropdown controller that is\n// opening the dropdown and the groupKey of the dropdown group that the\n// dropdown belongs to.\ntype DropdownCustomEvent = CustomEvent<{\n openingDropdownController: DropdownController,\n groupKey: string\n}>;\n\n// StimulusJS controller to handle the dropdown component.\nexport default class DropdownController extends Controller {\n // There is a slight delay between hovering over the button and the dropdown\n // opening. This is to prevent the dropdown from opening when the user is\n // just passing over the button on their way to something else.\n OPEN_DELAY = 50;\n // There is a slight delay between hovering out of the dropdown and the\n // dropdown closing. This is to prevent the dropdown from closing when the\n // user is moving their mouse from the button to the dropdown.\n CLOSE_DELAY = 250;\n // The options passed to the computePosition function.\n POSITION_OPTIONS: {\n placement: Placement,\n middleware: Middleware[]\n } = {\n placement: 'bottom-start', // Default to bottom-start\n middleware: [offset(6), flip(), shift({ padding: 5 })]\n };\n\n // Holding a reference to the timer allows us to cancel clear it if the user\n // hovers back over the button before the dropdown has closed.\n timer: NodeJS.Timeout | undefined;\n\n static targets = [ \"button\", \"dropdown\" ];\n declare dropdownTarget: HTMLDivElement;\n declare buttonTarget: HTMLLinkElement;\n\n static classes = [ \"hover\" ];\n declare hoverClasses: string[];\n\n static values = { position: String, groupKey: String };\n declare positionValue: Placement;\n declare groupKeyValue: string;\n\n // The #update method is calculates the correct position for the dropdown\n // and is called when the dropdown is opened.\n async update(): Promise {\n const options = this.POSITION_OPTIONS;\n options.placement = this.positionValue;\n const button = this.buttonTarget;\n const dropdown = this.dropdownTarget;\n \n try {\n const { x, y } = await computePosition(button, dropdown, options);\n Object.assign(dropdown.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n } catch (error) {\n console.error('Error computing position:', { cause: error });\n }\n }\n \n\n // Open the dropdown when the user hovers over the button.\n open(): void {\n clearTimeout(this.timer);\n setTimeout(\n () => {\n // Transition the button's styling to the hover state\n this.buttonTarget.classList.add(...this.hoverClasses);\n // Reveal the dropdown\n this.dropdownTarget.style.display = 'block';\n // Position the dropdown\n void this.update();\n },\n this.OPEN_DELAY\n );\n // Close any other dropdowns in the same group\n this.dispatch('open', {\n target: window,\n detail: { openingDropdownController: this, groupKey: this.groupKeyValue }\n });\n }\n\n // This is the CustomEvent handler that is called when another dropdown\n // is opened. If the other dropdown is in the same group, then we close\n // this dropdown.\n onGroupOpen(e: DropdownCustomEvent): void {\n const isCorrectGroup = e.detail.groupKey === this.groupKeyValue;\n const isNotThisDropdown = e.detail.openingDropdownController !== this;\n if (isCorrectGroup && isNotThisDropdown) {\n this.closeImmediately();\n }\n }\n\n // There is a slight delay between hovering out of the dropdown and\n // the dropdown closing. This is to prevent the dropdown from closing\n // when the user is moving their mouse from the button to the dropdown.\n close(): void {\n this.timer = setTimeout(\n this.closeImmediately.bind(this),\n this.CLOSE_DELAY\n );\n }\n\n // We also expose a way to close the dropdown immediately. This is used\n // when the user hovers on another dropdown button.\n closeImmediately(): void {\n // Transition the button's styling from the hover state\n this.buttonTarget.classList.remove(...this.hoverClasses);\n // Remove the dropdown\n this.dropdownTarget.style.display = 'none';\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { toPng } from \"html-to-image\";\n\nconst CANVAS_MARGIN = 16;\nexport default class ElementDownloadController extends Controller {\n static targets = [\"button\"];\n static values = { filename: String };\n\n declare buttonTarget: HTMLButtonElement;\n declare filenameValue: string;\n\n connect(): void {\n this.buttonTarget.addEventListener(\"click\", this.onButtonClick.bind(this));\n }\n\n onButtonClick(): void {\n this.buttonTarget.disabled = true; // Disable the button.\n setTimeout(() => {\n this.downloadImage()\n .then(() => {\n console.log(`Downloaded \"${this.filenameValue}.png\" successfully`);\n \n const csrfToken = document.querySelector('meta[name=\"csrf-token\"]')?.getAttribute('content');\n \n fetch('/charts/downloads', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-TOKEN': typeof csrfToken === 'string' ? csrfToken : ''\n },\n body: JSON.stringify({\n export_format: 'PNG'\n })\n })\n .then(response => {\n if (!response.ok) {\n throw new Error('Failed to log chart download event');\n }\n })\n .catch(error => {\n console.error(error.message);\n // @ts-expect-error Rollbar is a global object.\n if (typeof window.Rollbar !== 'undefined') {\n // @ts-expect-error Rollbar as above.\n window.Rollbar.error(error.message);\n }\n });\n })\n .catch(error => {\n console.error(\"Error in onButtonClick:\", error);\n // @ts-expect-error Rollbar is a global object.\n if (typeof window.Rollbar !== \"undefined\") {\n // @ts-expect-error Rollbar is a global object as above.\n window.Rollbar.error(error);\n }\n })\n .finally(() => {\n setTimeout(() => {\n this.buttonTarget.disabled = false; // Re-enable the button after a short delay.\n }, 250);\n });\n }, 0);\n }\n\n duplicateElement(element: HTMLElement): HTMLElement {\n const duplicate = element.cloneNode(true) as HTMLElement;\n duplicate.style.width = `${element.offsetWidth}px`;\n document.body.appendChild(duplicate);\n return duplicate;\n }\n\n async downloadImage(): Promise {\n let element: HTMLElement | null = document.getElementById(\"element_download_wrapper_target\");\n if (element === null) {\n throw new Error(\"Element element_download_wrapper_target not found\");\n }\n element = this.duplicateElement(element);\n this.addLogoIcon(element);\n try {\n await this.withHiddenNoPrintElements(element, async () => {\n // See: https://www.npmjs.com/package/html-to-image#topng\n const dataUrl = await toPng(element, {\n cacheBust: true,\n backgroundColor: \"white\",\n width: element.offsetWidth + (CANVAS_MARGIN * 2),\n height: element.offsetHeight + (CANVAS_MARGIN * 5),\n style: {\n margin: `${CANVAS_MARGIN}px`,\n marginTop: `${CANVAS_MARGIN * 3}px`,\n width: `${element.offsetWidth}px`,\n height: `${element.offsetHeight}px`\n }\n });\n const link = document.createElement(\"a\");\n link.href = dataUrl;\n link.download = typeof this.filenameValue === \"string\" ? this.filenameValue : \"data.png\";\n link.click();\n });\n } finally {\n element.remove();\n }\n }\n\n async withHiddenNoPrintElements(element, callback: () => Promise): Promise {\n const noPrintElements = element.querySelectorAll(\".no-print\");\n noPrintElements.forEach(element => {\n (element as HTMLElement).style.display = \"none\";\n });\n\n await callback().finally(() => {\n noPrintElements.forEach(element => {\n (element as HTMLElement).style.removeProperty(\"display\");\n });\n });\n }\n\n addLogoIcon(element: HTMLElement): void {\n const svgElement = document.getElementById(\"site-logo\")?.cloneNode(true) as HTMLElement;\n if (svgElement === null) {\n console.error(\"Site logo not found\");\n // @ts-expect-error Rollbar is a global object.\n if (typeof window.Rollbar !== \"undefined\") {\n // @ts-expect-error Rollbar is a global object as above.\n window.Rollbar.error(\"Site logo not found for chart download\");\n }\n return;\n }\n svgElement.style.position = 'absolute';\n svgElement.style.top = `-${CANVAS_MARGIN * 2.5}px`;\n svgElement.style.right = `0`;\n svgElement.style.height = `${CANVAS_MARGIN * 2}px`;\n\n element.style.position = 'relative';\n element.appendChild(svgElement);\n }\n}\n","// This controller is used to enable a button once something has been selected.\n// This will be used in SavedContracts and SavedSearches\n\nimport { Controller } from \"@hotwired/stimulus\";\nexport default class EnableActionButtonController extends Controller {\n static targets = ['allCheckbox', 'checkbox', 'button', 'svg'];\n declare checkboxTargets: HTMLInputElement[];\n declare buttonTargets: HTMLButtonElement[];\n declare allCheckboxTarget: HTMLInputElement;\n declare svgTargets: HTMLElement[];\n\n select(): void {\n const someChecked = this.checkboxTargets.some(c => c.checked);\n \n if (someChecked) {\n this.buttonTargets.forEach(button => {\n button.disabled = false;\n this.svgClass('fill-grey-50');\n });\n } else {\n this.buttonTargets.forEach(button => {\n button.disabled = true;\n this.svgClass('fill-grey-500');\n });\n }\n }\n\n selectAll(): void {\n if (this.allCheckboxTarget.checked) {\n this.buttonTargets.forEach(button => {\n button.disabled = false;\n this.svgClass('fill-grey-50');\n });\n } else {\n this.buttonTargets.forEach(button => {\n button.disabled = true;\n this.svgClass('fill-grey-500');\n });\n }\n }\n\n svgClass(className: string): void {\n this.svgTargets.forEach(svg => {\n const orginalClass = svg.classList.value;\n svg.classList.remove(orginalClass);\n svg.classList.add(className);\n });\n }\n}\n","import { Controller } from '@hotwired/stimulus';\n\n// Controller to auto-submit a form on specific actions\nexport default class FormController extends Controller{\n static values = { action: String, method: String };\n declare readonly actionValue: string;\n declare readonly methodValue: string;\n declare readonly hasActionValue: boolean;\n declare readonly hasMethodValue: boolean;\n\n // Submit the form.\n // NOTE: You should use the Stimulus :prevent modifier to prevent the default\n // action of the element.\n // ie