From ef3b196674e3e7ab7f9a8dbeca920caff9306447 Mon Sep 17 00:00:00 2001 From: charithag Date: Sun, 26 Jul 2015 11:08:02 +0530 Subject: [PATCH] Completed device association with groups --- .../jaggeryapps/iotserver/api/group-api.jag | 2 +- .../units/device-listing/device-listing.hbs | 90 ++++++++++- .../units/device-listing/device-listing.js | 8 + .../public/js/device-listing.js | 147 +++++++++++++++--- .../public/templates/device-listing.hbs | 7 + .../units/group-detail/group-detail.hbs | 4 +- .../group-listing/public/js/group-listing.js | 1 + 7 files changed, 230 insertions(+), 29 deletions(-) diff --git a/modules/distribution/src/repository/jaggeryapps/iotserver/api/group-api.jag b/modules/distribution/src/repository/jaggeryapps/iotserver/api/group-api.jag index 924a53d6..abb5b499 100644 --- a/modules/distribution/src/repository/jaggeryapps/iotserver/api/group-api.jag +++ b/modules/distribution/src/repository/jaggeryapps/iotserver/api/group-api.jag @@ -231,7 +231,7 @@ if (uriMatcher.match("/{context}/api/group/add")) { data = {"username": user.username}; result = get(endPoint, data, "json"); -} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/device/assign")) { +} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/assign")) { groupId = uriMatcher.elements().groupId; var deviceId = request.getContent()["deviceId"]; diff --git a/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/device-listing.hbs b/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/device-listing.hbs index 17444875..e2633391 100644 --- a/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/device-listing.hbs +++ b/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/device-listing.hbs @@ -1,5 +1,6 @@ {{#zone "main"}} +
@@ -16,6 +17,7 @@

You don't have any Devices registered at the moment.

+

@@ -30,11 +32,32 @@

+ +

Do you really want to remove this device from your Devices List?

+
    Yes     @@ -54,6 +77,7 @@

Device was successfully removed.

+
    Ok     @@ -70,8 +94,10 @@

Please enter new name for the device?


+
- +
@@ -92,6 +118,7 @@
+ + +
+
+
+
+

Device was successfully associated with group.

+ + +
+
+
+
+ +
+
+
+
+

Device was successfully removed from group.

+ + +
+
+
+
+

Exception at backend. Try Later.

+
    Ok     @@ -122,6 +204,7 @@

Action not permitted.

+
    Ok     @@ -137,6 +220,7 @@

Device does not exist.

+
    Ok     @@ -152,6 +236,7 @@

Device does not exist.

+
{{/zone}} {{#zone "bottomJs"}} - + {{/zone}} diff --git a/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/device-listing.js b/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/device-listing.js index 3760f748..3db7b52b 100644 --- a/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/device-listing.js +++ b/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/device-listing.js @@ -12,5 +12,13 @@ function onRequest(context){ } permissions.push("LIST_OWN_DEVICES"); context.permissions = stringify(permissions); + + var groupId = request.getParameter("groupId"); + if (groupId){ + context.groupId = groupId; + }else{ + context.groupId = 0; + } + return context; } \ No newline at end of file diff --git a/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/public/js/device-listing.js b/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/public/js/device-listing.js index 0116b272..acc0984c 100644 --- a/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/public/js/device-listing.js +++ b/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/public/js/device-listing.js @@ -53,6 +53,7 @@ var assetContainer = "#ast-container"; /* * DOM ready functions. */ +var groupId; $(document).ready(function () { /* Adding selected class for selected devices */ $(deviceCheckbox).each(function () { @@ -72,6 +73,9 @@ $(document).ready(function () { return $("#content-filter-types").html(); } }); + + groupId = $("#request-group-id").data("groupid"); + loadDevices(); }); /* @@ -134,10 +138,18 @@ function loadDevices(searchType, searchParam) { $.template("device-listing", deviceListingSrc, function (template) { var serviceURL; if ($.hasPermission("LIST_DEVICES")) { - serviceURL = "/iotserver/api/devices/all"; + if (groupId && groupId != "0") { + serviceURL = "/iotserver/api/group/id/" + groupId + "/device/all"; + } else { + serviceURL = "/iotserver/api/devices/all"; + } } else if ($.hasPermission("LIST_OWN_DEVICES")) { //Get authenticated users devices - serviceURL = "/iotserver/api/devices/all"; + if (groupId && groupId != "0") { + serviceURL = "/iotserver/api/group/id/" + groupId + "/device/all"; + } else { + serviceURL = "/iotserver/api/devices/all"; + } } else { $("#ast-container").html("Permission denied"); return; @@ -154,10 +166,17 @@ function loadDevices(searchType, searchParam) { var successCallback = function (data) { data = JSON.parse(data); var viewModel = {}; + if (groupId && groupId != "0") { + data.data = data; + } viewModel.devices = data.data; viewModel.imageLocation = imageResource; - if(!data.data || data.data.length <= 0){ - $("#ast-container").html($("#no-devices-div-content").html()); + if (!data.data || data.data.length <= 0) { + if (groupId && groupId != "0") { + $("#ast-container").html($("#no-grouped-devices-div-content").html()); + } else { + $("#ast-container").html($("#no-devices-div-content").html()); + } } else { var content = template(viewModel); $("#ast-container").html(content); @@ -177,12 +196,9 @@ function loadDevices(searchType, searchParam) { }); }); } -$(document).ready(function () { - loadDevices(); -}); -function formatDates(){ - $(".formatDate").each(function(){ +function formatDates() { + $(".formatDate").each(function () { var timeStamp = $(this).html(); $(this).html(new Date(parseInt(timeStamp)).toUTCString()); }); @@ -253,12 +269,12 @@ function attachEvents() { $("a#remove-device-yes-link").click(function () { invokerUtil.get( removeDeviceAPI, - function (data,txtStatus,jqxhr) { - var status = jqxhr.status; + function (data, txtStatus, jqxhr) { + var status = jqxhr.status; if (status == 200) { $(modalPopupContent).html($('#remove-device-200-content').html()); - $('div[data-deviceid="' + deviceId + '"]').remove(); - $("a#remove-device-200-link").click(function () { + $('div[data-deviceid="' + deviceId + '"]').remove(); + $("a#remove-device-200-link").click(function () { hidePopup(); }); } else if (status == 400) { @@ -310,38 +326,38 @@ function attachEvents() { $("a#edit-device-yes-link").click(function () { var newDeviceName = $('#edit-device-name').val(); - var device={"device":{"name" : newDeviceName}}; + var device = {"device": {"name": newDeviceName}}; invokerUtil.post( editDeviceAPI, device, - function (data,txtStatus,jqxhr) { + function (data, txtStatus, jqxhr) { var status = jqxhr.status; if (status == 200) { $(modalPopupContent).html($('#edit-device-200-content').html()); - $("div[data-deviceid='"+deviceId+"'] .ast-name").html(newDeviceName); + $("div[data-deviceid='" + deviceId + "'] .ast-name").html(newDeviceName); $("a#edit-device-200-link").click(function () { hidePopup(); }); } else if (status == 400) { - $(modalPopupContent).html($('#edit-device-400-content').html()); - $("a#edit-device-400-link").click(function () { + $(modalPopupContent).html($('#device-400-content').html()); + $("a#device-400-link").click(function () { hidePopup(); }); } else if (status == 403) { - $(modalPopupContent).html($('#edit-device-403-content').html()); - $("a#edit-device-403-link").click(function () { + $(modalPopupContent).html($('#device-403-content').html()); + $("a#device-403-link").click(function () { hidePopup(); }); } else if (status == 409) { - $(modalPopupContent).html($('#edit-device-409-content').html()); - $("a#edit-device-409-link").click(function () { + $(modalPopupContent).html($('#device-409-content').html()); + $("a#device-409-link").click(function () { hidePopup(); }); } }, function () { - $(modalPopupContent).html($('#edit-device-unexpected-error-content').html()); - $("a#edit-device-unexpected-error-link").click(function () { + $(modalPopupContent).html($('#device-unexpected-error-content').html()); + $("a#device-unexpected-error-link").click(function () { hidePopup(); }); } @@ -352,4 +368,87 @@ function attachEvents() { hidePopup(); }); }); + + /** + * Following click function would execute + * when a user clicks on "Group" link + * on Device Management page in WSO2 MDM Console. + */ + $("a.group-device-link").click(function () { + var deviceId = $(this).data("deviceid"); + var deviceType = $(this).data("devicetype"); + var endPoint = "/iotserver/api/group/all"; + + $(modalPopupContent).html($('#group-device-modal-content').html()); + $('#user-groups').html("Loading..."); + $("a#group-device-yes-link").hide(); + showPopup(); + + invokerUtil.get(endPoint, + function (data, txtStatus, jqxhr) { + var groups = JSON.parse(data); + var status = jqxhr.status; + if (status == 200) { + if (groups.length <= 0) { + $('#user-groups').html("There is no any groups available"); + return; + } + var str = '
'; + $('#user-groups').html(str); + $("a#group-device-yes-link").show(); + $("a#group-device-yes-link").click(function () { + var selectedGroupId = $('#assign-group-selector').val(); + endPoint = "/iotserver/api/group/id/" + selectedGroupId + "/assign"; + var device = {"deviceId": deviceId, "deviceType": deviceType}; + invokerUtil.post( + endPoint, + device, + function (data, txtStatus, jqxhr) { + var status = jqxhr.status; + if (status == 200) { + $(modalPopupContent).html($('#group-associate-device-200-content').html()); + $("a#group-associate-device-200-link").click(function () { + hidePopup(); + }); + } else if (status == 400) { + $(modalPopupContent).html($('#device-400-content').html()); + $("a#device-400-link").click(function () { + hidePopup(); + }); + } else if (status == 403) { + $(modalPopupContent).html($('#device-403-content').html()); + $("a#device-403-link").click(function () { + hidePopup(); + }); + } else if (status == 409) { + $(modalPopupContent).html($('#device-409-content').html()); + $("a#device-409-link").click(function () { + hidePopup(); + }); + } + }, + function () { + $(modalPopupContent).html($('#device-unexpected-error-content').html()); + $("a#device-unexpected-error-link").click(function () { + hidePopup(); + }); + }); + }); + } + }, + function () { + $(modalPopupContent).html($('#device-unexpected-error-content').html()); + $("a#device-unexpected-error-link").click(function () { + hidePopup(); + }); + }); + + $("a#group-device-cancel-link").click(function () { + hidePopup(); + }); + }); } diff --git a/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/public/templates/device-listing.hbs b/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/public/templates/device-listing.hbs index 0ffc884e..f1fe2032 100644 --- a/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/public/templates/device-listing.hbs +++ b/modules/distribution/src/repository/jaggeryapps/iotserver/units/device-listing/public/templates/device-listing.hbs @@ -28,6 +28,13 @@ View
+ + + + + + Group + diff --git a/modules/distribution/src/repository/jaggeryapps/iotserver/units/group-detail/group-detail.hbs b/modules/distribution/src/repository/jaggeryapps/iotserver/units/group-detail/group-detail.hbs index c15cf4f9..272963e1 100644 --- a/modules/distribution/src/repository/jaggeryapps/iotserver/units/group-detail/group-detail.hbs +++ b/modules/distribution/src/repository/jaggeryapps/iotserver/units/group-detail/group-detail.hbs @@ -69,7 +69,7 @@ @@ -92,7 +92,7 @@ diff --git a/modules/distribution/src/repository/jaggeryapps/iotserver/units/group-listing/public/js/group-listing.js b/modules/distribution/src/repository/jaggeryapps/iotserver/units/group-listing/public/js/group-listing.js index d46d9bd0..c84285b5 100644 --- a/modules/distribution/src/repository/jaggeryapps/iotserver/units/group-listing/public/js/group-listing.js +++ b/modules/distribution/src/repository/jaggeryapps/iotserver/units/group-listing/public/js/group-listing.js @@ -331,6 +331,7 @@ function attachEvents() { str += ''; if (!hasUsers) { str = "There is no any other users registered"; + $('#user-names').html(str); return; } $('#user-names').html(str);