UNPKG

@nebula.js/sn-waterfall

Version:
1,492 lines (1,463 loc) 542 kB
/* * @nebula.js/sn-waterfall v1.0.6 * Copyright (c) 2025 QlikTech International AB * Released under the MIT license. */ import { useRect, useOptions, useConstraints, usePromise, useApp, useAppLayout, useDeviceType, useTheme, useTranslator, useMemo, onTakeSnapshot, useImperativeHandle, useElement, useStaleLayout, useState, useEffect } from '@nebula.js/stardust'; import $$1 from 'jquery'; import picassojs from 'picasso.js'; import PicassoQ from 'picasso-plugin-q'; import PicassoHammer from 'picasso-plugin-hammer'; import Hammer from 'hammerjs'; import extend$1 from 'extend'; var Object_Disclaimer_LimitedData = { id: "Object.Disclaimer.LimitedData", locale: { "en-US": "Currently showing a limited data set.", "zh-TW": "目前顯示的是有限的資料集。", "zh-CN": "当前正显示有限的数据集。", "tr-TR": "Şu anda sınırlı bir veri kümesi gösteriliyor.", "sv-SE": "Just nu visas en begränsad uppsättning data.", "it-IT": "Attualmente viene visualizzata una serie di dati limitata.", "es-ES": "Mostrando actualmente un conjunto limitado de datos.", "de-DE": "Zurzeit wird nur ein beschränkter Datensatz angezeigt.", "pl-PL": "Aktualnie przedstawiany jest ograniczony zestaw danych.", "nl-NL": "Momenteel wordt een beperkte gegevensverzameling getoond.", "ko-KR": "현재 제한된 데이터 집합을 표시하고 있습니다.", "pt-BR": "Mostrando um conjunto de dados limitado.", "fr-FR": "Affichage d'un ensemble de données limité pour l'instant.", "ja-JP": "現在、限定的なデータ セットを表示しています。", "ru-RU": "В настоящее время отображается ограниченный набор данных." } }; var Object_Disclaimer_OnlyNanData = { id: "Object.Disclaimer.OnlyNanData", locale: { "en-US": "The chart is not displayed because it contains only undefined values.", "zh-TW": "系統不會顯示圖表,因為該圖表僅包含未定義的值。", "zh-CN": "未显示图表,因为它仅包含未定义的值。", "tr-TR": "Yalnızca tanımsız değerleri içermesi nedeniyle grafik görüntülenmiyor.", "sv-SE": "Diagrammet visas inte eftersom det enbart innehåller odefinierade värden.", "it-IT": "Il grafico non è visualizzato poiché contiene solo valori non definiti.", "es-ES": "El gráfico no se muestra porque solo contiene valores indefinidos.", "de-DE": "Das Diagramm wird nicht angezeigt, da es nur nicht definierte Werte enthält.", "pl-PL": "Wykres nie jest wyświetlany, ponieważ zawiera wartości niezdefiniowane.", "nl-NL": "De grafiek wordt niet weergegeven omdat deze alleen ongedefinieerde waarden bevat.", "ko-KR": "정의되지 않은 값만 포함되어 있으므로 차트가 표시되지 않습니다.", "pt-BR": "O gráfico não foi exibido, porque contém apenas valores não definidos.", "fr-FR": "Le graphique n'est pas affiché, car il contient uniquement des valeurs non définies.", "ja-JP": "未定義の値しか含まれていないため、チャートは表示されていません。", "ru-RU": "Диаграмма не отображается, поскольку она содержит только неопределенные значения." } }; var Object_Disclaimer_OnlyNegativeOrZeroValues = { id: "Object.Disclaimer.OnlyNegativeOrZeroValues", locale: { "en-US": "The chart is not displayed because it contains only negative or zero values.", "zh-TW": "系統不會顯示圖表,因為該圖表僅包含負值或零值。", "zh-CN": "未显示图表,因为它仅包含负值或零值。", "tr-TR": "Yalnızca negatif veya sıfır değerlerini içermesi nedeniyle grafik görüntülenmiyor.", "sv-SE": "Diagrammet visas inte eftersom det enbart innehåller negativa eller nollvärden", "it-IT": "Il grafico non viene visualizzato poiché contiene solo valori negativi o uguali a zero.", "es-ES": "El gráfico no se muestra porque sólo contiene valores negativos o valores cero.", "de-DE": "Das Diagramm wird nicht angezeigt, da es nur negative oder 0-Werte enthält.", "pl-PL": "Wykres nie jest wyświetlany, ponieważ zawiera wartości ujemne lub zerowe.", "nl-NL": "De grafiek wordt niet weergegeven omdat het alleen negatieve waarden of nulwaarden bevat.", "ko-KR": "음수 또는 zero 값만 포함되어 있으므로 차트가 표시되지 않습니다.", "pt-BR": "O gráfico não foi exibido, porque contém apenas valores negativos ou zero.", "fr-FR": "Le graphique n'est pas affiché, car il contient uniquement des valeurs négatives ou égales à zéro.", "ja-JP": "チャートは負の値またはゼロ値しか含まれていないため、表示されていません。", "ru-RU": "Диаграмма не отображается, поскольку она содержит только отрицательные или нулевые значения." } }; var Object_Disclaimer_RequireNumericDimension = { id: "Object.Disclaimer.RequireNumericDimension", locale: { "en-US": "This visualization requires a numeric diemnsion." } }; var all = { "Visualization.Histogram.MeasureAxisLabel": { id: "Visualization.Histogram.MeasureAxisLabel", locale: { "en-US": "Frequency", "zh-TW": "頻率", "zh-CN": "频率", "tr-TR": "Sıklık", "sv-SE": "Frekvens", "it-IT": "Frequenza", "es-ES": "Frecuencia", "de-DE": "Häufigkeit", "pl-PL": "Częstotliwość", "nl-NL": "Frequentie", "ko-KR": "빈도", "pt-BR": "Frequência", "fr-FR": "Fréquence", "ja-JP": "レコード数", "ru-RU": "Частота" } }, "waterfall.legend.positiveValue.label": { id: "waterfall.legend.positiveValue.label", locale: { "en-US": "Positive", "zh-TW": "正值", "zh-CN": "正", "tr-TR": "Pozitif", "sv-SE": "Positiv", "it-IT": "Positivi", "es-ES": "Positivo", "de-DE": "Positiv", "pl-PL": "Dodatnie", "nl-NL": "Positief", "ko-KR": "양수", "pt-BR": "Positivo", "fr-FR": "Positive", "ja-JP": "正", "ru-RU": "Положительное" } }, "waterfall.legend.negativeValue.label": { id: "waterfall.legend.negativeValue.label", locale: { "en-US": "Negative", "zh-TW": "負值", "zh-CN": "负", "tr-TR": "Negatif", "sv-SE": "Negativ", "it-IT": "Negativi", "es-ES": "Negativo", "de-DE": "Negativ", "pl-PL": "Ujemne", "nl-NL": "Negatief", "ko-KR": "음수", "pt-BR": "Negativo", "fr-FR": "Négative", "ja-JP": "負", "ru-RU": "Отрицательное" } }, "waterfall.legend.subtotal.label": { id: "waterfall.legend.subtotal.label", locale: { "en-US": "Subtotal", "zh-TW": "小計", "zh-CN": "小计", "tr-TR": "Ara Toplam", "sv-SE": "Deltotal", "it-IT": "Subtotale", "es-ES": "Subtotal", "de-DE": "Teilsumme", "pl-PL": "Suma częściowa", "nl-NL": "Subtotaal", "ko-KR": "소계", "pt-BR": "Subtotal", "fr-FR": "Sous-total", "ja-JP": "小計", "ru-RU": "Подытог" } }, Object_Disclaimer_LimitedData: Object_Disclaimer_LimitedData, Object_Disclaimer_OnlyNanData: Object_Disclaimer_OnlyNanData, Object_Disclaimer_OnlyNegativeOrZeroValues: Object_Disclaimer_OnlyNegativeOrZeroValues, Object_Disclaimer_RequireNumericDimension: Object_Disclaimer_RequireNumericDimension, "properties.boxplot.calculationMode.tukey.elements.boxEnd": { id: "properties.boxplot.calculationMode.tukey.elements.boxEnd", locale: { "en-US": "Third quartile", "zh-TW": "第三四分位數", "zh-CN": "第 3 个四分位", "tr-TR": "Üçüncü çeyrek", "sv-SE": "Tredje kvartilen", "it-IT": "Terzo quartile", "es-ES": "Tercer cuartil", "de-DE": "Drittes Quartil", "pl-PL": "Trzeci kwartyl", "nl-NL": "Derde kwartiel", "ko-KR": "3번째 사분위수", "pt-BR": "Terceiro quartil", "fr-FR": "Troisième quartile", "ja-JP": "第 3 四分位数", "ru-RU": "Третий квартиль" } }, "properties.boxplot.calculationMode.tukey.elements.boxMiddle": { id: "properties.boxplot.calculationMode.tukey.elements.boxMiddle", locale: { "en-US": "Median", "zh-TW": "中位數", "zh-CN": "中间值", "tr-TR": "Medyan", "sv-SE": "Median", "it-IT": "Mediana", "es-ES": "Mediana", "de-DE": "Drittes Quartil", "pl-PL": "Mediana", "nl-NL": "Mediaan", "ko-KR": "중앙값", "pt-BR": "Mediano", "fr-FR": "Médiane", "ja-JP": "中央値", "ru-RU": "Медианное" } }, "properties.boxplot.calculationMode.tukey.elements.boxStart": { id: "properties.boxplot.calculationMode.tukey.elements.boxStart", locale: { "en-US": "First quartile", "zh-TW": "第一四分位數", "zh-CN": "第 1 个四分位", "tr-TR": "İlk çeyrek", "sv-SE": "Första kvartilen", "it-IT": "Primo quartile", "es-ES": "Primer cuartil", "de-DE": "Erstes Quartil", "pl-PL": "Pierwszy kwartyl", "nl-NL": "Eerste kwartiel", "ko-KR": "1번째 사분위수", "pt-BR": "Primeiro quartil", "fr-FR": "Premier quartile", "ja-JP": "第 1 四分位数", "ru-RU": "Первый квартиль" } }, "properties.boxplot.calculationMode.tukey.elements.firstWhisker": { id: "properties.boxplot.calculationMode.tukey.elements.firstWhisker", locale: { "en-US": "Box start - {0} IQR", "zh-TW": "方塊開始 - {0} IQR", "zh-CN": "框开始 - {0} IQR", "tr-TR": "Kutu başlangıcı - {0} IQR", "sv-SE": "Rutans start - {0} IQR", "it-IT": "Inizio scatola - {0} IQR", "es-ES": "Inicio de caja - {0} IQR", "de-DE": "Box-Beginn - {0} IQR", "pl-PL": "Początek wykresu pudełkowego - {0} IQR", "nl-NL": "Begin box - {0} IQR", "ko-KR": "상자 시작 - {0} IQR", "pt-BR": "Início da caixa - {0} IQR", "fr-FR": "Début de la boîte - {0} IQR", "ja-JP": "ボックス開始 - {0} IQR", "ru-RU": "Начало поля - {0} IQR" } }, "properties.boxplot.calculationMode.tukey.elements.lastWhisker": { id: "properties.boxplot.calculationMode.tukey.elements.lastWhisker", locale: { "en-US": "Box end + {0} IQR", "zh-TW": "方塊結束 + {0} IQR", "zh-CN": "框结束 + {0} IQR", "tr-TR": "Kutu bitişi + {0} IQR", "sv-SE": "Rutans slut + {0} IQR", "it-IT": "Fine scatola + {0} IQR", "es-ES": "Fin de caja + {0} IQR", "de-DE": "Box-Ende + {0} IQR", "pl-PL": "Koniec wykresu pudełkowego - {0} IQR", "nl-NL": "Einde box + {0} IQR", "ko-KR": "상자 끝 + {0} IQR", "pt-BR": "Fim da caixa + {0} IQR", "fr-FR": "Fin de la boîte + {0} IQR", "ja-JP": "ボックス終了 + {0} IQR", "ru-RU": "Конец поля + {0} IQR" } }, "properties.boxplot.calculationMode.stdDev.elements.boxEnd": { id: "properties.boxplot.calculationMode.stdDev.elements.boxEnd", locale: { "en-US": "Box middle + 1 standard deviation", "zh-TW": "方塊中間 + 1 個標準差", "zh-CN": "框中部 + 1 个标准偏差", "tr-TR": "Kutu ortası + 1 standart sapma", "sv-SE": "Rutans mitt + 1 standardavvikelse", "it-IT": "Centro scatola + 1 deviazione standard", "es-ES": "Mitad de la caja + 1 desviación estándar", "de-DE": "Box-Mitte +1 Standardabweichung", "pl-PL": "Środek wykresu pudełkowego + 1 odch. stand", "nl-NL": "Midden box + 1 standaardafwijking", "ko-KR": "상자 중간 + 1개 표준 편차", "pt-BR": "Meio da caixa + 1 desvio padrão", "fr-FR": "Milieu de la boîte + 1 écart type", "ja-JP": "ボックス中間 + 1 標準偏差", "ru-RU": "Середина поля + 1 стандартное отклонение" } }, "properties.boxplot.calculationMode.stdDev.elements.boxMiddle": { id: "properties.boxplot.calculationMode.stdDev.elements.boxMiddle", locale: { "en-US": "Average", "zh-TW": "平均值", "zh-CN": "平均值", "tr-TR": "Ortalama", "sv-SE": "Medel", "it-IT": "Media", "es-ES": "Media", "de-DE": "Durchschnitt", "pl-PL": "Średnia", "nl-NL": "Gemiddelde", "ko-KR": "평균", "pt-BR": "Média", "fr-FR": "Moyenne", "ja-JP": "平均値", "ru-RU": "Среднее" } }, "properties.boxplot.calculationMode.stdDev.elements.boxStart": { id: "properties.boxplot.calculationMode.stdDev.elements.boxStart", locale: { "en-US": "Box middle - 1 standard deviation", "zh-TW": "方塊中間 - 1 個標準差", "zh-CN": "框中部 - 1 个标准偏差", "tr-TR": "Kutu ortası - 1 standart sapma", "sv-SE": "Rutans mitt - 1 standardavvikelse", "it-IT": "Centro scatola - 1 deviazione standard", "es-ES": "Mitad de la caja - {1} desviación estándar", "de-DE": "Box-Mitte -1 Standardabweichung", "pl-PL": "Środek wykresu pudełkowego - 1 odch. stand", "nl-NL": "Midden box - 1 standaardafwijking", "ko-KR": "상자 중간 - 1개 표준 편차", "pt-BR": "Середина поля - 1 стандартное отклонение", "fr-FR": "Milieu de la boîte - 1 écart type", "ja-JP": "ボックス中間 - 1 標準偏差", "ru-RU": "Первый квартиль" } }, "properties.boxplot.calculationMode.stdDev.elements.firstWhisker": { id: "properties.boxplot.calculationMode.stdDev.elements.firstWhisker", locale: { "en-US": "Box middle - {0} standard deviations", "zh-TW": "方塊中間 - {0} 個標準差", "zh-CN": "框中部 - {0} 个标准偏差", "tr-TR": "Kutu ortası - {0} standart sapma", "sv-SE": "Rutans mitt - {0} standardavvikelser", "it-IT": "Centro scatola - {0} deviazioni standard", "es-ES": "Mitad de la caja - {0} desviaciones estándar", "de-DE": "Box-Mitte -{0} Standardabweichung", "pl-PL": "Środek wykresu pudełkowego - {0} odch. stand", "nl-NL": "Midden box - {0} standaardafwijkingen", "ko-KR": "상자 중간 - {0}개 표준 편차", "pt-BR": "Meio da caixa - {0} desvios padrão", "fr-FR": "Milieu de la boîte - {0} écarts types", "ja-JP": "ボックス中間 - {0} 標準偏差", "ru-RU": "Середина поля - {0} стандартное(ых) отклонение(й)" } }, "properties.boxplot.calculationMode.stdDev.elements.lastWhisker": { id: "properties.boxplot.calculationMode.stdDev.elements.lastWhisker", locale: { "en-US": "Box middle + {0} standard deviations", "zh-TW": "方塊中間 + {0} 個標準差", "zh-CN": "框中部 + {0} 个标准偏差", "tr-TR": "Kutu ortası + {0} standart sapma", "sv-SE": "Rutans mitt + {0} standardavvikelser", "it-IT": "Centro scatola + {0} deviazioni standard", "es-ES": "Mitad de la caja + {0} desviaciones estándar", "de-DE": "Box-Mitte +{0} Standardabweichung", "pl-PL": "Środek wykresu pudełkowego + {0} odch. stand", "nl-NL": "Midden box + {0} standaardafwijkingen", "ko-KR": "상자 중간 + {0}개 표준 편차", "pt-BR": "Meio da caixa + {0} desvios padrão", "fr-FR": "Milieu de la boîte + {0} écarts types", "ja-JP": "ボックス中間 + {0} 標準偏差", "ru-RU": "Середина поля + {0} стандартное(ых) отклонение(й)" } }, "properties.boxplot.calculationMode.fractiles.elements.boxEnd": { id: "properties.boxplot.calculationMode.fractiles.elements.boxEnd", locale: { "en-US": "Third quartile", "zh-TW": "第三四分位數", "zh-CN": "第 3 个四分位", "tr-TR": "Üçüncü çeyrek", "sv-SE": "Tredje kvartilen", "it-IT": "Terzo quartile<", "es-ES": "Tercer cuartil", "de-DE": "Drittes Quartil", "pl-PL": "Trzeci kwartyl", "nl-NL": "Derde kwartiel", "ko-KR": "3번째 사분위수", "pt-BR": "Terceiro quartil", "fr-FR": "Troisième quartile", "ja-JP": "第 3 四分位数", "ru-RU": "Третий квартиль" } }, "properties.boxplot.calculationMode.fractiles.elements.boxMiddle": { id: "properties.boxplot.calculationMode.fractiles.elements.boxMiddle", locale: { "en-US": "Median", "zh-TW": "中位數", "zh-CN": "中间值", "tr-TR": "Medyan", "sv-SE": "Median", "it-IT": "Mediana", "es-ES": "Mediana", "de-DE": "Median", "pl-PL": "Mediana", "nl-NL": "Mediaan", "ko-KR": "중앙값", "pt-BR": "Mediano", "fr-FR": "Médiane", "ja-JP": "中央値", "ru-RU": "Медианное" } }, "properties.boxplot.calculationMode.fractiles.elements.boxStart": { id: "properties.boxplot.calculationMode.fractiles.elements.boxStart", locale: { "en-US": "First quartile", "zh-TW": "第一四分位數", "zh-CN": "第 1 个四分位", "tr-TR": "İlk çeyrek", "sv-SE": "Första kvartilen", "it-IT": "Primo quartile", "es-ES": "Primer cuartil", "de-DE": "Erstes Quartil", "pl-PL": "Pierwszy kwartyl", "nl-NL": "Eerste kwartiel", "ko-KR": "1번째 사분위수", "pt-BR": "Primeiro quartil", "fr-FR": "Premier quartile", "ja-JP": "第 1 四分位数", "ru-RU": "Первый квартиль" } }, "properties.boxplot.calculationMode.fractiles.elements.firstWhisker.fifth": { id: "properties.boxplot.calculationMode.fractiles.elements.firstWhisker.fifth", locale: { "en-US": "5th percentile", "zh-TW": "第 5 個百分位數", "zh-CN": "第 5 个百分位", "tr-TR": "5. yüzdebirlik", "sv-SE": "5:e percentilen", "it-IT": "5° percentile", "es-ES": "5º percentil", "de-DE": "5. Perzentil", "pl-PL": "5. percentyl", "nl-NL": "5e percentiel", "ko-KR": "5번째 백분위수", "pt-BR": "5º percentil", "fr-FR": "5e centile", "ja-JP": "5 番目のパーセンタイル", "ru-RU": "5-й процентиль" } }, "properties.boxplot.calculationMode.fractiles.elements.firstWhisker.first": { id: "properties.boxplot.calculationMode.fractiles.elements.firstWhisker.first", locale: { "en-US": "1st percentile", "zh-TW": "第 1 個百分位數", "zh-CN": "第 1 个百分位", "tr-TR": "1. yüzdebirlik", "sv-SE": "1:e percentilen", "it-IT": "1° percentile", "es-ES": "1er percentil", "de-DE": "1. Perzentil", "pl-PL": "1. percentyl", "nl-NL": "1e percentiel", "ko-KR": "1번째 백분위수", "pt-BR": "1º percentil", "fr-FR": "1er centile", "ja-JP": "1 番目のパーセンタイル", "ru-RU": "1-й процентиль" } }, "properties.boxplot.calculationMode.fractiles.elements.firstWhisker.min": { id: "properties.boxplot.calculationMode.fractiles.elements.firstWhisker.min", locale: { "en-US": "Minimum", "zh-TW": "最小", "zh-CN": "最小值", "tr-TR": "En az", "sv-SE": "Min", "it-IT": "Minimo", "es-ES": "Mínimo", "de-DE": "Minimum", "pl-PL": "Minimum", "nl-NL": "Minimum", "ko-KR": "최소", "pt-BR": "Mínimo", "fr-FR": "Minimale", "ja-JP": "最小値", "ru-RU": "Минимум" } }, "properties.boxplot.calculationMode.fractiles.elements.firstWhisker.tenth": { id: "properties.boxplot.calculationMode.fractiles.elements.firstWhisker.tenth", locale: { "en-US": "10th percentile", "zh-TW": "第 10 個百分位數", "zh-CN": "第 10 个百分位", "tr-TR": "10. yüzdebirlik", "sv-SE": "10:e percentilen", "it-IT": "10° percentile", "es-ES": "10º percentil", "de-DE": "10. Perzentil", "pl-PL": "10. percentyl", "nl-NL": "10e percentiel", "ko-KR": "10번째 백분위수", "pt-BR": "10º percentil", "fr-FR": "10e centile", "ja-JP": "10 番目のパーセンタイル", "ru-RU": "10-й процентиль" } }, "properties.boxplot.calculationMode.fractiles.elements.lastWhisker.max": { id: "properties.boxplot.calculationMode.fractiles.elements.lastWhisker.max", locale: { "en-US": "Maximum", "zh-TW": "最大", "zh-CN": "最大值", "tr-TR": "En fazla", "sv-SE": "Max", "it-IT": "Massimo", "es-ES": "Máximo", "de-DE": "Maximum", "pl-PL": "Maksimum", "nl-NL": "Maximum", "ko-KR": "최대", "pt-BR": "Máximo", "fr-FR": "Maximale", "ja-JP": "最大値", "ru-RU": "Максимум" } }, "properties.boxplot.calculationMode.fractiles.elements.lastWhisker.ninetieth": { id: "properties.boxplot.calculationMode.fractiles.elements.lastWhisker.ninetieth", locale: { "en-US": "90th percentile", "zh-TW": "第 90 個百分位數", "zh-CN": "第 90 个百分位", "tr-TR": "90. yüzdebirlik", "sv-SE": "90:e percentilen", "it-IT": "90° percentile", "es-ES": "90º percentil", "de-DE": "90. Perzentil", "pl-PL": "90. percentyl", "nl-NL": "90e percentiel", "ko-KR": "90번째 백분위수", "pt-BR": "90º percentil", "fr-FR": "90e centile", "ja-JP": "90 番目の百分位数", "ru-RU": "90-й процентиль" } }, "properties.boxplot.calculationMode.fractiles.elements.lastWhisker.ninetyfifth": { id: "properties.boxplot.calculationMode.fractiles.elements.lastWhisker.ninetyfifth", locale: { "en-US": "95th percentile", "zh-TW": "第 95 個百分位數", "zh-CN": "第 95 个百分位", "tr-TR": "95. yüzdebirlik", "sv-SE": "95:e percentilen", "it-IT": "95° percentile", "es-ES": "95º percentil", "de-DE": "95. Perzentil", "pl-PL": "95. percentyl", "nl-NL": "95e percentiel", "ko-KR": "95번째 백분위수", "pt-BR": "95º percentil", "fr-FR": "95e centile", "ja-JP": "95 番目の百分位数", "ru-RU": "95-й процентиль" } }, "properties.boxplot.calculationMode.fractiles.elements.lastWhisker.ninetynineth": { id: "properties.boxplot.calculationMode.fractiles.elements.lastWhisker.ninetynineth", locale: { "en-US": "99th percentile", "zh-TW": "第 99 個百分位數", "zh-CN": "第 99 个百分位", "tr-TR": "99. yüzdebirlik", "sv-SE": "99:e percentilen", "it-IT": "99° percentile", "es-ES": "99º percentil", "de-DE": "99. Perzentil", "pl-PL": "99. percentyl", "nl-NL": "99e percentiel", "ko-KR": "99번째 백분위수", "pt-BR": "99º percentil", "fr-FR": "99e centile", "ja-JP": "99 番目の百分位数", "ru-RU": "99-й процентиль" } } }; function autoRegister(translator) { if (translator && translator.get && translator.add) { const t = 'Object.Disclaimer.LimitedData'; const g = translator.get(t); // if translated string is different from its id // assume translations already exists for current locale if (g !== t) { return; } Object.keys(all).forEach(key => { translator.add(all[key]); }); } } function init$1(Picasso) { // Transparent component, placed on top of the data area and used to register event on Picasso.component('event-area', { mounted(element) { element.classList.add('event-area'); element.style.pointerEvents = 'auto'; element.style.zIndex = 1; }, render() { const nodes = []; return nodes; } }); } /** @jsxRuntime classic */ /** @jsx h */ function getStyle(dock, rect) { const style = { pointerEvents: 'auto', display: 'flex', justifyContent: 'center', alignItems: 'center', color: '#7b7a78', fontStyle: 'italic', fontSize: '13px' }; switch (dock) { case 'left': style.width = `${rect.height}px`; style.transform = `rotate(-90deg) translate(-${rect.height}px, 0)`; style.transformOrigin = 'top left'; break; case 'right': style.width = `${rect.height}px`; style.transform = `rotate(90deg) translate(0, -${rect.width}px)`; style.transformOrigin = 'top left'; break; case 'center': style.width = `${rect.width}px`; style.height = `${rect.height}px`; style.color = '#595959'; style.fontStyle = 'normal'; style.fontSize = '1.2em'; style.textAlign = 'center'; break; // eslint-disable-next-line default-case-last default: case 'top': case 'bottom': style.justifyContent = 'flex-start'; style.alignItems = 'flex-start'; break; } return style; } var disclaimer = { renderer: 'dom', disableTriggers: true, preferredSize: function preferredSize() { return 22; }, // eslint-disable-next-line no-unused-vars render(h) { const { settings: { label, rtl }, layout: { dock } } = this.settings; const dir = (dock === 'top' || dock === 'bottom') && rtl ? 'rtl' : 'ltr'; const style = getStyle(dock, this.rect); const modifiedLabel = dock === 'center' ? label : `* ${label}`; const spanStyle = dock !== 'center' ? { overflow: 'hidden', whiteSpace: 'nowrap', textOverflow: 'ellipsis' } : {}; return h("div", { style: style, dir: dir }, h("span", { ref: this.alignToRef, style: spanStyle, title: modifiedLabel }, modifiedLabel)); } }; function setup(renderer) { const picasso = picassojs(); // default to use canvas renderer picasso.renderer.prio([renderer || 'canvas']); // TODO: investigate picasso warnings // if (DebugFlags.DEVELOPER) { // picasso.logger.level(picassojs.logger.LOG_LEVEL.WARN); // } picasso.use(PicassoQ); picasso.use(PicassoHammer(Hammer)); picasso.use(init$1); picasso.component('disclaimer', disclaimer); return picasso; } function useResize(chartInstance) { const rect = useRect(); const options = useOptions(); const constraints = useConstraints(); const [, error] = usePromise(async () => { if (!chartInstance) { return; } chartInstance.updateConstraints(constraints); chartInstance.options = options; await chartInstance.resize(); }, [rect.width, rect.height]); if (error) { throw error; } } function useEnvironment() { const app = useApp(); const appLayout = useAppLayout(); const deviceType = useDeviceType(); const options = useOptions(); const theme = useTheme(); const translator = useTranslator(); const environment = useMemo(() => ({ app, appLayout, deviceType, options, theme, translator }), // eslint-disable-next-line react-hooks/exhaustive-deps [app, appLayout, options.direction, options.freeResize, translator.language(), theme.name(), deviceType]); return environment; } const setupSnapshot = chartInstance => { onTakeSnapshot(layout => { if (!chartInstance) { return undefined; } return chartInstance.setSnapshotData(layout); }); // eslint-disable-next-line react-hooks/rules-of-hooks useImperativeHandle(() => ({ getViewState() { if (!chartInstance) { return undefined; } return chartInstance.getViewState(); } }), [chartInstance]); }; /** * Settings for subtotal * @name subtotalProperties * @type object * @property {boolean} enable=false Option to add a subtotal after a measure. * @property {string} label='Subtotal' Label of the subtotal added after a measure. */ /** * Extends `NxInlineMeasureDef`, see Engine API: `NxInlineMeasureDef`. * @name InlineMeasureDef * @type object * @extends NxInlineMeasureDef * @property {subtotalProperties} subtotal subtotal settings. * @property {'NORMAL'|'INVERSE'|'SUBTOTAL'} valueType='NORMAL' Measure operation. */ /** * Extends `NxMeasure`, see Engine API: `NxMeasure`. * @name MeasureProperties * @type object * @extends NxMeasure * @property {InlineMeasureDef} qDef */ /** * Field attributes structure. * @name FieldAttributes * @type object * @property {string} dec - Defines the decimal separator. * @property {string} Fmt - Defines the format pattern that applies to qText. * @property {number} nDec - Number of decimals. * @property {string} Thou - Defines the thousand separator (if any). * @property {string} Type - Type of the field. * @property {number} UseThou - Defines whether or not a thousands separator must be used. */ /** * Color information structure. Holds the actual color and index in palette. * @name paletteColor * @type object * @property {string} color - Color as hex string (mandatory if index: -1) * @property {number} index - Index in palette */ /** * Styling settings for reference line * @name refLineStyle * @type object * @property {number} [lineThickness=2] Set the thickness for this reference line. * @property {string} [lineType=''] Set the dash type for this reference line. */ /** * @name refLine * @type object * @property {boolean|ValueExpression} show=true Set to true to display this reference line. * @property {string} label Reference line label. * @property {boolean} [showLabel=true] Set to true to show the label of this reference line. * @property {boolean} [showValue=true] Set to true to show the value of this reference line. * @property {paletteColor} paletteColor * @property {refLineStyle} [style] - Styling settings for reference line * @property {boolean} [coloredBackground=false] Set to true to fill the label and/or value of this reference line with this color */ /** * @namespace properties * @entry */ const properties = { /** * Current version of this generic object definition. * @type {string} * @default */ // eslint-disable-next-line no-undef version: "1.0.6", /** * Extends `HyperCubeDef`, see Engine API: `HyperCubeDef`. * @extends {HyperCubeDef} */ qHyperCubeDef: { qDimensions: [], /** @type {MeasureProperties[]} */ qMeasures: [], qMode: 'S', qInitialDataFetch: [{ qWidth: 200, qHeight: 10 }], qSuppressMissing: true }, /** * Color settings. * Most color options for visualizations are set in the color object in the options. You activate custom coloring by setting `"auto": false` which turns off auto-coloring. * If `"auto": true`, no other properties need to be defined in the color object. * Note: Some of the color properties are depending on which theme is currently being used. * @type {object} */ color: { /** * Set to use automatic coloring. * When `"auto": true`, color settings are based on the visualization used and the number of dimensions * and measures, that is, the settings are not fixed, but are dependent on the data input. * @type {boolean} * @default */ auto: true, /** * Positive value color. * @type {object} */ positiveValue: { /** * paletteColor * @type {paletteColor} * @default { index: 6, color: null } */ paletteColor: { index: 6, color: null } }, /** * Negative value color. * @type {object} */ negativeValue: { /** * paletteColor * @type {paletteColor} * @default { index: -1, color: '#cc6677' } */ paletteColor: { index: -1, color: '#cc6677' } }, /** * Subtotal value color. * @type {object} */ subtotal: { /** * paletteColor * @type {paletteColor} * @default { index: -1, color: '#c3c3c3' } */ paletteColor: { index: -1, color: '#c3c3c3' } } }, /** * Data point. * @type {object} */ dataPoint: { /** * Show labels. * @type {boolean} * @default */ showLabels: true }, /** * Dimension axis settings. * @type {object} */ dimensionAxis: { /** * Axis docking position * @type {'near'|'far'} * @default "near" */ dock: 'near', /** * Label orientation * @type {'auto'|'horizontal'|'tilted'} */ label: 'auto', /** * Labels and title * @type {'labels'|'none'} * @default */ show: 'labels' }, /** * Grid lines settings. * @type {object} */ gridlines: { /** * Automatic grid line spacing. * @type {boolean} * @default */ auto: true, /** * Grid line spacing. Used only when auto is set to false. * @type {0|2|3} * @default */ spacing: 2 }, /** * Legend settings. * @type {object} */ legend: { /** * Sets the legend position. * @type {'auto'|'right'|'left'|'bottom'|'top'} * @default 'auto' */ dock: 'auto', /** * Set to show the legend. * @type {boolean} * @default */ show: true }, /** * Measure axis settings. * @type {object} */ measureAxis: { /** * Automatic max/min * @type {boolean} * @default */ autoMinMax: true, /** * Axis docking position * @type {'near'|'far'} * @default "near" */ dock: 'near', /** * Axis max value. `"autoMinMax"` must be set to false and `"minMax"` * must be set to `"max"` or `"minMax"` to use this property * @type {number|ValueExpression} * @default */ max: 10, /** * Axis min value. `"autoMinMax"` must be set to false and `"minMax"` * must be set to `"min"` or `"minMax"` to use this property * @type {number|ValueExpression} * @default */ min: 0, /** * Set custom max/min * @type {'min'|'max'|'minMax'} * @default "min" */ minMax: 'min', /** * Labels and title * @type {'labels'|'none'} * @default "labels" */ show: 'labels', /** * Axis scale * @type {number} * @default */ spacing: 1 }, qDef: { /** * see Engine API: `FieldAttributes`. * @type {FieldAttributes=} */ qNumFormat: {}, /** * When enabled, the number format to use can be selected from multiple predefined formats based on the desired type (number, date). * @type {boolean} * @default */ numFormatFromTemplate: true, /** * If true, the client formatting will be toggled off. * @type {boolean} * @default */ isCustomFormatted: false }, /** * Reference lines settings * @type {object} */ refLine: { /** * Array of measure based reference line definitions * @type {refLine[]} */ refLines: [] }, /** * Show title for the visualization. * @type {boolean=} * @default */ showTitles: true, /** * Visualization subtitle. * @type {(string|StringExpression)=} * @default */ subtitle: '', /** * Visualization title. * @type {(string|StringExpression)=} * @default */ title: '', /** * Visualization footnote. * @type {(string|StringExpression)=} * @default */ footnote: '' }; function data(env) { const { translator } = env; const dimensions = { min: 0, max: 0 }; const measures = { min: 1, max: 50, description() { return translator.get('Visualizations.Descriptions.Bars'); } }; return { path: '/qHyperCubeDef', dimensions, measures }; } function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } var conversion$1 = {exports: {}}; var hasRequiredConversion; function requireConversion() { if (hasRequiredConversion) return conversion$1.exports; hasRequiredConversion = 1; (function (module, exports$1) { !function (e, r) { module.exports = r(); }(self, () => (() => { var e = { 909: e => { var r = Object.prototype.hasOwnProperty, n = Object.prototype.toString, t = Object.defineProperty, i = Object.getOwnPropertyDescriptor, o = function (e) { return "function" == typeof Array.isArray ? Array.isArray(e) : "[object Array]" === n.call(e); }, a = function (e) { if (!e || "[object Object]" !== n.call(e)) return false; var t, i = r.call(e, "constructor"), o = e.constructor && e.constructor.prototype && r.call(e.constructor.prototype, "isPrototypeOf"); if (e.constructor && !i && !o) return false; for (t in e); return void 0 === t || r.call(e, t); }, s = function (e, r) { t && "__proto__" === r.name ? t(e, r.name, { enumerable: true, configurable: true, value: r.newValue, writable: true }) : e[r.name] = r.newValue; }, u = function (e, n) { if ("__proto__" === n) { if (!r.call(e, n)) return; if (i) return i(e, n).value; } return e[n]; }; e.exports = function e() { var r, n, t, i, l, c, p = arguments[0], f = 1, m = arguments.length, d = false; for ("boolean" == typeof p && (d = p, p = arguments[1] || {}, f = 2), (null == p || "object" != typeof p && "function" != typeof p) && (p = {}); f < m; ++f) if (null != (r = arguments[f])) for (n in r) t = u(p, n), p !== (i = u(r, n)) && (d && i && (a(i) || (l = o(i))) ? (l ? (l = false, c = t && o(t) ? t : []) : c = t && a(t) ? t : {}, s(p, { name: n, newValue: e(d, c, i) })) : void 0 !== i && s(p, { name: n, newValue: i })); return p; }; }, 8: (e, r) => { (() => { var e = { 229: e => { var r = Object.prototype.hasOwnProperty, n = Object.prototype.toString, t = Object.defineProperty, i = Object.getOwnPropertyDescriptor, o = function (e) { return "function" == typeof Array.isArray ? Array.isArray(e) : "[object Array]" === n.call(e); }, a = function (e) { if (!e || "[object Object]" !== n.call(e)) return false; var t, i = r.call(e, "constructor"), o = e.constructor && e.constructor.prototype && r.call(e.constructor.prototype, "isPrototypeOf"); if (e.constructor && !i && !o) return false; for (t in e); return void 0 === t || r.call(e, t); }, s = function (e, r) { t && "__proto__" === r.name ? t(e, r.name, { enumerable: true, configurable: true, value: r.newValue, writable: true }) : e[r.name] = r.newValue; }, u = function (e, n) { if ("__proto__" === n) { if (!r.call(e, n)) return; if (i) return i(e, n).value; } return e[n]; }; e.exports = function e() { var r, n, t, i, l, c, p = arguments[0], f = 1, m = arguments.length, d = false; for ("boolean" == typeof p && (d = p, p = arguments[1] || {}, f = 2), (null == p || "object" != typeof p && "function" != typeof p) && (p = {}); f < m; ++f) if (null != (r = arguments[f])) for (n in r) t = u(p, n), p !== (i = u(r, n)) && (d && i && (a(i) || (l = o(i))) ? (l ? (l = false, c = t && o(t) ? t : []) : c = t && a(t) ? t : {}, s(p, { name: n, newValue: e(d, c, i) })) : void 0 !== i && s(p, { name: n, newValue: i })); return p; }; } }, n = {}; function t(r) { var i = n[r]; if (void 0 !== i) return i.exports; var o = n[r] = { exports: {} }; return e[r](o, o.exports, t), o.exports; } t.n = e => { var r = e && e.__esModule ? () => e.default : () => e; return t.d(r, { a: r }), r; }, t.d = (e, r) => { for (var n in r) t.o(r, n) && !t.o(e, n) && Object.defineProperty(e, n, { enumerable: true, get: r[n] }); }, t.o = (e, r) => Object.prototype.hasOwnProperty.call(e, r), t.r = e => { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: true }); }; var i = {}; (() => { t.r(i), t.d(i, { default: () => Fe }); var e = t(229), r = t.n(e); const n = function (e, r, n) { if (!r) return false; var t, i = r.split("."), o = i[i.length - 1], a = e; for (t = 0; t < i.length - 1; ++t) void 0 === a[i[t]] && (a[i[t]] = Number.isNaN(+i[t + 1]) ? {} : []), a = a[i[t]]; if (void 0 !== n) { var s = a[o]; return a[o] = n, { updated: n, previous: s }; } return delete a[o], false; }, o = function (e, r, n) { var t, i = r.split("."), o = e; if (void 0 === o) return n; for (t = 0; t < i.length; ++t) { if (void 0 === o[i[t]]) return n; o = o[i[t]]; } return o; }, a = { EXPRESSIONS: { observed: "", trend: "STL_Trend", seasonal: "STL_Seasonal", residual: "STL_Residual" }, OPTIONS: [{ value: "observed", translation: "cao.trendDecomposition.parameters.decomposition.observed" }, { value: "trend", translation: "cao.trendDecomposition.parameters.decomposition.trend" }, { value: "seasonal", translation: "cao.trendDecomposition.parameters.decomposition.seasonal" }, { value: "residual", translation: "cao.trendDecomposition.parameters.decomposition.residual" }] }; var s = "".concat(" ", "(").concat(" "), u = "".concat(" ", ")").concat(" "); function l(e) { return s + e + u; } function c(e) { var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; if (e.qLibraryId) { var n = function (e, r) { if (!r) return null; var n, t; for (n = 0; n < r.length; n++) if ((t = r[n]).qInfo.qId === e) return t; return null; }(e.qLibraryId, r.dimensionList); return n && n.qData.info[0].qTags.indexOf("$numeric") > -1; } var t = function (e, r) { if (!r) return null; var n, t, i = function (e) { var r = e.trim(); "=" === r.charAt(0) && (r = (r = r.substring(1)).trim()); var n = r.length - 1; return "[" === r.charAt(0) && "]" === r.charAt(n) && (r = (r = r.substring(1, n)).trim()), r; }(e); for (n = 0; n < r.length; n++) { if ((t = r[n]).qName === i) return t; if (t.qDerivedFieldData) for (var o = 0; o < t.qDerivedFieldData.qDerivedFieldLists.length; ++o) for (var a = t.qDerivedFieldData.qDerivedFieldLists[o], s = 0; s < a.qFieldDefs.length; ++s) { var u = a.qFieldDefs[s]; if (u.qName === i) return u; } } return null; }(e.qDef.qFieldDefs[0], r.fieldList); return t && t.qTags.indexOf("$numeric") > -1; } function p(e) { return !(!e.fullAccumulation && !e.fullRange); } function f(e, r) { var n = e.crossAllDimensions; return 2 === r && n ? "RowNo(Total)" : "RowNo()"; } function m(e) { var r = function (e) { return e ? (e = function (e) { return e.replace(/\/\*[^]*?\*\//g, ""); }(e = function (e) { return e.replace(/\/\/(.*)$/gm, ""); }(e))).trim() : ""; }(e), n = r.trim(); return "=" === n.substring(0, 1) ? n.substring(1).trim() : n; } function d() { return "[$(=Replace(GetObjectField(".concat(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, "),']',']]'))]"); } function y(e, r) { var n = e.crossAllDimensions; return 2 === r && n ? "Above(Total " : "Above("; } function q(e) { return void 0 === e ? ")" : ", 0, ".concat(e, ")"); } function b(e) { return "Replace(Replace(".concat(e, ",'''',''''''),'$','$''&''')"); } function v(e, r) { return e ? "".concat(r, '={">=$(=Min(').concat(r, "))<=$(=Max(").concat(r, '))"}') : "".concat(r, '={"=Only({1}').concat(r, ")>='$(=").concat(b("MinString(".concat(r, ")")), ")' and Only({1}").concat(r, ")<='$(=").concat(b("MaxString(".concat(r, ")")), ")'\"}"); } function D(e) { var r = e.modifier, n = void 0 === r ? {} : r, t = e.dimensions, i = e.dimensionAndFieldList, o = e.funcComp, a = void 0 === o ? "Sum" : o, s = e.valueComp, u = void 0 === s ? "0" : s; if (!n.showExcludedValues) return ""; if (t && 1 === t.length) { var l = v(c(t[0], i), d(0)); return "".concat(a, "({1<").concat(l, ">}").concat(u, ")"); } if (t && 2 === t.length) { var p = c(t[0], i), f = c(t[1], i), m = d(0), y = d(1), q = v(p, m), b = v(f, y); return "".concat(a, "({1<").concat(q, ",").concat(b, ">}").concat(u, ")"); } return "".concat(a, "({1}").concat(u, ")"); } function g(e) { return "".concat(e, "("); } function h(e) { var r = e.properties, n = e.layout; return o(r, "qHyperCubeDef.qDimensions", o(n, "qHyperCube.qDimensionInfo", [])).length; } const x = { isFullRange: p, getNumDimensions: h, getExpressionWithExcludedComp: function (e) { var r = e.expression, n = e.modifier, t = e.dimensions, i = e.dimensionAndFieldList, o = e.treatMissingAsNull, a = l(m(r)); if (!n.showExcludedValues) return a; var s = D({ modifier: n, dimensions: t, dimensionAndFieldList: i }), u = o ? "" : ", 0"; if (t && 1 === t.length) { var c = d(0); return "If(Count(".concat(c, ") > 0, ").concat(a, " + ").concat(s).concat(u, ")"); } if (t && 2 === t.length) { var p = d(0), f = d(1); return "If(Count(".concat(p, ") * Count(").concat(f, ") > 0, ").concat(a, " + ").concat(s).concat(u, ")"); } return a; }, getRowNoComp: f, getNumStepComp: function (e, r) { if (!p(e)) { var n = e.steps; return "number" != typeof n || Number.isNaN(n) ? 6 : n; } return f(e, r); }, getAboveCompPrefix: y, getAboveCompSuffix: q, getAboveComp: function (e, r, n, t) { return y(e, r) + n + q(t); }, getFunctionPrefix: g, getFunctionSuffix: function () { return ")"; }, getRangeComp: function (e, r) { return g(e) + r + ")"; }, getAggrComp: function (e, r, n) { return "Aggr(".concat(e, ", ").concat(r, ", ").concat(n, ")"); }, getExcludedComp: D, needDimension: function (e) { var r = e.modifier, n = e.properties, t = e.layout, i = functio