@ -0,0 +1 @@
|
|||||||
|
{"provider-conf" : {"streamName" : "org.wso2.iot.android.accelerometer:1.0.0", "provider-name" : "realtime"}, "chart-conf" : {"x" : "TIMESTAMP", "xType" : "time", "y" : "value", "yType" : "number", "color" : "axis", "maxLength" : "30", "gadget-name" : "ANDROID_ACCELETOMETER_GADGET", "chart-name" : "line-chart"}}
|
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/gadget-controller.jag → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_gadget/ANDROID_ACCELEROMETER_GADGET/gadget-controller.jag
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"id": "ANDROID_ACCELETOMETER_GADGET",
|
||||||
|
"title": "ANDROID_ACCELETOMETER_GADGET",
|
||||||
|
"type": "gadget",
|
||||||
|
"thumbnail": "gadget/ANDROID_ACCELETOMETER_GADGET/thumbnail.png",
|
||||||
|
"data": {
|
||||||
|
"url": "gadget/ANDROID_ACCELETOMETER_GADGET/gadget.xml"
|
||||||
|
}
|
||||||
|
}
|
6
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/gadget.xml → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_gadget/ANDROID_ACCELEROMETER_GADGET/gadget.xml
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/js/core/gadget-core.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_gadget/ANDROID_ACCELEROMETER_GADGET/js/core/gadget-core.js
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
var getGadgetLocation = function (callback) {
|
||||||
|
var gadgetLocation = "/portal/store/carbon.super/fs/gadget/ANDROID_ACCELEROMETER_GADGET";
|
||||||
|
var PATH_SEPERATOR = "/";
|
||||||
|
if (gadgetLocation.search("store") != -1) {
|
||||||
|
wso2.gadgets.identity.getTenantDomain(function (tenantDomain) {
|
||||||
|
var gadgetPath = gadgetLocation.split(PATH_SEPERATOR);
|
||||||
|
var modifiedPath = '';
|
||||||
|
for (var i = 1; i < gadgetPath.length; i++) {
|
||||||
|
if (i === 3) {
|
||||||
|
modifiedPath = modifiedPath.concat(PATH_SEPERATOR, tenantDomain);
|
||||||
|
} else {
|
||||||
|
modifiedPath = modifiedPath.concat(PATH_SEPERATOR, gadgetPath[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
callback(modifiedPath);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
callback(gadgetLocation);
|
||||||
|
}
|
||||||
|
}
|
35
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/js/core/number-chart-api.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_gadget/ANDROID_ACCELEROMETER_GADGET/js/core/line-chart-api.js
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/js/core/provider-client.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_gadget/ANDROID_ACCELEROMETER_GADGET/js/core/provider-client.js
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/js/core/realtime-provider-api.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_gadget/ANDROID_ACCELEROMETER_GADGET/js/core/realtime-provider-api.js
2
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/js/provider-libs/ws-client.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_gadget/ANDROID_ACCELEROMETER_GADGET/js/provider-libs/ws-client.js
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
*
|
*
|
||||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
* Version 2.0 (the "License"); you may not use this file except
|
* Version 2.0 (the "License"); you may not use this file except
|
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/thumbnail.png → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_gadget/ANDROID_ACCELEROMETER_GADGET/thumbnail.png
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
~
|
||||||
|
~ WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
~ Version 2.0 (the "License"); you may not use this file except
|
||||||
|
~ in compliance with the License.
|
||||||
|
~ You may obtain a copy of the License at
|
||||||
|
~
|
||||||
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
~
|
||||||
|
~ Unless required by applicable law or agreed to in writing,
|
||||||
|
~ software distributed under the License is distributed on an
|
||||||
|
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
~ KIND, either express or implied. See the License for the
|
||||||
|
~ specific language governing permissions and limitations
|
||||||
|
~ under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<artifact name= "android_accelerometer_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
|
||||||
|
<file>ANDROID_ACCELEROMETER_GADGET</file>
|
||||||
|
</artifact>
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
{"provider-conf" : {"streamName" : "org.wso2.iot.android.gyroscope:1.0.0", "provider-name" : "realtime"}, "chart-conf" : {"x" : "TIMESTAMP", "xType" : "time", "y" : "value", "yType" : "number", "color" : "axis", "maxLength" : "30", "gadget-name" : "ANDROID_GYROSCOPE_GADGET", "chart-name" : "line-chart"}}
|
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/gadget-controller.jag → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_gadget/ANDROID_GYROSCOPE_GADGET/gadget-controller.jag
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"id": "ANDROID_GYROSCOPE_GADGET",
|
||||||
|
"title": "ANDROID_GYROSCOPE_GADGET",
|
||||||
|
"type": "gadget",
|
||||||
|
"thumbnail": "gadget/ANDROID_GYROSCOPE_GADGET/thumbnail.png",
|
||||||
|
"data": {
|
||||||
|
"url": "gadget/ANDROID_GYROSCOPE_GADGET/gadget.xml"
|
||||||
|
}
|
||||||
|
}
|
6
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/gadget.xml → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_gadget/ANDROID_GYROSCOPE_GADGET/gadget.xml
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/js/core/gadget-core.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_gadget/ANDROID_GYROSCOPE_GADGET/js/core/gadget-core.js
2
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/js/core/gadget-util.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_gadget/ANDROID_GYROSCOPE_GADGET/js/core/gadget-util.js
35
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/js/core/number-chart-api.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_gadget/ANDROID_GYROSCOPE_GADGET/js/core/line-chart-api.js
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/js/core/provider-client.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_gadget/ANDROID_GYROSCOPE_GADGET/js/core/provider-client.js
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/js/core/realtime-provider-api.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_gadget/ANDROID_GYROSCOPE_GADGET/js/core/realtime-provider-api.js
2
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/js/provider-libs/ws-client.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_gadget/ANDROID_GYROSCOPE_GADGET/js/provider-libs/ws-client.js
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
*
|
*
|
||||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
* Version 2.0 (the "License"); you may not use this file except
|
* Version 2.0 (the "License"); you may not use this file except
|
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/thumbnail.png → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_gadget/ANDROID_GYROSCOPE_GADGET/thumbnail.png
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
4
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/artifact.xml → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_gadget/artifact.xml
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"provider-conf": {
|
||||||
|
"streamName": "org.wso2.iot.android.magnetic:1.0.0",
|
||||||
|
"provider-name": "realtime"
|
||||||
|
},
|
||||||
|
"chart-conf": {
|
||||||
|
"x": "TIMESTAMP",
|
||||||
|
"xType": "time",
|
||||||
|
"y": "value",
|
||||||
|
"yType": "number",
|
||||||
|
"color": "axis",
|
||||||
|
"maxLength": "30",
|
||||||
|
"gadget-name": "ANDROID_MAGNETIC_GADGET",
|
||||||
|
"chart-name": "line-chart"
|
||||||
|
}
|
||||||
|
}
|
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/gadget-controller.jag → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_gadget/ANDROID_MAGNETIC_GADGET/gadget-controller.jag
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"id": "ANDROID_MAGNETIC_GADGET",
|
||||||
|
"title": "ANDROID_MAGNETIC_GADGET",
|
||||||
|
"type": "gadget",
|
||||||
|
"thumbnail": "gadget/ANDROID_MAGNETIC_GADGET/thumbnail.png",
|
||||||
|
"data": {
|
||||||
|
"url": "gadget/ANDROID_MAGNETIC_GADGET/gadget.xml"
|
||||||
|
}
|
||||||
|
}
|
6
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/gadget.xml → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_gadget/ANDROID_MAGNETIC_GADGET/gadget.xml
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/js/core/gadget-core.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_gadget/ANDROID_MAGNETIC_GADGET/js/core/gadget-core.js
2
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/js/core/gadget-util.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_gadget/ANDROID_MAGNETIC_GADGET/js/core/gadget-util.js
35
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/js/core/number-chart-api.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_gadget/ANDROID_MAGNETIC_GADGET/js/core/line-chart-api.js
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/js/core/provider-client.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_gadget/ANDROID_MAGNETIC_GADGET/js/core/provider-client.js
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/js/core/realtime-provider-api.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_gadget/ANDROID_MAGNETIC_GADGET/js/core/realtime-provider-api.js
2
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/js/provider-libs/ws-client.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_gadget/ANDROID_MAGNETIC_GADGET/js/provider-libs/ws-client.js
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
*
|
*
|
||||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
* Version 2.0 (the "License"); you may not use this file except
|
* Version 2.0 (the "License"); you may not use this file except
|
0
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/thumbnail.png → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_gadget/ANDROID_MAGNETIC_GADGET/thumbnail.png
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
4
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/artifact.xml → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_gadget/artifact.xml
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"provider-conf": {
|
||||||
|
"streamName": "org.wso2.iot.android.rotation:1.0.0",
|
||||||
|
"provider-name": "realtime"
|
||||||
|
},
|
||||||
|
"chart-conf": {
|
||||||
|
"x": "TIMESTAMP",
|
||||||
|
"xType": "time",
|
||||||
|
"y": "value",
|
||||||
|
"yType": "number",
|
||||||
|
"color": "axis",
|
||||||
|
"maxLength": "30",
|
||||||
|
"gadget-name": "ANDROID_ROTATION_GADGET",
|
||||||
|
"chart-name": "line-chart"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
<%
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
(function () {
|
||||||
|
|
||||||
|
response.contentType = 'application/json';
|
||||||
|
var PROVIDER_CONF = 'provider-conf';
|
||||||
|
var PROVIDER_NAME = 'provider-name';
|
||||||
|
|
||||||
|
var action = request.getParameter("action");
|
||||||
|
var data = request.getContent();
|
||||||
|
var providerConf = data[PROVIDER_CONF];
|
||||||
|
var providerAPI = require('js/core/' + providerConf[PROVIDER_NAME] + '-provider-api.js');
|
||||||
|
|
||||||
|
if (action === 'getSchema') {
|
||||||
|
print(providerAPI.getSchema(providerConf));
|
||||||
|
return;
|
||||||
|
} else if(action === 'getData'){
|
||||||
|
print(providerAPI.getData(providerConf));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
%>
|
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"id": "ANDROID_ROTATION_GADGET",
|
||||||
|
"title": "ANDROID_ROTATION_GADGET",
|
||||||
|
"type": "gadget",
|
||||||
|
"thumbnail": "gadget/ANDROID_ROTATION_GADGET/thumbnail.png",
|
||||||
|
"data": {
|
||||||
|
"url": "gadget/ANDROID_ROTATION_GADGET/gadget.xml"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,60 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<Module>
|
||||||
|
<ModulePrefs title="ANDROID_ROTATION_GADGET" description="This is a template gadget">
|
||||||
|
<Require feature="dynamic-height"/>
|
||||||
|
<Require feature="wso2-gadgets-identity"/>
|
||||||
|
</ModulePrefs>
|
||||||
|
|
||||||
|
<UserPref name="windowSize"
|
||||||
|
display_name="Window Size"
|
||||||
|
default_value="10"/>
|
||||||
|
|
||||||
|
<Content type="html">
|
||||||
|
<![CDATA[
|
||||||
|
<head>
|
||||||
|
<!-- shared css -->
|
||||||
|
|
||||||
|
<link href="/portal/libs/analytics-wso2-2.0.0/common.css" rel="stylesheet" type="text/css" >
|
||||||
|
|
||||||
|
<!-- chart vendor css -->
|
||||||
|
|
||||||
|
<!-- chart specific css -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- jQuery -->
|
||||||
|
<script src="/portal/libs/jquery_1.11.0/jquery-1.11.3.min.js"></script>
|
||||||
|
<!-- provider libs -->
|
||||||
|
|
||||||
|
<script src="js/provider-libs/ws-client.js"></script>
|
||||||
|
|
||||||
|
<!-- shared libs -->
|
||||||
|
|
||||||
|
<script src="/portal/libs/analytics-wso2-2.0.0/d3.min.js"></script>
|
||||||
|
|
||||||
|
<script src="/portal/libs/analytics-wso2-2.0.0/vega.js"></script>
|
||||||
|
|
||||||
|
<script src="/portal/libs/analytics-wso2-2.0.0/VizGrammar.min.js"></script>
|
||||||
|
|
||||||
|
<script src="/portal/libs/analytics-wso2-2.0.0/wso2gadgets.js"></script>
|
||||||
|
|
||||||
|
<script src="/portal/libs/analytics-wso2-2.0.0/chart-utils.js"></script>
|
||||||
|
|
||||||
|
<!-- chart specific vendor libs -->
|
||||||
|
|
||||||
|
<!-- chart specific js -->
|
||||||
|
|
||||||
|
<!--scripts copied by framework -->
|
||||||
|
|
||||||
|
<script src="js/core/provider-client.js"></script>
|
||||||
|
|
||||||
|
<script src="js/core/gadget-util.js"></script>
|
||||||
|
<script src="js/core/line-chart-api.js"></script>
|
||||||
|
<script src="js/core/gadget-core.js"></script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="canvas"></div>
|
||||||
|
</body>
|
||||||
|
]]>
|
||||||
|
</Content>
|
||||||
|
</Module>
|
@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
$(function () {
|
||||||
|
var gadgetLocation;
|
||||||
|
var conf;
|
||||||
|
var schema;
|
||||||
|
var pref = new gadgets.Prefs();
|
||||||
|
|
||||||
|
var CHART_CONF = 'chart-conf';
|
||||||
|
var PROVIDER_CONF = 'provider-conf';
|
||||||
|
|
||||||
|
var init = function () {
|
||||||
|
$.ajax({
|
||||||
|
url: gadgetLocation + '/conf.json',
|
||||||
|
method: "GET",
|
||||||
|
contentType: "application/json",
|
||||||
|
async: false,
|
||||||
|
success: function (data) {
|
||||||
|
conf = JSON.parse(data);
|
||||||
|
$.ajax({
|
||||||
|
url: gadgetLocation + '/gadget-controller.jag?action=getSchema',
|
||||||
|
method: "POST",
|
||||||
|
data: JSON.stringify(conf),
|
||||||
|
contentType: "application/json",
|
||||||
|
async: false,
|
||||||
|
success: function (data) {
|
||||||
|
schema = data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var drawGadget = function (){
|
||||||
|
|
||||||
|
draw('#canvas', conf[CHART_CONF], schema, null);
|
||||||
|
registerCallBackforPush(conf[PROVIDER_CONF], schema, function(providerData) {
|
||||||
|
update(providerData);
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
getGadgetLocation(function (gadget_Location) {
|
||||||
|
gadgetLocation = gadget_Location;
|
||||||
|
init();
|
||||||
|
drawGadget();
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
2
components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/js/core/gadget-util.js → components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_gadget/ANDROID_ROTATION_GADGET/js/core/gadget-util.js
@ -0,0 +1,134 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
var getConfig, validate, isProviderRequired, draw, update;
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
var CHART_LOCATION = '/extensions/chart-templates/';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return the config to be populated in the chart configuration UI
|
||||||
|
* @param schema
|
||||||
|
*/
|
||||||
|
getConfig = function(schema) {
|
||||||
|
var chartConf = require(CHART_LOCATION + '/line-chart/config.json').config;
|
||||||
|
/*
|
||||||
|
dynamic logic goes here
|
||||||
|
*/
|
||||||
|
|
||||||
|
var columns = [];
|
||||||
|
|
||||||
|
columns.push("None");
|
||||||
|
for(var i=0; i < schema.length; i++) {
|
||||||
|
columns.push(schema[i]["fieldName"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var i=0; i < chartConf.length; i++) {
|
||||||
|
if (chartConf[i]["fieldName"] == "color") {
|
||||||
|
chartConf[i]["valueSet"] = columns;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return chartConf;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* validate the user inout for the chart configuration
|
||||||
|
* @param chartConfig
|
||||||
|
*/
|
||||||
|
validate = function(chartConfig) {
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TO be used when provider configuration steps need to be skipped
|
||||||
|
*/
|
||||||
|
isProviderRequired = function() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return the gadget content
|
||||||
|
* @param chartConfig
|
||||||
|
* @param schema
|
||||||
|
* @param data
|
||||||
|
*/
|
||||||
|
draw = function(placeholder, chartConfig, _schema, data) {
|
||||||
|
_schema = updateUserPrefXYTypes(_schema, chartConfig);
|
||||||
|
var schema = toVizGrammarSchema(_schema);
|
||||||
|
|
||||||
|
var view = {
|
||||||
|
id: "chart-0",
|
||||||
|
schema: schema,
|
||||||
|
chartConfig: buildChartConfig(chartConfig),
|
||||||
|
data: function() {
|
||||||
|
if(data) {
|
||||||
|
var result = [];
|
||||||
|
console.log(data);
|
||||||
|
data.forEach(function(item) {
|
||||||
|
var row = [];
|
||||||
|
schema[0].metadata.names.forEach(function(name) {
|
||||||
|
row.push(item[name]);
|
||||||
|
});
|
||||||
|
result.push(row);
|
||||||
|
});
|
||||||
|
console.log(result);
|
||||||
|
wso2gadgets.onDataReady(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
wso2gadgets.init(placeholder, view);
|
||||||
|
var view = wso2gadgets.load("chart-0");
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param data
|
||||||
|
*/
|
||||||
|
update = function(data) {
|
||||||
|
wso2gadgets.onDataReady(data,"append");
|
||||||
|
};
|
||||||
|
|
||||||
|
buildChartConfig = function (_chartConfig) {
|
||||||
|
var conf = {};
|
||||||
|
conf.x = _chartConfig.x;
|
||||||
|
conf.xType = _chartConfig.xType;
|
||||||
|
conf.yType = _chartConfig.yType;
|
||||||
|
conf.maxLength = _chartConfig.maxLength;
|
||||||
|
conf.charts = [];
|
||||||
|
conf.charts[0] = {
|
||||||
|
type : "line",
|
||||||
|
y: _chartConfig.y
|
||||||
|
};
|
||||||
|
|
||||||
|
if (_chartConfig.color != "None") {
|
||||||
|
conf.charts[0].color = _chartConfig.color;
|
||||||
|
}
|
||||||
|
|
||||||
|
return conf;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}());
|
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
// var registerCallBackforPush;
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
var callback;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO Need to read hostname,port, and tenantId from providerConfig
|
||||||
|
* @param providerConfig
|
||||||
|
* @param schema
|
||||||
|
*/
|
||||||
|
registerCallBackforPush = function(providerConfig, schema, _callback) {
|
||||||
|
var streamId = providerConfig['streamName'];
|
||||||
|
var hostname = window.parent.location.hostname;
|
||||||
|
var port = window.parent.location.port;
|
||||||
|
|
||||||
|
subscribe(streamId.split(":")[0], streamId.split(":")[1],
|
||||||
|
'10',
|
||||||
|
onData, onError,
|
||||||
|
hostname,
|
||||||
|
port,
|
||||||
|
'WEBSOCKET'
|
||||||
|
);
|
||||||
|
callback = _callback;
|
||||||
|
};
|
||||||
|
|
||||||
|
function onData(streamId, data) {
|
||||||
|
callback(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
function onError(error) {
|
||||||
|
console.error(error);
|
||||||
|
};
|
||||||
|
|
||||||
|
}());
|
||||||
|
|
@ -0,0 +1,154 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
var getConfig, validate, getMode, getSchema, getData, registerCallBackforPush;
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
var PROVIDERS_LOCATION = '/extensions/providers/';
|
||||||
|
var PROVIDER_NAME = 'realtime';
|
||||||
|
|
||||||
|
var log = new Log();
|
||||||
|
var utils = require('/modules/utils.js');
|
||||||
|
var carbon = require("carbon");
|
||||||
|
var EventPublisherConstants = Packages.org.wso2.carbon.event.publisher.core.config.EventPublisherConstants;
|
||||||
|
var eventPublisherService = carbon.server.osgiService('org.wso2.carbon.event.publisher.core.EventPublisherService');
|
||||||
|
var eventStreamService = carbon.server.osgiService('org.wso2.carbon.event.stream.core.EventStreamService');
|
||||||
|
|
||||||
|
var typeMap = {
|
||||||
|
"bool": "string",
|
||||||
|
"boolean": "string",
|
||||||
|
"string": "string",
|
||||||
|
"int": "number",
|
||||||
|
"integer": "number",
|
||||||
|
"long": "number",
|
||||||
|
"double": "number",
|
||||||
|
"float": "number",
|
||||||
|
"time": "time"
|
||||||
|
};
|
||||||
|
|
||||||
|
getConfig = function() {
|
||||||
|
var formConfig = require(PROVIDERS_LOCATION + '/' + PROVIDER_NAME + '/config.json');
|
||||||
|
var datasources = [];
|
||||||
|
try {
|
||||||
|
var eventPublisherConfigurationList = eventPublisherService.getAllActiveEventPublisherConfigurations();
|
||||||
|
for (var i = 0; i < eventPublisherConfigurationList.size(); i++) {
|
||||||
|
var eventPublisherConfiguration = eventPublisherService.getActiveEventPublisherConfiguration(
|
||||||
|
eventPublisherConfigurationList.get(i).getEventPublisherName());;
|
||||||
|
|
||||||
|
var mappingTypeIsWso2 = eventPublisherConfiguration.getOutputMapping()
|
||||||
|
.getMappingType().equals(EventPublisherConstants.EF_WSO2EVENT_MAPPING_TYPE);
|
||||||
|
|
||||||
|
var adapterType = null;
|
||||||
|
if (eventPublisherConfiguration.getToAdapterConfiguration() != null) {
|
||||||
|
adapterType = eventPublisherConfiguration.getToAdapterConfiguration().getType();
|
||||||
|
}
|
||||||
|
if (mappingTypeIsWso2 && adapterType.trim() == "ui") {
|
||||||
|
var streamName = eventPublisherConfiguration.getFromStreamName();
|
||||||
|
var streamVersion = eventPublisherConfiguration.getFromStreamVersion();
|
||||||
|
var streamId = streamName + ":" + streamVersion;
|
||||||
|
datasources.push(streamId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var datasourceCfg = {
|
||||||
|
"fieldLabel": "Event Stream",
|
||||||
|
"fieldName": "streamName",
|
||||||
|
"fieldType": "dropDown"
|
||||||
|
};
|
||||||
|
datasourceCfg['valueSet'] = datasources;
|
||||||
|
} catch (e) {
|
||||||
|
log.error(e);
|
||||||
|
}
|
||||||
|
formConfig.config.push(datasourceCfg);
|
||||||
|
return formConfig;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* validate the user input of provider configuration
|
||||||
|
* @param providerConfig
|
||||||
|
*/
|
||||||
|
validate = function(providerConfig) {
|
||||||
|
/*
|
||||||
|
validate the form and return
|
||||||
|
|
||||||
|
*/
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns the data mode either push or pull
|
||||||
|
*/
|
||||||
|
getMode = function() {
|
||||||
|
return 'push';
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns an array of column names & types
|
||||||
|
* @param providerConfig
|
||||||
|
*/
|
||||||
|
getSchema = function(providerConfig) {
|
||||||
|
var streamId = providerConfig["streamName"];
|
||||||
|
var output = [];
|
||||||
|
|
||||||
|
output.push({
|
||||||
|
fieldName: "TIMESTAMP",
|
||||||
|
fieldType: "time"
|
||||||
|
});
|
||||||
|
|
||||||
|
if (eventStreamService != null) {
|
||||||
|
var eventStreamConfiguration = eventStreamService.getEventStreamConfiguration(streamId);
|
||||||
|
if (eventStreamConfiguration != null) {
|
||||||
|
var metaData = eventStreamConfiguration.getStreamDefinition().getMetaData();
|
||||||
|
var correlationData = eventStreamConfiguration.getStreamDefinition().getCorrelationData();
|
||||||
|
var payloadData = eventStreamConfiguration.getStreamDefinition().getPayloadData();
|
||||||
|
if (metaData != null) {
|
||||||
|
for (var i = 0; i < metaData.size(); i++) {
|
||||||
|
var type = metaData.get(i).getType().toString().toLowerCase();
|
||||||
|
output.push({
|
||||||
|
fieldName: metaData.get(i).getName(),
|
||||||
|
fieldType: typeMap[type.toLowerCase()]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (correlationData != null) {
|
||||||
|
for (var i = 0; i < correlationData.size(); i++) {
|
||||||
|
var type = correlationData.get(i).getType().toString().toLowerCase();
|
||||||
|
output.push({
|
||||||
|
fieldName: correlationData.get(i).getName(),
|
||||||
|
fieldType: typeMap[type.toLowerCase()]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (payloadData != null) {
|
||||||
|
for (var i = 0; i < payloadData.size(); i++) {
|
||||||
|
var type = payloadData.get(i).getType().toString().toLowerCase();
|
||||||
|
output.push({
|
||||||
|
fieldName: payloadData.get(i).getName(),
|
||||||
|
fieldType: typeMap[type.toLowerCase()]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
};
|
||||||
|
|
||||||
|
getData = function(providerConfig,limit) {
|
||||||
|
var data = [];
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}());
|
@ -0,0 +1,287 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var CONSTANTS = {
|
||||||
|
urlSeperator: '/',
|
||||||
|
queryParamStreamName : '?streamname=',
|
||||||
|
queryParamStreamVersion : '&version=',
|
||||||
|
queryParamLastUpdatedTime : '&lastUpdatedTime=',
|
||||||
|
urlSecureTransportWebsocket : 'wss://',
|
||||||
|
urlSecureTransportHttp : 'https://',
|
||||||
|
colon : ':',
|
||||||
|
defaultIntervalTime : 10 * 1000,
|
||||||
|
defaultHostName : 'localhost',
|
||||||
|
defaultSecurePortNumber : '9443',
|
||||||
|
defaultMode : 'AUTO',
|
||||||
|
processModeHTTP : 'HTTP',
|
||||||
|
processModeWebSocket : 'WEBSOCKET',
|
||||||
|
processModeAuto : 'AUTO',
|
||||||
|
numThousand : 1000,
|
||||||
|
websocketTimeAppender : 400,
|
||||||
|
websocketSubscriptionEndpoint : 'portal/uipublisher/websocketSubscriptionEndpoint.jag',
|
||||||
|
httpEventRetrievalEndpoint : 'portal/uipublisher/httpEventRetrievalEndpoint.jag'
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var websocket = null;
|
||||||
|
var webSocketUrl;
|
||||||
|
var httpUrl;
|
||||||
|
var cepHostName;
|
||||||
|
var cepPortNumber;
|
||||||
|
var isErrorOccured = false;
|
||||||
|
var lastUpdatedtime = -1;
|
||||||
|
var polingInterval;
|
||||||
|
var stream;
|
||||||
|
var streamVersion;
|
||||||
|
var firstPollingAttempt;
|
||||||
|
var processMode;
|
||||||
|
var onSuccessFunction;
|
||||||
|
var onErrorFunction;
|
||||||
|
var terminateWebsocketInstance = false;
|
||||||
|
var pollingContinue = true;
|
||||||
|
|
||||||
|
function subscribe(streamName,version,intervalTime,
|
||||||
|
listeningFuncSuccessData,listeningFuncErrorData,cepHost,cepPort,mode){
|
||||||
|
stopPollingProcesses();
|
||||||
|
stream = streamName;
|
||||||
|
streamVersion = version;
|
||||||
|
onSuccessFunction = listeningFuncSuccessData;
|
||||||
|
onErrorFunction = listeningFuncErrorData;
|
||||||
|
|
||||||
|
if(intervalTime == null || intervalTime == ""){
|
||||||
|
polingInterval = CONSTANTS.defaultIntervalTime;
|
||||||
|
} else{
|
||||||
|
polingInterval = intervalTime * CONSTANTS.numThousand;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cepHost == null || cepHost == ""){
|
||||||
|
cepHostName = CONSTANTS.defaultHostName;
|
||||||
|
} else{
|
||||||
|
cepHostName = cepHost;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cepPort == null || cepPort == ""){
|
||||||
|
cepPortNumber = CONSTANTS.defaultSecurePortNumber;
|
||||||
|
} else{
|
||||||
|
cepPortNumber = cepPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(mode == null || mode == ""){
|
||||||
|
processMode = CONSTANTS.defaultMode;
|
||||||
|
} else{
|
||||||
|
processMode = mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
webSocketUrl = CONSTANTS.urlSecureTransportWebsocket + cepHostName + CONSTANTS.colon + cepPortNumber +
|
||||||
|
CONSTANTS.urlSeperator + CONSTANTS.websocketSubscriptionEndpoint;
|
||||||
|
|
||||||
|
if(processMode == CONSTANTS.processModeHTTP){
|
||||||
|
firstPollingAttempt = true;
|
||||||
|
pollingContinue = true;
|
||||||
|
startPoll();
|
||||||
|
} else{
|
||||||
|
initializeWebSocket(webSocketUrl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializing Web Socket
|
||||||
|
*/
|
||||||
|
function initializeWebSocket(webSocketUrl){
|
||||||
|
websocket = new WebSocket(webSocketUrl);
|
||||||
|
websocket.onopen = webSocketOnOpen;
|
||||||
|
websocket.onmessage = webSocketOnMessage;
|
||||||
|
websocket.onclose = webSocketOnClose;
|
||||||
|
websocket.onerror = webSocketOnError;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getWebsocketSubscriptionMessage(streamName, streamVersion, streamProperties, streamValues) {
|
||||||
|
if (streamProperties.length === streamValues.length) {
|
||||||
|
var message = {};
|
||||||
|
message.streamName = streamName;
|
||||||
|
message.streamVersion = streamVersion;
|
||||||
|
var i;
|
||||||
|
for (i = 0; i < streamProperties.length; i++) {
|
||||||
|
message.filterProps = [];
|
||||||
|
message.filterProps.push({
|
||||||
|
'name': streamProperties[i],
|
||||||
|
'value': streamValues[i]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify(message);
|
||||||
|
} else {
|
||||||
|
console.log('stream properties and values are not in equal size');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the parameters as query parameters.
|
||||||
|
* This method parses those parameters and returns.
|
||||||
|
* */
|
||||||
|
function getAllQueryParamsFromURL() {
|
||||||
|
var queryParamList = {}, qParam;
|
||||||
|
var urlQueryString = decodeURIComponent(window.top.location.search.substring(1));
|
||||||
|
|
||||||
|
if (urlQueryString) {
|
||||||
|
var queryStringPairs = urlQueryString.split('&');
|
||||||
|
for (var i = 0; i < queryStringPairs.length; i++) {
|
||||||
|
qParam = queryStringPairs[i].split('=');
|
||||||
|
queryParamList[qParam[0]] = qParam[1];
|
||||||
|
}
|
||||||
|
return queryParamList;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Web socket On Open
|
||||||
|
*/
|
||||||
|
var webSocketOnOpen = function () {
|
||||||
|
var params = getAllQueryParamsFromURL();
|
||||||
|
var deviceId;
|
||||||
|
var owner;
|
||||||
|
if (params) {
|
||||||
|
owner = params["owner"];
|
||||||
|
deviceId = params["deviceId"];
|
||||||
|
}
|
||||||
|
var filterPropNames = ["meta_owner", "meta_deviceId"];
|
||||||
|
var filterPropVals = [owner, deviceId];
|
||||||
|
var data = getWebsocketSubscriptionMessage(stream, streamVersion, filterPropNames, filterPropVals);
|
||||||
|
websocket.send(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On server sends a message
|
||||||
|
*/
|
||||||
|
var webSocketOnMessage = function (evt) {
|
||||||
|
var event = evt.data;
|
||||||
|
var array = JSON.parse(event);
|
||||||
|
constructPayload(array);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On server close
|
||||||
|
*/
|
||||||
|
var webSocketOnClose =function (e) {
|
||||||
|
|
||||||
|
if(isErrorOccured){
|
||||||
|
if(processMode != CONSTANTS.processModeWebSocket){
|
||||||
|
firstPollingAttempt = true;
|
||||||
|
pollingContinue = true;
|
||||||
|
startPoll();
|
||||||
|
}
|
||||||
|
} else{
|
||||||
|
if(!terminateWebsocketInstance){
|
||||||
|
waitForSocketConnection(websocket);
|
||||||
|
} else{
|
||||||
|
terminateWebsocketInstance = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On server Error
|
||||||
|
*/
|
||||||
|
var webSocketOnError = function (err) {
|
||||||
|
var error = "Error: Cannot connect to Websocket URL:" + webSocketUrl + " .Hence closing the connection!";
|
||||||
|
|
||||||
|
onErrorFunction(error);
|
||||||
|
isErrorOccured = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gracefully increments the connection retry
|
||||||
|
*/
|
||||||
|
var waitTime = CONSTANTS.numThousand;
|
||||||
|
function waitForSocketConnection(socket, callback){
|
||||||
|
setTimeout(
|
||||||
|
function () {
|
||||||
|
if (socket.readyState === 1) {
|
||||||
|
initializeWebSocket(webSocketUrl);
|
||||||
|
console.log("Connection is made");
|
||||||
|
if(callback != null){
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
websocket = new WebSocket(webSocketUrl);
|
||||||
|
waitTime += CONSTANTS.websocketTimeAppender;
|
||||||
|
waitForSocketConnection(websocket, callback);
|
||||||
|
}
|
||||||
|
}, waitTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Polling to retrieve events from http request periodically
|
||||||
|
*/
|
||||||
|
function startPoll(){
|
||||||
|
|
||||||
|
(function poll(){
|
||||||
|
setTimeout(function(){
|
||||||
|
httpUrl = CONSTANTS.urlSecureTransportHttp + cepHostName + CONSTANTS.colon + cepPortNumber +
|
||||||
|
CONSTANTS.urlSeperator + CONSTANTS.httpEventRetrievalEndpoint + CONSTANTS.queryParamStreamName + stream +
|
||||||
|
CONSTANTS.queryParamStreamVersion + streamVersion + CONSTANTS.queryParamLastUpdatedTime + lastUpdatedtime;;
|
||||||
|
$.getJSON(httpUrl, function(responseText) {
|
||||||
|
if(firstPollingAttempt){
|
||||||
|
/*var data = $("textarea#idConsole").val();
|
||||||
|
$("textarea#idConsole").val(data + "Successfully connected to HTTP.");*/
|
||||||
|
firstPollingAttempt = false;
|
||||||
|
}
|
||||||
|
var eventList = $.parseJSON(responseText.events);
|
||||||
|
if(eventList.length != 0){
|
||||||
|
lastUpdatedtime = responseText.lastEventTime;
|
||||||
|
for(var i=0;i<eventList.length;i++){
|
||||||
|
var arr = eventList[i];
|
||||||
|
constructPayload(arr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(pollingContinue){
|
||||||
|
startPoll();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.fail(function(errorData) {
|
||||||
|
var errorData = JSON.parse(errorData.responseText);
|
||||||
|
onErrorFunction(errorData.error);
|
||||||
|
});
|
||||||
|
}, polingInterval);
|
||||||
|
})()
|
||||||
|
}
|
||||||
|
|
||||||
|
function stopPollingProcesses(){
|
||||||
|
|
||||||
|
//stopping the Websocket
|
||||||
|
if(websocket != null){
|
||||||
|
terminateWebsocketInstance = true;
|
||||||
|
websocket.close();
|
||||||
|
}
|
||||||
|
//stopping the HTTPS Request
|
||||||
|
pollingContinue = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function constructPayload(eventsArray){
|
||||||
|
|
||||||
|
var streamId = stream + CONSTANTS.colon + streamVersion;
|
||||||
|
var twoDimentionalArray = [eventsArray];
|
||||||
|
onSuccessFunction(streamId,twoDimentionalArray);
|
||||||
|
|
||||||
|
}
|
After Width: | Height: | Size: 13 KiB |