From 38192d7d93254893ef0e7ec3107c022da8be499f Mon Sep 17 00:00:00 2001 From: Jibin Thomas Date: Sun, 14 Oct 2018 14:57:17 +0530 Subject: Refactor and modernize code base (#5) Fixes #3 - * Updated all the dependencies to latest version * Config files updated * Moved the files to src directory * Updated README file * Configured package.json and README.md for production build * Added gh-pages package * Added production details in README.md * Removed unnecessary script tag from index.html * Change the fonts to ubuntu --- src/index.js | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 src/index.js (limited to 'src/index.js') diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..c1c6825 --- /dev/null +++ b/src/index.js @@ -0,0 +1,114 @@ +import './style.scss'; + +import { Netmask } from 'netmask'; +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; + +class IPAddress extends Component { + constructor(props) { + super(props); + this.state = { + octets: [10, 88, 135, 144], + cidr: 28 + }; + this.handleChange = this.handleChange.bind(this); + } + + handleChange(event) { + var octets = this.state.octets; + var val = +event.target.value.replace(/[^0-9]/g, ''); + var octet = event.target.attributes['data-octet'].value; + if (octet == 'cidr') { + if (val <= 32) { + this.setState({ + cidr: val + }); + } + } else { + if (val <= 255) { + octets[+octet] = val; + this.setState({ + octets: octets + }); + } + } + } + + getPretty() { + return this.state.octets.join('.') + '/' + this.state.cidr; + } + + render() { + var details = new Netmask(this.getPretty()); + + return ( +
+
+ {[...Array(4)].map((x, octet) => ( + + + {octet == '3' ? '/' : '.'} + + ))} + +
+ +
+
    + {[...Array(4)].map((x, octet) => ( +
  1. +
      + {[...Array(8)].map((x, bit) => ( +
    1. this.state.cidr - 1 + ? 'bit masked' + : 'bit unmasked' + } + > + {(this.state.octets[octet] & (1 << (7 - bit))) >> + (7 - bit)} +
    2. + ))} +
    +
  2. + ))} +
+
+ +
+ + {details.mask} + Netmask + + + {details.first} + First IP + + + {details.last} + Last IP + + + {details.size.toLocaleString()} + Count + +
+
+ ); + } +} + +ReactDOM.render(, document.getElementById('app')); -- cgit v1.3.1