diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/group.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/group.js
index 37894ac2a3..9ad1b2001b 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/group.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/group.js
@@ -20,6 +20,7 @@ var groupModule = {};
(function (groupModule) {
var log = new Log("/app/modules/group.js");
+ var userModule = require("/app/modules/user.js").userModule;
var constants = require('/app/modules/constants.js');
var devicemgtProps = require('/app/conf/devicemgt-props.js').config();
var utility = require("/app/modules/utility.js").utility;
@@ -32,7 +33,12 @@ var groupModule = {};
var endPoint;
groupModule.getGroupCount = function () {
- endPoint = groupServiceEndpoint + "/user/" + user.username + "/count";
+ var permissions = userModule.getUIPermissions();
+ if (permissions.LIST_ALL_GROUPS) {
+ endPoint = groupServiceEndpoint + "/count";
+ } else if (permissions.LIST_GROUPS) {
+ endPoint = groupServiceEndpoint + "/user/" + user.username + "/count";
+ }
return serviceInvokers.XMLHttp.get(
endPoint, function (responsePayload) {
return responsePayload;
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.hbs
index 20edeaf190..e890993cd9 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.hbs
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.hbs
@@ -100,18 +100,19 @@
|
|
-
-
-
- {{unit "mdm.unit.device.operation-bar"}}
-
-
- Enabling Device Operations
- To enable device operations, select the desired platform from above
- filter.
-
- |
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -326,7 +327,6 @@
{{#zone "bottomJs"}}
{{js "js/listing.js"}}
{{/zone}}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/public/js/listing.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/public/js/listing.js
index 8e19a542d5..545c12eee0 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/public/js/listing.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/public/js/listing.js
@@ -70,7 +70,6 @@ $(document).ready(function () {
addDeviceSelectedClass(this);
});
- var i;
var permissionList = $("#permission").data("permission");
for (var key in permissionList) {
if (permissionList.hasOwnProperty(key)) {
@@ -163,10 +162,8 @@ function toTitleCase(str) {
function loadDevices(searchType, searchParam){
var deviceListing = $("#device-listing");
- var deviceListingSrc = deviceListing.attr("src");
var imageResource = deviceListing.data("image-resource");
var currentUser = deviceListing.data("currentUser");
- var frontEndPagination = false;
var serviceURL;
if ($.hasPermission("LIST_DEVICES")) {
@@ -206,6 +203,16 @@ function loadDevices(searchType, searchParam){
return type;
}
+ function getDeviceTypeCategory(type) {
+ var deviceTypes = deviceListing.data("deviceTypes");
+ for (var i = 0; i < deviceTypes.length; i++) {
+ if (deviceTypes[i].type == type) {
+ return deviceTypes[i].category;
+ }
+ }
+ return type;
+ }
+
$('#device-grid').datatables_extended ({
serverSide: true,
processing: false,
@@ -238,7 +245,8 @@ function loadDevices(searchType, searchParam){
return html;
}},
{ targets: 2, data: 'enrolmentInfo.owner', className: 'fade-edge remove-padding-top'},
- { targets: 3, data: 'enrolmentInfo.status', className: 'fade-edge remove-padding-top' ,
+ {
+ targets: 3, data: 'enrolmentInfo.status', className: 'fade-edge remove-padding-top',
render: function ( status, type, row, meta ) {
var html;
switch (status) {
@@ -257,11 +265,22 @@ function loadDevices(searchType, searchParam){
}
return html;
}},
- { targets: 4, data: 'type' , className: 'fade-edge remove-padding-top' ,
+ {
+ targets: 4, data: 'type', className: 'fade-edge remove-padding-top',
render: function ( status, type, row, meta ) {
return getDeviceTypeLabel(row.type);
- }},
- { targets: 5, data: 'enrolmentInfo.ownership' , className: 'fade-edge remove-padding-top' },
+ }
+ },
+ {
+ 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;
@@ -271,6 +290,15 @@ function loadDevices(searchType, searchParam){
html = '' +
'View';
+ html += '' +
+ '' +
+ 'Analytics';
+ html += '' +
+ '' +
+ '' +
+ 'Edit';
}
return html;
}}
@@ -285,6 +313,7 @@ function loadDevices(searchType, searchParam){
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:
@@ -304,18 +333,21 @@ function loadDevices(searchType, searchParam){
case 4:
$(this).attr('data-grid-label', "Type");
$(this).attr('data-search', deviceType);
- $(this).attr('data-display', deviceType);
+ $(this).attr('data-display', getDeviceTypeLabel(deviceType));
break;
case 5:
- $(this).attr('data-grid-label', "Ownership");
- $(this).attr('data-search', ownership);
- $(this).attr('data-display', ownership);
+ 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();
}
});
$(deviceCheckbox).click(function () {
@@ -338,50 +370,6 @@ function openCollapsedNav() {
});
}
-function loadGroupedDevices(groupId) {
- var serviceURL = "api/group/id/" + groupId + "/device/all";
- var deviceListing = $("#device-listing");
- var deviceListingSrc = deviceListing.attr("src");
- var imageResource = deviceListing.data("image-resource");
- var currentUser = deviceListing.data("currentUser");
- $.template("device-listing", deviceListingSrc, function (template) {
-
- var loadGroupRequest = $.ajax({
- url: serviceURL,
- method: "GET",
- contentType: "application/json",
- accept: "application/json"
- });
-
- loadGroupRequest.done(function (data) {
- data = JSON.parse(data);
- var viewModel = {};
- viewModel.devices = data.data;
- viewModel.imageLocation = imageResource;
- viewModel.isGroupView = "true";
- if (viewModel.devices.length > 0) {
- $('#device-grid').removeClass('hidden');
- var content = template(viewModel);
- $("#ast-container").html(content);
- /*
- * On device checkbox select add parent selected style class
- */
- $(deviceCheckbox).click(function () {
- addDeviceSelectedClass(this);
- });
- attachDeviceEvents();
- } else {
- $('#device-table').addClass('hidden');
- $('#device-listing-status-msg').text('No device is available to be displayed.');
- }
- $("#loading-content").remove();
- $('#device-grid').datatables_extended();
- $(".icon .text").res_text(0.2);
- });
- });
-
-}
-
function initPage() {
var deviceListing = $("#device-listing");
var currentUser = deviceListing.data("currentUser");
@@ -642,9 +630,9 @@ function attachDeviceEvents() {
});
postOperationRequest.done(function (data) {
$(modalPopupContent).html($('#edit-device-200-content').html());
- $("h4[data-deviceid='" + deviceId + "']").html(newDeviceName);
setTimeout(function () {
hidePopup();
+ location.reload(false);
}, 2000);
});
postOperationRequest.fail(function (jqXHR, textStatus) {
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.groups/groups.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.groups/groups.hbs
index b4f80468ed..2e9690071b 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.groups/groups.hbs
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.groups/groups.hbs
@@ -17,15 +17,17 @@
{{/zone}}
{{#zone "navbarActions"}}
-
-
+ {{#if permissions.ADD_GROUP}}
+
+
- Add Group
-
-
+ Add Group
+
+
+ {{/if}}
{{/zone}}
{{#zone "content"}}
@@ -33,6 +35,7 @@
+
{{#if groupCount}}
0) {
- page_data.groupCount = groupCount;
+ page.groupCount = groupCount;
}
}
- return page_data;
+ return page;
}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.groups/public/js/listing.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.groups/public/js/listing.js
index 2ba4f0cd35..a2d95a3c4e 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.groups/public/js/listing.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.groups/public/js/listing.js
@@ -82,6 +82,19 @@ function toTitleCase(str) {
});
}
+(function () {
+ var permissionSet = {};
+
+ //This method is used to setup permission for device listing
+ $.setPermission = function (permission) {
+ permissionSet[permission] = true;
+ };
+
+ $.hasPermission = function (permission) {
+ return permissionSet[permission];
+ };
+})();
+
function loadGroups() {
var groupListing = $("#group-listing");
var groupListingSrc = groupListing.attr("src");
@@ -108,10 +121,23 @@ function loadGroups() {
$(".icon .text").res_text(0.2);
};
- invokerUtil.get("/devicemgt_admin/groups/user/" + currentUser + "?start=0&rowCount=1000",
- successCallback, function (message) {
- displayErrors(message.content);
- });
+ var serviceURL;
+ if ($.hasPermission("LIST_ALL_GROUPS")) {
+ serviceURL = "/devicemgt_admin/groups?start=0&rowCount=1000";
+ } else if ($.hasPermission("LIST_GROUPS")) {
+ //Get authenticated users groups
+ serviceURL = "/devicemgt_admin/groups/user/" + currentUser + "?start=0&rowCount=1000";
+ } else {
+ $("#loading-content").remove();
+ $('#device-table').addClass('hidden');
+ $('#device-listing-status-msg').text('Permission denied.');
+ $("#device-listing-status").removeClass(' hidden');
+ return;
+ }
+
+ invokerUtil.get(serviceURL, successCallback, function (message) {
+ displayErrors(message.content);
+ });
});
}
@@ -129,6 +155,13 @@ function openCollapsedNav() {
* DOM ready functions.
*/
$(document).ready(function () {
+ var permissionList = $("#permission").data("permission");
+ for (var key in permissionList) {
+ if (permissionList.hasOwnProperty(key)) {
+ $.setPermission(key);
+ }
+ }
+
loadGroups();
//$('#device-grid').datatables_extended();
@@ -138,30 +171,36 @@ $(document).ready(function () {
});
/* for device list sorting drop down */
- $(".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();
+ }
+ }
+ );
/* 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();
- }
- });
-
- $('#nav').affix({
- offset: {
- top: $('header').height()
- }
- });
+ $(".ctrl-filter-type-switcher").popover(
+ {
+ html: true,
+ content: function () {
+ return $('#content-filter-types').html();
+ }
+ }
+ );
+
+ $('#nav').affix(
+ {
+ offset: {
+ top: $('header').height()
+ }
+ }
+ );
});
@@ -212,12 +251,14 @@ function attachEvents() {
$('#user-names').html('');
showPopup();
$("a#share-group-next-link").hide();
- var userRequest = $.ajax({
- url: "api/user/all",
- method: "GET",
- contentType: "application/json",
- accept: "application/json"
- });
+ var userRequest = $.ajax(
+ {
+ url: "api/user/all",
+ method: "GET",
+ contentType: "application/json",
+ accept: "application/json"
+ }
+ );
userRequest.done(function (data, txtStatus, jqxhr) {
var users = JSON.parse(data);
var status = jqxhr.status;
@@ -318,10 +359,9 @@ function attachEvents() {
var successCallback = function (data) {
data = JSON.parse(data);
if (data.status == 200) {
- $(modalPopupContent).html($('#edit-group-200-content').html());
- $("h4[data-groupid='" + groupId + "']").html(newGroupName);
setTimeout(function () {
hidePopup();
+ location.reload(false);
}, 2000);
} else {
displayErrors(status);
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.data-tables-extended/public/js/dataTables.extended.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.data-tables-extended/public/js/dataTables.extended.js
index 95f3befa18..bc14c19c2a 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.data-tables-extended/public/js/dataTables.extended.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.data-tables-extended/public/js/dataTables.extended.js
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ * 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
@@ -78,7 +78,8 @@ $.fn.datatables_extended = function(settings){
$( "#operation-guide" ).hide();
$( "#operation-bar" ).removeClass("hidden");
$("#operation-bar").show();
- loadOperationBar(val);
+ //TODO: Enable after adding iot operations bar
+ //loadOperationBar(val);
}
}
@@ -86,13 +87,14 @@ $.fn.datatables_extended = function(settings){
$(column).each(function () {
if ($(column.nodes()).attr('data-search')) {
- var titles = [];
+ var values = [];
column.nodes().unique().sort().each(function (d, j) {
var title = $(d).attr('data-display');
- if ($.inArray(title, titles) < 0) {
- titles.push(title);
- if (title !== undefined) {
- select.append('')
+ var value = $(d).attr('data-search');
+ if ($.inArray(value, values) < 0) {
+ values.push(value);
+ if (value !== undefined) {
+ select.append('')
}
}
});
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.theme/public/css/custom-desktop.css b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.theme/public/css/custom-desktop.css
index a0df906f0e..094ff3598a 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.theme/public/css/custom-desktop.css
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.theme/public/css/custom-desktop.css
@@ -2193,7 +2193,7 @@ input[type=number].form-control {
}
.table.list-table.grid-view .padding-reduce-on-grid-view {
- padding: 2px;
+ padding: 1px;
}
.table.list-table.grid-view .text-left-on-grid-view {
@@ -6428,7 +6428,7 @@ body.inverse .fade-edge:after {
display: none;
}
.table.list-table.grid-view .padding-reduce-on-grid-view {
- padding: 2px;
+ padding: 1px;
}
.table.list-table.grid-view .text-left-on-grid-view {
text-align: left;