コード例 #1
0
        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);
        }
コード例 #2
0
        public override string ToString()
        {
            if (Transform == ReportFieldTransform.None)
            {
                return(HumanText.GetEntityMemberPath(Fields));
            }

            return
                ((Transform == ReportFieldTransform.CountNumbers ? "Count" : Transform.ToString()) +
                 " of " +
                 HumanText.GetEntityMemberPath(Fields));
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        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);
        }