JSFiddle - React, Tailwind, and code Playground

HTML

<body>
    <div class="container">
        <div class="row">
            <div class="span4 offset1">
                <div id="calculator" ng-controller="Calculator">
                    <form class="form-horizontal">

                        <!-- Buffer for Growth -->
                        <div class="control-group">
                            <label class="control-label">Buffer for Growth (%)</label>
                            <div class="controls">
                                <input type="text" name="growthbuffer" ng-model="buffer_for_growth" ng-change="recalculate()"/>
                            </div>
                        </div>

                        <!-- Number of Cameras -->
                        <div class="control-group">
                            <label class="control-label">Number of Cameras</label>
                            <div class="controls">
                                <input type="text" name="cameras" ng-model="camera_count" ng-change="recalculate()"/>
                            </div>
                        </div>

                        <!-- FPS -->
                        <div class="control-group">
                            <label class="control-label">FPS</label>
                            <div class="controls">
                                <input type="text" name="fps" ng:format="number" ng-model="fps" ng-change="recalculate()"/>
                            </div>
                        </div>

                        <!-- Bitrate -->
                        <div class="control-group">
                            <label class="control-label">Bitrate</label>
                            <div class="controls">
                                <input type="text" name="bitrate" ng:format="number" ng-model="bitrate" ng-change="recalculate()"/>
                            </div>
                        </div>


                        <!-- Recorded Hours -->
                        <div class="control-group">
    ...

JavaScript

function Calculator($scope) {

$scope.earnings_dollar = 0.00;
$scope.earnings_percent = 0.00;
$scope.bandwidth = 0;
$scope.camera_count = "42";
$scope.bitrate = "2000";
$scope.fps = "10";
$scope.recorded_hours = "24";
$scope.motion_percentage = "30";
$scope.days_retained = "30";
$scope.number_days_recorded = "4.95";
$scope.colors = [
{name:'mjpeg', shade:'dark'},
{name:'mpeg4', shade:'light'},
{name:'h264', shade:'dark'}
];

$scope.normalize = function() {
    var control_group, num, out, prop, val, _i, _len, _ref;
    out = {};
    _ref = ['camera_count', 'fps', 'number_days_recorded', 'bitrate', 'recorded_hours', 'motion_percentage'];

    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
        prop = _ref[_i];
        val = $scope[prop].replace("$", "");
        num = parseFloat(val);
        control_group = $("input[name='" + prop + "']").parent();

        if (isNaN(num)) {
            control_group.addClass("error");
            return null;
        } 
        else {
            control_group.removeClass("error");
            out[prop] = num;
        }
    }
    return out;
};

$scope.recalculate = function() {
    var cost_basis, initial_camera_value, proceeds, props, trade_return;
    props = $scope.normalize();
    if (!props) {
        return;
    }

    //bandwidth
    var storagekbs = props.fps * props.bitrate;
    storagekbs = props.fps * props.bitrate;
    var ultstorage = props.camera_count * storagekbs;
    var bandwidth = ultstorage/1000;
    $scope.bandwidth = bandwidth;

    //live storage
    var storagekbithr = storagekbs*3600;
    var grossstorkbday = (storagekbithr * props.recorded_hours)/8;
    var grossstorgbday = grossstorkbday/1000000000;
    var motiongbcam = grossstorgbday * props.motion_percentage;
    var netgbday = motiongbcam * props.camera_count;
    $scope.livestorage = netgbday * (props.recorded_hours / 24);

};

};