Структура объектов FusionCharts XML для Delphi? - PullRequest
3 голосов
/ 22 марта 2012

Я работал над веб-сервером, который создает данные XML для использования в FusionCharts.После нескольких дней безуспешных попыток придумать стандартизированную объектную структуру в Delphi, чтобы обернуть производство XML для этих диаграмм, я решил посмотреть, не сделал ли это кто-то уже.

Что я пытаюсьдля этого нужно создать в Delphi объектную структуру, которая включает функциональность, необходимую для создания XML-данных для FusionCharts.Существует 42 возможных типа диаграмм, для каждой из которых требуется немного другая структура XML.Структура объекта, которую я начал строить, просто оборачивает возможность задавать общие свойства одной из таких диаграмм и генерировать данные XML на лету на основе этих свойств.Разумеется, он также состоит из обработки нескольких наборов данных, каждый из которых используется для отдельной серии в диаграмме.Есть также несколько странных диаграмм с комбинацией возможных наборов данных, в которых я заблудился, пытаясь реализовать эту структуру.

Я быстро понял, что это огромная задача, и хотел бы посмотреть,кто-то уже сделал такую ​​вещь.Я знаю, что есть библиотека VCL для отображения FusionCharts в приложении, но это не то, что мне нужно.Мне просто нужно создать XML-данные для последующей передачи через веб-сервер HTTP-клиенту.

Это уже сделано?Если нет, то какие-либо советы или указатели о том, как этого добиться?Я собирался сделать один единственный объект с именем TFusionChart и обернуть все внутри него (со свойством ChartType), но есть 42 возможных графика, и это будет огромный беспорядок.Я также могу создать 42 различных объекта, по одному для каждой диаграммы, но это будет иметь избыточный код.

PS - Я готов создать Баунти за этот вопрос, это довольно важно.

ОБНОВЛЕНИЕ

Просто, чтобы немного объяснить существующую мою структуру, у меня есть один базовый компонент под названием TFusionChart.Этот класс содержит все, что есть у всех графиков, включая названия категорий, заголовок, фон и т. Д. Ни один из реальных графиков не основан на этом.Из этого класса у меня тогда есть TFusionChart2D и TFusionChart3D.Тогда у меня есть еще 4, называемые TFusionChartSingle2D, TFusionChartMulti2D, TFusionChartSingle3D и TFusionChartMulti3D.Из этих 4 классов я начинаю создавать фактические компоненты диаграммы.Я планирую иметь компонент для каждой из доступных диаграмм.

Проблема, с которой я сталкиваюсь, заключается в путанице в том, как управлять данными, которые будут содержаться.Например, некоторые диаграммы могут иметь комбинацию из одной: несколько рядов в столбцах, ряд линий и данные в столбцах.Одна эта диаграмма могла бы иметь уникальный способ хранения своих данных, который трудно использовать с другими типами диаграмм, например, с простой столбчатой ​​диаграммой из одной серии.

Я опробовал возможности привязки данных XML какописано в ответе ниже, но это было слишком массивное решение, от которого я отказался.Опять же из-за того, что существует 42 вида графиков.Каждая диаграмма будет означать несколько тысяч строк кода.

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Я бы попытался создать один класс для каждого типа диаграммы, но использую базовые классы, чтобы объединить похожие диаграммы.Класс должен быть только «держателем данных» для данных диаграммы и настройки диаграммы и делегировать создание вывода XML в отдельный класс.Это позволяет легко переключаться между различными решениями для генерации вывода или подключать другие форматы вывода.

1 голос
/ 22 марта 2012

Я предлагаю вам использовать XML Binding для построения иерархии классов для генерации XML.

Для этой цели вы можете обратиться к следующим XSD-ресурсам related Fusioncharts :

Пожалуйста, не забудьте поделиться, еслиВы найдете другие обновленные ресурсы XSD.


Редактировать:

Использование привязки XML представляется слишком излишним, как указывает OP, я предлагаю альтернативное использованиеих:

  1. Удалите все ненужные функции, чтобы получить голый XSD , который по-прежнему совместим со спецификациями Fusioncharts и соответствует требованиям OP.
  2. Обрабатывайте голый XSDс соответствующим инструментом для получения соответствующих файлов XMI (например, Entreprise Architect )
  3. Загрузите Case Tool с файлами XMI и приступайте к реальной работе: Разработка легких классов для генерации XML Fusioncharts .
...