Что лучший способ состоит в том, чтобы программно визуализировать дорожную карту в сети?

У нас есть список результатов в базе данных через многие проекты с точками данных:

  • Проект
  • Функция
  • Дата поставки

Я хотел выяснить лучший способ визуализировать это в сети в своего рода представлении дорожной карты временной шкалы. кто-либо может предложить какие-либо хорошие способы сделать это? Я

Идеально я хотел бы смочь нажать на объект, который может затем выполнить развертку в страницу деталей, что у нас есть нос каждое описание проекта и т.д.

5
задан Michael Easter 1 February 2010 в 18:37
поделиться

4 ответа

Оказалось, что я где-то поменялся широтой и долготой. Вот код, который я в итоге использовал:

// check for sane span values
if (currentRegion.span.latitudeDelta <= 0.0f || currentRegion.span.longitudeDelta <= 0.0f) {
    currentRegion.span.latitudeDelta = 1.0f;
    currentRegion.span.longitudeDelta = 1.0f;
}
// check for sane center values
if (currentRegion.center.latitude > 90.0f || currentRegion.center.latitude < -90.0f ||
    currentRegion.center.longitude > 180.0f || currentRegion.center.longitude < -180.0f
    ) {
    // Take me to Tokyo.
    currentRegion.center.latitude = 35.4f;
    currentRegion.center.longitude = 139.4f;
}
-121--4321037-

Чтобы проиллюстрировать, почему специализация шаблона функции важна, рассмотрим функцию шаблона std:: swap . По умолчанию std:: swap (x, y) по существу делает:

T temp = x;
x = y;
y = temp;

, но это может быть неэффективно, поскольку предполагает создание дополнительной копии x и может выполнять дополнительное копирование в присвоениях. Это особенно плохо, если x велик (например, если это std:: vector с множеством элементов). Кроме того, каждая из вышеперечисленных строк может завершиться сбоем и вызвать исключения, потенциально оставляя x и y в плохом, несогласованном состоянии.

Для решения этой проблемы многие классы предоставляют собственные методы swap (включая std:: vector ), которые вместо этого обменивают указатели на свои внутренние данные. Это более эффективно и может быть гарантировано никогда не потерпеть неудачу.

Но теперь у вас есть случай, когда вы можете использовать std:: swap (x, y) для некоторых типов, но вам нужно вызвать x.swap (y) для других типов. Это сбивает с толку, и это плохо для шаблонов, поскольку они не смогут поменять местами два объекта общим, согласованным способом.

Но std:: swap может быть специализированным для вызова x.swap (y) при вызове определенных типов. Это означает, что вы можете использовать std:: swap везде и (надеюсь) ожидать, что он будет хорошо себя вести.

-121--4244632-

Похоже, что вы находитесь после просмотра диаграммы Ганта, хотя если вы просто хотите отметить дату, то веха должна быть завершена, тогда сработает временная шкала.

API визуализации Google

Прежде всего я хотел бы ознакомиться с API визуализации Google . В частности, аннотированная визуализация временной шкалы . На самом деле это очень похоже на временную шкалу, используемую на финансовом сайте Google . При использовании этого ракурса каждый проект может представлять собой горизонтальную линию по всему ракурсу с соответствующими вехами, отмеченными для каждого проекта. Обратите внимание, что маркеры являются интерактивными. Так как это все Javascript, вы также можете иметь перекрестные элементы управления, так что щелкая что-то на временной шкале, может изменить другую визуализацию на той же странице, например.

Вы можете опробовать различные конфигурации всех доступных визуализаций с помощью Google Code Playground . Это должно предоставить простой способ проверить, соответствует ли это (или другое) вашим требованиям.

Я экспериментировал с кодовой игровой площадкой. Попробуйте использовать следующий код, если хотите. Его можно скопировать/вставить в редактор кода игровой площадки.

function drawVisualization() {
  var data = new google.visualization.DataTable();
  data.addColumn('date', 'Date');
  data.addColumn('number', 'Project');
  data.addColumn('string', 'title1');
  data.addColumn('string', 'text1');
  data.addColumn('number', 'Project');
  data.addColumn('string', 'title2');
  data.addColumn('string', 'text2');
  data.addRows(7);
  data.setValue(0, 0, new Date(2008, 1 ,1));
  data.setValue(0, 1, 1);
  data.setValue(0, 2, 'P1:MS1');
  data.setValue(0, 3, 'Project begins');
  data.setValue(1, 0, new Date(2008, 1 ,2));
  data.setValue(1, 1, 1);
  data.setValue(1, 4, 2);
  data.setValue(1, 5, 'P2:MS1');
  data.setValue(1, 6, 'Project begins');
  data.setValue(2, 0, new Date(2008, 1 ,3));
  data.setValue(2, 1, 1);
  data.setValue(2, 4, 2);
  data.setValue(3, 0, new Date(2008, 1 ,4));
  data.setValue(3, 1, 1);
  data.setValue(3, 4, 2);
  data.setValue(3, 5, 'P2:MS2');
  data.setValue(3, 6, 'Completed development');
  data.setValue(4, 0, new Date(2008, 1 ,5));
  data.setValue(4, 1, 1);
  data.setValue(4, 2, 'P1:MS2');
  data.setValue(4, 3, 'Completed testing');
  data.setValue(4, 4, 2);
  data.setValue(5, 0, new Date(2008, 1 ,6));
  data.setValue(5, 1, 1);
  data.setValue(5, 4, 2);
  data.setValue(6, 0, new Date(2008, 1 ,7));
  data.setValue(6, 4, 2);

  var annotatedtimeline = new google.visualization.AnnotatedTimeLine(
    document.getElementById('visualization'));
    annotatedtimeline.draw(data, {
                            'displayAnnotations': true,
                            'displayExactValues': true,
                            'displayRangeSelector' : false,
                            'displayZoomButtons': false,
                            'legendPosition': 'newRow',
                            'max': 3,
                            'min': 0,
                            'scaleType': 'allfixed',
                            'thickness': 2,
                           });
}

API Google Charts

Другой вариант - использовать API Google Charts для создания диаграммы Ганта. Это немного сложнее, так как у него нет визуализации для этого из коробки.Однако с помощью горизонтальной гистограммы можно будет вращать свою собственную. В этой статье рассматриваются шаги, необходимые для создания диаграммы гантта, которая выглядит примерно так:

Gantt chart using Google Charts API

Интересным пунктом является то, что приведенная выше диаграмма гантта динамически генерируется через API диаграмм с использованием URL. Попробуйте нажать на URL ниже:

http://chart.apis.google.com/chart?cht=p3&chd=t: 60,40 & chs = 250x100 & chl = Hello 'World

Ну я думаю, что это довольно круто.

FusionWidgets v3

В качестве последнего предложения можно посмотреть на FusionWidgets , который имеет очень мощные возможности визуализации. Все их виджеты основаны на флэш-памяти. Это указано последним, потому что его не opensource и не бесплатно. Я не использовал его лично, в отличие от двух выше, но примеры выглядят великолепно.

Надеюсь, эти предложения помогут.

7
ответ дан 18 December 2019 в 06:02
поделиться

Используйте временную шкалу веб-виджет. Он бесплатный и с открытым исходным кодом.

alt text http://img24.imageshack.us/img24/1838/captureky.png

Edit: вы можете поиграть с элементом управления с помощью Google Doc Spreedsheet, если вы еще не уверены в том, что хотите погрузиться http://spreadsheets.google.com/pub? key=pO3Ze62OAU2Ev1xfh3TWsWA

17
ответ дан 18 December 2019 в 06:02
поделиться

Вот некоторые инструменты, которые могут быть хороши для такого рода задач:

Flash

Javascript

2
ответ дан 18 December 2019 в 06:02
поделиться

Вы пробовали управлять Daypilot ? Есть бесплатная версия, можете попробовать.

1
ответ дан 18 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: