@nebula.js/sn-waterfall
Version:
Waterfall supernova
1,492 lines (1,463 loc) • 542 kB
JavaScript
/*
* @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