Ejemplo n.º 1
0
 public GridColumnCollection(IColumnBuilder <T> columnBuilder, IGridSortSettings sortSettings)
 {
     _columnBuilder = columnBuilder;
     _sortSettings  = sortSettings;
 }
Ejemplo n.º 2
0
 protected override void VisitColumn(IColumnBuilder expression)
 {
     base.VisitColumn(expression);
     this.VisitAlias(expression.Alias);
 }
Ejemplo n.º 3
0
 public bool Equals(IColumnBuilder left, IColumnBuilder right)
 {
     return((ColumnBuilder)left == (ColumnBuilder)right);
 }
Ejemplo n.º 4
0
 public static Func <IColumnBuilder, bool> Equals(IColumnBuilder column)
 {
     return(other => ColumnBuilder.Equals(column, other));
 }
Ejemplo n.º 5
0
 public SGrid(IEnumerable <T> items, IQueryCollection query, bool renderOnlyRows,
              string pagerViewName = GridPager.DefaultPagerViewName, IColumnBuilder <T> columnBuilder = null)
     : this(items, QueryDictionary <StringValues> .Convert(query), renderOnlyRows, pagerViewName, columnBuilder)
 {
 }
Ejemplo n.º 6
0
 public SGrid(IEnumerable <T> items, IQueryCollection query, IColumnBuilder <T> columnBuilder = null)
     : this(items, QueryDictionary <StringValues> .Convert(query), columnBuilder)
 {
 }
Ejemplo n.º 7
0
 public GridColumnCollection(IGrid grid, IColumnBuilder <T> columnBuilder, IGridSortSettings sortSettings)
 {
     _grid          = grid;
     _columnBuilder = columnBuilder;
     SortSettings   = sortSettings;
 }
Ejemplo n.º 8
0
        private CGrid(HttpClient httpClient, string url,
                      Func <QueryDictionary <StringValues>, ItemsDTO <T> > dataService,
                      Func <QueryDictionary <StringValues>, Task <ItemsDTO <T> > > dataServiceAsync,
                      IQueryDictionary <StringValues> query, bool renderOnlyRows,
                      Action <IGridColumnCollection <T> > columns = null, CultureInfo cultureInfo = null,
                      IColumnBuilder <T> columnBuilder            = null)
        {
            _dataServiceAsync = dataServiceAsync;
            _dataService      = dataService;
            _selectedItems    = new List <object>();
            Items             = new List <T>(); //response.Items;

            Url         = url;
            _httpClient = httpClient;
            _query      = query as QueryDictionary <StringValues>;

            //set up sort settings:
            _settings = new QueryStringGridSettingsProvider(_query);
            Sanitizer = new Sanitizer();
            if (cultureInfo != null)
            {
                CultureInfo.CurrentCulture = cultureInfo;
            }
            EmptyGridText = Strings.DefaultGridEmptyText;
            Language      = Strings.Lang;

            _currentPagerODataProcessor  = new PagerGridODataProcessor <T>(this);
            _currentSortODataProcessor   = new SortGridODataProcessor <T>(this, _settings.SortSettings);
            _currentFilterODataProcessor = new FilterGridODataProcessor <T>(this, _settings.FilterSettings,
                                                                            _settings.SearchSettings);
            _currentSearchODataProcessor = new SearchGridODataProcessor <T>(this, _settings.SearchSettings);
            _currentExpandODataProcessor = new ExpandGridODataProcessor <T>(this);

            _annotations = new GridAnnotationsProvider();

            //Set up column collection:
            if (columnBuilder == null)
            {
                _columnBuilder = new DefaultColumnBuilder <T>(this, _annotations);
            }
            else
            {
                _columnBuilder = columnBuilder;
            }
            _columnsCollection = new GridColumnCollection <T>(this, _columnBuilder, _settings.SortSettings);
            ComponentOptions   = new GridOptions();

            ApplyGridSettings();

            Pager = new GridPager(query);

            ComponentOptions.RenderRowsOnly = renderOnlyRows;
            columns?.Invoke(Columns);

            Mode          = GridMode.Grid;
            CreateEnabled = false;
            ReadEnabled   = false;
            UpdateEnabled = false;
            DeleteEnabled = false;

            ButtonComponents = new QueryDictionary <(string Label, Nullable <MarkupString> Content, Type ComponentType,
                                                     IList <Action <object> > Actions, IList <Func <object, Task> > Functions, object Object)>();

            ButtonCrudComponents = new QueryDictionary <(string Label, Nullable <MarkupString> Content, Type ComponentType,
                                                         GridMode GridMode, Func <T, bool> ReadMode, Func <T, bool> UpdateMode, Func <T, bool> DeleteMode,
                                                         IList <Action <object> > Actions, IList <Func <object, Task> > Functions, object Object)>();
        }
Ejemplo n.º 9
0
 public CGrid(string url, IQueryDictionary <StringValues> query, bool renderOnlyRows,
              Action <IGridColumnCollection <T> > columns = null, CultureInfo cultureInfo = null,
              IColumnBuilder <T> columnBuilder            = null)
     : this(null, url, null, null, query, renderOnlyRows, columns, cultureInfo, columnBuilder)
 {
 }
Ejemplo n.º 10
0
 protected override void VisitColumn(IColumnBuilder expression)
 {
     base.VisitColumn(expression);
     this.VisitDirection(expression.Direction);
 }
Ejemplo n.º 11
0
        public static IColumn <TDatabase, TTable> Column <TDatabase, TTable, TColumn>(this IColumnBuilder <TDatabase, TTable> @this,
                                                                                      Expression <Func <TTable, TColumn> > column,
                                                                                      SqlType type,
                                                                                      bool nullable        = false,
                                                                                      int?maxLength        = null,
                                                                                      string name          = null,
                                                                                      TColumn defaultValue = default(TColumn),
                                                                                      bool identity        = false,
                                                                                      IDatabaseTypeConverter <TColumn> converter = null)
        {
            var builder = @this as InternalTableBuilder <TDatabase, TTable>;

            var property = ExpressionHelpers.ParsePropertySelector(column ?? throw ModelBuilderError.ArgumentNull(nameof(column)).AsException());

            {
                var priorColumn = builder.Columns.FirstOrDefault(c => c.Property.Name == property.Name);
                if (priorColumn != null)
                {
                    throw ModelBuilderError.ColumnRepeatedSelector(typeof(TTable).Name, property.Name, priorColumn.Name).AsException();
                }
            }

            var columnName = name ?? property.Name;

            if (builder.Columns.Any(t => t.Name == columnName))
            {
                throw ModelBuilderError.ColumnRepeatedName(builder.Name, columnName).AsException();
            }

            if (nullable && identity)
            {
                throw ModelBuilderError.ColumnIdentityNullable().AsException();
            }

            if (property.Type.GetTypeInfo().IsEnum)
            {
                if (!(type == SqlType.String || SqlTypeHelpers.IsIntegral(type)))
                {
                    throw ModelBuilderError.ColumnEnumNotStringOrIntegralType().AsException();
                }

                var values = Enum.GetValues(property.Type);

                if (type == SqlType.String)
                {
                    var maxValue = values.Cast <object>()
                                   .Select(e => e.ToString())
                                   .OrderByDescending(e => e.Length)
                                   .First();

                    if (maxLength != null && maxValue.Length > maxLength)
                    {
                        throw ModelBuilderError.ColumnEnumLongerThanMaxStringSize($"{property.Type.ToString()}.{maxValue}", (int)maxLength).AsException();
                    }
                }
                else
                {
                }
            }

            builder.Columns.Add(new ColumnModel(name: columnName,
                                                property: property,
                                                sqlType: type,
                                                isNullable: nullable,
                                                isIdentity: identity,
                                                defaultValue: defaultValue));

            return(builder);
        }