Cumulocity - Пользовательская конфигурация виджета

Я пишу виджет диаграммы на платформе cumulocity. В виджете, который поставляется с платформой, я могу выбрать точку данных после выбора устройства: введите здесь описание изображения

Но виджет, который я написал, может выбирать только устройство, у меня нет возможности выбора точки данных: < img src="https://i.stack.imgur.com/2Rc94.jpg" alt="введите здесь описание изображения">

Я знаю, что есть c8yComponentsProvider, который имеет варианты для меня, чтобы выбрать, хочу ли я целевое устройство или нет. Есть ли способ выбрать, какую точку данных я хочу?


person WahahaXDD    schedule 24.01.2018    source источник


Ответы (2)


Вы можете отключить селектор устройств в опциях c8yComponentsProvider:

options: {
  noDeviceTarget: true
}

А затем используйте следующую директиву в html конфигурации вашего виджета:

<c8y-data-point-list datapoints="data.datapoints"></c8y-data-point-list>

Вам нужно установить точки данных для выбора в объекте data.datapoints на контроллере конфигурации виджета. Поэтому вы можете искать управляемые объекты с фрагментом c8y_DataPoint.

В документе есть пример, как это сделать с помощью c8yInventory сервис:

var filters = {fragmentType: 'c8y_DataPoint', withParents: true};
$scope.data = {};
c8yInventory.list(filters).then(function (devices) {
  $scope.data.datapoints = [];
  _.forEach(devices, function(dp) {
    $scope.data.datapoints.push(dp);
  });
});

Обратите внимание, что c8y-data-point-list является неофициальной директивой. Если вы столкнулись с какими-либо проблемами или вам нужен особый вид, вы можете быстрее написать собственную директиву.

person Jan Hommes    schedule 25.01.2018
comment
Теперь я могу показать параметр точки данных в своем браузере. Но есть ли способ получить, какую точку данных выберет пользователь? С c8yInventory.list я могу получить все точки данных, но я до сих пор не знаю, какие данные выбирает пользователь. - person WahahaXDD; 26.01.2018
comment
Если вы используете c8y-data-point-list, свойство __active должно быть установлено для каждой точки данных, которую активирует пользователь. - person Jan Hommes; 26.01.2018
comment
я не видел никакого свойства __active в выбранной точке данных. есть ли функция, которую я должен вызвать, чтобы получить это свойство? - person WahahaXDD; 28.01.2018
comment
Я проверил это дважды, и если вы используете c8y-data-point-list, директива добавляет флаг __active, чтобы показать, что он используется. Можете ли вы проверить, добавив наблюдателя на scope.data.datapoints и переключая точки данных в/из? В противном случае, пожалуйста, откройте новый вопрос с подробностями и свяжите его здесь. - person Jan Hommes; 29.01.2018
comment
@WahahaXDDI столкнулся с той же проблемой. Я не могу найти все выбранные точки данных. Где вы можете решить проблему? - person rajmohan; 17.05.2018
comment
@WahahaXDDI, как получить доступ к кнопке сохранения в моем контроллере? Не могли бы вы помочь. - person rajmohan; 07.06.2018

Из углового 2 это нужно сделать таким образом.

В моем проекте пользовательского виджета я добавил в раздел usedValue app.module.ts следующим образом.

useValue: {
    id: 'acme.text.widget', // 3.
    label: 'Text widget',
    description: 'Can display a text',
    component: WidgetDemo, // 4.
    configComponent: WidgetConfigDemo,
    data: {
        ng1: {
            options: {
                noDeviceTarget: true
            }
        }
    }
}
person Borja    schedule 19.12.2019