UNPKG

flexmonster

Version:

Pivot table component for web reporting. The most powerful JavaScript tool to visualize your business data.

548 lines (522 loc) 20.3 kB
/** * Flexmonster Pivot Table & Charts [https://www.flexmonster.com/] * September 2025 (v. 2.9.112) * Copyright 2025 Flexmonster All rights reserved * * Flexmonster Pivot Table & Charts is a part of Flexmonster Software that is distributed under the terms and conditions of Flexmonster Software License Agreement: * https://www.flexmonster.com/software-license-agreement/ * * By downloading, installing, and/or otherwise using Flexmonster Pivot Table & Charts, you accept and agree to be bound by and require each of your Representatives, * clients and/or end-users, as the case may be, to be bound by all the terms and conditions of * Flexmonster Software License Agreement: https://www.flexmonster.com/software-license-agreement/ * * Pricing for Commercial License Models can be found on Flexmonster pricing page: * https://www.flexmonster.com/pivot-table-editions-and-pricing/ */ (function () { var FlexmonsterFusioncharts = {}; window["FlexmonsterFusioncharts"] = FlexmonsterFusioncharts; FlexmonsterFusioncharts.getData = function (options, callbackHandler, updateHandler) { var type = options.type; var _options = { type: options.type } //define slice to select the data you would like to show (different from data that flexmonster instance is showing) //leave it undefined to get the data that flexmonster instance is showing var slice = options.slice; //in case FlexmonsterFusioncharts does not include the type of chart you need //or you need to preprocess the data in a different way //please use prepareDataFunction var _prepareDataFunction = options.prepareDataFunction; var _updateHandler; if (updateHandler != null) { _updateHandler = function (data) { if (_prepareDataFunction != undefined) { updateHandler(_prepareDataFunction(data, _options), data); } else { updateHandler(prepareData(data, _options.type), data); } }; } this.instance.getData({ slice: slice }, function (data) { if (_prepareDataFunction != undefined) { callbackHandler(_prepareDataFunction(data, _options), data); } else { callbackHandler(prepareData(data, _options.type), data); } }, _updateHandler); } FlexmonsterFusioncharts.getNumberFormat = function (fmt) { var format = {}; if (fmt != null) { var thousandsSeparator = (fmt["thousandsSeparator"] != undefined && fmt["thousandsSeparator"] != ""); if (thousandsSeparator) { format.thousandSeparator = fmt["thousandsSeparator"]; } var decimalSeparator = (fmt["decimalSeparator"] != undefined && fmt["decimalSeparator"] != ""); if (decimalSeparator) { format.decimalSeparator = fmt["decimalSeparator"]; } var decimalPlaces = (fmt["decimalPlaces"] != undefined && fmt["decimalPlaces"] != -1); if (decimalPlaces) { format.decimals = fmt["decimalPlaces"]; format.forceDecimals = "1"; } var currencySymbol = fmt["currencySymbol"] != undefined && fmt["currencySymbol"] != ""; if (currencySymbol) { if (fmt["positiveCurrencyFormat"] == "$1") { format.numberPrefix = fmt["currencySymbol"]; } else if (fmt["positiveCurrencyFormat"] == "1$") { format.numberSuffix = fmt["currencySymbol"]; } } } return format; } function prepareData(data, type) { switch (type) { case "column2d": case "column3d": case "line": case "area2d": case "bar2d": case "bar3d": case "pie2d": case "pie3d": case "doughnut2d": case "doughnut3d": case "pareto2d": case "pareto3d": case "spline": case "splinearea": return prepareSingleSeriesChart(data, type); case "mscolumn2d": case "mscolumn3d": case "mscolumn3dlinedy": case "msline": case "msbar2d": case "msbar3d": case "msarea": case "marimekko": case "stackedcolumn2d": case "stackedcolumn3d": case "stackedbar2d": case "stackedbar2d": case "stackedarea2d": case "msspline": case "mssplinearea": case "radar": return prepareMultiSeriesChart(data, type); case "maps/worldwithcountries": return prepareMap(data, type); default: return data; } } function prepareSingleSeriesChart(data, type) { var output = prepareChartInfo(data, type); output.data = []; for (var i = 0; i < data.data.length; i++) { var elem = {}; var record = data.data[i]; if (data.meta["rAmount"] > 0) { if (record["r0"] == undefined || record["r1"] != undefined || record["c0"] != undefined || record["v0"] == undefined) continue; elem["label"] = record["r0"].toString(); elem["value"] = record["v0"]; } else if (data.meta["cAmount"] > 0) { if (record["c0"] == undefined || record["c1"] != undefined || record["r0"] != undefined || record["v0"] == undefined) continue; elem["label"] = record["c0"].toString(); elem["value"] = record["v0"]; } else { if (record["v0"] == undefined) continue; elem["value"] = record["v0"]; } output.data.push(elem); } return output; } function prepareMultiSeriesChart(data, type) { var output = prepareChartInfo(data, type); output.categories = []; output.dataset = []; var categories = {}; var series = {}; for (var i = 0; i < data.data.length; i++) { var record = data.data[i]; if (data.meta["rAmount"] > 0 && data.meta["cAmount"] > 0) { if (record["r0"] == undefined || record["r1"] != undefined || record["v0"] == undefined) continue; if (categories[record["r0"]] == undefined) categories[record["r0"]] = { "label": record["r0"].toString() }; if (record["c0"] == undefined || record["c1"] != undefined) continue; if (series[record["c0"]] == undefined) series[record["c0"]] = []; series[record["c0"]].push({ "value": [record["v0"]] }); } else if (data.meta["rAmount"] > 0) { if (record["r0"] == undefined || record["r1"] != undefined || record["v0"] == undefined) continue; if (categories[record["r0"]] == undefined) categories[record["r0"]] = { "label": record["r0"].toString() }; if (series[""] == undefined) series[""] = []; series[""].push({ "value": [record["v0"]] }); } else if (data.meta["cAmount"] > 0) { if (record["c0"] == undefined || record["c1"] != undefined || record["v0"] == undefined) continue; if (categories[record["c0"]] == undefined) categories[record["c0"]] = { "label": record["c0"].toString() }; if (series[""] == undefined) series[""] = []; series[""].push({ "value": [record["v0"]] }); } } var cats = []; for (var category in categories) { cats.push(categories[category]); } output.categories.push({ "category": cats }); for (var seriesname in series) { output.dataset.push({ "seriesname": seriesname, "data": series[seriesname] }); } return output; } function prepareChartInfo(data, type) { var output = { chart: {} }; output.chart.caption = data.meta.caption; //number formatting var format = FlexmonsterFusioncharts.getNumberFormat(data.meta.formats[0]); for (var prop in format) { output.chart[prop] = format[prop]; } //for the 2nd y axis if (data.meta.formats.length > 1) { var format2 = FlexmonsterFusioncharts.getNumberFormat(data.meta.formats[1]); for (var prop in format2) { output.chart["s" + prop] = format2[prop]; } } switch (type) { case "pie2d": case "pie3d": case "doughnut2d": case "doughnut3d": case "radar": break; case "pareto2d": case "pareto3d": output.chart.pYAxisName = data.meta.v0Name; break; default: output.chart.xAxisName = (data.meta.r0Name != undefined) ? data.meta.r0Name : ((data.meta.c0Name != undefined) ? data.meta.c0Name : ""); output.chart.yAxisName = data.meta.v0Name; } return output; } function prepareMap(data, type) { var output = prepareMapInfo(data, type); output.data = []; var minValue; var maxValue; for (var i = 0; i < data.data.length; i++) { var record = data.data[i]; if (data.meta["rAmount"] > 0) { if (record["r0"] == undefined || record["r1"] != undefined || record["c0"] != undefined || record["v0"] == undefined) continue; output.data.push({ "id": toMapID(record["r0"]), "value": record["v0"] }); minValue = (minValue == undefined || record["v0"] < minValue) ? record["v0"] : minValue; maxValue = (maxValue == undefined || record["v0"] > maxValue) ? record["v0"] : maxValue; } else if (data.meta["cAmount"] > 0) { if (record["c0"] == undefined || record["c1"] != undefined || record["r0"] != undefined || record["v0"] == undefined) continue; output.data.push({ "id": toMapID(record["c0"]), "value": record["v0"] }); minValue = (minValue == undefined || record["v0"] < minValue) ? record["v0"] : minValue; maxValue = (maxValue == undefined || record["v0"] > maxValue) ? record["v0"] : maxValue; } } output.extradata = { "minValue": minValue, "maxValue": maxValue }; return output; } function prepareMapInfo(data, type) { var output = { chart: {} }; output.chart.caption = data.meta.caption; //number formatting var format = FlexmonsterFusioncharts.getNumberFormat(data.meta.formats[0]); for (var prop in format) { output.chart[prop] = format[prop]; } return output; } function toMapID(label) { var countries = { "Antigua and Barbuda": "01", "Bahamas": "02", "Barbados": "03", "Belize": "04", "Canada": "05", "Costa Rica": "06", "Cuba": "07", "Dominica": "08", "Dominican Republic": "09", "El Salvador": "10", "Grenada": "11", "Guatemala": "12", "Haiti": "13", "Honduras": "14", "Jamaica": "15", "Mexico": "16", "Nicaragua": "17", "Panama": "18", "St.Kitts & Nevis": "19", "St.Lucia": "20", "St.Vincent & the Grenadines": "21", "Trinidad & Tobago": "22", "United States": "23", "Greenland": "24", "Argentina": "25", "Bolivia": "26", "Brazil": "27", "Chile": "28", "Colombia": "29", "Ecuador": "30", "Falkland Islands": "31", "French Guiana": "32", "Guyana": "33", "Paraguay": "34", "Peru": "35", "Suriname": "36", "Uruguay": "37", "Venezuela": "38", "Algeria": "39", "Angola": "40", "Benin": "41", "Botswana": "42", "Burkina Faso": "43", "Burundi": "44", "Cameroon": "45", "Cape Verde": "46", "Central African Republic": "47", "Chad": "48", "Comoros": "49", "Cote d’ivoire": "50", "Democratic Republic of the Congo": "51", "Djibouti": "52", "Egypt": "53", "Equatorial Guinea": "54", "Eritrea": "55", "Ethiopia": "56", "Gabon": "57", "Ghana": "58", "Guinea": "59", "Guinea-Bissau": "60", "Kenya": "61", "Lesotho": "62", "Liberia": "63", "Libya": "64", "Madagascar": "65", "Malawi": "66", "Mali": "67", "Mauritania": "68", "Morocco": "69", "Mozambique": "70", "Namibia": "71", "Niger": "72", "Nigeria": "73", "Rwanda": "74", "Sao Tome and Principe": "75", "Senegal": "76", "Seychelles": "77", "Sierra Leone": "78", "Somalia": "79", "South Africa": "80", "Sudan": "81", "Swaziland": "82", "Tanzania": "83", "Togo": "84", "Tunisia": "85", "Uganda": "86", "Western Sahara": "87", "Zambia": "88", "Zimbabwe": "89", "Gambia": "90", "Congo": "91", "Mauritius": "92", "Afghanistan": "93", "Armenia": "94", "Azerbaijan": "95", "Bangladesh": "96", "Bhutan": "97", "Brunei": "98", "Burma (Myanmar)": "99", "Cambodia": "100", "China": "101", "East Timor": "102", "Georgia": "103", "India": "104", "Indonesia": "105", "Iran": "106", "Japan": "107", "Kazakhstan": "108", "Korea (north)": "109", "Korea (south)": "110", "Kyrgyzstan": "111", "Laos": "112", "Malaysia": "113", "Mongolia": "114", "Nepal": "115", "Pakistan": "116", "Philippines": "117", "Russia": "118", "Singapore": "119", "Sri Lanka": "120", "Tajikistan": "121", "Thailand": "122", "Turkmenistan": "123", "Uzbekistan": "124", "Vietnam": "125", "Taiwan": "126", "Hong Kong": "127", "Macau": "128", "Albania": "129", "Andorra": "130", "Austria": "131", "Belarus": "132", "Belgium": "133", "Bosnia and Herzegovina": "134", "Bulgaria": "135", "Croatia": "136", "Czech Republic": "137", "Denmark": "138", "Estonia": "139", "Finland": "140", "France": "141", "Germany": "142", "Greece": "143", "Hungary": "144", "Iceland": "145", "Ireland": "146", "Italy": "147", "Latvia": "148", "Liechtenstein": "149", "Lithuania": "150", "Luxembourg": "151", "Macedonia": "152", "Malta": "153", "Moldova": "154", "Monaco": "155", "Montenegro": "156", "Netherlands": "157", "Norway": "158", "Poland": "159", "Portugal": "160", "Romania": "161", "San Marino": "162", "Serbia": "163", "Slovakia": "164", "Slovenia": "165", "Spain": "166", "Sweden": "167", "Switzerland": "168", "Ukraine": "169", "United Kingdom": "170", "Vatican City": "171", "Cyprus": "172", "Turkey": "173", "Australia": "175", "Fiji": "176", "Kiribati": "177", "Marshall Islands": "178", "Micronesia": "179", "Nauru": "180", "New Zealand": "181", "Palau": "182", "Papua New Guinea": "183", "Samoa": "184", "Solomon Islands": "185", "Tonga": "186", "Tuvalu": "187", "Vanuatu": "188", "New Caledonia": "189", "Bahrain": "190", "Iraq": "191", "Israel": "192", "Jordan": "193", "Kuwait": "194", "Lebanon": "195", "Oman": "196", "Qatar": "197", "Saudi Arabia": "198", "Syria": "199", "United Arab Emirates": "200", "Yemen": "201", "Puerto Rico": "202", "Cayman Islands": "203", "South Sudan": "204", "Kosovo": "205", "Aruba": "206", "Anguilla": "207", "American Samoa": "208", "Bermuda": "209", "Christmas Island": "210", "Cocos (Keeling) Islands": "211", "Cook Islands": "212", "Faroe Islands": "213", "French Polynesia": "214", "Gaza Strip": "215", "Gibraltar": "216", "Guadeloupe": "217", "Guam": "218", "Guernsey": "219", "Jersey": "220", "Kingman Reef": "221", "Maldives": "222", "Isle of Man": "223", "Martinique": "224", "Mayotte": "225", "Montserrat": "226", "BES Islands": "227", "Curacao": "228", "Sint Maarten": "229", "Niue": "230", "Norfolk Island": "231", "Northern Mariana Islands": "232", "Pitcairn Islands": "233", "Reunion": "234", "Saint Helena": "235", "Saint Pierre and Miquelon": "236", "Turks and Caicos Islands": "237", "Virgin Islands (UK)": "238", "Virgin Islands (US)": "239", "West Bank": "240", "Wallis and Futuna": "241" }; if (countries[label] == undefined) { if (label == "Moldova Republic of") label = "Moldova"; if (label == "United Kingdom (Scotland)") label = "United Kingdom"; if (label == "Korea, Democratic People's Republic of") label = "Korea (north)"; if (label == "Russian Federation") label = "Russia"; } //if (countries[label] == undefined) console.log(">>>>", label); return (countries[label] != undefined) ? countries[label] : ""; } })();