diff --git a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.ui/src/main/resources/jaggeryapps/devicemgt/app/units/iot.unit.policy.wizard/public/js/policy-create.js b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.ui/src/main/resources/jaggeryapps/devicemgt/app/units/iot.unit.policy.wizard/public/js/policy-create.js
index 84e9886436..4c838a1c48 100644
--- a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.ui/src/main/resources/jaggeryapps/devicemgt/app/units/iot.unit.policy.wizard/public/js/policy-create.js
+++ b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.ui/src/main/resources/jaggeryapps/devicemgt/app/units/iot.unit.policy.wizard/public/js/policy-create.js
@@ -73,7 +73,6 @@ validateStep["policy-profile"] = function () {
};
stepForwardFrom["policy-profile"] = function () {
- policy["profile"] = operationModule.generateProfile(policy["platform"], configuredOperations);
// updating next-page wizard title with selected platform
$("#policy-criteria-page-wizard-title").text("ADD " + deviceTypeLabel + " POLICY");
};
@@ -105,6 +104,8 @@ stepForwardFrom["policy-criteria"] = function () {
policy["selectedUsers"] = $("#users-input").val();
} else if ($(this).attr("id") == "user-roles-radio-btn") {
policy["selectedUserRoles"] = $("#user-roles-input").val();
+ } else if ($(this).attr("id") == "groups-radio-btn") {
+ policy["selectedUserGroups"] = $("#groups-input").val();
}
}
}
@@ -247,12 +248,15 @@ var savePolicy = function (policy, state) {
invokerUtil.post(
serviceURL,
payload,
- function () {
- $(".add-policy").addClass("hidden");
- $(".policy-naming").addClass("hidden");
- $(".policy-message").removeClass("hidden");
- if (state == "publish") {
- publishToDevice();
+ function (response) {
+ response = JSON.parse(response);
+ if (response["statusCode"] == 201) {
+ $(".add-policy").addClass("hidden");
+ $(".policy-naming").addClass("hidden");
+ $(".policy-message").removeClass("hidden");
+ if (state == "publish") {
+ publishToDevice();
+ }
}
},
function (err) {
@@ -351,6 +355,31 @@ function formatRepoSelection(user) {
return user.username || user.text;
}
+function formatGroupRepo(group) {
+ if (group.loading) {
+ return group.text
+ }
+ if (!group.name) {
+ return;
+ }
+ var markup = '
' +
+ '
' +
+ '
' +
+ '
' + group.name + '
';
+ if (group.name) {
+ markup += '
' + group.name + '
';
+ }
+ if (group.owner) {
+ markup += '
' + group.owner + '
';
+ }
+ markup += '
';
+ return markup;
+}
+
+function formatGroupRepoSelection(group) {
+ return group.name || group.text;
+}
+
// End of functions related to grid-input-view
@@ -372,46 +401,85 @@ $(document).ready(function () {
});
$("#users-input").select2({
- multiple: true,
- tags: true,
- ajax: {
- url: window.location.origin + "/devicemgt/api/invoker/execute/",
- method: "POST",
- dataType: 'json',
- delay: 250,
- id: function (user) {
- return user.username;
- },
- data: function (params) {
- var postData = {};
- postData.actionMethod = "GET";
- postData.actionUrl = "/devicemgt_admin/users";
- postData.actionPayload = JSON.stringify({
- q: params.term, // search term
- page: params.page
- });
-
- return JSON.stringify(postData);
- },
- processResults: function (data, page) {
- var newData = [];
- $.each(data.responseContent, function (index, value) {
- value.id = value.username;
- newData.push(value);
- });
- return {
- results: newData
- };
- },
- cache: true
- },
- escapeMarkup: function (markup) {
- return markup;
- }, // let our custom formatter work
- minimumInputLength: 1,
- templateResult: formatRepo, // omitted for brevity, see the source of this page
- templateSelection: formatRepoSelection // omitted for brevity, see the source of this page
- });
+ multiple: true,
+ tags: true,
+ ajax: {
+ url: window.location.origin + "/devicemgt/api/invoker/execute/",
+ method: "POST",
+ dataType: 'json',
+ delay: 250,
+ id: function (user) {
+ return user.username;
+ },
+ data: function (params) {
+ var postData = {};
+ postData.actionMethod = "GET";
+ postData.actionUrl = "/devicemgt_admin/users";
+ postData.actionPayload = JSON.stringify({
+ q: params.term, // search term
+ page: params.page
+ });
+
+ return JSON.stringify(postData);
+ },
+ processResults: function (data, page) {
+ var newData = [];
+ $.each(data.responseContent, function (index, value) {
+ value.id = value.username;
+ newData.push(value);
+ });
+ return {
+ results: newData
+ };
+ },
+ cache: true
+ },
+ escapeMarkup: function (markup) {
+ return markup;
+ }, // let our custom formatter work
+ minimumInputLength: 1,
+ templateResult: formatRepo, // omitted for brevity, see the source of this page
+ templateSelection: formatRepoSelection // omitted for brevity, see the source of this page
+ });
+
+ $("#groups-input").select2({
+ multiple: true,
+ tags: true,
+ ajax: {
+ url: window.location.origin + "/devicemgt/api/invoker/execute/",
+ method: "POST",
+ dataType: 'json',
+ delay: 250,
+ id: function (group) {
+ return group.name;
+ },
+ data: function (params) {
+ var postData = {};
+ postData.actionMethod = "GET";
+ var username = $("#platform").data("username");
+ postData.actionUrl = "/devicemgt_admin/groups/user/" + username +
+ "/search?groupName=" + params.term;
+ return JSON.stringify(postData);
+ },
+ processResults: function (data, page) {
+ var newData = [];
+ $.each(data, function (index, value) {
+ value.id = value.name;
+ newData.push(value);
+ });
+ return {
+ results: newData
+ };
+ },
+ cache: true
+ },
+ escapeMarkup: function (markup) {
+ return markup;
+ }, // let our custom formatter work
+ minimumInputLength: 1,
+ templateResult: formatGroupRepo, // omitted for brevity, see the source of this page
+ templateSelection: formatGroupRepoSelection // omitted for brevity, see the source of this page
+ });
// Adding initial state of wizard-steps.
$("#policy-profile-wizard-steps").html($(".wr-steps").html());
@@ -427,16 +495,24 @@ $(document).ready(function () {
});
$("#users-select-field").hide();
+ $("#groups-select-field").hide();
$("#user-roles-select-field").show();
$("input[type='radio'].select-users-radio").change(function () {
+ if ($("#user-roles-radio-btn").is(":checked")) {
+ $("#user-roles-select-field").show();
+ $("#users-select-field").hide();
+ $("#groups-select-field").hide();
+ }
if ($("#users-radio-btn").is(":checked")) {
$("#user-roles-select-field").hide();
$("#users-select-field").show();
+ $("#groups-select-field").hide();
}
- if ($("#user-roles-radio-btn").is(":checked")) {
+ if ($("#groups-radio-btn").is(":checked")) {
+ $("#user-roles-select-field").hide();
$("#users-select-field").hide();
- $("#user-roles-select-field").show();
+ $("#groups-select-field").show();
}
});
@@ -657,7 +733,9 @@ $(document).ready(function () {
// hiding current section of the wizard and showing next section.
$("." + currentStep).addClass("hidden");
- $("." + nextStep).removeClass("hidden");
+ if (nextStep !== "policy-message") {
+ $("." + nextStep).removeClass("hidden");
+ }
}
});
});
diff --git a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.ui/src/main/resources/jaggeryapps/devicemgt/app/units/iot.unit.policy.wizard/wizard.hbs b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.ui/src/main/resources/jaggeryapps/devicemgt/app/units/iot.unit.policy.wizard/wizard.hbs
index 4cc6fa2726..1c661f0002 100644
--- a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.ui/src/main/resources/jaggeryapps/devicemgt/app/units/iot.unit.policy.wizard/wizard.hbs
+++ b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.ui/src/main/resources/jaggeryapps/devicemgt/app/units/iot.unit.policy.wizard/wizard.hbs
@@ -2,7 +2,7 @@
{{css "css/codemirror.css"}}
{{/zone}}
+ data-platform-label="{{type.label}}" data-username="{{username}}">
@@ -23,7 +23,7 @@
3
-
Assign to groups
+
Assign
@@ -130,48 +130,80 @@
-
Step 3: Assign to groups
+
Step 3: Assign