private static void GenerateFunctionCode(TabularJsonString data, StringBuilder code, string divId, string functionName) { var context = Settings.Context ?? "1.0.0"; code.AppendLine($@" let {functionName} = () => {{"); if (Settings.Uri != null) { var absoluteUri = Settings.Uri.AbsoluteUri.Replace(".js", string.Empty); var cacheBuster = Settings.CacheBuster ?? absoluteUri.GetHashCode().ToString("0"); code.AppendLine($@" (require.config({{ 'paths': {{ 'context': '{context}', 'nteractUri' : '{absoluteUri}', 'urlArgs': 'cacheBuster={cacheBuster}' }}}}) || require)(['nteractUri'], (nteract) => {{"); } else { code.AppendLine($@" configureRequireFromExtension('nteract','{context}')(['nteract/index'], (nteract) => {{"); } code.AppendLine($@" nteract.createDataExplorer({{ data: {data}, container: document.getElementById(""{divId}"") }}); }}, (error) => {{ console.log(error); }}); }};"); }
private static void GenerateCode(TabularJsonString data, StringBuilder code, string divId, string requireUri) { var functionName = $"renderDataExplorer_{divId}"; GenerateFunctionCode(data, code, divId, functionName); GenerateRequireLoader(code, functionName, requireUri); }
private static HtmlString RenderDataExplorer(this TabularJsonString data) { var divId = Guid.NewGuid().ToString("N"); var code = new StringBuilder(); code.AppendLine("<div style=\"background-color:white;\">"); code.AppendLine($"<div id=\"{divId}\" style=\"height: 100ch ;margin: 2px;\">"); code.AppendLine("</div>"); code.AppendLine(@"<script type=""text/javascript"">"); GenerateCode(data, code, divId, "https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js"); code.AppendLine(" </script>"); code.AppendLine("</div>"); return(new HtmlString(code.ToString())); }
public static TabularJsonString ToTabularJsonString(this IDataView source) { var fields = source.Schema.ToDictionary(column => column.Name, column => column.Type.RawType); var data = new JArray(); var cursor = source.GetRowCursor(source.Schema); while (cursor.MoveNext()) { var rowObj = new JObject(); foreach (var column in source.Schema) { var type = column.Type.RawType; var getGetterMethod = cursor.GetType() .GetMethod(nameof(cursor.GetGetter)) .MakeGenericMethod(type); var valueGetter = getGetterMethod.Invoke(cursor, new object[] { column }); object value = GetValue((dynamic)valueGetter); if (value is ReadOnlyMemory <char> ) { value = value.ToString(); } var fromObject = JToken.FromObject(value); rowObj.Add(column.Name, fromObject); } data.Add(rowObj); } var tabularData = TabularJsonString.Create(fields, data); return(tabularData); }
private static HtmlString RenderDataExplorer(this TabularJsonString data) { var divId = Guid.NewGuid().ToString("N"); var code = new StringBuilder(); code.AppendLine("<div>"); code.AppendLine($"<div id=\"{divId}\" style=\"height: 100ch ;margin: 2px;\">"); code.AppendLine("</div>"); code.AppendLine(@"<script type=""text/javascript""> getExtensionRequire('nteract','1.0.0')(['nteract/index'], (nteract) => {"); code.AppendLine($@" nteract.createDataExplorer({{ data: {data}, container: document.getElementById(""{divId}"") }}); }}, (error) => {{ console.log(error); }});"); code.AppendLine(" </script>"); code.AppendLine("</div>"); return(new HtmlString(code.ToString())); }
internal void LoadData(TabularJsonString source) { TabularData = source; }