Angular 8: duplica datos cuando vuelvo a la misma ruta

tengo un problema con angular que no logro comprender. tengo una aplicacion hecho con angular 8 y tengo un componente en localhost:4200/inicio y tengo otro componente en localhost:4200/tabla resulta que cuando navego entre los dos componentes usando

<a mat-list-item routerLink="/inicio"></a> <a mat-list-item routerLink="/tabla"></a> 

me duplica la información.

muestro cantidad de registro que realmente tiene la tabla introducir la descripción de la imagen aquí

cuando navego de nuevo a /inicio y despues a /tabla (sin recargar el navegador) introducir la descripción de la imagen aquí

al recargar el navegador me vuelve a la cantidad de registros originales (13), lo único que supongo que pasa es que guarda datos en el caché pero no se como areglar ese problema ni por donde comenzar arreglar, si me pueden aunque sea que pasa se lo agradecería mucho porque me urge areglar ese problema

NOTA: la información la leo en TablaComponent

   obtenerInfo() {       this.http.get('url').subscribe((data) => {          // aqui lleno la informacion de la tabla       });    }  

Necesito un código o script que me permita colocar la fecha en la columna B cuando se llenan los datos en la columna A

Necesito colocar la fecha en la columna B cuando se llenan los datos de la columna A y que sea la fecha del día cuando se colocaron los datos, copio código de excel donde lo tengo en una tabla pero lo requiero en un doc de google. Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range(“A:A”)) Is Nothing Then

Range(“B” & Target.Row) = Date

Range(“C” & Target.Row) = Format(Now, “hh:mm”)

End If

End Sub

Sin datos en un jTable cuando añado un segundo jTable en un mismo jFrame

Verán, tengo un jFrame donde he puesto un jTabbedPane y dentro hay 3 jPanels. En el primer jPanel, he puesto un jTable para mostrar unos datos de la BD y ha ido todo bien.

private void cargarTablaAlumnos(String SQL){     try{         Connection con2 = ConexionDB.GetConnection();         Statement stmt2 = null;         ResultSet rs2 = null;          alumnosModel = new DefaultTableModel();         alumnosModel.setRowCount(0);         alumnosModel.addColumn("Alumno");         alumnosModel.addColumn("Profesor");         alumnosModel.addColumn("Clase");         alumnosModel.addColumn("Curso");         alumnosModel.addColumn("Fecha Alta");          stmt2 = con2.createStatement();         stmt2.executeUpdate(SQL);          this.SQL = "SELECT * FROM #tmp_alumnos";         rs2 = stmt2.executeQuery(this.SQL);          while(rs2.next()){             alumnosModel.addRow(new Object[]{rs2.getString("nombre_alumno"),rs2.getString("nombre_profesor"),rs2.getString("curso"),rs2.getString("codigo"), rs2.getString("fecha_alta")});         }          t_matricula_alumnos.setModel(alumnosModel);          rs2.close();         stmt2.close();         con2.close();     } catch(SQLException ex){         JOptionPane.showMessageDialog(null, ex.getMessage());     } }` 

`El problema es que al poner un segundo jTable en el segundo jPanel, deja de funcionarme el primer jTable y solo me funciona el segundo:

private void cargarTablaAsistenciaAlumnos(String SQL){     try{         Connection con2 = ConexionDB.GetConnection();         Statement stmt2 = null;         ResultSet rs2 = null;         GlobalProject.criterio = "Cursos.ConsultarAsistencia";         TableCellRenderer tcr = new TableCellRenderer();          alumnosAsistModel = new DefaultTableModel();         alumnosAsistModel.setRowCount(0);         alumnosAsistModel.addColumn("Alumno");         alumnosAsistModel.addColumn("Curso");         alumnosAsistModel.addColumn("Clase");         alumnosAsistModel.addColumn("Fecha");         alumnosAsistModel.addColumn("Asistio");          stmt2 = con2.createStatement();         rs2 = stmt2.executeQuery(SQL);          while(rs2.next()){             alumnosAsistModel.addRow(new Object[]{rs2.getString("nombre"),rs2.getString("codigo"),rs2.getString("curso"),rs2.getString("fecha"), rs2.getInt("asistio")});         }          t_asistenciaAlumnos.setDefaultRenderer(Object.class, tcr);         t_asistenciaAlumnos.setModel(alumnosAsistModel);         this.hideColumnFromTableAsistAlumnos(4);          rs2.close();         stmt2.close();         con2.close();     } catch(SQLException ex){         JOptionPane.showMessageDialog(null, ex.getMessage());     } } 

Después de darle muchas vueltas, he eliminado momentáneamente el segundo jTable, y al ejecutar … sorpresa! el primer jTable (el único que hay en todo el jFrame, ahora) me carga de nuevo los datos. Añado de nuevo el segundo jTable y deja de funcionar el primer jTable de nuevo para que ahora solo funcione el segundo jTable.

He puesto el debug y veo que alumnosModel contiene toda la informacion del rs2, pero al hacer t_matricula_alumnos.setModel(alumnosModel); no lo coge.

Es un bug? Es como si hubiera algún problema raro con los punteros de las tablas …

He probado con lo siguiente pero tampoco me ha funcionado.

t_matricula_alumnos.setModel(DbUtils.resultSetToTableModel(rs2)); 

En resumen, que solo puedo tener un JTable, si añado un segundo, el primero deja de cargar datos y se queda vació.

Gracias!

Devolver el valor del input cuando le doy click al segundo boton

Hola muchachos lo que pasa es que tengo que encriptar un texto el cual está en un input, el primer botón lo encripta mediante una función que hice y en el segundo botón volver el texto a la normalidad, la primera parte ya la tengo pero a la hora de volver a traer el texto original no se como volver a descriptarlo y dejarlo en la caja de texto, no se si alguien me pueda ayudar, debe ser un error muy simple, pero la verdad no lo encuentro, gracias por la ayuda

<!DOCTYPE html> <html lang="en">  <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>criptograma</title> </head>  <body>     <input type="text" id="input">     <button id="btn1">Encriptar</button>     <button id="btn2">Descepcritar</button>      <script src="index.js"></script> </body>  </html>

document.getElementById("btn1").addEventListener('click', () => {      function encriptar() {         let str = '';         let ref = 'abcdefghijklmnñopqrstuvwxyz';         var input = document.getElementById('input').value;         for (var i = 0; i < 7; i++) {             str += ref.charAt(Math.floor(Math.random() * ref.length));             var resultado = document.getElementById('input').value = str;             console.log(resultado)             console.log(input)         }     }       encriptar()  })  document.getElementById('btn2').addEventListener('click', () => {     function desencriptar() {         var input = document.getElementById('input').value;         console.log(input)     }     desencriptar() })

Cambiar el object key cuando borro otra key del object

Me ha surgido un problema bastante molesto a estas alturas de mi proyecto (casi terminado).

Resulta que sin darme cuenta he guardado un objecto pensando que era un array. Hasta aquí la solución seria “Bueno pues convierte el objeto en array y ya está”. Bien, esa solución no me sirve porque ese objecto interactúa con otras funciones de la app.

La pregunta

¿Puedo hacer que un objeto tenga el comportamiento de un array al borrarle un index? Es decir, pongamos que tengo un array:

let array = [0,1,2,3]; /** Las keys del array serian  0:0  1:1  2:2  3:3                                */ array.splice(2,1); // el array quedaria de esta manera [0,1,3] /** Las keys del array serian  0:0  1:1  2:3   */ 

Ahora tengo un objeto:

let obj = {0:1,1:2,2:3,3:4}; /**  Si le elimno el index 2, el objeto quedaría de esta manera  {0:1,1:2,3:4}   */ 

Lo que quiero es que al eliminar el index 2, el index 3 pase a tener el nombre del index 2 (como el comportamiento del array)

No me importa cambiar el nombre de la key porque son numéricas (0,1,2…) en mi base de datos mongo. Lo único que necesito es que lleven un orden seguido 0,1,2,3… y no 0,2,3,4.

Por si sirve de ayuda el objeto lo guardo en mongo (por si mongo tiene alguna función que cambie los index y yo desconozca)

Si se necesita mas código o explicaciones, pedirlo, intenté que fuera lo mas claro posible.

como puedo insertar cuando se presione un botón sin necesidad de recargar la vista laravel

cuando presione comenzar atención que cambie el estado de la base de datos de espera a en proceso eso lo tengo con un enum, la cosa es que no debe actualizar la pagina al momento de cambiar el estado, en el controlador tengo el siguiente código

introducir la descripción de la imagen aquí

  public function attentionespera(Request $  request) {     $  id = $  request->get('id');     $  attentionlist = Attentionlist::where('id',$  id)->first();     $  attentionlist->status = 'espera';     $  attentionlist->update();     return redirect('/attentions'); } public function attentionproceso(Request $  request) {     $  id = $  request->get('id');     $  attentionlist = Attentionlist::where('id',$  id)->first();     $  attentionlist->status = 'proceso';     $  attentionlist->update();     return redirect('/attentions'); } public function attentionfinalizado(Request $  request) {     $  id = $  request->get('id');     $  attentionlist = Attentionlist::where('id',$  id)->first();     $  attentionlist->status='finalizado';     $  attentionlist->update();     return redirect('/attentions'); } 

¿Cómo conservar el delimitador cuando se usa string.Split()?

Supongamos que tenemos un string que representa una ecuación:

string ecuacion = "x^4-x^3-5x^2-x-6"; 

Y tenemos unos delimitadores:

char[] delimitadores = new char[] { '-', '+', '*', '/' }; 

Si usamos string.Split(); para separar los módulos entre sí en una lista de la siguiente forma :

List<string> subEcuaciones = new List<string>(); subEcuaciones = ecuacion.Split(delimitadores, StringSplitOptions.None).ToList(); 

El resultado que obtenemos es :

x^4 x^3 5x^2 x 6 

Sin embargo me gustaría conservar el delimitador, es decir, obtener como resultado:

 x^4 -x^3 -5x^2 -x -6 

¿Existe alguna configuración para conservar los delimitadores?

Quitar los bordes cuando este activo el input

Estoy intentando quitar los border del input cuando este focuseado o activo, pero no funciona de ninguna manera estoy usando bootstrap y sass, pero de ninguna forma esta funcionando aqui muestro lo que quiero.

introducir la descripción de la imagen aquí

Deseao quitar el borde amarillo-rojo-verde que aparece ahi cuando se le de click para escribir

<div class="row">        <div class="form-group mx-auto">              <input type="email" class="form-control-lg border-0" placeholder="Correo Electronico">        </div>   </div> 

Estilos

.form-control-lg {             background: $  main-color-l;             border-bottom: 2px solid $  shadow-green !important;             color: white;             margin-top: 10px;              &:focus {                 border: none;             }              &:active {                 border: none;             }         } 

Mostrar Submenu y ocultar cuando se hace click en otro Submenu

Estoy intentando mostrar un submenu cuando se hace click en un item y que cuando le de click a otro Submenu este se debe ocultar y mostrar el Submenu del item que di click y ademas de eso debe eliminar las clase que se agrega llamada open y añadirla al item que di click, de igual manera si le doy click a un item y le vuelvo a dar click a ese mismo item, debe ocultar el submenu, pero no he podido lograrlo, tengo el siguiente código

$  (".subtitle .action").click(function(event){  $  (this).parents(".subtitle").toggleClass("open");  $  (this).parents(".subtitle").find(".submenu").slideToggle("slow");      $  (this).parents(".subtitle").find(".submenu").toggleClass("opacity");  return false; });
<!DOCTYPE html> <html> <head> 	<title>Test</title> 	<style type="text/css"> 		.submenu { 			display: none; 		} 		.opacity { 			opacity: 0.5; 		} 	</style> </head> <body> 	<ul> 		<li class="subtitle"> 			<a href="#" class="action">Inicio</a> 			<ul class="submenu"> 				<li> 					<a href="#">Inicio 1</a> 				</li> 				<li> 					<a href="#">Inicio 2</a> 				</li> 				<li> 					<a href="#">Inicio 3</a> 				</li> 			</ul> 		</li> 		<li class="subtitle"> 			<a href="#" class="action">Nosotros</a> 			<ul class="submenu"> 				<li> 					<a href="#">Nosotros 1</a> 				</li> 				<li> 					<a href="#">Nosotros 2</a> 				</li> 				<li> 					<a href="#">Nosotros 3</a> 				</li> 			</ul>  		</li> 		<li class="subtitle"> 			<a href="#" class="action">Contacto</a> 			<ul class="submenu"> 				<li> 					<a href="#">Contacto 1</a> 				</li> 				<li> 					<a href="#">Contacto 2</a> 				</li> 				<li> 					<a href="#">Contacto 3</a> 				</li> 			</ul> 		</li> 		<li class="subtitle"> 			<a href="#" class="action">Empresa</a> 			<ul class="submenu"> 				<li> 					<a href="#">Empresa 1</a> 				</li> 				<li> 					<a href="#">Empresa 2</a> 				</li> 				<li> 					<a href="#">Empresa 3</a> 				</li> 			</ul> 		</li> 	</ul> 	<script src="https://code.jquery.com/jquery-3.0.0.min.js"></script> </body> </html>