mirror of
https://repository.entgra.net/community/device-mgt-plugins.git
synced 2025-09-16 23:42:15 +00:00
Merge pull request #462 from madawas/IOTS-296
IOTS-296: moving operation mod js to plugins
This commit is contained in:
commit
fbf7134de4
File diff suppressed because it is too large
Load Diff
@ -15,6 +15,9 @@
|
|||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var configuredOperations = [];
|
||||||
|
|
||||||
// Constants to define Android Operation Constants
|
// Constants to define Android Operation Constants
|
||||||
var androidOperationConstants = {
|
var androidOperationConstants = {
|
||||||
"PASSCODE_POLICY_OPERATION": "passcode-policy",
|
"PASSCODE_POLICY_OPERATION": "passcode-policy",
|
||||||
@ -60,21 +63,56 @@ var updateGroupedInputVisibility = function (domElement) {
|
|||||||
*
|
*
|
||||||
* This method will be invoked from the relevant cdmf unit when the edit page gets loaded.
|
* This method will be invoked from the relevant cdmf unit when the edit page gets loaded.
|
||||||
*
|
*
|
||||||
* @param configuredOperations selected configurations.
|
* @param profileFeatureList saved feature list
|
||||||
*/
|
*/
|
||||||
var polulateProfileOperations = function (configuredOperations) {
|
var polulateProfileOperations = function (profileFeatureList) {
|
||||||
|
var selectedOperations = androidOperationModule.populateProfile(profileFeatureList);
|
||||||
$(".wr-advance-operations li.grouped-input").each(function () {
|
$(".wr-advance-operations li.grouped-input").each(function () {
|
||||||
updateGroupedInputVisibility(this);
|
updateGroupedInputVisibility(this);
|
||||||
});
|
});
|
||||||
for (var i = 0; i < configuredOperations.length; ++i) {
|
for (var i = 0; i < selectedOperations.length; ++i) {
|
||||||
var configuredOperation = configuredOperations[i];
|
var selectedOperation = selectedOperations[i];
|
||||||
$(".operation-data").filterByData("operation-code", configuredOperation)
|
$(".operation-data").filterByData("operation-code", selectedOperation)
|
||||||
.find(".panel-title .wr-input-control.switch input[type=checkbox]").each(function () {
|
.find(".panel-title .wr-input-control.switch input[type=checkbox]").each(function () {
|
||||||
$(this).click();
|
$(this).click();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates policy profile feature list which will be saved with the profile.
|
||||||
|
*
|
||||||
|
* This function will be invoked from the relevant cdmf unit at the time of policy creation.
|
||||||
|
*
|
||||||
|
* @returns {Array} profile payloads
|
||||||
|
*/
|
||||||
|
var generateProfileFeaturesList = function () {
|
||||||
|
var profilePayloads = [];
|
||||||
|
var key;
|
||||||
|
for (key in policy["profile"]) {
|
||||||
|
if (policy["profile"].hasOwnProperty(key)) {
|
||||||
|
profilePayloads.push({
|
||||||
|
"featureCode": key,
|
||||||
|
"deviceType": policy["platform"],
|
||||||
|
"content": policy["profile"][key]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return profilePayloads;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates policy profile object which will be saved with the profile.
|
||||||
|
*
|
||||||
|
* This function will be invoked from the relevant cdmf unit at the time of policy creation.
|
||||||
|
*
|
||||||
|
* @returns {object} generated profile.
|
||||||
|
*/
|
||||||
|
var generatePolicyProfile = function () {
|
||||||
|
return androidOperationModule.generateProfile(configuredOperations);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if provided number is valid against a range.
|
* Checks if provided number is valid against a range.
|
||||||
*
|
*
|
||||||
@ -542,30 +580,6 @@ var validatePolicyProfile = function () {
|
|||||||
return wizardIsToBeContinued;
|
return wizardIsToBeContinued;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Generates policy profile object which will be saved with the profile.
|
|
||||||
*
|
|
||||||
* This function will be invoked from the relevant cdmf unit at the time of policy creation.
|
|
||||||
*
|
|
||||||
* @returns {Array} profile payloads
|
|
||||||
*/
|
|
||||||
var generatePolicyProfile = function () {
|
|
||||||
var profilePayloads = [];
|
|
||||||
// traverses key by key in policy["profile"]
|
|
||||||
var key;
|
|
||||||
for (key in policy["profile"]) {
|
|
||||||
if (policy["profile"].hasOwnProperty(key)) {
|
|
||||||
profilePayloads.push({
|
|
||||||
"featureCode": key,
|
|
||||||
"deviceType": policy["platform"],
|
|
||||||
"content": policy["profile"][key]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return profilePayloads;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Start of HTML embedded invoke methods
|
// Start of HTML embedded invoke methods
|
||||||
var showAdvanceOperation = function (operation, button) {
|
var showAdvanceOperation = function (operation, button) {
|
||||||
$(button).addClass('selected');
|
$(button).addClass('selected');
|
||||||
@ -685,6 +699,22 @@ var slideDownPaneAgainstValueSet = function (selectElement, paneID, valueSet) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var slideDownPaneAgainstValueSetForRadioButtons = function (selectElement, paneID, valueSet) {
|
||||||
|
var selectedValueOnChange = selectElement.value;
|
||||||
|
var slideDownVotes = 0;
|
||||||
|
for (var i = 0; i < valueSet.length; i++) {
|
||||||
|
if (selectedValueOnChange == valueSet[i]) {
|
||||||
|
slideDownVotes++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var paneSelector = "#" + paneID;
|
||||||
|
if (slideDownVotes > 0) {
|
||||||
|
$(paneSelector).removeClass("hidden");
|
||||||
|
} else {
|
||||||
|
$(paneSelector).addClass("hidden");
|
||||||
|
}
|
||||||
|
};
|
||||||
// End of HTML embedded invoke methods
|
// End of HTML embedded invoke methods
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -16,8 +16,6 @@
|
|||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var configuredOperations = [];
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to update the visibility (i.e. disabled or enabled view)
|
* Method to update the visibility (i.e. disabled or enabled view)
|
||||||
* of grouped input according to the values
|
* of grouped input according to the values
|
||||||
@ -47,9 +45,10 @@ var updateGroupedInputVisibility = function (domElement) {
|
|||||||
*
|
*
|
||||||
* This method will be invoked from the relevant cdmf unit when the edit page gets loaded.
|
* This method will be invoked from the relevant cdmf unit when the edit page gets loaded.
|
||||||
*
|
*
|
||||||
* @param selectedConfigurations selected configurations.
|
* @param profileFeatureList selected configurations.
|
||||||
*/
|
*/
|
||||||
var polulateProfileOperations = function (selectedConfigurations) {
|
var polulateProfileOperations = function (profileFeatureList) {
|
||||||
|
var selectedConfigurations = androidOperationModule.populateProfile(profileFeatureList);
|
||||||
$(".wr-advance-operations li.grouped-input").each(function () {
|
$(".wr-advance-operations li.grouped-input").each(function () {
|
||||||
updateGroupedInputVisibility(this);
|
updateGroupedInputVisibility(this);
|
||||||
});
|
});
|
||||||
@ -169,35 +168,6 @@ var slideDownPaneAgainstValueSetForRadioButtons = function (selectElement, paneI
|
|||||||
};
|
};
|
||||||
// End of HTML embedded invoke methods
|
// End of HTML embedded invoke methods
|
||||||
|
|
||||||
|
|
||||||
// Start of functions related to grid-input-view
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Method to set count id to cloned elements.
|
|
||||||
* @param {object} addFormContainer
|
|
||||||
*/
|
|
||||||
var setId = function (addFormContainer) {
|
|
||||||
$(addFormContainer).find("[data-add-form-clone]").each(function (i) {
|
|
||||||
$(this).attr("id", $(this).attr("data-add-form-clone").slice(1) + "-" + (i + 1));
|
|
||||||
if ($(this).find(".index").length > 0) {
|
|
||||||
$(this).find(".index").html(i + 1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Method to set count id to cloned elements.
|
|
||||||
* @param {object} addFormContainer
|
|
||||||
*/
|
|
||||||
var showHideHelpText = function (addFormContainer) {
|
|
||||||
var helpText = "[data-help-text=add-form]";
|
|
||||||
if ($(addFormContainer).find("[data-add-form-clone]").length > 0) {
|
|
||||||
$(addFormContainer).find(helpText).hide();
|
|
||||||
} else {
|
|
||||||
$(addFormContainer).find(helpText).show();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method will display appropriate fields based on wifi type
|
* This method will display appropriate fields based on wifi type
|
||||||
* @param {object} wifi type select object
|
* @param {object} wifi type select object
|
||||||
@ -229,148 +199,19 @@ var changeAndroidWifiPolicyEAP = function (select, superSelect) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
// Maintains an array of configured features of the profile
|
|
||||||
var advanceOperations = ".wr-advance-operations";
|
var advanceOperations = ".wr-advance-operations";
|
||||||
$(advanceOperations).on("click", ".wr-input-control.switch", function (event) {
|
$(advanceOperations).on("click", ".wr-input-control.switch", function (event) {
|
||||||
var operationCode = $(this).parents(".operation-data").data("operation-code");
|
|
||||||
var operation = $(this).parents(".operation-data").data("operation");
|
var operation = $(this).parents(".operation-data").data("operation");
|
||||||
var operationDataWrapper = $(this).data("target");
|
|
||||||
// prevents event bubbling by figuring out what element it's being called from.
|
// prevents event bubbling by figuring out what element it's being called from.
|
||||||
if (event.target.tagName == "INPUT") {
|
if (event.target.tagName == "INPUT") {
|
||||||
var featureConfiguredIcon;
|
var featureConfiguredIcon;
|
||||||
if ($("input[type='checkbox']", this).is(":checked")) {
|
if ($("input[type='checkbox']", this).is(":checked")) {
|
||||||
configuredOperations.push(operationCode);
|
|
||||||
// when a feature is enabled, if "zero-configured-features" msg is available, hide that.
|
|
||||||
var zeroConfiguredOperationsErrorMsg = "#policy-profile-main-error-msg";
|
|
||||||
if (!$(zeroConfiguredOperationsErrorMsg).hasClass("hidden")) {
|
|
||||||
$(zeroConfiguredOperationsErrorMsg).addClass("hidden");
|
|
||||||
}
|
|
||||||
// add configured-state-icon to the feature
|
// add configured-state-icon to the feature
|
||||||
featureConfiguredIcon = "#" + operation + "-configured";
|
featureConfiguredIcon = "#" + operation + "-configured";
|
||||||
if ($(featureConfiguredIcon).hasClass("hidden")) {
|
if ($(featureConfiguredIcon).hasClass("hidden")) {
|
||||||
$(featureConfiguredIcon).removeClass("hidden");
|
$(featureConfiguredIcon).removeClass("hidden");
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
//splicing the array if operation is present.
|
|
||||||
var index = $.inArray(operationCode, configuredOperations);
|
|
||||||
if (index != -1) {
|
|
||||||
configuredOperations.splice(index, 1);
|
|
||||||
}
|
|
||||||
// when a feature is disabled, clearing all its current configured, error or success states
|
|
||||||
var subErrorMsgWrapper = "#" + operation + "-feature-error-msg";
|
|
||||||
var subErrorIcon = "#" + operation + "-error";
|
|
||||||
var subOkIcon = "#" + operation + "-ok";
|
|
||||||
featureConfiguredIcon = "#" + operation + "-configured";
|
|
||||||
|
|
||||||
if (!$(subErrorMsgWrapper).hasClass("hidden")) {
|
|
||||||
$(subErrorMsgWrapper).addClass("hidden");
|
|
||||||
}
|
|
||||||
if (!$(subErrorIcon).hasClass("hidden")) {
|
|
||||||
$(subErrorIcon).addClass("hidden");
|
|
||||||
}
|
|
||||||
if (!$(subOkIcon).hasClass("hidden")) {
|
|
||||||
$(subOkIcon).addClass("hidden");
|
|
||||||
}
|
|
||||||
if (!$(featureConfiguredIcon).hasClass("hidden")) {
|
|
||||||
$(featureConfiguredIcon).addClass("hidden");
|
|
||||||
}
|
|
||||||
// reinitializing input fields into the defaults
|
|
||||||
$(operationDataWrapper + " input").each(
|
|
||||||
function () {
|
|
||||||
if ($(this).is("input:text")) {
|
|
||||||
$(this).val($(this).data("default"));
|
|
||||||
} else if ($(this).is("input:password")) {
|
|
||||||
$(this).val("");
|
|
||||||
} else if ($(this).is("input:checkbox")) {
|
|
||||||
$(this).prop("checked", $(this).data("default"));
|
|
||||||
// if this checkbox is the parent input of a grouped-input
|
|
||||||
if ($(this).hasClass("parent-input")) {
|
|
||||||
var groupedInput = $(this).parent().parent().parent();
|
|
||||||
updateGroupedInputVisibility(groupedInput);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
// reinitializing select fields into the defaults
|
|
||||||
$(operationDataWrapper + " select").each(
|
|
||||||
function () {
|
|
||||||
var defaultOption = $(this).data("default");
|
|
||||||
$("option:eq(" + defaultOption + ")", this).prop("selected", "selected");
|
|
||||||
}
|
|
||||||
);
|
|
||||||
// collapsing expanded-panes (upon the selection of html-select-options) if any
|
|
||||||
$(operationDataWrapper + " .expanded").each(
|
|
||||||
function () {
|
|
||||||
if ($(this).hasClass("expanded")) {
|
|
||||||
$(this).removeClass("expanded");
|
|
||||||
}
|
|
||||||
$(this).slideUp();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
// removing all entries of grid-input elements if exist
|
|
||||||
$(operationDataWrapper + " .grouped-array-input").each(
|
|
||||||
function () {
|
|
||||||
var gridInputs = $(this).find("[data-add-form-clone]");
|
|
||||||
if (gridInputs.length > 0) {
|
|
||||||
gridInputs.remove();
|
|
||||||
}
|
|
||||||
var helpTexts = $(this).find("[data-help-text=add-form]");
|
|
||||||
if (helpTexts.length > 0) {
|
|
||||||
helpTexts.show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// adding support for cloning multiple profiles per feature with cloneable class definitions
|
|
||||||
$(advanceOperations).on("click", ".multi-view.add.enabled", function () {
|
|
||||||
// get a copy of .cloneable and create new .cloned div element
|
|
||||||
var cloned = "<div class='cloned'><hr>" + $(".cloneable", $(this).parent().parent()).html() + "</div>";
|
|
||||||
// append newly created .cloned div element to panel-body
|
|
||||||
$(this).parent().parent().append(cloned);
|
|
||||||
// enable remove action of newly cloned div element
|
|
||||||
$(".cloned", $(this).parent().parent()).each(
|
|
||||||
function () {
|
|
||||||
if ($(".multi-view.remove", this).hasClass("disabled")) {
|
|
||||||
$(".multi-view.remove", this).removeClass("disabled");
|
|
||||||
}
|
|
||||||
if (!$(".multi-view.remove", this).hasClass("enabled")) {
|
|
||||||
$(".multi-view.remove", this).addClass("enabled");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
$(advanceOperations).on("click", ".multi-view.remove.enabled", function () {
|
|
||||||
$(this).parent().remove();
|
|
||||||
});
|
|
||||||
|
|
||||||
// enabling or disabling grouped-input based on the status of a parent check-box
|
|
||||||
$(advanceOperations).on("click", ".grouped-input", function () {
|
|
||||||
updateGroupedInputVisibility(this);
|
|
||||||
});
|
|
||||||
|
|
||||||
// add form entry click function for grid inputs
|
|
||||||
$(advanceOperations).on("click", "[data-click-event=add-form]", function () {
|
|
||||||
var addFormContainer = $("[data-add-form-container=" + $(this).attr("href") + "]");
|
|
||||||
var clonedForm = $("[data-add-form=" + $(this).attr("href") + "]").clone().find("[data-add-form-element=clone]").attr("data-add-form-clone", $(this).attr("href"));
|
|
||||||
|
|
||||||
// adding class .child-input to capture text-input-array-values
|
|
||||||
$("input, select", clonedForm).addClass("child-input");
|
|
||||||
|
|
||||||
$(addFormContainer).append(clonedForm);
|
|
||||||
setId(addFormContainer);
|
|
||||||
showHideHelpText(addFormContainer);
|
|
||||||
});
|
|
||||||
|
|
||||||
// remove form entry click function for grid inputs
|
|
||||||
$(advanceOperations).on("click", "[data-click-event=remove-form]", function () {
|
|
||||||
var addFormContainer = $("[data-add-form-container=" + $(this).attr("href") + "]");
|
|
||||||
|
|
||||||
$(this).closest("[data-add-form-element=clone]").remove();
|
|
||||||
setId(addFormContainer);
|
|
||||||
showHideHelpText(addFormContainer);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
@ -16,6 +16,8 @@
|
|||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var configuredOperations = [];
|
||||||
|
|
||||||
var androidOperationConstants = {
|
var androidOperationConstants = {
|
||||||
"PASSCODE_POLICY_OPERATION": "passcode-policy",
|
"PASSCODE_POLICY_OPERATION": "passcode-policy",
|
||||||
"PASSCODE_POLICY_OPERATION_CODE": "PASSCODE_POLICY",
|
"PASSCODE_POLICY_OPERATION_CODE": "PASSCODE_POLICY",
|
||||||
@ -523,13 +525,13 @@ var validatePolicyProfile = function () {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates policy profile object which will be saved with the profile.
|
* Generates policy profile feature list which will be saved with the profile.
|
||||||
*
|
*
|
||||||
* This function will be invoked from the relevant cdmf unit at the time of policy creation.
|
* This function will be invoked from the relevant cdmf unit at the time of policy creation.
|
||||||
*
|
*
|
||||||
* @returns {Array} profile payloads
|
* @returns {Array} profile payloads
|
||||||
*/
|
*/
|
||||||
var generatePolicyProfile = function () {
|
var generateProfileFeaturesList = function () {
|
||||||
var profilePayloads = [];
|
var profilePayloads = [];
|
||||||
// traverses key by key in policy["profile"]
|
// traverses key by key in policy["profile"]
|
||||||
var key;
|
var key;
|
||||||
@ -546,6 +548,24 @@ var generatePolicyProfile = function () {
|
|||||||
return profilePayloads;
|
return profilePayloads;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates policy profile object which will be saved with the profile.
|
||||||
|
*
|
||||||
|
* This function will be invoked from the relevant cdmf unit at the time of policy creation.
|
||||||
|
*
|
||||||
|
* @returns {object} generated profile.
|
||||||
|
*/
|
||||||
|
var generatePolicyProfile = function () {
|
||||||
|
return androidOperationModule.generateProfile(configuredOperations);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resets policy profile configurations.
|
||||||
|
*/
|
||||||
|
var resetPolicyProfile = function () {
|
||||||
|
configuredOperations = [];
|
||||||
|
};
|
||||||
|
|
||||||
// Start of HTML embedded invoke methods
|
// Start of HTML embedded invoke methods
|
||||||
var showAdvanceOperation = function (operation, button) {
|
var showAdvanceOperation = function (operation, button) {
|
||||||
$(button).addClass('selected');
|
$(button).addClass('selected');
|
||||||
@ -665,6 +685,22 @@ var slideDownPaneAgainstValueSet = function (selectElement, paneID, valueSet) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var slideDownPaneAgainstValueSetForRadioButtons = function (selectElement, paneID, valueSet) {
|
||||||
|
var selectedValueOnChange = selectElement.value;
|
||||||
|
var slideDownVotes = 0;
|
||||||
|
for (var i = 0; i < valueSet.length; i++) {
|
||||||
|
if (selectedValueOnChange == valueSet[i]) {
|
||||||
|
slideDownVotes++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var paneSelector = "#" + paneID;
|
||||||
|
if (slideDownVotes > 0) {
|
||||||
|
$(paneSelector).removeClass("hidden");
|
||||||
|
} else {
|
||||||
|
$(paneSelector).addClass("hidden");
|
||||||
|
}
|
||||||
|
};
|
||||||
// End of HTML embedded invoke methods
|
// End of HTML embedded invoke methods
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -16,6 +16,8 @@
|
|||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var configuredOperations = [];
|
||||||
|
|
||||||
var windowsOperationConstants = {
|
var windowsOperationConstants = {
|
||||||
"PASSCODE_POLICY_OPERATION": "passcode-policy",
|
"PASSCODE_POLICY_OPERATION": "passcode-policy",
|
||||||
"PASSCODE_POLICY_OPERATION_CODE": "PASSCODE_POLICY",
|
"PASSCODE_POLICY_OPERATION_CODE": "PASSCODE_POLICY",
|
||||||
@ -52,21 +54,60 @@ var updateGroupedInputVisibility = function (domElement) {
|
|||||||
*
|
*
|
||||||
* This method will be invoked from the relevant cdmf unit when the edit page gets loaded.
|
* This method will be invoked from the relevant cdmf unit when the edit page gets loaded.
|
||||||
*
|
*
|
||||||
* @param configuredOperations selected configurations.
|
* @param profileFeatureList saved feature list
|
||||||
*/
|
*/
|
||||||
var polulateProfileOperations = function (configuredOperations) {
|
var polulateProfileOperations = function (profileFeatureList) {
|
||||||
|
var selectedOperations = windowsOperationModule.populateProfile(profileFeatureList);
|
||||||
$(".wr-advance-operations li.grouped-input").each(function () {
|
$(".wr-advance-operations li.grouped-input").each(function () {
|
||||||
updateGroupedInputVisibility(this);
|
updateGroupedInputVisibility(this);
|
||||||
});
|
});
|
||||||
for (var i = 0; i < configuredOperations.length; ++i) {
|
for (var i = 0; i < selectedOperations.length; ++i) {
|
||||||
var configuredOperation = configuredOperations[i];
|
var selectedOperation = selectedOperations[i];
|
||||||
$(".operation-data").filterByData("operation-code", configuredOperation)
|
$(".operation-data").filterByData("operation-code", selectedOperation)
|
||||||
.find(".panel-title .wr-input-control.switch input[type=checkbox]").each(function () {
|
.find(".panel-title .wr-input-control.switch input[type=checkbox]").each(function () {
|
||||||
$(this).click();
|
$(this).click();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates policy profile feature list which will be saved with the profile.
|
||||||
|
*
|
||||||
|
* This function will be invoked from the relevant cdmf unit at the time of policy creation.
|
||||||
|
*
|
||||||
|
* @returns {Array} profile payloads
|
||||||
|
*/
|
||||||
|
var generateProfileFeaturesList = function () {
|
||||||
|
var profilePayloads = [];
|
||||||
|
// traverses key by key in policy["profile"]
|
||||||
|
var key;
|
||||||
|
for (key in policy["profile"]) {
|
||||||
|
if (policy["profile"].hasOwnProperty(key)) {
|
||||||
|
if (key == windowsOperationConstants["PASSCODE_POLICY_OPERATION_CODE"]) {
|
||||||
|
policy["profile"][key].enablePassword = true;
|
||||||
|
}
|
||||||
|
profilePayloads.push({
|
||||||
|
"featureCode": key,
|
||||||
|
"deviceType": policy["platform"],
|
||||||
|
"content": policy["profile"][key]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return profilePayloads;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates policy profile object which will be saved with the profile.
|
||||||
|
*
|
||||||
|
* This function will be invoked from the relevant cdmf unit at the time of policy creation.
|
||||||
|
*
|
||||||
|
* @returns {object} generated profile.
|
||||||
|
*/
|
||||||
|
var generatePolicyProfile = function () {
|
||||||
|
return windowsOperationModule.generateProfile(configuredOperations);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if provided number is valid against a range.
|
* Checks if provided number is valid against a range.
|
||||||
*
|
*
|
||||||
@ -256,33 +297,6 @@ var validatePolicyProfile = function () {
|
|||||||
return wizardIsToBeContinued;
|
return wizardIsToBeContinued;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Generates policy profile object which will be saved with the profile.
|
|
||||||
*
|
|
||||||
* This function will be invoked from the relevant cdmf unit at the time of policy creation.
|
|
||||||
*
|
|
||||||
* @returns {Array} profile payloads
|
|
||||||
*/
|
|
||||||
var generatePolicyProfile = function () {
|
|
||||||
var profilePayloads = [];
|
|
||||||
// traverses key by key in policy["profile"]
|
|
||||||
var key;
|
|
||||||
for (key in policy["profile"]) {
|
|
||||||
if (key == windowsOperationConstants["PASSCODE_POLICY_OPERATION_CODE"]) {
|
|
||||||
policy["profile"][key].enablePassword = true;
|
|
||||||
}
|
|
||||||
if (policy["profile"].hasOwnProperty(key)) {
|
|
||||||
profilePayloads.push({
|
|
||||||
"featureCode": key,
|
|
||||||
"deviceType": policy["platform"],
|
|
||||||
"content": policy["profile"][key]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return profilePayloads;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Start of HTML embedded invoke methods
|
// Start of HTML embedded invoke methods
|
||||||
var showAdvanceOperation = function (operation, button) {
|
var showAdvanceOperation = function (operation, button) {
|
||||||
$(button).addClass('selected');
|
$(button).addClass('selected');
|
||||||
|
|||||||
@ -16,8 +16,6 @@
|
|||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var configuredOperations = [];
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to update the visibility (i.e. disabled or enabled view)
|
* Method to update the visibility (i.e. disabled or enabled view)
|
||||||
* of grouped input according to the values
|
* of grouped input according to the values
|
||||||
@ -47,9 +45,10 @@ var updateGroupedInputVisibility = function (domElement) {
|
|||||||
*
|
*
|
||||||
* This method will be invoked from the relevant cdmf unit when the edit page gets loaded.
|
* This method will be invoked from the relevant cdmf unit when the edit page gets loaded.
|
||||||
*
|
*
|
||||||
* @param selectedConfigurations selected configurations.
|
* @param profileFeatureList selected configurations.
|
||||||
*/
|
*/
|
||||||
var polulateProfileOperations = function (selectedConfigurations) {
|
var polulateProfileOperations = function (profileFeatureList) {
|
||||||
|
var selectedConfigurations = windowsOperationModule.populateProfile(profileFeatureList);
|
||||||
$(".wr-advance-operations li.grouped-input").each(function () {
|
$(".wr-advance-operations li.grouped-input").each(function () {
|
||||||
updateGroupedInputVisibility(this);
|
updateGroupedInputVisibility(this);
|
||||||
});
|
});
|
||||||
@ -168,208 +167,20 @@ var slideDownPaneAgainstValueSetForRadioButtons = function (selectElement, paneI
|
|||||||
};
|
};
|
||||||
// End of HTML embedded invoke methods
|
// End of HTML embedded invoke methods
|
||||||
|
|
||||||
|
|
||||||
// Start of functions related to grid-input-view
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Method to set count id to cloned elements.
|
|
||||||
* @param {object} addFormContainer
|
|
||||||
*/
|
|
||||||
var setId = function (addFormContainer) {
|
|
||||||
$(addFormContainer).find("[data-add-form-clone]").each(function (i) {
|
|
||||||
$(this).attr("id", $(this).attr("data-add-form-clone").slice(1) + "-" + (i + 1));
|
|
||||||
if ($(this).find(".index").length > 0) {
|
|
||||||
$(this).find(".index").html(i + 1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Method to set count id to cloned elements.
|
|
||||||
* @param {object} addFormContainer
|
|
||||||
*/
|
|
||||||
var showHideHelpText = function (addFormContainer) {
|
|
||||||
var helpText = "[data-help-text=add-form]";
|
|
||||||
if ($(addFormContainer).find("[data-add-form-clone]").length > 0) {
|
|
||||||
$(addFormContainer).find(helpText).hide();
|
|
||||||
} else {
|
|
||||||
$(addFormContainer).find(helpText).show();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method will display appropriate fields based on wifi type
|
|
||||||
* @param {object} wifi type select object
|
|
||||||
*/
|
|
||||||
var changeAndroidWifiPolicy = function (select) {
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-password', ['wep', 'wpa', '802eap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-eap', ['802eap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-phase2', ['802eap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-identity', ['802eap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-anoidentity', ['802eap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-cacert', ['802eap']);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method will display appropriate fields based on wifi EAP type
|
|
||||||
* @param {object} wifi eap select object
|
|
||||||
* @param {object} wifi type select object
|
|
||||||
*/
|
|
||||||
var changeAndroidWifiPolicyEAP = function (select, superSelect) {
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-password', ['peap', 'ttls', 'pwd', 'fast', 'leap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-phase2', ['peap', 'ttls', 'fast']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-provisioning', ['fast']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-identity', ['peap', 'tls', 'ttls', 'pwd', 'fast', 'leap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-anoidentity', ['peap', 'ttls']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-cacert', ['peap', 'tls', 'ttls']);
|
|
||||||
if (superSelect.value != '802eap') {
|
|
||||||
changeAndroidWifiPolicy(superSelect);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
// Maintains an array of configured features of the profile
|
|
||||||
var advanceOperations = ".wr-advance-operations";
|
var advanceOperations = ".wr-advance-operations";
|
||||||
$(advanceOperations).on("click", ".wr-input-control.switch", function (event) {
|
$(advanceOperations).on("click", ".wr-input-control.switch", function (event) {
|
||||||
var operationCode = $(this).parents(".operation-data").data("operation-code");
|
|
||||||
var operation = $(this).parents(".operation-data").data("operation");
|
var operation = $(this).parents(".operation-data").data("operation");
|
||||||
var operationDataWrapper = $(this).data("target");
|
|
||||||
// prevents event bubbling by figuring out what element it's being called from.
|
// prevents event bubbling by figuring out what element it's being called from.
|
||||||
if (event.target.tagName == "INPUT") {
|
if (event.target.tagName == "INPUT") {
|
||||||
var featureConfiguredIcon;
|
var featureConfiguredIcon;
|
||||||
if ($("input[type='checkbox']", this).is(":checked")) {
|
if ($("input[type='checkbox']", this).is(":checked")) {
|
||||||
configuredOperations.push(operationCode);
|
|
||||||
// when a feature is enabled, if "zero-configured-features" msg is available, hide that.
|
|
||||||
var zeroConfiguredOperationsErrorMsg = "#policy-profile-main-error-msg";
|
|
||||||
if (!$(zeroConfiguredOperationsErrorMsg).hasClass("hidden")) {
|
|
||||||
$(zeroConfiguredOperationsErrorMsg).addClass("hidden");
|
|
||||||
}
|
|
||||||
// add configured-state-icon to the feature
|
// add configured-state-icon to the feature
|
||||||
featureConfiguredIcon = "#" + operation + "-configured";
|
featureConfiguredIcon = "#" + operation + "-configured";
|
||||||
if ($(featureConfiguredIcon).hasClass("hidden")) {
|
if ($(featureConfiguredIcon).hasClass("hidden")) {
|
||||||
$(featureConfiguredIcon).removeClass("hidden");
|
$(featureConfiguredIcon).removeClass("hidden");
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
//splicing the array if operation is present.
|
|
||||||
var index = $.inArray(operationCode, configuredOperations);
|
|
||||||
if (index != -1) {
|
|
||||||
configuredOperations.splice(index, 1);
|
|
||||||
}
|
|
||||||
// when a feature is disabled, clearing all its current configured, error or success states
|
|
||||||
var subErrorMsgWrapper = "#" + operation + "-feature-error-msg";
|
|
||||||
var subErrorIcon = "#" + operation + "-error";
|
|
||||||
var subOkIcon = "#" + operation + "-ok";
|
|
||||||
featureConfiguredIcon = "#" + operation + "-configured";
|
|
||||||
|
|
||||||
if (!$(subErrorMsgWrapper).hasClass("hidden")) {
|
|
||||||
$(subErrorMsgWrapper).addClass("hidden");
|
|
||||||
}
|
|
||||||
if (!$(subErrorIcon).hasClass("hidden")) {
|
|
||||||
$(subErrorIcon).addClass("hidden");
|
|
||||||
}
|
|
||||||
if (!$(subOkIcon).hasClass("hidden")) {
|
|
||||||
$(subOkIcon).addClass("hidden");
|
|
||||||
}
|
|
||||||
if (!$(featureConfiguredIcon).hasClass("hidden")) {
|
|
||||||
$(featureConfiguredIcon).addClass("hidden");
|
|
||||||
}
|
|
||||||
// reinitializing input fields into the defaults
|
|
||||||
$(operationDataWrapper + " input").each(
|
|
||||||
function () {
|
|
||||||
if ($(this).is("input:text")) {
|
|
||||||
$(this).val($(this).data("default"));
|
|
||||||
} else if ($(this).is("input:password")) {
|
|
||||||
$(this).val("");
|
|
||||||
} else if ($(this).is("input:checkbox")) {
|
|
||||||
$(this).prop("checked", $(this).data("default"));
|
|
||||||
// if this checkbox is the parent input of a grouped-input
|
|
||||||
if ($(this).hasClass("parent-input")) {
|
|
||||||
var groupedInput = $(this).parent().parent().parent();
|
|
||||||
updateGroupedInputVisibility(groupedInput);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
// reinitializing select fields into the defaults
|
|
||||||
$(operationDataWrapper + " select").each(
|
|
||||||
function () {
|
|
||||||
var defaultOption = $(this).data("default");
|
|
||||||
$("option:eq(" + defaultOption + ")", this).prop("selected", "selected");
|
|
||||||
}
|
|
||||||
);
|
|
||||||
// collapsing expanded-panes (upon the selection of html-select-options) if any
|
|
||||||
$(operationDataWrapper + " .expanded").each(
|
|
||||||
function () {
|
|
||||||
if ($(this).hasClass("expanded")) {
|
|
||||||
$(this).removeClass("expanded");
|
|
||||||
}
|
|
||||||
$(this).slideUp();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
// removing all entries of grid-input elements if exist
|
|
||||||
$(operationDataWrapper + " .grouped-array-input").each(
|
|
||||||
function () {
|
|
||||||
var gridInputs = $(this).find("[data-add-form-clone]");
|
|
||||||
if (gridInputs.length > 0) {
|
|
||||||
gridInputs.remove();
|
|
||||||
}
|
|
||||||
var helpTexts = $(this).find("[data-help-text=add-form]");
|
|
||||||
if (helpTexts.length > 0) {
|
|
||||||
helpTexts.show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// adding support for cloning multiple profiles per feature with cloneable class definitions
|
|
||||||
$(advanceOperations).on("click", ".multi-view.add.enabled", function () {
|
|
||||||
// get a copy of .cloneable and create new .cloned div element
|
|
||||||
var cloned = "<div class='cloned'><hr>" + $(".cloneable", $(this).parent().parent()).html() + "</div>";
|
|
||||||
// append newly created .cloned div element to panel-body
|
|
||||||
$(this).parent().parent().append(cloned);
|
|
||||||
// enable remove action of newly cloned div element
|
|
||||||
$(".cloned", $(this).parent().parent()).each(
|
|
||||||
function () {
|
|
||||||
if ($(".multi-view.remove", this).hasClass("disabled")) {
|
|
||||||
$(".multi-view.remove", this).removeClass("disabled");
|
|
||||||
}
|
|
||||||
if (!$(".multi-view.remove", this).hasClass("enabled")) {
|
|
||||||
$(".multi-view.remove", this).addClass("enabled");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
$(advanceOperations).on("click", ".multi-view.remove.enabled", function () {
|
|
||||||
$(this).parent().remove();
|
|
||||||
});
|
|
||||||
|
|
||||||
// enabling or disabling grouped-input based on the status of a parent check-box
|
|
||||||
$(advanceOperations).on("click", ".grouped-input", function () {
|
|
||||||
updateGroupedInputVisibility(this);
|
|
||||||
});
|
|
||||||
|
|
||||||
// add form entry click function for grid inputs
|
|
||||||
$(advanceOperations).on("click", "[data-click-event=add-form]", function () {
|
|
||||||
var addFormContainer = $("[data-add-form-container=" + $(this).attr("href") + "]");
|
|
||||||
var clonedForm = $("[data-add-form=" + $(this).attr("href") + "]").clone().find("[data-add-form-element=clone]").attr("data-add-form-clone", $(this).attr("href"));
|
|
||||||
|
|
||||||
// adding class .child-input to capture text-input-array-values
|
|
||||||
$("input, select", clonedForm).addClass("child-input");
|
|
||||||
|
|
||||||
$(addFormContainer).append(clonedForm);
|
|
||||||
setId(addFormContainer);
|
|
||||||
showHideHelpText(addFormContainer);
|
|
||||||
});
|
|
||||||
|
|
||||||
// remove form entry click function for grid inputs
|
|
||||||
$(advanceOperations).on("click", "[data-click-event=remove-form]", function () {
|
|
||||||
var addFormContainer = $("[data-add-form-container=" + $(this).attr("href") + "]");
|
|
||||||
|
|
||||||
$(this).closest("[data-add-form-element=clone]").remove();
|
|
||||||
setId(addFormContainer);
|
|
||||||
showHideHelpText(addFormContainer);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
@ -16,6 +16,8 @@
|
|||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var configuredOperations = [];
|
||||||
|
|
||||||
var windowsOperationConstants = {
|
var windowsOperationConstants = {
|
||||||
"PASSCODE_POLICY_OPERATION": "passcode-policy",
|
"PASSCODE_POLICY_OPERATION": "passcode-policy",
|
||||||
"PASSCODE_POLICY_OPERATION_CODE": "PASSCODE_POLICY",
|
"PASSCODE_POLICY_OPERATION_CODE": "PASSCODE_POLICY",
|
||||||
@ -237,21 +239,21 @@ var validatePolicyProfile = function () {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates policy profile object which will be saved with the profile.
|
* Generates policy profile feature list which will be saved with the profile.
|
||||||
*
|
*
|
||||||
* This function will be invoked from the relevant cdmf unit at the time of policy creation.
|
* This function will be invoked from the relevant cdmf unit at the time of policy creation.
|
||||||
*
|
*
|
||||||
* @returns {Array} profile payloads
|
* @returns {Array} profile payloads
|
||||||
*/
|
*/
|
||||||
var generatePolicyProfile = function () {
|
var generateProfileFeaturesList = function () {
|
||||||
var profilePayloads = [];
|
var profilePayloads = [];
|
||||||
// traverses key by key in policy["profile"]
|
// traverses key by key in policy["profile"]
|
||||||
var key;
|
var key;
|
||||||
for (key in policy["profile"]) {
|
for (key in policy["profile"]) {
|
||||||
if (key == windowsOperationConstants["PASSCODE_POLICY_OPERATION_CODE"]) {
|
|
||||||
policy["profile"][key].enablePassword = true;
|
|
||||||
}
|
|
||||||
if (policy["profile"].hasOwnProperty(key)) {
|
if (policy["profile"].hasOwnProperty(key)) {
|
||||||
|
if (key == windowsOperationConstants["PASSCODE_POLICY_OPERATION_CODE"]) {
|
||||||
|
policy["profile"][key].enablePassword = true;
|
||||||
|
}
|
||||||
profilePayloads.push({
|
profilePayloads.push({
|
||||||
"featureCode": key,
|
"featureCode": key,
|
||||||
"deviceType": policy["platform"],
|
"deviceType": policy["platform"],
|
||||||
@ -259,10 +261,27 @@ var generatePolicyProfile = function () {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return profilePayloads;
|
return profilePayloads;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates policy profile object which will be saved with the profile.
|
||||||
|
*
|
||||||
|
* This function will be invoked from the relevant cdmf unit at the time of policy creation.
|
||||||
|
*
|
||||||
|
* @returns {object} generated profile.
|
||||||
|
*/
|
||||||
|
var generatePolicyProfile = function () {
|
||||||
|
return windowsOperationModule.generateProfile(configuredOperations);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resets policy profile configurations.
|
||||||
|
*/
|
||||||
|
var resetPolicyProfile = function () {
|
||||||
|
configuredOperations = [];
|
||||||
|
};
|
||||||
|
|
||||||
// Start of HTML embedded invoke methods
|
// Start of HTML embedded invoke methods
|
||||||
var showAdvanceOperation = function (operation, button) {
|
var showAdvanceOperation = function (operation, button) {
|
||||||
$(button).addClass('selected');
|
$(button).addClass('selected');
|
||||||
@ -272,37 +291,6 @@ var showAdvanceOperation = function (operation, button) {
|
|||||||
$(hiddenOperation + '[data-operation="' + operation + '"]').siblings().hide();
|
$(hiddenOperation + '[data-operation="' + operation + '"]').siblings().hide();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method will display appropriate fields based on wifi type
|
|
||||||
* @param select
|
|
||||||
*/
|
|
||||||
var changeAndroidWifiPolicy = function (select) {
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-password', ['wep', 'wpa', '802eap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-eap', ['802eap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-phase2', ['802eap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-identity', ['802eap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-anoidentity', ['802eap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-cacert', ['802eap']);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method will display appropriate fields based on wifi EAP type
|
|
||||||
* @param select
|
|
||||||
* @param superSelect
|
|
||||||
*/
|
|
||||||
var changeAndroidWifiPolicyEAP = function (select, superSelect) {
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-password', ['peap', 'ttls', 'pwd', 'fast', 'leap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-phase2', ['peap', 'ttls', 'fast']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-provisioning', ['fast']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-identity', ['peap', 'tls', 'ttls', 'pwd', 'fast', 'leap']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-anoidentity', ['peap', 'ttls']);
|
|
||||||
slideDownPaneAgainstValueSet(select, 'control-wifi-cacert', ['peap', 'tls', 'ttls']);
|
|
||||||
if (superSelect.value != '802eap') {
|
|
||||||
changeAndroidWifiPolicy(superSelect);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to slide down a provided pane upon provided value set.
|
* Method to slide down a provided pane upon provided value set.
|
||||||
*
|
*
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user