Esempio n. 1
0
        public ColumnMetadata(string name, DType schema, DataFormat?dataFormat, string displayName, bool isReadOnly, bool isKey, bool isRequired,
                              ColumnCreationKind creationKind, ColumnVisibility visibility,
                              string titleColumnName, string subtitleColumnName, string thumbnailColumnName,
                              ColumnLookupMetadata?lookupMetadata, ColumnAttachmentMetadata?attachmentMetadata)
        {
            Contracts.AssertNonEmpty(name);
            Contracts.AssertValid(schema);
            Contracts.AssertOneOfValueTypeOrNull(dataFormat, DataTypeInfo.GetValidDataFormats(schema.Kind));
            Contracts.AssertNonEmpty(displayName);
            Contracts.AssertNonEmptyOrNull(titleColumnName);
            Contracts.AssertNonEmptyOrNull(subtitleColumnName);
            Contracts.AssertNonEmptyOrNull(thumbnailColumnName);
            Contracts.AssertValueOrNull(lookupMetadata);
            Contracts.AssertValueOrNull(attachmentMetadata);

            Name                = name;
            Type                = schema;
            DataFormat          = dataFormat;
            DisplayName         = displayName;
            IsReadOnly          = isReadOnly;
            IsKey               = isKey;
            IsRequired          = isRequired;
            _kind               = creationKind;
            _visibility         = visibility;
            TitleColumnName     = titleColumnName;
            SubtitleColumnName  = subtitleColumnName;
            ThumbnailColumnName = thumbnailColumnName;
            LookupMetadata      = lookupMetadata;
            AttachmentMetadata  = attachmentMetadata;

            if (dataFormat == PowerFx.Core.App.DataFormat.AllowedValues)
            {
                AllowedValues = AllowedValuesMetadata.CreateForValue(schema);
            }
        }
Esempio n. 2
0
        public ReportPageViewModel(IRegionManager regionManager, INepalHajjCommitteeRepository repository) : base(regionManager)
        {
            _repository = repository;

            Years = new List <int> {
                2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030
            };
            Genders = new List <string> {
                "Male", "Female"
            };
            FilterModel = new FilterModel {
                VisitYear = DateTime.Now.Year
            };
            ColumnVisibility = new ColumnVisibility();
        }
Esempio n. 3
0
        public static QueryOptions ParseOptions(IMVCGridDefinition grid, NameValueCollection queryString)
        {
            string qsKeyPage      = grid.QueryStringPrefix + QueryStringSuffix_Page;
            string qsKeySort      = grid.QueryStringPrefix + QueryStringSuffix_Sort;
            string qsKeyDirection = grid.QueryStringPrefix + QueryStringSuffix_SortDir;
            string qsKeyEngine    = grid.QueryStringPrefix + QueryStringSuffix_Engine;
            string qsKeyPageSize  = grid.QueryStringPrefix + QueryStringSuffix_ItemsPerPage;
            string qsColumns      = grid.QueryStringPrefix + QueryStringSuffix_Columns;

            var options = new QueryOptions();

            if (queryString[qsKeyEngine] != null)
            {
                string re = queryString[qsKeyEngine];
                options.RenderingEngineName = re;
            }

            if (!grid.Paging)
            {
                options.ItemsPerPage = null;
                options.PageIndex    = null;
            }
            else
            {
                options.ItemsPerPage = grid.ItemsPerPage;

                if (grid.AllowChangingPageSize)
                {
                    if (queryString[qsKeyPageSize] != null)
                    {
                        int pageSize;
                        if (Int32.TryParse(queryString[qsKeyPageSize], out pageSize))
                        {
                            options.ItemsPerPage = pageSize;
                        }
                    }

                    if (grid.MaxItemsPerPage.HasValue && grid.MaxItemsPerPage.Value < options.ItemsPerPage)
                    {
                        options.ItemsPerPage = grid.MaxItemsPerPage.Value;
                    }
                }

                if (options.ItemsPerPage <= 0)
                {
                    options.ItemsPerPage = 20;
                }

                options.PageIndex = 0;
                if (queryString[qsKeyPage] != null)
                {
                    int pageNum;
                    if (Int32.TryParse(queryString[qsKeyPage], out pageNum))
                    {
                        options.PageIndex = pageNum - 1;
                        if (options.PageIndex < 0)
                        {
                            options.PageIndex = 0;
                        }
                    }
                }
            }

            if (!grid.Filtering)
            {
                //options.Filters
            }
            else
            {
                var filterableColumns = grid.GetColumns().Where(p => p.EnableFiltering);

                foreach (var col in filterableColumns)
                {
                    string qsKey = grid.QueryStringPrefix + col.ColumnName;

                    if (queryString[qsKey] != null)
                    {
                        string filterValue = queryString[qsKey];

                        if (!String.IsNullOrWhiteSpace(filterValue))
                        {
                            options.Filters.Add(col.ColumnName, filterValue);
                        }
                    }
                }
            }

            if (!grid.Sorting)
            {
                options.SortColumnName = null;
                options.SortColumnData = null;
                options.SortDirection  = SortDirection.Unspecified;
            }
            else
            {
                options.SortColumnName = null;

                string sortColName = null;
                if (queryString[qsKeySort] != null)
                {
                    sortColName = queryString[qsKeySort];
                }

                if (String.IsNullOrWhiteSpace(sortColName))
                {
                    sortColName = grid.DefaultSortColumn;
                }

                string thisSortColName = sortColName.Trim().ToLower();

                // validate SortColumn
                var colDef = grid.GetColumns().SingleOrDefault(p => p.ColumnName.ToLower() == thisSortColName);


                if (colDef != null && !colDef.EnableSorting)
                {
                    colDef = null;
                }


                if (colDef != null)
                {
                    options.SortColumnName = colDef.ColumnName;
                    options.SortColumnData = colDef.SortColumnData;
                }


                options.SortDirection = grid.DefaultSortDirection;
                if (queryString[qsKeyDirection] != null)
                {
                    string sortDir = queryString[qsKeyDirection];
                    if (String.Compare(sortDir, "dsc", true) == 0)
                    {
                        options.SortDirection = SortDirection.Dsc;
                    }
                    else if (String.Compare(sortDir, "asc", true) == 0)
                    {
                        options.SortDirection = SortDirection.Asc;
                    }
                }
            }

            if (grid.AdditionalQueryOptionNames.Count > 0)
            {
                foreach (var aqon in grid.AdditionalQueryOptionNames)
                {
                    string qsKeyAQO = grid.QueryStringPrefix + aqon;
                    string val      = "";

                    if (queryString[qsKeyAQO] != null)
                    {
                        val = queryString[qsKeyAQO];
                    }

                    options.AdditionalQueryOptions.Add(aqon, val);
                }
            }

            if (grid.PageParameterNames.Count > 0)
            {
                foreach (var aqon in grid.PageParameterNames)
                {
                    string qsKeyAQO = QueryStringPrefix_PageParameter + grid.QueryStringPrefix + aqon;
                    string val      = "";

                    if (queryString[qsKeyAQO] != null)
                    {
                        val = queryString[qsKeyAQO];
                    }

                    options.PageParameters.Add(aqon, val);
                }
            }


            var gridColumns = grid.GetColumns();
            List <ColumnVisibility> requestedColumns = new List <ColumnVisibility>();

            if (queryString[qsColumns] == null)
            {
                foreach (var gridColumn in gridColumns)
                {
                    requestedColumns.Add(
                        new ColumnVisibility()
                    {
                        ColumnName = gridColumn.ColumnName,
                        Visible    = gridColumn.Visible
                    });
                }
            }
            else
            {
                string cols = queryString[qsColumns];

                string[] colParts = cols.Split(',', ';');

                foreach (var colPart in colParts)
                {
                    if (String.IsNullOrWhiteSpace(colPart))
                    {
                        continue;
                    }
                    string thisColPart = colPart.ToLower().Trim();

                    var gridColumn = gridColumns.SingleOrDefault(p => p.ColumnName.ToLower() == thisColPart);

                    if (gridColumn != null)
                    {
                        if (requestedColumns.SingleOrDefault(p => p.ColumnName == gridColumn.ColumnName) == null)
                        {
                            requestedColumns.Add(
                                new ColumnVisibility()
                            {
                                ColumnName = gridColumn.ColumnName,
                                Visible    = true
                            });
                        }
                    }
                }
            }

            foreach (var gridColumn in gridColumns)
            {
                var requestedCol = requestedColumns.SingleOrDefault(p => p.ColumnName == gridColumn.ColumnName);

                if (requestedCol == null)
                {
                    requestedCol = new ColumnVisibility()
                    {
                        ColumnName = gridColumn.ColumnName, Visible = false
                    };
                    requestedColumns.Add(requestedCol);
                }

                if (!requestedCol.Visible && gridColumn.Visible && !gridColumn.AllowChangeVisibility)
                {
                    requestedCol.Visible = true;
                }
            }
            options.ColumnVisibility.AddRange(requestedColumns);

            return(options);
        }
Esempio n. 4
0
 public ReportExportPageViewModel(IRegionManager regionManager) : base(regionManager)
 {
     _filePath        = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + @"\" + Constants.MainFolder + @"\printing.html";
     ColumnVisibility = new ColumnVisibility();
 }
        /// <summary>
        ///     Parses the options.
        /// </summary>
        /// <param name="grid">The grid.</param>
        /// <param name="httpRequest">The HTTP request.</param>
        /// <returns>QueryOptions.</returns>
        /// TODO Edit XML Comment Template for ParseOptions
        public static QueryOptions ParseOptions(
            IMvcGridDefinition grid,
            HttpRequest httpRequest)
        {
            var qsKeyPage = grid.QueryStringPrefix + QueryStringSuffixPage;
            var qsKeySort = grid.QueryStringPrefix + QueryStringSuffixSort;

            var qsKeyDirection = grid.QueryStringPrefix
                                 + QueryStringSuffixSortDir;

            var qsKeyEngine = grid.QueryStringPrefix + QueryStringSuffixEngine;

            var qsKeyPageSize = grid.QueryStringPrefix
                                + QueryStringSuffixItemsPerPage;

            var qsColumns = grid.QueryStringPrefix + QueryStringSuffixColumns;

            var options = new QueryOptions();

            if (httpRequest.QueryString[qsKeyEngine] != null)
            {
                var re = httpRequest.QueryString[qsKeyEngine];
                options.RenderingEngineName = re;
            }

            if (!grid.Paging)
            {
                options.ItemsPerPage = null;
                options.PageIndex    = null;
            }
            else
            {
                options.ItemsPerPage = grid.ItemsPerPage;

                if (grid.AllowChangingPageSize)
                {
                    if (httpRequest.QueryString[qsKeyPageSize] != null)
                    {
                        if (int.TryParse(
                                httpRequest.QueryString[qsKeyPageSize],
                                out int pageSize))
                        {
                            options.ItemsPerPage = pageSize;
                        }
                    }

                    if (grid.MaxItemsPerPage.HasValue &&
                        grid.MaxItemsPerPage.Value < options.ItemsPerPage)
                    {
                        options.ItemsPerPage = grid.MaxItemsPerPage.Value;
                    }
                }

                if (options.ItemsPerPage <= 0)
                {
                    options.ItemsPerPage = 20;
                }

                options.PageIndex = 0;
                if (httpRequest.QueryString[qsKeyPage] != null)
                {
                    if (int.TryParse(
                            httpRequest.QueryString[qsKeyPage],
                            out int pageNum))
                    {
                        options.PageIndex = pageNum - 1;
                        if (options.PageIndex < 0)
                        {
                            options.PageIndex = 0;
                        }
                    }
                }
            }

            if (grid.Filtering)
            {
                var filterableColumns =
                    grid.GetColumns().Where(p => p.EnableFiltering);

                foreach (var col in filterableColumns)
                {
                    var qsKey = grid.QueryStringPrefix + col.ColumnName;

                    if (httpRequest.QueryString[qsKey] == null)
                    {
                        continue;
                    }

                    var filterValue = httpRequest.QueryString[qsKey];

                    if (!string.IsNullOrWhiteSpace(filterValue))
                    {
                        options.Filters.Add(col.ColumnName, filterValue);
                    }
                }
            }

            if (!grid.Sorting)
            {
                options.SortColumnName = null;
                options.SortColumnData = null;
                options.SortDirection  = SortDirection.Unspecified;
            }
            else
            {
                options.SortColumnName = null;

                string sortColName = null;
                if (httpRequest.QueryString[qsKeySort] != null)
                {
                    sortColName = httpRequest.QueryString[qsKeySort];
                }

                if (string.IsNullOrWhiteSpace(sortColName))
                {
                    sortColName = grid.DefaultSortColumn;
                }

                var thisSortColName = sortColName.Trim().ToLower();

                var colDef = grid.GetColumns()
                             .SingleOrDefault(
                    p => p.ColumnName.ToLower() == thisSortColName);

                if (colDef != null &&
                    !colDef.EnableSorting)
                {
                    colDef = null;
                }

                if (colDef != null)
                {
                    options.SortColumnName = colDef.ColumnName;
                    options.SortColumnData = colDef.SortColumnData;
                }

                options.SortDirection = grid.DefaultSortDirection;

                if (httpRequest.QueryString[qsKeyDirection] != null)
                {
                    var sortDir = httpRequest.QueryString[qsKeyDirection];

                    if (sortDir.EqualsOrdinalIgnoreCase("dsc"))
                    {
                        options.SortDirection = SortDirection.Dsc;
                    }
                    else if (sortDir.EqualsOrdinalIgnoreCase("asc"))
                    {
                        options.SortDirection = SortDirection.Asc;
                    }
                }
            }

            if (grid.AdditionalQueryOptionNames.Count > 0)
            {
                foreach (var aqon in grid.AdditionalQueryOptionNames)
                {
                    var qsKeyAqo = grid.QueryStringPrefix + aqon;
                    var val      = "";

                    if (httpRequest.QueryString[qsKeyAqo] != null)
                    {
                        val = httpRequest.QueryString[qsKeyAqo];
                    }

                    options.AdditionalQueryOptions.Add(aqon, val);
                }
            }

            if (grid.PageParameterNames.Count > 0)
            {
                foreach (var aqon in grid.PageParameterNames)
                {
                    var qsKeyAqo = QueryStringPrefixPageParameter
                                   + grid.QueryStringPrefix
                                   + aqon;
                    var val = "";

                    if (httpRequest.QueryString[qsKeyAqo] != null)
                    {
                        val = httpRequest.QueryString[qsKeyAqo];
                    }

                    options.PageParameters.Add(aqon, val);
                }
            }


            var gridColumns      = grid.GetColumns().ToList();
            var requestedColumns = new List <ColumnVisibility>();

            if (httpRequest.QueryString[qsColumns] == null)
            {
                requestedColumns.AddRange(
                    gridColumns.Select(
                        gridColumn => new ColumnVisibility
                {
                    ColumnName = gridColumn.ColumnName,
                    Visible    = gridColumn.Visible
                }));
            }
            else
            {
                var cols     = httpRequest.QueryString[qsColumns];
                var colParts = cols.Split(',', ';');

                foreach (var colPart in colParts)
                {
                    if (string.IsNullOrWhiteSpace(colPart))
                    {
                        continue;
                    }

                    var thisColPart = colPart.ToLower().Trim();

                    var gridColumn = gridColumns.SingleOrDefault(
                        p => p.ColumnName.ToLower() == thisColPart);

                    if (gridColumn == null)
                    {
                        continue;
                    }

                    {
                        if (requestedColumns.SingleOrDefault(
                                p => p.ColumnName == gridColumn.ColumnName)
                            == null)
                        {
                            requestedColumns.Add(
                                new ColumnVisibility
                            {
                                ColumnName = gridColumn.ColumnName,
                                Visible    = true
                            });
                        }
                    }
                }
            }

            foreach (var gridColumn in gridColumns)
            {
                var requestedCol =
                    requestedColumns.SingleOrDefault(
                        p => p.ColumnName == gridColumn.ColumnName);

                if (requestedCol == null)
                {
                    requestedCol = new ColumnVisibility
                    {
                        ColumnName = gridColumn.ColumnName,
                        Visible    = false
                    };

                    requestedColumns.Add(requestedCol);
                }

                if (!requestedCol.Visible &&
                    gridColumn.Visible &&
                    !gridColumn.AllowChangeVisibility)
                {
                    requestedCol.Visible = true;
                }
            }

            options.ColumnVisibility.AddRange(requestedColumns);
            return(options);
        }
Esempio n. 6
0
 public ColumnVisibilityAttribute(ColumnVisibility visibility)
     : this(null, visibility)
 {
 }
Esempio n. 7
0
 public ColumnVisibilityAttribute(string contextName, ColumnVisibility visibility)
 {
     ContextName = contextName ?? string.Empty;
     Visibility  = visibility;
 }