private ListViewGroup GetGroup(ListView listView, ListViewItem item) { var path = (EntityMemberPath)item.Tag; if (path.Count == 1) { return(_entityGroup); } string groupName = HumanText.GetEntityMemberPath(new EntityMemberPath(path.Take(path.Count - 1))); var group = listView.Groups.Cast <ListViewGroup>().FirstOrDefault(p => p.Header == groupName); if (group != null) { return(group); } group = new ListViewGroup(groupName); int index = _reportFields.Groups.Count; for (int i = 1; i < _reportFields.Groups.Count; i++) { if (String.Compare(_reportFields.Groups[i].Header, group.Header, StringComparison.CurrentCultureIgnoreCase) > 0) { index = i; break; } } _reportFields.Groups.Insert(index, group); return(group); }
public override string ToString() { if (Transform == ReportFieldTransform.None) { return(HumanText.GetEntityMemberPath(Fields)); } return ((Transform == ReportFieldTransform.CountNumbers ? "Count" : Transform.ToString()) + " of " + HumanText.GetEntityMemberPath(Fields)); }
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(FileStream stream, List <JObject> results, ExportDefinition export) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } if (results == null) { throw new ArgumentNullException(nameof(results)); } if (export == null) { throw new ArgumentNullException(nameof(export)); } var workbook = new XSSFWorkbook(); var sheet = workbook.CreateSheet(PrettifyName(export.Entity.Name)); sheet.DefaultRowHeightInPoints = 15; var headerStyle = CreateHeaderStyle(workbook); var dateStyle = CreateDateStyle(workbook, false); var dateTimeStyle = CreateDateStyle(workbook, true); var wrapStyle = workbook.CreateCellStyle(); wrapStyle.WrapText = true; // Create the headers. var row = sheet.CreateRow(0); for (int i = 0; i < export.Fields.Count; i++) { AddHeader(row, i, HumanText.GetEntityMemberPath(export.Fields[i]), export.Fields[i].Tail.Comments, headerStyle); } int rowOffset = 0; bool haveAutosized = false; foreach (var result in results) { row = sheet.CreateRow(++rowOffset); for (int i = 0; i < export.Fields.Count; i++) { var field = export.Fields[i]; ICellStyle cellStyle = null; switch (((EntityTypedField)field.Tail).DataType) { case EntityDataType.Date: cellStyle = dateStyle; break; case EntityDataType.DateTime: case EntityDataType.DateTimeTz: cellStyle = dateTimeStyle; break; } AddCell(row, i, GetValue(field, result), cellStyle); } // We only auto size the top 20 rows for performance reasons. if (rowOffset == 20) { haveAutosized = true; AutoSizeColumns(export.Fields.Count, sheet); } } if (!haveAutosized) { AutoSizeColumns(export.Fields.Count, sheet); } workbook.Write(stream); }