policy filtering and location reload for cloud

revert-dabc3590
kamidu 8 years ago
parent c97dfb4080
commit ace58b6649

@ -328,7 +328,14 @@
</a>
</h4>
</div>
<div class="panel-heading display-none-xs">Device Location</div>
<div class="panel-heading display-none-xs">
Device Location
<span>
<a href="javascript:void(0);" id="refresh-location">
<i class="fw fw-refresh"></i>
</a>
</span>
</div>
<div id="collapseThree" class="panel-collapse collapse in" role="tabpanel"
aria-labelledby="device_location">
<div class="panel-body">

@ -90,12 +90,12 @@ var InitiateViewOption = null;
});
$('.media.tab-responsive a[data-toggle="collapse"]').on('click',function(){
$('.media.tab-responsive a[data-toggle="collapse"]').on('click', function () {
var clickedPanel = $(this).attr('href');
if($(clickedPanel).hasClass('in')){
if ($(clickedPanel).hasClass('in')) {
$(clickedPanel).collapse('hide');
}else{
} else {
$(clickedPanel).collapse('show');
}
});
@ -109,26 +109,26 @@ var InitiateViewOption = null;
var parentHeight = $(arrow).parent().innerHeight();
if($(selectedTab).prev().length){
$(selectedTab).prevAll().each(function() {
if ($(selectedTab).prev().length) {
$(selectedTab).prevAll().each(function () {
totalHeight += $(this).innerHeight();
});
arrowPosition = totalHeight + (selectedTabHeight / 2);
}else{
} else {
arrowPosition = selectedTabHeight / 2;
}
if(arrowPosition >= parentHeight){
if (arrowPosition >= parentHeight) {
parentHeight = arrowPosition + 50;
$(arrow).siblings(".panel.active").height(parentHeight);
}else{
} else {
$(arrow).parent().removeAttr("style");
}
$(arrow).css("top", arrowPosition - 10);
}
$(document).ready(function() {
$(document).ready(function () {
$(".device-detail-body").removeClass("hidden");
$("#loading-content").remove();
loadApplicationsList();
@ -158,11 +158,11 @@ var InitiateViewOption = null;
processing: false,
searching: false,
ordering: false,
pageLength : 10,
pageLength: 10,
order: [],
ajax: {
url: "/devicemgt/api/operation/paginate",
data: {deviceId : deviceIdentifier, deviceType: deviceType, owner:owner},
data: {deviceId: deviceIdentifier, deviceType: deviceType, owner: owner},
dataSrc: function (json) {
$("#operations-spinner").addClass("hidden");
$("#operations-log-container").empty();
@ -170,9 +170,9 @@ var InitiateViewOption = null;
}
},
columnDefs: [
{targets: 0, data: "code" },
{targets: 1, data: "status", render:
function (status) {
{targets: 0, data: "code"},
{
targets: 1, data: "status", render: function (status) {
var html;
switch (status) {
case "COMPLETED" :
@ -194,19 +194,19 @@ var InitiateViewOption = null;
return html;
}
},
{targets: 2, data: "createdTimeStamp", render:
function (date) {
{
targets: 2, data: "createdTimeStamp", render: function (date) {
var value = String(date);
return value.slice(0, 16);
}
}
],
"createdRow": function(row, data) {
"createdRow": function (row, data) {
$(row).attr("data-type", "selectable");
$(row).attr("data-id", data["id"]);
$.each($("td", row),
function(colIndex) {
switch(colIndex) {
function (colIndex) {
switch (colIndex) {
case 1:
$(this).attr("data-grid-label", "Code");
$(this).attr("data-display", data["code"]);
@ -255,16 +255,14 @@ var InitiateViewOption = null;
var content = template(viewModel);
$("#applications-list-container").html(content);
} else {
$("#applications-list-container").
html("<div class='message message-info'><h4><i class='icon fw fw-info'></i>No applications found.</h4>" +
$("#applications-list-container").html("<div class='message message-info'><h4><i class='icon fw fw-info'></i>No applications found.</h4>" +
"<p>Please try refreshing the list in a while.</p></div>");
}
}
},
// error-callback
function () {
$("#applications-list-container").
html("<div class='panel-body'><br><p class='fw-warning'>&nbsp;Loading application list " +
$("#applications-list-container").html("<div class='panel-body'><br><p class='fw-warning'>&nbsp;Loading application list " +
"was not successful. please try refreshing the list in a while.<p></div>");
});
});
@ -317,16 +315,14 @@ var InitiateViewOption = null;
$("#policy-compliance-table").addClass("hidden");
}
} else {
$("#policy-list-container").
html("<div class='panel-body'><br><p class='fw-warning'> This device " +
$("#policy-list-container").html("<div class='panel-body'><br><p class='fw-warning'> This device " +
"has no policy applied.<p></div>");
}
}
},
// error-callback
function () {
$("#policy-list-container").
html("<div class='panel-body'><br><p class='fw-warning'> Loading policy compliance related data " +
$("#policy-list-container").html("<div class='panel-body'><br><p class='fw-warning'> Loading policy compliance related data " +
"was not successful. please try refreshing data in a while.<p></div>");
}
);
@ -335,8 +331,7 @@ var InitiateViewOption = null;
},
// error-callback
function () {
$("#policy-list-container").
html("<div class='panel-body'><br><p class='fw-warning'> Loading policy compliance related data " +
$("#policy-list-container").html("<div class='panel-body'><br><p class='fw-warning'> Loading policy compliance related data " +
"was not successful. please try refreshing data in a while.<p></div>");
}
);

@ -17,8 +17,10 @@
*/
var map;
var isAnalitics = false;
var marker;
function loadLeafletMap() {
function loadLeafletMap(refresh) {
var deviceLocationID = "#device-location",
locations = $(deviceLocationID).data("locations"),
@ -28,8 +30,42 @@ function loadLeafletMap() {
zoomLevel = 13,
tileSet = "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
attribution = "&copy; <a href='https://openstreetmap.org/copyright'>OpenStreetMap</a> contributors";
if (locations && locations.locations.length > 0) {
if (refresh && !isAnalitics) {
var applicationsList = $("#applications-list");
var deviceId = applicationsList.data("device-id");
var deviceType = applicationsList.data("device-type");
invokerUtil.get(
"/api/device-mgt/v1.0/devices/" + deviceType + "/" + deviceId + "/location",
// success-callback
function (data, textStatus, jqXHR) {
if (jqXHR.status == 200 && data) {
data = JSON.parse(data);
if (data.latitude && data.longitude) {
map.removeLayer(marker);
marker = L.marker([6.912853, 79.855635], {"opacity": opacVal}).addTo(map).bindPopup("Your device is here");
// marker = L.marker([data.latitude, data.longitude], {"opacity": opacVal}).addTo(map).bindPopup("Your device is here");
marker.on('mouseover', function (e) {
this.openPopup();
});
marker.on('mouseout', function (e) {
this.closePopup();
});
}
} else {
$("#device-location").hide();
$("#map-error").show();
}
},
// error-callback
function () {
$("#device-location").hide();
$("#map-error").show();
});
} else if (locations && locations.locations.length > 0) {
isAnalitics = true;
var locationSets = locations.locations;
map = L.map(container).setView([locationSets[0].lat, locationSets[0].lng], zoomLevel);
L.tileLayer(tileSet, {attribution: attribution}).addTo(map);
@ -48,23 +84,26 @@ function loadLeafletMap() {
}
$("#map-error").hide();
$("#device-location").show();
setTimeout(function(){ map.invalidateSize()}, 400);
setTimeout(function () {
map.invalidateSize()
}, 400);
} else if (location_long && location_lat) {
map = L.map(container).setView([location_lat, location_long], zoomLevel);
L.tileLayer(tileSet, {attribution: attribution}).addTo(map);
var m = L.marker([location_lat, location_long], {"opacity": opacVal}).addTo(map).bindPopup("Your device is here");
m.on('mouseover', function (e) {
marker = L.marker([location_lat, location_long], {"opacity": opacVal}).addTo(map).bindPopup("Your device is here");
marker.on('mouseover', function (e) {
this.openPopup();
});
m.on('mouseout', function (e) {
marker.on('mouseout', function (e) {
this.closePopup();
});
$("#map-error").hide();
$("#device-location").show();
setTimeout(function(){ map.invalidateSize()}, 400);
setTimeout(function () {
map.invalidateSize()
}, 400);
} else {
$("#device-location").hide();
$("#map-error").show();
@ -73,6 +112,10 @@ function loadLeafletMap() {
$(document).ready(function () {
$(".location_tab").on("click", function () {
loadLeafletMap();
loadLeafletMap(false);
});
$("#refresh-location").on("click", function () {
loadLeafletMap(true);
});
});

@ -65,12 +65,14 @@
<span id="vpn-ok" class="has-success status-icon hidden"><i class="fw fw-success"></i></span>
<span id="vpn-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a>
<a href="javascript:void(0)" onclick="showAdvanceOperation('work-profile', this)">
{{#unless iscloud}}
<a href="javascript:void(0)" class="worker-profile" onclick="showAdvanceOperation('work-profile', this)">
<span class="wr-hidden-operations-icon fw-stack">
<i class="fw fw-service fw-stack-2x"></i>
</span>
Work-Profile Configurations
<span id="work-profile-configured" class="has-configured status-icon hidden"><i class="fw fw-success"></i></span>
<span id="work-profile-configured" class="has-configured status-icon hidden"><i
class="fw fw-success"></i></span>
<span id="work-profile-ok" class="has-success status-icon hidden"><i class="fw fw-success"></i></span>
<span id="work-profile-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a>
@ -82,10 +84,12 @@
Application Restrictions
<span id="app-restriction-configured" class="has-configured status-icon hidden"><i
class="fw fw-success"></i></span>
<span id="app-restriction-ok" class="has-success status-icon hidden"><i class="fw fw-success"></i></span>
<span id="app-restriction-ok" class="has-success status-icon hidden"><i
class="fw fw-success"></i></span>
<span id="app-restriction-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a>
<a href="javascript:void(0)" onclick="showAdvanceOperation('cosu-system-update-policy', this)">
<a href="javascript:void(0)" class="worker-profile"
onclick="showAdvanceOperation('cosu-system-update-policy', this)">
<span class="wr-hidden-operation-icon fw-stack">
<i class="fw fw-import fw-stack-2x"></i>
</span>
@ -94,19 +98,23 @@
class="fw fw-success"></i></span>
<span id="cosu-system-update-policy-ok" class="has-success status-icon hidden"><i
class="fw fw-success"></i></span>
<span id="cosu-system-update-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
<span id="cosu-system-update-policy-error" class="has-error status-icon hidden"><i
class="fw fw-error"></i></span>
</a>
<a href="javascript:void(0)" onclick="showAdvanceOperation('cosu-whitelisted-applications', this)" class="hide">
<a href="javascript:void(0)" onclick="showAdvanceOperation('cosu-whitelisted-applications', this)"
class="hide">
<span class="wr-hidden-operations-icon fw-stack">
<i class="fw fw-register fw-stack-2x"></i>
</span>
Whitelist Apps (COSU)
<span id="cosu-whitelisted-applications-configured" class="has-configured status-icon hidden"><i
class="fw fw-success"></i></span>
<span id="cosu-whitelisted-applications-ok" class="has-success status-icon hidden"><i class="fw fw-success"></i></span>
<span id="cosu-whitelisted-applications-ok" class="has-success status-icon hidden"><i
class="fw fw-success"></i></span>
<span id="cosu-whitelisted-applications-error" class="has-error status-icon hidden"><i
class="fw fw-error"></i></span>
</a>
{{/unless}}
</div>
<div class="wr-hidden-operations-content col-lg-8">
@ -302,26 +310,28 @@
</span>
</label>
</div>
<div>
{{#unless iscloud}}
<div class="worker-profile-or-owner">
<ul class="message message-info">
<i class="icon fw fw-info"></i>
<a id="policy-listing-status-msg"> Below Restrictions are valid only when the Agent is
<b>work-profile owner</b> or <b>device owner</b>.</a>
</ul>
</div>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="disallow-configuring-credentials-enabled" type="checkbox"
class="operationDataKeys"
data-key="disallowConfigCredentials"/>
<span class="helper" title="Having this checked would disallow configuring credentials.">
<span class="helper"
title="Having this checked would disallow configuring credentials.">
Disallow configuring credentials
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span>
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="disallow-configuring-VPN-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowConfigVpn"/>
@ -333,31 +343,33 @@
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="disallow-configuring-app-control-enabled" type="checkbox"
class="operationDataKeys"
data-key="disallowAppControl"/>
<span class="helper" title="Having this checked would disallow configuring app control.">
<span class="helper"
title="Having this checked would disallow configuring app control.">
Disallow configuring app control
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span>
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="disallow-cross-profile-copy-paste-enabled" type="checkbox"
class="operationDataKeys"
data-key="disallowCrossProfileCopyPaste"/>
<span class="helper" title="Having this checked would disallow cross profile copy paste.">
<span class="helper"
title="Having this checked would disallow cross profile copy paste.">
Disallow cross profile copy paste
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span>
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="disallow-debugging-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowDebugging"/>
@ -368,7 +380,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="disallow-install-apps-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowInstallApps"/>
@ -379,7 +391,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="disallow-installing-from-unknown-enabled" type="checkbox"
class="operationDataKeys"
@ -392,7 +404,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="disallow-modify-accounts-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowModifyAccounts"/>
@ -403,7 +415,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="disallow-outgoing-beam-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowOutgoingBeam"/>
@ -414,7 +426,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="disallow-location-sharing-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowLocationSharing"/>
@ -425,7 +437,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="disallow-uninstall-apps-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowUninstallApps"/>
@ -436,19 +448,20 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="disallow-parent-profile-app-linking-enabled" type="checkbox"
class="operationDataKeys"
data-key="disallowParentProfileAppLinking"/>
<span class="helper" title="Having this checked would disallow parent profile app linking.">
<span class="helper"
title="Having this checked would disallow parent profile app linking.">
Disallow parent profile app linking
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span>
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="ensure-verifying-apps-enabled" type="checkbox" class="operationDataKeys"
data-key="ensureVerifyApps"/>
@ -459,7 +472,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="enable-auto-timing-enabled" type="checkbox" class="operationDataKeys"
data-key="enableAutoTime"/>
@ -470,7 +483,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control worker-profile-or-owner">
<label class="wr-input-control checkbox">
<input id="disable-screen-capture-enabled" type="checkbox" class="operationDataKeys"
data-key="disableScreenCapture"/>
@ -480,14 +493,15 @@
</span>
</label>
</div>
<div>
<ul class="message message-info">
<div class="device-owner">
<ul class="message message-info device-owner">
<i class="icon fw fw-info"></i>
<a id="policy-listing-status-msg"> Below Restrictions are valid only when the Agent is the
<a id="policy-listing-status-msg"> Below Restrictions are valid only when the Agent is
the
<b>device owner</b>.</a>
</ul>
</div>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-SMS-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowSMS"/>
@ -498,7 +512,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="volume-adjust-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowAdjustVolumeEnabled"/>
@ -509,21 +523,23 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-configuring-cell-broadcast-enabled" type="checkbox"
class="operationDataKeys"
data-key="disallowConfigCellBroadcasts"/>
<span class="helper" title="Having this checked would disallow configuring cell broadcast.">
<span class="helper"
title="Having this checked would disallow configuring cell broadcast.">
Disallow cell broadcast
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span>
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-configuring-bluetooth-enabled" type="checkbox" class="operationDataKeys"
<input id="disallow-configuring-bluetooth-enabled" type="checkbox"
class="operationDataKeys"
data-key="disallowConfigBluetooth"/>
<span class="helper" title="Having this checked would disallow configuring bluetooth.">
Disallow configuring bluetooth.
@ -532,7 +548,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-configuring-mobile-networkst-enabled" type="checkbox"
class="operationDataKeys"
@ -545,7 +561,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-configuring-tethering-enabled" type="checkbox"
class="operationDataKeys"
@ -557,7 +573,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-configuring-Wifi-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowConfigWifi"/>
@ -568,7 +584,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-safe-boot-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowSafeBoot"/>
@ -579,7 +595,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-outgoing-calls-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowOutgoingCalls"/>
@ -590,9 +606,10 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-mount-physical-media-enabled" type="checkbox" class="operationDataKeys"
<input id="disallow-mount-physical-media-enabled" type="checkbox"
class="operationDataKeys"
data-key="disallowMountPhysicalMedia"/>
<span class="helper" title="Having this checked would disallow mount physical media.">
Disallow mount physical media
@ -601,7 +618,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-create-window-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowCreateWindows"/>
@ -612,7 +629,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-factory-reset-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowFactoryReset"/>
@ -623,7 +640,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-remove-user-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowRemoveUser"/>
@ -634,7 +651,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-add-user-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowAddUser"/>
@ -645,7 +662,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-network-reset-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowNetworkReset"/>
@ -656,7 +673,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-USB-transfer-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowUSBFileTransfer"/>
@ -667,7 +684,7 @@
</label>
</div>
<br>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disallow-unmute-microphone-enabled" type="checkbox" class="operationDataKeys"
data-key="disallowUnmuteMicrophone"/>
@ -678,14 +695,15 @@
</label>
</div>
<br>
<div>
<div class="device-owner">
<ul class="message message-info">
<i class="icon fw fw-info"></i>
<a id="policy-listing-status-msg">Below restrictions will be applied on devices with Android
<a id="policy-listing-status-msg">Below restrictions will be applied on devices with
Android
version 6.0 Marshmallow onwards only.</a>
</ul>
</div>
<div class="wr-input-control">
<div class="wr-input-control device-owner">
<label class="wr-input-control checkbox">
<input id="disable-status-bar-enabled" type="checkbox" class="operationDataKeys"
data-key="disableStatusBar"/>
@ -696,6 +714,7 @@
</label>
</div>
<br>
{{/unless}}
</div>
</div>
</div>
@ -1375,9 +1394,7 @@
</label>
</h2>
<div class="panel-title-description">
This configuration can be used to set a passcode policy to an Android Device.
Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices.
this configurations can be used to set when system update take place in the COSU devices.
</div>
</div>
<div id="cosu-whitelisted-applications-body" class="panel-collapse panel-body collapse" role="tabpanel"

Loading…
Cancel
Save