АРТЕФАКТЫ

VISIOLOGY

BI-система, популярная на Российском рынке
(позиция, аналог Pover BI)
АННА РОТЦЫ
IT
Хранить информацию в GitHab удобно и практично,
но мне ближе отображать её тут (она всегда под рукой)
Язык программирования: Java Script
Анна Ротцы
Системный аналитик BI-системы
вИДЖЕТЫ
Новые функции
СИНХРАНИЗАТОР ФИЛЬТРОВ
Фильтр работает один раз на несколько листов
Важно!!
Виджет – Синхронизатор фильтров - должен быть на всех интересующих листах,
а Виджет – Фильтр - носит одинаковое имя на разных листах

let filters = visApi().getWidgets().filter(item => item.widgetState.type==="Filter" || item.widgetState.type==="DateFilter").map(item => {return {id:item.widgetState.guid, name: item.widgetState.title.text, type:item.widgetState.type}});
filters.forEach(item => {
    if (localStorage.getItem('synchroFilter'+item.name)!==null) {
        if (item.type==="Filter") {
            visApi().setFilterSelectedValues(item.id,JSON.parse(localStorage.getItem('synchroFilter'+item.name)));
        } else {
            let selValues = JSON.parse(localStorage.getItem('synchroFilter'+item.name));
            visApi().setDateFilterSelectedValues(item.id,[new Date(selValues[0][0]),new Date(selValues[0][1])]);
        }
    }
    visApi().onSelectedValuesChangedListener({ guid:"changeForSave"+item.name, widgetGuid:item.id }, function(info) {
        localStorage.setItem('synchroFilter'+item.name,JSON.stringify(info.selectedValues));
    });
});
ЗАМЕНА ТЕКСТА
«НЕТ ДАННЫХ»
Замена текста «нет данных» при нехватке данных у виджета, удовлетворяющих фильтрации
Важно!!
Код можно вшить в любой виджет, или использовать как отдельный.

setInterval(function() {
$.each($(".va-widget-error"), function () {
var text = $(this).find("div").text();
if (text == "У виджета нет данных") {
$(this).find("div").text("Барин горд проделанной работой, и головы не летят");
}
});
}, 200);
СОРТИРОВКА
РАСЧЕТНОГО СТОЛБЦА
В начала кода и заменить индекс на свой. Ниже кейс для гистограммы с одним расчетным столбцом и скрытыми остальными на вкладке Дополнительно. В запросе два показателя и один атрибут в строках.
Важно!!
Фильтр отключается и всегда показывает значения от большего к меньшему.
w.series[0].data =  w.series[0].data.sort(function(a,b){
    return a.y > b.y? -1: 1 ;
});
w.xAxis.categories = w.series[0].data.map(item => item.name);

Highcharts.chart({
    chart: w.general,
    xAxis: w.xAxis,
    yAxis: w.yAxis,
    plotOptions: w.plotOptions,
    series: w.series,
    drilldown: w.drilldown,
    legend: w.legend,
    tooltip: w.tooltip
});
Made on
Tilda