コード例 #1
0
        public void Setup()
        {
            this.element = new TableElementWithParam()
                           .WithLine($"{IDENTIFIER}{KEY}={VALUE}");

            this.element.Init();
        }
コード例 #2
0
        public void Setup()
        {
            this.element = new TableElementNormal()
                           .WithLine("20= ");

            this.element.Init();
        }
コード例 #3
0
 /// <summary>
 /// Join the current table element with a new one
 /// </summary>
 /// <param name="newTable">The table to append</param>
 public static void Join(this ITableElement currentTable, ITableElement newTable)
 {
     ValidateHeaders(currentTable, newTable);
     foreach (var row in newTable.GetRows())
     {
         currentTable.AddRow(row);
     }
 }
コード例 #4
0
        private static void ValidateHeaders(ITableElement currentTable, ITableElement newTable)
        {
            int count   = 0;
            var headers = currentTable.GetHeadersDict();

            foreach (string newTableHeader in newTable.GetHeadersString())
            {
                if (headers.ContainsKey(newTableHeader))
                {
                    count++;
                }
            }

            if (count != currentTable.Headers.Count)
            {
                throw new InvalidOperationException("The table have different headers");
            }
        }
コード例 #5
0
        /// <summary>
        /// Creates a new datatable object with the current table element
        /// </summary>
        /// <param name="rowCallback">A callback to get the desired rows</param>
        public static DataTable CreateDataTable(this ITableElement tableElement, Func <IEnumerable <IDictionary <string, TableCell> >, IEnumerable <IDictionary <string, TableCell> > > rowCallback)
        {
            DataTable tb = new DataTable();

            foreach (TableCell column in tableElement.Headers)
            {
                tb.Columns.Add(column.Text);
            }

            foreach (var row in rowCallback(tableElement.GetRows()))
            {
                DataRow newRow = tb.NewRow();
                foreach (TableCell column in tableElement.Headers)
                {
                    newRow[column.Text] = row[column.Text].Text;
                }

                tb.Rows.Add(newRow);
            }
            return(tb);
        }
コード例 #6
0
        /// <summary>
        /// Creates a new datatable object with the current table element
        /// </summary>
        /// <param name="cellCallback">A callback to set the desired value for each cell in the table element</param>
        /// <returns>A datatable that represents the table element</returns>
        public static DataTable CreateDataTable(this ITableElement tableElement, Func <TableCell, object> cellCallback)
        {
            DataTable tb = new DataTable();

            foreach (TableCell column in tableElement.Headers)
            {
                tb.Columns.Add(column.Text);
            }

            foreach (var row in tableElement.GetRows())
            {
                DataRow newRow = tb.NewRow();
                foreach (TableCell column in tableElement.Headers)
                {
                    newRow[column.Text] = cellCallback(row[column.Text]);
                }

                tb.Rows.Add(newRow);
            }
            return(tb);
        }
コード例 #7
0
        /// <summary>
        /// Creates a new datatable object with the current table element
        /// </summary>
        /// <returns>A datatable that represents the table element (by default all values of datatable are strings)</returns>
        public static DataTable CreateDataTable(this ITableElement tableElement)
        {
            DataTable tb = new DataTable();

            foreach (TableCell column in tableElement.Headers)
            {
                tb.Columns.Add(column.Text);
            }

            foreach (var row in tableElement.GetRows())
            {
                DataRow newRow = tb.NewRow();
                foreach (TableCell column in tableElement.Headers)
                {
                    newRow[column.Text] = row[column.Text].Text;
                }

                tb.Rows.Add(newRow);
            }
            return(tb);
        }
コード例 #8
0
ファイル: TableRowViewModel.cs プロジェクト: Definux/Emeraude
        /// <summary>
        /// Add cell to the row.
        /// </summary>
        /// <param name="order"></param>
        /// <param name="content"></param>
        /// <param name="tableElement"></param>
        public void AddCell(int order, object content, ITableElement tableElement)
        {
            TableCellViewModel tableCell = new TableCellViewModel(order, content, tableElement);

            this.cells.Add(tableCell);
        }
コード例 #9
0
        /// <summary>
        /// Map entities to <see cref="TableViewModel"/> by using the decorated properties of the view model entity implementation by <seealso cref="TableColumnAttribute"/>.
        /// </summary>
        /// <typeparam name="T">ViewModel entity implementation.</typeparam>
        /// <param name="entitiesResult"></param>
        /// <param name="actions"></param>
        /// <returns></returns>
        public static TableViewModel Map <T>(PaginatedList <T> entitiesResult, params TableRowActionViewModel[] actions)
        {
            Type           dtoType                    = typeof(T);
            TableViewModel tableViewModel             = new TableViewModel();
            var            properties                 = dtoType.GetProperties();
            List <TableColumnAttribute> dtoAttributes = new List <TableColumnAttribute>();

            foreach (var property in properties)
            {
                if (property.HasAttribute <TableColumnAttribute>())
                {
                    dtoAttributes.Add((TableColumnAttribute)property.GetCustomAttributes(typeof(TableColumnAttribute), false).FirstOrDefault());
                }
            }

            List <string> tableHeaders = dtoAttributes.OrderBy(x => x.Order).Select(x => x.Name).Distinct().ToList();

            tableHeaders.ForEach(x => { tableViewModel.Header.AddCell(x); });

            if (entitiesResult.ItemsCount > 0)
            {
                foreach (var entity in entitiesResult.Items)
                {
                    TableRowViewModel tableRow = new TableRowViewModel();
                    foreach (var property in properties)
                    {
                        if (property.GetCustomAttributes(typeof(EntityIdentifierAttribute), false).Length > 0)
                        {
                            tableRow.Identifier = property.GetValue(entity)?.ToString();
                        }

                        if (property.HasAttribute <TableColumnAttribute>())
                        {
                            TableColumnAttribute propertyAttribute = (TableColumnAttribute)property.GetCustomAttributes(typeof(TableColumnAttribute), false).FirstOrDefault();

                            ITableElement tableElementInstance = (ITableElement)Activator.CreateInstance(propertyAttribute.UIElementType);

                            tableRow.AddCell(
                                propertyAttribute.Order,
                                property.GetValue(entity),
                                tableElementInstance);
                        }
                    }

                    foreach (var action in actions)
                    {
                        List <string> parsedParameters = new List <string>();
                        foreach (var parameter in action.RawParameters)
                        {
                            if (parameter.StartsWith("[", StringComparison.OrdinalIgnoreCase) && parameter.EndsWith("]", StringComparison.OrdinalIgnoreCase))
                            {
                                string propertyName  = parameter.Substring(1, parameter.Length - 2);
                                string propertyValue = entity.GetType().GetProperty(propertyName)?.GetValue(entity).ToString();
                                parsedParameters.Add(propertyValue);
                            }
                            else
                            {
                                parsedParameters.Add(parameter);
                            }
                        }

                        tableRow.AddAction(action, parsedParameters);
                    }

                    tableViewModel.AddRow(tableRow);
                }
            }

            tableViewModel.SetPagination(entitiesResult.CurrentPage, entitiesResult.PagesCount);

            return(tableViewModel);
        }
コード例 #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TableCellViewModel"/> class.
 /// </summary>
 /// <param name="order"></param>
 /// <param name="content"></param>
 /// <param name="tableElement"></param>
 public TableCellViewModel(int order, object content, ITableElement tableElement)
 {
     this.Order                   = order;
     this.TableElement            = tableElement;
     this.TableElement.DataSource = content;
 }