diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/NotificationManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/NotificationManagementService.java index 62db9aacd8..8610aa3461 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/NotificationManagementService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/NotificationManagementService.java @@ -209,4 +209,32 @@ public interface NotificationManagementService { defaultValue = "1") @PathParam("id") @Max(45) int id); + + + @PUT + @Path("/clear-all") + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "PUT", + value = "Clear all notifications", + notes = "When a user needs to mark all the notifications as checked/read this " + + "function can be used to clear all notifications", + tags = "Device Notification Management", + extensions = { + @Extension(properties = { + @ExtensionProperty(name = Constants.SCOPE, value = "perm:notifications:mark-checked") + }) + } + ) + @ApiResponses( + value = { + @ApiResponse( + code = 200, + message = "OK"), + @ApiResponse( + code = 500, + message = "Error occurred while clearing notifications.") + } + ) + Response clearAllNotifications(); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/NotificationManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/NotificationManagementServiceImpl.java index 8e2322cd0a..8bfbb0cd7d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/NotificationManagementServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/NotificationManagementServiceImpl.java @@ -20,6 +20,7 @@ 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.context.CarbonContext; import org.wso2.carbon.device.mgt.common.PaginationRequest; import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.notification.mgt.Notification; @@ -102,4 +103,18 @@ public class NotificationManagementServiceImpl implements NotificationManagement } } + @Override + public Response clearAllNotifications() { + Notification.Status status = Notification.Status.CHECKED; + try { + int loggedinUserTenantId = CarbonContext.getThreadLocalCarbonContext() + .getTenantId(); + DeviceMgtAPIUtils.getNotificationManagementService().updateAllNotifications(status, loggedinUserTenantId); + return Response.status(Response.Status.OK).build(); + } catch (NotificationManagementException e) { + log.error("Error encountered while trying to clear all notifications.", e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } + } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/notification/mgt/NotificationManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/notification/mgt/NotificationManagementService.java index d2a0cfcf6d..2f4837a4a4 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/notification/mgt/NotificationManagementService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/notification/mgt/NotificationManagementService.java @@ -63,6 +63,16 @@ public interface NotificationManagementService { boolean updateNotificationStatus(int notificationId, Notification.Status status) throws NotificationManagementException; + /** + * Method for updating status all notifications. + * + * @return boolean status of the operation. + * @throws NotificationManagementException + * if something goes wrong while updating the Notification. + */ + boolean updateAllNotifications(Notification.Status status, int tenantID) throws + NotificationManagementException; + /** * Method to fetch all the notifications in the database. * diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/NotificationManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/NotificationManagementServiceImpl.java index 09e1eca4f9..2660ba757d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/NotificationManagementServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/NotificationManagementServiceImpl.java @@ -141,6 +141,28 @@ public class NotificationManagementServiceImpl implements NotificationManagement return true; } + @Override + public boolean updateAllNotifications(Notification.Status status, int tenantID) throws + NotificationManagementException { + if (log.isDebugEnabled()) { + log.debug("Attempting to clear all notifications"); + } + try { + NotificationManagementDAOFactory.beginTransaction(); + notificationDAO.updateAllNotifications(status, tenantID); + NotificationManagementDAOFactory.commitTransaction(); + } catch (TransactionManagementException e) { + NotificationManagementDAOFactory.rollbackTransaction(); + throw new NotificationManagementException("Error occurred while updating notification", e); + } finally { + NotificationManagementDAOFactory.closeConnection(); + } + if (log.isDebugEnabled()) { + log.debug("All notifications updated successfully."); + } + return true; + } + @Override public List getAllNotifications() throws NotificationManagementException { try { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/NotificationDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/NotificationDAO.java index f9787b4501..4c47d7c90e 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/NotificationDAO.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/NotificationDAO.java @@ -61,6 +61,15 @@ public interface NotificationDAO { int updateNotificationStatus(int notificationId, Notification.Status status) throws NotificationManagementException; + /** + * Update status of all notifications. + * + * @return returns the no of updated records. + * @throws NotificationManagementException + */ + int updateAllNotifications(Notification.Status status, int tenantID) throws + NotificationManagementException; + /** * This method is used to get all notifications based on tenant-id. * diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/AbstractNotificationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/AbstractNotificationDAOImpl.java index 9ae0a693f4..74d63ee159 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/AbstractNotificationDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/AbstractNotificationDAOImpl.java @@ -142,6 +142,28 @@ public abstract class AbstractNotificationDAOImpl implements NotificationDAO { return rows; } + @Override + public int updateAllNotifications(Notification.Status status, int tenantID) + throws NotificationManagementException { + Connection conn; + PreparedStatement stmt = null; + int rows; + try { + conn = NotificationManagementDAOFactory.getConnection(); + String sql = "UPDATE DM_NOTIFICATION SET STATUS = ? WHERE TENANT_ID= ?"; + stmt = conn.prepareStatement(sql); + stmt.setString(1, status.toString()); + stmt.setInt(2, tenantID); + rows = stmt.executeUpdate(); + } catch (Exception e) { + throw new NotificationManagementException("Error while trying to clear all " + + "notifications", e); + } finally { + NotificationDAOUtil.cleanupResources(stmt, null); + } + return rows; + } + @Override public List getAllNotifications(int tenantId) throws NotificationManagementException { Connection conn; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/notification/mgt/NotificationManagementServiceImplTests.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/notification/mgt/NotificationManagementServiceImplTests.java index 21e729293d..ad174a51e2 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/notification/mgt/NotificationManagementServiceImplTests.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/notification/mgt/NotificationManagementServiceImplTests.java @@ -216,5 +216,12 @@ public class NotificationManagementServiceImplTests { " as added no. of records."); } + @Test(dependsOnMethods = "updateStatusofAllNotification", description = "this tries to " + + "update the status of all notifications") + public void updateStatusOfAllNotifications() throws NotificationManagementException { + Assert.assertTrue(notificationManagementService.updateAllNotifications(Notification + .Status.CHECKED, -1234)); + } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/listing.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/listing.hbs index b0ca5a7e98..8d5b105188 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/listing.hbs +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/listing.hbs @@ -42,10 +42,8 @@ -
-
- No unread messages -
+
@@ -55,8 +53,13 @@ {{/zone}} {{#zone "bottomJs"}} - + {{js "js/notification-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/units/cdmf.unit.notification.listing/public/js/notification-listing.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/js/notification-listing.js index 6958dbd4f4..ce06cd5d4f 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/js/notification-listing.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/js/notification-listing.js @@ -17,6 +17,7 @@ */ var deviceMgtAPIBaseURI = "/api/device-mgt/v1.0"; +var notificationsAvailable = false; /** * Following function would execute @@ -28,29 +29,74 @@ function InitiateViewOption() { } function loadNotifications() { - var deviceListing = $("#notification-listing"); - var deviceListingSrc = deviceListing.attr("src"); - var currentUser = deviceListing.data("currentUser"); + var deviceListingNew = $("#notification-listing-new"); + var deviceListingNewSrc = deviceListingNew.attr("src"); + + var deviceListingAll = $("#notification-listing-all"); + var deviceListingAllSrc = deviceListingAll.attr("src"); + $.template( - "notification-listing", - deviceListingSrc, + "notification-listing-new", + deviceListingNewSrc, function (template) { invokerUtil.get( - deviceMgtAPIBaseURI + "/notifications", + deviceMgtAPIBaseURI + "/notifications?status=NEW", // on success function (data, textStatus, jqXHR) { if (jqXHR.status == 200 && data) { data = JSON.parse(data); - if (data["notifications"] && data["notifications"].length > 0) { + if (data["notifications"]) { + notificationsAvailable = true; var viewModel = {}; viewModel["notifications"] = data["notifications"]; viewModel["appContext"] = context; var content = template(viewModel); - $("#ast-container").html(content); + $("#ast-container").append(content); var settings = { "sorting" : false }; $("#unread-notifications").datatables_extended(settings); + + /** + * append advance operations to list table toolbar + */ + $('#unread-notifications_wrapper').find('.dataTablesTop' + + ' .dataTables_toolbar').html( + "Clear All" + + " Notifications" + ); + } + } + }, + // on error + function (jqXHR) { + console.log(jqXHR.status); + } + ); + } + ); + + $.template( + "notification-listing-all", + deviceListingAllSrc, + function (template) { + invokerUtil.get( + deviceMgtAPIBaseURI + "/notifications", + // on success + function (data, textStatus, jqXHR) { + if (jqXHR.status == 200 && data) { + data = JSON.parse(data); + if (data["notifications"]) { + notificationsAvailable = true; + var viewModel = {}; + viewModel["notifications"] = data["notifications"]; + viewModel["appContext"] = context; + var content = template(viewModel); + $("#ast-container").append(content); + var settings = { + "sorting" : false + }; $("#all-notifications").datatables_extended(settings); } } @@ -68,16 +114,9 @@ function loadNotifications() { function showAdvanceOperation(operation, button) { $(button).addClass('selected'); $(button).siblings().removeClass('selected'); - if ($(button).attr("id") == 'allNotifications') { - $("#noNotificationtxt").html('You do not have any notifications '); - } else if ($(button).attr("id") == 'unReadNotifications') { - $("#noNotificationtxt").html('You do not have any unread notifications '); - } else { - $("#noNotificationtxt").html('You do not have any unread notifications '); - } var hiddenOperation = ".wr-hidden-operations-content > div"; - $(hiddenOperation + '[data-operation="' + operation + '"]').show(); $(hiddenOperation + '[data-operation="' + operation + '"]').siblings().hide(); + $(hiddenOperation + '[data-operation="' + operation + '"]').show(); } $(document).ready(function () { @@ -119,4 +158,40 @@ $(document).ready(function () { } ); }); + + if(notificationsAvailable) { + $("#notification-clear-button").removeClass("hidden"); + } + + $("#ast-container").on("click", ".btn", function (e) { + + var clickEvent = $(this).data('click-event'); + + if(clickEvent == "clear-notification"){ + e.preventDefault(); + var markAsReadNotificationsAPI = "/api/device-mgt/v1.0/notifications/clear-all"; + var messageSideBar = ".sidebar-messages"; + var clickEvent = $(this).data('click-event'); + var eventHandler = $(this); + + invokerUtil.put( + markAsReadNotificationsAPI, + null, + function (data) { + $('.message').remove(); + $("#notification-bubble").html(0); + var undreadNotifications = $("#unread-notifications"); + undreadNotifications.find("tbody").empty(); + undreadNotifications.find("tbody").append("No data" + + " available in table"); + }, function () { + var content = "
  • Warning

    " + + "

    Unexpected error occurred while loading notification. Please refresh the page and" + + " try again

  • "; + $(messageSideBar).html(content); + } + ); + } + + }); }); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/templates/notification-listing-all.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/templates/notification-listing-all.hbs new file mode 100644 index 0000000000..b5a6adab35 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/templates/notification-listing-all.hbs @@ -0,0 +1,42 @@ + +
    +
    +
    + + + + + + + + + + + {{#if notifications}} + {{#each notifications}} + + + + + {{/each}} + {{else}} +
    + You do not have any notifications +
    + {{/if}} +
    + +
    DescriptionAction
    {{description}} + + + + + + +
    +
    +
    +
    + \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/templates/notification-listing-new.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/templates/notification-listing-new.hbs new file mode 100644 index 0000000000..8bdc4a5276 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/templates/notification-listing-new.hbs @@ -0,0 +1,44 @@ + +
    +
    +
    + + + + + + + + + + + {{#if notifications}} + {{#each notifications}} + {{#equal "NEW" status }} + + + + + {{/equal}} + {{/each}} + {{else}} +
    + You do not have any unread notifications +
    + {{/if}} +
    + +
    DescriptionAction
    {{description}} + + + + + + +
    +
    +
    +
    + \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/templates/notification-listing.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/templates/notification-listing.hbs deleted file mode 100644 index cd1f8196ce..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/templates/notification-listing.hbs +++ /dev/null @@ -1,75 +0,0 @@ - -
    -
    -
    - - - - - - - - - - - {{#each notifications}} - {{#equal "NEW" status }} - - - - - {{/equal}} - {{/each}} -
    - -
    DescriptionAction
    {{description}} - - - - - - -
    -
    -
    -
    - - - -
    -
    -
    - - - - - - - - - - - {{#each notifications}} - - - - - {{/each}} -
    - -
    DescriptionAction
    {{description}} - - - - - - -
    -
    -
    -
    - \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.navbar.nav-menu/nav-menu.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.navbar.nav-menu/nav-menu.hbs index 2ec63e3b73..886bb4ccbe 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.navbar.nav-menu/nav-menu.hbs +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.navbar.nav-menu/nav-menu.hbs @@ -39,8 +39,8 @@ {{/if}} {{#unless isCloud}} - {{#if permissions.VIEW_DASHBOARD}} - - {{/if}} + {{/if}} {{/unless}} @@ -126,12 +126,12 @@ {{/if}} {{/if}} {{#if permissions.IS_ADMIN}} -
  • - - - Device Locations - -
  • +
  • + + + Device Locations + +
  • {{/if}} @@ -154,11 +154,14 @@ {{/zone}} {{#zone "sidePanes"}} - {{/zone}} {{#zone "bottomJs"}} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.navbar.nav-menu/public/js/nav-menu.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.navbar.nav-menu/public/js/nav-menu.js index 4f10b1bd39..0e4fb7b580 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.navbar.nav-menu/public/js/nav-menu.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.navbar.nav-menu/public/js/nav-menu.js @@ -106,7 +106,7 @@ function loadNewNotifications() { $(messageSideBar).html( "

    No New Notifications

    " + "
    " + - "Check this section for error notifications
    related to device operations" + + "Check this section for error notifications
    related to device operations" + "
    " ); } @@ -425,18 +425,24 @@ $.fn.collapse_nav_sub = function () { $(document).ready(function () { loadNotificationsPanel(); - $("#right-sidebar").on("click", ".new-notification", function () { - var notificationId = $(this).data("id"); + $("#right-sidebar").on("click", ".new-notification", function (e) { + e.preventDefault(); + var notificationId = $(this).parents('li').find('h4 a').data('id'); var redirectUrl = $(this).data("url"); var markAsReadNotificationsAPI = "/api/device-mgt/v1.0/notifications/" + notificationId + "/mark-checked"; var messageSideBar = ".sidebar-messages"; + var clickEvent = $(this).data('click-event'); + var eventHandler = $(this); invokerUtil.put( markAsReadNotificationsAPI, null, function (data) { data = JSON.parse(data); - if (data.statusCode == responseCodes["ACCEPTED"]) { + if(clickEvent && clickEvent === 'remove-notification'){ + $(eventHandler).parents('li').slideUp(); + $("#notification-bubble").html(parseInt($("#notification-bubble").text()) - 1); + }else { location.href = redirectUrl; } }, function () { @@ -448,6 +454,34 @@ $(document).ready(function () { ); }); + $("#right-sidebar").on("click", ".btn", function (e) { + + var clickEvent = $(this).data('click-event'); + + if(clickEvent == "clear-notification"){ + e.preventDefault(); + var markAsReadNotificationsAPI = "/api/device-mgt/v1.0/notifications/clear-all"; + var messageSideBar = ".sidebar-messages"; + var clickEvent = $(this).data('click-event'); + var eventHandler = $(this); + + invokerUtil.put( + markAsReadNotificationsAPI, + null, + function (data) { + $('.message').remove(); + $("#notification-bubble").html(0); + }, function () { + var content = "
  • Warning

    " + + "

    Unexpected error occurred while loading notification. Please refresh the page and" + + " try again

  • "; + $(messageSideBar).html(content); + } + ); + } + + }); + if (typeof $.fn.collapse == 'function') { $('.navbar-collapse.tiles').on('shown.bs.collapse', function () { $(this).collapse_nav_sub(); @@ -456,59 +490,59 @@ $(document).ready(function () { }); function statisticLoad(redirectUrl) { - var contentType = "application/json"; - var defaultStatusClasses = "fw fw-stack-1x"; - var content = $("#statistic-response-template").find(".content"); - var title = content.find("#title"); - var statusIcon = content.find("#status-icon"); - - $.ajax({ - url: redirectUrl, - type: "GET", - success: function () { - window.location.href = redirectUrl; - }, - error: function() { - var urix = backendEndBasePath + "/admin/publish-artifact/deploy/device_management"; - var device = {}; - invokerUtil.post(urix, device, function (data) { - title.html("Deploying statistic artifacts. Please wait..."); - statusIcon.attr("class", defaultStatusClasses + " fw-check"); - $(modalPopupContent).html(content.html()); - showPopup(); - poll(redirectUrl); - }, function (jqXHR) { - title.html("Failed to deploy artifacts, Please contact administrator."); - statusIcon.attr("class", defaultStatusClasses + " fw-error"); - $(modalPopupContent).html(content.html()); - showPopup(); - }, contentType); - } - }); + var contentType = "application/json"; + var defaultStatusClasses = "fw fw-stack-1x"; + var content = $("#statistic-response-template").find(".content"); + var title = content.find("#title"); + var statusIcon = content.find("#status-icon"); + + $.ajax({ + url: redirectUrl, + type: "GET", + success: function () { + window.location.href = redirectUrl; + }, + error: function() { + var urix = backendEndBasePath + "/admin/publish-artifact/deploy/device_management"; + var device = {}; + invokerUtil.post(urix, device, function (data) { + title.html("Deploying statistic artifacts. Please wait..."); + statusIcon.attr("class", defaultStatusClasses + " fw-check"); + $(modalPopupContent).html(content.html()); + showPopup(); + poll(redirectUrl); + }, function (jqXHR) { + title.html("Failed to deploy artifacts, Please contact administrator."); + statusIcon.attr("class", defaultStatusClasses + " fw-error"); + $(modalPopupContent).html(content.html()); + showPopup(); + }, contentType); + } + }); } var pollingCount = 15; function poll(portalUrl) { - var content = $("#statistic-response-template").find(".content"); - var title = content.find("#title"); - var defaultStatusClasses = "fw fw-stack-1x"; - var statusIcon = content.find("#status-icon"); - $.ajax({ - url: portalUrl, - type: "GET", - success: function (data) { - window.location.href = portalUrl; - }, - dataType: "json", - error: setTimeout(function () { - pollingCount = pollingCount - 1; - if (pollingCount > 0) { - poll(portalUrl); - } else { - window.location.href = portalUrl; - } - }, 5000), - timeout: 5000 - }); + var content = $("#statistic-response-template").find(".content"); + var title = content.find("#title"); + var defaultStatusClasses = "fw fw-stack-1x"; + var statusIcon = content.find("#status-icon"); + $.ajax({ + url: portalUrl, + type: "GET", + success: function (data) { + window.location.href = portalUrl; + }, + dataType: "json", + error: setTimeout(function () { + pollingCount = pollingCount - 1; + if (pollingCount > 0) { + poll(portalUrl); + } else { + window.location.href = portalUrl; + } + }, 5000), + timeout: 5000 + }); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.navbar.nav-menu/public/templates/notifications.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.navbar.nav-menu/public/templates/notifications.hbs index e209e093ed..21fbb9b0b0 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.navbar.nav-menu/public/templates/notifications.hbs +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.navbar.nav-menu/public/templates/notifications.hbs @@ -1,14 +1,27 @@ {{#each notifications}}
  • -

    - - - {{deviceType}} : {{deviceName}} - -

    -

    {{description}}

    + + + +
    +

    + + + {{deviceType}} : {{deviceName}} + +

    +

    {{description}}

    +
    + + + + + + + +
  • {{/each}} \ No newline at end of file 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 6f917a9eb5..b661f08b22 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 @@ -1178,8 +1178,12 @@ header .fw-user:before{ right: 0; } +.all-notifications{ + margin-bottom: 10px !important; +} + .sidebar-wrapper.toggled a.btn{ - margin-bottom: 70px; + margin-bottom: 70px; } .sidebar-wrapper-animation-fix {