Обзор
Панели мониторинга — это простой способ организовать и управлять несколькими диаграммами, использующими одни и те же базовые данные. Используя API, описанные на этой странице, вы можете освободить себя от необходимости связывать и координировать все диаграммы, являющиеся частью информационной панели.
Панели мониторинга определяются с помощью классов google.visualization.Dashboard
. Экземпляры Dashboard
получают DataTable
, содержащий данные для визуализации, а также рисуют и распределяют данные по всем диаграммам, которые являются частью информационной панели.
Элементы управления — это виджеты пользовательского интерфейса (такие как средства выбора категорий, ползунки диапазона, средства автозаполнения...), с которыми вы взаимодействуете, чтобы управлять данными, управляемыми информационной панелью и диаграммами, которые являются ее частью.
Элементы управления определяются с помощью классов google.visualization.ControlWrapper
. Вы можете добавить экземпляры ControlWrapper
на панель мониторинга, где они будут вести себя как трубы и клапаны в водопроводной системе. Они собирают вводимые пользователем данные и используют эту информацию, чтобы решить, какие данные, которыми управляет панель мониторинга, должны быть доступны диаграммам, которые являются ее частью.
Взгляните на следующий пример, где средство выбора категории и ползунок диапазона используются для управления данными, визуализируемыми в виде круговой диаграммы.
Примечание. Панель мониторинга является интерактивной. Попробуйте использовать элементы управления и наблюдайте за изменением графика в реальном времени.
Использование элементов управления и информационных панелей
Вот ключевые шаги по созданию информационной панели и встраиванию ее на вашу страницу. Ниже вы найдете фрагмент кода, демонстрирующий все эти шаги, а также подробную информацию о каждом шаге.
- Создайте HTML-скелет для вашей информационной панели . На вашей странице должно быть столько HTML-элементов, сколько необходимо для хранения каждого члена информационной панели. Сюда входит сама панель мониторинга, а также все элементы управления и диаграммы, входящие в ее состав. Обычно вы используете <div> для каждого из них.
- Загрузите свои библиотеки . Для панели мониторинга необходимо включить или загрузить на страницу только две библиотеки: Google AJAX API и пакет
controls
визуализацией Google. - Подготовьте данные . Вам нужно будет подготовить данные для визуализации; это означает либо указание данных самостоятельно в коде, либо запрос данных на удаленном сайте.
- Создайте экземпляр информационной панели . Создайте экземпляр своей информационной панели, вызвав ее конструктор и передав ссылку на элемент <div>, который будет ее содержать.
- Создайте столько экземпляров элементов управления и диаграмм, сколько вам нужно . Создайте экземпляры
google.visualization.ChartWrapper
иgoogle.visualization.ControlWrapper
для описания каждой диаграммы и элемента управления, которыми управляет панель мониторинга. - Установите зависимости . Вызовите
bind()
на своей информационной панели и передайте экземпляры элемента управления и диаграммы, чтобы информационная панель знала, чем управлять. Как только элемент управления и диаграмма связаны друг с другом, панель мониторинга обновляет диаграмму, чтобы она соответствовала ограничениям, которые элемент управления накладывает на данные. - Нарисуйте свою приборную панель . Вызовите
draw()
на своей информационной панели и передайте свои данные, чтобы отрисовать всю информационную панель на странице. - Программные изменения после жеребьевки . При желании после первоначального рисования вы можете программно управлять элементами управления, которые являются частью информационной панели, и в ответ на это панельная панель обновляет диаграммы.
Вот простой пример страницы, на которой создается простая панель мониторинга с ползунком диапазона, управляющим круговой диаграммой. Полученная панель мониторинга показана под фрагментом.
<html> <head> <!--Load the AJAX API--> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> // Load the Visualization API and the controls package. google.charts.load('current', {'packages':['corechart', 'controls']}); // Set a callback to run when the Google Visualization API is loaded. google.charts.setOnLoadCallback(drawDashboard); // Callback that creates and populates a data table, // instantiates a dashboard, a range slider and a pie chart, // passes in the data and draws it. function drawDashboard() { // Create our data table. var data = google.visualization.arrayToDataTable([ ['Name', 'Donuts eaten'], ['Michael' , 5], ['Elisa', 7], ['Robert', 3], ['John', 2], ['Jessica', 6], ['Aaron', 1], ['Margareth', 8] ]); // Create a dashboard. var dashboard = new google.visualization.Dashboard( document.getElementById('dashboard_div')); // Create a range slider, passing some options var donutRangeSlider = new google.visualization.ControlWrapper({ 'controlType': 'NumberRangeFilter', 'containerId': 'filter_div', 'options': { 'filterColumnLabel': 'Donuts eaten' } }); // Create a pie chart, passing some options var pieChart = new google.visualization.ChartWrapper({ 'chartType': 'PieChart', 'containerId': 'chart_div', 'options': { 'width': 300, 'height': 300, 'pieSliceText': 'value', 'legend': 'right' } }); // Establish dependencies, declaring that 'filter' drives 'pieChart', // so that the pie chart will only display entries that are let through // given the chosen slider range. dashboard.bind(donutRangeSlider, pieChart); // Draw the dashboard. dashboard.draw(data); } </script> </head> <body> <!--Div that will hold the dashboard--> <div id="dashboard_div"> <!--Divs that will hold each control and chart--> <div id="filter_div"></div> <div id="chart_div"></div> </div> </body> </html>
Вот панель мониторинга, которую создает этот код.
1. Создайте HTML-скелет для вашей панели управления.
Ваша страница должна иметь как можно больше HTML-элементов (обычно <div>), чтобы содержать как саму панель мониторинга, так и все ее элементы управления и диаграммы. При создании экземпляров панели мониторинга, элемента управления и диаграммы необходимо передать ссылку на их элемент, поэтому назначьте идентификатор каждому элементу HTML.
<!--Div that will hold the dashboard--> <div id="dashboard_div"> <!--Divs that will hold each control and chart--> <div id="filter_div"></div> <div id="chart_div"></div> </div>
Вы можете расположить каждый HTML-элемент так, как хотите, чтобы ваша панель выглядела.
2. Загрузите свои библиотеки
Для панели мониторинга необходимо включить или загрузить на страницу только две библиотеки: Google AJAX API и пакет controls
визуализацией Google. API (в частности, google.visualization.ChartWrapper
) автоматически определяет другие необходимые пакеты (например, gauge
если вы используете диаграмму датчиков) и загружает их на лету без вашего дальнейшего вмешательства.
Вы должны использовать google.charts.load()
для получения библиотеки управления.
<!--Load the AJAX API--> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> // Load the Visualization API and the controls package. // Packages for all the other charts you need will be loaded // automatically by the system. google.charts.load('current', {'packages':['corechart', 'controls']}); // Set a callback to run when the Google Visualization API is loaded. google.charts.setOnLoadCallback(drawDashboard); function drawDashboard() { // Everything is loaded. Assemble your dashboard... } </script>
3. Подготовьте свои данные
После загрузки API визуализации google.charts.setOnLoadCallback()
вызовет вашу функцию-обработчик, поэтому вы знаете, что все необходимые вспомогательные методы и классы будут готовы, и вы сможете начать подготовку данных.
Dashboards принимает данные в DataTable так же, как и диаграммы.
4. Создайте экземпляр информационной панели
После создания данных вы можете создать экземпляр объекта панели мониторинга. Конструктор панели мониторинга принимает один параметр: ссылку на элемент DOM, в котором будет отображаться панель мониторинга.
var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard_div'));
Панели мониторинга представлены как класс Javascript. После создания экземпляра панели мониторинга вы можете выполнить несколько дополнительных шагов, таких как добавление прослушивателей событий (например, для получения уведомлений, когда панель мониторинга будет «готова»). Панели мониторинга обрабатывают события так же, как и диаграммы, поэтому для получения дополнительной информации обратитесь к разделу «Обработка событий визуализации или правильное отображение ошибок» в разделе «Диаграммы».
5. Создайте экземпляры элементов управления и диаграммы
Определите необходимое количество экземпляров для каждого элемента управления и диаграммы, которые будут частью информационной панели. Используйте google.visualization.ChartWrapper
и google.visualization.ControlWrapper
для определения диаграмм и элементов управления соответственно.
// Create a range slider, passing some options var donutRangeSlider = new google.visualization.ControlWrapper({ 'controlType': 'NumberRangeFilter', 'containerId': 'filter_div', 'options': { 'filterColumnLabel': 'Donuts eaten' } }); // Create a pie chart, passing some options var pieChart = new google.visualization.ChartWrapper({ 'chartType': 'PieChart', 'containerId': 'chart_div', 'options': { 'width': 300, 'height': 300, 'pieSliceText': 'label' } });
При создании экземпляров ChartWrapper
и ControlWrapper
не указывайте ни параметр dataTable
, ни параметр dataSourceUrl
. Панель управления заботится о том, чтобы предоставить каждому из них соответствующие данные. Однако обязательно укажите необходимые параметры: chartType
containerId
для диаграмм, controlType
containerId
для элементов управления.
Несколько советов по настройке элементов управления и диаграмм:
- Вы должны присвоить всем элементам управления
filterColumnIndex
(илиfilterColumnLabel
), чтобы указать, с каким столбцом вашегоgoogle.visualization.DataTable
работает элемент управления (в приведенном выше примере элемент управления работает со столбцом с надписью Donuts eat ), Используйте параметр конфигурации
state
элементов управления, чтобы инициализировать их с явным состоянием при первом отрисовке. Например, используйте этот параметр, чтобы зафиксировать начальные положения ползунка элемента управления диапазоном.var donutRangeSlider = new google.visualization.ControlWrapper({ 'controlType': 'NumberRangeFilter', 'containerId': 'filter_div', 'options': { 'filterColumnLabel': 'Donuts eaten', 'minValue': 1, 'maxValue': 10 }, // Explicitly positions the thumbs at position 3 and 8, // out of the possible range of 1 to 10. 'state': {'lowValue': 3, 'highValue': 8} });
Все диаграммы, являющиеся частью информационной панели, используют одну и ту же базовую таблицу данных, которую вы подготовили на этапе подготовки данных . Однако для правильного отображения диаграмм часто требуется определенное расположение столбцов: например, для круговой диаграммы требуется строковый столбец для метки, за которым следует числовой столбец для значения.
Используйте параметр
view
при настройке каждого экземпляраChartWrapper
, чтобы объявить, какие столбцы относятся к диаграмме, как в следующем примере.var data = google.visualization.arrayToDataTable([ ['Name', 'Gender', 'Age', 'Donuts eaten'], ['Michael' , 'Male', 12, 5], ['Elisa', 'Female', 20, 7], ['Robert', 'Male', 7, 3], ['John', 'Male', 54, 2], ['Jessica', 'Female', 22, 6], ['Aaron', 'Male', 3, 1], ['Margareth', 'Female', 42, 8] ]); var pieChart = new google.visualization.ChartWrapper({ 'chartType': 'PieChart', 'containerId': 'chart_div', 'options': { 'width': 300, 'height': 300, 'title': 'Donuts eaten per person' }, // The pie chart will use the columns 'Name' and 'Donuts eaten' // out of all the available ones. 'view': {'columns': [0, 3]} }); // The rest of dashboard configuration follows // ...
6. Установите зависимости
После того как вы создали экземпляр панели мониторинга, а также всех элементов управления и диаграмм, которые будут ее частью, используйте метод bind()
, чтобы сообщить панели мониторинга о зависимостях, существующих между элементами управления и диаграммами.
Как только элемент управления и диаграмма связаны друг с другом, панель мониторинга обновляет диаграмму, чтобы она соответствовала ограничениям, которые элемент управления накладывает на данные. В примере информационной панели, которую вы создаете, ползунок диапазона и круговая диаграмма связаны вместе, поэтому при каждом взаимодействии с первым ползунок диапазона обновляется и отображает только те данные, которые соответствуют выбранному диапазону.
// 'pieChart' will update whenever you interact with 'donutRangeSlider' // to match the selected range. dashboard.bind(donutRangeSlider, pieChart);
Вы можете привязывать элементы управления и диаграммы во многих различных конфигурациях: «один к одному», «один ко многим», «многие к одному» и «многие ко многим». Всякий раз, когда к диаграмме привязано несколько элементов управления, панель мониторинга обновляет диаграмму, чтобы она соответствовала комбинированным ограничениям, налагаемым всеми связанными элементами управления. В то же время элемент управления может одновременно управлять несколькими диаграммами. Чтобы указать несколько привязок одновременно, передавайте в метод bind()
массивы, а не отдельные экземпляры. Вы также можете объединить несколько вызовов bind()
. Вот некоторые примеры.
// Many-to-one binding where 'ageSelector' and 'salarySelector' concurrently // participate in selecting which data 'ageVsSalaryScatterPlot' visualizes. dashboard.bind([agePicker, salaryPicker], ageVsSalaryScatterPlot); // One-to-many binding where 'ageSelector' drives two charts. dashboard.bind(agePicker, [ageVsSalaryScatterPlot, ageBarChart]); // bind() chaining where each control drives its own chart. dashboard.bind(agePicker, ageBarChart).bind(salaryRangePicker, salaryPieChart);
Для более продвинутого использования вы также можете привязать элементы управления к другим элементам управления, чтобы установить цепочки зависимостей. .
dashboard.bind(countryPicker, regionPicker).bind(regionPicker, cityPicker);
7. Нарисуйте свою панель управления
Вызовите метод draw()
в экземпляре панели мониторинга, чтобы отобразить всю панель мониторинга. Метод draw()
принимает только один параметр: DataTable
(или DataView
), который обеспечивает работу панели мониторинга.
Вы должны вызывать draw()
каждый раз, когда вы меняете состав информационной панели (например, добавляя к ней новые элементы управления или диаграммы) или изменяете общий DataTable
, который ее поддерживает.
Экземпляр информационной панели запускает событие ready
всякий раз, когда draw()
завершает рисование всех элементов управления и диаграмм, которые являются его частью. Событие error
генерируется, если какой-либо из управляемых элементов управления или диаграмма не отображается. Дополнительные сведения об обработке событий см. в разделе Обработка событий .
Примечание. Вам следует прослушать событие ready
, прежде чем пытаться изменить состав информационной панели или нарисовать ее заново.
8. Программные изменения после жеребьевки
Как только панель мониторинга завершит первоначальную draw()
она станет активной и будет автоматически реагировать на любые действия, которые вы выполняете над ней (например, изменение выбранного диапазона ползунка управления, который является частью панели управления).
Если вам необходимо программно изменить состояние информационной панели, вы можете сделать это, работая непосредственно с экземплярами ControlWrapper
и ChartWrapper
, которые являются ее частью. Эмпирическое правило заключается в том, чтобы выполнять любые необходимые изменения непосредственно в конкретном экземпляре ControlWrapper
(или ChartWrapper
): например, измените параметр или состояние элемента управления с помощью setOption()
и setState()
соответственно, а затем вызовите его метод draw()
. Затем панель мониторинга будет обновлена в соответствии с запрошенными изменениями.
Следующий пример демонстрирует такой случай.
<html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load('current', {'packages':['corechart', 'controls']}); google.charts.setOnLoadCallback(drawStuff); function drawStuff() { var dashboard = new google.visualization.Dashboard( document.getElementById('programmatic_dashboard_div')); // We omit "var" so that programmaticSlider is visible to changeRange. var programmaticSlider = new google.visualization.ControlWrapper({ 'controlType': 'NumberRangeFilter', 'containerId': 'programmatic_control_div', 'options': { 'filterColumnLabel': 'Donuts eaten', 'ui': {'labelStacking': 'vertical'} } }); var programmaticChart = new google.visualization.ChartWrapper({ 'chartType': 'PieChart', 'containerId': 'programmatic_chart_div', 'options': { 'width': 300, 'height': 300, 'legend': 'none', 'chartArea': {'left': 15, 'top': 15, 'right': 0, 'bottom': 0}, 'pieSliceText': 'value' } }); var data = google.visualization.arrayToDataTable([ ['Name', 'Donuts eaten'], ['Michael' , 5], ['Elisa', 7], ['Robert', 3], ['John', 2], ['Jessica', 6], ['Aaron', 1], ['Margareth', 8] ]); dashboard.bind(programmaticSlider, programmaticChart); dashboard.draw(data); changeRange = function() { programmaticSlider.setState({'lowValue': 2, 'highValue': 5}); programmaticSlider.draw(); }; changeOptions = function() { programmaticChart.setOption('is3D', true); programmaticChart.draw(); }; } </script> </head> <body> <div id="programmatic_dashboard_div" style="border: 1px solid #ccc"> <table class="columns"> <tr> <td> <div id="programmatic_control_div" style="padding-left: 2em; min-width: 250px"></div> <div> <button style="margin: 1em 1em 1em 2em" onclick="changeRange();"> Select range [2, 5] </button><br /> <button style="margin: 1em 1em 1em 2em" onclick="changeOptions();"> Make the pie chart 3D </button> </div> </td> <td> <div id="programmatic_chart_div"></div> </td> </tr> </table> </div> </body> </html>
Справочник по API
В этом разделе перечислены объекты, предоставляемые API элементов управления и информационных панелей, а также стандартные методы, предоставляемые всеми элементами управления.
Панель приборов
Представляет коллекцию взаимодействующих элементов управления и диаграмм, которые используют одни и те же базовые данные.
Конструктор
Dashboard(containerRef)
- контейнерСсылка
- Ссылка на допустимый элемент-контейнер на странице, который будет содержать содержимое информационной панели.
Методы
Панель мониторинга предоставляет следующие методы:
Метод | Тип возврата | Описание |
---|---|---|
bind( controls , charts ) | google.visualization.Панель мониторинга | Привязывает один или несколько элементов управления к одному или нескольким другим участникам информационной панели (диаграммам или другим элементам управления), так что все последние перерисовываются всякий раз, когда какой-либо из первых собирает программное или пользовательское взаимодействие, влияющее на данные, управляемые информационной панелью. Возвращает сам экземпляр информационной панели для объединения нескольких вызовов
|
draw( dataTable ) | Никто | Рисует приборную панель.
|
getSelection() | Массив объектов | Возвращает массив выбранных визуальных объектов диаграмм на информационной панели. Метод Примечание. Прослушиватели событий для выбранного события по-прежнему необходимо прикреплять к каждой диаграмме, которую вы хотите прослушивать. |
События
Объект Dashboard генерирует следующие события. Обратите внимание, что вы должны вызвать Dashboard.draw()
прежде чем будут созданы какие-либо события.
Имя | Описание | Характеристики |
---|---|---|
error | Запускается, когда возникает ошибка при попытке отобразить панель мониторинга. Возможно, один или несколько элементов управления и диаграмм, являющихся частью панели мониторинга, не удалось отобразить. | идентификатор, сообщение |
ready | Панель мониторинга завершена и готова принять изменения. Все элементы управления и диаграммы, являющиеся частью информационной панели, готовы к вызову внешних методов и взаимодействию с пользователем. Если вы хотите изменить панель мониторинга (или отображаемые на ней данные) после ее создания, вам следует настроить прослушиватель этого события перед вызовом метода Событие
| Никто |
ControlWrapper
Объект ControlWrapper — это оболочка JSON-представления настроенного экземпляра элемента управления. Класс предоставляет удобные методы для определения элемента управления информационной панели, его рисования и программного изменения его состояния.
Конструктор
ControlWrapper(opt_spec)
- opt_spec
- [ Необязательно ] — либо объект JSON, определяющий элемент управления, либо сериализованная строковая версия этого объекта. Поддерживаемые свойства объекта JSON показаны в следующей таблице. Если не указано, необходимо установить все соответствующие свойства, используя методы set... , предоставляемые ControlWrapper.
Свойство | Тип | Необходимый | По умолчанию | Описание |
---|---|---|---|---|
тип управления | Нить | Необходимый | никто | Имя класса элемента управления. Имя пакета google.visualization можно опустить для элементов управления Google. Примеры: CategoryFilter , NumberRangeFilter . |
идентификатор контейнера | Нить | Необходимый | никто | Идентификатор элемента DOM на вашей странице, на котором будет размещен элемент управления. |
параметры | Объект | Необязательный | никто | Объект, описывающий параметры элемента управления. Вы можете использовать либо литеральную нотацию JavaScript, либо предоставить дескриптор объекта. Пример: "options": {"filterColumnLabel": "Age", "minValue": 10, "maxValue": 80} |
состояние | Объект | Необязательный | никто | Объект, описывающий состояние элемента управления. Состояние собирает все переменные, на которые может повлиять пользователь, работающий с элементом управления. Например, состояние ползунка диапазона можно описать в терминах положений, которые занимают нижний и верхний ползунки ползунка. Вы можете использовать либо литеральную нотацию Javascript, либо предоставить дескриптор объекта. Пример: "state": {"lowValue": 20, "highValue": 50} |
Методы
ControlWrapper предоставляет следующие дополнительные методы:
Метод | Тип возврата | Описание |
---|---|---|
draw() | Никто | Рисует элемент управления. Обычно его рисованием занимается панель управления, на которой находится элемент управления. Вам следует вызвать |
toJSON() | Нить | Возвращает строковую версию JSON-представления элемента управления. |
clone() | ControlWrapper | Возвращает глубокую копию оболочки элемента управления. |
getControlType() | Нить | Имя класса элемента управления. Если это элемент управления Google, имя не будет уточняться с помощью google.visualization . Так, например, если бы это был элемент управления CategoryFilter, он вернул бы «CategoryFilter», а не «google.visualization.CategoryFilter». |
getControlName() | Нить | Возвращает имя элемента управления, назначенное setControlName() . |
getControl() | Ссылка на объект управления | Возвращает ссылку на элемент управления, созданный этим ControlWrapper. Это будет возвращать значение null до тех пор, пока вы не вызовете draw() для объекта ControlWrapper (или на панели управления, содержащей его), и не выдаст событие готовности. Возвращенный объект предоставляет только один метод: resetControl() , который сбрасывает состояние элемента управления на то, с которым он был инициализирован (например, сброс элемента формы HTML). |
getContainerId() | Нить | Идентификатор элемента-контейнера DOM элемента управления. |
getOption( key , opt_default_val ) | Любой тип | Возвращает указанное значение параметра управления
|
getOptions() | Объект | Возвращает объект параметров для этого элемента управления. |
getState() | Объект | Возвращает состояние управления. |
setControlType( type ) | Никто | Устанавливает тип управления. Передайте имя класса элемента управления для создания экземпляра. Если это элемент управления Google, не уточняйте его с помощью google.visualization . Так, например, для ползунка диапазона над числовым столбцом передайте «NumberRangeFilter». |
setControlName( name ) | Никто | Устанавливает произвольное имя для элемента управления. Это нигде не отображается на элементе управления, но предназначено только для справки. |
setContainerId( id ) | Никто | Устанавливает идентификатор содержащего DOM-элемента для элемента управления. |
setOption( key , value ) | Никто | Устанавливает одно значение параметра управления, где ключ — это имя параметра, а значение — это значение. Чтобы отключить параметр, передайте в качестве значения значение null. Обратите внимание, что ключом может быть полное имя, например 'vAxis.title' . |
setOptions( options_obj ) | Никто | Устанавливает полный объект параметров для элемента управления. |
setState(state_obj) | Никто | Устанавливает состояние управления. Состояние собирает все переменные, на которые может повлиять пользователь, работающий с элементом управления. Например, состояние ползунка диапазона можно описать в терминах положений, которые занимают нижний и верхний ползунки ползунка. |
События
Объект ControlWrapper генерирует следующие события. Обратите внимание, что вы должны вызвать ControlWrapper.draw()
(или нарисовать панель мониторинга, содержащую элемент управления), прежде чем будут созданы какие-либо события.
Имя | Описание | Характеристики |
---|---|---|
error | Вызывается, когда возникает ошибка при попытке отрисовки элемента управления. | идентификатор, сообщение |
ready | Элемент управления готов принимать взаимодействие с пользователем и вызывать внешние методы. Если вы хотите взаимодействовать с элементом управления и вызывать методы после его рисования, вам следует настроить прослушиватель этого события перед вызовом метода draw и вызывать их только после того, как событие было запущено. В качестве альтернативы вы можете прослушивать событие ready на панели мониторинга, содержащее методы управления, и вызывать методы управления только после того, как событие было запущено. | Никто |
statechange | Запускается, когда пользователь взаимодействует с элементом управления, влияя на его состояние. Например, событие statechange будет срабатывать всякий раз, когда вы перемещаете ползунок диапазона. Чтобы получить обновленное состояние элемента управления после срабатывания события, вызовите ControlWrapper.getState() . | Никто |
ДиаграммаОбертка
См. документацию google.visualization.ChartWrapper
в разделе справки по API визуализаций.
Следующие примечания применимы при использовании ChartWrapper
как части информационной панели:
- Не задавайте атрибуты
dataTable
,query
,dataSourceUrl
refreshInterval
явно. Панель мониторинга, содержащая диаграмму, позаботится о предоставлении ей необходимых данных. - Установите атрибут
view
, чтобы объявить, какие столбцы из всех присутствующих вdataTable
, переданном на панель мониторинга, имеют отношение к диаграмме, как показано в разделе «Создание экземпляров элемента управления и диаграммы» .
Галерея элементов управления
Фильтры — это графические элементы, которые люди могут использовать для интерактивного выбора данных, отображаемых на вашей диаграмме. В этом разделе описаны фильтры диаграмм Google: CategoryFilter , ChartRangeFilter , DateRangeFilter , NumberRangeFilter и StringFilter .
Вы можете использовать любой из них в качестве параметра ControlWrapper.setControlType()
.
Примечание. При описании параметров для описания вложенных атрибутов объекта используется точечная запись. Например, опция с именем 'ui.label'
должна быть объявлена в объекте параметров как var options = {"ui": {"label": "someLabelValue"} };
КатегорияФильтр
Средство выбора для выбора одного или нескольких значений из набора определенных значений.
Состояние
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
выбранные значения | Массив объектов или примитивных типов | никто | Набор значений, выбранных в данный момент. Выбранные значения должны представлять собой набор общих выбираемых значений, определенных опцией values (любые посторонние значения будут игнорироваться). Если CategoryFilter не допускает множественного выбора, сохраняется только первое значение массива. |
Параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
фильтрКолумнИндекс | число | никто | Столбец таблицы данных, с которой должен работать фильтр. Обязательно укажите эту опцию или filterColumnLabel . Если присутствуют оба параметра, этот параметр имеет приоритет. |
FilterColumnLabel | нить | никто | Метка столбца, с которым должен работать фильтр. Обязательно укажите эту опцию или filterColumnIndex . Если оба присутствуют, filterColumnIndex имеет приоритет. |
ценности | Множество | авто | Список значений на выбор. Если используется массив объектов, они должны иметь подходящее представление toString() для отображения пользователю. Если значение равно null или не определено, список значений будет автоматически вычисляться на основе значений, присутствующих в столбце DataTable, с которым работает этот элемент управления. |
использоватьFormattedValue | логическое значение | ЛОЖЬ | При автоматическом заполнении списка выбираемых значений из столбца DataTable этот фильтр определяет, следует ли использовать фактические значения ячеек или их форматированные значения. |
пользовательский интерфейс | Объект | нулевой | Объект с членами для настройки различных аспектов пользовательского интерфейса элемента управления. Чтобы указать свойства этого объекта, вы можете использовать буквальную запись объекта, как показано здесь: {label: 'Metric', labelSeparator: ':'} |
ui.caption | нить | «Выберите значение...» | Заголовок, отображаемый внутри виджета выбора значения, когда ни один элемент не выбран. |
ui.sortValues | логическое значение | истинный | Следует ли сортировать значения для выбора. |
ui.selectedValuesLayout | нить | 'в стороне' | Как отобразить выбранные значения, если разрешен множественный выбор. Возможные значения:
|
ui.allowNone | логическое значение | истинный | Разрешено ли пользователю не выбирать какое-либо значение. Если false пользователь должен выбрать хотя бы одно значение из доступных. Если во время инициализации элемента управления для параметра установлено значение false и не задано состояние selectedValues , автоматически выбирается первое значение из доступных. |
ui.allowMultiple | логическое значение | истинный | Можно ли выбрать несколько значений, а не одно. |
ui.allowTyping | логическое значение | истинный | Разрешено ли пользователю вводить текстовое поле, чтобы сузить список возможных вариантов (через автозаполнение), или нет. |
ui.label | нить | авто | Ярлык, который будет отображаться рядом со средством выбора категории. Если не указано, будет использоваться метка столбца, над которым работает элемент управления. |
ui.labelSeparator | нить | никто | К метке добавляется разделительная строка, которая визуально отделяет метку от средства выбора категории. |
ui.labelСтекирование | нить | 'горизонтальный' | Должна ли метка отображаться над (вертикальное расположение) или рядом (горизонтальное расположение) средством выбора категории. Используйте либо 'vertical' , либо 'horizontal' . |
ui.cssClass | нить | 'google-visualization-controls-categoryfilter' | Класс CSS, который нужно назначить элементу управления для пользовательского стиля. |
ДиаграммаДиапазонФильтр
Ползунок с двумя бегунками, наложенный на диаграмму, для выбора диапазона значений на непрерывной оси диаграммы.
Состояние
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
диапазон.начало | число, дата, дата-время или время дня | Начальное значение диапазона | Начало выбранного диапазона включительно. |
диапазон.конец | число, дата, дата-время или время дня | Конечное значение диапазона | Конец выбранного диапазона включительно. |
Параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
фильтрКолумнИндекс | число | никто | Индекс столбца в таблице данных, над которым работает фильтр. Обязательно укажите эту опцию или filterColumnLabel . Если присутствуют оба параметра, этот параметр имеет приоритет.Обратите внимание, что имеет смысл указывать только индекс столбца домена , который воплощен в непрерывной оси диаграммы, нарисованной внутри элемента управления. |
FilterColumnLabel | нить | никто | Метка столбца таблицы данных, с которой работает фильтр. Обязательно укажите эту опцию или filterColumnIndex . Если присутствуют оба параметра, filterColumnIndex имеет приоритет.Обратите внимание, что имеет смысл указывать только метку столбца домена , которая включена в непрерывную ось диаграммы, нарисованной внутри элемента управления. |
пользовательский интерфейс | Объект | нулевой | Объект с членами для настройки различных аспектов пользовательского интерфейса элемента управления. Чтобы указать свойства этого объекта, вы можете использовать буквальную запись объекта, как показано здесь: {chartType: 'ScatterChart', chartOptions: {pointSize: 10}} |
ui.chartType | нить | «Комбодиаграмма» | Тип диаграммы, отображаемой внутри элемента управления. Может быть одним из: «AreaChart», «LineChart», «ComboChart» или «ScatterChart». |
ui.chartOptions | Объект | { 'enableInteractivity': false, 'chartArea': {'height': '100%'}, 'legend': {'position': 'none'}, 'hAxis': {'textPosition': 'in'}, 'vAxis': { 'textPosition': 'none', 'gridlines': {'color': 'none'} } } | Параметры конфигурации диаграммы, нарисованной внутри элемента управления. Допускает тот же уровень конфигурации, что и любая диаграмма на панели мониторинга, и соответствует тому же формату, который принят ChartWrapper.setOptions() . Вы можете указать дополнительные параметры или переопределить параметры по умолчанию (однако обратите внимание, что значения по умолчанию были тщательно выбраны для оптимального внешнего вида). |
ui.chartView | Объект или строка (сериализованный объект) | нулевой | Спецификация представления, применяемого к таблице данных, используемой для рисования диаграммы внутри элемента управления. Допускает тот же уровень конфигурации, что и любая диаграмма на панели мониторинга, и соответствует тому же формату, который принят ChartWrapper.setView() . Если не указано, для построения диаграммы используется сама таблица данных. Обратите внимание, что горизонтальная ось нарисованной диаграммы должна быть непрерывной , поэтому будьте внимательны при указании |
ui.minRangeSize | число | Разница значений данных интерпретируется как 1 пиксель. | Минимальный размер выбираемого диапазона ( range.end - range.start ), указанный в единицах значения данных. Для числовой оси это число (не обязательно целое). Для осей даты, даты и времени это целое число, указывающее разницу в миллисекундах. |
ui.snapToData | логическое значение | ЛОЖЬ | Если это правда, ползунки диапазона привязываются к ближайшим точкам данных. В этом случае конечные точки диапазона, возвращаемого getState() обязательно являются значениями в таблице данных. |
События
Дополнения к событиям ControlWrapper :
Имя | Описание | Характеристики |
---|---|---|
statechange | То же, что описано для каждого ControlWrapper, только имеет дополнительное логическое свойство inProgress , которое указывает, изменяется ли состояние в данный момент (перетаскивается либо один из ползунов, либо сам диапазон). | в ходе выполнения |
DateRangeFilter
Ползунок с двойным значением для выбора диапазонов дат.
Попробуйте переместить ползунок, чтобы изменить строки, отображаемые в таблице ниже.
Состояние
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
низкое значение | число | никто | Нижняя граница выбранного диапазона включительно. |
высокая стоимость | число | никто | Высшая степень выбранного диапазона включительно. |
низкийThumbAtMinimum | логическое значение | никто | Фиксируется ли нижний ползунок на минимально допустимом диапазоне. Если установлено, переопределяет lowValue . |
высокийThumbAtMaximum | логическое значение | никто | Фиксируется ли верхний ползунок ползунка в максимально допустимом диапазоне. Если установлено, переопределяет highValue . |
Параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
фильтрКолумнИндекс | число | никто | Столбец таблицы данных, с которой должен работать фильтр. Обязательно укажите эту опцию или filterColumnLabel . Если присутствуют оба параметра, этот параметр имеет приоритет. Должен указывать на столбец с number типа. |
FilterColumnLabel | нить | никто | Метка столбца, с которым должен работать фильтр. Обязательно укажите эту опцию или filterColumnIndex . Если оба присутствуют, filterColumnIndex имеет приоритет. Должен указывать на столбец с number типа. |
минзначение | Дата | авто | Минимально допустимое значение для нижней границы диапазона. Если значение не определено, значение будет выведено из содержимого DataTable, управляемого элементом управления. |
максимальное значение | Дата | авто | Максимально допустимое значение для верхнего предела диапазона. Если значение не определено, значение будет выведено из содержимого DataTable, управляемого элементом управления. |
пользовательский интерфейс | Объект | нулевой | Объект с членами для настройки различных аспектов пользовательского интерфейса элемента управления. Чтобы указать свойства этого объекта, вы можете использовать буквальную запись объекта, как показано здесь: {label: 'Age', labelSeparator: ':'} |
ui.format | Объект | никто | Как представить дату в виде строки. Принимает любой допустимый формат даты . |
ui.step | нить | день | Минимально возможное изменение при перетаскивании ползунка: может быть любая единица времени вплоть до «дней». («месяц» и «год» пока не поддерживаются.) |
ui.ticks | число | авто | Количество тиков (фиксированных позиций на шкале диапазона), которые могут занимать ползунки. |
ui.unitIncrement | нить | '1' | Величина приращения единицы измерения экстентов диапазона. Приращение единицы измерения эквивалентно использованию клавиш со стрелками для перемещения ползунка. |
ui.blockIncrement | число | 10 | Величина приращения блока экстентов диапазона. Приращение блока эквивалентно использованию клавиш pgUp и pgDown для перемещения ползунка. |
ui.showRangeValues | логическое значение | истинный | Иметь ли рядом с ползунком метки, отображающие пределы выбранного диапазона. |
пользовательский интерфейс.ориентация | нить | 'горизонтальный' | Ориентация слайдера. Либо 'horizontal' , либо 'vertical' . |
ui.label | нить | авто | Метка, отображаемая рядом с ползунком. Если не указано, будет использоваться метка столбца, над которым работает элемент управления. |
ui.labelSeparator | нить | никто | К метке добавляется разделительная строка, которая визуально отделяет метку от ползунка. |
ui.labelСтекирование | нить | 'горизонтальный' | Должна ли метка отображаться над ползунком (вертикальное расположение) или рядом (горизонтальное расположение). Используйте либо 'vertical' , либо 'horizontal' . |
ui.cssClass | нить | 'google-visualization-controls-rangefilter' | Класс CSS, который нужно назначить элементу управления для пользовательского стиля. |
NumberRangeFilter
Двузначный ползунок для выбора диапазонов числовых значений.
Состояние
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
низкое значение | число | никто | Нижняя граница выбранного диапазона включительно. |
высокая стоимость | число | никто | Высшая степень выбранного диапазона включительно. |
низкийThumbAtMinimum | логическое значение | никто | Фиксируется ли нижний ползунок на минимально допустимом диапазоне. Если установлено, переопределяет lowValue . |
высокийThumbAtMaximum | логическое значение | никто | Фиксируется ли верхний ползунок ползунка в максимально допустимом диапазоне. Если установлено, переопределяет highValue . |
Параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
фильтрКолумнИндекс | число | никто | Столбец таблицы данных, с которой должен работать фильтр. Обязательно укажите эту опцию или filterColumnLabel . Если присутствуют оба параметра, этот параметр имеет приоритет. Должен указывать на столбец с number типа. |
FilterColumnLabel | нить | никто | Метка столбца, с которым должен работать фильтр. Обязательно укажите эту опцию или filterColumnIndex . Если оба присутствуют, filterColumnIndex имеет приоритет. Должен указывать на столбец с number типа. |
минзначение | число | авто | Минимально допустимое значение для нижней границы диапазона. Если значение не определено, значение будет выведено из содержимого DataTable, управляемого элементом управления. |
максимальное значение | число | авто | Максимально допустимое значение для верхнего предела диапазона. Если значение не определено, значение будет выведено из содержимого DataTable, управляемого элементом управления. |
пользовательский интерфейс | Объект | нулевой | Объект с членами для настройки различных аспектов пользовательского интерфейса элемента управления. Чтобы указать свойства этого объекта, вы можете использовать буквальную запись объекта, как показано здесь: {label: 'Age', labelSeparator: ':'} |
ui.format | Объект | никто | Как представить число в виде строки. Принимает любой допустимый числовой формат . |
ui.step | число | 1 или вычисляется по ticks , если определено | Минимально возможное изменение при перетаскивании ползунка. |
ui.ticks | число | авто | Количество тиков (фиксированных позиций на шкале диапазона), которые могут занимать ползунки. |
ui.unitIncrement | число | 1 | Величина приращения единицы измерения экстентов диапазона. Приращение единицы измерения эквивалентно использованию клавиш со стрелками для перемещения ползунка. |
ui.blockIncrement | число | 10 | Величина приращения блока экстентов диапазона. Приращение блока эквивалентно использованию клавиш pgUp и pgDown для перемещения ползунка. |
ui.showRangeValues | логическое значение | истинный | Иметь ли рядом с ползунком метки, отображающие пределы выбранного диапазона. |
пользовательский интерфейс.ориентация | нить | 'горизонтальный' | Ориентация слайдера. Либо 'horizontal' , либо 'vertical' . |
ui.label | нить | авто | Метка, отображаемая рядом с ползунком. Если не указано, будет использоваться метка столбца, над которым работает элемент управления. |
ui.labelSeparator | нить | никто | К метке добавляется разделительная строка, которая визуально отделяет метку от ползунка. |
ui.labelСтекирование | нить | 'горизонтальный' | Должна ли метка отображаться над ползунком (вертикальное расположение) или рядом (горизонтальное расположение). Используйте либо 'vertical' , либо 'horizontal' . |
ui.cssClass | нить | 'google-visualization-controls-rangefilter' | Класс CSS, который нужно назначить элементу управления для пользовательского стиля. |
Строковый фильтр
Простое поле ввода текста, позволяющее фильтровать данные посредством сопоставления строк. Она обновляется после каждого нажатия клавиши: попробуйте ввести j
, чтобы сузить таблицу ниже до Джона и Джессики.
Состояние
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
ценить | строка или объект | никто | Текст, введенный в данный момент в поле ввода элемента управления. |
Параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
фильтрКолумнИндекс | число | никто | Столбец таблицы данных, с которой должен работать фильтр. Обязательно укажите эту опцию или filterColumnLabel . Если присутствуют оба параметра, этот параметр имеет приоритет. |
FilterColumnLabel | нить | никто | Метка столбца, с которым должен работать фильтр. Обязательно укажите эту опцию или filterColumnIndex . Если оба присутствуют, filterColumnIndex имеет приоритет. |
Тип совпадения | нить | 'префикс' | Должен ли элемент управления соответствовать только точным значениям ( 'exact' ), префиксам, начинающимся с начала значения ( 'prefix' ) или любой подстроке ( 'any' ). |
с учетом регистра | логическое значение | ЛОЖЬ | Должно ли сопоставление учитывать регистр или нет. |
использоватьFormattedValue | логическое значение | ЛОЖЬ | Должен ли элемент управления соответствовать значениям в формате ячейки или фактическим значениям. |
пользовательский интерфейс | Объект | нулевой | Объект с членами для настройки различных аспектов пользовательского интерфейса элемента управления. Чтобы указать свойства этого объекта, вы можете использовать буквальную запись объекта, как показано здесь: {label: 'Name', labelSeparator: ':'} |
ui.realtimeTrigger | логическое значение | истинный | Должен ли элемент управления совпадать при каждом нажатии клавиши или только при «изменении» поля ввода (потеря фокуса или нажатие клавиши Enter). |
ui.label | нить | авто | Метка, отображаемая рядом с полем ввода. Если не указано, будет использоваться метка столбца, над которым работает элемент управления. |
ui.labelSeparator | нить | никто | К метке добавляется строка-разделитель, которая визуально отделяет метку от поля ввода. |
ui.labelСтекирование | нить | 'горизонтальный' | Независимо от того, должна ли этикетка отображаться выше (вертикальное укладку) или рядом с (горизонтальное укладку) поле ввода. Используйте 'vertical' или 'horizontal' . |
UI.cssclass | нить | 'google-visualization-controls-stringfilter' | Класс CSS назначить управлению, для пользовательского стиля. |