Browse Source

Added Equity Growth Rate calculator component

tyson 5 months ago
parent
commit
c471870e8e

+ 25 - 0
app/Livewire/EquityGrowthCalculator.php

@@ -0,0 +1,25 @@
+<?php
+
+namespace App\Livewire;
+
+use Livewire\Component;
+
+class EquityGrowthCalculator extends Component
+{
+    public $currentEquity = 1;
+    public $initialEquity = 1;
+    public $years = 10;
+
+    public $growthRate;
+
+    public function calculateEquityGrowth()
+    {
+
+        $this->growthRate = floor((($this->currentEquity / $this->initialEquity)**(1 / $this->years) -1) * 100);
+
+    }
+    public function render()
+    {
+        return view('livewire.equity-growth-calculator');
+    }
+}

+ 13 - 0
app/Livewire/MarginOfSafetyCalculator.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Livewire;
+
+use Livewire\Component;
+
+class MarginOfSafetyCalculator extends Component
+{
+    public function render()
+    {
+        return view('livewire.marginof-safety-calculator');
+    }
+}

+ 23 - 0
resources/views/components/layouts/app.blade.php

@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <title>{{ config('app.name', 'Livewire App') }}</title>
+
+    <!-- Bootstrap CSS (optional) -->
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
+
+    @livewireStyles
+</head>
+<body>
+<div class="container py-4">
+    {{ $slot }}
+</div>
+
+@livewireScripts
+
+<!-- Bootstrap JS (optional) -->
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>

+ 50 - 0
resources/views/livewire/equity-growth-calculator.blade.php

@@ -0,0 +1,50 @@
+<div>
+    <div class="container py-5">
+        <div class="row mb-4">
+            <div class="col">
+                <div class="card shadow border-0 bg-primary text-white">
+                    <div class="card-header bg-dark text-white">
+                        <h5 class="mb-0">Equity Growth Rate</h5>
+                    </div>
+                    <div class="card-body">
+                        <form wire:submit.prevent="calculate">
+                            <div class="row mb-3">
+                                <div class="col-md-4">
+                                    <label for="currentEquity" class="form-label">Current Equity</label>
+                                    <input type="number" step="any" wire:model="currentEquity" wire:change="calculateEquityGrowth" class="form-control" id="currentEquity">
+                                </div>
+                                <div class="col-md-4">
+                                    <label for="initialEquity" class="form-label">Initial Equity</label>
+                                    <input type="number" step="any" wire:model="initialEquity" wire:change="calculateEquityGrowth" class="form-control" id="initialEquity">
+                                </div>
+                                <div class="col-md-4">
+                                    <label for="years" class="form-label">Number of Years</label>
+                                    <input type="number" wire:model="years" wire:change="calculateEquityGrowth" class="form-control" id="years" value="10">
+                                </div>
+                            </div>
+                        </form>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+
+        <div class="row">
+            <div class="col">
+                <div class="card shadow border-0 bg-info text-dark">
+                    <div class="card-header bg-dark text-white">
+                        <h5 class="mb-0">Calculated Results</h5>
+                    </div>
+                    <div class="card-body text-center">
+                        <p><strong>Equity Growth Rate:<span class="text-success">{{$growthRate}}%</span></strong></p>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+
+    </div>
+
+
+</div>

+ 56 - 0
resources/views/livewire/margin-of-safety-calculator.blade.php

@@ -0,0 +1,56 @@
+<div>
+    <div class="container py-5">
+    <div class="row mb-4">
+        <div class="col">
+            <div class="card shadow border-0 bg-success text-white">
+                <div class="card-header bg-dark text-white">
+                    <h5 class="mb-0">EPS & Growth Inputs</h5>
+                </div>
+                <div class="card-body">
+                    <form wire:submit.prevent="calculate">
+                        <div class="row mb-3">
+                            <div class="col-md-4">
+                                <label for="currentEPS" class="form-label">Current EPS</label>
+                                <input type="number" step="any" wire:model="currentEPS" class="form-control" id="currentEPS">
+                            </div>
+                            <div class="col-md-4">
+                                <label for="growthRate" class="form-label">Future Growth Rate (%)</label>
+                                <input type="number" step="any" wire:model="growthRate" class="form-control" id="growthRate">
+                            </div>
+                            <div class="col-md-4">
+                                <label for="futurePE" class="form-label">Future PE</label>
+                                <input type="number" step="any" wire:model="futurePE" class="form-control" id="futurePE">
+                            </div>
+                        </div>
+                        <div class="row mb-3">
+                            <div class="col-md-6">
+                                <label for="minReturn" class="form-label">Minimum Acceptable Rate of Return (%)</label>
+                                <input type="number" step="any" wire:model="minReturn" class="form-control" id="minReturn">
+                            </div>
+                            <div class="col-md-6">
+                                <label for="readonlyYears" class="form-label">Number of Years</label>
+                                <input type="number" wire:model="years" class="form-control" id="readonlyYears" readonly>
+                            </div>
+                        </div>
+                        <button type="submit" class="btn btn-light">Calculate</button>
+                    </form>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div class="row">
+        <div class="col">
+            <div class="card shadow border-0 bg-info text-dark">
+                <div class="card-header bg-dark text-white">
+                    <h5 class="mb-0">Calculated Results</h5>
+                </div>
+                <div class="card-body">
+                    <p><strong>Sticker Price:</strong> ${{ number_format($stickerPrice, 2) }}</p>
+                    <p><strong>Margin of Safety:</strong> ${{ number_format($marginOfSafety, 2) }}</p>
+                </div>
+            </div>
+        </div>
+    </div>
+    </div>
+</div>

+ 1 - 3
routes/web.php

@@ -2,6 +2,4 @@
 
 use Illuminate\Support\Facades\Route;
 
-Route::get('/', function () {
-    return view('welcome');
-});
+Route::get('/', \App\Livewire\EquityGrowthCalculator::class)->name('equity-growth-calculator');