public async Task <IGridData <string> > GetGridDataAsync(string expression, GridRange?gridRange, ISortOrder sortOrder = null) { await TaskUtilities.SwitchToBackgroundThread(); var rows = gridRange?.Rows.ToRString(); var columns = gridRange?.Columns.ToRString(); var rowSelector = (sortOrder != null && !sortOrder.IsEmpty) ? sortOrder.GetRowSelector() : ""; if (_gridData != null && _expression == expression && _rows == rows && _columns == columns && _rowSelector == rowSelector) { return(_gridData); } var expr = Invariant($"rtvs:::grid_data({expression}, {rows}, {columns}, {rowSelector})"); try { _gridData = await _session.EvaluateAsync <GridData>(expr, REvaluationKind.Normal); _expression = expression; _rows = rows; _columns = columns; _rowSelector = rowSelector; } catch (RException ex) { var message = Invariant($"Grid data evaluation failed:{Environment.NewLine}{ex.Message}"); VsAppShell.Current.Log().Write(LogVerbosity.Normal, MessageCategory.Error, message); } return(_gridData); }
public static async Task<IGridData<string>> GetGridDataAsync(IRSession rSession, string expression, GridRange? gridRange, ISortOrder sortOrder = null) { await TaskUtilities.SwitchToBackgroundThread(); string rows = gridRange?.Rows.ToRString(); string columns = gridRange?.Columns.ToRString(); string rowSelector = (sortOrder != null && !sortOrder.IsEmpty) ? sortOrder.GetRowSelector() : ""; string expr = Invariant($"rtvs:::grid_data({expression}, {rows}, {columns}, {rowSelector})"); try { return await rSession.EvaluateAsync<GridData>(expr, REvaluationKind.Normal); } catch (RException ex) { var message = Invariant($"Grid data evaluation failed:{Environment.NewLine}{ex.Message}"); await VsAppShell.Current.Services.Log.WriteAsync(LogVerbosity.Normal, MessageCategory.Error, message); return null; } }
public static async Task <IGridData <string> > GetGridDataAsync(IRSession rSession, string expression, GridRange?gridRange, ISortOrder sortOrder = null) { await TaskUtilities.SwitchToBackgroundThread(); string rows = gridRange?.Rows.ToRString(); string columns = gridRange?.Columns.ToRString(); string rowSelector = (sortOrder != null && !sortOrder.IsEmpty) ? sortOrder.GetRowSelector() : ""; string expr = Invariant($"rtvs:::grid_data({expression}, {rows}, {columns}, {rowSelector})"); try { return(await rSession.EvaluateAsync <GridData>(expr, REvaluationKind.Normal)); } catch (RException ex) { var message = Invariant($"Grid data evaluation failed:{Environment.NewLine}{ex.Message}"); VsAppShell.Current.Services.Log.Write(LogVerbosity.Normal, MessageCategory.Error, message); return(null); } }
public static async Task <IGridData <string> > GetGridDataAsync(IRSession rSession, string expression, GridRange?gridRange, ISortOrder sortOrder = null) { await TaskUtilities.SwitchToBackgroundThread(); string rows = gridRange?.Rows.ToRString(); string columns = gridRange?.Columns.ToRString(); string rowSelector = (sortOrder != null && !sortOrder.IsEmpty) ? sortOrder.GetRowSelector() : ""; string expr = Invariant($"rtvs:::grid_data({expression}, {rows}, {columns}, {rowSelector})"); using (var evaluator = await rSession.BeginEvaluationAsync()) { try { return(await evaluator.EvaluateAsync <GridData>(expr, REvaluationKind.Normal)); } catch (RException ex) { var message = Invariant($"Grid data evaluation failed:{Environment.NewLine}{ex.Message}"); GeneralLog.Write(message); return(null); } } }