class Printers extends React.Component { constructor(props) { super(props); this.state = { selectedPrinterIndex: 0, clientPrinter: null, installedPrinters: [], printerName: "", printerNetworkIp: "", printerNetworkPort: 0, printerNetworkDns: "", printerLptPort: "", printerSerialPort: "", printerSerialPortBaudRate: 0, printerSerialPortParity: 0, printerSerialPortStopBit: 0, printerSerialPortDataBits: 0, printerSerialPortFlowControl: 0 }; } setInstalledPrinters(printersList) { //no need to re-render this.state.installedPrinters = printersList; this.state.printerName = printersList[0]; this.updateClientPrinter(); } setPrinterState(event) { this.setState({ [event.target.name]: event.target.value }); this.state[event.target.name] = event.target.value; this.updateClientPrinter(); } updateClientPrinter() { //no need to re-render if (this.state.selectedPrinterIndex == 0) { this.state.clientPrinter = new JSPM.DefaultPrinter(); } else if (this.state.selectedPrinterIndex == 1) { this.state.clientPrinter = new JSPM.UserSelectedPrinter(); } else if (this.state.selectedPrinterIndex == 2) { this.state.clientPrinter = new JSPM.InstalledPrinter( this.state.printerName ); } else if (this.state.selectedPrinterIndex == 3) { this.state.clientPrinter = new JSPM.NetworkPrinter( this.state.printerNetworkPort, this.state.printerNetworkIp, this.state.printerNetworkDns ); } else if (this.state.selectedPrinterIndex == 4) { this.state.clientPrinter = new JSPM.ParallelPortPrinter( this.state.printerLptPort ); } else if (this.state.selectedPrinterIndex == 5) { this.state.clientPrinter = new JSPM.SerialPortPrinter( this.state.printerSerialPort, this.state.printerSerialPortBaudRate, this.state.printerSerialPortParity, this.state.printerSerialPortStopBits, this.state.printerSerialPortDataBits, this.state.printerSerialPortFlowControl ); } this.props.onPrinterChange(this.state.clientPrinter); } componentDidMount() { //get client installed printers JSPM.JSPrintManager.Caller = this; JSPM.JSPrintManager.getPrinters().then(function(printersList) { JSPM.JSPrintManager.Caller.setInstalledPrinters(printersList); }); } render() { let netPrinter = this.props.JobContentType == 0 ? ( ) : ( "" ); let lptPrinter = this.props.JobContentType == 0 ? ( ) : ( "" ); let rs232Printer = this.props.JobContentType == 0 ? ( ) : ( "" ); let printerSettings = (