diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/device-api.jag b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/device-api.jag index 2d19fd02566..1f7d62b2aa2 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/device-api.jag +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/api/device-api.jag @@ -25,6 +25,8 @@ var constants = require("/app/modules/constants.js"); var deviceModule = require("/app/modules/device.js").deviceModule; var utility = require("/app/modules/utility.js").utility; var devicemgtProps = require('/app/conf/devicemgt-props.js').config(); +var userModule = require("/app/modules/user.js").userModule; +var serviceInvokers = require("/app/modules/backend-service-invoker.js").backendServiceInvoker; var CarbonUtils = Packages.org.wso2.carbon.utils.CarbonUtils; var user = session.get(constants.USER_SESSION_KEY); @@ -159,6 +161,88 @@ if (!user) { var deviceType = elements.deviceType; var deviceName = request.getParameter("name"); result = deviceModule.updateDevice(deviceType, deviceId, deviceName); + } else if (uriMatcher.match("/{context}/api/devices")) { + var url = request.getParameter("url"); + var draw = request.getParameter("draw"); + var length = request.getParameter("length"); + var start = request.getParameter("start"); + var search = request.getParameter("search[value]"); + var deviceName = request.getParameter("columns[1][search][value]"); + var owner = request.getParameter("columns[2][search][value]"); + var status = request.getParameter("columns[3][search][value]"); + var platform = request.getParameter("columns[4][search][value]"); + var ownership = request.getParameter("columns[5][search][value]"); + var targetURL; + + function appendQueryParam (url, queryParam , value) { + if (url.indexOf("?") > 0) { + return url + "&" + queryParam + "=" + value; + } + return url + "?" + queryParam + "=" + value; + } + targetURL = devicemgtProps.httpsURL + request.getParameter("url"); + targetURL = appendQueryParam(targetURL, "draw", draw); + targetURL = appendQueryParam(targetURL, "start", start); + targetURL = appendQueryParam(targetURL, "length", length); + + if (search && search !== "") { + targetURL = appendQueryParam(targetURL, "search", search); + } + + if (deviceName && deviceName !== "") { + targetURL = appendQueryParam(targetURL, "device-name", deviceName); + } + + if (owner && owner !== "") { + targetURL = appendQueryParam(targetURL, "user", owner); + } + + if (status && status !== "") { + targetURL = appendQueryParam(targetURL, "status", status); + } + + if (platform && platform !== "") { + targetURL = appendQueryParam(targetURL, "type", platform); + } + + if (ownership && ownership !== "") { + targetURL = appendQueryParam(targetURL, "ownership", ownership); + } + + serviceInvokers.XMLHttp.get( + targetURL, function (responsePayload) { + response.status = 200; + result = responsePayload; + }, + function (responsePayload) { + response.status = responsePayload.status; + result = responsePayload.responseText; + }); + } else if (uriMatcher.match("/{context}/api/devices/")) { + if (userModule.isAuthorized("/permission/admin/device-mgt/admin/devices/list")) { + result = deviceModule.listDevices(); + } else { + response.sendError(403); + } + } else if (uriMatcher.match("/{context}/api/devices/{type}/{deviceId}")) { + elements = uriMatcher.elements(); + deviceId = elements.deviceId; + type = elements.type; + if (userModule.isAuthorized("/permission/admin/device-mgt/admin/devices/list")) { + result = deviceModule.viewDevice(type, deviceId); + }else { + response.sendError(403); + } + } else if (uriMatcher.match("{context}/api/devices/{type}/{deviceId}/{operation}")) { + elements = uriMatcher.elements(); + deviceId = elements.deviceId; + type = elements.type; + operation = elements.operation; + if (userModule.isAuthorized("/permission/admin/device-mgt/admin/devices/operation")) { + result = deviceModule.performOperation(deviceId, operation, [], type); + } else { + response.sendError(403); + } } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/device.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/device.js index b06a2e436af..c2865c13b4e 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/device.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/device.js @@ -278,9 +278,10 @@ deviceModule = function () { if (device) { var propertiesList = device["properties"]; var properties = {}; - for (var i = 0; i < propertiesList.length; i++) { - properties[propertiesList[i]["name"]] = - propertiesList[i]["value"]; + if (propertiesList){ + for (var i = 0; i < propertiesList.length; i++) { + properties[propertiesList[i]["name"]] = propertiesList[i]["value"]; + } } var deviceObject = {}; deviceObject[constants["DEVICE_IDENTIFIER"]] = device["deviceIdentifier"]; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/operation.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/operation.js index aded5dac5c8..75c9abe9e7e 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/operation.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/operation.js @@ -21,6 +21,7 @@ var operationModule = function () { var utility = require('/app/modules/utility.js').utility; var constants = require('/app/modules/constants.js'); var devicemgtProps = require('/app/conf/devicemgt-props.js').config(); + var serviceInvokers = require("/app/modules/backend-service-invoker.js").backendServiceInvoker; var publicMethods = {}; var privateMethods = {}; @@ -39,51 +40,45 @@ var operationModule = function () { privateMethods.getOperationsFromFeatures = function (deviceType, operationType) { var url = devicemgtProps["httpsURL"] + constants.ADMIN_SERVICE_CONTEXT + "/features/" + deviceType; var featuresList = serviceInvokers.XMLHttp.get(url, function (responsePayload) { - var features = responsePayload.responseContent; + var features = responsePayload; var featureList = []; var feature; - for (var i = 0; i < features.size(); i++) { + for (var i = 0; i < features.length; i++) { feature = {}; - if (features.get(i).getType() != operationType) { + if (features[i].type != operationType) { continue; - } else if (features.get(i).getType() == 'monitor') { + } else if (features[i].type == 'monitor') { var analyticStreams = utility.getDeviceTypeConfig(deviceType)["analyticStreams"]; if (analyticStreams) { for (var stream in analyticStreams) { - if (analyticStreams[stream].name == features.get(i).getName()) { + if (analyticStreams[stream].name == features[i].name) { feature.ui_unit = analyticStreams[stream].ui_unit; break; } } } } - feature["operation"] = new String(features.get(i).getCode()); - feature["name"] = new String(features.get(i).getName()); - feature["description"] = new String(features.get(i).getDescription()); - feature["deviceType"] = new String(features.get(i).getDeviceType()); + feature["operation"] = features[i].code; + feature["name"] = features[i].name; + feature["description"] = features[i].description; + feature["deviceType"] = deviceType; feature["params"] = []; - var metaData = features.get(i).getMetadataEntries(); - if (metaData && metaData != null) { - for (var j = 0; j < metaData.size(); j++) { - feature["params"].push(new String(metaData.get(j).getValue())); + var metaData = features[i].metadataEntries; + if (metaData) { + for (var j = 0; j < metaData.length; j++) { + feature["params"].push(metaData[j].value); } featureList.push(feature); } } return featureList; - } - , - function (responsePayload) { + }, function (responsePayload) { var response = {}; response["status"] = "error"; return response; } ); return featuresList; - return featureList; - } catch (e) { - throw e; - } }; publicMethods.getControlOperations = function (deviceType) { @@ -108,7 +103,6 @@ var operationModule = function () { '","protocol":"mqtt", "sessionId":"' + session.getId() + '", "' + constants.AUTHORIZATION_HEADER + '":"' + constants.BEARER_PREFIX + getAccessToken(deviceType, user.username, deviceId) + '"}'; - log.warn("header: " + header); return post(endPoint, params, JSON.parse(header), "json"); }; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.hbs index a15a5a84b12..e4663a57ba2 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.hbs +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.hbs @@ -61,7 +61,7 @@