Criando propriedades para o Widget do Google Maps
Como mencionei em meu post anterior, o ThingWorx possibilita o uso de elementos de interface pré criados, chamados Widgets, na criação das telas de interface, chamadas de Mashups.
Esses Widgets possuem propriedades e eventos que podem ser utilizados na criação da aplicação utilizando-se drag n' drop no momento da criação do Mashup.
No caso da extensão do Google Maps, o widget foi criado em Javascript e possui 2 arquivos principais. Iremos falar de um deles agora, o googlemap.ide e como alterar para adicionar os parâmetros necessários para a funcionalidade de Heatmaps.
Na sessão de propriedades do Widget, irei criar algumas das propriedades que penso em usar:
Cheers
Ewerton
Como mencionei em meu post anterior, o ThingWorx possibilita o uso de elementos de interface pré criados, chamados Widgets, na criação das telas de interface, chamadas de Mashups.
Esses Widgets possuem propriedades e eventos que podem ser utilizados na criação da aplicação utilizando-se drag n' drop no momento da criação do Mashup.
No caso da extensão do Google Maps, o widget foi criado em Javascript e possui 2 arquivos principais. Iremos falar de um deles agora, o googlemap.ide e como alterar para adicionar os parâmetros necessários para a funcionalidade de Heatmaps.
Na sessão de propriedades do Widget, irei criar algumas das propriedades que penso em usar:
- Liga/Desliga o Layer de Heatmap - propriedade Boolean apenas para acionar a funcionalidade.
- Tipo de Layer: penso em fazer com que a alteração seja flexível, então irei adicionar opções para se encolher entre criar-se um layer KML, um layer usando a API HeatMap ou uma FusionTable
- Dados de Entrada: é uma matriz com os dados que irão popular o mapa caso utilize-se a API
Vou focar nessas 3 propriedades pois meu desenvolvimento agora será utilizando a API. Quando for desenvolver para Layer KML ou FusionTable precisarei de propriedades para passar esse tipo de dado.
Código para adicionar-se as propriedades:
this.widgetProperties = function () {
return {
'ShowCustomLayer': {
'description': 'Select if custom layer is used',
'isBindingTarget': true,
'defaultValue': false,
'baseType': 'BOOLEAN'
},
'CustomLayerType': {
'isBindingTarget': true,
'description' : 'Select type of custom layer: Google HeatMap or Fusion Tables',
'baseType': 'STRING',
'defaultValue': 'HeatMap',
'selectOptions': [
{ value: 'HeatMap', text: 'HeatMap' },
{ value: 'FusionTables', text: 'Fusion Tables' }
]
},
'CustomLayerData': {
'description' : 'Data to populate Custom Layer',
'isBindingTarget': true,
'isVisible': true,
'baseType': 'INFOTABLE'
},
}
Claro que o cabeçalho já existe devido à declaração das outras variáveis. Coloquei ele no código acima apenas para nos localizarmos onde fazer a alteração no código existente.
Nesse código há algumas definições interessantes:
O nome da propriedade está definido entre aspas simples no começo de cada bloco
isBindingTarget - define se a propriedade pode ser associada a alguma variável na IDE
defaultValue - qual será o valor default para a propriedade
baseType - tipo da propriedade. Isso definirá qual tipo de variável poderá ser associado na IDE. Note que para uma matriz de valores o ThingWorx usa o tipo INFOTABLE
selectOptions - define quais as opções disponíveis para seleção na IDE. Os valores devem ser passados no formato JSON
Depois que o arquivo é alterado e atualizado no Thingworx, as propriedades do Widget Google ficam conforme a figura ao lado.
Dá pra notar que a variável Boolean ficou como um checkBox, a INFOTABLE ficou com o ícone de uma tabela e a variável String que dependia de uma lista ficou com as opções disponíveis para serem selecionadas.
Agora, com as propriedades já definidas no Widget, e como a propriedade isBindingTarget for definida como True, é possível associar valores ou um conjunto de valores a elas. No exemplo abaixo, o resultado do serviço QueryDataTableEntries está sendo associado à propriedade CustomLayerData. Esses dados serão utilizados posteriormente quando em Runtime, para que o mapa de calor seja populado.
É isso pessoal, a parte de alteração do Widget para a IDE e configuração da aplicação está OK. Agora falta a parte de Runtime, que irei descrever no próximo post
Cheers
Ewerton
No comments:
Post a Comment