Knockout extensions for igDataChart
Implementing knockout extensions for igDataChart
HTML
<script src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js"></script>
<script src="http://cdn-na.infragistics.com/jquery/20122/latest/js/infragistics.loader.js"></script>
<div id="chart" data-bind="igDataChartDataSource: data"></div>
<div id="innerZoom"></div>
<ul data-bind="foreach: data">
<li>
label: <span data-bind="text: label"></span> value: <input type="text" data-bind="value: editValue"></input>
value2: <input type="text" data-bind="value: editValue2"></input>
</li>
</ul>
<input type="button" id="addItem" value="addItem"></input>
<input type="button" id="removeItem" value="removeItem"></input>
<input type="button" id="moveItem" value="moveItem"></input>
<input type="button" id="changeData" value="changeData"></input>
JavaScript
$.ig.loader({
scriptPath: "http://cdn-na.infragistics.com/jquery/20122/latest/js/",
cssPath: "http://cdn-na.infragistics.com/jquery/20122/latest/css/"
});
$.ig.loader("igDataChart.Category", function () {
var data, data2, vm, updateBindingHelper;
updateBindingHelper = function(element, targetName, type, data) {
var value = data,
valueUnwrapped = ko.utils.unwrapObservable(data),
currValue,
currProxy,
makeProxy,
proxies;
proxies = $(element).data("koDataChartProxies-" + targetName);
if (!proxies) {
proxies = {};
proxies.itemProxies = [];
proxies.arrayProxy = [];
proxies.cachedArray = [];
$(element).data("koDataChartProxies-" + targetName, proxies);
}
if (proxies.dataSourceInstance == value) {
return;
}
proxies.dataSourceInstance = value;
if (proxies.arrayHandler) {
proxies.arrayHandler.dispose();
proxies.beforeHandler.dispose();
}
makeProxy = function(item) {
var proxy = {}, key, newInstance;
proxy.instance = {};
proxy.instance.owner = proxy;
proxy.item = ko.computed(function() {
newInstance = ko.toJS(item);
for (key in newInstance) {
if (newInstance.hasOwnProperty(key)) {
proxy.instance[key] = newInstance[key];
}
}
return proxy.instance;
});
proxy.handler = null;
proxy.dispose = function() {
proxy.handler.dispose();
};
...