Отключение сортировки по весам в layout.PieChart Яндекс.Карт

Как можно отключить сортировку по весам в layout.PieChart?

Я попробовал присвоить properties.data данные в нужной мне последовательности, но слайсы всё равно отображаются от большего веса в меньшему.

Пробовал так (manager — экземпляр ObjectManager):

manager.clusters.events.add('add', function(event) {
    var target = event.get('child');
    target.properties.data = [
        { weight: 1, color: 'red' },
        { weight: 2, color: 'green' },
        { weight: 3, color: 'blue' },
    ];
});

Ожидая увидеть начиная сверху красный, зелёный, синий, получаю синий, зелёный, красный, что совсем не радует.


Ответы (2 шт):

Автор решения: YaCor'

Поскольку сортировка автоматическая и не опциональная в API, могу, как некий костыль, предложить разбивать все элементы на нужное количество единичных элементов нужного цвета с нулевой границей:

manager.clusters.events.add('add', function(event) {
    var target = event.get('child');
    target.properties.data = [
        {weight: 1, color: 'red'},
        {weight: 1, color: 'green'},
        {weight: 1, color: 'green'},
        {weight: 1, color: 'blue'},
        {weight: 1, color: 'blue'},
        {weight: 1, color: 'blue'}
    ];
});

Так диаграмма должна отображать элементы в порядке добавления.

→ Ссылка
Автор решения: Sergey Soltanov

Самое простое решение - переписать прототип Array.sort:

const originalSort = Array.prototype.sort;
Array.prototype.sort = function(...arguments) {
  if(this[0]?.weight && this[0]?.color)
        return this;
    return originalSort.call(this, ...arguments);
};

Если необходимо выборочно отключать сортировку, то при формировании data для pieChart можно добавить уникальный элемент и проверять его наличие:

    const originalSort = Array.prototype.sort;
    Array.prototype.sort = function(...arguments) {
      if(this[0]?.pieChartNoSort)
            return this;
        return originalSort.call(this, ...arguments);
    };

    //Data for pieChart
    var data=[
      {weight:1, color:'green',pieChartNoSort:1},
      {weight:1, color:'red'},
    ];

→ Ссылка