Здесь я выбрал 3 фильтра 1 из каждого графика и вставил этот закодированный url в url param. но когда я нажимаю кнопку расшифровки url, она перерисовывает только средние фильтры диаграммы, но не оставшиеся один раз. Что мне делать? благодаряСохранение фильтров dc.js в URI и их восстановление
function encodeFunction()
{
var filters = [];
for (var i = 0; i < dc.chartRegistry.list().length; i++)
{
var chart = dc.chartRegistry.list()[i];
for (var j = 0; j < chart.filters().length; j++)
{
filters.push({ChartID: chart.chartID(), Filter: chart.filters()[j]});
}
}
var urlParam = encodeURIComponent(JSON.stringify(filters));
alert(urlParam);
}
function decodeFunction()
{
//encoded url here
var urlParam="%5B%7B%22ChartID%22%3A1%2C%22Filter%22%3A2012%7D%2C%7B%22ChartID%22%3A2%2C%22Filter%22%3A%5B1.0454545454545454%2C4.045454545454545%5D%7D%2C%7B%22ChartID%22%3A3%2C%22Filter%22%3A%22Mr%20B%22%7D%5D ";
var filterObjects = JSON.parse(decodeURIComponent(urlParam));
for (var i = 0; i< filterObjects.length; i++)
{
dc.chartRegistry.list()[filterObjects[i].ChartID-1].filter(filterObjects[i].Filter);
}
// dc.renderAll();
dc.redrawAll();
}
здесь скрипка: js fiddle link
Я не эксперт в dc.js, но вы можете получить больше людей, желающих ответить, если вы запустили свой код через http://jsbeautifier.org/ и предоставили только код относящихся к вашей проблеме. Если возникнет ошибка, возможно, будет полезно использовать stacktrace. Для меня это кажется смутной проблемой, и было бы намного лучше, если бы вы могли, по крайней мере, сузить, какова ваша проблема. –
Я согласен с @PatrickRoberts. Лучший/более вежливый способ задать такой вопрос - поставить свой код в jsFiddle, чтобы люди могли попробовать его. Затем опубликуйте только соответствующие части в своем вопросе SO. Если вы отредактируете, вернитесь к нулю. :-) Это интересная проблема кстати. Мы хотели бы иметь канонический способ хранения фильтров в URL-адресе. – Gordon
thank u @ Gordon.i vl try – sandeep