mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
commit
3b68ccb4ba
@ -21,6 +21,7 @@ package org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||
import org.wso2.carbon.device.mgt.common.push.notification.NotificationContext;
|
||||
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
|
||||
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
||||
@ -77,17 +78,22 @@ public class MQTTNotificationStrategy implements NotificationStrategy {
|
||||
@Override
|
||||
public void execute(NotificationContext ctx) throws PushNotificationExecutionFailedException {
|
||||
Map<String, String> dynamicProperties = new HashMap<>();
|
||||
Properties properties = ctx.getOperation().getProperties();
|
||||
Operation operation = ctx.getOperation();
|
||||
Properties properties = operation.getProperties();
|
||||
if (properties != null && properties.get(MQTT_ADAPTER_TOPIC) != null) {
|
||||
dynamicProperties.put("topic", (String) properties.get(MQTT_ADAPTER_TOPIC));
|
||||
} else {
|
||||
String topic = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain(true) + "/"
|
||||
+ ctx.getDeviceId().getType() + "/" + ctx.getDeviceId().getId() + "/" + ctx.getOperation().getType();
|
||||
+ ctx.getDeviceId().getType() + "/" + ctx.getDeviceId().getId() + "/" + operation.getType()
|
||||
+ "/" + operation.getCode();
|
||||
dynamicProperties.put("topic", topic);
|
||||
if (operation.getPayLoad() == null) {
|
||||
operation.setPayLoad("");
|
||||
}
|
||||
}
|
||||
|
||||
MQTTDataHolder.getInstance().getOutputEventAdapterService().publish(mqttAdapterName, dynamicProperties,
|
||||
ctx.getOperation().getPayLoad());
|
||||
operation.getPayLoad());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -18,17 +18,29 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.jaxrs.service.api;
|
||||
|
||||
import io.swagger.annotations.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import io.swagger.annotations.ApiResponse;
|
||||
import io.swagger.annotations.ApiResponses;
|
||||
import io.swagger.annotations.ResponseHeader;
|
||||
import org.wso2.carbon.apimgt.annotations.api.API;
|
||||
import org.wso2.carbon.apimgt.annotations.api.Permission;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceTypeList;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
||||
|
||||
import javax.ws.rs.*;
|
||||
import javax.validation.constraints.Size;
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.HeaderParam;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
@API(name = "Device Type Management", version = "1.0.0", context = "/api/device-mgt/v1.0/admin/device-types", tags = {"devicemgt_admin"})
|
||||
@API(name = "Device Type Management", version = "1.0.0", context = "/api/device-mgt/v1.0/admin/device-types",
|
||||
tags = {"devicemgt_admin"})
|
||||
|
||||
@Path("/device-types")
|
||||
@Api(value = "Device Type Management", description = "This API corresponds to all tasks related to device " +
|
||||
@ -60,14 +72,17 @@ public interface DeviceTypeManagementService {
|
||||
"Used by caches, or in conditional requests."),
|
||||
@ResponseHeader(
|
||||
name = "Last-Modified",
|
||||
description = "Date and time the resource has been modified the last time.\n" +
|
||||
"Used by caches, or in conditional requests."),
|
||||
description =
|
||||
"Date and time the resource has been modified the last time.\n" +
|
||||
"Used by caches, or in conditional requests."),
|
||||
}
|
||||
),
|
||||
@ApiResponse(
|
||||
code = 304,
|
||||
message = "Not Modified. \n Empty body because the client has already the latest version of " +
|
||||
"the requested resource."),
|
||||
message =
|
||||
"Not Modified. \n Empty body because the client has already the latest version of" +
|
||||
" " +
|
||||
"the requested resource."),
|
||||
@ApiResponse(
|
||||
code = 406,
|
||||
message = "Not Acceptable.\n The requested media type is not supported"),
|
||||
@ -85,6 +100,66 @@ public interface DeviceTypeManagementService {
|
||||
value = "Validates if the requested variant has not been modified since the time specified",
|
||||
required = false)
|
||||
@HeaderParam("If-Modified-Since")
|
||||
String ifModifiedSince);
|
||||
String ifModifiedSince);
|
||||
|
||||
@GET
|
||||
@ApiOperation(
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Get the list of features for a give device type.",
|
||||
notes = "Retrieves the list of features of a given device type.",
|
||||
tags = "Device Type Management")
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
code = 200,
|
||||
message = "OK. \n Successfully fetched the list of supported features.",
|
||||
response = DeviceTypeList.class,
|
||||
responseHeaders = {
|
||||
@ResponseHeader(
|
||||
name = "Content-Type",
|
||||
description = "The content type of the body"),
|
||||
@ResponseHeader(
|
||||
name = "ETag",
|
||||
description = "Entity Tag of the response resource.\n" +
|
||||
"Used by caches, or in conditional requests."),
|
||||
@ResponseHeader(
|
||||
name = "Last-Modified",
|
||||
description =
|
||||
"Date and time the resource has been modified the last time.\n" +
|
||||
"Used by caches, or in conditional requests."),
|
||||
}
|
||||
),
|
||||
@ApiResponse(
|
||||
code = 304,
|
||||
message =
|
||||
"Not Modified. \n Empty body because the client has already the latest version of" +
|
||||
" " +
|
||||
"the requested resource."),
|
||||
@ApiResponse(
|
||||
code = 406,
|
||||
message = "Not Acceptable.\n The requested media type is not supported"),
|
||||
@ApiResponse(
|
||||
code = 500,
|
||||
message = "Internal Server Error. \n Server error occurred while fetching the " +
|
||||
"list of supported device types.",
|
||||
response = ErrorResponse.class)
|
||||
}
|
||||
)
|
||||
@Permission(name = "View Device Types", permission = "/device-mgt/devices/owning-device/view")
|
||||
Response getFeatures(
|
||||
@ApiParam(
|
||||
name = "type",
|
||||
value = "The device type, such as ios, android or windows.",
|
||||
required = true)
|
||||
@PathParam("type")
|
||||
@Size(max = 45)
|
||||
String type,
|
||||
@ApiParam(
|
||||
name = "If-Modified-Since",
|
||||
value = "Validates if the requested variant has not been modified since the time specified",
|
||||
required = false)
|
||||
@HeaderParam("If-Modified-Since")
|
||||
String ifModifiedSince);
|
||||
|
||||
}
|
||||
|
||||
@ -18,85 +18,96 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.jaxrs.service.api;
|
||||
|
||||
import org.wso2.carbon.apimgt.annotations.api.Scope;
|
||||
import org.wso2.carbon.apimgt.annotations.api.API;
|
||||
import org.wso2.carbon.apimgt.annotations.api.Permission;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.DELETE;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.PUT;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
//@Path("/groups")
|
||||
//@Produces(MediaType.APPLICATION_JSON)
|
||||
//@Consumes(MediaType.APPLICATION_JSON)
|
||||
@API(name = "Group Management", version = "1.0.0", context = "/api/device-mgt/v1.0/groups", tags = {"devicemgt_admin"})
|
||||
|
||||
@Path("/groups")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
public interface GroupManagementService {
|
||||
|
||||
// @GET
|
||||
// @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"})
|
||||
// Response getGroups(@QueryParam("user") String user, @QueryParam("offset") int offset,
|
||||
// @QueryParam("limit") int limit);
|
||||
//
|
||||
// @POST
|
||||
// @Permission(scope = "group-add", permissions = {"/permission/admin/device-mgt/user/groups/add"})
|
||||
// Response createGroup(DeviceGroup group);
|
||||
//
|
||||
// @Path("/{groupName}")
|
||||
// @GET
|
||||
// @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/view"})
|
||||
// Response getGroup(@PathParam("groupName") String groupName);
|
||||
//
|
||||
// @Path("/{groupName}")
|
||||
// @PUT
|
||||
// @Permission(scope = "group-modify", permissions = {"/permission/admin/device-mgt/user/groups/update"})
|
||||
// Response updateGroup(@PathParam("groupName") String groupName, DeviceGroup deviceGroup);
|
||||
//
|
||||
// @Path("/{groupName}")
|
||||
// @DELETE
|
||||
// @Permission(scope = "group-remove", permissions = {"/permission/admin/device-mgt/user/groups/remove"})
|
||||
// Response deleteGroup(@PathParam("groupName") String groupName);
|
||||
//
|
||||
// @Path("/{groupName}/share-with-user")
|
||||
// @POST
|
||||
// @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/share"})
|
||||
// Response shareGroupWithUser(@PathParam("groupName") String groupName, String targetUser);
|
||||
//
|
||||
// @Path("/{groupName}/share-with-role")
|
||||
// @POST
|
||||
// @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/share"})
|
||||
// Response shareGroupWithRole(@PathParam("groupName") String groupName, String targetRole);
|
||||
//
|
||||
// @Path("/{groupName}/remove-share-with-user")
|
||||
// @POST
|
||||
// @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/unshare"})
|
||||
// Response removeShareWithUser(@PathParam("groupName") String groupName, String targetUser);
|
||||
//
|
||||
// @Path("/{groupName}/remove-share-with-role")
|
||||
// @POST
|
||||
// @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/unshare"})
|
||||
// Response removeShareWithRole(@PathParam("groupName") String groupName, String targetUser);
|
||||
//
|
||||
// @GET
|
||||
// @Path("/{groupName}/users")
|
||||
// @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"})
|
||||
// Response getUsersOfGroup(@PathParam("groupName") String groupName);
|
||||
//
|
||||
// @GET
|
||||
// @Path("/{groupName}/devices")
|
||||
// @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/groups/roles"})
|
||||
// Response getDevicesOfGroup(@PathParam("groupName") String groupName, @QueryParam("offset") int offset,
|
||||
// @QueryParam("limit") int limit);
|
||||
//
|
||||
// @POST
|
||||
// @Path("/{groupName}/devices")
|
||||
// @Produces("application/json")
|
||||
// @Permission(scope = "group-add", permissions = {"/permission/admin/device-mgt/user/groups/devices/add"})
|
||||
// Response addDeviceToGroup(@PathParam("groupName") String groupName, DeviceIdentifier deviceIdentifier);
|
||||
//
|
||||
// @DELETE
|
||||
// @Path("/{groupName}/devices")
|
||||
// @Permission(scope = "group-remove", permissions = {"/permission/admin/device-mgt/user/groups/devices/remove"})
|
||||
// Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type,
|
||||
// @QueryParam("id") String id);
|
||||
@GET
|
||||
@Permission(name = "View Group", permission = "/permission/admin/device-mgt/user/groups/list")
|
||||
Response getGroups(@QueryParam("user") String user, @QueryParam("offset") int offset,
|
||||
@QueryParam("limit") int limit);
|
||||
|
||||
@POST
|
||||
@Permission(name = "Add Group", permission = "/permission/admin/device-mgt/user/groups/add")
|
||||
Response createGroup(DeviceGroup group);
|
||||
|
||||
@Path("/{groupName}")
|
||||
@GET
|
||||
@Permission(name = "View Group", permission = "/permission/admin/device-mgt/user/groups/view")
|
||||
Response getGroup(@PathParam("groupName") String groupName);
|
||||
|
||||
@Path("/{groupName}")
|
||||
@PUT
|
||||
@Permission(name = "Update Group", permission = "/permission/admin/device-mgt/user/groups/update")
|
||||
Response updateGroup(@PathParam("groupName") String groupName, DeviceGroup deviceGroup);
|
||||
|
||||
@Path("/{groupName}")
|
||||
@DELETE
|
||||
@Permission(name = "Remove Groups", permission = "/permission/admin/device-mgt/user/groups/remove")
|
||||
Response deleteGroup(@PathParam("groupName") String groupName);
|
||||
|
||||
@Path("/{groupName}/share-with-user")
|
||||
@POST
|
||||
@Permission(name = "Share Group to a User", permission = "/permission/admin/device-mgt/user/groups/share")
|
||||
Response shareGroupWithUser(@PathParam("groupName") String groupName, String targetUser);
|
||||
|
||||
@Path("/{groupName}/share-with-role")
|
||||
@POST
|
||||
@Permission(name = "Share Group to a Role", permission = "/permission/admin/device-mgt/user/groups/share")
|
||||
Response shareGroupWithRole(@PathParam("groupName") String groupName, String targetRole);
|
||||
|
||||
@Path("/{groupName}/remove-share-with-user")
|
||||
@POST
|
||||
@Permission(name = "Unshare a Group", permission = "/permission/admin/device-mgt/user/groups/unshare")
|
||||
Response removeShareWithUser(@PathParam("groupName") String groupName, String targetUser);
|
||||
|
||||
@Path("/{groupName}/remove-share-with-role")
|
||||
@POST
|
||||
@Permission(name = "Unshare a Group", permission = "/permission/admin/device-mgt/user/groups/unshare")
|
||||
Response removeShareWithRole(@PathParam("groupName") String groupName, String targetUser);
|
||||
|
||||
@GET
|
||||
@Path("/{groupName}/users")
|
||||
@Permission(name = "Get Users of Group", permission = "/permission/admin/device-mgt/user/groups/list")
|
||||
Response getUsersOfGroup(@PathParam("groupName") String groupName);
|
||||
|
||||
@GET
|
||||
@Path("/{groupName}/devices")
|
||||
@Permission(name = "Get Devices of Group", permission = "/permission/admin/device-mgt/groups/roles")
|
||||
Response getDevicesOfGroup(@PathParam("groupName") String groupName, @QueryParam("offset") int offset,
|
||||
@QueryParam("limit") int limit);
|
||||
|
||||
@POST
|
||||
@Path("/{groupName}/devices")
|
||||
@Produces("application/json")
|
||||
@Permission(name = "Add Device to a Group", permission = "/permission/admin/device-mgt/user/groups/devices/add")
|
||||
Response addDeviceToGroup(@PathParam("groupName") String groupName, DeviceIdentifier deviceIdentifier);
|
||||
|
||||
@DELETE
|
||||
@Path("/{groupName}/devices")
|
||||
@Permission(name = "Remove Devices from Group",
|
||||
permission = "/permission/admin/device-mgt/user/groups/devices/remove")
|
||||
Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type,
|
||||
@QueryParam("id") String id);
|
||||
|
||||
}
|
||||
|
||||
@ -18,82 +18,92 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.jaxrs.service.api.admin;
|
||||
|
||||
import io.swagger.annotations.*;
|
||||
import org.wso2.carbon.apimgt.annotations.api.Scope;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import io.swagger.annotations.ApiResponse;
|
||||
import io.swagger.annotations.ApiResponses;
|
||||
import io.swagger.annotations.ResponseHeader;
|
||||
import org.wso2.carbon.apimgt.annotations.api.API;
|
||||
import org.wso2.carbon.apimgt.annotations.api.Permission;
|
||||
import org.wso2.carbon.policy.mgt.common.DeviceGroupWrapper;
|
||||
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.HeaderParam;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.Date;
|
||||
|
||||
//@Path("/admin/groups")
|
||||
//@Produces(MediaType.APPLICATION_JSON)
|
||||
//@Consumes(MediaType.APPLICATION_JSON)
|
||||
//@Api(value = "Group Management Administrative Service", description = "This an API intended to be used by " +
|
||||
// "'internal' components to log in as an admin user and do a selected number of operations. " +
|
||||
// "Further, this is strictly restricted to admin users only ")
|
||||
@API(name = "Group Management Admin", version = "1.0.0", context = "/api/device-mgt/v1.0/admin/groups", tags = {"devicemgt_admin"})
|
||||
|
||||
@Path("/admin/groups")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Api(value = "Group Management Administrative Service", description = "This an API intended to be used by " +
|
||||
"'internal' components to log in as an admin user and do a selected number of operations. " +
|
||||
"Further, this is strictly restricted to admin users only ")
|
||||
public interface GroupManagementAdminService {
|
||||
|
||||
// @GET
|
||||
// @ApiOperation(
|
||||
// produces = MediaType.APPLICATION_JSON,
|
||||
// httpMethod = "GET",
|
||||
// value = "Get groups by the name.",
|
||||
// notes = "Get devices the name of device and tenant.",
|
||||
// response = DeviceGroupWrapper.class,
|
||||
// responseContainer = "List",
|
||||
// tags = "Group Management Administrative Service")
|
||||
// @ApiResponses(value = {
|
||||
// @ApiResponse(code = 200, message = "OK. \n Successfully fetched the list of groups.",
|
||||
// response = DeviceGroupWrapper.class,
|
||||
// responseContainer = "List",
|
||||
// responseHeaders = {
|
||||
// @ResponseHeader(
|
||||
// name = "Content-Type",
|
||||
// description = "The content type of the body"),
|
||||
// @ResponseHeader(
|
||||
// name = "ETag",
|
||||
// description = "Entity Tag of the response resource.\n" +
|
||||
// "Used by caches, or in conditional requests."),
|
||||
// @ResponseHeader(
|
||||
// name = "Last-Modified",
|
||||
// description = "Date and time the resource has been modified the last time.\n" +
|
||||
// "Used by caches, or in conditional requests."),
|
||||
// }),
|
||||
// @ApiResponse(
|
||||
// code = 304,
|
||||
// message = "Not Modified. \n Empty body because the client has already the latest version of the requested resource."),
|
||||
// @ApiResponse(
|
||||
// code = 406,
|
||||
// message = "Not Acceptable.\n The requested media type is not supported"),
|
||||
// @ApiResponse(
|
||||
// code = 500,
|
||||
// message = "Internal Server ErrorResponse. \n Server error occurred while fetching the group list.")
|
||||
// })
|
||||
// @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"})
|
||||
// Response getGroupsOfUser(
|
||||
// @ApiParam(
|
||||
// name = "username",
|
||||
// value = "Username of the user.",
|
||||
// required = true)
|
||||
// @QueryParam("username") String username,
|
||||
// @ApiParam(
|
||||
// name = "If-Modified-Since",
|
||||
// value = "Timestamp of the last modified date",
|
||||
// required = false)
|
||||
// @HeaderParam("If-Modified-Since") String timestamp,
|
||||
// @ApiParam(
|
||||
// name = "offset",
|
||||
// value = "Starting point within the complete list of items qualified.",
|
||||
// required = false)
|
||||
// @QueryParam("offset") int offset,
|
||||
// @ApiParam(
|
||||
// name = "limit",
|
||||
// value = "Maximum size of resource array to return.",
|
||||
// required = false)
|
||||
// @QueryParam("limit") int limit);
|
||||
//
|
||||
|
||||
|
||||
@GET
|
||||
@ApiOperation(
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Get groups by the name.",
|
||||
notes = "Get devices the name of device and tenant.",
|
||||
response = DeviceGroupWrapper.class,
|
||||
responseContainer = "List",
|
||||
tags = "Group Management Administrative Service")
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "OK. \n Successfully fetched the list of groups.",
|
||||
response = DeviceGroupWrapper.class,
|
||||
responseContainer = "List",
|
||||
responseHeaders = {
|
||||
@ResponseHeader(
|
||||
name = "Content-Type",
|
||||
description = "The content type of the body"),
|
||||
@ResponseHeader(
|
||||
name = "ETag",
|
||||
description = "Entity Tag of the response resource.\n" +
|
||||
"Used by caches, or in conditional requests."),
|
||||
@ResponseHeader(
|
||||
name = "Last-Modified",
|
||||
description = "Date and time the resource has been modified the last time.\n" +
|
||||
"Used by caches, or in conditional requests."),
|
||||
}),
|
||||
@ApiResponse(
|
||||
code = 304,
|
||||
message = "Not Modified. \n Empty body because the client has already the latest version of the " +
|
||||
"requested resource."),
|
||||
@ApiResponse(
|
||||
code = 406,
|
||||
message = "Not Acceptable.\n The requested media type is not supported"),
|
||||
@ApiResponse(
|
||||
code = 500,
|
||||
message = "Internal Server ErrorResponse. \n Server error occurred while fetching the group list.")
|
||||
})
|
||||
@Permission(name = "View All Groups", permission = "/permission/admin/device-mgt/user/groups/list")
|
||||
Response getGroupsOfUser(
|
||||
@ApiParam(
|
||||
name = "username",
|
||||
value = "Username of the user.",
|
||||
required = true)
|
||||
@QueryParam("username") String username,
|
||||
@ApiParam(
|
||||
name = "If-Modified-Since",
|
||||
value = "Timestamp of the last modified date",
|
||||
required = false)
|
||||
@HeaderParam("If-Modified-Since") String timestamp,
|
||||
@ApiParam(
|
||||
name = "offset",
|
||||
value = "Starting point within the complete list of items qualified.",
|
||||
required = false)
|
||||
@QueryParam("offset") int offset,
|
||||
@ApiParam(
|
||||
name = "limit",
|
||||
value = "Maximum size of resource array to return.",
|
||||
required = false)
|
||||
@QueryParam("limit") int limit);
|
||||
}
|
||||
|
||||
@ -21,14 +21,20 @@ package org.wso2.carbon.device.mgt.jaxrs.service.impl;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.Feature;
|
||||
import org.wso2.carbon.device.mgt.common.FeatureManager;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceTypeList;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.DeviceTypeManagementService;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.RequestValidationUtil;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||
|
||||
import javax.validation.constraints.Size;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.HeaderParam;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.List;
|
||||
|
||||
@ -56,4 +62,28 @@ public class DeviceTypeManagementServiceImpl implements DeviceTypeManagementServ
|
||||
}
|
||||
}
|
||||
|
||||
@GET
|
||||
@Override
|
||||
@Path("/{type}/features")
|
||||
public Response getFeatures(@PathParam("type") @Size(max = 45) String type, @HeaderParam("If-Modified-Since") String ifModifiedSince) {
|
||||
List<Feature> features;
|
||||
DeviceManagementProviderService dms;
|
||||
try {
|
||||
dms = DeviceMgtAPIUtils.getDeviceManagementService();
|
||||
FeatureManager fm = dms.getFeatureManager(type);
|
||||
if (fm == null) {
|
||||
return Response.status(Response.Status.NOT_FOUND).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setMessage("No feature manager is " +
|
||||
"registered with the given type '" + type + "'").build()).build();
|
||||
}
|
||||
features = fm.getFeatures();
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while retrieving the list of features of '" + type + "' device type";
|
||||
log.error(msg, e);
|
||||
return Response.serverError().entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
||||
}
|
||||
return Response.status(Response.Status.OK).entity(features).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -18,10 +18,6 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.jaxrs.service.impl;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.GroupManagementService;
|
||||
import org.apache.commons.httpclient.HttpStatus;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
@ -33,105 +29,108 @@ import org.wso2.carbon.device.mgt.jaxrs.service.api.GroupManagementService;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.policy.mgt.common.DeviceGroupWrapper;
|
||||
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
//@Path("/groups")
|
||||
//@Produces(MediaType.APPLICATION_JSON)
|
||||
//@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/groups")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
public class GroupManagementServiceImpl implements GroupManagementService {
|
||||
|
||||
// private static final Log log = LogFactory.getLog(GroupManagementServiceImpl.class);
|
||||
//
|
||||
// @Override
|
||||
// public Response getGroups(@QueryParam("user") String user, @QueryParam("offset") int offset,
|
||||
// @QueryParam("limit") int limit) {
|
||||
// try {
|
||||
// List<DeviceGroupWrapper> groupWrappers = new ArrayList<>();
|
||||
// GroupManagementProviderService service = DeviceMgtAPIUtils.getGroupManagementProviderService();
|
||||
// List<DeviceGroup> deviceGroups = service.getGroups(user);
|
||||
// int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
// for (DeviceGroup dg : deviceGroups) {
|
||||
// DeviceGroupWrapper gw = new DeviceGroupWrapper();
|
||||
// gw.setId(dg.getId());
|
||||
// gw.setOwner(dg.getOwner());
|
||||
// gw.setName(dg.getName());
|
||||
// gw.setTenantId(tenantId);
|
||||
// groupWrappers.add(gw);
|
||||
// }
|
||||
// return Response.status(Response.Status.OK).entity(groupWrappers).build();
|
||||
// } catch (GroupManagementException e) {
|
||||
// String error = "ErrorResponse occurred while getting the groups related to users for policy.";
|
||||
// log.error(error, e);
|
||||
// return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error).build();
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Response createGroup(DeviceGroup group) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Response getGroup(@PathParam("groupName") String groupName) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Response updateGroup(@PathParam("groupName") String groupName, DeviceGroup deviceGroup) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Response deleteGroup(@PathParam("groupName") String groupName) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Response shareGroupWithUser(String groupName, String targetUser) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Response shareGroupWithRole(String groupName, String targetRole) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Response removeShareWithUser(@PathParam("groupName") String groupName,
|
||||
// @QueryParam("username") String targetUser) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Response removeShareWithRole(@PathParam("groupName") String groupName,
|
||||
// @QueryParam("roleName") String targetUser) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Response getUsersOfGroup(@PathParam("groupName") String groupName) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Response getDevicesOfGroup(@PathParam("groupName") String groupName, @QueryParam("offset") int offset,
|
||||
// @QueryParam("limit") int limit) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Response addDeviceToGroup(@PathParam("groupName") String groupName, DeviceIdentifier deviceIdentifier) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type,
|
||||
// @QueryParam("id") String id) {
|
||||
// return null;
|
||||
// }
|
||||
private static final Log log = LogFactory.getLog(GroupManagementServiceImpl.class);
|
||||
|
||||
}
|
||||
@Override
|
||||
public Response getGroups(@QueryParam("user") String user, @QueryParam("offset") int offset,
|
||||
@QueryParam("limit") int limit) {
|
||||
try {
|
||||
List<DeviceGroupWrapper> groupWrappers = new ArrayList<>();
|
||||
GroupManagementProviderService service = DeviceMgtAPIUtils.getGroupManagementProviderService();
|
||||
List<DeviceGroup> deviceGroups = service.getGroups(user);
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
for (DeviceGroup dg : deviceGroups) {
|
||||
DeviceGroupWrapper gw = new DeviceGroupWrapper();
|
||||
gw.setId(dg.getId());
|
||||
gw.setOwner(dg.getOwner());
|
||||
gw.setName(dg.getName());
|
||||
gw.setTenantId(tenantId);
|
||||
groupWrappers.add(gw);
|
||||
}
|
||||
return Response.status(Response.Status.OK).entity(groupWrappers).build();
|
||||
} catch (GroupManagementException e) {
|
||||
String error = "ErrorResponse occurred while getting the groups related to users for policy.";
|
||||
log.error(error, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error).build();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response createGroup(DeviceGroup group) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response getGroup(@PathParam("groupName") String groupName) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response updateGroup(@PathParam("groupName") String groupName, DeviceGroup deviceGroup) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response deleteGroup(@PathParam("groupName") String groupName) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response shareGroupWithUser(String groupName, String targetUser) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response shareGroupWithRole(String groupName, String targetRole) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response removeShareWithUser(@PathParam("groupName") String groupName,
|
||||
@QueryParam("username") String targetUser) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response removeShareWithRole(@PathParam("groupName") String groupName,
|
||||
@QueryParam("roleName") String targetUser) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response getUsersOfGroup(@PathParam("groupName") String groupName) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response getDevicesOfGroup(@PathParam("groupName") String groupName, @QueryParam("offset") int offset,
|
||||
@QueryParam("limit") int limit) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response addDeviceToGroup(@PathParam("groupName") String groupName, DeviceIdentifier deviceIdentifier) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type,
|
||||
@QueryParam("id") String id) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -18,7 +18,6 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.jaxrs.service.impl.admin;
|
||||
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
@ -26,37 +25,42 @@ import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.GroupManagementAdminService;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.HeaderParam;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.Date;
|
||||
|
||||
//@Path("/admin/groups")
|
||||
//@Produces(MediaType.APPLICATION_JSON)
|
||||
//@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/admin/groups")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
public class GroupManagementAdminServiceImpl implements GroupManagementAdminService {
|
||||
//
|
||||
// private static final Log log = LogFactory.getLog(GroupManagementAdminServiceImpl.class);
|
||||
//
|
||||
// @Override
|
||||
// public Response getGroupsOfUser(
|
||||
// @QueryParam("username") String username,
|
||||
// @HeaderParam("If-Modified-Since") String timestamp,
|
||||
// @QueryParam("offset") int offset,
|
||||
// @QueryParam("limit") int limit) {
|
||||
// try {
|
||||
// PaginationResult result =
|
||||
// DeviceMgtAPIUtils.getGroupManagementProviderService().getGroups(username, offset, limit);
|
||||
// if (result != null && result.getRecordsTotal() > 0) {
|
||||
// return Response.status(Response.Status.OK).entity(result).build();
|
||||
// } else {
|
||||
// return Response.status(Response.Status.NOT_FOUND).build();
|
||||
// }
|
||||
// } catch (GroupManagementException e) {
|
||||
// String msg = "ErrorResponse occurred while retrieving the groups of user '" + username + "'";
|
||||
// log.error(msg, e);
|
||||
// return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
// }
|
||||
// }
|
||||
|
||||
private static final Log log = LogFactory.getLog(GroupManagementAdminServiceImpl.class);
|
||||
|
||||
@GET
|
||||
@Override
|
||||
public Response getGroupsOfUser(
|
||||
@QueryParam("username") String username,
|
||||
@HeaderParam("If-Modified-Since") String timestamp,
|
||||
@QueryParam("offset") int offset,
|
||||
@QueryParam("limit") int limit) {
|
||||
try {
|
||||
PaginationResult result =
|
||||
DeviceMgtAPIUtils.getGroupManagementProviderService().getGroups(username, offset, limit);
|
||||
if (result != null && result.getRecordsTotal() > 0) {
|
||||
return Response.status(Response.Status.OK).entity(result).build();
|
||||
} else {
|
||||
return Response.status(Response.Status.NOT_FOUND).build();
|
||||
}
|
||||
} catch (GroupManagementException e) {
|
||||
String msg = "ErrorResponse occurred while retrieving the groups of user '" + username + "'";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -73,7 +73,7 @@
|
||||
<bean id="policyManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.PolicyManagementServiceImpl"/>
|
||||
<bean id="roleManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.RoleManagementServiceImpl"/>
|
||||
<bean id="userManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.UserManagementServiceImpl"/>
|
||||
<!--<bean id="groupManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.GroupManagementServiceImpl"/>-->
|
||||
<bean id="groupManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.GroupManagementServiceImpl"/>
|
||||
<bean id="deviceManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.DeviceManagementAdminServiceImpl"/>
|
||||
<bean id="applicationManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.ApplicationManagementAdminServiceImpl"/>
|
||||
<bean id="groupManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.GroupManagementAdminServiceImpl"/>
|
||||
|
||||
@ -48,10 +48,10 @@
|
||||
org.wso2.carbon.device.mgt.common.*
|
||||
</Export-Package>
|
||||
<Import-Package>
|
||||
javax.xml.bind.annotation,
|
||||
javax.xml.bind.annotation; version="${javax.xml.bind.imp.pkg.version}",
|
||||
com.fasterxml.jackson.annotation;version="${jackson-annotations.version}",
|
||||
org.wso2.carbon.apimgt.api.model.*;version="${carbon.api.mgt.version.range}",
|
||||
io.swagger.annotations.*;resolution:=optional
|
||||
io.swagger.annotations; version="${swagger.annotations.version}"
|
||||
</Import-Package>
|
||||
</instructions>
|
||||
</configuration>
|
||||
|
||||
@ -46,7 +46,7 @@ public class PushNotificationBasedOperationManager implements OperationManager {
|
||||
Activity activity = this.operationManager.addOperation(operation, devices);
|
||||
for (DeviceIdentifier deviceId : devices) {
|
||||
try {
|
||||
this.notificationProvider.execute(new NotificationContext(deviceId));
|
||||
this.notificationProvider.execute(new NotificationContext(deviceId, operation));
|
||||
} catch (PushNotificationExecutionFailedException e) {
|
||||
throw new OperationManagementException("Error occurred while sending push notification to device", e);
|
||||
}
|
||||
|
||||
@ -104,10 +104,12 @@ deviceModule = function () {
|
||||
if (device["properties"] && device["properties"].length > 0) {
|
||||
var propertiesList = device["properties"];
|
||||
var properties = {};
|
||||
for (var i = 0; i < propertiesList.length; i++) {
|
||||
if (propertiesList[i]["value"]) {
|
||||
properties[propertiesList[i]["name"]] =
|
||||
propertiesList[i]["value"];
|
||||
if (propertiesList) {
|
||||
for (var i = 0; i < propertiesList.length; i++) {
|
||||
if (propertiesList[i]["value"]) {
|
||||
properties[propertiesList[i]["name"]] =
|
||||
propertiesList[i]["value"];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -38,42 +38,42 @@ var operationModule = function () {
|
||||
}
|
||||
|
||||
privateMethods.getOperationsFromFeatures = function (deviceType, operationType) {
|
||||
var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/features/" + deviceType;
|
||||
var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/device-types/" + deviceType + "/features";
|
||||
var featuresList = serviceInvokers.XMLHttp.get(url, function (responsePayload) {
|
||||
var features = responsePayload;
|
||||
var featureList = [];
|
||||
var feature;
|
||||
for (var i = 0; i < features.length; i++) {
|
||||
feature = {};
|
||||
var analyticStreams = utility.getDeviceTypeConfig(deviceType)["analyticStreams"];
|
||||
if (analyticStreams) {
|
||||
for (var stream in analyticStreams) {
|
||||
if (analyticStreams[stream].name == features[i].name) {
|
||||
feature.ui_unit = analyticStreams[stream].ui_unit;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
var features = JSON.parse(responsePayload.responseText);
|
||||
var featureList = [];
|
||||
var feature;
|
||||
for (var i = 0; i < features.length; i++) {
|
||||
feature = {};
|
||||
var analyticStreams = utility.getDeviceTypeConfig(deviceType)["analyticStreams"];
|
||||
if (analyticStreams) {
|
||||
for (var stream in analyticStreams) {
|
||||
if (analyticStreams[stream].name == features[i].name) {
|
||||
feature.ui_unit = analyticStreams[stream].ui_unit;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
feature["operation"] = features[i].code;
|
||||
feature["name"] = features[i].name;
|
||||
feature["description"] = features[i].description;
|
||||
feature["deviceType"] = deviceType;
|
||||
feature["params"] = [];
|
||||
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) {
|
||||
var response = {};
|
||||
response["status"] = "error";
|
||||
return response;
|
||||
}
|
||||
feature["operation"] = features[i].code;
|
||||
feature["name"] = features[i].name;
|
||||
feature["description"] = features[i].description;
|
||||
feature["deviceType"] = deviceType;
|
||||
feature["params"] = [];
|
||||
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) {
|
||||
var response = {};
|
||||
response["status"] = "error";
|
||||
return response;
|
||||
}
|
||||
);
|
||||
return featuresList;
|
||||
};
|
||||
|
||||
@ -72,7 +72,7 @@ var invokers = function () {
|
||||
var xmlHttpRequest = new XMLHttpRequest();
|
||||
|
||||
xmlHttpRequest.open(httpMethod, endpoint);
|
||||
for(var i in headers){
|
||||
for (var i in headers) {
|
||||
xmlHttpRequest.setRequestHeader(headers[i].name, headers[i].value);
|
||||
}
|
||||
xmlHttpRequest.setRequestHeader(constants["CONTENT_TYPE_IDENTIFIER"], constants["APPLICATION_JSON"]);
|
||||
@ -117,9 +117,10 @@ var invokers = function () {
|
||||
* @param endpoint Backend REST API url.
|
||||
* @param responseCallback a function to be called with response retrieved.
|
||||
*/
|
||||
privateMethods["initiateXMLHTTPRequest"] = function (httpMethod, requestPayload, endpoint, responseCallback, headers) {
|
||||
return privateMethods.execute(httpMethod, requestPayload, endpoint, responseCallback, 0, headers);
|
||||
};
|
||||
privateMethods["initiateXMLHTTPRequest"] =
|
||||
function (httpMethod, requestPayload, endpoint, responseCallback, headers) {
|
||||
return privateMethods.execute(httpMethod, requestPayload, endpoint, responseCallback, 0, headers);
|
||||
};
|
||||
|
||||
/**
|
||||
* This method invokes return initiateXMLHttpRequest for get calls.
|
||||
@ -128,7 +129,8 @@ var invokers = function () {
|
||||
*/
|
||||
publicXMLHTTPInvokers["get"] = function (endpoint, responseCallback, headers) {
|
||||
var requestPayload = null;
|
||||
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_GET"], requestPayload, endpoint, responseCallback, headers);
|
||||
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_GET"], requestPayload, endpoint, responseCallback,
|
||||
headers);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -138,7 +140,8 @@ var invokers = function () {
|
||||
* @param responseCallback a function to be called with response retrieved.
|
||||
*/
|
||||
publicXMLHTTPInvokers["post"] = function (endpoint, requestPayload, responseCallback, headers) {
|
||||
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_POST"], requestPayload, endpoint, responseCallback, headers);
|
||||
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_POST"], requestPayload, endpoint, responseCallback,
|
||||
headers);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -148,7 +151,8 @@ var invokers = function () {
|
||||
* @param responseCallback a function to be called with response retrieved.
|
||||
*/
|
||||
publicXMLHTTPInvokers["put"] = function (endpoint, requestPayload, responseCallback, headers) {
|
||||
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_PUT"], requestPayload, endpoint, responseCallback, headers);
|
||||
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_PUT"], requestPayload, endpoint, responseCallback,
|
||||
headers);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -158,7 +162,8 @@ var invokers = function () {
|
||||
*/
|
||||
publicXMLHTTPInvokers["delete"] = function (endpoint, responseCallback, headers) {
|
||||
var requestPayload = null;
|
||||
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_DELETE"], requestPayload, endpoint, responseCallback, headers);
|
||||
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_DELETE"], requestPayload, endpoint,
|
||||
responseCallback, headers);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -245,100 +250,105 @@ var invokers = function () {
|
||||
* @param errorCallback a function to be called if en error is reserved.
|
||||
* @param headers a list of name value pairs for additional http headers.
|
||||
*/
|
||||
privateMethods["initiateHTTPClientRequest"] = function (method, url, successCallback, errorCallback, payload, headers) {
|
||||
//noinspection JSUnresolvedVariable
|
||||
var HttpClient = Packages.org.apache.commons.httpclient.HttpClient;
|
||||
var httpMethodObject;
|
||||
switch (method) {
|
||||
case constants["HTTP_GET"]:
|
||||
//noinspection JSUnresolvedVariable
|
||||
var GetMethod = Packages.org.apache.commons.httpclient.methods.GetMethod;
|
||||
httpMethodObject = new GetMethod(url);
|
||||
break;
|
||||
case constants["HTTP_POST"]:
|
||||
//noinspection JSUnresolvedVariable
|
||||
var PostMethod = Packages.org.apache.commons.httpclient.methods.PostMethod;
|
||||
httpMethodObject = new PostMethod(url);
|
||||
break;
|
||||
case constants["HTTP_PUT"]:
|
||||
//noinspection JSUnresolvedVariable
|
||||
var PutMethod = Packages.org.apache.commons.httpclient.methods.PutMethod;
|
||||
httpMethodObject = new PutMethod(url);
|
||||
break;
|
||||
case constants["HTTP_DELETE"]:
|
||||
//noinspection JSUnresolvedVariable
|
||||
var DeleteMethod = Packages.org.apache.commons.httpclient.methods.DeleteMethod;
|
||||
httpMethodObject = new DeleteMethod(url);
|
||||
break;
|
||||
default:
|
||||
//noinspection JSUnresolvedFunction
|
||||
throw new IllegalArgumentException("Invalid HTTP request method: " + method);
|
||||
}
|
||||
privateMethods["initiateHTTPClientRequest"] =
|
||||
function (method, url, successCallback, errorCallback, payload, headers) {
|
||||
//noinspection JSUnresolvedVariable
|
||||
var HttpClient = Packages.org.apache.commons.httpclient.HttpClient;
|
||||
var httpMethodObject;
|
||||
switch (method) {
|
||||
case constants["HTTP_GET"]:
|
||||
//noinspection JSUnresolvedVariable
|
||||
var GetMethod = Packages.org.apache.commons.httpclient.methods.GetMethod;
|
||||
httpMethodObject = new GetMethod(url);
|
||||
break;
|
||||
case constants["HTTP_POST"]:
|
||||
//noinspection JSUnresolvedVariable
|
||||
var PostMethod = Packages.org.apache.commons.httpclient.methods.PostMethod;
|
||||
httpMethodObject = new PostMethod(url);
|
||||
break;
|
||||
case constants["HTTP_PUT"]:
|
||||
//noinspection JSUnresolvedVariable
|
||||
var PutMethod = Packages.org.apache.commons.httpclient.methods.PutMethod;
|
||||
httpMethodObject = new PutMethod(url);
|
||||
break;
|
||||
case constants["HTTP_DELETE"]:
|
||||
//noinspection JSUnresolvedVariable
|
||||
var DeleteMethod = Packages.org.apache.commons.httpclient.methods.DeleteMethod;
|
||||
httpMethodObject = new DeleteMethod(url);
|
||||
break;
|
||||
default:
|
||||
//noinspection JSUnresolvedFunction
|
||||
throw new IllegalArgumentException("Invalid HTTP request method: " + method);
|
||||
}
|
||||
|
||||
//noinspection JSUnresolvedVariable
|
||||
var Header = Packages.org.apache.commons.httpclient.Header;
|
||||
for(var i in headers){
|
||||
var header = new Header();
|
||||
header.setName(headers[i].name);
|
||||
header.setValue(headers[i].value);
|
||||
httpMethodObject.addRequestHeader(header);
|
||||
}
|
||||
|
||||
var header = new Header();
|
||||
header.setName(constants["CONTENT_TYPE_IDENTIFIER"]);
|
||||
header.setValue(constants["APPLICATION_JSON"]);
|
||||
//noinspection JSUnresolvedFunction
|
||||
httpMethodObject.addRequestHeader(header);
|
||||
header = new Header();
|
||||
header.setName(constants["ACCEPT_IDENTIFIER"]);
|
||||
header.setValue(constants["APPLICATION_JSON"]);
|
||||
//noinspection JSUnresolvedFunction
|
||||
httpMethodObject.addRequestHeader(header);
|
||||
|
||||
if (devicemgtProps["isOAuthEnabled"]) {
|
||||
var accessToken = privateMethods.getAccessToken();
|
||||
if (accessToken) {
|
||||
header = new Header();
|
||||
header.setName(constants["AUTHORIZATION_HEADER"]);
|
||||
header.setValue(constants["BEARER_PREFIX"] + accessToken);
|
||||
//noinspection JSUnresolvedFunction
|
||||
//noinspection JSUnresolvedVariable
|
||||
var Header = Packages.org.apache.commons.httpclient.Header;
|
||||
for (var i in headers) {
|
||||
var header = new Header();
|
||||
header.setName(headers[i].name);
|
||||
header.setValue(headers[i].value);
|
||||
httpMethodObject.addRequestHeader(header);
|
||||
} else {
|
||||
response.sendRedirect(devicemgtProps["appContext"] + "login");
|
||||
}
|
||||
}
|
||||
//noinspection JSUnresolvedFunction
|
||||
if (payload != null) {
|
||||
var StringRequestEntity = Packages.org.apache.commons.httpclient.methods.StringRequestEntity;
|
||||
var stringRequestEntity = new StringRequestEntity(stringify(payload));
|
||||
|
||||
var header = new Header();
|
||||
header.setName(constants["CONTENT_TYPE_IDENTIFIER"]);
|
||||
header.setValue(constants["APPLICATION_JSON"]);
|
||||
//noinspection JSUnresolvedFunction
|
||||
httpMethodObject.setRequestEntity(stringRequestEntity);
|
||||
}
|
||||
var client = new HttpClient();
|
||||
try {
|
||||
httpMethodObject.addRequestHeader(header);
|
||||
header = new Header();
|
||||
header.setName(constants["ACCEPT_IDENTIFIER"]);
|
||||
header.setValue(constants["APPLICATION_JSON"]);
|
||||
//noinspection JSUnresolvedFunction
|
||||
client.executeMethod(httpMethodObject);
|
||||
//noinspection JSUnresolvedFunction
|
||||
var status = httpMethodObject.getStatusCode();
|
||||
if (status == 200) {
|
||||
var responseContentDispositionHeader = httpMethodObject.getResponseHeader(constants["CONTENT_DISPOSITION_IDENTIFIER"]);
|
||||
if (responseContentDispositionHeader) {
|
||||
return successCallback(httpMethodObject.getResponseBodyAsStream(), httpMethodObject.getResponseHeaders());
|
||||
httpMethodObject.addRequestHeader(header);
|
||||
|
||||
if (devicemgtProps["isOAuthEnabled"]) {
|
||||
var accessToken = privateMethods.getAccessToken();
|
||||
if (accessToken) {
|
||||
header = new Header();
|
||||
header.setName(constants["AUTHORIZATION_HEADER"]);
|
||||
header.setValue(constants["BEARER_PREFIX"] + accessToken);
|
||||
//noinspection JSUnresolvedFunction
|
||||
httpMethodObject.addRequestHeader(header);
|
||||
} else {
|
||||
return successCallback(httpMethodObject.getResponseBody());
|
||||
response.sendRedirect(devicemgtProps["appContext"] + "login");
|
||||
}
|
||||
} else {
|
||||
return errorCallback(httpMethodObject.getResponseBody());
|
||||
}
|
||||
} catch (e) {
|
||||
return errorCallback(response);
|
||||
} finally {
|
||||
//noinspection JSUnresolvedFunction
|
||||
if (method != constants["HTTP_GET"]) {
|
||||
method.releaseConnection();
|
||||
if (payload != null) {
|
||||
var StringRequestEntity = Packages.org.apache.commons.httpclient.methods.StringRequestEntity;
|
||||
var stringRequestEntity = new StringRequestEntity(stringify(payload));
|
||||
//noinspection JSUnresolvedFunction
|
||||
httpMethodObject.setRequestEntity(stringRequestEntity);
|
||||
}
|
||||
}
|
||||
};
|
||||
var client = new HttpClient();
|
||||
try {
|
||||
//noinspection JSUnresolvedFunction
|
||||
client.executeMethod(httpMethodObject);
|
||||
//noinspection JSUnresolvedFunction
|
||||
var status = httpMethodObject.getStatusCode();
|
||||
if (status == 200) {
|
||||
var responseContentDispositionHeader = httpMethodObject.getResponseHeader(
|
||||
constants["CONTENT_DISPOSITION_IDENTIFIER"]);
|
||||
if (responseContentDispositionHeader) {
|
||||
return successCallback(httpMethodObject.getResponseBodyAsStream(),
|
||||
httpMethodObject.getResponseHeaders());
|
||||
} else {
|
||||
return successCallback(httpMethodObject.getResponseBodyAsString(),
|
||||
httpMethodObject.getResponseHeaders());
|
||||
}
|
||||
} else {
|
||||
return errorCallback(httpMethodObject.getResponseBodyAsString(),
|
||||
httpMethodObject.getResponseHeaders());
|
||||
}
|
||||
} catch (e) {
|
||||
return errorCallback(response);
|
||||
} finally {
|
||||
//noinspection JSUnresolvedFunction
|
||||
if (method != constants["HTTP_GET"]) {
|
||||
method.releaseConnection();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* This method invokes return initiateHTTPClientRequest for get calls.
|
||||
@ -349,8 +359,8 @@ var invokers = function () {
|
||||
*/
|
||||
publicHTTPClientInvokers["get"] = function (url, successCallback, errorCallback, headers) {
|
||||
var requestPayload = null;
|
||||
return privateMethods.
|
||||
initiateHTTPClientRequest(constants["HTTP_GET"], url, successCallback, errorCallback, requestPayload, headers);
|
||||
return privateMethods.initiateHTTPClientRequest(constants["HTTP_GET"], url, successCallback, errorCallback,
|
||||
requestPayload, headers);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -362,8 +372,8 @@ var invokers = function () {
|
||||
* @param headers a list of name value pairs for additional http headers.
|
||||
*/
|
||||
publicHTTPClientInvokers["post"] = function (url, payload, successCallback, errorCallback, headers) {
|
||||
return privateMethods.
|
||||
initiateHTTPClientRequest(constants["HTTP_POST"], url, successCallback, errorCallback, payload, headers);
|
||||
return privateMethods.initiateHTTPClientRequest(constants["HTTP_POST"], url, successCallback, errorCallback,
|
||||
payload, headers);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -375,8 +385,8 @@ var invokers = function () {
|
||||
* @param headers a list of name value pairs for additional http headers.
|
||||
*/
|
||||
publicHTTPClientInvokers["put"] = function (url, payload, successCallback, errorCallback, headers) {
|
||||
return privateMethods.
|
||||
initiateHTTPClientRequest(constants["HTTP_PUT"], url, successCallback, errorCallback, payload, headers);
|
||||
return privateMethods.initiateHTTPClientRequest(constants["HTTP_PUT"], url, successCallback, errorCallback,
|
||||
payload, headers);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -388,8 +398,8 @@ var invokers = function () {
|
||||
*/
|
||||
publicHTTPClientInvokers["delete"] = function (url, successCallback, errorCallback, headers) {
|
||||
var requestPayload = null;
|
||||
return privateMethods.
|
||||
initiateHTTPClientRequest(constants["HTTP_DELETE"], url, successCallback, errorCallback, requestPayload, headers);
|
||||
return privateMethods.initiateHTTPClientRequest(constants["HTTP_DELETE"], url, successCallback, errorCallback,
|
||||
requestPayload, headers);
|
||||
};
|
||||
|
||||
var publicMethods = {};
|
||||
|
||||
@ -24,6 +24,7 @@ utility = function () {
|
||||
var log = new Log("/app/modules/utility.js");
|
||||
var JavaClass = Packages.java.lang.Class;
|
||||
var PrivilegedCarbonContext = Packages.org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
var server = require("carbon")["server"];
|
||||
|
||||
var getOsgiService = function (className) {
|
||||
return PrivilegedCarbonContext.getThreadLocalCarbonContext().getOSGiService(JavaClass.forName(className));
|
||||
@ -38,8 +39,8 @@ utility = function () {
|
||||
PrivilegedCarbonContext.startTenantFlow();
|
||||
context = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
||||
context.setTenantDomain(carbon.server.tenantDomain({
|
||||
tenantId: userInfo.tenantId
|
||||
}));
|
||||
tenantId: userInfo.tenantId
|
||||
}));
|
||||
context.setTenantId(userInfo.tenantId);
|
||||
context.setUsername(userInfo.username || null);
|
||||
};
|
||||
@ -62,7 +63,7 @@ utility = function () {
|
||||
|
||||
publicMethods.getDeviceTypeConfig = function (deviceType) {
|
||||
var unitName = publicMethods.getTenantedDeviceUnitName(deviceType, "type-view");
|
||||
|
||||
|
||||
if (deviceType in deviceTypeConfigMap) {
|
||||
return deviceTypeConfigMap[deviceType];
|
||||
}
|
||||
@ -71,7 +72,10 @@ utility = function () {
|
||||
if (deviceTypeConfigFile.isExists()) {
|
||||
try {
|
||||
deviceTypeConfigFile.open("r");
|
||||
deviceTypeConfig = parse(deviceTypeConfigFile.readAll());
|
||||
var config = deviceTypeConfigFile.readAll();
|
||||
config = config.replace("%https.ip%", server.address("https"));
|
||||
config = config.replace("%http.ip%", server.address("http"));
|
||||
deviceTypeConfig = parse(config);
|
||||
} catch (err) {
|
||||
log.error("Error while reading device config file for `" + deviceType + "`: " + err);
|
||||
} finally {
|
||||
|
||||
@ -138,11 +138,11 @@
|
||||
</thead>
|
||||
<tbody id="ast-container">
|
||||
|
||||
<br class="c-both"/>
|
||||
<br class="c-both" />
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
<br class="c-both" />
|
||||
<div id="content-filter-types" style="display: none">
|
||||
<div class="sort-title">Sort By</div>
|
||||
<div class="sort-options">
|
||||
@ -163,7 +163,7 @@
|
||||
registered
|
||||
{{/if}}
|
||||
at the moment.</h2>
|
||||
<br/>
|
||||
<br />
|
||||
|
||||
<p class="text-center">
|
||||
{{#if groupName}}
|
||||
@ -233,7 +233,9 @@
|
||||
<h3 class="pull-left modal-title">
|
||||
Do you really want to remove this device from your Devices List?
|
||||
</h3>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i
|
||||
class="fw fw-cancel"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||
|
||||
@ -256,7 +258,9 @@
|
||||
<h3 class="pull-left modal-title">
|
||||
Device was successfully removed.
|
||||
</h3>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i
|
||||
class="fw fw-cancel"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||
|
||||
@ -273,7 +277,9 @@
|
||||
<h3 class="pull-left modal-title">
|
||||
Please enter new name for the device?
|
||||
</h3>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i
|
||||
class="fw fw-cancel"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||
<input id="edit-device-name" style="color:#3f3f3f;padding:5px" type="text"
|
||||
@ -298,7 +304,9 @@
|
||||
<h3 class="pull-left modal-title">
|
||||
Device was successfully updated.
|
||||
</h3>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i
|
||||
class="fw fw-cancel"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||
|
||||
@ -306,78 +314,82 @@
|
||||
<div class="modal-footer">
|
||||
<div class="buttons">
|
||||
|
||||
<div id="edit-device-200-content" class="hide">
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>Device was successfully updated.</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="device-400-content" class="hide">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>Exception at backend. Try Later.</h3>
|
||||
<br/>
|
||||
<div class="buttons">
|
||||
<a href="#" id="device-400-link" class="btn-operations">
|
||||
Ok
|
||||
</a>
|
||||
<div id="edit-device-200-content" class="hide">
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>Device was successfully updated.</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="device-403-content" class="hide">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>Operation not permitted.</h3>
|
||||
<br/>
|
||||
<div class="buttons">
|
||||
<a href="#" id="device-403-link" class="btn-operations">
|
||||
Ok
|
||||
</a>
|
||||
<div id="device-400-content" class="hide">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>Exception at backend. Try Later.</h3>
|
||||
<br />
|
||||
<div class="buttons">
|
||||
<a href="#" id="device-400-link" class="btn-operations">
|
||||
Ok
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="group-404-content" class="hide">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>You don't have any groups to add this device. Please add group first.</h3>
|
||||
<br/>
|
||||
<div class="buttons">
|
||||
<a href="{{@app.context}}/group/add" class="btn-operations">
|
||||
Add New Group
|
||||
</a>
|
||||
|
||||
<a href="#" id="cancel-link" class="btn-operations">
|
||||
Cancel
|
||||
</a>
|
||||
<div id="device-403-content" class="hide">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>Operation not permitted.</h3>
|
||||
<br />
|
||||
<div class="buttons">
|
||||
<a href="#" id="device-403-link" class="btn-operations">
|
||||
Ok
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="device-409-content" class="hide">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>Device does not exist.</h3>
|
||||
<br/>
|
||||
<div class="buttons">
|
||||
<a href="#" id="remove-device-409-link" class="btn-operations">
|
||||
Ok
|
||||
</a>
|
||||
<div id="group-404-content" class="hide">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>You don't have any groups to add this device. Please add group
|
||||
first.</h3>
|
||||
<br />
|
||||
<div class="buttons">
|
||||
<a href="{{@app.context}}/group/add" class="btn-operations">
|
||||
Add New Group
|
||||
</a>
|
||||
|
||||
<a href="#" id="cancel-link" class="btn-operations">
|
||||
Cancel
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="device-409-content" class="hide">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>Device does not exist.</h3>
|
||||
<br />
|
||||
<div class="buttons">
|
||||
<a href="#" id="remove-device-409-link" class="btn-operations">
|
||||
Ok
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -389,7 +401,7 @@
|
||||
{{/zone}}
|
||||
|
||||
{{#zone "bottomJs"}}
|
||||
<script id="device-listing" data-current-user="{{currentUser.username}}" data-device-types="{{deviceTypes}}"
|
||||
<script id="device-listing" data-current-user="{{@user.username}}" data-device-types="{{deviceTypes}}"
|
||||
type="text/x-handlebars-template"></script>
|
||||
{{js "js/listing.js"}}
|
||||
{{/zone}}
|
||||
|
||||
@ -87,21 +87,21 @@ $(document).ready(function () {
|
||||
|
||||
/* for device list sorting drop down */
|
||||
$(".ctrl-filter-type-switcher").popover({
|
||||
html : true,
|
||||
content : function () {
|
||||
return $("#content-filter-types").html();
|
||||
}
|
||||
});
|
||||
html: true,
|
||||
content: function () {
|
||||
return $("#content-filter-types").html();
|
||||
}
|
||||
});
|
||||
|
||||
$(".ast-container").on("click", ".claim-btn", function(e){
|
||||
$(".ast-container").on("click", ".claim-btn", function (e) {
|
||||
e.stopPropagation();
|
||||
var deviceId = $(this).data("deviceid");
|
||||
var serviceURL = "/temp-controller-agent/enrollment/claim?username=" + currentUser;
|
||||
var deviceIdentifier = {id: deviceId, type: "TemperatureController"};
|
||||
invokerUtil.put(serviceURL, deviceIdentifier, function(message){
|
||||
invokerUtil.put(serviceURL, deviceIdentifier, function (message) {
|
||||
console.log(message);
|
||||
}, function(message){
|
||||
console.log(message.content);
|
||||
}, function (message) {
|
||||
console.log(message.content);
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -166,15 +166,15 @@ function toTitleCase(str) {
|
||||
});
|
||||
}
|
||||
|
||||
function loadDevices(searchType, searchParam){
|
||||
function loadDevices(searchType, searchParam) {
|
||||
var serviceURL;
|
||||
if (groupName && groupOwner && $.hasPermission("LIST_OWN_DEVICES")) {
|
||||
serviceURL = "/devicemgt_admin/groups/owner/" + groupOwner + "/name/" + groupName + "/devices";
|
||||
serviceURL = "/api/device-mgt/v1.0/groups/owner/" + groupOwner + "/name/" + groupName + "/devices";
|
||||
} else if ($.hasPermission("LIST_DEVICES")) {
|
||||
serviceURL = "/devicemgt_admin/devices";
|
||||
serviceURL = "/api/device-mgt/v1.0/devices";
|
||||
} else if ($.hasPermission("LIST_OWN_DEVICES")) {
|
||||
//Get authenticated users devices
|
||||
serviceURL = "/devicemgt_admin/users/devices?username=" + currentUser;
|
||||
serviceURL = "/api/device-mgt/v1.0/users/devices?username=" + currentUser;
|
||||
} else {
|
||||
$("#loading-content").remove();
|
||||
$('#device-table').addClass('hidden');
|
||||
@ -197,10 +197,10 @@ function loadDevices(searchType, searchParam){
|
||||
return {};
|
||||
}
|
||||
|
||||
function getDeviceTypeLabel(type){
|
||||
function getDeviceTypeLabel(type) {
|
||||
var deviceTypes = deviceListing.data("deviceTypes");
|
||||
for (var i = 0; i < deviceTypes.length; i++){
|
||||
if (deviceTypes[i].type == type){
|
||||
for (var i = 0; i < deviceTypes.length; i++) {
|
||||
if (deviceTypes[i].type == type) {
|
||||
return deviceTypes[i].label;
|
||||
}
|
||||
}
|
||||
@ -227,29 +227,21 @@ function loadDevices(searchType, searchParam){
|
||||
return type;
|
||||
}
|
||||
|
||||
$('#device-grid').datatables_extended ({
|
||||
serverSide: true,
|
||||
processing: false,
|
||||
searching: true,
|
||||
ordering: false,
|
||||
filter: false,
|
||||
pageLength : 16,
|
||||
ajax: { url : '/devicemgt/api/devices', data : {url : serviceURL},
|
||||
dataSrc: function ( json ) {
|
||||
$('#device-grid').removeClass('hidden');
|
||||
$("#loading-content").remove();
|
||||
var $list = $("#device-table :input[type='search']");
|
||||
$list.each(function(){
|
||||
$(this).addClass("hidden");
|
||||
});
|
||||
return json.data;
|
||||
}
|
||||
var columns = [
|
||||
{
|
||||
targets: 0,
|
||||
data: 'name',
|
||||
class: 'remove-padding icon-only content-fill',
|
||||
render: function (data, type, row, meta) {
|
||||
return '<div class="thumbnail icon"><img class="square-element text fw " src="' + getDeviceTypeThumb(
|
||||
row.deviceType) + '"/></div>';
|
||||
}
|
||||
},
|
||||
columnDefs: [
|
||||
{ targets: 0, data: 'name', className: 'remove-padding icon-only content-fill' , render: function ( data, type, row, meta ) {
|
||||
return '<div class="thumbnail icon"><img class="square-element text fw " src="' + getDeviceTypeThumb(row.type) + '"/></div>';
|
||||
}},
|
||||
{ targets: 1, data: 'name', className: 'fade-edge' , render: function ( name, type, row, meta ) {
|
||||
{
|
||||
targets: 1,
|
||||
data: 'name',
|
||||
class: 'fade-edge',
|
||||
render: function (name, type, row, meta) {
|
||||
var model = getPropertyValue(row.properties, 'DEVICE_MODEL');
|
||||
var vendor = getPropertyValue(row.properties, 'VENDOR');
|
||||
var html = '<h4>' + name + '</h4>';
|
||||
@ -257,11 +249,17 @@ function loadDevices(searchType, searchParam){
|
||||
html += '<div>(' + vendor + '-' + model + ')</div>';
|
||||
}
|
||||
return html;
|
||||
}},
|
||||
{ targets: 2, data: 'enrolmentInfo.owner', className: 'fade-edge remove-padding-top'},
|
||||
{
|
||||
targets: 3, data: 'enrolmentInfo.status', className: 'fade-edge remove-padding-top',
|
||||
render: function ( status, type, row, meta ) {
|
||||
}
|
||||
},
|
||||
{targets: 2,
|
||||
data: 'user',
|
||||
class: 'fade-edge remove-padding-top',
|
||||
},
|
||||
{
|
||||
targets: 3,
|
||||
data: 'status',
|
||||
class: 'fade-edge remove-padding-top',
|
||||
render: function (status, type, row, meta) {
|
||||
var html;
|
||||
switch (status) {
|
||||
case 'ACTIVE' :
|
||||
@ -278,106 +276,171 @@ function loadDevices(searchType, searchParam){
|
||||
break;
|
||||
}
|
||||
return html;
|
||||
}},
|
||||
{
|
||||
targets: 4, data: 'type', className: 'fade-edge remove-padding-top',
|
||||
render: function ( status, type, row, meta ) {
|
||||
return getDeviceTypeLabel(row.type);
|
||||
}
|
||||
},
|
||||
{
|
||||
targets: 4,
|
||||
data: 'deviceType',
|
||||
class: 'fade-edge remove-padding-top',
|
||||
render: function (status, type, row, meta) {
|
||||
return getDeviceTypeLabel(row.deviceType);
|
||||
}
|
||||
},
|
||||
{
|
||||
targets: 5,
|
||||
data: 'ownership',
|
||||
class: 'fade-edge remove-padding-top',
|
||||
render: function (status, type, row, meta) {
|
||||
if (getDeviceTypeCategory(row.deviceType) == 'mobile') {
|
||||
return row.enrolmentInfo.ownership;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
{
|
||||
targets: 5, data: 'enrolmentInfo.ownership', className: 'fade-edge remove-padding-top',
|
||||
render: function (status, type, row, meta) {
|
||||
if (getDeviceTypeCategory(row.type) == 'mobile') {
|
||||
return row.enrolmentInfo.ownership;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
},
|
||||
{ targets: 6, data: 'enrolmentInfo.status' , className: 'text-right content-fill text-left-on-grid-view no-wrap' ,
|
||||
render: function ( status, type, row, meta ) {
|
||||
var deviceType = row.type;
|
||||
}
|
||||
},
|
||||
{
|
||||
targets: 6,
|
||||
data: 'status',
|
||||
class: 'text-right content-fill text-left-on-grid-view no-wrap',
|
||||
render: function (status, type, row, meta) {
|
||||
var deviceType = row.deviceType;
|
||||
var deviceIdentifier = row.deviceIdentifier;
|
||||
var html = '<span></span>';
|
||||
if (status != 'REMOVED') {
|
||||
html = '<a href="device/' + deviceType + '?id=' + deviceIdentifier + '" data-click-event="remove-form"' +
|
||||
' class="btn padding-reduce-on-grid-view"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
||||
html =
|
||||
'<a href="device/' + deviceType + '?id=' + deviceIdentifier + '" data-click-event="remove-form"'
|
||||
+
|
||||
' class="btn padding-reduce-on-grid-view"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>'
|
||||
+
|
||||
'<i class="fw fw-view fw-stack-1x"></i></span><span class="hidden-xs hidden-on-grid-view">View</span></a>';
|
||||
html += '<a href="device/' + deviceType + '/analytics?deviceId=' + deviceIdentifier + '&deviceName=' + row.name + '" ' +
|
||||
'data-click-event="remove-form" class="btn padding-reduce-on-grid-view"><span class="fw-stack">' +
|
||||
'<i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-statistics fw-stack-1x"></i></span>' +
|
||||
html += '<a href="device/' + deviceType + '/analytics?deviceId=' + deviceIdentifier + '&deviceName='
|
||||
+ row.name + '" ' +
|
||||
'data-click-event="remove-form" class="btn padding-reduce-on-grid-view"><span class="fw-stack">'
|
||||
+
|
||||
'<i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-statistics fw-stack-1x"></i></span>'
|
||||
+
|
||||
'<span class="hidden-xs hidden-on-grid-view">Analytics</span>';
|
||||
|
||||
if (!groupName || !groupOwner) {
|
||||
html += '<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view group-device-link" ' +
|
||||
'data-deviceid="' + deviceIdentifier + '" data-devicetype="' + deviceType + '" data-devicename="' +
|
||||
row.name + '"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
||||
'<i class="fw fw-grouping fw-stack-1x"></i></span>' +
|
||||
'<span class="hidden-xs hidden-on-grid-view">Group</span></a>';
|
||||
html +=
|
||||
'<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view group-device-link" '
|
||||
+
|
||||
'data-deviceid="' + deviceIdentifier + '" data-devicetype="' + deviceType
|
||||
+ '" data-devicename="' +
|
||||
row.name + '"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
||||
'<i class="fw fw-grouping fw-stack-1x"></i></span>' +
|
||||
'<span class="hidden-xs hidden-on-grid-view">Group</span></a>';
|
||||
}
|
||||
|
||||
html += '<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view edit-device-link" ' +
|
||||
'data-deviceid="' + deviceIdentifier + '" data-devicetype="' + deviceType + '" data-devicename="' + row.name + '">' +
|
||||
'<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
||||
'<i class="fw fw-edit fw-stack-1x"></i></span>' +
|
||||
'<span class="hidden-xs hidden-on-grid-view">Edit</span></a>';
|
||||
html += '<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view remove-device-link" ' +
|
||||
'data-deviceid="' + deviceIdentifier + '" data-devicetype="' + deviceType + '" data-devicename="' + row.name + '">' +
|
||||
'<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
||||
'<i class="fw fw-delete fw-stack-1x"></i></span>' +
|
||||
'<span class="hidden-xs hidden-on-grid-view">Delete</span>';
|
||||
html +=
|
||||
'<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view edit-device-link" '
|
||||
+
|
||||
'data-deviceid="' + deviceIdentifier + '" data-devicetype="' + deviceType
|
||||
+ '" data-devicename="' + row.name + '">' +
|
||||
'<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
||||
'<i class="fw fw-edit fw-stack-1x"></i></span>' +
|
||||
'<span class="hidden-xs hidden-on-grid-view">Edit</span></a>';
|
||||
html +=
|
||||
'<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view remove-device-link" '
|
||||
+
|
||||
'data-deviceid="' + deviceIdentifier + '" data-devicetype="' + deviceType
|
||||
+ '" data-devicename="' + row.name + '">' +
|
||||
'<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
||||
'<i class="fw fw-delete fw-stack-1x"></i></span>' +
|
||||
'<span class="hidden-xs hidden-on-grid-view">Delete</span>';
|
||||
}
|
||||
return html;
|
||||
}}
|
||||
],
|
||||
"createdRow": function( row, data, dataIndex ) {
|
||||
$(row).attr('data-type', 'selectable');
|
||||
$(row).attr('data-deviceid', data.deviceIdentifier);
|
||||
$(row).attr('data-devicetype', data.type);
|
||||
var model = getPropertyValue(data.properties, 'DEVICE_MODEL');
|
||||
var vendor = getPropertyValue(data.properties, 'VENDOR');
|
||||
var owner = data.enrolmentInfo.owner;
|
||||
var status = data.enrolmentInfo.status;
|
||||
var ownership = data.enrolmentInfo.ownership;
|
||||
var deviceType = data.type;
|
||||
var category = getDeviceTypeCategory(deviceType);
|
||||
$.each($('td', row), function (colIndex) {
|
||||
switch(colIndex) {
|
||||
case 1:
|
||||
$(this).attr('data-search', model + ',' + vendor);
|
||||
$(this).attr('data-display', model);
|
||||
break;
|
||||
case 2:
|
||||
$(this).attr('data-grid-label', "Owner");
|
||||
$(this).attr('data-search', owner);
|
||||
$(this).attr('data-display', owner);
|
||||
break;
|
||||
case 3:
|
||||
$(this).attr('data-grid-label', "Status");
|
||||
$(this).attr('data-search', status);
|
||||
$(this).attr('data-display', status);
|
||||
break;
|
||||
case 4:
|
||||
$(this).attr('data-grid-label', "Type");
|
||||
$(this).attr('data-search', deviceType);
|
||||
$(this).attr('data-display', getDeviceTypeLabel(deviceType));
|
||||
break;
|
||||
case 5:
|
||||
if (category == 'mobile') {
|
||||
$(this).attr('data-grid-label', "Ownership");
|
||||
$(this).attr('data-search', ownership);
|
||||
$(this).attr('data-display', ownership);
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
},
|
||||
"fnDrawCallback": function( oSettings ) {
|
||||
$(".icon .text").res_text(0.2);
|
||||
attachDeviceEvents();
|
||||
}
|
||||
}
|
||||
});
|
||||
];
|
||||
|
||||
var fnCreatedRow = function (row, data, dataIndex) {
|
||||
$(row).attr('data-type', 'selectable');
|
||||
$(row).attr('data-deviceid', data.deviceIdentifier);
|
||||
$(row).attr('data-devicetype', data.type);
|
||||
var model = getPropertyValue(data.properties, 'DEVICE_MODEL');
|
||||
var vendor = getPropertyValue(data.properties, 'VENDOR');
|
||||
var owner = data.user;
|
||||
var status = data.status;
|
||||
var ownership = data.ownership;
|
||||
var deviceType = data.type;
|
||||
var category = getDeviceTypeCategory(deviceType);
|
||||
$.each($('td', row), function (colIndex) {
|
||||
switch (colIndex) {
|
||||
case 1:
|
||||
$(this).attr('data-search', model + ',' + vendor);
|
||||
$(this).attr('data-display', model);
|
||||
break;
|
||||
case 2:
|
||||
$(this).attr('data-grid-label', "Owner");
|
||||
$(this).attr('data-search', owner);
|
||||
$(this).attr('data-display', owner);
|
||||
break;
|
||||
case 3:
|
||||
$(this).attr('data-grid-label', "Status");
|
||||
$(this).attr('data-search', status);
|
||||
$(this).attr('data-display', status);
|
||||
break;
|
||||
case 4:
|
||||
$(this).attr('data-grid-label', "Type");
|
||||
$(this).attr('data-search', deviceType);
|
||||
$(this).attr('data-display', getDeviceTypeLabel(deviceType));
|
||||
break;
|
||||
case 5:
|
||||
if (category == 'mobile') {
|
||||
$(this).attr('data-grid-label', "Ownership");
|
||||
$(this).attr('data-search', ownership);
|
||||
$(this).attr('data-display', ownership);
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var dataFilter = function (data) {
|
||||
data = JSON.parse(data);
|
||||
var objects = [];
|
||||
|
||||
$(data.devices).each(function (index) {
|
||||
objects.push(
|
||||
{
|
||||
model: getPropertyValue(data.devices[index].properties, "DEVICE_MODEL"),
|
||||
vendor: getPropertyValue(data.devices[index].properties, "VENDOR"),
|
||||
user: data.devices[index].enrolmentInfo.owner,
|
||||
status: data.devices[index].enrolmentInfo.status,
|
||||
ownership: data.devices[index].enrolmentInfo.ownership,
|
||||
deviceType: data.devices[index].type,
|
||||
deviceIdentifier: data.devices[index].deviceIdentifier,
|
||||
name: data.devices[index].name
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
var json = {
|
||||
"recordsTotal": data.count,
|
||||
"recordsFiltered": data.count,
|
||||
"data": objects
|
||||
};
|
||||
return JSON.stringify(json);
|
||||
};
|
||||
|
||||
$('#device-grid').datatables_extended_serverside_paging(
|
||||
null,
|
||||
serviceURL,
|
||||
dataFilter,
|
||||
columns,
|
||||
fnCreatedRow,
|
||||
function () {
|
||||
$(".icon .text").res_text(0.2);
|
||||
$('#device-grid').removeClass('hidden');
|
||||
$("#loading-content").remove();
|
||||
attachDeviceEvents();
|
||||
}, {
|
||||
"placeholder": "Search By Device Name",
|
||||
"searchKey": "name"
|
||||
}
|
||||
);
|
||||
|
||||
$(deviceCheckbox).click(function () {
|
||||
addDeviceSelectedClass(this);
|
||||
});
|
||||
@ -403,7 +466,7 @@ $(document).ready(function () {
|
||||
|
||||
var permissionList = $("#permission").data("permission");
|
||||
for (var key in permissionList) {
|
||||
if (permissionList.hasOwnProperty(key)){
|
||||
if (permissionList.hasOwnProperty(key)) {
|
||||
$.setPermission(key);
|
||||
}
|
||||
}
|
||||
@ -412,29 +475,29 @@ $(document).ready(function () {
|
||||
|
||||
/* for device list sorting drop down */
|
||||
$(".ctrl-filter-type-switcher").popover({
|
||||
html : true,
|
||||
content : function () {
|
||||
return $("#content-filter-types").html();
|
||||
}
|
||||
});
|
||||
html: true,
|
||||
content: function () {
|
||||
return $("#content-filter-types").html();
|
||||
}
|
||||
});
|
||||
|
||||
/* for data tables*/
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
|
||||
$("[data-toggle=popover]").popover();
|
||||
|
||||
$(".ctrl-filter-type-switcher").popover ({
|
||||
html : true,
|
||||
content: function() {
|
||||
return $('#content-filter-types').html();
|
||||
}
|
||||
});
|
||||
$(".ctrl-filter-type-switcher").popover({
|
||||
html: true,
|
||||
content: function () {
|
||||
return $('#content-filter-types').html();
|
||||
}
|
||||
});
|
||||
|
||||
$('#nav').affix ({
|
||||
offset: {
|
||||
top: $('header').height()
|
||||
}
|
||||
});
|
||||
$('#nav').affix({
|
||||
offset: {
|
||||
top: $('header').height()
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
@ -464,7 +527,7 @@ function showPopup() {
|
||||
function hidePopup() {
|
||||
$(modalPopupContent).html('');
|
||||
$(modalPopup).modal('hide');
|
||||
$('body').removeClass('modal-open').css('padding-right','0px');
|
||||
$('body').removeClass('modal-open').css('padding-right', '0px');
|
||||
$('.modal-backdrop').remove();
|
||||
}
|
||||
|
||||
@ -483,16 +546,17 @@ function attachDeviceEvents() {
|
||||
var deviceId = $(this).data("deviceid");
|
||||
var deviceType = $(this).data("devicetype");
|
||||
$(modalPopupContent).html($('#group-device-modal-content').html());
|
||||
$('#user-groups').html('<div style="height:100px" data-state="loading" data-loading-text="Loading..." data-loading-style="icon-only" data-loading-inverse="true"></div>');
|
||||
$('#user-groups').html(
|
||||
'<div style="height:100px" data-state="loading" data-loading-text="Loading..." data-loading-style="icon-only" data-loading-inverse="true"></div>');
|
||||
$("a#group-device-yes-link").hide();
|
||||
showPopup();
|
||||
|
||||
var serviceURL;
|
||||
if ($.hasPermission("LIST_ALL_GROUPS")) {
|
||||
serviceURL = "/devicemgt_admin/groups/all";
|
||||
serviceURL = "/api/device-mgt/v1.0/groups/all";
|
||||
} else if ($.hasPermission("LIST_GROUPS")) {
|
||||
//Get authenticated users groups
|
||||
serviceURL = "/devicemgt_admin/groups/user/" + currentUser + "/all";
|
||||
serviceURL = "/api/device-mgt/v1.0/groups/user/" + currentUser + "/all";
|
||||
}
|
||||
|
||||
invokerUtil.get(serviceURL, function (data) {
|
||||
@ -507,7 +571,7 @@ function attachDeviceEvents() {
|
||||
$("a#group-device-yes-link").show();
|
||||
$("a#group-device-yes-link").click(function () {
|
||||
var selectedGroup = $('#assign-group-selector').val();
|
||||
serviceURL = "/devicemgt_admin/groups/owner/" + selectedGroup + "/devices";
|
||||
serviceURL = "/api/device-mgt/v1.0/groups/owner/" + selectedGroup + "/devices";
|
||||
var device = {"id": deviceId, "type": deviceType};
|
||||
invokerUtil.post(serviceURL, device, function (data) {
|
||||
$(modalPopupContent).html($('#group-associate-device-200-content').html());
|
||||
@ -545,7 +609,7 @@ function attachDeviceEvents() {
|
||||
$("a.remove-device-link").click(function () {
|
||||
var deviceId = $(this).data("deviceid");
|
||||
var deviceType = $(this).data("devicetype");
|
||||
var serviceURL = "/devicemgt_admin/devices/type/" + deviceType + "/id/" + deviceId;
|
||||
var serviceURL = "/api/device-mgt/v1.0/devices/type/" + deviceType + "/id/" + deviceId;
|
||||
|
||||
$(modalPopupContent).html($('#remove-device-modal-content').html());
|
||||
showPopup();
|
||||
@ -576,7 +640,7 @@ function attachDeviceEvents() {
|
||||
var deviceId = $(this).data("deviceid");
|
||||
var deviceType = $(this).data("devicetype");
|
||||
var deviceName = $(this).data("devicename");
|
||||
var serviceURL = "/devicemgt_admin/devices/type/" + deviceType + "/id/" + deviceId;
|
||||
var serviceURL = "/api/device-mgt/v1.0/devices/type/" + deviceType + "/id/" + deviceId;
|
||||
|
||||
$(modalPopupContent).html($('#edit-device-modal-content').html());
|
||||
$('#edit-device-name').val(deviceName);
|
||||
@ -630,6 +694,6 @@ function displayDeviceErrors(jqXHR) {
|
||||
function getParameterByName(name) {
|
||||
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
|
||||
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
|
||||
results = regex.exec(location.search);
|
||||
results = regex.exec(location.search);
|
||||
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
<div>
|
||||
<span id="permission" data-permission="{{permissions.list}}"></span>
|
||||
{{#if groupCount}}
|
||||
<div class="container-fluid" id="group-listing" data-current-user="{{currentUser.username}}">
|
||||
<div class="container-fluid" id="group-listing" data-current-user="{{@user.username}}">
|
||||
<table class="table table-striped table-hover list-table display responsive nowrap data-table table-selectable grid-view"
|
||||
id="group-grid">
|
||||
<thead>
|
||||
|
||||
@ -47,24 +47,6 @@
|
||||
{{/zone}}
|
||||
|
||||
{{#zone "content"}}
|
||||
{{!
|
||||
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.
|
||||
}}
|
||||
|
||||
<div id="loading-content" class="col-centered">
|
||||
{{#if removePermitted}}
|
||||
<input type="hidden" id="can-remove" value="true" />
|
||||
@ -87,7 +69,7 @@ under the License.
|
||||
<th colspan="3"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="ast-container" data-app-context="{{appContext}}"></tbody>
|
||||
<tbody id="ast-container" data-app-context="{{@app.context}}"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@ -154,7 +136,7 @@ under the License.
|
||||
|
||||
{{#zone "bottomJs"}}
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<script id="role-listing" data-current-user="{{currentUser.username}}"
|
||||
<script id="role-listing" data-current-user="{{@user.username}}"
|
||||
src="{{@page.publicUri}}/templates/role-listing.hbs" type="text/x-handlebars-template"></script>
|
||||
{{js "js/role-listing.js"}}
|
||||
{{/zone}}
|
||||
@ -31,7 +31,6 @@ function onRequest(context) {
|
||||
context["removePermitted"] = true;
|
||||
}
|
||||
|
||||
context["appContext"] = deviceMgtProps["appContext"];
|
||||
context["adminRole"] = deviceMgtProps["adminRole"];
|
||||
|
||||
return context;
|
||||
|
||||
@ -327,7 +327,7 @@
|
||||
{{/zone}}
|
||||
{{#zone "bottomJs"}}
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<script id="user-listing" data-current-user="{{currentUser.username}}"
|
||||
<script id="user-listing" data-current-user="{{@user.username}}"
|
||||
src="{{@page.publicUri}}/templates/listing.hbs" type="text/x-handlebars-template"></script>
|
||||
{{js "js/listing.js"}}
|
||||
{{/zone}}
|
||||
|
||||
@ -52,7 +52,7 @@ $.fn.datatables_extended_serverside_paging = function (settings , url, dataFilte
|
||||
filter: false,
|
||||
bSortCellsTop: true,
|
||||
ajax : {
|
||||
url: "/emm/api/data-tables/invoker",
|
||||
url: context + "/api/data-tables/invoker",
|
||||
data : function (params) {
|
||||
var i;
|
||||
var searchParams = {};
|
||||
|
||||
@ -70,7 +70,7 @@
|
||||
{{css "css/listing-grid.css"}}
|
||||
{{/zone}}
|
||||
{{#zone "bottomJs"}}
|
||||
<script id="device-listing" data-current-user="{{currentUser.username}}"
|
||||
<script id="device-listing" data-current-user="{{@user.username}}"
|
||||
src="{{@unit.publicUri}}/templates/listing.hbs"
|
||||
type="text/x-handlebars-template"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
@ -41,11 +41,11 @@ $(document).ready(function () {
|
||||
|
||||
/* for device list sorting drop down */
|
||||
$(".ctrl-filter-type-switcher").popover({
|
||||
html : true,
|
||||
content : function () {
|
||||
return $("#content-filter-types").html();
|
||||
}
|
||||
});
|
||||
html : true,
|
||||
content : function () {
|
||||
return $("#content-filter-types").html();
|
||||
}
|
||||
});
|
||||
|
||||
$(".ast-container").on("click", ".claim-btn", function(e){
|
||||
e.stopPropagation();
|
||||
@ -142,7 +142,13 @@ function loadDevices(searchType, searchParam){
|
||||
}
|
||||
} else {
|
||||
$('#device-grid').addClass('hidden');
|
||||
$('#device-listing-status-msg').text('No device is available to be displayed.');
|
||||
$('#device-listing-status-msg').html(
|
||||
'<div class="col-centered text-center"><h3 class="text-muted"><i class="fw fw-mobile fw-3x"></i>' +
|
||||
'</h3><h3 class="text-muted">No device type is available to be displayed.</h3>' +
|
||||
'<a href="https://docs.wso2.com/display/IoTS100/Quick+Start+Guide" target="_blank" ' +
|
||||
'class="btn-operations btn-default"><span class="fw-stack">' +
|
||||
'<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-document fw-stack-1x"></i></span>' +
|
||||
' Quick Startup Guide</a></div>');
|
||||
}
|
||||
|
||||
$(".icon .text").res_text(0.2);
|
||||
@ -197,11 +203,11 @@ $(document).ready(function () {
|
||||
|
||||
/* for device list sorting drop down */
|
||||
$(".ctrl-filter-type-switcher").popover({
|
||||
html : true,
|
||||
content : function () {
|
||||
return $("#content-filter-types").html();
|
||||
}
|
||||
});
|
||||
html : true,
|
||||
content : function () {
|
||||
return $("#content-filter-types").html();
|
||||
}
|
||||
});
|
||||
|
||||
$(".ast-container").on("click", ".claim-btn", function(e){
|
||||
e.stopPropagation();
|
||||
@ -223,17 +229,17 @@ $(document).ready(function () {
|
||||
$("[data-toggle=popover]").popover();
|
||||
|
||||
$(".ctrl-filter-type-switcher").popover({
|
||||
html : true,
|
||||
content: function() {
|
||||
return $('#content-filter-types').html();
|
||||
}
|
||||
});
|
||||
html : true,
|
||||
content: function() {
|
||||
return $('#content-filter-types').html();
|
||||
}
|
||||
});
|
||||
|
||||
$('#nav').affix({
|
||||
offset: {
|
||||
top: $('header').height()
|
||||
}
|
||||
});
|
||||
offset: {
|
||||
top: $('header').height()
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on("click", "tr.clickable-row", function(){
|
||||
window.document.location = $(this).data('href');
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<tr data-type="selectable" data-deviceid="{{deviceTypeId}}" data-devicetype="{{deviceTypeName}}"
|
||||
data-href="{{appContext}}/device/{{deviceTypeName}}/enroll" class="clickable-row">
|
||||
data-href="{{@app.context}}/device/{{deviceTypeName}}/enroll" class="clickable-row">
|
||||
<td class="remove-padding icon-only content-fill" data-search="{{deviceCategory}}" data-display="{{deviceCategory}}">
|
||||
<div class="thumbnail icon">
|
||||
<!--<i class="square-element text fw fw-mobile"></i>-->
|
||||
@ -9,7 +9,7 @@
|
||||
<td class="remove-padding-top" data-search="{{deviceTypeLabel}}" data-display="{{deviceTypeLabel}}">
|
||||
{{deviceTypeLabel}}</td>
|
||||
<td class="text-right content-fill text-left-on-grid-view no-wrap">
|
||||
<a href="{{appContext}}/device/{{deviceTypeName}}/enroll"
|
||||
<a href="{{@app.context}}/device/{{deviceTypeName}}/enroll"
|
||||
data-click-event="remove-form" class="btn col-md-12">
|
||||
<span class="fw-stack">
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
|
||||
@ -17,6 +17,10 @@
|
||||
*/
|
||||
|
||||
(function () {
|
||||
var deviceId = $(".device-id");
|
||||
var deviceIdentifier = deviceId.data("deviceid");
|
||||
var deviceType = deviceId.data("type");
|
||||
|
||||
$(document).ready(function () {
|
||||
$(".panel-body").removeClass("hidden");
|
||||
$("#loading-content").remove();
|
||||
@ -25,10 +29,6 @@
|
||||
loadOperationsLog();
|
||||
}
|
||||
|
||||
if ($('#policies').length) {
|
||||
loadPolicies();
|
||||
}
|
||||
|
||||
if ($('#policy_compliance').length) {
|
||||
loadPolicyCompliance();
|
||||
}
|
||||
@ -45,160 +45,159 @@
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
function loadOperationsLog(update) {
|
||||
var operationsLog = $("#operations-log");
|
||||
var deviceListingSrc = operationsLog.attr("src");
|
||||
var deviceId = operationsLog.data("device-id");
|
||||
var deviceType = operationsLog.data("device-type");
|
||||
|
||||
$.template("operations-log", deviceListingSrc, function (template) {
|
||||
var serviceURL = "/devicemgt_admin/operations/" + deviceType + "/" + deviceId;
|
||||
|
||||
var successCallback = function (data) {
|
||||
data = JSON.parse(data);
|
||||
$('#operations-spinner').addClass('hidden');
|
||||
var viewModel = {};
|
||||
viewModel.operations = data;
|
||||
if (data.length > 0) {
|
||||
var content = template(viewModel);
|
||||
if (!update) {
|
||||
$("#operations-log-container").html(content);
|
||||
$('#operations-log-table').datatables_extended();
|
||||
} else {
|
||||
$('#operations-log-table').dataTable().fnClearTable();
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
var status;
|
||||
if (data[i].status == "COMPLETED") {
|
||||
status = "<span><i class='fw fw-ok icon-success'></i> Completed</span>";
|
||||
} else if (data[i].status == "PENDING") {
|
||||
status = "<span><i class='fw fw-warning icon-warning'></i> Pending</span>";
|
||||
} else if (data[i].status == "ERROR") {
|
||||
status = "<span><i class='fw fw-error icon-danger'></i> Error</span>";
|
||||
} else if (data[i].status == "IN_PROGRESS") {
|
||||
status = "<span><i class='fw fw-ok icon-warning'></i> In Progress</span>";
|
||||
}
|
||||
|
||||
$('#operations-log-table').dataTable().fnAddData([
|
||||
data[i].code,
|
||||
status,
|
||||
data[i].createdTimeStamp
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
invokerUtil.get(serviceURL,
|
||||
successCallback, function (message) {
|
||||
console.log(message);
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function loadPolicies() {
|
||||
var policyList = $("#policy-list");
|
||||
var policyListingSrc = policyList.attr("src");
|
||||
var deviceId = policyList.data("device-id");
|
||||
var deviceType = policyList.data("device-type");
|
||||
|
||||
$.template("policy-list", policyListingSrc, function (template) {
|
||||
var serviceURL = "/devicemgt_admin/policies";
|
||||
|
||||
var successCallback = function (data) {
|
||||
data = JSON.parse(data);
|
||||
$('#policy-spinner').addClass('hidden');
|
||||
var policyListFromRestEndpoint = data.responseContent;
|
||||
if (policyListFromRestEndpoint.length > 0) {
|
||||
var viewModel = {};
|
||||
var policyListToView = [];
|
||||
var i, policyObjectFromRestEndpoint, policyObjectToView;
|
||||
for (i = 0; i < policyListFromRestEndpoint.length; i++) {
|
||||
// get list object
|
||||
policyObjectFromRestEndpoint = policyListFromRestEndpoint[i];
|
||||
// populate list object values to view-object
|
||||
policyObjectToView = {};
|
||||
policyObjectToView["id"] = policyObjectFromRestEndpoint["id"];
|
||||
policyObjectToView["priorityId"] = policyObjectFromRestEndpoint["priorityId"];
|
||||
policyObjectToView["name"] = policyObjectFromRestEndpoint["policyName"];
|
||||
policyObjectToView["platform"] = policyObjectFromRestEndpoint["profile"]["deviceType"]["name"];
|
||||
policyObjectToView["ownershipType"] = policyObjectFromRestEndpoint["ownershipType"];
|
||||
policyObjectToView["compliance"] = policyObjectFromRestEndpoint["compliance"];
|
||||
|
||||
if (policyObjectFromRestEndpoint["active"] == true && policyObjectFromRestEndpoint["updated"] == true) {
|
||||
policyObjectToView["status"] = "Active/Updated";
|
||||
} else if (policyObjectFromRestEndpoint["active"] == true && policyObjectFromRestEndpoint["updated"] == false) {
|
||||
policyObjectToView["status"] = "Active";
|
||||
} else if (policyObjectFromRestEndpoint["active"] == false && policyObjectFromRestEndpoint["updated"] == true) {
|
||||
policyObjectToView["status"] = "Inactive/Updated";
|
||||
} else if (policyObjectFromRestEndpoint["active"] == false && policyObjectFromRestEndpoint["updated"] == false) {
|
||||
policyObjectToView["status"] = "Inactive";
|
||||
}
|
||||
// push view-objects to list
|
||||
policyListToView.push(policyObjectToView);
|
||||
}
|
||||
viewModel.policies = policyListToView;
|
||||
var content = template(viewModel);
|
||||
$("#policy-list-container").html(content);
|
||||
$('#policy-table').datatables_extended();
|
||||
}
|
||||
};
|
||||
invokerUtil.get(serviceURL,
|
||||
successCallback, function (message) {
|
||||
console.log(message);
|
||||
});
|
||||
});
|
||||
|
||||
var operationsLogTable = "#operations-log-table";
|
||||
if (update) {
|
||||
operationTable = $(operationsLogTable).DataTable();
|
||||
operationTable.ajax.reload(false);
|
||||
return;
|
||||
}
|
||||
operationTable = $(operationsLogTable).datatables_extended({
|
||||
serverSide: true,
|
||||
processing: false,
|
||||
searching: false,
|
||||
ordering: false,
|
||||
pageLength : 10,
|
||||
order: [],
|
||||
ajax: {
|
||||
url: context + "/api/operation/paginate",
|
||||
data: {deviceId : deviceIdentifier, deviceType: deviceType},
|
||||
dataSrc: function (json) {
|
||||
$("#operations-spinner").addClass("hidden");
|
||||
$("#operations-log-container").empty();
|
||||
return json.data;
|
||||
}
|
||||
},
|
||||
columnDefs: [
|
||||
{targets: 0, data: "code" },
|
||||
{targets: 1, data: "status", render:
|
||||
function (status) {
|
||||
var html;
|
||||
switch (status) {
|
||||
case "COMPLETED" :
|
||||
html = "<span><i class='fw fw-ok icon-success'></i> Completed</span>";
|
||||
break;
|
||||
case "PENDING" :
|
||||
html = "<span><i class='fw fw-warning icon-warning'></i> Pending</span>";
|
||||
break;
|
||||
case "ERROR" :
|
||||
html = "<span><i class='fw fw-error icon-danger'></i> Error</span>";
|
||||
break;
|
||||
case "IN_PROGRESS" :
|
||||
html = "<span><i class='fw fw-ok icon-warning'></i> In Progress</span>";
|
||||
break;
|
||||
case "REPEATED" :
|
||||
html = "<span><i class='fw fw-ok icon-warning'></i> Repeated</span>";
|
||||
break;
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{targets: 2, data: "createdTimeStamp", render:
|
||||
function (date) {
|
||||
var value = String(date);
|
||||
return value.slice(0, 16);
|
||||
}
|
||||
}
|
||||
],
|
||||
"createdRow": function(row, data) {
|
||||
$(row).attr("data-type", "selectable");
|
||||
$(row).attr("data-id", data["id"]);
|
||||
$.each($("td", row),
|
||||
function(colIndex) {
|
||||
switch(colIndex) {
|
||||
case 1:
|
||||
$(this).attr("data-grid-label", "Code");
|
||||
$(this).attr("data-display", data["code"]);
|
||||
break;
|
||||
case 2:
|
||||
$(this).attr("data-grid-label", "Status");
|
||||
$(this).attr("data-display", data["status"]);
|
||||
break;
|
||||
case 3:
|
||||
$(this).attr("data-grid-label", "Created Timestamp");
|
||||
$(this).attr("data-display", data["createdTimeStamp"]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function loadPolicyCompliance() {
|
||||
var policyCompliance = $("#policy-view");
|
||||
var policySrc = policyCompliance.attr("src");
|
||||
var policyComplianceTemplate = policyCompliance.attr("src");
|
||||
var deviceId = policyCompliance.data("device-id");
|
||||
var deviceType = policyCompliance.data("device-type");
|
||||
var activePolicy = null;
|
||||
|
||||
$.template("policy-view", policySrc, function (template) {
|
||||
var serviceURLPolicy = "/devicemgt_admin/policies/" + deviceType + "/" + deviceId + "/active-policy"
|
||||
var serviceURLCompliance = "/devicemgt_admin/policies/" + deviceType + "/" + deviceId;
|
||||
|
||||
var successCallbackCompliance = function (data) {
|
||||
var viewModel = {};
|
||||
viewModel.policy = activePolicy;
|
||||
viewModel.deviceType = deviceType;
|
||||
if (data != null && data.complianceFeatures != null && data.complianceFeatures != undefined && data.complianceFeatures.length > 0) {
|
||||
viewModel.compliance = "NON-COMPLIANT";
|
||||
viewModel.complianceFeatures = data.complianceFeatures;
|
||||
var content = template(viewModel);
|
||||
$("#policy-list-container").html(content);
|
||||
} else {
|
||||
viewModel.compliance = "COMPLIANT";
|
||||
var content = template(viewModel);
|
||||
$("#policy-list-container").html(content);
|
||||
$("#policy-compliance-table").addClass("hidden");
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
var successCallbackPolicy = function (data) {
|
||||
data = JSON.parse(data);
|
||||
$('#policy-spinner').addClass('hidden');
|
||||
if (data != null && data.active == true) {
|
||||
activePolicy = data;
|
||||
invokerUtil.get(serviceURLCompliance,
|
||||
successCallbackCompliance, function (message) {
|
||||
console.log(message);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
invokerUtil.get(serviceURLPolicy,
|
||||
successCallbackPolicy, function (message) {
|
||||
console.log(message);
|
||||
});
|
||||
});
|
||||
$.template(
|
||||
"policy-view",
|
||||
policyComplianceTemplate,
|
||||
function (template) {
|
||||
var getEffectivePolicyURL = "/api/device-mgt/v1.0/devices/" + deviceType + "/" + deviceId + "/effective-policy";
|
||||
var getDeviceComplianceURL = "/api/device-mgt/v1.0/devices/" + deviceType + "/" + deviceId + "/compliance-data";
|
||||
|
||||
invokerUtil.get(
|
||||
getEffectivePolicyURL,
|
||||
// success-callback
|
||||
function (data, textStatus, jqXHR) {
|
||||
if (jqXHR.status == 200 && data) {
|
||||
data = JSON.parse(data);
|
||||
$("#policy-spinner").addClass("hidden");
|
||||
if (data["active"] == true) {
|
||||
activePolicy = data;
|
||||
invokerUtil.get(
|
||||
getDeviceComplianceURL,
|
||||
// success-callback
|
||||
function (data, textStatus, jqXHR) {
|
||||
if (jqXHR.status == 200 && data) {
|
||||
var viewModel = {};
|
||||
viewModel["policy"] = activePolicy;
|
||||
viewModel["deviceType"] = deviceType;
|
||||
data = JSON.parse(data);
|
||||
var content;
|
||||
if (data["complianceData"]) {
|
||||
if (data["complianceData"]["complianceFeatures"] &&
|
||||
data["complianceData"]["complianceFeatures"].length > 0) {
|
||||
viewModel["compliance"] = "NON-COMPLIANT";
|
||||
viewModel["complianceFeatures"] = data["complianceData"]["complianceFeatures"];
|
||||
content = template(viewModel);
|
||||
$("#policy-list-container").html(content);
|
||||
} else {
|
||||
viewModel["compliance"] = "COMPLIANT";
|
||||
content = template(viewModel);
|
||||
$("#policy-list-container").html(content);
|
||||
$("#policy-compliance-table").addClass("hidden");
|
||||
}
|
||||
} else {
|
||||
$("#policy-list-container").
|
||||
html("<div class='panel-body'><br><p class='fw-warning'> This device " +
|
||||
"has no policy applied.<p></div>");
|
||||
}
|
||||
}
|
||||
},
|
||||
// error-callback
|
||||
function () {
|
||||
$("#policy-list-container").
|
||||
html("<div class='panel-body'><br><p class='fw-warning'> Loading policy compliance related data " +
|
||||
"was not successful. please try refreshing data in a while.<p></div>");
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
// error-callback
|
||||
function () {
|
||||
$("#policy-list-container").
|
||||
html("<div class='panel-body'><br><p class='fw-warning'> Loading policy compliance related data " +
|
||||
"was not successful. please try refreshing data in a while.<p></div>");
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}());
|
||||
|
||||
@ -23,11 +23,11 @@ function onRequest(context) {
|
||||
|
||||
if (deviceType != null && deviceType != undefined && deviceId != null && deviceId != undefined) {
|
||||
var deviceModule = require("/app/modules/business-controllers/device.js")["deviceModule"];
|
||||
var device = deviceModule.viewDevice(deviceType, deviceId);
|
||||
var device = deviceModule.viewDevice(deviceType, deviceId)["content"];
|
||||
|
||||
if (device) {
|
||||
var viewModel = {};
|
||||
var deviceInfo = device.properties.DEVICE_INFO;
|
||||
var deviceInfo = (device.properties) ? device.properties.DEVICE_INFO : null;
|
||||
if (deviceInfo != undefined && String(deviceInfo.toString()).length > 0) {
|
||||
deviceInfo = parse(stringify(deviceInfo));
|
||||
if (device.type == "ios") {
|
||||
@ -111,7 +111,6 @@ function onRequest(context) {
|
||||
}
|
||||
}
|
||||
|
||||
log.info(device);
|
||||
var utility = require("/app/modules/utility.js").utility;
|
||||
var configs = utility.getDeviceTypeConfig(deviceType);
|
||||
return {"device": device, "label" : configs["deviceType"]["label"]};
|
||||
|
||||
@ -55,7 +55,7 @@
|
||||
</div>
|
||||
{{/zone}}
|
||||
{{#zone "bottomJs"}}
|
||||
<script id="notification-listing" data-current-user="{{currentUser.username}}"
|
||||
<script id="notification-listing" data-current-user="{{@user.username}}"
|
||||
data-image-resource="{{@unit.publicUri}}/images/" src="{{@unit.publicUri}}/templates/notification-listing.hbs"
|
||||
type="text/x-handlebars-template"></script>
|
||||
{{js "js/notification-listing.js"}}
|
||||
|
||||
@ -87,7 +87,7 @@
|
||||
{{#zone "navbarCollapsableRightItems"}}
|
||||
<ul id="notification-bubble-wrapper" class="nav navbar-nav navbar-right">
|
||||
<li class="visible-inline-block">
|
||||
<!--<a href="{{appContext}}notification-listing" title="Failures of operations on the device side will be listed here">-->
|
||||
<!--<a href="{{@app.context}}notification-listing" title="Failures of operations on the device side will be listed here">-->
|
||||
<a data-toggle="sidebar" data-target="#right-sidebar" data-container=".page-content"
|
||||
aria-expanded="false" rel="notifications-sidebar">
|
||||
<span class="icon fw-stack">
|
||||
@ -105,12 +105,12 @@
|
||||
data-offset-top="80">
|
||||
<ul class="sidebar-messages">
|
||||
</ul>
|
||||
<div class="text-center"><a href="{{appContext}}notification-listing" class="btn btn-primary">Show All Notifications</a></div>
|
||||
<div class="text-center"><a href="{{@app.context}}/notification-listing" class="btn btn-primary">Show All Notifications</a></div>
|
||||
</div>
|
||||
{{/zone}}
|
||||
{{#zone "bottomJs"}}
|
||||
<script id="notifications" data-current-user="{{currentUser.username}}"
|
||||
data-image-resource="{{self.publicURL}}/images/" src="{{self.publicURL}}/templates/notifications.hbs"
|
||||
<script id="notifications" data-current-user="{{@user.username}}"
|
||||
data-image-resource="{{@unit.publicUri}}/images/" src="{{@unit.publicUri}}/templates/notifications.hbs"
|
||||
type="text/x-handlebars-template"></script>
|
||||
{{js "js/nav-menu.js"}}
|
||||
{{/zone}}
|
||||
|
||||
@ -4562,7 +4562,7 @@ a.wr-side-panel-toggle-btn.selected {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: -900px;
|
||||
left: -1000px;
|
||||
z-index: 10000;
|
||||
-moz-transition: left 0.4s ease;
|
||||
transition: left 0.4s ease 0s;
|
||||
|
||||
8
pom.xml
8
pom.xml
@ -1820,8 +1820,8 @@
|
||||
<carbon.api.mgt.version.range>(5.0.0,7.0.0]</carbon.api.mgt.version.range>
|
||||
|
||||
<!-- Carbon Analytics Commons -->
|
||||
<carbon.analytics.common.version>5.0.11</carbon.analytics.common.version>
|
||||
<carbon.analytics.common.version.range>[5.0.11,6.0.0)</carbon.analytics.common.version.range>
|
||||
<carbon.analytics.common.version>5.1.3</carbon.analytics.common.version>
|
||||
<carbon.analytics.common.version.range>[5.1.3,6.0.0)</carbon.analytics.common.version.range>
|
||||
|
||||
<!-- Carbon Registry -->
|
||||
<carbon.registry.version>4.5.6</carbon.registry.version>
|
||||
@ -1888,7 +1888,8 @@
|
||||
|
||||
<!--javax ws rs version-->
|
||||
<javax.ws.rs.version>2.0.1</javax.ws.rs.version>
|
||||
<swagger.version>1.5.8</swagger.version>
|
||||
<swagger.version>1.5.10</swagger.version>
|
||||
<swagger.annotations.version>1.5.10</swagger.annotations.version>
|
||||
<servlet-api.version>2.5</servlet-api.version>
|
||||
|
||||
<!--JWT grant type extension feature-->
|
||||
@ -1898,6 +1899,7 @@
|
||||
|
||||
<hibernate-validator.version>5.0.2.Final</hibernate-validator.version>
|
||||
<javax.xml.parsers.import.pkg.version>[0.0.0,1.0.0)</javax.xml.parsers.import.pkg.version>
|
||||
<javax.xml.bind.imp.pkg.version>[0.0.0,1.0.0)</javax.xml.bind.imp.pkg.version>
|
||||
|
||||
<!-- apache pdfbox version -->
|
||||
<orbit.version.pdfbox>1.8.10.wso2v2</orbit.version.pdfbox>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user