jquery – Preciso de algo gratuito que me permita adicionar post types e mostrar os dados na tabela no front end com múltiplos filtros

Eu estou há semanas procurando algum plugin que me permita criar um advanced custom post type igual o PODs ou o JetEngine e transformar os dados desses posts types em tabelas no front end para que o cliente possa filtrar de vários jeitos a mesma tabela.

O Pods me ajuda muito nisso por ser gratuito, então consigo criar os diversos posts types que preciso, exemplo:

Alunos > Adicionar Alunos (Dentro tem vários inputs que eu mesma criei apenas para alunos)
Professores > Adicionar Professores (Dentro tem vários inputs que eu mesma criei apenas para professores)
Aulas > Adicionar Aulas (Dentro tem vários inputs que eu mesma criei apenas para aulas)

Porém não encontrei nenhum plugin que eu conseguisse integrar com o pods para fazer tabelas com multiplos filtros para mostrar no front end.

Já usei contact form 7 com outros plugins
Ja usei data tables
Já usei ninja forms, entre outros…
Já usei vários, porém, eu preciso de plugins gratuitos no momento, e nenhum me permite fazer isso.

Agora no momento estou pensando em criar um plugin simples, onde eu iria fazer vários posts types com o PODS e usar a API do wordpress apenas para mostrar os dados em uma tabela HTML/jQuery onde a tabela seria atualizada automaticamente sempre que adicionasse um post, seja de aluno, de professor ou de aulas…

É viável? Se sim, qual API é melhor para eu utilizar?

Existe algum plugin gratuito para tal?

OBS: Eu sei que o contact form 7 permite usar uns posts types avançados para isso, mas a documentação é bem confusa para mim.

html – Como mostrar datos segun dato seleccionado desde un select en otro select en angular9?

Estoy intentando mostrar los datos que tengo en un select, los datos los obtengo desde un Array, El nombre de cada estado los muestra bien,pero yo quiero que al hacer click en un estado muestre los nombres que contiene ese estado en otro select y al hacer click en el otro estado que muestre los nombres también. Como podría lograr hacerlo?

En el select state1 y state2, al hacer click en state1 tendria que mostrar en otro select muni1 y muni2 , lo mismo con state2.

el html:

<div class="form-group">
      <li *ngFor="let data of dat">
            <select class="form-control" type="text"> 
                <option *ngFor="let estados of data.states">
                     {{estados.name}}
            </option>
    </select>
      </li>
 </div>

el archivo ts

public dat = [
    {
      "id": 0,
      "country": "EEUU",
      "states": [
        {
          "id": 1, 
          "name": "state1", 
          "muni": [
            {
              "id": 1, 
              "name": "muni1", 
            },
             {
              "id": 2, 
              "name": "muni2", 
            }
          ]
        },
        {
          "id": 2, 
          "name": "state2", 
          "muni": [
            {
              "id": 1, 
              "name": "otra1", 
            },
             {
              "id": 2, 
              "name": "otra2", 
            }
          ]
        },
     }
  ]

javascript – Mostrar navbar em todas as páginas exceto na Home com react, mantendo animação da navbar

Estou criando um app react, cujo navbar deve aparecer em todas as páginas exceto na home.

criei um component navbar, que era chamado dentro do arquivo de renderização do meu app, antes da rota ser chamada.

Component App

function App() {

return (
 <BrowserRouter >
  <div className="container">
    <Navbar/> // navbar sendo executada antes da rota
    <Routes />
    <Footer />
  </div>
 </BrowserRouter>
);
}

Meu arquivo de rotas

function Routes(){
return (
<div>
  <Switch> 
    <Route path="/" exact component={Home}/>
    <Route path="/rankings" exact component={Rankings}/>
    <Route path="/rules" component={Rules}/>
    <Route path="/about" component={About}/> 
    <Route path={`/rankings/players`} exact component={Players}/>
    <Route path={`/rankings/clans`} exact component={Clans}/>
  </Switch>
</div>
);

}

Porém a solução acima não permitia que eu removesse a Navbar da Home, dessa forma inseri o código <Navbar/> em todas as rotas, exceto na home:

Exemplo página HOME sem navbar:

inserir a descrição da imagem aqui

Exemplo página RULES com navbar

inserir a descrição da imagem aqui

porém foi uma solução ruim, pois, como eu inseri o navbar em todas as páginas, para que fosse possível remove-lo somente da Home, o navbar que possui uma animação ao carregar a página, realiza essa animação toda vez que uma nova rota é chamada.

inserir a descrição da imagem aqui

Como posso usar o menu apenas uma vez e remove-lo da rota home mantendo essa animação?

Estou usando react-router-dom para as rotas.

Problema con contenedor para mostrar formulario usando Bootstrap 4 y Laravel

espero alguien pueda ayudarme, estoy haciendo unos formularios en laravel y quiero que se muestren en casi toda la pantalla del ordenador , ya hice uno y hace lo que quiero
Este es el formulario que se comporta como quiero, hay 3 inputs en cada columna pero el contenedor donde están está del ancho que quiero
Form primero

y aquí esta el código del formulario

VISTA DEL FORMULARIO

@csrf
<div class="container">
    <div class="row">
        <div class="form-group col-md-4">
            <label for="nombre">
                Nombre </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="nombre"
                   type="text"
                   name="nombre"
                   value="{{ old('nombre', $participante -> nombreParticipante) }}" required>
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="ap">
                Apellido paterno </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="ap"
                   type="text"
                   name="ap"
                   value="{{ old('ap', $participante -> apParticipante) }}">
        </div>
        <br>


        <div class="form-group col-md-4">
            <label for="am">
                Apellido materno </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="am"
                   type="text"
                   name="am"
                   value="{{ old('am', $participante -> amParticipante) }}">
        </div>
        <br>


        <div class="form-group col-md-4">
            <label for="rfc">
                RFC </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="rfc"
                   type="text"
                   name="rfc"
                   value="{{ old('rfc', $participante -> rfc) }}">

        </div>
        <br>

        <div class="form-group col-md-4">
            <label for="fechaNacimiento">
                Fecha de nacimiento </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="fechaNacimiento"
                   type="date"
                   name="fechaNacimiento"
                   value="{{ old('fechaNacimiento', $participante -> fechaNacimiento/*->format('Y-m-d')*/) }}">

        </div>
        <br>

        <div class="form-group col-md-4">
            <label for="sexo">
                Sexo </label>
            <select class="form-control border-0 bg-light shadow-sm"
                    id="sexo"
                    type="text"
                    name="sexo">

                <option selected disabled>Selecciona una opción</option>
                @if($participante->sexo == '')
                    <option>Masculino</option>
                    <option>Femenino</option>
                @elseif($participante->sexo == 'Masculino')
                    <option value="{{ $participante->sexo  }}" selected>{{$participante->sexo}}</option>
                    <option value="">Femenino</option>
                @else
                    <option value="{{ $participante->sexo  }}" selected>{{$participante->sexo}}</option>
                    <option value="">Masculino</option>
                @endif
            </select>
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="grado">
                Grado Académico </label>
            <select class="form-control border-0 bg-light shadow-sm"
                    name="grado">
                <option selected disabled>Selecciona una opción</option>
                @foreach($gradosacademicos as $gradoacademico)
                    @if($participante->gradoId == 0)
                        <option value="{{ $gradoacademico->gradoId }}">{{ $gradoacademico -> gradoAcademico }}</option>
                    @else
                        <option value="{{ $gradoacademico->gradoId }}"
                                selected>{{ $gradoacademico -> gradoAcademico }}</option>
                    @endif
                @endforeach

            </select>
        </div>

        <br>
        <div class="form-group col-md-4">
            <label for="profesion">
                Profesión </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="profesion"
                   type="text"
                   name="profesion"
                   value="{{ old('profesion', $participante -> profesion) }}">
        </div>
        <br>

        <div class="form-group col-md-4">
            <label for="cedula">
                Cédula profesional </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="cedula"
                   type="text"
                   name="cedula"
                   value="{{ old('cedula', $participante -> cedula) }}">
        </div>
        <br>

        <div class="form-group col-md-4">
            <label for="correo">
                Correo electrónico </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="correo"
                   type="email"
                   name="correo"
                   value="{{ old('correo', $participante -> correo) }}">
        </div>
        <br>

        <div class="form-group col-md-4">
            <label for="contrasena">
                Contraseña </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="contrasena"
                   type="password"
                   name="contrasena"
                   value="{{ old('contrasena', $participante -> contrasena) }}">
        </div>
        <br>


        <div class="form-group col-md-4">
            <label for="nombreadscripcion">
                Adscripción </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="nombreadscripcion"
                   type="text"
                   name="nombreadscripcion"
                   value="{{ old('nombreadscripcion', $participante -> nombreAdscripcion) }}">
        </div>
        <br>

        <div class="form-group col-md-4">
            <label for="adscripcion">
                Adscripción (Foraneo) </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="adscripcion"
                   type="text"
                   name="adscripcion"
                   value=" {{ old('adscripcionId', $participante -> adscripcionId) }}">
        </div>
        <br>


        <div class="form-group col-md-4">
            <label for="turno">
                Turno </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="turno"
                   type="text"
                   name="turno"
                   value="{{ old('turno', $participante -> turno) }}">
        </div>
        <br>

        <div class="form-group col-md-4">
            <label for="servicio">
                Servicio </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="servicio"
                   type="text"
                   name="servicio"
                   value="{{ old('servicio', $participante -> servicio) }}">
        </div>
        <br>

        <div class="form-group col-md-4">
            <label for="nombramiento">
                Tipo de nombramiento </label>
            <select class="form-control border-0 bg-light shadow-sm"
                    name="nombramiento">
                <option selected disabled>Selecciona una opción</option>
                @foreach($tiposnombramientos as $tiponombramiento)

                    @if($participante->nombramientoId == 0)
                        <option
                            value="{{ $tiponombramiento->nombramientoId }}">{{ $tiponombramiento -> tipoNombramiento }}</option>
                    @else
                        <option value="{{ $tiponombramiento->nombramientoId }}"
                                selected>{{ $tiponombramiento -> tipoNombramiento }}</option>
                    @endif
                @endforeach

            </select>
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="estatus">
                Estatus </label>
            <select class="form-control border-0 bg-light shadow-sm"
                    name="estatus">
                <option selected disabled>Selecciona una opción</option>
                @foreach($estatus as $estate)

                    @if($participante->estatusId == 0)
                        <option value="{{ $estate->estatusId }}">{{ $estate -> estatus }}</option>
                    @else
                        <option value="{{ $estate->estatusId }}" selected>{{ $estate -> estatus }}</option>
                    @endif
                @endforeach

            </select>
        </div>

        <button class="btn btn-primary btn-block btn-lg">{{ $btnText }}</button>
    </div>
</div>

VISTA QUE SE MUESTRA AL EDITAR

@extends('plantilla')

@section('titulo', 'Modificar Datos')

@section('contenido')
    <div class="container">
    <div class="row">
        <div class=" mx-auto"> //ESTO ES PARA QUE
            @include('partials.validation-errors')
            <form class="bg-white py-3 px-4 shadow rounded"
                  method="POST" action="{{ route('participante.update', auth()->user()->id)}}">
                @method('PATCH')
                <h1 align="center">Modificar Datos</h1>
                <hr>
                @include('participante._form', ('btnText' => 'Actualizar'))

            </form>
        </div>
    </div>
    </div>
@endsection

Y el otro formulario queda así, no como el anterior, sí hay 3 inputs por columna, pero son pequeños

Form

este el el código, los div son iguales an anterior pero no se expande como el otro, ya intente ponerle un container-fluid en la vista donde están los inputs, pero nada, también lo intente en la otra vista y se queda igual, si pongo un col-auto en los form-group se colocan 2 inputs por columna pero el contenedor queda del mismo tamaño

VISTA DEL FORMULARIO

@csrf
<div class="container">
    <div class="row">
        <div class="form-group col-md-4">
            <label for="fechaRegistroInicio">
                Inicio </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="fechaRegistroInicio"
                   type="date"
                   name="fechaRegistroInicio"
                   value="{{ old('fechaRegistroInicio', $cursos -> fechaRegistroInicio) }}">
        </div>

        <br>
        <div class="form-group col-md-4">
            <label for="fechaRegistroFin">
                Fin </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="fechaRegistroFin"
                   type="date"
                   name="fechaRegistroFin"
                   value="{{ old('fechaRegistroFin', $cursos -> fechaRegistroFin) }}">
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="nombreCurso">
                Nombre del curso </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="nombreCurso"
                   type="text"
                   name="nombreCurso"
                   value="{{ old('nombreCurso', $cursos -> nombreCurso) }}">
        </div>
        <br>
        <div class="form-group  col-md-4">
            <label for="descripcionCurso">
                Descripción</label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="descripcionCurso"
                   type="text"
                   name="descripcionCurso"
                   value="{{ old('descripcionCurso', $cursos -> descripcionCurso) }}">
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="lugarSede">
                Lugar sede </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="lugarSede"
                   type="text"
                   name="lugarSede"
                   value="{{ old('lugarSede', $cursos -> lugarSede) }}">
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="ciudad">
                Ciudad </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="ciudad"
                   type="text"
                   name="ciudad"
                   value="{{ old('ciudad', $cursos -> ciudad) }}">
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="anio">
                Año </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="anio"
                   type="number"
                   name="anio"
                   min="2021"
                   placeholder="2021"
                   onkeypress="return isNumberKey(event)"
                   value="{{ old('anio', $cursos -> anio) }}">
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="diasCurso">
                Días de curso </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="diasCurso"
                   type="number"
                   name="diasCurso"
                   min="0"
                   placeholder="0"
                   onkeypress="return isNumberKey(event)"
                   value="{{ old('diasCurso', $cursos -> diasCurso) }}">
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="estatusId">
                Estatus </label>
            <select class="form-control border-0 bg-light shadow-sm"
                    name="estatusId">
                <option selected disabled>Selecciona una opción</option>
                @foreach($estatus as $estate)

                    @if($cursos->estatusId == 0)
                        <option value="{{ $estate->estatusId }}">{{ $estate -> estatus }}</option>
                    @else
                        <option value="{{ $estate->estatusId }}" selected>{{ $estate -> estatus }}</option>
                    @endif
                @endforeach
            </select>
        </div>
        <br>

        <div class="form-group col-md-4">
            <label for="cupoLimite">
                Cupo </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="cupoLimite"
                   type="number"
                   name="cupoLimite"
                   min="0"
                   placeholder="0"
                   onkeypress="return isNumberKey(event)"
                   value="{{ old('cupoLimite', $cursos -> cupoLimite) }}">
        </div>
        <br>

        <div class="form-group col-md-4">
            <label for="numeroInscritos">
                Número de inscritos </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="numeroInscritos"
                   type="number"
                   name="numeroInscritos"
                   placeholder="0"
                   onkeypress="return isNumberKey(event)"
                   value="{{ old('numeroInscritos', $cursos -> numeroInscritos) }}">
        </div>
        <br>

        <div class="form-group col-md-4">
            <label for="libro">
                Libro </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="libro"
                   type="text"
                   name="libro"
                   value="{{ old('libro', $cursos -> libro) }}">
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="anioLibro">
                Año de Libro </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="anioLibro"
                   type="number"
                   name="anioLibro"
                   min="0"
                   placeholder="0"
                   onkeypress="return isNumberKey(event)"
                   value="{{ old('anioLibro', $cursos -> anioLibro) }}">
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="foja">
                Foja </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="foja"
                   type="text"
                   name="foja"
                   value="{{ old('foja', $cursos -> foja) }}">
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="horasTeoricas">
                Horas Teóricas </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="horasTeoricas"
                   type="number"
                   name="horasTeoricas"
                   min="0"
                   placeholder="0"
                   onkeypress="return isNumberKey(event)"
                   value="{{ old('horasTeoricas', $cursos -> horasTeoricas) }}">
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="horasPracticas">
                Horas Prácticas </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="horasPracticas"
                   type="number"
                   name="horasPracticas"
                   min="0"
                   placeholder="0"
                   onkeypress="return isNumberKey(event)"
                   value="{{ old('horasPracticas', $cursos -> horasPracticas) }}">
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="fechaCreditos">
                Fecha de créditos </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="fechaCreditos"
                   type="date"
                   name="fechaCreditos"
                   value="{{ old('fechaCreditos', $cursos -> fechaCreditos) }}">
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="creditos">
                Total de créditos </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="creditos"
                   type="number"
                   name="creditos"
                   min="0"
                   placeholder="0"
                   onkeypress="return isNumberKey(event)"
                   value="{{ old('creditos', $cursos -> creditos) }}">
        </div>
        <br>
        <div class="form-group col-md-4">
            <label for="tieneExamen">
                Examen </label>
            <input class="form-control border-0 bg-light shadow-sm"
                   id="tieneExamen"
                   type="number"
                   name="tieneExamen"
                   value="{{ old('tieneExamen', $cursos -> tieneExamen) }}">
        </div>
        <br>


        <button class="btn btn-primary btn-block btn-lg">{{ $btnText }}</button>

        <script>
            function isNumberKey(evt) {
                var charCode = (evt.which) ? evt.which : event.keyCode;
                return !(charCode > 31 && (charCode < 48 || charCode > 57));
            }
        </script>
    </div>
</div>

VISTA DONDE SE MUESTRA LA OPCION DE EDITAR


@extends('plantilla')

@section('titulo', 'Modificar Datos')

@section('contenido')
        <div class="container" >
            <div class=" mx-auto">
                @include('partials.validation-errors')
                <form class="bg-white py-3 px-4 shadow rounded"
                      method="POST" action="{{ route('cursos.update', $cursos -> cursoId )}}">
                    @method('PATCH')
                    <h1 align="center">Modificar Datos</h1>
                    <hr>
                    @include('participante._form', ('btnText' => 'Actualizar'))

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

@endsection


nodejs – mostrar informacion de acuerdo a un usuario, sucursal y fecha en Node.js, Express, Handlebars y mongodb

Estoy empezando en todo esto de Node.js y de mas tecnologías que mencione, estoy tratando de desarrollar una aplicación web administrativa en la cual necesito almacenar información de cada sucursal ya tengo la db en mongodb y ya realice los routers y autentificaciones con passport, el problema que tengo es que en una vista estoy enviando información capturada con un formulario y en la misma vista la estoy mostrando, solo que no se como mostrar la información de acuerdo al usuario, sucursal y fecha, de esta información genero la vista en una tipo tabla y cada columna representa un vendedor, el problema también que tengo es que al enviar la información se actualiza la pagina y no se como hacer para que la fecha se quede con la que selecciono el usuario ya que toda la información que agregan es de un día antes.
este es aprox mi .HBS

<form action="/cortes/" method="POST" class="form-cortes">
   <input type="date" id="fechacorte">
   <select name="vendedor">
      <option value="v1">Vendedor1</option>
      <option value="v2">Vendedor2</option>
      <option value="v3">Vendedor3</option>
   </select>
   <input type="number" name="ventatotal" />
   <input type="number" name="efectivo" />
   <input type="number" name="vaucher" />
   <input type="number" name="sumatotal" /><!-- es la suma de efectivo y vaucher-->
   <input type="number" name="diferencia" /><!-- si hay sobrante, faltante o 0-->
   <button>Enviar</button>
</form>
{{#if cortes}}
    <div class="columna">
        <div class="celda"><p>Concepto</p></div>
        <div class="celda"><p>Valor Corte</p></div>
        <div class="celda"><p>Efectivo</p></div>
        <div class="celda"><p>Vaucher</p></div>
        <div class="celda"><p>Suma Valores</p></div>
        <div class="celda"><p>Diferencia</p></div>
    </div>
    {{#each corte}}<!-- aqui lo recorro la informacion de cada vendedor que ingrese pero solo ocupo que se vean las que se estan ingresando con la fecha seleccionada-->
        <div class="columna">
            <div class="celda"><p>{{vendedor}}</p></div>
            <div class="celda"><input type="number" class="valorcorte" value="{{valorcorte}}"></div>
            <div class="celda"><input type="number" class="valorcorte" value="{{efectivo}}"></div>
            <div class="celda"><input type="number" class="valorcorte" value="{{vaucher}}"></div>
            <div class="celda"><input type="number" class="valorcorte" value="{{sumavalores}}"></div>
            <div class="celda"><input type="number" class="valorcorte" value="{{Diferencia}}"></div>
        </div>
    {{/each}}
    <div class="columna">
        <div class="celda"><p>Totales</p></div>
        <div class="celda"><p>valor de la suma</p></div>
        <div class="celda"><p>valor de la suma</p></div>
        <div class="celda"><p>valor de la suma</p></div>
        <div class="celda"><p>valor de la suma</p></div>
        <div class="celda"><p>valor de la suma</p></div>
    </div>
{{/if}}

mi archivo de router es algo asi

const express = require('express');
const router = express.Router();
const Corte = require('../models/Cortes');

router.get('/cortes/', async (req, res) => {
    /*aqui ya hice el primer filtro pero no se como hacer el filtro con sucursal 
    y la fecha, que la fecha seria con la que el usuario ingrese en este caso 1 dia antes por 
    lo regular*/
    const cortes = await Corte.find({user: req.user.id}).lean();
    res.render('cortes/cortes', {cortes});
});
router.post('/cortes/', async (req, res) => {
    const { fechacorte, vendedor, ventacorte, efectivo,vaucher, sumavalores, diferencia} = req.body;
    const errors = ();
    if (!efectivo) {
        errors.push({text: 'Ingrese el efectivo'});
    }//solo eh echo una validacion de dats en el formulario
    if (errors.length > 0) {
        res.render('/cortes/cortes', {
            errors,
            vendedor,
            ventaticket
        });
    }else{
        const newCorte = new Corte({fechacorte, vendedor, ventacorte, efectivo, vaucher, sumavalores, diferencia});
        newCorte.user = req.user.id;
        newCorte.sucursal = req.user.sucursal;
        await newCorte.save();
        req.flash('success_msg', 'Se ingresaron con exito los valores.');
        res.redirect('/cortes/');
    }
});
module.exports = router;

este es mi Model

const mongoose = require('mongoose');
const { Schema } = mongoose;

const CorteSchema = new Schema({
    
    fechacorte: { type: Number, required: true },
    vendedor: { type: String, required: true },
    sucursal: { type: String},
    user: { type: String},
    ventacorte: { type: Number, required: true },
    efectivo: { type: Number, required: true },
    vales: { type: Number, required: true },
    vaucher: { type: Number, required: true },
    sumavalores: { type: Number, required: true },
    diferencia: { type: Number, required: true }
});



module.exports = mongoose.model('Corte', CorteSchema);

el passport luce algo asi

const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const User = require('../models/Users');
passport.use(new LocalStrategy({
    usernameField: 'usuario'
}, async (usuario, password, done) => {
    const user =  await User.findOne({usuario: usuario});
    if(!user){
        console.log(user);
        return done(null, false, { message: 'Usuario no encontrado.'});
    }else{
        const match = await user.matchPassword(password);
        if (match) {
            return done(null, user);
        }else{
            return done(null, false, {message: 'La contraseña es incorrecta'});
        }
    }
}));

passport.serializeUser((user, done) => {
    done(null, user.id);
});

passport.deserializeUser((id, done) => {
    User.findById(id, (err, user) => {
        done(err, user);
    });
});

espero me puedan ayudar, habia creado esto en PHP, AJAX, MYSQL pero me quiero empezar a aprender estoo nuevo e ir aprendiendo mas y mas. gracias

java – ¿ Como insertar y mostrar datos de un arreglo dentro de otro arreglo?

Estoy programando un ejercicio en Java para el cual tengo que crear una empresa inmobiliaria que tiene una serie de clientes, los cuales tienen en venta unas viviendas.

Hasta ahora los datos de los clientes los estoy guardando en un arreglo. De momento todos los datos eran del tipo String, pero ahora tengo que guardar dentro de clientes las viviendas con sus propios datos, dirección, precio etc.

Tengo claro que debo de añadir los datos de la Viviendas en un arreglo , igual que hice con los Clientes. Lo que no estoy seguro es de si tengo que guardar el arreglo de Viviendas dentro del arreglo de Clientes, o guardar Viviendas en un arreglo independiente, ya que cada cliente tiene un numero de Viviendas.
En principio he añadido el arreglo viviendas en el constructor de Cliente, para pasar el arreglo de viviendas por parametro, aunque esto no sé hacerlo aún .

Imagino que para añadir las Viviendas tendré que hacer un metodo y con un bucle “for” recorrer el arreglo al igual que he hecho con el arreglo de Clientes , pero no sé si tengo que hacerlo en un “for anidado ” dentro del arreglo de Clientes o por separado.

Tampoco sé como debo de programar el metodo de agregar y mostrar viviendas y si los metodos deben de ir en la clase Cliente o en la clase Inmobiliaria.

En principio pensaba hacerlo igual que he hecho con Clientes, ya que los metodos de agregar y mostrar Clientes que iban en la clase Inmobiliaria, se pueden usar igual para agregar y mostrar viviendas, pero en este caso los metodos de agregar y mostrar viviendas los he puesto en la clase Clientes y creo que no funciona.

En resumidas cuentas , esto es lo que tengo hecho hasta ahora :

Clase Cliente:

public class Cliente {
  
  private String nombre;
  private Vivienda viviendaVenta();
  
  public Cliente() {
    this.nombre = "";
    this.viviendaVenta = new Vivienda(10);
  }
   public Cliente(String nombre, Vivienda() viviendaVenta) {
        this.nombre = nombre;
        this.viviendaVenta = viviendaVenta;
  }

  public String getNombre() {
        return nombre;
  }

    public void setNombre(String nombre) {
        this.nombre = nombre;
  }

  public Vivienda() getViviendaVenta() {
        return viviendaVenta;
  }

    public void setViviendaVenta(Vivienda() viviendaVenta) {
        this.viviendaVenta = viviendaVenta;
  }

  public void agregarVivienda(Vivienda v) {
        boolean encontrado = false;
        for (int i = 0; i < viviendaVenta.length && !encontrado; i++) {
            if (viviendaVenta(i) == null) {
                viviendaVenta(i) = v;
                encontrado = true;
            }
        }
        if (encontrado) {
            System.out.println("Vivienda Añadida");
        } else {
            System.out.println("No se ha podido añadir la vivienda");
        }
  }
    
  public void mostrarVivienda() {
        for (int i = 0; i < viviendaVenta.length; i++) {
            if (viviendaVenta(i) != null) {
                System.out.println("Fila: " + i + viviendaVenta(i).toString());
            }
        }
  }

  @Override
    public String toString() {
        return " Cliente: " + " Nombre: " + nombre;
    }

  


}


Clase Vivienda :

public class Vivienda{
  private String direccion;
  
  public Vivienda() {
    this.direccion = "";
  }
   public Vivienda(String direccion) {
        this.direccion = direccion;
  }

  public String getDireccion() {
        return direccion;
  }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
  }

  @Override
    public String toString() {
        return " Vivienda: " + " Direccion: " + direccion;
    }

  


}

Clase Inmobiliaria:

public class Inmobiliaria { 
    
    private Cliente clientes();
    
    public Inmobiliaria() {
        clientes = new Cliente(2);
    }

  public Cliente() getClientes() {
        return clientes;
    }

    public void setClientes(Cliente() clientes) {
        this.clientes = clientes;
    }
    
    public void agregarCliente(Cliente c) {
        boolean encontrado = false;
        for (int i = 0; i < clientes.length && !encontrado; i++) {
            if (clientes(i) == null) {
                clientes(i) = c;
                encontrado = true;
            }
        }
        if (encontrado) {
            System.out.println("Cliente Añadido");
        } else {
            System.out.println("No se ha podido añadir el cliente");
        }
    }

    public void mostrarCliente() {
        for (int i = 0; i < clientes.length; i++) {
            if (clientes(i) != null) {
                System.out.println("Fila: " + i + clientes(i).toString());
            }
        }
    }
}

Clase Principal :

import java.util.Scanner;
class Main {
  public static void main(String() args) {
    Scanner entrada = new Scanner(System.in);
    String nombre, direccionVivienda;
    Inmobiliaria in = new Inmobiliaria();
    
    Cliente c();
    c = new Cliente(2);
    // Bucle que rellenar el arreglo de clientes
    for (int i = 0; i < c.length; i++) {
      System.out.println("Introduce Nombre: ");
            nombre = entrada.nextLine();
            c(i) = new Cliente(nombre); // cliente Nuevo
            in.agregarCliente(c(i));// agrega cliente
    }
    in.mostrarCliente();// muestra cliente

    Vivienda v();
    v = new Vivienda(2);
    // Bucle para rellenar el areglo de viviendas
    for (int i = 0; i < v.length; i++) {
      System.out.println("Introduce Direccion: ");
        direccionVivienda = entrada.nextLine();
        v(i) = new Vivienda(direccionVivienda);// vivienda nueva
        c(i).agregarVivienda(v(i)); // Esto es a modo de muestra . No funciona
    }
  }
}

javascript – Handlebars – “undefined” al mostrar información dentro de un #each

Cuando recorro un objeto, ejemplo

{{#each personas}}
    <h1>{{nombre}}<h1>
{{/each}}

Funciona perfecto, pero si deseo agregar otra variable que no pertenezca al objeto que recorro, simplemente lo desconoce y me manda un “undefined”

<p>{{data.info}}<p>   <!-- Me muestra la información correctamente --> 
{{#each personas}}
    <h1>{{nombre}}<h1>
    <p>{{data.info}}<p> <!-- Me muestra un "undefined"-->
{{/each}}

¿Cómo puedo renderizar esa variable?

¿Cómo mostrar el detalle del articulo en la misma aplicación sin crear un navegado – Expo React Native?

Hasta ahora puedo mostrar un listado de los artículos, mediante la API JSON, todo sin ningún problema.

import React from 'react';
import {
    StyleSheet,
    View,
    Text,
    ActivityIndicator,
    FlatList,
    Image
 } from 'react-native';

export default class Fecht extends React.Component {

    constructor(props) {
        super(props);
        this.state = { isLoading: true };
    }

    renderItem = ({ item }) => {
        return (
            <View style={{ flex: 1, flexDirection:'row', }}>
                <Image style={{ width:100, height:100 }}
                source={{ uri: item.cover_page}}/>
                <View style={{ flex: 1, justifyContent: 'center' }}>
                    <Text>
                        {item.mini_title}
                    </Text>
                    <Text>
                        {item.mini_description}
                    </Text>
                </View>
            </View>
        )
    }

    componentDidMount() {
        fetch('https://example.com/api_json.php')
        .then((response) => response.json())
        .then((responseJson) => {
            this.setState(
                {
                    isLoading: false,
                    dataSource: responseJson
                },
                function() {}
            );
        })
        .catch((error) => {
            console.error(error);
        })
        .finally(() => {
            this.setState({ isLoading: false });
        });
    }

    render() {

        if (this.state.isLoading) {
            return (
                <View style={{ flex: 1, padding: 20 }}>
                    <ActivityIndicator />
                </View>
            );
        }

        return (
            <View style= {styles.container}>
                <FlatList
                    data={this.state.dataSource}
                    renderItem={this.renderItem}
                />
            </View>
        )
    }
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: '#F5FCFF'
    }
}); 

Pero como puedo ver más detalle de ese articulo, el detalle completo, la información o la noticia completa sin crear un navegador interno dirigiéndose a una URL de la noticia, leer la información en la misma app en su propio o mismo diseño.

Datos JSON:

(
{
    "url": "sports/world-football/international/744/opinion-fran-kirby-inspires-with-strength-and-skill",
    "cover_page": "https://i.imgur.com/m3omusS.jpg",
    "alt_img": " Fran Kirby",
    "mini_title": "Opinion: Fran Kirby Inspires with Strength and Skill",
    "mini_description": "...",
    "date_post": "2020-12-24 02:25:34",
    "detail": "<p>There isnu2019t much left to say about u2018Super Fran Kirbyu2019 that hasnu2019t already been said by players, managers, pundits and fans. The Lioness is an incredible person as well as a magician on the pitch.</p><p></p><p>After fighting a debilitating illness for months, Kirby has come back with a bang, proving how important she is to both club and country.</p><p></p><p>She fell ill with pericarditis in November 2019, which saw her sapped of energy and motivation. The illness almost caused her to throw in the towel on football all together, she revealed on Alex Scottu2019s Instagram series during lockdown.</p><p></p><p>Despite all this, Kirby has been in electric form. She registered two assists against West Ham earlier this month and grabbed a brace in the Champions League three days later. The 27-year-old is currently Chelseau2019s all-time top scorer, after beating Eniola Alukou2019s record.</p><p>Watching Kirby glide across the pitch is true bliss. She is one of those players who thrives off grabbing the game by the scruff of the neck and forcing something to happen.</p><p></p><p>She is extremely gifted in the way she can operate in the half spaces between the defence and midfield without being picked up. It makes her a nightmare to deal with and almost impossible to pin down during games.</p><p></p><p>By watching her play two games in four days, you would never know what she has been through. But thatu2019s Kirby all over.</p><p></p><p>No nickname has ever been more accurate. She is u2018Super Fran Kirbyu2019 both on and off the pitch. She is superhuman and a hero to many people.</p>",
    "confg_img": null,
    "main_cover": "women"
},
{
    "url": "sports/world-football/international/743/west-ham-united-women-appoint-olli-harder-as-manager",
    "cover_page": "https://i.imgur.com/9brtxvR.jpg",
    "alt_img": "West Ham",
    "mini_title": "West Ham United Women appoint Olli Harder as manager",
    "mini_description": "...",
    "date_post": "2020-12-24 02:23:27",
    "detail": "<p>West Ham United Womenu2019s new manager is Olli Harder, who has gained high-level coaching experience in the UK, China, USA, New Zealand and Norway.</p><p></p><p>The 34-year-old New Zealander has signed an initial two-and-a-half-year deal with the club and arrives fresh from successful roles as Head of Football Development & First Team Coach at Klepp IL and Assistant Manager at Sandnes Ulf in Norway.</p><p></p><p>West Ham Womenu2019s Managing Director, Jack Sullivan, said: u201cWe had a huge number of incredibly strong candidates for this role, but Olli stood out predominantly due to his progressive coaching style and exceptional attention to detail, which is backed by strong experience and achievements in the womenu2019s game.</p><p></p><p>u201cIu2019m confident Olli will ensure a work ethic and an organisation from the team to accompany his track record of giving young players a chance which aligns with the clubu2019s values. He has lots of new ideas that we are looking forward to implement, and I canu2019t wait to work with Olli, who I believe will help us to continue the positive progress we have made in the WSL so far.u201d</p><p></p><p>Olli Harder said: u201cIu2019m looking forward to the opportunity of not only working with such a historic club but, more importantly, a club that has committed itself to the development and progression of the womenu2019s game.</p><p></p><p>u201cIu2019m relishing the challenge of moving forward the West Ham United womenu2019s team into what will no doubt be a bright future.u2019u2019</p><p></p><p>It was at Klepp where Harder achieved his greatest success, transforming the clubu2019s standing in Toppserien, the top level of Norwegian Womenu2019s football. Relegation candidates in 2016, Harderu2019s leadership saw Klepp secure their first top-four finish in over two decades, completing the 2017 season in fourth place and following this up with second-placed and third-placed finishes in 2018 and 2019 respectively. In recognition of his achievements, he received nominations for Norwegian Coach of the Year in both the 2017 and 2018 seasons.</p><p></p><p>Harder also led the development of Klepp ILu2019s junior players, helping them to secure three U19 NM gold medals in four seasons, while pushing them on to represent Norway internationally across every age group.</p><p></p><p>Harder himself has also represented Norway at international level, serving a term as the assistant coach for the National U23s in 2018.</p><p></p><p>In 2020, Harder has served as Assistant Manager at Sandnes Ulf, the Rogaland-based outfit who finished seventh in OBOS-Ligaen, the second-highest tier of menu2019s football in Norway.</p>",
    "confg_img": null,
    "main_cover": "women"
},
{
    "url": "sports/world-football/international/742/0-1-victory-in-the-last-game-of-the-year",
    "cover_page": "https://i.imgur.com/fdTiZRK.jpg",
    "alt_img": "Real Madrid",
    "mini_title": "0-1: Victory in the last game of the year",
    "mini_description": "...",
    "date_post": "2020-12-24 02:19:54",
    "detail": "<p>Real Madrid Women continued their fine away form, notching up their fourth consecutive away win in the last outing of 2020. The Madridistas narrowly defeated Sporting de Huelva to move into second position. The hosts pressed in the first half, but the Whites defended well and got their reward on the stroke of half time. Jakobsson fired in a powerful strike from the edge of the area with the help of a deflection off a defender past Chelsea to send the Whites into the break a goal to the good. </p><p></p><p>With the score in their favor, David Aznar's side had to dig seep to keep out the hosts. Patri Ojeda had a free kick six minutes after the re-start, but Misa saved it comfortably. Mikela Waldman came close on 84 ', but her effort was off target. The final whistle brought the game to an end along with the calendar year for the Madridistas, who finish 2020 with nine wins in the Primera Iberdrola. </p><p></p><h2>    <b>MATCH INFO</b></h2><p>0-Sporting de Huelva: Chelsea, Ana Carol, V. Santana (Mikela Waldman, 60'), Cinta Rodru00edguez, C. Falknor, Mayra Ramu00edrez (Gey, 88'), Kristina Fisher, Dany Helena (Kanteh, 60'), Pau (Jeni Morilla, 68'), Patri Ojeda and Yoko Tanaka.  <br></p><p>1-Real Madrid: Misa, K. Robles, Kaci, Olga, M. Oroz, Jakobsson, M. Cardona, Ivana, Teresa, Claudia F. (Peter, 46') and Ari (Thaisa, 58').</p><p></p><p><b>Goals</b></p><p>0-1 (min. 41): Jakobsson.</p>",
    "confg_img": null,
    "main_cover": "women"
}
)

Ya que si visualizamos el detalle desde un navegador interno, primeramente sale del diseño de la app y por otra parte no quedaría bien tener que visualizar los datos de esa manera.

angular7 – Mostrar más columnas usando ngx-datatable

Estoy usando el componente ngx-datatable para mostrar columnas con cabeceras agrupadas. Funciona correctamente el ejemplo que he encontrado en la Red, pero el problema es que no soy capaz de añadir más columnas y que muestre los datos.

Adjunto el enlace al código modificado a ver si alguien sabe como va esto.
Gracias

https://angular-ngx-datatable-row-grouping-and-row-detail-cjhfps.stackblitz.io/

php – Mostrar datos registrados en una tabla con ajax

Necesito mostrar los datos previamente registrados con un botón para listar dichos datos. Pero no muestra nada ni arroja error.

Script de JQuery:

<script>
  $(document).ready(function(){

    $("#btnRegistrar").click(function(){
      var parametros = {
        "rut": $("#txtRut").val(),
        "nombre": $("#txtNombre").val(),
        "apellido": $("#txtApellido").val(),
        "fecha_nac": $("#txtFecha").val(),
        "fono": $("#txtFono").val(),
        "direccion": $("#txtDireccion").val()
      };

      $.ajax({
        data : parametros,
        url : 'registrar.php',
        method : 'POST',
        beforeSend : function(){
          $("#cuadro2").html("Datos ingresados");
        },
        success : function(aviso){
          $("#cuadro2").html(aviso);
          alert(aviso);
        }
      });
    });
  //});

  //$(document).ready(function(){
    $("btnListar").click(function(){
      var lista;
      $.ajax({
        data : lista,
        url : 'listar.php',
        method : 'POST',
        beforeSend : function(){
          $("#cuadro1").html("<img src="https://es.stackoverflow.com/img/loading.gif" width='400px' height='400px'/>");
        },
        success : function (aviso1){
          $("#cuadro1").html(aviso1);
        }
      });
    });
  });
</script>

Código PHP:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "clientes";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM cliente";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  echo "<table border='1px'>
  <tr>
    <th>RUT</th>
    <th>Nombre</th>
    <th>Apellido</th>
    <th>Fecha de nacimiento</th>
    <th>Teléfono</th>
    <th>Dirección</th>
  </tr>";
  while($row = $result->fetch_assoc()){
    echo "<tr>
    <td>".$row("rut")."</td>
    <td>".$row("nombre")."</td>
    <td>".$row("apellido")."</td>
    <td>".$row("fecha_nac")."</td>
    <td>".$row("fono")."</td>
    <td>".$row("direccion")."</td>
    <td><button id='delete' data-id='".$row("rut")."'>( X )</button>
  </tr>";
  }
  echo "</table>";
} else{
  echo "Aún no hay registros";
}
$conn->close();
?>

No entiendo por qué no arroja ninguna respuesta. Antes el código funcionaba de tal forma que al pulsar el botón de Registrar, se generaba automáticamente la tabla. Intenté dejar ambos métodos (Registrar y Listar) aparte, pero no funcionaba el método Registrar, por lo que los dejé “juntos” (fijarse en las líneas comentadas). También probé con otros navegadores como Brave, Chrome y Edge, sin obtener resultado. Espero que se entienda mi problema.