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 37894ac2a3e..9ad1b2001b3 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 20edeaf1906..e890993cd99 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 @@ - - - -
-

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 8e19a542d52..545c12eee0b 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 = '' + ''; + html += '' + + '' + + ''; + html += '' + + '' + + '' + + ''; } 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 b4f80468ed5..2e9690071bd 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 2ba4f0cd355..a2d95a3c4e8 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 95f3befa188..bc14c19c2af 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 a0df906f0e5..094ff3598ad 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;