/** * WordPress dependencies */ const { __ } = wp.i18n; const { apiFetch } = wp; const { Component, Fragment } = wp.element; const { Button, PanelBody, SelectControl } = wp.components; class ChartPermissions extends Component { constructor() { super( ...arguments ); this.getPermissionData = this.getPermissionData.bind( this ); this.state = { users: [], roles: [] }; } async componentDidMount() { if ( 'business' === visualizerLocalize.isPro ) { const permissions = this.props.chart['visualizer-permissions']; if ( permissions.permissions !== undefined ) { if ( permissions.permissions.read !== undefined && permissions.permissions.edit !== undefined ) { if ( 'users' === permissions.permissions.read || 'users' === permissions.permissions.edit ) { let data = await apiFetch({ path: '/visualizer/v1/get-permission-data?type=users' }); this.setState({ users: data }); } if ( 'roles' === permissions.permissions.read || 'roles' === permissions.permissions.edit ) { let data = await apiFetch({ path: '/visualizer/v1/get-permission-data?type=roles' }); this.setState({ roles: data }); } } } } } async getPermissionData( type ) { if ( 'business' === visualizerLocalize.isPro ) { if ( 'users' === type && 0 === ( this.state.users ).length ) { let data = await apiFetch({ path: `/visualizer/v1/get-permission-data?type=${type}` }); this.setState({ users: data }); } if ( 'roles' === type && 0 === ( this.state.roles ).length ) { let data = await apiFetch({ path: `/visualizer/v1/get-permission-data?type=${type}` }); this.setState({ roles: data }); } } } render() { let permissions = this.props.chart['visualizer-permissions']; return ( { ( 'business' === visualizerLocalize.isPro ) ? { permissions.permissions.read = e; this.props.edit( permissions ); if ( 'users' === e || 'roles' === e ) { this.getPermissionData( e ); } } } /> { ( 'users' === permissions.permissions.read || 'roles' === permissions.permissions.read ) && { permissions.permissions['read-specific'] = e; this.props.edit( permissions ); } } /> } :

{ __( 'Upgrade your license to at least the DEVELOPER version to activate this feature!' ) }

} { ( 'business' === visualizerLocalize.isPro ) ? { permissions.permissions.edit = e; this.props.edit( permissions ); if ( 'users' === e || 'roles' === e ) { this.getPermissionData( e ); } } } /> { ( 'users' === permissions.permissions.edit || 'roles' === permissions.permissions.edit ) && { permissions.permissions['edit-specific'] = e; this.props.edit( permissions ); } } /> } :

{ __( 'Upgrade your license to at least the DEVELOPER version to activate this feature!' ) }

}
); } } export default ChartPermissions;