Removed non-compliant features gadget, pressure gadget, and related UI publishers

revert-dabc3590
lasantha 8 years ago
parent 59860b960a
commit f66fe4f598

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<artifact name= "android_non_compliant_features_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
<file>non-compliant-features</file>
</artifact>

@ -1,156 +0,0 @@
/*
* 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.
*/
.form-horizontal {
max-width: none;
}
body.dark svg.marks .mark-group .background {
/*noinspection CssUnknownProperty*/
fill: #121822 !important;
}
body.dark svg.marks .mark-group .mark-text text {
/*noinspection CssUnknownProperty*/
fill: #7D8596 !important;
}
body.dark svg.marks .mark-group .mark-rule line {
/*noinspection CssUnknownProperty*/
stroke: #E3E5E6 !important;
}
svg.marks .mark-group .mark-rect rect:hover {
cursor: pointer;
opacity: 0.8 !important;
}
body.dark select {
color: #fff;
background: transparent;
border-color: #353C48;
}
select {
cursor: pointer;
}
select option {
color: #31383e;
}
.pagination {
margin: 0;
}
.pagination > ul {
display: inline-block;
padding-left: 0;
margin: 0;
border-radius: 4px;
}
.pagination > ul > li {
display: inline;
}
.pagination > ul > li > a,
.pagination > ul > li > span {
position: relative;
float: left;
padding: 6px 12px;
margin-left: -1px;
line-height: 1.42857143;
color: #353C48;
text-decoration: none;
background-color: #fff;
border: 1px solid #ddd;
}
body.dark .pagination > ul > li > a,
body.dark .pagination > ul > li > span {
color: #fff;
background-color: transparent;
border-color: #353C48;
}
.pagination > ul > li:first-child > a,
.pagination > ul > li:first-child > span {
margin-left: 0;
}
.pagination > ul > li > a:hover,
.pagination > ul > li > span:hover,
.pagination > ul > li > a:focus,
.pagination > ul > li > span:focus {
color: #353C48;
background-color: #E3E5E6;
border-color: #E3E5E6;
}
body.dark .pagination > ul > li > a:hover,
body.dark .pagination > ul > li > span:hover,
body.dark .pagination > ul > li > a:focus,
body.dark .pagination > ul > li > span:focus {
color: #353C48;
background-color: #E3E5E6;
border-color: #E3E5E6;
}
.pagination > ul > .active > a,
.pagination > ul > .active > span,
.pagination > ul > .active > a:hover,
.pagination > ul > .active > span:hover,
.pagination > ul > .active > a:focus,
.pagination > ul > .active > span:focus,
body.dark .pagination > ul > .active > a,
body.dark .pagination > ul > .active > span,
body.dark .pagination > ul > .active > a:hover,
body.dark .pagination > ul > .active > span:hover,
body.dark .pagination > ul > .active > a:focus,
body.dark .pagination > ul > .active > span:focus {
z-index: 2;
color: #fff;
cursor: default;
background-color: #353C48;
border-color: #353C48;
}
.pagination > ul > .disabled > span,
.pagination > ul > .disabled > span:hover,
.pagination > ul > .disabled > span:focus,
.pagination > ul > .disabled > a,
.pagination > ul > .disabled > a:hover,
.pagination > ul > .disabled > a:focus {
color: #777;
cursor: not-allowed;
background-color: #fff;
border-color: #ddd;
}
.form-inline .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.label {
border-radius: 4px;
font-size: 35px;
font-weight: 300;
padding: 3px 15px 3px 15px;
margin-bottom: 2px;
display: inline-block;
vertical-align: text-bottom;
}
.label-zero {
background: #3c763d;
}

@ -1,21 +0,0 @@
{
"id": "non-compliant-features",
"title": "Non-compliant Features",
"type": "gadget",
"thumbnail": "gadget/non-compliant-features/img/thumbnail.png",
"data": {
"url": "gadget/non-compliant-features/index.xml"
},
"notify": {
"publisher": {
"type": "filter",
"description": "This notifies selected filter"
}
},
"listen": {
"subscriber": {
"type": "filter",
"description": "Used to listen to any filters"
}
}
}

@ -1,102 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<Module>
<ModulePrefs title="Connectivity Status"
author="WSO2 Gadget Server"
scrolling="false"
tags="stack,chart,data,visualization"
description="EMM Device Connectivity Status">
<Require feature="pubsub-2"/>
<Require feature="dynamic-height" />
<Require feature="dynamic-width" />
<Require feature="wso2-gadgets-remoteClient" />
</ModulePrefs>
<Content type="html">
<![CDATA[
<html>
<head>
<meta charset="utf-8">
<title>Connectivity Status</title>
<!-- Theme -->
<link rel="stylesheet" type="text/css" href="/portal/libs/bootstrap_3.3.5/css/bootstrap.min.css" />
<link rel="stylesheet" type="text/css" href="/portal/libs/font-wso2_1.0.0/css/font-wso2.min.css" />
<link rel="stylesheet" type="text/css" href="/portal/libs/theme-wso2_1.0/css/theme-wso2.css" />
<link rel="stylesheet" type="text/css" href="../commons/css/gadget.css" />
<!-- jQuery -->
<script src="../commons/js/jquery-1.10.2.js"></script>
<script src="../commons/js/moment.min.js"></script>
<script src="../commons/js/gadget-utils.js"></script>
<!-- Include VizGrammar -->
<script src="../commons/js/d3.min.js"></script>
<script src="../commons/js/vega.js"></script>
<script src="../commons/js/VizGrammar_2.js"></script>
<script src="/portal/extensions/themes/analytics/js/colorbrewer.js"></script>
<script src="/portal/extensions/themes/analytics/js/VizGrammarSettings.js"></script>
<!-- JS -->
<script src="js/bootstrap-paginator.min.js"></script>
<script src="js/topojson.js"></script>
<script src="js/gadgetconf.js"></script>
<script src="js/analyticsUtils.js"></script>
<script src="js/main.js"></script>
<!-- CSS -->
<link rel="stylesheet" href="css/style.css" type="text/css"/>
</head>
<body>
<h4 class="add-padding-left-5x add-padding-top-3x add-padding-right-5x">
<div id="header-msg">
<span id="header-msg-count" class="label label-success label-zero">0</span>
&nbsp; <span id="header-msg-text">non-compliant features found.<span>
</div>
<hr>
</h4>
<span id="body-msg-for-compliance" class="add-padding-left-5x add-padding-right-5x hidden">
All devices (if any) are currently intact.
<span>
<div id="chart" class="hidden"></div>
<div id="pagination-view" class="add-padding-left-5x hidden">
<div class="form-inline">
<div class="form-group clearfix">
<div class="pull-left">
<label for="input-name" class="control-label">Show&nbsp;</label>
<select id="paginationNumber" class="form-control" onChange="bc.changePaginationNumber(this.value);">
<option value=5>5</option>
<option value=10>10</option>
<option value=15>15</option>
<option value=20>20</option>
</select>
&nbsp;features
</div>
<div class="pull-right">
<div id="idPaginate"></div>
</div>
</div>
</div>
</div>
</body>
</html>
]]>
</Content>
</Module>

@ -1,106 +0,0 @@
/*
* 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 addURLParam(key, value) {
updateURLParam(key, value)
}
function updateURLParam(key, value) {
if (typeof (history.pushState) === "undefined") {
console.warn("Browser doesn't support updating the url.");
return;
}
var searchPath = window.parent.location.search,
replace = new RegExp("(&|\\?)" + key + "=(.*?)(&|$)", "g"),
urlParams = getURLParams(),
values = [],
unfiltered = "?filtered=false";
if (Object.prototype.toString.call( value ) === '[object Array]') {
values = value;
} else if (Object.prototype.toString.call( value ) === "[object String]"){
values.push(value);
} else {
console.error("value should be either an array of strings or a string");
return;
}
if (searchPath.replace(unfiltered, "")) {
if (key in urlParams) {
if (values.length > 0) {
searchPath = searchPath.replace(replace, "$1" + key + "=" + values.toString() + "$3");
} else {
if (searchPath.replace(replace, "")) {
searchPath = searchPath.replace(replace, "$1").replace(/&$/, '');
} else {
searchPath = unfiltered;
}
}
} else if (values.length > 0) {
searchPath += "&" + key + "=" + values.toString();
}
} else if (values.length > 0) {
searchPath = searchPath.replace(unfiltered, "");
searchPath += "?" + key + "=" + values.toString();
}
window.parent.history.pushState({}, "", searchPath);
}
function removeURLParam(key) {
updateURLParam(key, []);
}
function getURLParam(key) {
var params = getURLParams();
if (key in params) {
return params[key];
} else {
return null;
}
}
function getURLParams() {
var match,
pl = /\+/g,
search = /([^&=]+)=?([^&]*)/g,
decode = function (s) {
return decodeURIComponent(s.replace(pl, " "));
},
query = window.parent.location.search.substring(1),
urlParams = {};
while (match = search.exec(query))
urlParams[decode(match[1])] = decode(match[2]).split(',');
delete urlParams["filtered"];
return urlParams;
}
function getBaseURL() {
var url = window.parent.location.toString();
url = url.split('?')[0];
var urlComponents = url.split("/");
if(urlComponents[urlComponents.length-1] == "landing"){
url = url.substring(0,url.lastIndexOf("/")+1);
} else {
if(url.lastIndexOf("/") != url.length - 1){
url = url + "/";
}
}
return url;
}

@ -1,25 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
var gadgetConfig = {
"id": "non-compliant-features",
"polling_interval": 30000,
"pub_sub_channel": "filter",
"source": "https://localhost:9443/api/device-mgt/v1.0/dashboard/non-compliant-device-counts-by-features",
"domain": "carbon.super"
};

@ -1,225 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
var ncp = ncp || {};
ncp.chart = null;
ncp.polling_task = null;
ncp.data = [];
ncp.filter_context = null;
ncp.filters_meta = {};
ncp.filters = [];
ncp.filter_prefix = "g_";
ncp.selected_filter_groups = [];
ncp.force_fetch = false;
ncp.freeze = false;
ncp.div = "#chart";
ncp.fromIndex = 0;
ncp.count = 5;
ncp.prevTotalPages = -1;
ncp.globalPage = 1;
ncp.filterContextFromURL = "";
ncp.meta = {
"names": ["id", "name", "Device count"],
"types": ["ordinal", "ordinal", "linear"]
};
var body = "body";
ncp.config = {
type: "bar",
x: "id",
charts: [
{
type: "bar",
y: "Device count",
color: "name",
xTitle: "",
yTitle: "",
mode: "group",
colorScale: ["#D9534F"],
orientation: "left",
legend: false
}
],
//textColor:"#ffffff",
//text:"count",
//textAlign:"right",
//yAxisStrokeSize:0,
//yAxisFontSize:0,
grid: false,
width: $(body).width(),
height: $(body).height() - 165,
padding: {"top": 15, "left": 175, "bottom": 30, "right": 25}
};
ncp.initialize = function () {
//noinspection JSPotentiallyInvalidConstructorUsage
ncp.chart = new vizg(
[
{
"metadata": ncp.meta,
"data": ncp.data
}
],
ncp.config
);
ncp.chart.draw("#chart", [
{
type: "click",
callback: ncp.onclick
}
]);
ncp.startPolling();
};
ncp.changePaginationNumber = function (count) {
ncp.count = parseInt(count);
ncp.data = [];
ncp.initialize();
};
ncp.startPolling = function () {
setTimeout(function () {
ncp.update();
ncp.freeze = ncp.selected_filter_groups.length > 0;
}, 500);
//noinspection JSUnusedGlobalSymbols
this.polling_task = setInterval(function () {
ncp.update();
}, gadgetConfig.polling_interval);
};
ncp.update = function () {
ncp.fetch(function (data) {
ncp.chart.insert(data);
});
};
ncp.fetch = function (cb) {
ncp.data.length = 0;
ncp.force_fetch = false;
//noinspection JSUnresolvedVariable
wso2.gadgets.XMLHttpRequest.get(gadgetConfig.source + "?start=" + ncp.fromIndex + "&length=" + ncp.count,
function (response) {
// console.log(JSON.stringify(response));
if (Object.prototype.toString.call(response) === '[object Array]' && response.length === 1) {
ncp.filter_context = response[0]["groupingAttribute"];
var nonCompliantFeatureCount = response[0]["totalRecordCount"];
var data = response[0]["data"];
var headerMsgCount = "#header-msg-count";
var headerMsgText = "#header-msg-text";
var bodyMsgForCompliance = "#body-msg-for-compliance";
var chartDiv = "#chart";
var paginationView = "#pagination-view";
if (nonCompliantFeatureCount == 0) {
$(headerMsgCount).removeClass("label-danger");
$(headerMsgCount).addClass("label-success");
$(headerMsgCount).addClass("label-zero");
$(headerMsgCount).html(nonCompliantFeatureCount.toString());
$(headerMsgText).html("non-compliant features found.");
$(bodyMsgForCompliance).removeClass("hidden");
$(chartDiv).addClass("hidden");
$(paginationView).addClass("hidden");
} else if (data && data.length > 0) {
for (var i = 0; i < data.length; i++) {
ncp.data.push(
[data[i]["group"], data[i]["displayNameForGroup"], data[i]["deviceCount"]]
);
}
if (ncp.force_fetch) {
ncp.update();
} else {
cb(ncp.data);
}
$(headerMsgCount).removeClass("label-zero");
$(headerMsgCount).removeClass("label-success");
$(headerMsgCount).addClass("label-danger");
$(headerMsgCount).html(nonCompliantFeatureCount.toString());
if (nonCompliantFeatureCount == 1) {
$(headerMsgText).html("non-compliant feature found.");
} else {
$(headerMsgText).html("non-compliant features found.");
}
$(bodyMsgForCompliance).addClass("hidden");
ncp.onData(response);
$(chartDiv).removeClass("hidden");
$(paginationView).removeClass("hidden");
}
} else {
console.error("Invalid response structure found: " + JSON.stringify(response));
}
}, function () {
console.warn("Error accessing source for : " + gadgetConfig.id);
});
};
ncp.onclick = function (event, item) {
if (!ncp.filterContextFromURL) {
var filteringGroup = item.datum[ncp.config.x];
var url = getBaseURL() + "devices?g_" + ncp.filter_context + "=" + filteringGroup;
window.open(url);
}
};
$(document).ready(function () {
ncp.initialize();
});
ncp.onPaginationClicked = function (e, originalEvent, type, page) {
ncp.globalPage = page;
ncp.fromIndex = (page - 1) * ncp.count;
ncp.globalPage = ncp.fromIndex;
ncp.data = [];
//noinspection JSPotentiallyInvalidConstructorUsage
ncp.chart = new vizg(
[
{
"metadata": ncp.meta,
"data": ncp.data
}
],
ncp.config
);
ncp.chart.draw("#chart", [
{
type: "click",
callback: ncp.onclick
}
]);
ncp.update();
};
ncp.onData = function (response) {
try {
var allDataCount = response[0]["totalRecordCount"];
var totalPages = parseInt(allDataCount / ncp.count);
if (allDataCount % ncp.count != 0) {
totalPages += 1;
}
var options = {
currentPage: ncp.globalPage,
totalPages: totalPages,
onPageClicked: ncp.onPaginationClicked
};
$('#idPaginate').bootstrapPaginator(options);
} catch (e) {
$('#canvas').html(gadgetUtil.getErrorText(e));
}
};

@ -1,534 +0,0 @@
!function() {
var topojson = {
version: "1.6.19",
mesh: function(topology) { return object(topology, meshArcs.apply(this, arguments)); },
meshArcs: meshArcs,
merge: function(topology) { return object(topology, mergeArcs.apply(this, arguments)); },
mergeArcs: mergeArcs,
feature: featureOrCollection,
neighbors: neighbors,
presimplify: presimplify
};
function stitchArcs(topology, arcs) {
var stitchedArcs = {},
fragmentByStart = {},
fragmentByEnd = {},
fragments = [],
emptyIndex = -1;
// Stitch empty arcs first, since they may be subsumed by other arcs.
arcs.forEach(function(i, j) {
var arc = topology.arcs[i < 0 ? ~i : i], t;
if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {
t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;
}
});
arcs.forEach(function(i) {
var e = ends(i),
start = e[0],
end = e[1],
f, g;
if (f = fragmentByEnd[start]) {
delete fragmentByEnd[f.end];
f.push(i);
f.end = end;
if (g = fragmentByStart[end]) {
delete fragmentByStart[g.start];
var fg = g === f ? f : f.concat(g);
fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;
} else {
fragmentByStart[f.start] = fragmentByEnd[f.end] = f;
}
} else if (f = fragmentByStart[end]) {
delete fragmentByStart[f.start];
f.unshift(i);
f.start = start;
if (g = fragmentByEnd[start]) {
delete fragmentByEnd[g.end];
var gf = g === f ? f : g.concat(f);
fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;
} else {
fragmentByStart[f.start] = fragmentByEnd[f.end] = f;
}
} else {
f = [i];
fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;
}
});
function ends(i) {
var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;
if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });
else p1 = arc[arc.length - 1];
return i < 0 ? [p1, p0] : [p0, p1];
}
function flush(fragmentByEnd, fragmentByStart) {
for (var k in fragmentByEnd) {
var f = fragmentByEnd[k];
delete fragmentByStart[f.start];
delete f.start;
delete f.end;
f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });
fragments.push(f);
}
}
flush(fragmentByEnd, fragmentByStart);
flush(fragmentByStart, fragmentByEnd);
arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });
return fragments;
}
function meshArcs(topology, o, filter) {
var arcs = [];
if (arguments.length > 1) {
var geomsByArc = [],
geom;
function arc(i) {
var j = i < 0 ? ~i : i;
(geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});
}
function line(arcs) {
arcs.forEach(arc);
}
function polygon(arcs) {
arcs.forEach(line);
}
function geometry(o) {
if (o.type === "GeometryCollection") o.geometries.forEach(geometry);
else if (o.type in geometryType) geom = o, geometryType[o.type](o.arcs);
}
var geometryType = {
LineString: line,
MultiLineString: polygon,
Polygon: polygon,
MultiPolygon: function(arcs) { arcs.forEach(polygon); }
};
geometry(o);
geomsByArc.forEach(arguments.length < 3
? function(geoms) { arcs.push(geoms[0].i); }
: function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });
} else {
for (var i = 0, n = topology.arcs.length; i < n; ++i) arcs.push(i);
}
return {type: "MultiLineString", arcs: stitchArcs(topology, arcs)};
}
function mergeArcs(topology, objects) {
var polygonsByArc = {},
polygons = [],
components = [];
objects.forEach(function(o) {
if (o.type === "Polygon") register(o.arcs);
else if (o.type === "MultiPolygon") o.arcs.forEach(register);
});
function register(polygon) {
polygon.forEach(function(ring) {
ring.forEach(function(arc) {
(polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon);
});
});
polygons.push(polygon);
}
function exterior(ring) {
return cartesianRingArea(object(topology, {type: "Polygon", arcs: [ring]}).coordinates[0]) > 0; // TODO allow spherical?
}
polygons.forEach(function(polygon) {
if (!polygon._) {
var component = [],
neighbors = [polygon];
polygon._ = 1;
components.push(component);
while (polygon = neighbors.pop()) {
component.push(polygon);
polygon.forEach(function(ring) {
ring.forEach(function(arc) {
polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) {
if (!polygon._) {
polygon._ = 1;
neighbors.push(polygon);
}
});
});
});
}
}
});
polygons.forEach(function(polygon) {
delete polygon._;
});
return {
type: "MultiPolygon",
arcs: components.map(function(polygons) {
var arcs = [];
// Extract the exterior (unique) arcs.
polygons.forEach(function(polygon) {
polygon.forEach(function(ring) {
ring.forEach(function(arc) {
if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) {
arcs.push(arc);
}
});
});
});
// Stitch the arcs into one or more rings.
arcs = stitchArcs(topology, arcs);
// If more than one ring is returned,
// at most one of these rings can be the exterior;
// this exterior ring has the same winding order
// as any exterior ring in the original polygons.
if ((n = arcs.length) > 1) {
var sgn = exterior(polygons[0][0]);
for (var i = 0, t; i < n; ++i) {
if (sgn === exterior(arcs[i])) {
t = arcs[0], arcs[0] = arcs[i], arcs[i] = t;
break;
}
}
}
return arcs;
})
};
}
function featureOrCollection(topology, o) {
return o.type === "GeometryCollection" ? {
type: "FeatureCollection",
features: o.geometries.map(function(o) { return feature(topology, o); })
} : feature(topology, o);
}
function feature(topology, o) {
var f = {
type: "Feature",
id: o.id,
properties: o.properties || {},
geometry: object(topology, o)
};
if (o.id == null) delete f.id;
return f;
}
function object(topology, o) {
var absolute = transformAbsolute(topology.transform),
arcs = topology.arcs;
function arc(i, points) {
if (points.length) points.pop();
for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length, p; k < n; ++k) {
points.push(p = a[k].slice());
absolute(p, k);
}
if (i < 0) reverse(points, n);
}
function point(p) {
p = p.slice();
absolute(p, 0);
return p;
}
function line(arcs) {
var points = [];
for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);
if (points.length < 2) points.push(points[0].slice());
return points;
}
function ring(arcs) {
var points = line(arcs);
while (points.length < 4) points.push(points[0].slice());
return points;
}
function polygon(arcs) {
return arcs.map(ring);
}
function geometry(o) {
var t = o.type;
return t === "GeometryCollection" ? {type: t, geometries: o.geometries.map(geometry)}
: t in geometryType ? {type: t, coordinates: geometryType[t](o)}
: null;
}
var geometryType = {
Point: function(o) { return point(o.coordinates); },
MultiPoint: function(o) { return o.coordinates.map(point); },
LineString: function(o) { return line(o.arcs); },
MultiLineString: function(o) { return o.arcs.map(line); },
Polygon: function(o) { return polygon(o.arcs); },
MultiPolygon: function(o) { return o.arcs.map(polygon); }
};
return geometry(o);
}
function reverse(array, n) {
var t, j = array.length, i = j - n; while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;
}
function bisect(a, x) {
var lo = 0, hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
if (a[mid] < x) lo = mid + 1;
else hi = mid;
}
return lo;
}
function neighbors(objects) {
var indexesByArc = {}, // arc index -> array of object indexes
neighbors = objects.map(function() { return []; });
function line(arcs, i) {
arcs.forEach(function(a) {
if (a < 0) a = ~a;
var o = indexesByArc[a];
if (o) o.push(i);
else indexesByArc[a] = [i];
});
}
function polygon(arcs, i) {
arcs.forEach(function(arc) { line(arc, i); });
}
function geometry(o, i) {
if (o.type === "GeometryCollection") o.geometries.forEach(function(o) { geometry(o, i); });
else if (o.type in geometryType) geometryType[o.type](o.arcs, i);
}
var geometryType = {
LineString: line,
MultiLineString: polygon,
Polygon: polygon,
MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); }
};
objects.forEach(geometry);
for (var i in indexesByArc) {
for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) {
for (var k = j + 1; k < m; ++k) {
var ij = indexes[j], ik = indexes[k], n;
if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik);
if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij);
}
}
}
return neighbors;
}
function presimplify(topology, triangleArea) {
var absolute = transformAbsolute(topology.transform),
relative = transformRelative(topology.transform),
heap = minAreaHeap();
if (!triangleArea) triangleArea = cartesianTriangleArea;
topology.arcs.forEach(function(arc) {
var triangles = [],
maxArea = 0,
triangle;
// To store each points effective area, we create a new array rather than
// extending the passed-in point to workaround a Chrome/V8 bug (getting
// stuck in smi mode). For midpoints, the initial effective area of
// Infinity will be computed in the next step.
for (var i = 0, n = arc.length, p; i < n; ++i) {
p = arc[i];
absolute(arc[i] = [p[0], p[1], Infinity], i);
}
for (var i = 1, n = arc.length - 1; i < n; ++i) {
triangle = arc.slice(i - 1, i + 2);
triangle[1][2] = triangleArea(triangle);
triangles.push(triangle);
heap.push(triangle);
}
for (var i = 0, n = triangles.length; i < n; ++i) {
triangle = triangles[i];
triangle.previous = triangles[i - 1];
triangle.next = triangles[i + 1];
}
while (triangle = heap.pop()) {
var previous = triangle.previous,
next = triangle.next;
// If the area of the current point is less than that of the previous point
// to be eliminated, use the latter's area instead. This ensures that the
// current point cannot be eliminated without eliminating previously-
// eliminated points.
if (triangle[1][2] < maxArea) triangle[1][2] = maxArea;
else maxArea = triangle[1][2];
if (previous) {
previous.next = next;
previous[2] = triangle[2];
update(previous);
}
if (next) {
next.previous = previous;
next[0] = triangle[0];
update(next);
}
}
arc.forEach(relative);
});
function update(triangle) {
heap.remove(triangle);
triangle[1][2] = triangleArea(triangle);
heap.push(triangle);
}
return topology;
};
function cartesianRingArea(ring) {
var i = -1,
n = ring.length,
a,
b = ring[n - 1],
area = 0;
while (++i < n) {
a = b;
b = ring[i];
area += a[0] * b[1] - a[1] * b[0];
}
return area * .5;
}
function cartesianTriangleArea(triangle) {
var a = triangle[0], b = triangle[1], c = triangle[2];
return Math.abs((a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]));
}
function compareArea(a, b) {
return a[1][2] - b[1][2];
}
function minAreaHeap() {
var heap = {},
array = [],
size = 0;
heap.push = function(object) {
up(array[object._ = size] = object, size++);
return size;
};
heap.pop = function() {
if (size <= 0) return;
var removed = array[0], object;
if (--size > 0) object = array[size], down(array[object._ = 0] = object, 0);
return removed;
};
heap.remove = function(removed) {
var i = removed._, object;
if (array[i] !== removed) return; // invalid request
if (i !== --size) object = array[size], (compareArea(object, removed) < 0 ? up : down)(array[object._ = i] = object, i);
return i;
};
function up(object, i) {
while (i > 0) {
var j = ((i + 1) >> 1) - 1,
parent = array[j];
if (compareArea(object, parent) >= 0) break;
array[parent._ = i] = parent;
array[object._ = i = j] = object;
}
}
function down(object, i) {
while (true) {
var r = (i + 1) << 1,
l = r - 1,
j = i,
child = array[j];
if (l < size && compareArea(array[l], child) < 0) child = array[j = l];
if (r < size && compareArea(array[r], child) < 0) child = array[j = r];
if (j === i) break;
array[child._ = i] = child;
array[object._ = i = j] = object;
}
}
return heap;
}
function transformAbsolute(transform) {
if (!transform) return noop;
var x0,
y0,
kx = transform.scale[0],
ky = transform.scale[1],
dx = transform.translate[0],
dy = transform.translate[1];
return function(point, i) {
if (!i) x0 = y0 = 0;
point[0] = (x0 += point[0]) * kx + dx;
point[1] = (y0 += point[1]) * ky + dy;
};
}
function transformRelative(transform) {
if (!transform) return noop;
var x0,
y0,
kx = transform.scale[0],
ky = transform.scale[1],
dx = transform.translate[0],
dy = transform.translate[1];
return function(point, i) {
if (!i) x0 = y0 = 0;
var x1 = (point[0] - dx) / kx | 0,
y1 = (point[1] - dy) / ky | 0;
point[0] = x1 - x0;
point[1] = y1 - y0;
x0 = x1;
y0 = y1;
};
}
function noop() {}
if (typeof define === "function" && define.amd) define(topojson);
else if (typeof module === "object" && module.exports) module.exports = topojson;
else this.topojson = topojson;
}();

@ -1,15 +0,0 @@
{
"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"
}
}

@ -1,35 +0,0 @@
#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;
}

@ -1,42 +0,0 @@
<%
/**
* 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;
}
}());
%>

@ -1,9 +0,0 @@
{
"id": "PRESSURE",
"title": "PRESSURE",
"type": "gadget",
"thumbnail": "gadget/PRESSURE/thumbnail.png",
"data": {
"url": "gadget/PRESSURE/gadget.xml"
}
}

@ -1,58 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="PRESSURE" description="This is a template gadget">
<Require feature="dynamic-height"/>
<Require feature="wso2-gadgets-identity"/>
</ModulePrefs>
<UserPref name="refreshInterval"
display_name="Refresh Interval"
default_value="1000000"/>
<Content type="html">
<![CDATA[
<head>
<!-- shared css -->
<link href="/portal/libs/analytics-wso2-2.0.0/common.css" rel="stylesheet" type="text/css" >
<!-- chart vendor css -->
<!-- chart specific css -->
<link href="css/number-chart.css" rel="stylesheet" type="text/css">
<!-- jQuery -->
<script src="/portal/libs/jquery_1.11.0/jquery-1.11.3.min.js"></script>
<!-- provider libs -->
<!-- shared libs -->
<script src="/portal/libs/analytics-wso2-2.0.0/d3.min.js"></script>
<script src="/portal/libs/analytics-wso2-2.0.0/vega.js"></script>
<script src="/portal/libs/analytics-wso2-2.0.0/VizGrammar.min.js"></script>
<script src="/portal/libs/analytics-wso2-2.0.0/wso2gadgets.js"></script>
<script src="/portal/libs/analytics-wso2-2.0.0/chart-utils.js"></script>
<!-- chart specific vendor libs -->
<!-- chart specific js -->
<!--scripts copied by framework -->
<script src="js/core/gadget-util.js"></script>
<script src="js/core/number-chart-api.js"></script>
<script src="js/core/gadget-core.js"></script>
</head>
<body>
<div id="canvas"></div>
</body>
]]>
</Content>
</Module>

@ -1,191 +0,0 @@
/*
* 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;
};
}());

@ -1,85 +0,0 @@
/*
* 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();
});
});

@ -1,35 +0,0 @@
/*
* 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);
}
}

@ -1,111 +0,0 @@
/*
* 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;
};
}());

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<artifact name= "android_pressure_gadget" version="1.0.0" type="dashboards/gadget" serverRole="DataAnalyticsServer">
<file>PRESSURE</file>
</artifact>

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<artifact name= "android_pressure_ui_event_publisher" version="1.0.0" type="event/publisher"
serverRole="DataAnalyticsServer">
<file>org.wso2.iot.android.pressure.ui.publisher.xml</file>
</artifact>

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<eventPublisher name="org.wso2.iot.android.pressure.ui.publisher"
processing="enable" statistics="disable" trace="disable" xmlns="http://wso2.org/carbon/eventpublisher">
<from streamName="org.wso2.iot.android.pressure" version="1.0.0"/>
<mapping customMapping="disable" type="wso2event"/>
<to eventAdapterType="ui"/>
</eventPublisher>
Loading…
Cancel
Save