Rasika Perera 8 years ago
commit 625dd1a887

@ -37,6 +37,7 @@
</span> </span>
View View
</a> </a>
{{#if permissions.ENROLL_DEVICE)}}
<a href="javascript:toggleEnrollment()"> <a href="javascript:toggleEnrollment()">
<span class="fw-stack"> <span class="fw-stack">
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
@ -44,6 +45,7 @@
</span> </span>
Add Add
</a> </a>
{{/if}}
</span> </span>
</div> </div>
</div> </div>

@ -29,6 +29,9 @@ function onRequest(context) {
permissions.ADD_POLICY = userModule.isAuthorized("/permission/admin/device-mgt/policies/manage"); permissions.ADD_POLICY = userModule.isAuthorized("/permission/admin/device-mgt/policies/manage");
permissions.ADD_ROLE = userModule.isAuthorized("/permission/admin/device-mgt/roles/manage"); permissions.ADD_ROLE = userModule.isAuthorized("/permission/admin/device-mgt/roles/manage");
permissions.ADD_USER = userModule.isAuthorized("/permission/admin/device-mgt/users/manage"); permissions.ADD_USER = userModule.isAuthorized("/permission/admin/device-mgt/users/manage");
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/enroll/ios") | userModule.isAuthorized("/permission/admin/devices/enroll/android") | userModule.isAuthorized("/permission/admin/device-mgt/devices/enroll/windows") ){
permissions.ENROLL_DEVICE = true;
}
viewModel.permissions = permissions; viewModel.permissions = permissions;
//TODO: Move enrollment URL into app-conf.json //TODO: Move enrollment URL into app-conf.json
viewModel.enrollmentURL = mdmProps.generalConfig.host + mdmProps.enrollmentDir; viewModel.enrollmentURL = mdmProps.generalConfig.host + mdmProps.enrollmentDir;

@ -15,6 +15,7 @@
specific language governing permissions and limitations specific language governing permissions and limitations
under the License. under the License.
}} }}
{{#zone "content"}} {{#zone "content"}}
<div id = "operations-mod" data-permissions="{{permissions}}"> <div id = "operations-mod" data-permissions="{{permissions}}">
{{unit "mdm.unit.device.operation-mod"}} {{unit "mdm.unit.device.operation-mod"}}

@ -17,55 +17,53 @@
*/ */
function onRequest(context) { function onRequest(context) {
var log = new Log("mdm.unit.device.operation-bar"); // var log = new Log("mdm.unit.device.operation-bar");
var userModule = require("/app/modules/business-controllers/user.js")["userModule"]; var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
var deviceType = context.uriParams.deviceType;
var viewModel = {}; var viewModel = {};
var permissions = []; var permissions = {};
// permission checks // adding android operations related permission checks
if (deviceType == "android") { permissions["android"] = [];
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/ring")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/ring")) {
permissions.push("DEVICE_RING"); permissions["android"].push("DEVICE_RING");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/lock-devices")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/lock-devices")) {
permissions.push("DEVICE_LOCK"); permissions["android"].push("DEVICE_LOCK");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/unlock-devices")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/unlock-devices")) {
permissions.push("DEVICE_UNLOCK"); permissions["android"].push("DEVICE_UNLOCK");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/location")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/location")) {
permissions.push("DEVICE_LOCATION"); permissions["android"].push("DEVICE_LOCATION");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/clear-password")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/clear-password")) {
permissions.push("CLEAR_PASSWORD"); permissions["android"].push("CLEAR_PASSWORD");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/reboot")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/reboot")) {
permissions.push("DEVICE_REBOOT"); permissions["android"].push("DEVICE_REBOOT");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/upgrade-firmware")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/upgrade-firmware")) {
permissions.push("UPGRADE_FIRMWARE"); permissions["android"].push("UPGRADE_FIRMWARE");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/mute")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/mute")) {
permissions.push("DEVICE_MUTE"); permissions["android"].push("DEVICE_MUTE");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/send-notification")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/send-notification")) {
permissions.push("NOTIFICATION"); permissions["android"].push("NOTIFICATION");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/change-lock-code")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/change-lock-code")) {
permissions.push("CHANGE_LOCK_CODE"); permissions["android"].push("CHANGE_LOCK_CODE");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/enterprise-wipe")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/enterprise-wipe")) {
permissions.push("ENTERPRISE_WIPE"); permissions["android"].push("ENTERPRISE_WIPE");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/wipe")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/wipe")) {
permissions.push("WIPE_DATA"); permissions["android"].push("WIPE_DATA");
} }
} else if (deviceType == "ios") {
} else if (deviceType == "windows") { // adding ios operations related permission checks
} // adding windows operations related permission checks
viewModel["permissions"] = stringify(permissions); viewModel["permissions"] = stringify(permissions);

@ -108,21 +108,21 @@ function loadOperationBar(deviceType) {
//var serviceURL = "/mdm-admin/features/" + platformType; //var serviceURL = "/mdm-admin/features/" + platformType;
var serviceURL = "/api/device-mgt/v1.0/devices/" + platformType + "/*/features"; var serviceURL = "/api/device-mgt/v1.0/devices/" + platformType + "/*/features";
var successCallback = function (data) { var successCallback = function (data) {
var permittedOpps = []; var permittedOperations = [];
var i; var i;
var permissionList = $("#operations-mod").data("permissions"); var permissionList = $("#operations-mod").data("permissions");
var totalFeatures = JSON.parse(data); var totalFeatures = JSON.parse(data);
for (i = 0; i < permissionList.length; i++) { for (i = 0; i < permissionList[deviceType].length; i++) {
var j; var j;
for (j = 0; j < totalFeatures.length; j++) { for (j = 0; j < totalFeatures.length; j++) {
if (permissionList[i] == totalFeatures[j]["code"]) { if (permissionList[deviceType][i] == totalFeatures[j]["code"]) {
permittedOpps.push(totalFeatures[j]); permittedOperations.push(totalFeatures[j]);
} }
} }
} }
var viewModel = {}; var viewModel = {};
permittedOpps = permittedOpps.filter(function (current) { permittedOperations = permittedOperations.filter(function (current) {
var iconName; var iconName;
switch (deviceType) { switch (deviceType) {
case platformTypeConstants.ANDROID: case platformTypeConstants.ANDROID:
@ -143,7 +143,7 @@ function loadOperationBar(deviceType) {
} }
}); });
viewModel.features = permittedOpps; viewModel.features = permittedOperations;
var content = template(viewModel); var content = template(viewModel);
$(".wr-operations").html(content); $(".wr-operations").html(content);
}; };

@ -108,14 +108,11 @@
<h4> <h4>
{{#equal code "WIPE_DATA"}} {{#equal code "WIPE_DATA"}}
{{#equal type "android"}} {{#equal type "android"}}
Enter PIN code (Optional - This is required only if the device type Enter PIN code (Optional - This is required only if the device type is BYOD).
is BYOD).
<br><br> <br><br>
<div> <div>
<input type="password" <input type="password" class="form-control modal-input operationDataKeys" id="pin"
class="form-control modal-input operationDataKeys" data-key="pin">
id="pin" data-key="pin"></textarea>
</div> </div>
<br> <br>
{{/equal}} {{/equal}}
@ -123,25 +120,114 @@
{{#equal code "NOTIFICATION"}} {{#equal code "NOTIFICATION"}}
Type your message below. Type your message below.
<br><br> <br><br>
<div id="notification-error-msg" class="alert alert-danger hidden" role="alert">
<div id="notification-error-msg" class="alert alert-danger hidden"
role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
<div> <div class="form-group">
<input class="form-control modal-input operationDataKeys"
id="messageTitle" data-key="messageTitle" placeholder="Title here..." />
</div>
<div class="form-group">
<textarea class="form-control modal-input operationDataKeys" <textarea class="form-control modal-input operationDataKeys"
id="message" data-key="message"></textarea> id="messageText" data-key="messageText" placeholder="Message here..."></textarea>
</div> </div>
<br> <br>
{{/equal}} {{/equal}}
{{#equal code "CHANGE_LOCK_CODE"}} {{#equal code "CHANGE_LOCK_CODE"}}
Type new lock-code below. Type new lock-code below.
<br><br> <br><br>
<input type="password" <input type="password" class="form-control modal-input operationDataKeys" id="lockcode"
class="form-control modal-input operationDataKeys" id="lockcode"
data-key="lockCode" placeholder="Enter Lockcode"/> data-key="lockCode" placeholder="Enter Lockcode"/>
<br> <br>
{{/equal}} {{/equal}}
{{#equal code "DEVICE_LOCK"}}
{{#equal type "android"}}
Type your message to be shown in the lock screen (Optional).
<br><br>
<div>
<textarea class="form-control modal-input operationDataKeys" id="lock-message"
data-key="lock-message"></textarea>
</div>
<br>
<label class="wr-input-control checkbox">
<input id="hard-lock" type="checkbox" class="form-control operationDataKeys"
data-key="hard-lock"/>
<span class="helper" title="Once it enables, device will be blocked permanently.">
&nbsp;&nbsp;&nbsp;Enable Permanent Lock
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span>
</label>
{{/equal}}
{{/equal}}
{{#equal code "UPGRADE_FIRMWARE"}}
{{#equal type "android"}}
Enter firmware upgrade scheduling information.
<br><br>
<label class="wr-input-control checkbox">
<input id="instant-upgrade" type="checkbox" class="form-control operationDataKeys"
data-key="instant-upgrade"/>
<span class="helper"
title="Once enabled, device firmware upgrade process will start instantly.">
&nbsp;&nbsp;&nbsp;Instant Upgrade
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span>
</label>
<br><br>
<div class='input-group date' id='dateTimePicker'>
Enter the date and time to schedule firmware upgrade.
<br><br>
<div id="firmware-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
<input type='text' class="form-control modal-input operationDataKeys"
style="z-index : 900;" name="daterange" id="schedule" data-key="schedule"/>
</div>
<br><br>
<div class='wr-input-control' id='firmwareServerInfo'>
Enter firmware upgrade server URL (ie. http://abc.com or http://abc.com/ota)
(Optional).
<br><br>
<input type='text' class="form-control modal-input operationDataKeys" id="server"
data-key="server"/>
</div>
<script type="text/javascript">
$(function () {
$('.modalpopup-bg').css('z-index', '1000');
$('.modalpopup-container').css('z-index', '1200');
$('input[name="daterange"]').daterangepicker({
singleDatePicker: true,
timePicker: true,
showDropdowns: true,
timePickerIncrement: 1,
locale: {
format: 'MM-DD-YYYY hh:mm a'
}
});
});
$('#instant-upgrade').change(function () {
if ($(this).is(":checked")) {
$('#dateTimePicker').addClass("hidden");
$("#schedule").val('');
} else {
$('#dateTimePicker').removeClass("hidden");
$('input[name="daterange"]').daterangepicker({
singleDatePicker: true,
timePicker: true,
showDropdowns: true,
timePickerIncrement: 1,
locale: {
format: 'MM-DD-YYYY hh:mm a'
}
});
}
});
</script>
<br>
{{/equal}}
{{/equal}}
<br><br>
Do you want to perform this operation on selected device(s) ? Do you want to perform this operation on selected device(s) ?
<br> <br>
</h4> </h4>

@ -2,26 +2,16 @@
{{unit "cdmf.unit.lib.qrcode"}} {{unit "cdmf.unit.lib.qrcode"}}
{{unit "mdm.unit.device.qr-modal"}} {{unit "mdm.unit.device.qr-modal"}}
{{#zone "contentTitle"}} {{#zone "content"}}
{{#if isAuthorized}} {{#if isAuthorized}}
<div class="row wr-device-board"> <h1 class="page-sub-title device-id device-select" data-deviceid="{{device.deviceIdentifier}}" data-type="{{device.type}}">
<div class="col-lg-12 wr-secondary-bar">
<label class="device-id device-select" data-deviceid="{{device.deviceIdentifier}}"
data-type="{{device.type}}">
Device {{device.name}} Device {{device.name}}
{{#if device.viewModel.model}} {{#if device.viewModel.model}}
<span class="lbl-device"> <span class="lbl-device">
( {{device.viewModel.vendor}} {{device.viewModel.model}} ) ( {{device.viewModel.vendor}} {{device.viewModel.model}} )
</span> </span>
{{/if}} {{/if}}
</label> </h1>
</div>
</div>
{{/if}}
{{/zone}}
{{#zone "content"}}
{{#if isAuthorized}}
<div class="row no-gutter add-padding-5x add-margin-top-5x" style="border: 1px solid #e4e4e4;"> <div class="row no-gutter add-padding-5x add-margin-top-5x" style="border: 1px solid #e4e4e4;">
<div class="media"> <div class="media">
<div class="media-left media-middle asset-image col-xs-2 col-sm-2 col-md-2 col-lg-2"> <div class="media-left media-middle asset-image col-xs-2 col-sm-2 col-md-2 col-lg-2">
@ -85,66 +75,63 @@
<div class="media tab-responsive"> <div class="media tab-responsive">
<div class="media-left col-xs-1 col-sm-1 col-md-2 col-lg-2 hidden-xs"> <div class="media-left col-xs-1 col-sm-1 col-md-2 col-lg-2 hidden-xs">
<ul class="list-group nav nav-pills nav-stacked" role="tablist"> <ul class="list-group nav nav-pills nav-stacked" role="tablist">
<li class="list-group-item active"> <li role="presentation" class="list-group-item active">
<a href="#device_details" role="tab" data-toggle="tab" aria-controls="device_details"> <a href="#device_details_tab" role="tab" data-toggle="tab" aria-controls="device_details_tab">
<i class="icon fw fw-mobile"></i>Device Details <i class="icon fw fw-mobile"></i><span class="hidden-sm">Device Details</span>
</a> </a>
</li> </li>
<li class="list-group-item"> <li role="presentation" class="list-group-item">
<a href="#policy_compliance" role="tab" data-toggle="tab" aria-controls="policy_compliance"> <a href="#policy_compliance_tab" role="tab" data-toggle="tab" aria-controls="policy_compliance_tab">
<i class="icon fw fw-policy"></i>Policy Compliance <i class="icon fw fw-policy"></i><span class="hidden-sm">Policy Compliance</span>
</a> </a>
</li> </li>
<li class="list-group-item"> <li role="presentation" class="list-group-item">
<a href="#device_location" role="tab" data-toggle="tab" <a href="#device_location_tab" role="tab" data-toggle="tab"
data-lat="{{device.viewModel.location.latitude}}" data-lat="{{device.viewModel.location.latitude}}"
data-long="{{device.viewModel.location.longitude}}" data-long="{{device.viewModel.location.longitude}}"
aria-controls="device_location"> aria-controls="device_location_tab">
<i class="icon fw fw-map-location"></i> Device Location <i class="icon fw fw-map-location"></i><span class="hidden-sm">Device Location</span>
</a> </a>
</li> </li>
<li class="list-group-item"> <li role="presentation" class="list-group-item">
<a href="#installed_applications" role="tab" data-toggle="tab" aria-controls="installed_applications"> <a href="#installed_applications_tab" role="tab" data-toggle="tab" aria-controls="installed_applications_tab">
<i class="icon fw fw-application"></i> Installed Applications <i class="icon fw fw-application"></i><span class="hidden-sm">Installed Applications</span>
</a> </a>
</li> </li>
<li class="list-group-item"> <li role="presentation" class="list-group-item">
<a href="#event_log" role="tab" data-toggle="tab" aria-controls="event_log"> <a href="#event_log_tab" role="tab" data-toggle="tab" aria-controls="event_log_tab">
<i class="icon fw fw-text"></i> Operations Log <i class="icon fw fw-text"></i><span class="hidden-sm">Operations Log</span>
</a> </a>
</li> </li>
</ul> </ul>
</div> </div>
<div class="media-body remove-padding-xs">
{{#defineZone "device-detail-properties"}} {{#defineZone "device-detail-properties"}}
<div class="media-body add-padding-left-5x remove-padding-xs"> <div class="media-body add-padding-left-5x remove-padding-xs">
<div class="panel-group tab-content" id="tabs"> <div class="panel-group tab-content remove-padding" id="tabs" role="tablist" aria-multiselectable="true">
<div class="arrow-left hidden-xs"></div> <div class="arrow-left hidden-xs"></div>
<div class="panel panel-default tab-pane fade in active fade-in-xs visible-block" <div class="panel panel-default" role="tabpanel" id="device_details_tab">
id="device_details" role="tabpanel" <div class="panel-heading visible-xs collapsed" id="device_details">
aria-labelledby="device_details">
<div class="panel-heading dropup visible-xs" role="tab" id="tab1" data-toggle="collapse"
data-target="#tabContent1" aria-expanded="false" data-parent="#tabs">
<h4 class="panel-title"> <h4 class="panel-title">
<i class="fw fw-map-location fw-2x"></i> <a role="button" data-toggle="collapse" data-parent="#tabs" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
<i class="fw fw-mobile fw-2x"></i>
Device Details Device Details
<i class="caret-updown fw fw-sort-up"></i> <i class="caret-updown fw fw-down"></i>
</a>
</h4> </h4>
</div> </div>
<div class="panel-heading display-none-xs">Device Details</div> <div class="panel-heading display-none-xs">Device Details</div>
<div id="loading-content" class="col-centered"> <div id="loading-content" class="col-centered">
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;<i class="fw fw-settings fw-spin fw-2x"></i>&nbsp;&nbsp;&nbsp;Loading Device Details . . .<br> <i class="fw fw-settings fw-spin fw-2x"></i> Loading Device Details...
</div> </div>
<div class="panel-body collapse display-block-sm display-block-md display-block-lg in" <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="device_details">
id="tabContent1"> <div class="panel-body ">
<div class="device-detail-body hidden"> <div class="device-detail-body">
<!-- device summary --> <!-- device summary -->
{{#equal device.type "windows"}} {{#equal device.type "windows"}}
<div class="panel-body"> <div class="message message-info">
Not available yet <h4 class="remove-margin"><i class="icon fw fw-info"></i>Not available yet</h4>
</div> </div>
<br class="c-both"/>
{{/equal}} {{/equal}}
{{#if device.viewModel.BatteryLevel}} {{#if device.viewModel.BatteryLevel}}
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
@ -218,139 +205,137 @@
</div> </div>
</div> </div>
</div> </div>
<div class="panel panel-default tab-pane fade fade-in-xs visible-block" </div>
id="policy_compliance"> <div class="panel panel-default visible-xs-block" role="tabpanel" id="policy_compliance_tab">
<div class="panel-heading dropdown visible-xs collapsed" role="tab" id="tab2" <div class="panel-heading visible-xs collapsed" id="policy_compliance">
data-toggle="collapse" data-target="#tabContent2" aria-expanded="false" <h4 class="panel-title">
data-parent="#tabs"> <a role="button" data-toggle="collapse" data-parent="#tabs" href="#collapseTwo" aria-expanded="true" aria-controls="collapseTwo">
<h4 class="panel-title"><i class="fw fw-text fw-2x"></i> <i class="fw fw-policy fw-2x"></i>
Policy Compliance Policy Compliance
<i class="caret-updown fw fw-sort-down"></i> <i class="caret-updown fw fw-down"></i>
</a>
</h4> </h4>
</div> </div>
<div class="panel-heading display-none-xs"> <div class="panel-heading display-none-xs">
Policy Compliance Policy Compliance
&nbsp;&nbsp;
<span> <span>
<a href="#" id="refresh-policy"> <a href="#" id="refresh-policy">
<i class="fw fw-refresh"></i> <i class="fw fw-refresh"></i>
</a> </a>
</span> </span>
</div> </div>
<div id="collapseTwo" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="policy_compliance">
<div class="panel-body ">
<span class="visible-xs add-padding-2x text-right">
<a href="#" id="refresh-policy">
<i class="fw fw-refresh"></i>
</a>
</span>
<div id="policy-spinner" class="wr-advance-operations-init hidden"> <div id="policy-spinner" class="wr-advance-operations-init hidden">
<br><br> <i class="fw fw-settings fw-spin fw-2x"></i> Loading Policy Compliance...
&nbsp;&nbsp;&nbsp;&nbsp;
<i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;&nbsp;&nbsp;
Loading Policy Compliance . . .
<br>
<br>
</div> </div>
<div class="panel-body collapse display-block-sm display-block-md display-block-lg" id="tabContent2">
<div id="policy-list-container"> <div id="policy-list-container">
<div class="panel-body"> <div class="message message-info">
There is no active policy for this device. <h4 class="remove-margin"><i class="icon fw fw-info"></i>There is no active policy for this device.</h4>
</div>
</div> </div>
<br class="c-both"/>
</div> </div>
</div> </div>
</div> </div>
<div class="panel panel-default tab-pane fade fade-in-xs visible-block" <div class="panel panel-default visible-xs-block" role="tabpanel" id="device_location_tab">
id="device_location"> <div class="panel-heading visible-xs collapsed" id="device_location">
<div class="panel-heading dropdown visible-xs collapsed" role="tab" id="tab3"
data-toggle="collapse" data-target="#tabContent3" aria-expanded="false"
data-parent="#tabs">
<h4 class="panel-title"> <h4 class="panel-title">
<i class="fw fw-text fw-2x"></i> <a role="button" data-toggle="collapse" data-parent="#tabs" href="#collapseThree" aria-expanded="true" aria-controls="collapseThree">
<i class="fw fw-map-location fw-2x"></i>
Device Location Device Location
<i class="caret-updown fw fw-sort-down"></i> <i class="caret-updown fw fw-down"></i>
</a>
</h4> </h4>
</div> </div>
<div class="panel-heading display-none-xs">Device Location</div> <div class="panel-heading display-none-xs">Device Location</div>
<div class="panel-body collapse display-block-sm display-block-md display-block-lg" <div id="collapseThree" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="device_location">
id="tabContent3"> <div class="panel-body">
<div id="map-error" class="message message-danger">
<h4 class="remove-margin"><i class="icon fw fw-error"></i>Device location cannot be retrieved.</h4>
</div>
<div id="device-location" <div id="device-location"
data-lat="{{device.viewModel.location.latitude}}" data-lat="{{device.viewModel.location.latitude}}"
data-long="{{device.viewModel.location.longitude}}" data-long="{{device.viewModel.location.longitude}}">
class="panel-body">
</div> </div>
<div id="map-error" class="panel-body" style="margin: auto;">
Device location cannot be retrieved.
</div> </div>
<br class="c-both"/>
</div> </div>
</div> </div>
<div class="panel panel-default tab-pane fade fade-in-xs visible-block" <div class="panel panel-default visible-xs-block" role="tabpanel" id="installed_applications_tab">
id="installed_applications"> <div class="panel-heading visible-xs collapsed" id="installed_applications">
<div class="panel-heading dropdown visible-xs collapsed" role="tab" id="tab4"
data-toggle="collapse" data-target="#tabContent4" aria-expanded="false"
data-parent="#tabs">
<h4 class="panel-title"> <h4 class="panel-title">
<i class="fw fw-text fw-2x"></i> <a role="button" data-toggle="collapse" data-parent="#tabs" href="#collapseFour" aria-expanded="true" aria-controls="collapseFour">
<i class="fw fw-application fw-2x"></i>
Installed Applications Installed Applications
<i class="caret-updown fw fw-sort-down"></i></h4> <i class="caret-updown fw fw-down"></i>
</a>
</h4>
</div> </div>
<div class="panel-heading display-none-xs"> <div class="panel-heading display-none-xs">
Installed Applications Installed Applications
&nbsp;&nbsp;
<span> <span>
<a href="#" id="refresh-apps"> <a href="#" id="refresh-apps">
<i class="fw fw-refresh"></i> <i class="fw fw-refresh"></i>
</a> </a>
</span> </span>
</div> </div>
<div class="panel-body collapse display-block-sm display-block-md display-block-lg" <div id="collapseFour" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="installed_applications">
id="tabContent4"> <div class="panel-body ">
<span class="visible-xs add-padding-2x text-right">
<a href="#" id="refresh-apps">
<i class="fw fw-refresh"></i>
</a>
</span>
<div id="apps-spinner" class="wr-advance-operations-init hidden"> <div id="apps-spinner" class="wr-advance-operations-init hidden">
<br><br> <i class="fw fw-settings fw-spin fw-2x"></i> Loading Applications List...
&nbsp;&nbsp;&nbsp;&nbsp;<i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;&nbsp;&nbsp;Loading Applications List . . .<br><br>
</div> </div>
<div id="applications-list-container"> <div id="applications-list-container">
<div class="panel-body"> <div class="message message-info">
<br> <h4><i class="icon fw fw-info"></i>No applications found.</h4>
<p class="fw-warning"> <p>Please try refreshing the list in a while.</p>
No applications found. please try refreshing the list in a while.
<p>
</div> </div>
<br class="c-both"/>
</div> </div>
</div> </div>
</div> </div>
<div class="panel panel-default tab-pane fade fade-in-xs visible-block" id="event_log"> </div>
<div class="panel-heading dropdown visible-xs collapsed" role="tab" id="tab5" <div class="panel panel-default visible-xs-block" role="tabpanel" id="event_log_tab">
data-toggle="collapse" data-target="#tabContent5" aria-expanded="false" <div class="panel-heading visible-xs collapsed" id="event_log">
data-parent="#tabs">
<h4 class="panel-title"> <h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#tabs" href="#collapseFive" aria-expanded="true" aria-controls="collapseFive">
<i class="fw fw-text fw-2x"></i> <i class="fw fw-text fw-2x"></i>
Operations Logs Operations Logs
<i class="caret-updown fw fw-sort-down"></i> <i class="caret-updown fw fw-down"></i>
</a>
</h4> </h4>
</div> </div>
<div class="panel-heading display-none-xs"> <div class="panel-heading display-none-xs">
Operations Logs Operations Logs
&nbsp;&nbsp;
<span> <span>
<a href="#" id="refresh-operations"> <a href="#" id="refresh-operations">
<i class="fw fw-refresh"></i> <i class="fw fw-refresh"></i>
</a> </a>
</span> </span>
</div> </div>
<div class="panel-body collapse display-block-sm display-block-md display-block-lg" <div id="collapseFive" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="event_log">
id="tabContent5"> <div class="panel-body">
<span class="visible-xs add-padding-2x text-right">
<a href="#" id="refresh-operations">
<i class="fw fw-refresh"></i>
</a>
</span>
<div id="operations-spinner" class="wr-advance-operations-init hidden"> <div id="operations-spinner" class="wr-advance-operations-init hidden">
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;<i class="fw fw-settings fw-spin fw-2x"></i>&nbsp;&nbsp;&nbsp; <i class="fw fw-settings fw-spin fw-2x"></i> Loading Operations Log...
Loading Operations Log . . .
<br><br>
</div> </div>
<div id="operations-log-container"> <div id="operations-log-container">
<div class="panel-body"> <div class="message message-info">
There are no operations, performed yet on this device. <h4 class="remove-margin"><i class="icon fw fw-info"></i>There are no operations, performed yet on this device.</h4>
</div> </div>
<br class="c-both"/>
</div> </div>
<table class="table table-striped table-hover table-bordered display data-table" <table class="table table-striped table-hover table-bordered display data-table" id="operations-log-table">
id="operations-log-table">
<thead> <thead>
<tr class="sort-row"> <tr class="sort-row">
<th>Operation Code</th> <th>Operation Code</th>

@ -182,7 +182,7 @@
<br class="c-both"/> <br class="c-both"/>
</div> </div>
</div> </div>
{{/if}}} {{/if}}
<br> <br>
<label class="wr-input-label" title=""> <label class="wr-input-label" title="">
Set an action upon non-compliance Set an action upon non-compliance

@ -130,7 +130,7 @@ function loadNewNotifications() {
viewModel["notifications"] = responsePayload["notifications"]; viewModel["notifications"] = responsePayload["notifications"];
$(messageSideBar).html(template(viewModel)); $(messageSideBar).html(template(viewModel));
} else { } else {
$(messageSideBar).html('<div class="message message-info message-no-new"><h4><i class="icon fw fw-info"></i>No new notifications found...</h4></div>'); $(messageSideBar).html('<div class="alert alert-info" role="alert"><i class="icon fw fw-info"></i>No new notifications found...</div>');
} }
} else { } else {
$(messageSideBar).html("<h4 class ='message-danger'>Unexpected error " + $(messageSideBar).html("<h4 class ='message-danger'>Unexpected error " +

Loading…
Cancel
Save