Current File : /home/exataengenharia/public_html/resources/views/usuarios/edit.blade.php
<!DOCTYPE html>
<html>

<head>
    <title>Edite suas informações</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous">
    </script>
    <link href="/css/app.css" rel="stylesheet">


    <style>
        body {
            padding: 10px;
        }

        .card {
            margin-top: 2rem;
            -webkit-box-shadow: -1px 99px 101px -18px rgba(204, 198, 204, 1);
            -moz-box-shadow: -1px 99px 101px -18px rgba(204, 198, 204, 1);
            box-shadow: -1px 99px 101px -18px rgba(204, 198, 204, 1);

        }

        .formulario label {
            font-size: 20px;
            line-height: 2.5;
            font-weight: 700;
        }

        .formulario .text-infor {
            font-size: 26px;
            margin-left: 1.1rem;
            border: .2px solid blanchedalmond;
            padding: 1rem;
        }

        .hidden {
            display: none;
        }

        .add-informations {
            position: fixed;
            bottom: 20px;
            right: 20px;
        }

        .container__edit {
            margin-top: 5rem;
        }

        .modal-body {
            height: 100vh;
        }

        iframe {
            height: 100%;
        }

        .infor-order {
            border-radius: 50%;
            font-size: 30px;
            height: 100px;
            padding: 1rem;
            opacity: .4;
        }

        #before-link {
            position: relative;
            top: 40px;
            font-size: 1.2rem;
            left: 50px;
            color: #403FD8;
            text-decoration: none;
        }

        /* animate */
        @keyframes pulse {
            0% {
                transform: scale(1);
            }

            50% {
                transform: scale(1.2);
            }

            100% {
                transform: scale(1);
            }
        }

        .button {
            animation-name: pulse;
            animation-duration: 1s;
            animation-iteration-count: infinite;
        }
    </style>
</head>

<a href="{{ route('dashboard') }}" id="before-link"><i class="bi bi-arrow-left"
        style="font-size: 15px;font-weight: 800;"></i> Voltar para a DashBoard</a>

<body>

    <!-- Cabeçalho -->

    <div class="container-fluid">
        <div class="container container__edit">
            <div class="container-fluid container__main__edit">
                <h1>Editar Informações</h1>
            </div>

            @foreach ($informations as $index => $information)
                <div class="card">
                    <div class="card-body">

                        <div class="" style="display: flex;align-items: center;justify-content: space-between;">
                            <span class="infor-order">{{ $index + 1 }} </span>
                        </div>


                        <form class="row form-card" action="{{ route('usuarios.update', $information->id) }}"
                            method="POST" enctype="multipart/form-data">
                            @csrf
                            @method('PUT')

                            <div class="form-group col-md-6 formulario">
                                <label for="residence{{ $index }}">Residência</label>
                                <input type="text" class="form-control residence-input hidden"
                                    id="residence{{ $index }}" name="residence"
                                    value="{{ old('residence', $information->residence) }}">
                                <div class="residence-text text-infor">
                                    {{ $information->residence }}
                                </div>

                                <label for="monthly_generation{{ $index }}">Geração Mensal</label>
                                <input class="format1 form-control monthly-generation-input hidden" inputmode="numeric"
                                     id="monthly_generation{{ $index }}" name="monthly_generation"
                                    value="{{ old('monthly_generation', $information->monthly_generation) }}">
                                <div class="monthly-generation-text text-infor">
                                    {{ $information->monthly_generation }}
                                </div>

                                <label for="annual_savings{{ $index }}">Economia Anual</label>
                                <input class="format2 form-control annual-savings-input hidden" inputmode="numeric"
                                     id="annual_savings{{ $index }}" name="annual_savings"
                                    value="{{ old('annual_savings', $information->annual_savings) }}">
                                <div class="annual-savings-text text-infor">
                                    {{ $information->annual_savings }}
                                </div>

                                <label for="path{{ $index }}">Carregar Imagem</label>
                                <input type="file" class="form-control" id="path{{ $index }}" name="path"
                                    onchange="displaySelectedImage(this, {{ $index }});">

                            </div>

                            <div class="col-md-6">
                                <div class="form-group">
                                    <img class="figure-img card-img-top img-slide"
                                        id="selected-image{{ $index }}"
                                        src="{{ asset('storage/' . $information->path) }}">
                                </div>

                                <div style="display: flex; justify-content: center;align-items: center;">
                                    <button type="submit" id="save-data" class="btn btn-success"
                                        style="margin-right: 2em;">Salvar <i
                                            class="bi bi-clipboard-check-fill"></i></button>
                                    <button class="btn btn-primary editar-button">Editar informações <i
                                            class="bi bi-pencil-square"></i></button>
                                </div>
                                <br>

                            </div>

                        </form>

                        <div class="card-footer">
                            <form action="{{ route('usuarios.destroy', $information->id) }}" method="POST">
                                @csrf
                                @method('DELETE')
                                <button type="submit" class="btn "
                                    style="font-size: 2rem;border-radius: 50%;color: red"> <i
                                        class="bi bi-x-circle-fill"></i> </button>
                            </form>
                        </div>
                    </div>
                </div>
            @endforeach

            <!-- Button trigger modal -->
            <button type="button" class="btn add-informations"
                style="font-size: 2rem;border-radius: 50%;color: #FF5801" data-bs-toggle="modal"
                data-bs-target="#staticBackdrop">
                <i class="bi bi-plus-circle-fill"></i>
            </button>

            <!-- Modal -->
            <div class="modal fade" id="staticBackdrop" data-bs-backdrop="static" data-bs-keyboard="false"
                tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
                <div class="modal-dialog modal-lg">
                    <div class="modal-content">
                        <div class="modal-header">
                            <h1 class="modal-title fs-5" id="staticBackdropLabel">Adicionar novo elemento</h1>
                            <button type="button" id="close" class="btn-close" data-bs-dismiss="modal"
                                aria-label="Close"></button>
                        </div>
                        <div class="modal-body">
                            <iframe src="{{ route('create') }}" width="100%"> </iframe>
                        </div>

                    </div>
                </div>
            </div>

        </div>
    </div>


    <script>
        const close = document.getElementById('close')

        close.addEventListener('click', () => {
            window.location.reload()
        })
    </script>

    <script>
        function displaySelectedImage(input, index) {
            if (input.files && input.files[0]) {
                var reader = new FileReader();

                reader.onload = function(e) {
                    document.getElementById('selected-image' + index).src = e.target.result;
                };

                reader.readAsDataURL(input.files[0]);
            }
        }

        const editarButtons = document.querySelectorAll('.editar-button');
        const residenceInputs = document.querySelectorAll('.residence-input');
        const monthlyGenerationInputs = document.querySelectorAll('.monthly-generation-input');
        const annualSavingsInputs = document.querySelectorAll('.annual-savings-input');
        const textFade = document.querySelectorAll('.text-infor');
        const order = document.getElementById('order')
        let state = Array.from({
            length: editarButtons.length
        }).fill(0); // Array para controlar o estado de cada card

        editarButtons.forEach((button, index) => {
            button.addEventListener('click', (e) => {
                e.preventDefault();

                const residenceInput = residenceInputs[index];
                const monthlyGenerationInput = monthlyGenerationInputs[index];
                const annualSavingsInput = annualSavingsInputs[index];
                const residenceText = textFade[index * 3];
                const monthlyGenerationText = textFade[index * 3 + 1];
                const annualSavingsText = textFade[index * 3 + 2];

                if (state[index]) {
                    residenceInput.classList.add('hidden');
                    residenceText.classList.remove('hidden');

                    monthlyGenerationInput.classList.add('hidden');
                    monthlyGenerationText.classList.remove('hidden');

                    annualSavingsInput.classList.add('hidden');
                    annualSavingsText.classList.remove('hidden');

                    state[index] = 0; // fechado
                } else {
                    residenceInput.classList.remove('hidden');
                    residenceText.classList.add('hidden');

                    monthlyGenerationInput.classList.remove('hidden');
                    monthlyGenerationText.classList.add('hidden');

                    annualSavingsInput.classList.remove('hidden');
                    annualSavingsText.classList.add('hidden');

                    state[index] = 1; // aberto
                }
            });
        });
    </script>
   <script>
  function formatNumber(value) {
    return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
  }

  function updateFormattedValue(input) {
    const rawValue = input.value.replace(/\./g, "");
    const formattedValue = formatNumber(rawValue);

    input.value = formattedValue;
  }

  window.addEventListener("DOMContentLoaded", function() {
    const monthlyGenerationInputs = document.querySelectorAll('.monthly-generation-input');
    const annualSavingsInputs = document.querySelectorAll('.annual-savings-input');

    monthlyGenerationInputs.forEach(function(input) {
      input.addEventListener("input", function() {
        updateFormattedValue(this);
      });

      input.addEventListener("focus", function() {
        this.value = "";
      });
    });

    annualSavingsInputs.forEach(function(input) {
      input.addEventListener("input", function() {
        updateFormattedValue(this);
      });

      input.addEventListener("focus", function() {
        this.value = "";
      });
    });
  });
</script>

</body>

</html>