protected override void OnBeforeExpand(TreeViewCancelEventArgs e) { base.OnBeforeExpand(e); if (e.Node.Nodes.Count == 0 || e.Node.Nodes[0].Tag != null) { return; } e.Node.Nodes.Clear(); var entity = e.Node.Tag as EntitySchema; if (entity == null) { entity = _api.GetEntitySchema(((EntityForeign)e.Node.Tag).LinkTable); } foreach (var foreign in entity.Members.OfType <EntityForeign>().OrderBy(HumanText.GetMemberName)) { var node = new TreeNode(HumanText.GetMemberName(foreign)); var linkTable = _api.GetEntitySchema(foreign.LinkTable); node.Tag = foreign; if (linkTable.Members.Any(p => p is EntityForeign)) { node.Nodes.Add(new TreeNode()); } e.Node.Nodes.Add(node); } }
private void BuildFields(TreeNodeCollection nodes, EntitySchema entity) { nodes.Clear(); foreach (var member in entity.Members.OrderBy(HumanText.GetMemberName)) { var node = new TreeNode { Text = HumanText.GetMemberName(member), Tag = member }; switch (member.Type) { case EntityMemberType.Id: case EntityMemberType.Field: case EntityMemberType.Calculated: break; case EntityMemberType.Foreign: node.Nodes.Add("Dummy"); break; default: continue; } nodes.Add(node); } }
private void CreateHeaders(ResultSet resultSet) { var headerView = new SourceGrid.Cells.Views.ColumnHeader { ElementText = new DevAge.Drawing.VisualElements.TextRenderer() }; var toolTipController = new ToolTipText(); _grid.ColumnsCount = _entity.Members.Count; _grid.FixedRows = 1; _grid.Rows.Insert(0); _columnMap = ApiUtils.BuildColumnMap(resultSet); for (int i = 0; i < resultSet.FieldCount; i++) { var member = _entity.Members[resultSet.GetFieldName(i)]; _grid[0, _columnMap[i]] = new SourceGrid.Cells.ColumnHeader(HumanText.GetMemberName(member)) { View = headerView, ToolTipText = HumanText.GetMemberName(member), AutomaticSortEnabled = false }; _grid[0, _columnMap[i]].AddController(toolTipController); } }
private void AddReportField(EntityMemberPath path) { var item = new ListViewItem(HumanText.GetMemberName(path.Tail)) { Tag = path }; InsertSorted(_reportFields, item, true); }
private void SetSelectedEntity(EntityMemberPath path) { if (path.Count == 0) { _selectedEntity = _entity; _path.Text = HumanText.GetEntityName(_selectedEntity); } else { _selectedEntity = _api.GetEntitySchema(((EntityForeign)path.Tail).LinkTable); _path.Text = HumanText.GetEntityMemberPath(path); } _availableFields.BeginUpdate(); _availableFields.Items.Clear(); foreach (var member in _selectedEntity.Members.OrderBy(HumanText.GetMemberName)) { var memberPath = new EntityMemberPath(path, member); if ( (member is EntityField || member is EntityCalculatedField) && _reportFields.Items.Cast <ListViewItem>().All(p => !p.Tag.Equals(memberPath)) ) { _availableFields.Items.Add(new ListViewItem(HumanText.GetMemberName(member)) { Tag = memberPath }); } } _availableFields.EndUpdate(); UpdateEnabled(); if (_autoCompleteForm != null) { _autoCompleteForm.Dispose(); _autoCompleteForm = null; } }
public void Export(Stream stream, EntitySchema entity, RecordSet recordSet, ApiRowErrorsCollection errors) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } if (entity == null) { throw new ArgumentNullException(nameof(entity)); } if (recordSet == null) { throw new ArgumentNullException(nameof(recordSet)); } var workbook = new XSSFWorkbook(); var sheet = workbook.CreateSheet(PrettifyName(entity.Name)); sheet.DefaultRowHeightInPoints = 15; var errorColor = new XSSFColor(Color.Orange); var errorStyle = (XSSFCellStyle)workbook.CreateCellStyle(); errorStyle.FillForegroundColorColor = errorColor; errorStyle.FillPattern = FillPattern.SolidForeground; var headerStyle = CreateHeaderStyle(workbook); var dateStyle = CreateDateStyle(workbook, null, false); var dateErrorStyle = CreateDateStyle(workbook, errorColor, false); var dateTimeStyle = CreateDateStyle(workbook, null, true); var dateTimeErrorStyle = CreateDateStyle(workbook, errorColor, true); // Create the headers. var row = sheet.CreateRow(0); var fieldNames = recordSet[0].FieldNames.OrderBy(p => p.ToLower()).ToList(); for (int i = 0; i < fieldNames.Count; i++) { var member = entity.Members[fieldNames[i]]; AddHeader(row, i, HumanText.GetMemberName(member), member.Comments, headerStyle); } bool haveAutosized = false; Dictionary <int, ApiRowErrors> errorMap = null; if (errors != null) { errorMap = errors.ToDictionary(p => p.Row, p => p); } for (int i = 0; i < recordSet.Count; i++) { var record = recordSet[i]; row = sheet.CreateRow(i + 1); ApiRowErrors rowErrors = null; if (errorMap != null) { errorMap.TryGetValue(i, out rowErrors); } for (int j = 0; j < fieldNames.Count; j++) { ICellStyle cellStyle = null; if (rowErrors != null) { cellStyle = errorStyle; } var field = fieldNames[j]; switch (((EntityTypedField)entity.Members[field]).DataType) { case EntityDataType.Date: cellStyle = rowErrors == null ? dateStyle : dateErrorStyle; break; case EntityDataType.DateTime: case EntityDataType.DateTimeTz: cellStyle = rowErrors == null ? dateTimeStyle : dateTimeErrorStyle; break; } string fieldError = GetFieldError(rowErrors, field); object value = record.ContainsField(field) ? record[field] : null; AddCell(row, j, value, cellStyle, fieldError); } // We only auto size the top 20 rows for performance reasons. if (i == 20) { haveAutosized = true; AutoSizeColumns(fieldNames.Count, sheet); } } if (!haveAutosized) { AutoSizeColumns(fieldNames.Count, sheet); } workbook.Write(stream); }
public override string ToString() { return(HumanText.GetMemberName(Field)); }
public FilterControl(EntityPhysicalField field) { if (field == null) { throw new ArgumentNullException(nameof(field)); } Field = field; InitializeComponent(); _name.Text = HumanText.GetMemberName(Field); foreach (var control in new Control[] { _textBox, _date, _dateTime, _numericTextBox }) { control.Visible = false; } switch (field.DataType) { case EntityDataType.String: _control = _textBox; break; case EntityDataType.Date: _control = _date; break; case EntityDataType.DateTime: case EntityDataType.DateTimeTz: _control = _dateTime; break; case EntityDataType.Decimal: _control = _numericTextBox; break; case EntityDataType.Long: case EntityDataType.Int: _numericTextBox.NumberScale = 0; _control = _numericTextBox; break; case EntityDataType.Bool: break; default: throw new ArgumentOutOfRangeException(); } FilterType[] filterTypes; switch (field.Type) { case EntityMemberType.Foreign: filterTypes = ForeignFilterTypes; break; case EntityMemberType.Id: filterTypes = IdFilterTypes; break; default: switch (field.DataType) { case EntityDataType.String: filterTypes = TextFilterTypes; break; case EntityDataType.Date: case EntityDataType.DateTime: case EntityDataType.DateTimeTz: case EntityDataType.Decimal: case EntityDataType.Long: case EntityDataType.Int: filterTypes = OtherFilterTypes; break; case EntityDataType.Bool: filterTypes = BoolFilterTypes; break; default: throw new ArgumentOutOfRangeException(); } break; } foreach (var filterType in filterTypes) { var menuItem = new MenuItem { Text = GetFilterText(filterType), Tag = filterType }; menuItem.Click += FilterSelected; _contextMenu.MenuItems.Add(menuItem); } if (_control != null) { _control.Visible = true; } // Force an update. _filterType = FilterType.NotEqual; FilterType = Field.DataType == EntityDataType.Bool ? FilterType.IsTrue : FilterType.Equal; }