From f6927be10ac0c731f861bbb74e01536e992dcce8 Mon Sep 17 00:00:00 2001 From: Menaka Jayawardena Date: Tue, 20 Dec 2016 12:31:48 +0530 Subject: [PATCH] Created gadgets and streams for sensor data. --- ...droid-Accelerometer-ExecutionPlan.siddhiql | 18 ++ .../artifact.xml | 23 ++ .../artifact.xml | 23 ++ ...g_wso2_iot_android_accelerometer_stats.xml | 98 ++++++ .../artifact.xml | 23 ++ ...iot.android.accelerometer.stats_1.0.0.json | 54 ++++ .../artifact.xml | 23 ++ ....wso2.iot.android.accelerometer_1.0.0.json | 34 +++ .../artifact.xml | 24 ++ ...iot.android.accelerometer.ui.publisher.xml | 7 + .../Accelerometer_X/conf.json | 1 + .../Accelerometer_X/css/number-chart.css | 35 +++ .../Accelerometer_X/gadget-controller.jag | 42 +++ .../Accelerometer_X/gadget.json | 9 + .../Accelerometer_X/gadget.xml | 62 ++++ .../Accelerometer_X/js/core/gadget-core.js | 64 ++++ .../Accelerometer_X/js/core/gadget-util.js | 35 +++ .../js/core/number-chart-api.js | 111 +++++++ .../js/core/provider-client.js | 51 ++++ .../js/core/realtime-provider-api.js | 154 ++++++++++ .../js/provider-libs/ws-client.js | 286 ++++++++++++++++++ .../Accelerometer_X/thumbnail.png | Bin 0 -> 12971 bytes .../artifact.xml | 23 ++ .../ACCELEROMETER_Y/conf.json | 1 + .../ACCELEROMETER_Y/css/number-chart.css | 35 +++ .../ACCELEROMETER_Y/gadget-controller.jag | 42 +++ .../ACCELEROMETER_Y/gadget.json | 9 + .../ACCELEROMETER_Y/gadget.xml | 62 ++++ .../ACCELEROMETER_Y/js/core/gadget-core.js | 64 ++++ .../ACCELEROMETER_Y/js/core/gadget-util.js | 35 +++ .../js/core/number-chart-api.js | 111 +++++++ .../js/core/provider-client.js | 51 ++++ .../js/core/realtime-provider-api.js | 154 ++++++++++ .../js/provider-libs/ws-client.js | 286 ++++++++++++++++++ .../ACCELEROMETER_Y/thumbnail.png | Bin 0 -> 12971 bytes .../artifact.xml | 23 ++ .../ACCELEROMETER_Z/conf.json | 1 + .../ACCELEROMETER_Z/css/number-chart.css | 35 +++ .../ACCELEROMETER_Z/gadget-controller.jag | 42 +++ .../ACCELEROMETER_Z/gadget.json | 9 + .../ACCELEROMETER_Z/gadget.xml | 62 ++++ .../ACCELEROMETER_Z/js/core/gadget-core.js | 64 ++++ .../ACCELEROMETER_Z/js/core/gadget-util.js | 35 +++ .../js/core/number-chart-api.js | 111 +++++++ .../js/core/provider-client.js | 51 ++++ .../js/core/realtime-provider-api.js | 154 ++++++++++ .../js/provider-libs/ws-client.js | 286 ++++++++++++++++++ .../ACCELEROMETER_Z/thumbnail.png | Bin 0 -> 12971 bytes .../artifact.xml | 23 ++ .../Android-Sense-ExecutionPlan.siddhiql | 57 +++- .../Android-Gravity-ExecutionPlan.siddhiql | 18 ++ .../artifact.xml | 23 ++ .../android_gravity_gadget/GRAVITY/conf.json | 1 + .../GRAVITY/css/number-chart.css | 35 +++ .../GRAVITY/gadget-controller.jag | 42 +++ .../GRAVITY/gadget.json | 9 + .../android_gravity_gadget/GRAVITY/gadget.xml | 58 ++++ .../GRAVITY/js/core/batch-provider-api.js | 190 ++++++++++++ .../GRAVITY/js/core/gadget-core.js | 85 ++++++ .../GRAVITY/js/core/gadget-util.js | 35 +++ .../GRAVITY/js/core/number-chart-api.js | 111 +++++++ .../GRAVITY/thumbnail.png | Bin 0 -> 12971 bytes .../android_gravity_gadget/artifact.xml | 23 ++ .../artifact.xml | 23 ++ .../org_wso2_iot_android_gravity_stats.xml | 98 ++++++ .../artifact.xml | 24 ++ ....wso2.iot.android.gravity.stats_1.0.0.json | 54 ++++ .../android_gravity_streams/artifact.xml | 23 ++ .../org.wso2.iot.android.gravity_1.0.0.json | 34 +++ .../artifact.xml | 24 ++ ....wso2.iot.android.gravity.ui.publisher.xml | 7 + .../Android-Gyroscope-ExecutionPlan.siddhiql | 18 ++ .../artifact.xml | 24 ++ .../artifact.xml | 24 ++ .../org_wso2_iot_android_gyroscope_stats.xml | 98 ++++++ .../artifact.xml | 23 ++ ...so2.iot.android.gyroscope.stats_1.0.0.json | 54 ++++ .../android_gyroscope_streams/artifact.xml | 23 ++ .../org.wso2.iot.android.gyroscope_1.0.0.json | 34 +++ .../artifact.xml | 24 ++ ...so2.iot.android.gyroscope.ui.publisher.xml | 7 + .../Android-Light-ExecutionPlan.siddhiql | 18 ++ .../android_light_executionplan/artifact.xml | 23 ++ .../artifact.xml | 23 ++ .../org_wso2_iot_android_light_stats.xml | 82 +++++ .../android_light_stats_streams/artifact.xml | 23 ++ ...rg.wso2.iot.android.light.stats_1.0.0.json | 46 +++ .../android_light_streams/artifact.xml | 23 ++ .../org.wso2.iot.android.light_1.0.0.json | 26 ++ .../artifact.xml | 24 ++ ...rg.wso2.iot.android.light.ui.publisher.xml | 7 + .../Android-Magnetic-ExecutionPlan.siddhiql | 18 ++ .../artifact.xml | 23 ++ .../artifact.xml | 23 ++ .../org_wso2_iot_android_magnetic_stats.xml | 98 ++++++ .../artifact.xml | 24 ++ ...wso2.iot.android.magnetic.stats_1.0.0.json | 54 ++++ .../android_magnetic_streams/artifact.xml | 23 ++ .../org.wso2.iot.android.magnetic_1.0.0.json | 34 +++ .../artifact.xml | 24 ++ ...wso2.iot.android.magnetic.ui.publisher.xml | 7 + .../Android-Pressure-ExecutionPlan.siddhiql | 18 ++ .../artifact.xml | 24 ++ .../PRESSURE/conf.json | 15 + .../PRESSURE/css/number-chart.css | 35 +++ .../PRESSURE/gadget-controller.jag | 42 +++ .../PRESSURE/gadget.json | 9 + .../PRESSURE/gadget.xml | 58 ++++ .../PRESSURE/js/core/batch-provider-api.js | 191 ++++++++++++ .../PRESSURE/js/core/gadget-core.js | 85 ++++++ .../PRESSURE/js/core/gadget-util.js | 35 +++ .../PRESSURE/js/core/number-chart-api.js | 111 +++++++ .../PRESSURE/thumbnail.png | Bin 0 -> 12971 bytes .../android_pressure_gadget/artifact.xml | 22 ++ .../artifact.xml | 24 ++ .../org_wso2_iot_android_pressure_stats.xml | 82 +++++ .../artifact.xml | 24 ++ ...wso2.iot.android.pressure.stats_1.0.0.json | 46 +++ .../android_pressure_streams/artifact.xml | 23 ++ .../org.wso2.iot.android.pressure_1.0.0.json | 26 ++ .../artifact.xml | 24 ++ ...wso2.iot.android.pressure.ui.publisher.xml | 7 + .../Android-Proximity-ExecutionPlan.siddhiql | 18 ++ .../artifact.xml | 24 ++ .../PROXIMITY/conf.json | 1 + .../PROXIMITY/css/number-chart.css | 35 +++ .../PROXIMITY/gadget-controller.jag | 42 +++ .../PROXIMITY/gadget.json | 9 + .../PROXIMITY/gadget.xml | 58 ++++ .../PROXIMITY/js/core/batch-provider-api.js | 190 ++++++++++++ .../PROXIMITY/js/core/gadget-core.js | 85 ++++++ .../PROXIMITY/js/core/gadget-util.js | 35 +++ .../PROXIMITY/js/core/number-chart-api.js | 111 +++++++ .../PROXIMITY/thumbnail.png | Bin 0 -> 12971 bytes .../android_proximity_gadget/artifact.xml | 22 ++ .../artifact.xml | 24 ++ .../org_wso2_iot_android_proximity_stats.xml | 82 +++++ .../artifact.xml | 24 ++ ...so2.iot.android.proximity.stats_1.0.0.json | 46 +++ .../android_proximity_streams/artifact.xml | 23 ++ .../org.wso2.iot.android.proximity_1.0.0.json | 26 ++ .../artifact.xml | 24 ++ ...so2.iot.android.proximity.ui.publisher.xml | 7 + .../Android-Rotation-ExecutionPlan.siddhiql | 18 ++ .../artifact.xml | 23 ++ .../artifact.xml | 23 ++ .../org_wso2_iot_android_rotation_stats.xml | 98 ++++++ .../artifact.xml | 24 ++ ...wso2.iot.android.rotation.stats_1.0.0.json | 54 ++++ .../android_rotation_streams/artifact.xml | 23 ++ .../org.wso2.iot.android.rotation_1.0.0.json | 34 +++ .../artifact.xml | 24 ++ ...wso2.iot.android.rotation.ui.publisher.xml | 7 + .../android_sense_dashboard/android-iot.json | 223 ++++++++++++-- .../carbonapps/androidsense/artifacts.xml | 100 ++++++ 155 files changed, 7292 insertions(+), 18 deletions(-) create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_executionplan/Android-Accelerometer-ExecutionPlan.siddhiql create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_executionplan/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_event_sink/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_event_sink/org_wso2_iot_android_accelerometer_stats.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_streams/org.wso2.iot.android.accelerometer.stats_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_streams/org.wso2.iot.android.accelerometer_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_ui_event_publisher/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_ui_event_publisher/org.wso2.iot.android.accelerometer.ui.publisher.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/conf.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/css/number-chart.css create mode 100644 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 create mode 100644 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.json create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/conf.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/css/number-chart.css create mode 100644 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 create mode 100644 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.json create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/conf.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/css/number-chart.css create mode 100644 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 create mode 100644 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.json create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_executionplan/Android-Gravity-ExecutionPlan.siddhiql create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_executionplan/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/conf.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/css/number-chart.css create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/gadget-controller.jag create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/gadget.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/gadget.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/batch-provider-api.js create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/gadget-core.js create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/gadget-util.js create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/number-chart-api.js create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/thumbnail.png create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_event_sink/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_event_sink/org_wso2_iot_android_gravity_stats.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_streams/org.wso2.iot.android.gravity.stats_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_streams/org.wso2.iot.android.gravity_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_ui_event_publisher/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_ui_event_publisher/org.wso2.iot.android.gravity.ui.publisher.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_executionplan/Android-Gyroscope-ExecutionPlan.siddhiql create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_executionplan/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_event_sink/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_event_sink/org_wso2_iot_android_gyroscope_stats.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_streams/org.wso2.iot.android.gyroscope.stats_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_streams/org.wso2.iot.android.gyroscope_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_ui_event_publisher/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_ui_event_publisher/org.wso2.iot.android.gyroscope.ui.publisher.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_executionplan/Android-Light-ExecutionPlan.siddhiql create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_executionplan/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_event_sink/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_event_sink/org_wso2_iot_android_light_stats.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_streams/org.wso2.iot.android.light.stats_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_streams/org.wso2.iot.android.light_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_ui_event_publisher/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_ui_event_publisher/org.wso2.iot.android.light.ui.publisher.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_executionplan/Android-Magnetic-ExecutionPlan.siddhiql create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_executionplan/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_event_sink/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_event_sink/org_wso2_iot_android_magnetic_stats.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_streams/org.wso2.iot.android.magnetic.stats_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_streams/org.wso2.iot.android.magnetic_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_ui_event_publisher/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_ui_event_publisher/org.wso2.iot.android.magnetic.ui.publisher.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_executionplan/Android-Pressure-ExecutionPlan.siddhiql create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_executionplan/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/conf.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/css/number-chart.css create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/gadget-controller.jag create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/gadget.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/gadget.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/batch-provider-api.js create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/gadget-core.js create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/gadget-util.js create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/number-chart-api.js create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/thumbnail.png create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_event_sink/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_event_sink/org_wso2_iot_android_pressure_stats.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_streams/org.wso2.iot.android.pressure.stats_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_streams/org.wso2.iot.android.pressure_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_ui_event_publisher/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_ui_event_publisher/org.wso2.iot.android.pressure.ui.publisher.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_executionplan/Android-Proximity-ExecutionPlan.siddhiql create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_executionplan/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/conf.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/css/number-chart.css create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/gadget-controller.jag create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/gadget.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/gadget.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/batch-provider-api.js create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/gadget-core.js create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/gadget-util.js create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/number-chart-api.js create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/thumbnail.png create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_event_sink/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_event_sink/org_wso2_iot_android_proximity_stats.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_streams/org.wso2.iot.android.proximity.stats_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_streams/org.wso2.iot.android.proximity_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_ui_event_publisher/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_ui_event_publisher/org.wso2.iot.android.proximity.ui.publisher.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_executionplan/Android-Rotation-ExecutionPlan.siddhiql create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_executionplan/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_event_sink/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_event_sink/org_wso2_iot_android_rotation_stats.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_streams/org.wso2.iot.android.rotation.stats_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_streams/artifact.xml create mode 100755 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_streams/org.wso2.iot.android.rotation_1.0.0.json create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_ui_event_publisher/artifact.xml create mode 100644 components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_ui_event_publisher/org.wso2.iot.android.rotation.ui.publisher.xml diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_executionplan/Android-Accelerometer-ExecutionPlan.siddhiql b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_executionplan/Android-Accelerometer-ExecutionPlan.siddhiql new file mode 100755 index 000000000..fa0e7517d --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_executionplan/Android-Accelerometer-ExecutionPlan.siddhiql @@ -0,0 +1,18 @@ +@Plan:name('Android-Accelerometer-ExecutionPlan') + +@Plan:description('Process accelerometer changes.') + +@Import('org.wso2.iot.android.accelerometer:1.0.0') +define stream AccelerometerStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float); + +@Export('org.wso2.iot.android.accelerometer.stats:1.0.0') +define stream AccelerometerStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, x +float, y float, z float, year int, month int, day int, hour int, minute int); + +partition with (meta_deviceId of AccelerometerStream) +begin + from AccelerometerStream + select meta_owner, meta_deviceId, meta_timestamp, x, y, z, time:extract + (meta_timestamp, 'year') as year, time:extract(meta_timestamp, 'month') as month, time:extract(meta_timestamp, 'day') as day, time:extract(meta_timestamp, 'hour') as hour, time:extract(meta_timestamp, 'minute') as minute + insert into AccelerometerStatsStream; +end; \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_executionplan/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_executionplan/artifact.xml new file mode 100644 index 000000000..068ee9a2d --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_executionplan/artifact.xml @@ -0,0 +1,23 @@ + + + + + Android-Accelerometer-ExecutionPlan.siddhiql + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_event_sink/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_event_sink/artifact.xml new file mode 100644 index 000000000..ada735d4c --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_event_sink/artifact.xml @@ -0,0 +1,23 @@ + + + + + org_wso2_iot_android_accelerometer_stats.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_event_sink/org_wso2_iot_android_accelerometer_stats.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_event_sink/org_wso2_iot_android_accelerometer_stats.xml new file mode 100755 index 000000000..abf3b755b --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_event_sink/org_wso2_iot_android_accelerometer_stats.xml @@ -0,0 +1,98 @@ + + + + + meta_owner + false + false + false + false + STRING + + + meta_deviceId + false + false + false + false + STRING + + + meta_timestamp + false + false + false + false + LONG + + + x + false + false + false + false + FLOAT + + + y + false + false + false + false + FLOAT + + + z + false + false + false + false + FLOAT + + + year + false + false + false + false + INTEGER + + + month + false + false + false + false + INTEGER + + + day + false + false + false + false + INTEGER + + + hour + false + false + false + false + INTEGER + + + minute + false + false + false + false + INTEGER + + + + org.wso2.iot.android.accelerometer.stats:1.0.0 + + false + EVENT_STORE + \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_streams/artifact.xml new file mode 100644 index 000000000..2f5ff7deb --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_streams/artifact.xml @@ -0,0 +1,23 @@ + + + + + org.wso2.iot.android.accelerometer.stats_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_streams/org.wso2.iot.android.accelerometer.stats_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_streams/org.wso2.iot.android.accelerometer.stats_1.0.0.json new file mode 100755 index 000000000..f735e0e3b --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_stats_streams/org.wso2.iot.android.accelerometer.stats_1.0.0.json @@ -0,0 +1,54 @@ +{ + "name": "org.wso2.iot.android.accelerometer.stats", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "x", + "type": "FLOAT" + }, + { + "name": "y", + "type": "FLOAT" + }, + { + "name": "z", + "type": "FLOAT" + }, + { + "name": "year", + "type": "INT" + }, + { + "name": "month", + "type": "INT" + }, + { + "name": "day", + "type": "INT" + }, + { + "name": "hour", + "type": "INT" + }, + { + "name": "minute", + "type": "INT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_streams/artifact.xml new file mode 100644 index 000000000..b2a12cc76 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_streams/artifact.xml @@ -0,0 +1,23 @@ + + + + + org.wso2.iot.android.accelerometer_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_streams/org.wso2.iot.android.accelerometer_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_streams/org.wso2.iot.android.accelerometer_1.0.0.json new file mode 100755 index 000000000..2c7bdbe54 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_streams/org.wso2.iot.android.accelerometer_1.0.0.json @@ -0,0 +1,34 @@ +{ + "name": "org.wso2.iot.android.accelerometer", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "x", + "type": "FLOAT" + }, + { + "name": "y", + "type": "FLOAT" + }, + { + "name": "z", + "type": "FLOAT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_ui_event_publisher/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_ui_event_publisher/artifact.xml new file mode 100644 index 000000000..44915d14e --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_ui_event_publisher/artifact.xml @@ -0,0 +1,24 @@ + + + + + org.wso2.iot.android.accelerometer.ui.publisher.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_ui_event_publisher/org.wso2.iot.android.accelerometer.ui.publisher.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_ui_event_publisher/org.wso2.iot.android.accelerometer.ui.publisher.xml new file mode 100644 index 000000000..c955c6b86 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_ui_event_publisher/org.wso2.iot.android.accelerometer.ui.publisher.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/conf.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/conf.json new file mode 100644 index 000000000..5617ac60d --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/conf.json @@ -0,0 +1 @@ +{"provider-conf" : {"streamName" : "org.wso2.iot.android.accelerometer:1.0.0", "provider-name" : "realtime"}, "chart-conf" : {"x" : "x", "title" : "ACCELEROMETER X", "maxLength" : "30", "gadget-name" : "Accelerometer X", "chart-name" : "number-chart"}} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/css/number-chart.css b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/css/number-chart.css new file mode 100644 index 000000000..5dde0413a --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_x_gadget/Accelerometer_X/css/number-chart.css @@ -0,0 +1,35 @@ +#canvas { + height: 100%; + width: 100%; +} + +p { + margin: 0; + display: block; + text-align: center; + font-weight: bold; +} + +.titlecanvasContent { + color:steelblue; + font-size:18px; + font-weight: normal; + padding: 10px 0; +} + +.valcanvasContent { + color:#438CAD; + font-size:50px; + font-weight: normal; +} + + +.diffcanvasContent { + color:#438CAD; + font-size:14px; +} + +.diffPercentagecanvasContent { + color:#ff944d; + font-size:14px; +} \ No newline at end of file diff --git a/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 b/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 new file mode 100644 index 000000000..f84538a40 --- /dev/null +++ b/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 @@ -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; + } + +}()); + + +%> diff --git a/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.json b/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.json new file mode 100644 index 000000000..90a89cbff --- /dev/null +++ b/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.json @@ -0,0 +1,9 @@ +{ + "id": "Accelerometer_X", + "title": "Accelerometer X", + "type": "gadget", + "thumbnail": "gadget/Accelerometer_X/thumbnail.png", + "data": { + "url": "gadget/Accelerometer_X/gadget.xml" + } +} diff --git a/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 b/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 new file mode 100644 index 000000000..450b1bb05 --- /dev/null +++ b/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 @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + ]]> +
+
diff --git a/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 b/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 new file mode 100644 index 000000000..8bfc5f742 --- /dev/null +++ b/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 @@ -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(); + +}); +}); diff --git a/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 b/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 new file mode 100644 index 000000000..ccfb70698 --- /dev/null +++ b/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 @@ -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/Accelerometer_X"; + 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); + } +} \ No newline at end of file diff --git a/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 b/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 new file mode 100644 index 000000000..ef2c5da98 --- /dev/null +++ b/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 @@ -0,0 +1,111 @@ +/* + * 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 + '/number-chart/config.json').config; + /* + dynamic logic goes here + */ + return chartConf; + + }; + + /** + * validate the user inout for the chart configurationx + * @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) { + 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.maxLength = _chartConfig.maxLength; + conf.charts = []; + conf.charts[0] = { + type : "number", + title : _chartConfig.title + }; + return conf; + }; + + +}()); diff --git a/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 b/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 new file mode 100644 index 000000000..6196677f6 --- /dev/null +++ b/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 @@ -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); + }; + +}()); + diff --git a/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 b/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 new file mode 100644 index 000000000..7cf59af77 --- /dev/null +++ b/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 @@ -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; + }; + + +}()); diff --git a/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 b/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 new file mode 100644 index 000000000..fc49d8a35 --- /dev/null +++ b/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 @@ -0,0 +1,286 @@ +/* + * Copyright (c) 2015, 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 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 hXH@SWyZC + + + + Accelerometer_X + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/conf.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/conf.json new file mode 100644 index 000000000..f20d0c48a --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/conf.json @@ -0,0 +1 @@ +{"provider-conf" : {"streamName" : "org.wso2.iot.android.accelerometer:1.0.0", "provider-name" : "realtime"}, "chart-conf" : {"x" : "y", "title" : "ACCELEROMETER Y", "maxLength" : "30", "gadget-name" : "ACCELEROMETER Y", "chart-name" : "number-chart"}} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/css/number-chart.css b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/css/number-chart.css new file mode 100644 index 000000000..5dde0413a --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_y_gadget/ACCELEROMETER_Y/css/number-chart.css @@ -0,0 +1,35 @@ +#canvas { + height: 100%; + width: 100%; +} + +p { + margin: 0; + display: block; + text-align: center; + font-weight: bold; +} + +.titlecanvasContent { + color:steelblue; + font-size:18px; + font-weight: normal; + padding: 10px 0; +} + +.valcanvasContent { + color:#438CAD; + font-size:50px; + font-weight: normal; +} + + +.diffcanvasContent { + color:#438CAD; + font-size:14px; +} + +.diffPercentagecanvasContent { + color:#ff944d; + font-size:14px; +} \ No newline at end of file diff --git a/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 b/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 new file mode 100644 index 000000000..f84538a40 --- /dev/null +++ b/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 @@ -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; + } + +}()); + + +%> diff --git a/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.json b/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.json new file mode 100644 index 000000000..16db7931b --- /dev/null +++ b/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.json @@ -0,0 +1,9 @@ +{ + "id": "ACCELEROMETER_Y", + "title": "ACCELEROMETER Y", + "type": "gadget", + "thumbnail": "gadget/ACCELEROMETER_Y/thumbnail.png", + "data": { + "url": "gadget/ACCELEROMETER_Y/gadget.xml" + } +} diff --git a/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 b/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 new file mode 100644 index 000000000..8d098fb3e --- /dev/null +++ b/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 @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + ]]> +
+
diff --git a/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 b/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 new file mode 100644 index 000000000..8bfc5f742 --- /dev/null +++ b/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 @@ -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(); + +}); +}); diff --git a/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 b/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 new file mode 100644 index 000000000..2ddc218d2 --- /dev/null +++ b/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 @@ -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/ACCELEROMETER_Y"; + 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); + } +} \ No newline at end of file diff --git a/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 b/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 new file mode 100644 index 000000000..ef2c5da98 --- /dev/null +++ b/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 @@ -0,0 +1,111 @@ +/* + * 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 + '/number-chart/config.json').config; + /* + dynamic logic goes here + */ + return chartConf; + + }; + + /** + * validate the user inout for the chart configurationx + * @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) { + 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.maxLength = _chartConfig.maxLength; + conf.charts = []; + conf.charts[0] = { + type : "number", + title : _chartConfig.title + }; + return conf; + }; + + +}()); diff --git a/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 b/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 new file mode 100644 index 000000000..6196677f6 --- /dev/null +++ b/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 @@ -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); + }; + +}()); + diff --git a/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 b/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 new file mode 100644 index 000000000..7cf59af77 --- /dev/null +++ b/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 @@ -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; + }; + + +}()); diff --git a/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 b/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 new file mode 100644 index 000000000..fc49d8a35 --- /dev/null +++ b/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 @@ -0,0 +1,286 @@ +/* + * Copyright (c) 2015, 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 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 hXH@SWyZC + + + + ACCELEROMETER_Y + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/conf.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/conf.json new file mode 100644 index 000000000..1940ff1dd --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/conf.json @@ -0,0 +1 @@ +{"provider-conf" : {"streamName" : "org.wso2.iot.android.accelerometer:1.0.0", "provider-name" : "realtime"}, "chart-conf" : {"x" : "z", "title" : "ACCELEROMETER Z", "maxLength" : "30", "gadget-name" : "ACCELEROMETER Z", "chart-name" : "number-chart"}} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/css/number-chart.css b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/css/number-chart.css new file mode 100644 index 000000000..5dde0413a --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_accelerometer_z_gadget/ACCELEROMETER_Z/css/number-chart.css @@ -0,0 +1,35 @@ +#canvas { + height: 100%; + width: 100%; +} + +p { + margin: 0; + display: block; + text-align: center; + font-weight: bold; +} + +.titlecanvasContent { + color:steelblue; + font-size:18px; + font-weight: normal; + padding: 10px 0; +} + +.valcanvasContent { + color:#438CAD; + font-size:50px; + font-weight: normal; +} + + +.diffcanvasContent { + color:#438CAD; + font-size:14px; +} + +.diffPercentagecanvasContent { + color:#ff944d; + font-size:14px; +} \ No newline at end of file diff --git a/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 b/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 new file mode 100644 index 000000000..f84538a40 --- /dev/null +++ b/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 @@ -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; + } + +}()); + + +%> diff --git a/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.json b/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.json new file mode 100644 index 000000000..4236c240a --- /dev/null +++ b/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.json @@ -0,0 +1,9 @@ +{ + "id": "ACCELEROMETER_Z", + "title": "ACCELEROMETER Z", + "type": "gadget", + "thumbnail": "gadget/ACCELEROMETER_Z/thumbnail.png", + "data": { + "url": "gadget/ACCELEROMETER_Z/gadget.xml" + } +} diff --git a/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 b/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 new file mode 100644 index 000000000..77802fd2d --- /dev/null +++ b/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 @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + ]]> +
+
diff --git a/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 b/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 new file mode 100644 index 000000000..8bfc5f742 --- /dev/null +++ b/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 @@ -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(); + +}); +}); diff --git a/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 b/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 new file mode 100644 index 000000000..ffdc7ddc1 --- /dev/null +++ b/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 @@ -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/ACCELEROMETER_Z"; + 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); + } +} \ No newline at end of file diff --git a/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 b/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 new file mode 100644 index 000000000..ef2c5da98 --- /dev/null +++ b/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 @@ -0,0 +1,111 @@ +/* + * 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 + '/number-chart/config.json').config; + /* + dynamic logic goes here + */ + return chartConf; + + }; + + /** + * validate the user inout for the chart configurationx + * @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) { + 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.maxLength = _chartConfig.maxLength; + conf.charts = []; + conf.charts[0] = { + type : "number", + title : _chartConfig.title + }; + return conf; + }; + + +}()); diff --git a/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 b/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 new file mode 100644 index 000000000..6196677f6 --- /dev/null +++ b/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 @@ -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); + }; + +}()); + diff --git a/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 b/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 new file mode 100644 index 000000000..7cf59af77 --- /dev/null +++ b/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 @@ -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; + }; + + +}()); diff --git a/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 b/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 new file mode 100644 index 000000000..fc49d8a35 --- /dev/null +++ b/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 @@ -0,0 +1,286 @@ +/* + * Copyright (c) 2015, 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 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 hXH@SWyZC + + + + ACCELEROMETER_Z + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_android_sense_executionplan/Android-Sense-ExecutionPlan.siddhiql b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_android_sense_executionplan/Android-Sense-ExecutionPlan.siddhiql index 05eed9510..3b4d7b32f 100755 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_android_sense_executionplan/Android-Sense-ExecutionPlan.siddhiql +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_android_sense_executionplan/Android-Sense-ExecutionPlan.siddhiql @@ -32,6 +32,61 @@ define stream SmsStream (meta_owner string, meta_deviceId string, meta_timestamp @Export('org.wso2.geo.LocationStream:1.0.0') define stream geoLocationStream (id string, timeStamp long, latitude double, longitude double, type string, speed float, heading float); +@Export('org.wso2.iot.android.accelerometer:1.0.0') +define stream AccelerometerStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float); + +@Export('org.wso2.iot.android.gyroscope:1.0.0') +define stream GyroscopeStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float); + +@Export('org.wso2.iot.android.magnetic:1.0.0') +define stream MagneticStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float); + +@Export('org.wso2.iot.android.gravity:1.0.0') +define stream GravityStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float); + +@Export('org.wso2.iot.android.rotation:1.0.0') +define stream RotationStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float); + +@Export('org.wso2.iot.android.pressure:1.0.0') +define stream PressureStream (meta_owner string, meta_deviceId string, meta_timestamp long, pressure float); + +@Export('org.wso2.iot.android.light:1.0.0') +define stream LightStream (meta_owner string, meta_deviceId string, meta_timestamp long, light float); + +@Export('org.wso2.iot.android.proximity:1.0.0') +define stream ProximityStream (meta_owner string, meta_deviceId string, meta_timestamp long, proximity float); + +from AndroidSense[meta_type == 'accelerometer'] +select meta_owner, meta_deviceId, meta_timestamp, accelerometer_x as x, accelerometer_y as y, accelerometer_z as z +insert into AccelerometerStream; + +from AndroidSense[meta_type == 'gyroscope'] +select meta_owner, meta_deviceId, meta_timestamp, gyroscope_x as x, gyroscope_y as y, gyroscope_z as z +insert into GyroscopeStream; +from AndroidSense[meta_type == 'magnetic'] +select meta_owner, meta_deviceId, meta_timestamp, magnetic_x as x, magnetic_y as y, magnetic_z as z +insert into MagneticStream; + +from AndroidSense[meta_type == 'gravity'] +select meta_owner, meta_deviceId, meta_timestamp, gravity_x as x, gravity_y as y, gravity_z as z +insert into GravityStream; + +from AndroidSense[meta_type == 'rotation'] +select meta_owner, meta_deviceId, meta_timestamp, rotation_x as x, rotation_y as y, rotation_z as z +insert into RotationStream; + +from AndroidSense[meta_type == 'pressure'] +select meta_owner, meta_deviceId, meta_timestamp, pressure as pressure +insert into PressureStream; + +from AndroidSense[meta_type == 'light'] +select meta_owner, meta_deviceId, meta_timestamp, light as light +insert into LightStream; + +from AndroidSense[meta_type == 'proximity'] +select meta_owner, meta_deviceId, meta_timestamp, proximity as proximity +insert into ProximityStream; + from AndroidSense[meta_type == 'sms'] select meta_owner, meta_deviceId, meta_timestamp, sms_number as number, action as type, "" as body insert into SmsStream; @@ -66,4 +121,4 @@ insert into DataStream; from AndroidSense[meta_type == 'gps'] select meta_deviceId as id, meta_timestamp as timeStamp, gps_lat as latitude, gps_long as longitude, "android_sense" as type, speed_limit as speed, 0.0f as heading -insert into geoLocationStream; \ No newline at end of file +insert into geoLocationStream; diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_executionplan/Android-Gravity-ExecutionPlan.siddhiql b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_executionplan/Android-Gravity-ExecutionPlan.siddhiql new file mode 100755 index 000000000..051d8c18f --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_executionplan/Android-Gravity-ExecutionPlan.siddhiql @@ -0,0 +1,18 @@ +@Plan:name('Android-Gravity-ExecutionPlan') + +@Plan:description('Process gravity changes.') + +@Import('org.wso2.iot.android.gravity:1.0.0') +define stream GravityStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float); + +@Export('org.wso2.iot.android.gravity.stats:1.0.0') +define stream GravityStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, x +float, y float, z float, year int, month int, day int, hour int, minute int); + +partition with (meta_deviceId of GravityStream) +begin + from GravityStream + select meta_owner, meta_deviceId, meta_timestamp, x, y, z, time:extract + (meta_timestamp, 'year') as year, time:extract(meta_timestamp, 'month') as month, time:extract(meta_timestamp, 'day') as day, time:extract(meta_timestamp, 'hour') as hour, time:extract(meta_timestamp, 'minute') as minute + insert into GravityStatsStream; +end; \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_executionplan/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_executionplan/artifact.xml new file mode 100644 index 000000000..2aed83ad8 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_executionplan/artifact.xml @@ -0,0 +1,23 @@ + + + + + Android-Gravity-ExecutionPlan.siddhiql + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/conf.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/conf.json new file mode 100644 index 000000000..4cedf32bd --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/conf.json @@ -0,0 +1 @@ +{"provider-conf" : {"tableName" : "ORG_WSO2_IOT_ANDROID_GRAVITY_STATS", "query" : "", "limit" : "", "provider-name" : "batch"}, "chart-conf" : {"x" : "z", "title" : "GRAVITY", "maxLength" : "30", "gadget-name" : "GRAVITY", "chart-name" : "number-chart"}} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/css/number-chart.css b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/css/number-chart.css new file mode 100644 index 000000000..5dde0413a --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/css/number-chart.css @@ -0,0 +1,35 @@ +#canvas { + height: 100%; + width: 100%; +} + +p { + margin: 0; + display: block; + text-align: center; + font-weight: bold; +} + +.titlecanvasContent { + color:steelblue; + font-size:18px; + font-weight: normal; + padding: 10px 0; +} + +.valcanvasContent { + color:#438CAD; + font-size:50px; + font-weight: normal; +} + + +.diffcanvasContent { + color:#438CAD; + font-size:14px; +} + +.diffPercentagecanvasContent { + color:#ff944d; + font-size:14px; +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/gadget-controller.jag b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/gadget-controller.jag new file mode 100644 index 000000000..f84538a40 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/gadget-controller.jag @@ -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; + } + +}()); + + +%> diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/gadget.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/gadget.json new file mode 100644 index 000000000..96e28c842 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/gadget.json @@ -0,0 +1,9 @@ +{ + "id": "GRAVITY", + "title": "GRAVITY", + "type": "gadget", + "thumbnail": "gadget/GRAVITY/thumbnail.png", + "data": { + "url": "gadget/GRAVITY/gadget.xml" + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/gadget.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/gadget.xml new file mode 100644 index 000000000..80b23b686 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/gadget.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + ]]> +
+
diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/batch-provider-api.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/batch-provider-api.js new file mode 100644 index 000000000..30c96902a --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/batch-provider-api.js @@ -0,0 +1,190 @@ +/* + * 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 = 'batch'; + var TYPE = "type"; + var TABLE_NAME = "tableName"; + var HTTPS_TRANSPORT = "https"; + var CONTENT_TYPE_JSON = "application/json"; + var AUTHORIZATION_HEADER = "Authorization"; + var USER_TOKEN = "user"; + var TENANT_DOMAIN = "domain"; + var CONST_AT = "@"; + var USERNAME = "username"; + var HTTP_USER_NOT_AUTHENTICATED = 403; + var JS_MAX_VALUE = "9007199254740992"; + var JS_MIN_VALUE = "-9007199254740992"; + + var typeMap = { + "bool" : "string", + "boolean" : "string", + "string" : "string", + "int" : "number", + "integer" : "number", + "long" : "number", + "double" : "number", + "float" : "number", + "time": "time" + }; + + var log = new Log(); + var carbon = require('carbon'); + var configs = require('/configs/designer.json'); + var utils = require('/modules/utils.js'); + var JSUtils = Packages.org.wso2.carbon.analytics.jsservice.Utils; + var AnalyticsCachedJSServiceConnector = Packages.org.wso2.carbon.analytics.jsservice.AnalyticsCachedJSServiceConnector; + var AnalyticsCache = Packages.org.wso2.carbon.analytics.jsservice.AnalyticsCachedJSServiceConnector.AnalyticsCache; + var cacheTimeoutSeconds = 5; + var loggedInUser = null; + + if (configs.cacheTimeoutSeconds) { + cacheTimeoutSeconds = parseInt(configs.cacheTimeoutSeconds); + } + var cacheSizeBytes = 1024 * 1024 * 1024; // 1GB + if (configs.cacheSizeBytes) { + cacheSizeBytes = parseInt(configs.cacheSizeBytes); + } + response.contentType = CONTENT_TYPE_JSON; + + var authParam = request.getHeader(AUTHORIZATION_HEADER); + if (authParam != null) { + credentials = JSUtils.authenticate(authParam); + loggedInUser = credentials[0]; + } else { + var token = session.get(USER_TOKEN); + if (token != null) { + loggedInUser = token[USERNAME] + CONST_AT + token[TENANT_DOMAIN]; + } else { + log.error("user is not authenticated!"); + response.status = HTTP_USER_NOT_AUTHENTICATED; + print('{ "status": "Failed", "message": "User is not authenticated." }'); + return; + } + } + + var cache = application.get("AnalyticsWebServiceCache"); + if (cache == null) { + cache = new AnalyticsCache(cacheTimeoutSeconds, cacheSizeBytes); + application.put("AnalyticsWebServiceCache", cache); + } + var connector = new AnalyticsCachedJSServiceConnector(cache); + + /** + * require the existing config.json and push any dynamic fields that needs to be populated in the UI + */ + getConfig = function() { + var formConfig = require(PROVIDERS_LOCATION + '/' + PROVIDER_NAME + '/config.json'); + var tables; + try { + tables = JSON.parse(connector.getTableList(loggedInUser).getMessage()); + } catch (e) { + log.error(e); + } + var configs = formConfig.config; + configs.forEach(function(config) { + if (config.fieldName === TABLE_NAME) { + config.valueSet = tables; + } + }); + 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 "PULL"; + } + + /** + * returns an array of column names & types + * @param providerConfig + */ + getSchema = function(providerConfig) { + var schema = []; + var tableName = providerConfig["tableName"]; + var result = connector.getTableSchema(loggedInUser, tableName).getMessage(); + result = JSON.parse(result); + + var columns = result.columns; + Object.getOwnPropertyNames(columns).forEach(function(name, idx, array) { + var type = "ordinal"; + if(columns[name]['type']) { + type = columns[name]['type']; + } + schema.push({ + fieldName: name, + fieldType: typeMap[type.toLowerCase()] + }); + }); + // log.info(schema); + return schema; + }; + + /** + * returns the actual data + * @param providerConfig + * @param limit + */ + getData = function(providerConfig, limit) { + var tableName = providerConfig.tableName; + var query = providerConfig.query; + var limit = 100; + if (providerConfig.limit) { + limit = providerConfig.limit; + } + var result; + //if there's a filter present, we should perform a Lucene search instead of reading the table + if (query) { + var filter = { + "query": query, + "start": 0, + "count": limit + }; + result = connector.search(loggedInUser, tableName, stringify(filter)).getMessage(); + } else { + var from = JS_MIN_VALUE; + var to = JS_MAX_VALUE; + result = connector.getRecordsByRange(loggedInUser, tableName, from, to, 0, limit, null).getMessage(); + + } + result = JSON.parse(result); + var data = []; + for (var i = 0; i < result.length; i++) { + var values = result[i].values; + data.push(values); + } + return data; + }; + +}()); diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/gadget-core.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/gadget-core.js new file mode 100644 index 000000000..9dfe8683b --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/gadget-core.js @@ -0,0 +1,85 @@ +/* +* 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 refreshInterval; + var providerData; + + var CHART_CONF = 'chart-conf'; + var PROVIDER_CONF = 'provider-conf'; + + var REFRESH_INTERVAL = 'refreshInterval'; + +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; + } + }); + + getProviderData(); + + } + }); +}; + +var getProviderData = function (){ + $.ajax({ + url: gadgetLocation + '/gadget-controller.jag?action=getData', + method: "POST", + data: JSON.stringify(conf), + contentType: "application/json", + async: false, + success: function (data) { + providerData = data; + } + }); + return providerData; +}; + + +var drawGadget = function (){ + + draw('#canvas', conf[CHART_CONF], schema, providerData); + setInterval(function() { + draw('#canvas', conf[CHART_CONF], schema, getProviderData()); + },pref.getInt(REFRESH_INTERVAL)); + +}; + +getGadgetLocation(function (gadget_Location) { + gadgetLocation = gadget_Location; + init(); + drawGadget(); + +}); +}); diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/gadget-util.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/gadget-util.js new file mode 100644 index 000000000..5ecb5cc0d --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/gadget-util.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/GRAVITY"; + 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); + } +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/number-chart-api.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/number-chart-api.js new file mode 100644 index 000000000..ef2c5da98 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/js/core/number-chart-api.js @@ -0,0 +1,111 @@ +/* + * 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 + '/number-chart/config.json').config; + /* + dynamic logic goes here + */ + return chartConf; + + }; + + /** + * validate the user inout for the chart configurationx + * @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) { + 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.maxLength = _chartConfig.maxLength; + conf.charts = []; + conf.charts[0] = { + type : "number", + title : _chartConfig.title + }; + return conf; + }; + + +}()); diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/thumbnail.png b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_gadget/GRAVITY/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..8b3f4354050480f82c28608a983cd5861e67e5aa GIT binary patch literal 12971 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 hXH@SWyZC + + + + GRAVITY + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_event_sink/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_event_sink/artifact.xml new file mode 100644 index 000000000..5e6606c34 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_event_sink/artifact.xml @@ -0,0 +1,23 @@ + + + + + org_wso2_iot_android_gravity_stats.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_event_sink/org_wso2_iot_android_gravity_stats.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_event_sink/org_wso2_iot_android_gravity_stats.xml new file mode 100755 index 000000000..20959d61e --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_event_sink/org_wso2_iot_android_gravity_stats.xml @@ -0,0 +1,98 @@ + + + + + meta_owner + false + false + false + false + STRING + + + meta_deviceId + false + false + false + false + STRING + + + meta_timestamp + false + false + false + false + LONG + + + x + false + false + false + false + FLOAT + + + y + false + false + false + false + FLOAT + + + z + false + false + false + false + FLOAT + + + year + false + false + false + false + INTEGER + + + month + false + false + false + false + INTEGER + + + day + false + false + false + false + INTEGER + + + hour + false + false + false + false + INTEGER + + + minute + false + false + false + false + INTEGER + + + + org.wso2.iot.android.gravity.stats:1.0.0 + + false + EVENT_STORE + \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_streams/artifact.xml new file mode 100644 index 000000000..a1bcd3a44 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_streams/artifact.xml @@ -0,0 +1,24 @@ + + + + + org.wso2.iot.android.gravity.stats_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_streams/org.wso2.iot.android.gravity.stats_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_streams/org.wso2.iot.android.gravity.stats_1.0.0.json new file mode 100755 index 000000000..de9ad2217 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_stats_streams/org.wso2.iot.android.gravity.stats_1.0.0.json @@ -0,0 +1,54 @@ +{ + "name": "org.wso2.iot.android.gravity.stats", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "x", + "type": "FLOAT" + }, + { + "name": "y", + "type": "FLOAT" + }, + { + "name": "z", + "type": "FLOAT" + }, + { + "name": "year", + "type": "INT" + }, + { + "name": "month", + "type": "INT" + }, + { + "name": "day", + "type": "INT" + }, + { + "name": "hour", + "type": "INT" + }, + { + "name": "minute", + "type": "INT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_streams/artifact.xml new file mode 100644 index 000000000..e15f70b7c --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_streams/artifact.xml @@ -0,0 +1,23 @@ + + + + + org.wso2.iot.android.gravity_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_streams/org.wso2.iot.android.gravity_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_streams/org.wso2.iot.android.gravity_1.0.0.json new file mode 100755 index 000000000..b2ce30f46 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_streams/org.wso2.iot.android.gravity_1.0.0.json @@ -0,0 +1,34 @@ +{ + "name": "org.wso2.iot.android.gravity", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "x", + "type": "FLOAT" + }, + { + "name": "y", + "type": "FLOAT" + }, + { + "name": "z", + "type": "FLOAT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_ui_event_publisher/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_ui_event_publisher/artifact.xml new file mode 100644 index 000000000..d08d8ab33 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_ui_event_publisher/artifact.xml @@ -0,0 +1,24 @@ + + + + + org.wso2.iot.android.gravity.ui.publisher.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_ui_event_publisher/org.wso2.iot.android.gravity.ui.publisher.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_ui_event_publisher/org.wso2.iot.android.gravity.ui.publisher.xml new file mode 100644 index 000000000..6439b8299 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gravity_ui_event_publisher/org.wso2.iot.android.gravity.ui.publisher.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_executionplan/Android-Gyroscope-ExecutionPlan.siddhiql b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_executionplan/Android-Gyroscope-ExecutionPlan.siddhiql new file mode 100755 index 000000000..85d502500 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_executionplan/Android-Gyroscope-ExecutionPlan.siddhiql @@ -0,0 +1,18 @@ +@Plan:name('Android-Gyroscope-ExecutionPlan') + +@Plan:description('Process gyroscope changes.') + +@Import('org.wso2.iot.android.gyroscope:1.0.0') +define stream GyroscopeStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float); + +@Export('org.wso2.iot.android.gyroscope.stats:1.0.0') +define stream GyroscopeStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, x +float, y float, z float, year int, month int, day int, hour int, minute int); + +partition with (meta_deviceId of GyroscopeStream) +begin + from GyroscopeStream + select meta_owner, meta_deviceId, meta_timestamp, x, y, z, time:extract + (meta_timestamp, 'year') as year, time:extract(meta_timestamp, 'month') as month, time:extract(meta_timestamp, 'day') as day, time:extract(meta_timestamp, 'hour') as hour, time:extract(meta_timestamp, 'minute') as minute + insert into GyroscopeStatsStream; +end; \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_executionplan/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_executionplan/artifact.xml new file mode 100644 index 000000000..fd2150b23 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_executionplan/artifact.xml @@ -0,0 +1,24 @@ + + + + + Android-Gyroscope-ExecutionPlan.siddhiql + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_event_sink/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_event_sink/artifact.xml new file mode 100644 index 000000000..76174e09e --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_event_sink/artifact.xml @@ -0,0 +1,24 @@ + + + + + org_wso2_iot_android_gyroscope_stats.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_event_sink/org_wso2_iot_android_gyroscope_stats.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_event_sink/org_wso2_iot_android_gyroscope_stats.xml new file mode 100755 index 000000000..ba42b4ba7 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_event_sink/org_wso2_iot_android_gyroscope_stats.xml @@ -0,0 +1,98 @@ + + + + + meta_owner + false + false + false + false + STRING + + + meta_deviceId + false + false + false + false + STRING + + + meta_timestamp + false + false + false + false + LONG + + + x + false + false + false + false + FLOAT + + + y + false + false + false + false + FLOAT + + + z + false + false + false + false + FLOAT + + + year + false + false + false + false + INTEGER + + + month + false + false + false + false + INTEGER + + + day + false + false + false + false + INTEGER + + + hour + false + false + false + false + INTEGER + + + minute + false + false + false + false + INTEGER + + + + org.wso2.iot.android.gyroscope.stats:1.0.0 + + false + EVENT_STORE + \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_streams/artifact.xml new file mode 100644 index 000000000..63c532140 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_streams/artifact.xml @@ -0,0 +1,23 @@ + + + + + org.wso2.iot.android.gyroscope.stats_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_streams/org.wso2.iot.android.gyroscope.stats_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_streams/org.wso2.iot.android.gyroscope.stats_1.0.0.json new file mode 100755 index 000000000..6282a16a5 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_stats_streams/org.wso2.iot.android.gyroscope.stats_1.0.0.json @@ -0,0 +1,54 @@ +{ + "name": "org.wso2.iot.android.gyroscope.stats", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "x", + "type": "FLOAT" + }, + { + "name": "y", + "type": "FLOAT" + }, + { + "name": "z", + "type": "FLOAT" + }, + { + "name": "year", + "type": "INT" + }, + { + "name": "month", + "type": "INT" + }, + { + "name": "day", + "type": "INT" + }, + { + "name": "hour", + "type": "INT" + }, + { + "name": "minute", + "type": "INT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_streams/artifact.xml new file mode 100644 index 000000000..70af655a5 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_streams/artifact.xml @@ -0,0 +1,23 @@ + + + + + org.wso2.iot.android.gyroscope_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_streams/org.wso2.iot.android.gyroscope_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_streams/org.wso2.iot.android.gyroscope_1.0.0.json new file mode 100755 index 000000000..b7fcf81b7 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_streams/org.wso2.iot.android.gyroscope_1.0.0.json @@ -0,0 +1,34 @@ +{ + "name": "org.wso2.iot.android.gyroscope", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "x", + "type": "FLOAT" + }, + { + "name": "y", + "type": "FLOAT" + }, + { + "name": "z", + "type": "FLOAT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_ui_event_publisher/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_ui_event_publisher/artifact.xml new file mode 100644 index 000000000..0e0fd9182 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_ui_event_publisher/artifact.xml @@ -0,0 +1,24 @@ + + + + + org.wso2.iot.android.gyroscope.ui.publisher.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_ui_event_publisher/org.wso2.iot.android.gyroscope.ui.publisher.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_ui_event_publisher/org.wso2.iot.android.gyroscope.ui.publisher.xml new file mode 100644 index 000000000..2cd783def --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_gyroscope_ui_event_publisher/org.wso2.iot.android.gyroscope.ui.publisher.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_executionplan/Android-Light-ExecutionPlan.siddhiql b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_executionplan/Android-Light-ExecutionPlan.siddhiql new file mode 100755 index 000000000..2ba5eb06d --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_executionplan/Android-Light-ExecutionPlan.siddhiql @@ -0,0 +1,18 @@ +@Plan:name('Android-Light-ExecutionPlan') + +@Plan:description('Process light changes.') + +@Import('org.wso2.iot.android.light:1.0.0') +define stream LightStream (meta_owner string, meta_deviceId string, meta_timestamp long, light float); + +@Export('org.wso2.iot.android.light.stats:1.0.0') +define stream LightStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, light float, year int, +month int, day int, hour int, minute int); + +partition with (meta_deviceId of LightStream) +begin + from LightStream + select meta_owner, meta_deviceId, meta_timestamp, light, time:extract + (meta_timestamp, 'year') as year, time:extract(meta_timestamp, 'month') as month, time:extract(meta_timestamp, 'day') as day, time:extract(meta_timestamp, 'hour') as hour, time:extract(meta_timestamp, 'minute') as minute + insert into LightStatsStream; +end; \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_executionplan/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_executionplan/artifact.xml new file mode 100644 index 000000000..24d4bd5d7 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_executionplan/artifact.xml @@ -0,0 +1,23 @@ + + + + + Android-Light-ExecutionPlan.siddhiql + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_event_sink/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_event_sink/artifact.xml new file mode 100644 index 000000000..4b2fe479d --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_event_sink/artifact.xml @@ -0,0 +1,23 @@ + + + + + org_wso2_iot_android_light_stats.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_event_sink/org_wso2_iot_android_light_stats.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_event_sink/org_wso2_iot_android_light_stats.xml new file mode 100755 index 000000000..dd831adc5 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_event_sink/org_wso2_iot_android_light_stats.xml @@ -0,0 +1,82 @@ + + + + + meta_owner + false + false + false + false + STRING + + + meta_deviceId + false + false + false + false + STRING + + + meta_timestamp + false + false + false + false + LONG + + + light + false + false + false + false + FLOAT + + + year + false + false + false + false + INTEGER + + + month + false + false + false + false + INTEGER + + + day + false + false + false + false + INTEGER + + + hour + false + false + false + false + INTEGER + + + minute + false + false + false + false + INTEGER + + + + org.wso2.iot.android.light.stats:1.0.0 + + false + EVENT_STORE + \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_streams/artifact.xml new file mode 100644 index 000000000..bfd1b53e6 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_streams/artifact.xml @@ -0,0 +1,23 @@ + + + + + org.wso2.iot.android.light.stats_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_streams/org.wso2.iot.android.light.stats_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_streams/org.wso2.iot.android.light.stats_1.0.0.json new file mode 100755 index 000000000..5a6485077 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_stats_streams/org.wso2.iot.android.light.stats_1.0.0.json @@ -0,0 +1,46 @@ +{ + "name": "org.wso2.iot.android.light.stats", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "light", + "type": "FLOAT" + }, + { + "name": "year", + "type": "INT" + }, + { + "name": "month", + "type": "INT" + }, + { + "name": "day", + "type": "INT" + }, + { + "name": "hour", + "type": "INT" + }, + { + "name": "minute", + "type": "INT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_streams/artifact.xml new file mode 100644 index 000000000..3dd8461cd --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_streams/artifact.xml @@ -0,0 +1,23 @@ + + + + + org.wso2.iot.android.light_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_streams/org.wso2.iot.android.light_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_streams/org.wso2.iot.android.light_1.0.0.json new file mode 100755 index 000000000..91b794355 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_streams/org.wso2.iot.android.light_1.0.0.json @@ -0,0 +1,26 @@ +{ + "name": "org.wso2.iot.android.light", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "light", + "type": "FLOAT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_ui_event_publisher/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_ui_event_publisher/artifact.xml new file mode 100644 index 000000000..63ea4431a --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_ui_event_publisher/artifact.xml @@ -0,0 +1,24 @@ + + + + + org.wso2.iot.android.light.ui.publisher.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_ui_event_publisher/org.wso2.iot.android.light.ui.publisher.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_ui_event_publisher/org.wso2.iot.android.light.ui.publisher.xml new file mode 100644 index 000000000..779e6bf42 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_light_ui_event_publisher/org.wso2.iot.android.light.ui.publisher.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_executionplan/Android-Magnetic-ExecutionPlan.siddhiql b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_executionplan/Android-Magnetic-ExecutionPlan.siddhiql new file mode 100755 index 000000000..d7af0016f --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_executionplan/Android-Magnetic-ExecutionPlan.siddhiql @@ -0,0 +1,18 @@ +@Plan:name('Android-Magnetic-ExecutionPlan') + +@Plan:description('Process magnetic field changes.') + +@Import('org.wso2.iot.android.magnetic:1.0.0') +define stream MagneticStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float); + +@Export('org.wso2.iot.android.magnetic.stats:1.0.0') +define stream MagneticStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, x +float, y float, z float, year int, month int, day int, hour int, minute int); + +partition with (meta_deviceId of MagneticStream) +begin + from MagneticStream + select meta_owner, meta_deviceId, meta_timestamp, x, y, z, time:extract + (meta_timestamp, 'year') as year, time:extract(meta_timestamp, 'month') as month, time:extract(meta_timestamp, 'day') as day, time:extract(meta_timestamp, 'hour') as hour, time:extract(meta_timestamp, 'minute') as minute + insert into MagneticStatsStream; +end; \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_executionplan/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_executionplan/artifact.xml new file mode 100644 index 000000000..40f53b8c4 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_executionplan/artifact.xml @@ -0,0 +1,23 @@ + + + + + Android-Magnetic-ExecutionPlan.siddhiql + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_event_sink/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_event_sink/artifact.xml new file mode 100644 index 000000000..bfe1f9863 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_event_sink/artifact.xml @@ -0,0 +1,23 @@ + + + + + org_wso2_iot_android_magnetic_stats.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_event_sink/org_wso2_iot_android_magnetic_stats.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_event_sink/org_wso2_iot_android_magnetic_stats.xml new file mode 100755 index 000000000..93328ca02 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_event_sink/org_wso2_iot_android_magnetic_stats.xml @@ -0,0 +1,98 @@ + + + + + meta_owner + false + false + false + false + STRING + + + meta_deviceId + false + false + false + false + STRING + + + meta_timestamp + false + false + false + false + LONG + + + x + false + false + false + false + FLOAT + + + y + false + false + false + false + FLOAT + + + z + false + false + false + false + FLOAT + + + year + false + false + false + false + INTEGER + + + month + false + false + false + false + INTEGER + + + day + false + false + false + false + INTEGER + + + hour + false + false + false + false + INTEGER + + + minute + false + false + false + false + INTEGER + + + + org.wso2.iot.android.magnetic.stats:1.0.0 + + false + EVENT_STORE + \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_streams/artifact.xml new file mode 100644 index 000000000..234b34b0e --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_streams/artifact.xml @@ -0,0 +1,24 @@ + + + + + org.wso2.iot.android.magnetic.stats_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_streams/org.wso2.iot.android.magnetic.stats_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_streams/org.wso2.iot.android.magnetic.stats_1.0.0.json new file mode 100755 index 000000000..109ba5b1d --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_stats_streams/org.wso2.iot.android.magnetic.stats_1.0.0.json @@ -0,0 +1,54 @@ +{ + "name": "org.wso2.iot.android.magnetic.stats", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "x", + "type": "FLOAT" + }, + { + "name": "y", + "type": "FLOAT" + }, + { + "name": "z", + "type": "FLOAT" + }, + { + "name": "year", + "type": "INT" + }, + { + "name": "month", + "type": "INT" + }, + { + "name": "day", + "type": "INT" + }, + { + "name": "hour", + "type": "INT" + }, + { + "name": "minute", + "type": "INT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_streams/artifact.xml new file mode 100644 index 000000000..f7a79240e --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_streams/artifact.xml @@ -0,0 +1,23 @@ + + + + + org.wso2.iot.android.magnetic_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_streams/org.wso2.iot.android.magnetic_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_streams/org.wso2.iot.android.magnetic_1.0.0.json new file mode 100755 index 000000000..a9ad5d8dc --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_streams/org.wso2.iot.android.magnetic_1.0.0.json @@ -0,0 +1,34 @@ +{ + "name": "org.wso2.iot.android.magnetic", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "x", + "type": "FLOAT" + }, + { + "name": "y", + "type": "FLOAT" + }, + { + "name": "z", + "type": "FLOAT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_ui_event_publisher/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_ui_event_publisher/artifact.xml new file mode 100644 index 000000000..b34157e4b --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_ui_event_publisher/artifact.xml @@ -0,0 +1,24 @@ + + + + + org.wso2.iot.android.magnetic.ui.publisher.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_ui_event_publisher/org.wso2.iot.android.magnetic.ui.publisher.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_ui_event_publisher/org.wso2.iot.android.magnetic.ui.publisher.xml new file mode 100644 index 000000000..2c8af401c --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_magnetic_ui_event_publisher/org.wso2.iot.android.magnetic.ui.publisher.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_executionplan/Android-Pressure-ExecutionPlan.siddhiql b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_executionplan/Android-Pressure-ExecutionPlan.siddhiql new file mode 100755 index 000000000..d23044e27 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_executionplan/Android-Pressure-ExecutionPlan.siddhiql @@ -0,0 +1,18 @@ +@Plan:name('Android-Pressure-ExecutionPlan') + +@Plan:description('Process pressure changes.') + +@Import('org.wso2.iot.android.pressure:1.0.0') +define stream PressureStream (meta_owner string, meta_deviceId string, meta_timestamp long, pressure float); + +@Export('org.wso2.iot.android.pressure.stats:1.0.0') +define stream PressureStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, pressure float, year int, +month int, day int, hour int, minute int); + +partition with (meta_deviceId of PressureStream) +begin + from PressureStream + select meta_owner, meta_deviceId, meta_timestamp, pressure, time:extract + (meta_timestamp, 'year') as year, time:extract(meta_timestamp, 'month') as month, time:extract(meta_timestamp, 'day') as day, time:extract(meta_timestamp, 'hour') as hour, time:extract(meta_timestamp, 'minute') as minute + insert into PressureStatsStream; +end; \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_executionplan/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_executionplan/artifact.xml new file mode 100644 index 000000000..f01be9b20 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_executionplan/artifact.xml @@ -0,0 +1,24 @@ + + + + + Android-Pressure-ExecutionPlan.siddhiql + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/conf.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/conf.json new file mode 100644 index 000000000..295d3bf27 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/conf.json @@ -0,0 +1,15 @@ +{ + "provider-conf": { + "tableName": "ORG_WSO2_IOT_ANDROID_PRESSURE_STATS", + "query": "", + "limit": "", + "provider-name": "batch" + }, + "chart-conf": { + "x": "pressure", + "title": "PRESSURE", + "maxLength": "30", + "gadget-name": "PRESSURE", + "chart-name": "number-chart" + } +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/css/number-chart.css b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/css/number-chart.css new file mode 100644 index 000000000..5dde0413a --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/css/number-chart.css @@ -0,0 +1,35 @@ +#canvas { + height: 100%; + width: 100%; +} + +p { + margin: 0; + display: block; + text-align: center; + font-weight: bold; +} + +.titlecanvasContent { + color:steelblue; + font-size:18px; + font-weight: normal; + padding: 10px 0; +} + +.valcanvasContent { + color:#438CAD; + font-size:50px; + font-weight: normal; +} + + +.diffcanvasContent { + color:#438CAD; + font-size:14px; +} + +.diffPercentagecanvasContent { + color:#ff944d; + font-size:14px; +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/gadget-controller.jag b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/gadget-controller.jag new file mode 100644 index 000000000..f84538a40 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/gadget-controller.jag @@ -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; + } + +}()); + + +%> diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/gadget.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/gadget.json new file mode 100644 index 000000000..6590fbd07 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/gadget.json @@ -0,0 +1,9 @@ +{ + "id": "PRESSURE", + "title": "PRESSURE", + "type": "gadget", + "thumbnail": "gadget/PRESSURE/thumbnail.png", + "data": { + "url": "gadget/PRESSURE/gadget.xml" + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/gadget.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/gadget.xml new file mode 100644 index 000000000..68a0626b5 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/gadget.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + ]]> +
+
diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/batch-provider-api.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/batch-provider-api.js new file mode 100644 index 000000000..c275f8c9f --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/batch-provider-api.js @@ -0,0 +1,191 @@ +/* + * 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 = 'batch'; + var TYPE = "type"; + var TABLE_NAME = "tableName"; + var HTTPS_TRANSPORT = "https"; + var CONTENT_TYPE_JSON = "application/json"; + var AUTHORIZATION_HEADER = "Authorization"; + var USER_TOKEN = "user"; + var TENANT_DOMAIN = "domain"; + var CONST_AT = "@"; + var USERNAME = "username"; + var HTTP_USER_NOT_AUTHENTICATED = 403; + var JS_MAX_VALUE = "9007199254740992"; + var JS_MIN_VALUE = "-9007199254740992"; + + var typeMap = { + "bool" : "string", + "boolean" : "string", + "string" : "string", + "int" : "number", + "integer" : "number", + "long" : "number", + "double" : "number", + "float" : "number", + "time": "time" + }; + + var log = new Log(); + var carbon = require('carbon'); + var configs = require('/configs/designer.json'); + var utils = require('/modules/utils.js'); + var JSUtils = Packages.org.wso2.carbon.analytics.jsservice.Utils; + var AnalyticsCachedJSServiceConnector = Packages.org.wso2.carbon.analytics.jsservice.AnalyticsCachedJSServiceConnector; + var AnalyticsCache = Packages.org.wso2.carbon.analytics.jsservice.AnalyticsCachedJSServiceConnector.AnalyticsCache; + var cacheTimeoutSeconds = 5; + var loggedInUser = null; + + if (configs.cacheTimeoutSeconds) { + cacheTimeoutSeconds = parseInt(configs.cacheTimeoutSeconds); + } + var cacheSizeBytes = 1024 * 1024 * 1024; // 1GB + if (configs.cacheSizeBytes) { + cacheSizeBytes = parseInt(configs.cacheSizeBytes); + } + response.contentType = CONTENT_TYPE_JSON; + + var authParam = request.getHeader(AUTHORIZATION_HEADER); + if (authParam != null) { + credentials = JSUtils.authenticate(authParam); + loggedInUser = credentials[0]; + } else { + var token = session.get(USER_TOKEN); + if (token != null) { + loggedInUser = token[USERNAME] + CONST_AT + token[TENANT_DOMAIN]; + } else { + log.error("user is not authenticated!"); + response.status = HTTP_USER_NOT_AUTHENTICATED; + print('{ "status": "Failed", "message": "User is not authenticated." }'); + return; + } + } + + var cache = application.get("AnalyticsWebServiceCache"); + if (cache == null) { + cache = new AnalyticsCache(cacheTimeoutSeconds, cacheSizeBytes); + application.put("AnalyticsWebServiceCache", cache); + } + var connector = new AnalyticsCachedJSServiceConnector(cache); + + /** + * require the existing config.json and push any dynamic fields that needs to be populated in the UI + */ + getConfig = function() { + var formConfig = require(PROVIDERS_LOCATION + '/' + PROVIDER_NAME + '/config.json'); + var tables; + try { + tables = JSON.parse(connector.getTableList(loggedInUser).getMessage()); + } catch (e) { + log.error(e); + } + var configs = formConfig.config; + configs.forEach(function(config) { + if (config.fieldName === TABLE_NAME) { + config.valueSet = tables; + } + }); + 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 "PULL"; + } + + /** + * returns an array of column names & types + * @param providerConfig + */ + getSchema = function(providerConfig) { + var schema = []; + var tableName = providerConfig["tableName"]; + var result = connector.getTableSchema(loggedInUser, tableName).getMessage(); + result = JSON.parse(result); + log.info(result); + + var columns = result.columns; + Object.getOwnPropertyNames(columns).forEach(function(name, idx, array) { + var type = "ordinal"; + if(columns[name]['type']) { + type = columns[name]['type']; + } + schema.push({ + fieldName: name, + fieldType: typeMap[type.toLowerCase()] + }); + }); + // log.info(schema); + return schema; + }; + + /** + * returns the actual data + * @param providerConfig + * @param limit + */ + getData = function(providerConfig, limit) { + var tableName = providerConfig.tableName; + var query = providerConfig.query; + var limit = 100; + if (providerConfig.limit) { + limit = providerConfig.limit; + } + var result; + //if there's a filter present, we should perform a Lucene search instead of reading the table + if (query) { + var filter = { + "query": query, + "start": 0, + "count": limit + }; + result = connector.search(loggedInUser, tableName, stringify(filter)).getMessage(); + } else { + var from = JS_MIN_VALUE; + var to = JS_MAX_VALUE; + result = connector.getRecordsByRange(loggedInUser, tableName, from, to, 0, limit, null).getMessage(); + + } + result = JSON.parse(result); + var data = []; + for (var i = 0; i < result.length; i++) { + var values = result[i].values; + data.push(values); + } + return data; + }; + +}()); diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/gadget-core.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/gadget-core.js new file mode 100644 index 000000000..9dfe8683b --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/gadget-core.js @@ -0,0 +1,85 @@ +/* +* 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 refreshInterval; + var providerData; + + var CHART_CONF = 'chart-conf'; + var PROVIDER_CONF = 'provider-conf'; + + var REFRESH_INTERVAL = 'refreshInterval'; + +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; + } + }); + + getProviderData(); + + } + }); +}; + +var getProviderData = function (){ + $.ajax({ + url: gadgetLocation + '/gadget-controller.jag?action=getData', + method: "POST", + data: JSON.stringify(conf), + contentType: "application/json", + async: false, + success: function (data) { + providerData = data; + } + }); + return providerData; +}; + + +var drawGadget = function (){ + + draw('#canvas', conf[CHART_CONF], schema, providerData); + setInterval(function() { + draw('#canvas', conf[CHART_CONF], schema, getProviderData()); + },pref.getInt(REFRESH_INTERVAL)); + +}; + +getGadgetLocation(function (gadget_Location) { + gadgetLocation = gadget_Location; + init(); + drawGadget(); + +}); +}); diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/gadget-util.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/gadget-util.js new file mode 100644 index 000000000..a095aa89e --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/gadget-util.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/PRESSURE"; + 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); + } +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/number-chart-api.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/number-chart-api.js new file mode 100644 index 000000000..ef2c5da98 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/js/core/number-chart-api.js @@ -0,0 +1,111 @@ +/* + * 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 + '/number-chart/config.json').config; + /* + dynamic logic goes here + */ + return chartConf; + + }; + + /** + * validate the user inout for the chart configurationx + * @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) { + 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.maxLength = _chartConfig.maxLength; + conf.charts = []; + conf.charts[0] = { + type : "number", + title : _chartConfig.title + }; + return conf; + }; + + +}()); diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/thumbnail.png b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_gadget/PRESSURE/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..8b3f4354050480f82c28608a983cd5861e67e5aa GIT binary patch literal 12971 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 hXH@SWyZC + + + + PRESSURE + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_event_sink/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_event_sink/artifact.xml new file mode 100644 index 000000000..082085bbb --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_event_sink/artifact.xml @@ -0,0 +1,24 @@ + + + + + org_wso2_iot_android_pressure_stats.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_event_sink/org_wso2_iot_android_pressure_stats.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_event_sink/org_wso2_iot_android_pressure_stats.xml new file mode 100755 index 000000000..27202bb35 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_event_sink/org_wso2_iot_android_pressure_stats.xml @@ -0,0 +1,82 @@ + + + + + meta_owner + false + false + false + false + STRING + + + meta_deviceId + false + false + false + false + STRING + + + meta_timestamp + false + false + false + false + LONG + + + pressure + false + false + false + false + FLOAT + + + year + false + false + false + false + INTEGER + + + month + false + false + false + false + INTEGER + + + day + false + false + false + false + INTEGER + + + hour + false + false + false + false + INTEGER + + + minute + false + false + false + false + INTEGER + + + + org.wso2.iot.android.pressure.stats:1.0.0 + + false + EVENT_STORE + \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_streams/artifact.xml new file mode 100644 index 000000000..67384b242 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_streams/artifact.xml @@ -0,0 +1,24 @@ + + + + + org.wso2.iot.android.pressure.stats_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_streams/org.wso2.iot.android.pressure.stats_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_streams/org.wso2.iot.android.pressure.stats_1.0.0.json new file mode 100755 index 000000000..e8a9072d5 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_stats_streams/org.wso2.iot.android.pressure.stats_1.0.0.json @@ -0,0 +1,46 @@ +{ + "name": "org.wso2.iot.android.pressure.stats", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "pressure", + "type": "FLOAT" + }, + { + "name": "year", + "type": "INT" + }, + { + "name": "month", + "type": "INT" + }, + { + "name": "day", + "type": "INT" + }, + { + "name": "hour", + "type": "INT" + }, + { + "name": "minute", + "type": "INT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_streams/artifact.xml new file mode 100644 index 000000000..209ead68d --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_streams/artifact.xml @@ -0,0 +1,23 @@ + + + + + org.wso2.iot.android.pressure_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_streams/org.wso2.iot.android.pressure_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_streams/org.wso2.iot.android.pressure_1.0.0.json new file mode 100755 index 000000000..985bef5f1 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_streams/org.wso2.iot.android.pressure_1.0.0.json @@ -0,0 +1,26 @@ +{ + "name": "org.wso2.iot.android.pressure", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "pressure", + "type": "FLOAT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_ui_event_publisher/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_ui_event_publisher/artifact.xml new file mode 100644 index 000000000..957a53ff1 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_ui_event_publisher/artifact.xml @@ -0,0 +1,24 @@ + + + + + org.wso2.iot.android.pressure.ui.publisher.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_ui_event_publisher/org.wso2.iot.android.pressure.ui.publisher.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_ui_event_publisher/org.wso2.iot.android.pressure.ui.publisher.xml new file mode 100644 index 000000000..e34ec35e9 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_pressure_ui_event_publisher/org.wso2.iot.android.pressure.ui.publisher.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_executionplan/Android-Proximity-ExecutionPlan.siddhiql b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_executionplan/Android-Proximity-ExecutionPlan.siddhiql new file mode 100755 index 000000000..0ba5318e9 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_executionplan/Android-Proximity-ExecutionPlan.siddhiql @@ -0,0 +1,18 @@ +@Plan:name('Android-Proximity-ExecutionPlan') + +@Plan:description('Process proximity changes.') + +@Import('org.wso2.iot.android.proximity:1.0.0') +define stream ProximityStream (meta_owner string, meta_deviceId string, meta_timestamp long, proximity float); + +@Export('org.wso2.iot.android.proximity.stats:1.0.0') +define stream ProximityStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, proximity float, year int, +month int, day int, hour int, minute int); + +partition with (meta_deviceId of ProximityStream) +begin + from ProximityStream + select meta_owner, meta_deviceId, meta_timestamp, proximity, time:extract + (meta_timestamp, 'year') as year, time:extract(meta_timestamp, 'month') as month, time:extract(meta_timestamp, 'day') as day, time:extract(meta_timestamp, 'hour') as hour, time:extract(meta_timestamp, 'minute') as minute + insert into ProximityStatsStream; +end; \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_executionplan/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_executionplan/artifact.xml new file mode 100644 index 000000000..bd310d7b2 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_executionplan/artifact.xml @@ -0,0 +1,24 @@ + + + + + Android-Proximity-ExecutionPlan.siddhiql + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/conf.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/conf.json new file mode 100644 index 000000000..849f327b9 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/conf.json @@ -0,0 +1 @@ +{"provider-conf" : {"tableName" : "ORG_WSO2_IOT_ANDROID_PRESSURE_STATS", "query" : "", "limit" : "", "provider-name" : "batch"}, "chart-conf" : {"x" : "pressure", "title" : "PRESSURE", "maxLength" : "30", "gadget-name" : "PROXIMITY", "chart-name" : "number-chart"}} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/css/number-chart.css b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/css/number-chart.css new file mode 100644 index 000000000..5dde0413a --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/css/number-chart.css @@ -0,0 +1,35 @@ +#canvas { + height: 100%; + width: 100%; +} + +p { + margin: 0; + display: block; + text-align: center; + font-weight: bold; +} + +.titlecanvasContent { + color:steelblue; + font-size:18px; + font-weight: normal; + padding: 10px 0; +} + +.valcanvasContent { + color:#438CAD; + font-size:50px; + font-weight: normal; +} + + +.diffcanvasContent { + color:#438CAD; + font-size:14px; +} + +.diffPercentagecanvasContent { + color:#ff944d; + font-size:14px; +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/gadget-controller.jag b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/gadget-controller.jag new file mode 100644 index 000000000..f84538a40 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/gadget-controller.jag @@ -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; + } + +}()); + + +%> diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/gadget.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/gadget.json new file mode 100644 index 000000000..43b51c3b6 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/gadget.json @@ -0,0 +1,9 @@ +{ + "id": "PROXIMITY", + "title": "PROXIMITY", + "type": "gadget", + "thumbnail": "gadget/PROXIMITY/thumbnail.png", + "data": { + "url": "gadget/PROXIMITY/gadget.xml" + } +} diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/gadget.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/gadget.xml new file mode 100644 index 000000000..de27540da --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/gadget.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + ]]> +
+
diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/batch-provider-api.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/batch-provider-api.js new file mode 100644 index 000000000..30c96902a --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/batch-provider-api.js @@ -0,0 +1,190 @@ +/* + * 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 = 'batch'; + var TYPE = "type"; + var TABLE_NAME = "tableName"; + var HTTPS_TRANSPORT = "https"; + var CONTENT_TYPE_JSON = "application/json"; + var AUTHORIZATION_HEADER = "Authorization"; + var USER_TOKEN = "user"; + var TENANT_DOMAIN = "domain"; + var CONST_AT = "@"; + var USERNAME = "username"; + var HTTP_USER_NOT_AUTHENTICATED = 403; + var JS_MAX_VALUE = "9007199254740992"; + var JS_MIN_VALUE = "-9007199254740992"; + + var typeMap = { + "bool" : "string", + "boolean" : "string", + "string" : "string", + "int" : "number", + "integer" : "number", + "long" : "number", + "double" : "number", + "float" : "number", + "time": "time" + }; + + var log = new Log(); + var carbon = require('carbon'); + var configs = require('/configs/designer.json'); + var utils = require('/modules/utils.js'); + var JSUtils = Packages.org.wso2.carbon.analytics.jsservice.Utils; + var AnalyticsCachedJSServiceConnector = Packages.org.wso2.carbon.analytics.jsservice.AnalyticsCachedJSServiceConnector; + var AnalyticsCache = Packages.org.wso2.carbon.analytics.jsservice.AnalyticsCachedJSServiceConnector.AnalyticsCache; + var cacheTimeoutSeconds = 5; + var loggedInUser = null; + + if (configs.cacheTimeoutSeconds) { + cacheTimeoutSeconds = parseInt(configs.cacheTimeoutSeconds); + } + var cacheSizeBytes = 1024 * 1024 * 1024; // 1GB + if (configs.cacheSizeBytes) { + cacheSizeBytes = parseInt(configs.cacheSizeBytes); + } + response.contentType = CONTENT_TYPE_JSON; + + var authParam = request.getHeader(AUTHORIZATION_HEADER); + if (authParam != null) { + credentials = JSUtils.authenticate(authParam); + loggedInUser = credentials[0]; + } else { + var token = session.get(USER_TOKEN); + if (token != null) { + loggedInUser = token[USERNAME] + CONST_AT + token[TENANT_DOMAIN]; + } else { + log.error("user is not authenticated!"); + response.status = HTTP_USER_NOT_AUTHENTICATED; + print('{ "status": "Failed", "message": "User is not authenticated." }'); + return; + } + } + + var cache = application.get("AnalyticsWebServiceCache"); + if (cache == null) { + cache = new AnalyticsCache(cacheTimeoutSeconds, cacheSizeBytes); + application.put("AnalyticsWebServiceCache", cache); + } + var connector = new AnalyticsCachedJSServiceConnector(cache); + + /** + * require the existing config.json and push any dynamic fields that needs to be populated in the UI + */ + getConfig = function() { + var formConfig = require(PROVIDERS_LOCATION + '/' + PROVIDER_NAME + '/config.json'); + var tables; + try { + tables = JSON.parse(connector.getTableList(loggedInUser).getMessage()); + } catch (e) { + log.error(e); + } + var configs = formConfig.config; + configs.forEach(function(config) { + if (config.fieldName === TABLE_NAME) { + config.valueSet = tables; + } + }); + 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 "PULL"; + } + + /** + * returns an array of column names & types + * @param providerConfig + */ + getSchema = function(providerConfig) { + var schema = []; + var tableName = providerConfig["tableName"]; + var result = connector.getTableSchema(loggedInUser, tableName).getMessage(); + result = JSON.parse(result); + + var columns = result.columns; + Object.getOwnPropertyNames(columns).forEach(function(name, idx, array) { + var type = "ordinal"; + if(columns[name]['type']) { + type = columns[name]['type']; + } + schema.push({ + fieldName: name, + fieldType: typeMap[type.toLowerCase()] + }); + }); + // log.info(schema); + return schema; + }; + + /** + * returns the actual data + * @param providerConfig + * @param limit + */ + getData = function(providerConfig, limit) { + var tableName = providerConfig.tableName; + var query = providerConfig.query; + var limit = 100; + if (providerConfig.limit) { + limit = providerConfig.limit; + } + var result; + //if there's a filter present, we should perform a Lucene search instead of reading the table + if (query) { + var filter = { + "query": query, + "start": 0, + "count": limit + }; + result = connector.search(loggedInUser, tableName, stringify(filter)).getMessage(); + } else { + var from = JS_MIN_VALUE; + var to = JS_MAX_VALUE; + result = connector.getRecordsByRange(loggedInUser, tableName, from, to, 0, limit, null).getMessage(); + + } + result = JSON.parse(result); + var data = []; + for (var i = 0; i < result.length; i++) { + var values = result[i].values; + data.push(values); + } + return data; + }; + +}()); diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/gadget-core.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/gadget-core.js new file mode 100644 index 000000000..9dfe8683b --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/gadget-core.js @@ -0,0 +1,85 @@ +/* +* 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 refreshInterval; + var providerData; + + var CHART_CONF = 'chart-conf'; + var PROVIDER_CONF = 'provider-conf'; + + var REFRESH_INTERVAL = 'refreshInterval'; + +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; + } + }); + + getProviderData(); + + } + }); +}; + +var getProviderData = function (){ + $.ajax({ + url: gadgetLocation + '/gadget-controller.jag?action=getData', + method: "POST", + data: JSON.stringify(conf), + contentType: "application/json", + async: false, + success: function (data) { + providerData = data; + } + }); + return providerData; +}; + + +var drawGadget = function (){ + + draw('#canvas', conf[CHART_CONF], schema, providerData); + setInterval(function() { + draw('#canvas', conf[CHART_CONF], schema, getProviderData()); + },pref.getInt(REFRESH_INTERVAL)); + +}; + +getGadgetLocation(function (gadget_Location) { + gadgetLocation = gadget_Location; + init(); + drawGadget(); + +}); +}); diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/gadget-util.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/gadget-util.js new file mode 100644 index 000000000..13f2120f1 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/gadget-util.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/PROXIMITY"; + 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); + } +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/number-chart-api.js b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/number-chart-api.js new file mode 100644 index 000000000..ef2c5da98 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/js/core/number-chart-api.js @@ -0,0 +1,111 @@ +/* + * 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 + '/number-chart/config.json').config; + /* + dynamic logic goes here + */ + return chartConf; + + }; + + /** + * validate the user inout for the chart configurationx + * @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) { + 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.maxLength = _chartConfig.maxLength; + conf.charts = []; + conf.charts[0] = { + type : "number", + title : _chartConfig.title + }; + return conf; + }; + + +}()); diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/thumbnail.png b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_gadget/PROXIMITY/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..8b3f4354050480f82c28608a983cd5861e67e5aa GIT binary patch literal 12971 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 hXH@SWyZC + + + + PROXIMITY + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_event_sink/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_event_sink/artifact.xml new file mode 100644 index 000000000..d49f1fbc5 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_event_sink/artifact.xml @@ -0,0 +1,24 @@ + + + + + org_wso2_iot_android_proximity_stats.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_event_sink/org_wso2_iot_android_proximity_stats.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_event_sink/org_wso2_iot_android_proximity_stats.xml new file mode 100755 index 000000000..f8dba0ed4 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_event_sink/org_wso2_iot_android_proximity_stats.xml @@ -0,0 +1,82 @@ + + + + + meta_owner + false + false + false + false + STRING + + + meta_deviceId + false + false + false + false + STRING + + + meta_timestamp + false + false + false + false + LONG + + + proximity + false + false + false + false + FLOAT + + + year + false + false + false + false + INTEGER + + + month + false + false + false + false + INTEGER + + + day + false + false + false + false + INTEGER + + + hour + false + false + false + false + INTEGER + + + minute + false + false + false + false + INTEGER + + + + org.wso2.iot.android.proximity.stats:1.0.0 + + false + EVENT_STORE + \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_streams/artifact.xml new file mode 100644 index 000000000..f7c5e84f3 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_streams/artifact.xml @@ -0,0 +1,24 @@ + + + + + org.wso2.iot.android.proximity.stats_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_streams/org.wso2.iot.android.proximity.stats_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_streams/org.wso2.iot.android.proximity.stats_1.0.0.json new file mode 100755 index 000000000..601fb0455 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_stats_streams/org.wso2.iot.android.proximity.stats_1.0.0.json @@ -0,0 +1,46 @@ +{ + "name": "org.wso2.iot.android.proximity.stats", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "proximity", + "type": "FLOAT" + }, + { + "name": "year", + "type": "INT" + }, + { + "name": "month", + "type": "INT" + }, + { + "name": "day", + "type": "INT" + }, + { + "name": "hour", + "type": "INT" + }, + { + "name": "minute", + "type": "INT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_streams/artifact.xml new file mode 100644 index 000000000..94043deb5 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_streams/artifact.xml @@ -0,0 +1,23 @@ + + + + + org.wso2.iot.android.proximity_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_streams/org.wso2.iot.android.proximity_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_streams/org.wso2.iot.android.proximity_1.0.0.json new file mode 100755 index 000000000..a3f6e7bef --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_streams/org.wso2.iot.android.proximity_1.0.0.json @@ -0,0 +1,26 @@ +{ + "name": "org.wso2.iot.android.proximity", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "proximity", + "type": "FLOAT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_ui_event_publisher/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_ui_event_publisher/artifact.xml new file mode 100644 index 000000000..dbdeeb073 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_ui_event_publisher/artifact.xml @@ -0,0 +1,24 @@ + + + + + org.wso2.iot.android.proximity.ui.publisher.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_ui_event_publisher/org.wso2.iot.android.proximity.ui.publisher.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_ui_event_publisher/org.wso2.iot.android.proximity.ui.publisher.xml new file mode 100644 index 000000000..4d689764f --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_proximity_ui_event_publisher/org.wso2.iot.android.proximity.ui.publisher.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_executionplan/Android-Rotation-ExecutionPlan.siddhiql b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_executionplan/Android-Rotation-ExecutionPlan.siddhiql new file mode 100755 index 000000000..df2e44c6d --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_executionplan/Android-Rotation-ExecutionPlan.siddhiql @@ -0,0 +1,18 @@ +@Plan:name('Android-Rotation-ExecutionPlan') + +@Plan:description('Process rotation field changes.') + +@Import('org.wso2.iot.android.rotation:1.0.0') +define stream RotationStream (meta_owner string, meta_deviceId string, meta_timestamp long, x float, y float, z float); + +@Export('org.wso2.iot.android.rotation.stats:1.0.0') +define stream RotationStatsStream (meta_owner string, meta_deviceId string, meta_timestamp long, x +float, y float, z float, year int, month int, day int, hour int, minute int); + +partition with (meta_deviceId of RotationStream) +begin + from RotationStream + select meta_owner, meta_deviceId, meta_timestamp, x, y, z, time:extract + (meta_timestamp, 'year') as year, time:extract(meta_timestamp, 'month') as month, time:extract(meta_timestamp, 'day') as day, time:extract(meta_timestamp, 'hour') as hour, time:extract(meta_timestamp, 'minute') as minute + insert into RotationStatsStream; +end; \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_executionplan/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_executionplan/artifact.xml new file mode 100644 index 000000000..eb2066187 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_executionplan/artifact.xml @@ -0,0 +1,23 @@ + + + + + Android-Rotation-ExecutionPlan.siddhiql + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_event_sink/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_event_sink/artifact.xml new file mode 100644 index 000000000..4963ddebf --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_event_sink/artifact.xml @@ -0,0 +1,23 @@ + + + + + org_wso2_iot_android_rotation_stats.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_event_sink/org_wso2_iot_android_rotation_stats.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_event_sink/org_wso2_iot_android_rotation_stats.xml new file mode 100755 index 000000000..018b265f6 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_event_sink/org_wso2_iot_android_rotation_stats.xml @@ -0,0 +1,98 @@ + + + + + meta_owner + false + false + false + false + STRING + + + meta_deviceId + false + false + false + false + STRING + + + meta_timestamp + false + false + false + false + LONG + + + x + false + false + false + false + FLOAT + + + y + false + false + false + false + FLOAT + + + z + false + false + false + false + FLOAT + + + year + false + false + false + false + INTEGER + + + month + false + false + false + false + INTEGER + + + day + false + false + false + false + INTEGER + + + hour + false + false + false + false + INTEGER + + + minute + false + false + false + false + INTEGER + + + + org.wso2.iot.android.rotation.stats:1.0.0 + + false + EVENT_STORE + \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_streams/artifact.xml new file mode 100644 index 000000000..eba1e16bb --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_streams/artifact.xml @@ -0,0 +1,24 @@ + + + + + org.wso2.iot.android.rotation.stats_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_streams/org.wso2.iot.android.rotation.stats_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_streams/org.wso2.iot.android.rotation.stats_1.0.0.json new file mode 100755 index 000000000..1bf43d4d6 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_stats_streams/org.wso2.iot.android.rotation.stats_1.0.0.json @@ -0,0 +1,54 @@ +{ + "name": "org.wso2.iot.android.rotation.stats", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "x", + "type": "FLOAT" + }, + { + "name": "y", + "type": "FLOAT" + }, + { + "name": "z", + "type": "FLOAT" + }, + { + "name": "year", + "type": "INT" + }, + { + "name": "month", + "type": "INT" + }, + { + "name": "day", + "type": "INT" + }, + { + "name": "hour", + "type": "INT" + }, + { + "name": "minute", + "type": "INT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_streams/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_streams/artifact.xml new file mode 100644 index 000000000..22ed7929c --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_streams/artifact.xml @@ -0,0 +1,23 @@ + + + + + org.wso2.iot.android.rotation_1.0.0.json + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_streams/org.wso2.iot.android.rotation_1.0.0.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_streams/org.wso2.iot.android.rotation_1.0.0.json new file mode 100755 index 000000000..22e6988e2 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_streams/org.wso2.iot.android.rotation_1.0.0.json @@ -0,0 +1,34 @@ +{ + "name": "org.wso2.iot.android.rotation", + "version": "1.0.0", + "nickName": "", + "description": "", + "metaData": [ + { + "name": "owner", + "type": "STRING" + }, + { + "name": "deviceId", + "type": "STRING" + }, + { + "name": "timestamp", + "type": "LONG" + } + ], + "payloadData": [ + { + "name": "x", + "type": "FLOAT" + }, + { + "name": "y", + "type": "FLOAT" + }, + { + "name": "z", + "type": "FLOAT" + } + ] +} \ No newline at end of file diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_ui_event_publisher/artifact.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_ui_event_publisher/artifact.xml new file mode 100644 index 000000000..428aa7a8d --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_ui_event_publisher/artifact.xml @@ -0,0 +1,24 @@ + + + + + org.wso2.iot.android.rotation.ui.publisher.xml + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_ui_event_publisher/org.wso2.iot.android.rotation.ui.publisher.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_ui_event_publisher/org.wso2.iot.android.rotation.ui.publisher.xml new file mode 100644 index 000000000..7209a1af1 --- /dev/null +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_rotation_ui_event_publisher/org.wso2.iot.android.rotation.ui.publisher.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_sense_dashboard/android-iot.json b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_sense_dashboard/android-iot.json index 6be9afa05..36570f484 100644 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_sense_dashboard/android-iot.json +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/android_sense_dashboard/android-iot.json @@ -72,20 +72,128 @@ "default": { "a": [ { - "id": "Android_Details-0", + "id": "ACCELEROMETER_Y-0", "content": { - "id": "Android_Details", - "title": "Android Device Details", + "id": "ACCELEROMETER_Y", + "title": "ACCELEROMETER Y", "type": "gadget", - "thumbnail": "fs://gadget/Android_Details/thumbnail.png", + "thumbnail": "fs://gadget/ACCELEROMETER_Y/thumbnail.png", "data": { - "url": "fs://gadget/Android_Details/gadget.xml" + "url": "fs://gadget/ACCELEROMETER_Y/gadget.xml" }, "styles": { - "no_heading": true, + "no_heading": false, "hide_gadget": false, - "titlePosition": "left", - "title": "Android Device Details" + "titlePosition": "center", + "title": "ACCELEROMETER Y" + }, + "options": { + "windowSize": { + "type": "STRING", + "title": "Window Size", + "value": "10", + "options": [], + "required": false + } + }, + "locale_titles": { + "en-US": "ACCELEROMETER Y" + }, + "settings": { + "priority": "5", + "timeoutInterval": "60000" + } + } + } + ], + "b": [ + { + "id": "ACCELEROMETER_Z-0", + "content": { + "id": "ACCELEROMETER_Z", + "title": "ACCELEROMETER Z", + "type": "gadget", + "thumbnail": "fs://gadget/ACCELEROMETER_Z/thumbnail.png", + "data": { + "url": "fs://gadget/ACCELEROMETER_Z/gadget.xml" + }, + "styles": { + "no_heading": false, + "hide_gadget": false, + "titlePosition": "center", + "title": "ACCELEROMETER Z" + }, + "options": { + "windowSize": { + "type": "STRING", + "title": "Window Size", + "value": "10", + "options": [], + "required": false + } + }, + "locale_titles": { + "en-US": "ACCELEROMETER Z" + }, + "settings": { + "priority": "5", + "timeoutInterval": "60000" + } + } + } + ], + "8e564cb7a1c6519179e2111cc05a79ca": [ + { + "id": "Accelerometer_X-0", + "content": { + "id": "Accelerometer_X", + "title": "Accelerometer X", + "type": "gadget", + "thumbnail": "fs://gadget/Accelerometer_X/thumbnail.png", + "data": { + "url": "fs://gadget/Accelerometer_X/gadget.xml" + }, + "styles": { + "no_heading": false, + "hide_gadget": false, + "titlePosition": "center", + "title": "Accelerometer X" + }, + "options": { + "windowSize": { + "type": "STRING", + "title": "Window Size", + "value": "10", + "options": [], + "required": false + } + }, + "locale_titles": { + "en-US": "Accelerometer X" + }, + "settings": { + "priority": "5", + "timeoutInterval": "60000" + } + } + } + ], + "fdfada688ff9e7b3271eece314618532": [ + { + "id": "GRAVITY-0", + "content": { + "id": "GRAVITY", + "title": "GRAVITY", + "type": "gadget", + "thumbnail": "fs://gadget/GRAVITY/thumbnail.png", + "data": { + "url": "fs://gadget/GRAVITY/gadget.xml" + }, + "styles": { + "no_heading": false, + "hide_gadget": false, + "titlePosition": "center", + "title": "GRAVITY" }, "options": { "refreshInterval": { @@ -97,18 +205,51 @@ } }, "locale_titles": { - "en-US": "Android Device Details" + "en-US": "GRAVITY" }, "settings": { "priority": "5", "timeoutInterval": "60000" } - }, - "fullViewPoped": false, - "viewOption": "default" + } } ], - "b": [] + "46193833e958e9f7e879263f372eb508": [ + { + "id": "PRESSURE-0", + "content": { + "id": "PRESSURE", + "title": "PRESSURE", + "type": "gadget", + "thumbnail": "fs://gadget/PRESSURE/thumbnail.png", + "data": { + "url": "fs://gadget/PRESSURE/gadget.xml" + }, + "styles": { + "no_heading": false, + "hide_gadget": false, + "titlePosition": "center", + "title": "PRESSURE" + }, + "options": { + "refreshInterval": { + "type": "STRING", + "title": "Refresh Interval", + "value": "1000000", + "options": [], + "required": false + } + }, + "locale_titles": { + "en-US": "PRESSURE" + }, + "settings": { + "priority": "5", + "timeoutInterval": "60000" + } + } + } + ] } }, "id": "home", @@ -119,18 +260,66 @@ "blocks": [ { "id": "a", + "x": 4, + "y": 0, + "width": 4, + "height": 4, + "banner": false + }, + { + "id": "b", + "x": 8, + "y": 0, + "width": 4, + "height": 4, + "banner": false + }, + { + "id": "8e564cb7a1c6519179e2111cc05a79ca", "x": 0, "y": 0, + "width": 4, + "height": 4, + "banner": false + }, + { + "id": "fdfada688ff9e7b3271eece314618532", + "x": 0, + "y": 4, "width": 6, - "height": 6, + "height": 3, "banner": false }, { - "id": "b", + "id": "46193833e958e9f7e879263f372eb508", "x": 6, - "y": 0, + "y": 4, "width": 6, - "height": 6, + "height": 3, + "banner": false + }, + { + "id": "765379a7012b8819ea13524e5b312509", + "x": 0, + "y": 7, + "width": 4, + "height": 4, + "banner": false + }, + { + "id": "47ceaee8a089ea8ef75c91e5b83a1a36", + "x": 8, + "y": 7, + "width": 4, + "height": 4, + "banner": false + }, + { + "id": "4a9feeb19fc2ea76e252dcd62c954279", + "x": 4, + "y": 7, + "width": 4, + "height": 4, "banner": false } ] diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/artifacts.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/artifacts.xml index 1a63a5b03..0d9518345 100644 --- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/artifacts.xml +++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.analytics/src/main/resources/carbonapps/androidsense/artifacts.xml @@ -176,5 +176,105 @@ serverRole="DataAnalyticsServer"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +