Exemplo n.º 1
0
        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);
    }});
}};");
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 5
0
        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()));
        }
Exemplo n.º 6
0
 internal void LoadData(TabularJsonString source)
 {
     TabularData = source;
 }