diff --git a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/AssignGroups/index.js b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/AssignGroups/index.js index 38df0b9605..533d23ab11 100644 --- a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/AssignGroups/index.js +++ b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/AssignGroups/index.js @@ -48,6 +48,22 @@ class AssignGroups extends React.Component { } }; + // generate payload by adding Assign Groups + onHandleContinue = (e, formName) => { + this.props.form.validateFields((err, values) => { + if (!err) { + if (!values.users) { + delete values.users; + } + if (values.deviceGroups === 'NONE') { + delete values.deviceGroups; + } + this.props.getPolicyPayloadData(formName, values); + this.props.getNextStep(); + } + }); + }; + getRolesList = () => { let apiURL = window.location.origin + @@ -164,7 +180,9 @@ class AssignGroups extends React.Component { style={{ display: 'block' }} > - {getFieldDecorator('roles', {})( + {getFieldDecorator('roles', { + initialValue: 'ANY', + })( {this.state.groups.map(group => ( @@ -219,7 +239,10 @@ class AssignGroups extends React.Component { - diff --git a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/ConfigureProfile/index.js b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/ConfigureProfile/index.js index a17ad5d6a0..7d0d45c27c 100644 --- a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/ConfigureProfile/index.js +++ b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/ConfigureProfile/index.js @@ -295,6 +295,16 @@ class ConfigureProfile extends React.Component { return columns; }; + // generate payload by adding policy configurations + onHandleContinue = (e, formname) => { + this.props.form.validateFields((err, values) => { + if (!err) { + this.props.getPolicyPayloadData(formname, values); + this.props.getNextStep(); + } + }); + }; + // generate form items getPanelItems = panel => { const { getFieldDecorator } = this.props.form; @@ -710,9 +720,24 @@ class ConfigureProfile extends React.Component { } > -
-
{this.getPanelItems(panel.panelItem)}
-
+ {panel.hasOwnProperty('panelItem') && ( +
+
{this.getPanelItems(panel.panelItem)}
+
+ )} + {panel.hasOwnProperty('subFormLists') && ( +
+ {Object.values(panel.subFormLists).map( + (form, i) => { + return ( +
+ {this.getPanelItems(form.panelItem)} +
+ ); + }, + )} +
+ )} @@ -727,7 +752,10 @@ class ConfigureProfile extends React.Component { - diff --git a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/PublishDevices/index.js b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/PublishDevices/index.js index 8075d5789c..af7de28dd4 100644 --- a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/PublishDevices/index.js +++ b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/PublishDevices/index.js @@ -26,6 +26,17 @@ class PublishDevices extends React.Component { this.config = this.props.context; } + onClickSavePolicy = (event, isPublish, formName) => { + this.props.form.validateFields((err, values) => { + if (!err) { + if (isPublish) { + Object.assign(values, { active: isPublish }); + } + this.props.getPolicyPayloadData(formName, values); + } + }); + }; + render() { const { getFieldDecorator } = this.props.form; return ( @@ -51,10 +62,23 @@ class PublishDevices extends React.Component { - - + diff --git a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/SelectPlatform/index.js b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/SelectPlatform/index.js index 4a335dfed1..cb67f39898 100644 --- a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/SelectPlatform/index.js +++ b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/components/SelectPlatform/index.js @@ -19,15 +19,11 @@ import React from 'react'; import axios from 'axios'; import { Card, Col, Icon, message, notification, Row } from 'antd'; -import TimeAgo from 'javascript-time-ago'; -// Load locale-specific relative date/time formatting rules. -import en from 'javascript-time-ago/locale/en'; import { withConfigContext } from '../../../../../../../../components/ConfigContext'; class SelectPlatform extends React.Component { constructor(props) { super(props); - TimeAgo.addLocale(en); this.config = this.props.context; this.state = { data: [], @@ -39,8 +35,12 @@ class SelectPlatform extends React.Component { this.getDeviceTypes(); } - onClickCard = (e, type) => { + onClickCard = (e, type, formname) => { this.props.getPolicyConfigJson(type); + let deviceType = { + deviceType: type, + }; + this.props.getPolicyPayloadData(formname, deviceType); }; // fetch data from api @@ -91,7 +91,9 @@ class SelectPlatform extends React.Component { size="default" style={{ width: 150 }} bordered={true} - onClick={e => this.onClickCard(e, data.name)} + onClick={e => + this.onClickCard(e, data.name, 'selectedPlatformData') + } cover={ { + this.props.form.validateFields((err, values) => { + if (!err) { + if (values.correctiveActions === 'NONE') { + values.correctiveActions = []; + } + this.props.getPolicyPayloadData(formName, values); + this.props.getNextStep(); + } + }); + }; + fetchPolicies = () => { let apiUrl = window.location.origin + @@ -142,7 +155,10 @@ class SelectPolicyType extends React.Component { - diff --git a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/index.js b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/index.js index 082aaaec85..908c110cf0 100644 --- a/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/index.js +++ b/components/device-mgt/io.entgra.device.mgt.ui/react-app/src/scenes/Home/scenes/Policies/components/AddPolicy/index.js @@ -35,9 +35,47 @@ class AddPolicy extends React.Component { currentStepIndex: 0, isLoading: false, policyUIConfigurationsList: [], + newPolicyPayload: { compliance: 'enforce' }, + policyProfile: {}, + payloadData: {}, }; } + getPolicyPayloadData = (dataName, dataValue) => { + Object.defineProperty(this.state.payloadData, dataName, { + value: dataValue, + writable: true, + }); + if (dataName === 'publishDevicesData') { + this.createPayload(); + } + }; + + createPayload = () => { + const { newPolicyPayload } = this.state; + const { + publishDevicesData, + selectedPlatformData, + policyProfile, + policyTypeData, + groupData, + } = this.state.payloadData; + let profile = { + policyName: publishDevicesData.policyName, + devicetype: selectedPlatformData.deviceType, + }; + + let payload = Object.assign( + newPolicyPayload, + publishDevicesData, + policyProfile, + policyTypeData, + groupData, + { profile: profile }, + ); + console.log(payload); + }; + getPolicyConfigJson = type => { this.setState({ isLoading: true }); @@ -107,6 +145,7 @@ class AddPolicy extends React.Component { >
@@ -122,6 +162,7 @@ class AddPolicy extends React.Component { style={{ display: currentStepIndex === 2 ? 'unset' : 'none' }} > @@ -130,6 +171,7 @@ class AddPolicy extends React.Component { style={{ display: currentStepIndex === 3 ? 'unset' : 'none' }} > @@ -137,7 +179,10 @@ class AddPolicy extends React.Component {
- +
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/config/DataPanel.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/config/DataPanel.java index efb9fe2edb..2ab613f523 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/config/DataPanel.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/config/DataPanel.java @@ -67,6 +67,10 @@ public class DataPanel { @XmlElement(name = "PanelItem") private List panelItem; + @XmlElementWrapper(name = "SubFormsList") + @XmlElement(name = "SubForm") + private List subFormLists; + public String getPaneId() { return panelId; } @@ -99,4 +103,11 @@ public class DataPanel { this.panelItem = panelItem; } + public List getSubPanelLists() { + return subFormLists; + } + + public void setSubPanelLists(List subFormLists) { + this.subFormLists = subFormLists; + } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/config/SubFormList.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/config/SubFormList.java new file mode 100644 index 0000000000..d4a020e823 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/config/SubFormList.java @@ -0,0 +1,24 @@ +package org.wso2.carbon.device.mgt.extensions.device.type.template.config; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import java.util.List; + +public class SubFormList { + @XmlAttribute(name = "id", required = true) + protected String id; + + @XmlElementWrapper(name = "PanelItems") + @XmlElement(name = "PanelItem") + private List panelItem; + + public List getPanelItemList() { + return panelItem; + } + + public void setPanelItemList(List panelItem) { + this.panelItem = panelItem; + } +} +