private void BulkUpdate(IEnumerable <ArrayDescriptor> updates) { var spliter = new EntityArraySpliter { MaxCount = _WebView.GetMaxAcceptableArguments() - 1 }; var packer = new ArrayChildrenDescriptionPacker(); foreach (var entityDescriptor in spliter.SplitParameters(updates)) { var arguments = GetUpdateParameters(entityDescriptor, packer); BulkArraysUpdater.ExecuteFunctionNoResult(_WebView, null, arguments); } }
private IJavascriptObject[] GetUpdateParameters(List <ArrayDescriptor> updates, ArrayChildrenDescriptionPacker packer) { var sizes = packer.Pack(updates); var res = new IJavascriptObject[updates.Select(up => up.OrdenedChildren.Count + 1).Sum() + 1]; res[0] = _WebView.Factory.CreateString(sizes); var count = 1; foreach (var father in updates) { res[count++] = father.Father.JsValue; foreach (var attribute in father.OrdenedChildren) { res[count++] = attribute.JsValue; } } return(res); }