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 84e988643..4c838a1c4 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 4cc6fa272..1c661f000 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}}">