diff --git a/Acessts/Imagens/01160209321024.jpg b/Acessts/Imagens/01160209321024.jpg deleted file mode 100644 index c506f7c..0000000 Binary files a/Acessts/Imagens/01160209321024.jpg and /dev/null differ diff --git a/Acessts/Imagens/21321.png b/Acessts/Imagens/21321.png deleted file mode 100644 index 2ed61b5..0000000 Binary files a/Acessts/Imagens/21321.png and /dev/null differ diff --git a/Acessts/Imagens/44559554_m-1.jpg b/Acessts/Imagens/44559554_m-1.jpg deleted file mode 100644 index 9df91c5..0000000 Binary files a/Acessts/Imagens/44559554_m-1.jpg and /dev/null differ diff --git a/Acessts/Imagens/60c2442d9e9ea5c2667061c4_5d48896bb9fe6671fd1b614a_Blog%2044.jpeg b/Acessts/Imagens/60c2442d9e9ea5c2667061c4_5d48896bb9fe6671fd1b614a_Blog%2044.jpeg deleted file mode 100644 index 1ef3787..0000000 Binary files a/Acessts/Imagens/60c2442d9e9ea5c2667061c4_5d48896bb9fe6671fd1b614a_Blog%2044.jpeg and /dev/null differ diff --git a/Acessts/Imagens/Apresentação 2.png b/Acessts/Imagens/Apresentação 2.png deleted file mode 100644 index 07caf1b..0000000 Binary files a/Acessts/Imagens/Apresentação 2.png and /dev/null differ diff --git a/Acessts/Imagens/Apresentação.png b/Acessts/Imagens/Apresentação.png deleted file mode 100644 index 63033b5..0000000 Binary files a/Acessts/Imagens/Apresentação.png and /dev/null differ diff --git a/Acessts/Imagens/Capa 1.png b/Acessts/Imagens/Capa 1.png deleted file mode 100644 index 6c8d08e..0000000 Binary files a/Acessts/Imagens/Capa 1.png and /dev/null differ diff --git a/Acessts/Imagens/Capa 2.png b/Acessts/Imagens/Capa 2.png deleted file mode 100644 index d27996b..0000000 Binary files a/Acessts/Imagens/Capa 2.png and /dev/null differ diff --git a/Acessts/Imagens/Capa 3.png b/Acessts/Imagens/Capa 3.png deleted file mode 100644 index 2174257..0000000 Binary files a/Acessts/Imagens/Capa 3.png and /dev/null differ diff --git a/Acessts/Imagens/Cases de Sucesso/Anatram_Prancheta 1.jpg b/Acessts/Imagens/Cases de Sucesso/Anatram_Prancheta 1.jpg deleted file mode 100644 index acbc3b3..0000000 Binary files a/Acessts/Imagens/Cases de Sucesso/Anatram_Prancheta 1.jpg and /dev/null differ diff --git a/Acessts/Imagens/Cases de Sucesso/Anatram_Prancheta 1.png b/Acessts/Imagens/Cases de Sucesso/Anatram_Prancheta 1.png deleted file mode 100644 index 3a38a7d..0000000 Binary files a/Acessts/Imagens/Cases de Sucesso/Anatram_Prancheta 1.png and /dev/null differ diff --git a/Acessts/Imagens/Cases de Sucesso/Enseg.jpg b/Acessts/Imagens/Cases de Sucesso/Enseg.jpg deleted file mode 100644 index 914cf6b..0000000 Binary files a/Acessts/Imagens/Cases de Sucesso/Enseg.jpg and /dev/null differ diff --git a/Acessts/Imagens/Cases de Sucesso/Enseg.png b/Acessts/Imagens/Cases de Sucesso/Enseg.png deleted file mode 100644 index 00475f6..0000000 Binary files a/Acessts/Imagens/Cases de Sucesso/Enseg.png and /dev/null differ diff --git a/Acessts/Imagens/Cases de Sucesso/Ferreira Real.jpg b/Acessts/Imagens/Cases de Sucesso/Ferreira Real.jpg deleted file mode 100644 index 050399a..0000000 Binary files a/Acessts/Imagens/Cases de Sucesso/Ferreira Real.jpg and /dev/null differ diff --git a/Acessts/Imagens/Cases de Sucesso/Ferreira Real.png b/Acessts/Imagens/Cases de Sucesso/Ferreira Real.png deleted file mode 100644 index ef9a55b..0000000 Binary files a/Acessts/Imagens/Cases de Sucesso/Ferreira Real.png and /dev/null differ diff --git a/Acessts/Imagens/Cases de Sucesso/Gau.png b/Acessts/Imagens/Cases de Sucesso/Gau.png deleted file mode 100644 index d4d4ab9..0000000 Binary files a/Acessts/Imagens/Cases de Sucesso/Gau.png and /dev/null differ diff --git a/Acessts/Imagens/Cases de Sucesso/IBAP.jpg b/Acessts/Imagens/Cases de Sucesso/IBAP.jpg deleted file mode 100644 index 17d0518..0000000 Binary files a/Acessts/Imagens/Cases de Sucesso/IBAP.jpg and /dev/null differ diff --git a/Acessts/Imagens/Cases de Sucesso/IBAPRJ.png b/Acessts/Imagens/Cases de Sucesso/IBAPRJ.png deleted file mode 100644 index d8eadcb..0000000 Binary files a/Acessts/Imagens/Cases de Sucesso/IBAPRJ.png and /dev/null differ diff --git a/Acessts/Imagens/Cases de Sucesso/Oeste Pan.png b/Acessts/Imagens/Cases de Sucesso/Oeste Pan.png deleted file mode 100644 index bced90c..0000000 Binary files a/Acessts/Imagens/Cases de Sucesso/Oeste Pan.png and /dev/null differ diff --git a/Acessts/Imagens/Iconis/simbolo-de-logout.png b/Acessts/Imagens/Iconis/simbolo-de-logout.png new file mode 100644 index 0000000..17b7146 Binary files /dev/null and b/Acessts/Imagens/Iconis/simbolo-de-logout.png differ diff --git a/Acessts/Imagens/Logo_itGuys - Copia - Copia.png b/Acessts/Imagens/Logo_itGuys - Copia - Copia.png deleted file mode 100644 index d0eeb53..0000000 Binary files a/Acessts/Imagens/Logo_itGuys - Copia - Copia.png and /dev/null differ diff --git a/Acessts/Imagens/Paineis.png b/Acessts/Imagens/Paineis.png deleted file mode 100644 index ea1a9c9..0000000 Binary files a/Acessts/Imagens/Paineis.png and /dev/null differ diff --git a/Acessts/Imagens/Paineis/A Full-Service IT Provider.png b/Acessts/Imagens/Paineis/A Full-Service IT Provider.png deleted file mode 100644 index fb5ab7a..0000000 Binary files a/Acessts/Imagens/Paineis/A Full-Service IT Provider.png and /dev/null differ diff --git a/Acessts/Imagens/Paineis/Computação em nuvem.png b/Acessts/Imagens/Paineis/Computação em nuvem.png deleted file mode 100644 index 1d3490d..0000000 Binary files a/Acessts/Imagens/Paineis/Computação em nuvem.png and /dev/null differ diff --git a/Acessts/Imagens/Paineis/Emergency Onsite IT Support.png b/Acessts/Imagens/Paineis/Emergency Onsite IT Support.png deleted file mode 100644 index 0a3c5a1..0000000 Binary files a/Acessts/Imagens/Paineis/Emergency Onsite IT Support.png and /dev/null differ diff --git a/Acessts/Imagens/Paineis/IT Security Services.png b/Acessts/Imagens/Paineis/IT Security Services.png deleted file mode 100644 index 8e73740..0000000 Binary files a/Acessts/Imagens/Paineis/IT Security Services.png and /dev/null differ diff --git a/Acessts/Imagens/Paineis/Infraestrutura.png b/Acessts/Imagens/Paineis/Infraestrutura.png deleted file mode 100644 index c539bb4..0000000 Binary files a/Acessts/Imagens/Paineis/Infraestrutura.png and /dev/null differ diff --git a/Acessts/Imagens/Paineis/Project-based IT Support.png b/Acessts/Imagens/Paineis/Project-based IT Support.png deleted file mode 100644 index 01675fe..0000000 Binary files a/Acessts/Imagens/Paineis/Project-based IT Support.png and /dev/null differ diff --git a/Acessts/Imagens/Painel Backup 2.png b/Acessts/Imagens/Painel Backup 2.png deleted file mode 100644 index 10c8497..0000000 Binary files a/Acessts/Imagens/Painel Backup 2.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de Cloud Computing 2.png b/Acessts/Imagens/Painel de Cloud Computing 2.png deleted file mode 100644 index 74426d1..0000000 Binary files a/Acessts/Imagens/Painel de Cloud Computing 2.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de Cloud Computing.png b/Acessts/Imagens/Painel de Cloud Computing.png deleted file mode 100644 index 742bfb0..0000000 Binary files a/Acessts/Imagens/Painel de Cloud Computing.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de Consultoria em Ti 2.png b/Acessts/Imagens/Painel de Consultoria em Ti 2.png deleted file mode 100644 index 0713096..0000000 Binary files a/Acessts/Imagens/Painel de Consultoria em Ti 2.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de Consultoria em Ti.png b/Acessts/Imagens/Painel de Consultoria em Ti.png deleted file mode 100644 index 3074591..0000000 Binary files a/Acessts/Imagens/Painel de Consultoria em Ti.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de Disaster Recovery 2.png b/Acessts/Imagens/Painel de Disaster Recovery 2.png deleted file mode 100644 index da051c0..0000000 Binary files a/Acessts/Imagens/Painel de Disaster Recovery 2.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de Disaster Recovery.png b/Acessts/Imagens/Painel de Disaster Recovery.png deleted file mode 100644 index a44d266..0000000 Binary files a/Acessts/Imagens/Painel de Disaster Recovery.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de Gerencia de TI 2.png b/Acessts/Imagens/Painel de Gerencia de TI 2.png deleted file mode 100644 index 2c42bdf..0000000 Binary files a/Acessts/Imagens/Painel de Gerencia de TI 2.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de Gerencia de TI.png b/Acessts/Imagens/Painel de Gerencia de TI.png deleted file mode 100644 index 0979b07..0000000 Binary files a/Acessts/Imagens/Painel de Gerencia de TI.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de OutSourcing de Serviços de TI 2.png b/Acessts/Imagens/Painel de OutSourcing de Serviços de TI 2.png deleted file mode 100644 index f667c6c..0000000 Binary files a/Acessts/Imagens/Painel de OutSourcing de Serviços de TI 2.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de OutSourcing de Serviços de TI.png b/Acessts/Imagens/Painel de OutSourcing de Serviços de TI.png deleted file mode 100644 index e46a15c..0000000 Binary files a/Acessts/Imagens/Painel de OutSourcing de Serviços de TI.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de Suporte 2.png b/Acessts/Imagens/Painel de Suporte 2.png deleted file mode 100644 index 7c5597e..0000000 Binary files a/Acessts/Imagens/Painel de Suporte 2.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de Suporte.png b/Acessts/Imagens/Painel de Suporte.png deleted file mode 100644 index 88a74ce..0000000 Binary files a/Acessts/Imagens/Painel de Suporte.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de Volp 2.png b/Acessts/Imagens/Painel de Volp 2.png deleted file mode 100644 index ce6fc71..0000000 Binary files a/Acessts/Imagens/Painel de Volp 2.png and /dev/null differ diff --git a/Acessts/Imagens/Painel de Volp.png b/Acessts/Imagens/Painel de Volp.png deleted file mode 100644 index 4c88b46..0000000 Binary files a/Acessts/Imagens/Painel de Volp.png and /dev/null differ diff --git a/Acessts/Imagens/Prancheta 1.png b/Acessts/Imagens/Prancheta 1.png deleted file mode 100644 index 56f111d..0000000 Binary files a/Acessts/Imagens/Prancheta 1.png and /dev/null differ diff --git a/Acessts/Imagens/Prancheta 5.jpg b/Acessts/Imagens/Prancheta 5.jpg deleted file mode 100644 index 4af82fd..0000000 Binary files a/Acessts/Imagens/Prancheta 5.jpg and /dev/null differ diff --git a/Acessts/Imagens/Problemas-em-TI.jpg b/Acessts/Imagens/Problemas-em-TI.jpg deleted file mode 100644 index 04093be..0000000 Binary files a/Acessts/Imagens/Problemas-em-TI.jpg and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Fundo/Backup.png b/Acessts/Imagens/Serviços/Fundo/Backup.png deleted file mode 100644 index 9f852ea..0000000 Binary files a/Acessts/Imagens/Serviços/Fundo/Backup.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Fundo/Consulturia.png b/Acessts/Imagens/Serviços/Fundo/Consulturia.png deleted file mode 100644 index 465ed1a..0000000 Binary files a/Acessts/Imagens/Serviços/Fundo/Consulturia.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Fundo/Disaster Recovery.png b/Acessts/Imagens/Serviços/Fundo/Disaster Recovery.png deleted file mode 100644 index 20c9d5c..0000000 Binary files a/Acessts/Imagens/Serviços/Fundo/Disaster Recovery.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Fundo/Gerencia de TI.png b/Acessts/Imagens/Serviços/Fundo/Gerencia de TI.png deleted file mode 100644 index d25a7fe..0000000 Binary files a/Acessts/Imagens/Serviços/Fundo/Gerencia de TI.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Fundo/Nuvem.png b/Acessts/Imagens/Serviços/Fundo/Nuvem.png deleted file mode 100644 index 217b1f6..0000000 Binary files a/Acessts/Imagens/Serviços/Fundo/Nuvem.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Fundo/OutSourcing de Serviços de TI.png b/Acessts/Imagens/Serviços/Fundo/OutSourcing de Serviços de TI.png deleted file mode 100644 index 11557a4..0000000 Binary files a/Acessts/Imagens/Serviços/Fundo/OutSourcing de Serviços de TI.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Fundo/Suporte.png b/Acessts/Imagens/Serviços/Fundo/Suporte.png deleted file mode 100644 index 9526713..0000000 Binary files a/Acessts/Imagens/Serviços/Fundo/Suporte.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Fundo/VoIP.png b/Acessts/Imagens/Serviços/Fundo/VoIP.png deleted file mode 100644 index 6c96eb3..0000000 Binary files a/Acessts/Imagens/Serviços/Fundo/VoIP.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel Backup 2.png b/Acessts/Imagens/Serviços/Paineis/Painel Backup 2.png deleted file mode 100644 index 10c8497..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel Backup 2.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel Backup.png b/Acessts/Imagens/Serviços/Paineis/Painel Backup.png deleted file mode 100644 index db190c1..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel Backup.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de Cloud Computing 2.png b/Acessts/Imagens/Serviços/Paineis/Painel de Cloud Computing 2.png deleted file mode 100644 index 74426d1..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de Cloud Computing 2.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de Cloud Computing.png b/Acessts/Imagens/Serviços/Paineis/Painel de Cloud Computing.png deleted file mode 100644 index aa92b40..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de Cloud Computing.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de Consultoria em Ti 2.png b/Acessts/Imagens/Serviços/Paineis/Painel de Consultoria em Ti 2.png deleted file mode 100644 index 0713096..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de Consultoria em Ti 2.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de Consultoria em Ti.png b/Acessts/Imagens/Serviços/Paineis/Painel de Consultoria em Ti.png deleted file mode 100644 index 5a9440d..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de Consultoria em Ti.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de Disaster Recovery 2.png b/Acessts/Imagens/Serviços/Paineis/Painel de Disaster Recovery 2.png deleted file mode 100644 index da051c0..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de Disaster Recovery 2.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de Disaster Recovery.png b/Acessts/Imagens/Serviços/Paineis/Painel de Disaster Recovery.png deleted file mode 100644 index d5bddb0..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de Disaster Recovery.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de Gerencia de TI 2.png b/Acessts/Imagens/Serviços/Paineis/Painel de Gerencia de TI 2.png deleted file mode 100644 index 2c42bdf..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de Gerencia de TI 2.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de Gerencia de TI.png b/Acessts/Imagens/Serviços/Paineis/Painel de Gerencia de TI.png deleted file mode 100644 index a255b43..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de Gerencia de TI.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de OutSourcing de Serviços de TI 2.png b/Acessts/Imagens/Serviços/Paineis/Painel de OutSourcing de Serviços de TI 2.png deleted file mode 100644 index f667c6c..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de OutSourcing de Serviços de TI 2.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de OutSourcing de Serviços de TI.png b/Acessts/Imagens/Serviços/Paineis/Painel de OutSourcing de Serviços de TI.png deleted file mode 100644 index 3de1846..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de OutSourcing de Serviços de TI.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de Suporte 2.png b/Acessts/Imagens/Serviços/Paineis/Painel de Suporte 2.png deleted file mode 100644 index 7c5597e..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de Suporte 2.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de Suporte.png b/Acessts/Imagens/Serviços/Paineis/Painel de Suporte.png deleted file mode 100644 index 0b719b4..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de Suporte.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de Volp 2.png b/Acessts/Imagens/Serviços/Paineis/Painel de Volp 2.png deleted file mode 100644 index ce6fc71..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de Volp 2.png and /dev/null differ diff --git a/Acessts/Imagens/Serviços/Paineis/Painel de Volp.png b/Acessts/Imagens/Serviços/Paineis/Painel de Volp.png deleted file mode 100644 index 1a687af..0000000 Binary files a/Acessts/Imagens/Serviços/Paineis/Painel de Volp.png and /dev/null differ diff --git a/Acessts/Imagens/Suport.jpg b/Acessts/Imagens/Suport.jpg deleted file mode 100644 index c3bbec9..0000000 Binary files a/Acessts/Imagens/Suport.jpg and /dev/null differ diff --git a/Acessts/Imagens/1605305486169.jpg b/Acessts/Imagens/Utili/1605305486169.jpg similarity index 100% rename from Acessts/Imagens/1605305486169.jpg rename to Acessts/Imagens/Utili/1605305486169.jpg diff --git a/Acessts/Imagens/Painel Backup.png b/Acessts/Imagens/Utili/Painel Backup.png similarity index 100% rename from Acessts/Imagens/Painel Backup.png rename to Acessts/Imagens/Utili/Painel Backup.png diff --git a/Acessts/Imagens/logo_2.png b/Acessts/Imagens/logo_2.png deleted file mode 100644 index e9fe8d4..0000000 Binary files a/Acessts/Imagens/logo_2.png and /dev/null differ diff --git a/Acessts/Imagens/loja-física_reunião-produtiva.jpg b/Acessts/Imagens/loja-física_reunião-produtiva.jpg deleted file mode 100644 index 0af8114..0000000 Binary files a/Acessts/Imagens/loja-física_reunião-produtiva.jpg and /dev/null differ diff --git a/Acessts/Imagens/painel.png b/Acessts/Imagens/painel.png deleted file mode 100644 index 596d7c0..0000000 Binary files a/Acessts/Imagens/painel.png and /dev/null differ diff --git a/Acessts/Imagens/pexels-athena-2582937.jpg b/Acessts/Imagens/pexels-athena-2582937.jpg deleted file mode 100644 index 35af3fd..0000000 Binary files a/Acessts/Imagens/pexels-athena-2582937.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-brett-sayles-2881224.jpg b/Acessts/Imagens/pexels-brett-sayles-2881224.jpg deleted file mode 100644 index 15e3f37..0000000 Binary files a/Acessts/Imagens/pexels-brett-sayles-2881224.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-christina-morillo-1181316.jpg b/Acessts/Imagens/pexels-christina-morillo-1181316.jpg deleted file mode 100644 index 9b2c28f..0000000 Binary files a/Acessts/Imagens/pexels-christina-morillo-1181316.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-fauxels-3184465.jpg b/Acessts/Imagens/pexels-fauxels-3184465.jpg deleted file mode 100644 index cdd27a9..0000000 Binary files a/Acessts/Imagens/pexels-fauxels-3184465.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-field-engineer-442150.jpg b/Acessts/Imagens/pexels-field-engineer-442150.jpg deleted file mode 100644 index 8f9b7a3..0000000 Binary files a/Acessts/Imagens/pexels-field-engineer-442150.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-fox-1595385.jpg b/Acessts/Imagens/pexels-fox-1595385.jpg deleted file mode 100644 index 4da00d9..0000000 Binary files a/Acessts/Imagens/pexels-fox-1595385.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-junior-teixeira-2047905.jpg b/Acessts/Imagens/pexels-junior-teixeira-2047905.jpg deleted file mode 100644 index 00cf0fe..0000000 Binary files a/Acessts/Imagens/pexels-junior-teixeira-2047905.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-karolina-grabowska-5239946.jpg b/Acessts/Imagens/pexels-karolina-grabowska-5239946.jpg deleted file mode 100644 index c9fb946..0000000 Binary files a/Acessts/Imagens/pexels-karolina-grabowska-5239946.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-karolina-grabowska-8553949.jpg b/Acessts/Imagens/pexels-karolina-grabowska-8553949.jpg deleted file mode 100644 index 7d192c8..0000000 Binary files a/Acessts/Imagens/pexels-karolina-grabowska-8553949.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-luis-gomes-546819.jpg b/Acessts/Imagens/pexels-luis-gomes-546819.jpg deleted file mode 100644 index 3880e3a..0000000 Binary files a/Acessts/Imagens/pexels-luis-gomes-546819.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-panumas-nikhomkhai-1148820.jpg b/Acessts/Imagens/pexels-panumas-nikhomkhai-1148820.jpg deleted file mode 100644 index 617626e..0000000 Binary files a/Acessts/Imagens/pexels-panumas-nikhomkhai-1148820.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-panumas-nikhomkhai-17489155.jpg b/Acessts/Imagens/pexels-panumas-nikhomkhai-17489155.jpg deleted file mode 100644 index 273b846..0000000 Binary files a/Acessts/Imagens/pexels-panumas-nikhomkhai-17489155.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-photo-3807738.webp b/Acessts/Imagens/pexels-photo-3807738.webp deleted file mode 100644 index 7b57226..0000000 Binary files a/Acessts/Imagens/pexels-photo-3807738.webp and /dev/null differ diff --git a/Acessts/Imagens/pexels-photo-459411.jpeg b/Acessts/Imagens/pexels-photo-459411.jpeg deleted file mode 100644 index 3c7369d..0000000 Binary files a/Acessts/Imagens/pexels-photo-459411.jpeg and /dev/null differ diff --git a/Acessts/Imagens/pexels-photo-777001.webp b/Acessts/Imagens/pexels-photo-777001.webp deleted file mode 100644 index 63a725d..0000000 Binary files a/Acessts/Imagens/pexels-photo-777001.webp and /dev/null differ diff --git a/Acessts/Imagens/pexels-pixabay-159866.jpg b/Acessts/Imagens/pexels-pixabay-159866.jpg deleted file mode 100644 index bb1db90..0000000 Binary files a/Acessts/Imagens/pexels-pixabay-159866.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-pixabay-315938.jpg b/Acessts/Imagens/pexels-pixabay-315938.jpg deleted file mode 100644 index 3fdf7fb..0000000 Binary files a/Acessts/Imagens/pexels-pixabay-315938.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-pixabay-60504.jpg b/Acessts/Imagens/pexels-pixabay-60504.jpg deleted file mode 100644 index 092b5fb..0000000 Binary files a/Acessts/Imagens/pexels-pixabay-60504.jpg and /dev/null differ diff --git a/Acessts/Imagens/pexels-valentin-antonucci-691637.jpg b/Acessts/Imagens/pexels-valentin-antonucci-691637.jpg deleted file mode 100644 index 76dc324..0000000 Binary files a/Acessts/Imagens/pexels-valentin-antonucci-691637.jpg and /dev/null differ diff --git a/Acessts/Imagens/testes.png b/Acessts/Imagens/testes.png deleted file mode 100644 index dc42d1b..0000000 Binary files a/Acessts/Imagens/testes.png and /dev/null differ diff --git a/Acessts/Imagens/testes_fundos.png b/Acessts/Imagens/testes_fundos.png deleted file mode 100644 index bac70cb..0000000 Binary files a/Acessts/Imagens/testes_fundos.png and /dev/null differ diff --git a/Acessts/Imagens/whatsapp.png b/Acessts/Imagens/whatsapp.png deleted file mode 100644 index 26ad8c9..0000000 Binary files a/Acessts/Imagens/whatsapp.png and /dev/null differ diff --git a/Ambiente_Usuario.html b/Ambiente_Usuario.html index e7ab8b9..6006bc8 100644 --- a/Ambiente_Usuario.html +++ b/Ambiente_Usuario.html @@ -14,9 +14,9 @@ + - @@ -25,29 +25,19 @@ Ambiente do Usuario - - - -
- -
- -
- -
- -
+
+
+ \ No newline at end of file diff --git a/Css/global/Animcoes.css b/Css/global/Animcoes.css new file mode 100644 index 0000000..1ba905a --- /dev/null +++ b/Css/global/Animcoes.css @@ -0,0 +1,77 @@ +@keyframes SurgimentoDias { + + from { + + opacity: 0; + } + + to { + + opacity: 1; + } + +} + +@keyframes TrocadeMesUP { + + from { + + opacity: 0; + transform: translateY(-100vh); + } + + to { + + opacity: 1; + transform: translateY(0vh); + } + +} + +@keyframes TrocadeMesDown { + + from { + + opacity: 0; + transform: translateY(100vh); + } + + to { + + opacity: 1; + transform: translateY(0vh); + } + +} + +@keyframes TrocadeMesLeft { + + from { + + opacity: 0; + transform: translateX(-100vw); + } + + to { + + opacity: 1; + transform: translateX(0vw); + } + +} + +@keyframes TrocadeMesRitgh { + + from { + + opacity: 0; + transform: translateX(100vw); + } + + to { + + opacity: 1; + transform: translateY(0vw); + } + +} \ No newline at end of file diff --git a/Css/page/Ambiente/Config/pop.css b/Css/page/Ambiente/Config/pop.css index e69de29..d393a2d 100644 --- a/Css/page/Ambiente/Config/pop.css +++ b/Css/page/Ambiente/Config/pop.css @@ -0,0 +1,465 @@ +/*Pop_user*/ + +.Pop_up_Config.PainelEstilo .Pop_up_Config.PainelUser { + color: #000; + +} + + +.Pop_up_Config.PainelEstilo { + display: none; + + border: none; + flex-direction: column; + width: 40vw; + height: 70vh; + border-radius: 3vw; + position: absolute; + top: 10vh; + left: 30vw; + background-color: #D9D9D9; + + +} + +.Pop_up_Config.PainelEstilo .PainelFechar button { + border: none; + background: none; + outline: none; + width: 2vw; + height: 2vw; + margin-left: 1vw; + margin-top: 1vw; + color: var(--Matriz); + /* Cor do texto do botão */ + background-color: var(--Cor_Segundaria_5_1); + /* Cor de fundo do botão */ + border-radius: 12vh; + transition: 1s ease; + /* Transição suave de 1 segundo */ + font-family: var(--Cor_Segundaria_5_1); + font-size: 0.8vw; +} + +.Pop_up_Config.PainelEstilo .PainelFechar button:hover { + color: var(--Cor_Segundaria_5_1); + /* Muda a cor do texto */ + background-color: var(--Matriz); + /* Muda a cor de fundo */ + transition: 1s ease; + /* Transição suave de 1 segundo */ + font-family: var(--font_titulo); +} + +.Pop_up_Config.PainelEstilo .PainelFechar .TituloPopup img { + width: 2vw; + height: 2vw; + + font-size: 0.8vw; + +} + +.Pop_up_Config.PainelEstilo .PainelConteudo .Forme .CampoInsercao_Perfil button { + color: var(--Cor_Segundaria_5_1); + /* Muda a cor do texto */ + background: none; + outline: none; + border: none; + background-color: var(--Matriz); + /* Muda a cor de fundo */ + width: 10vw; + height: 20vh; + border-radius: 12vh; + font-size: 0.8vw; + justify-content: center; + align-items: center; + font-family: var(--font_titulo); +} + +.Pop_up_Config.PainelEstilo .PainelConteudo .Forme .CampoInsercao_Fundo button { + color: var(--Cor_Segundaria_5_1); + /* Muda a cor do texto */ + background: none; + outline: none; + border: none; + background-color: var(--Matriz); + /* Muda a cor de fundo */ + width: 10vw; + height: 20vh; + justify-content: center; + align-items: center; + font-family: var(--font_titulo); + font-size: 0.8vw; +} + + +.Pop_up_Config.PainelManual { + display: none; + width: 40vw; + height: 70vh; + margin: 1vh; + position: absolute; + top: 10vh; + left: 30vw; + + background-color: black; +} + + +.Pop_up_Config.PainelEstilo .PainelFechar .TituloPopup h2 { + font-family: var(--font_titulo); + color: rgb(0, 55, 100); + font-size: 3vh; +} + + + + +.Pop_up_Config.PainelEstilo .PainelFechar { + width: 100%; + align-items: center; + font-family: var(--font_titulo); + display: flex; + flex-direction: row; + height: 10%; +} + +.Pop_up_Config.PainelEstilo .PainelFechar .TituloPopup { + margin-top: 2vh; + + width: 80%; + display: flex; + align-items: center; + justify-content: center; + flex-direction: row; + gap: 0.8vw; + height: 15%; +} + +.Pop_up_Config.PainelEstilo .PainelConteudo .Forme .CampoInsercao_Perfil label { + font-family: var(--font_conteudo); + color: rgb(0, 55, 100); + font-size: 1.8vw; + +} + +.Pop_up_Config.PainelEstilo .PainelConteudo .Forme .CampoInsercao_Fundo label { + font-family: var(--font_conteudo); + color: rgb(0, 55, 100); + font-size: 1.8vw; +} + +.Pop_up_Config.PainelEstilo .PainelConteudo .Forme .CampoInsercao_Perfil { + margin-top: 2vh; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + height: 30%; + +} + +.Pop_up_Config.PainelEstilo .PainelConteudo .Forme .CampoInsercao_Fundo { + margin-top: 2vh; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + height: 30%; + +} + +.Pop_up_Config.PainelEstilo .PainelConteudo .Forme .CampoInsercao_Enviar { + margin-top: 2vh; + height: 5%; + display: flex; + align-items: center; + justify-content: center; +} + +.Pop_up_Config.PainelEstilo .PainelConteudo .Forme .CampoInsercao_Enviar button { + margin-top: 1vh; + border: none; + background: none; + outline: none; + width: 12vw; + height: 8vh; + font-size: 0.8vw; + color: #D9D9D9; + /* Muda a cor do texto */ + background-color: var(--Cor_Segundaria_5_1); + /* Cor de fundo do botão */ + border-radius: 12vh; + + transition: 1s ease; + /* Transição suave de 1 segundo */ + font-family: var(--font_conteudo); + font-size: 0.8vw; +} + + + +.Pop_up_Config.PainelEstilo .PainelConteudo .Forme .CampoInsercao_Enviar button:hover { + color: var(--Cor_Segundaria_5_1); + /* Muda a cor do texto */ + background-color: #D9D9D9; + /* Muda a cor de fundo */ + transition: 1s ease; + /* Transição suave de 1 segundo */ +} + +/*pop user*/ +.Pop_up_Config.PainelUser .PainelConteudo .TituloPopup img { + width: 3vw; + height: 3vw; + font-size: 1.8vw; +} + +.Pop_up_Config.PainelUser { + + display: none; + flex-direction: column; + width: 40vw; + height: 80vh; + margin: 1vh; + position: absolute; + top: 10vh; + left: 30vw; + + border-radius: 3vw; + background-color: #D9D9D9; + border: 0.2vw solid var(--Cor_Segundaria_5_1); + + +} + +.Pop_up_Config.PainelUser .TituloPopup { + + display: flex; + + flex-direction: row; + +} + + + +.Pop_up_Config.PainelUser .PainelFechar button { + background: none; + outline: none; + border: none; + color: #D9D9D9; + width: 2vw; + height: 4vh; + /* Muda a cor do texto */ + background-color: var(--Cor_Segundaria_5_1); + /* Cor de fundo do botão */ + border-radius: 12vh; + + transition: 1s ease; + /* Transição suave de 1 segundo */ + font-family: var(--font_conteudo); + + font-size: 0.8vw; + /* Arredondar completamente */ + + +} + +#VoltarPopup { + background: none; + outline: none; + border: none; + color: #D9D9D9; + width: 7vw; + height: 4vh; + /* Muda a cor do texto */ + background-color: var(--Cor_Segundaria_5_1); + /* Cor de fundo do botão */ + border-radius: 12vh; + + transition: 1s ease; + /* Transição suave de 1 segundo */ + font-family: var(--font_conteudo); + + /* Arredondar completamente */ + font-size: 0.8vw; + +} + +#VoltarPopup:hover { + color: var(--Cor_Segundaria_5_1); + /* Muda a cor do texto */ + background-color: white; + /* Muda a cor de fundo */ + transition: 1s ease; + /* Transição suave de 1 segundo */ + +} + +.Pop_up_Config.PainelUser .PainelFechar button:hover { + color: var(--Cor_Segundaria_5_1); + /* Muda a cor do texto */ + background-color: white; + /* Muda a cor de fundo */ + transition: 1s ease; + /* Transição suave de 1 segundo */ + + +} + +.Pop_up_Config.PainelUser .PainelFechar { + + + + border-radius: 12vh; + + transition: 1s ease; + /* Transição suave de 1 segundo */ + + font-family: var(--font_conteudo); + font-size: 0.8vw; + align-items: end; + + + display: flex; + + flex-direction: row; + margin-top: 1vw; + margin-left: 1vw; + margin-right: 1vw; + + justify-content: space-between; + + +} + + +.Pop_up_Config.PainelUser .PainelConteudo .TituloPopup { + gap: 1vw; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + font-family: var(--font_titulo); + +} + +.Pop_up_Config.PainelUser .PainelConteudo .TituloPopup { + color: var(--Cor_Segundaria_5_1); + font-family: var(--font_titulo); + +} + +.Pop_up_Config.PainelUser .PainelConteudo { + flex-direction: column; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + + +} + + +.Pop_up_Config.PainelUser .PainelConteudo .Forme .CampoInsercao h2 { + font-family: var(--font_titulo); + color: rgb(0, 55, 100); + font-size: 3vh; + + width: 25vw; + height: 5vh; + + + +} + + +.Pop_up_Config.PainelUser .PainelConteudo .Forme .CampoInsercao { + + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + +} + +.Pop_up_Config.PainelUser .PainelConteudo .Forme .CampoInsercao select { + width: 25vw; + height: 4vh; + font-family: var(--font_conteudo); + font-size: 1vw; + color: var(--Cor_Segundaria_5_1); + border-radius: 12vh; + +} + +.Pop_up_Config.PainelUser .PainelConteudo .Forme .CampoInsercao_criar button { + background: none; + outline: none; + border: none; + + color: #D9D9D9; + + /* Muda a cor do texto */ + background-color: var(--Cor_Segundaria_5_1); + /* Cor de fundo do botão */ + border-radius: 12vh; + + transition: 1s ease; + /* Transição suave de 1 segundo */ + font-family: var(--font_conteudo); + /* Arredondar completamente */ + width: 8vw; + height: 3vh; + font-size: 0.8vw; +} + + +.Pop_up_Config.PainelUser .PainelConteudo .Forme .CampoInsercao_criar button:hover { + color: var(--Cor_Segundaria_5_1); + /* Muda a cor do texto */ + background-color: white; + /* Muda a cor de fundo */ + transition: 1s ease; + /* Transição suave de 1 segundo */ + + +} + +.Pop_up_Config.PainelUser .PainelConteudo .Forme .CampoInsercao input { + background: none; + outline: none; + border: none; + font-family: var(--font_conteudo); + border-bottom: 0.2vw solid var(--Cor_Segundaria_5_1); + color: var(--Cor_Segundaria_5_1); + font-size: var(--Matriz); + width: 25vw; + height: 7vh; + font-size: 1.8vw; +} + +.Pop_up_Config.PainelUser .PainelConteudo .Forme .CampoInsercao_criar { + display: flex; + align-items: end; + justify-content: center; + flex-direction: column; + width: 35vw; + + + +} + +.Pop_up_Config.PainelUser .PainelConteudo .Forme .CampoInsercao p { + background: none; + outline: none; + border: none; + font-family: var(--font_conteudo); + + color: var(--Cor_Segundaria_5_1); + font-size: var(--Matriz); + font-size: 0.8vw; + +} \ No newline at end of file diff --git a/Css/page/Ambiente/Estrutura/tela_hover.css b/Css/page/Ambiente/Estrutura/tela_hover.css index 688e152..c668846 100644 --- a/Css/page/Ambiente/Estrutura/tela_hover.css +++ b/Css/page/Ambiente/Estrutura/tela_hover.css @@ -65,7 +65,7 @@ .Capitulo_1 .linha_2 .Corpo_2 { width: 15vw; - height: 15vh; + height: 8vh; transition: 1s ease; } @@ -76,4 +76,20 @@ transition: 1s ease; } + + .Capitulo_1 .linha_2 .Corpo_1 .linhaMes_1 .days .day-name { + width: 1.6vw; + height: 4vh; + font-size: 0.6vw; + transition: 1s ease; + + } + + .Capitulo_1 .linha_2 .Corpo_1 .linhaMes_1 .dia, + .Capitulo_1 .linha_2 .Corpo_1 .linhaMes_1 .vazio { + width: 1.6vw; + height: 4vh; + transition: 1s ease; + + } } \ No newline at end of file diff --git a/Css/page/Ambiente/Home/Aplicacoes.css b/Css/page/Ambiente/Home/Aplicacoes.css index e69de29..9e050de 100644 --- a/Css/page/Ambiente/Home/Aplicacoes.css +++ b/Css/page/Ambiente/Home/Aplicacoes.css @@ -0,0 +1,89 @@ +/*Alinhamento de Chamados*/ +.Capitulo_1 .linha_1 .Corpo .IconChamado.Novo_Nao_Atribuido { + + border: 0.2vw solid violet; +} + +.Capitulo_1 .linha_1 .Corpo .IconChamado.Aberto_Em_Análise { + + border: 0.2vw solid #00b7ff; +} + +.Capitulo_1 .linha_1 .Corpo .IconChamado.Aguardando_Retorno { + + border: 0.2vw solid #868686; +} + +.Capitulo_1 .linha_1 .Corpo .IconChamado.Solucionado_Fechado { + + border: 0.2vw solid #00ff40; +} + +.Capitulo_1 .linha_1 .Corpo .IconChamado.Em_Andamento { + + border: 0.2vw solid #ffa600; +} + +/*Pop Home */ + +.PainelEstado.Solucionado_Fechado h2 { + color: #10ad37; + /*muda a cor do status do objeto*/ +} + +.PainelEstado.Novo_Nao_Atribuido h2 { + color: violet; + /*muda a cor do status do objeto*/ +} + + +.PainelEstado.Aberto_Em_Analise h2 { + color: #00b7ff; + /*muda a cor do status do objeto*/ +} + +.PainelEstado.Aguardando_Retorno h2 { + color: #868686; + /*muda a cor do status do objeto*/ +} + + +.PainelEstado.Em_Andamento h2 { + color: #ffa600; + /*muda a cor do status do objeto*/ +} + + +.Capitulo_2 .painel .Corpo .Mes_financeiro.Desativado button { + + + background: none; + outline: none; + border: none; + + /* Muda a cor do texto */ + background-color: var(--Cor_Segundaria_5_1); + /* Cor de fundo do botão */ + border-radius: 12vh; + transition: 1s ease; + /* Transição suave de 1 segundo */ + font-family: var(--font_conteudo); + /* Arredondar completamente */ + width: 10vw; + height: 3vh; + font-size: 0.8vw; + /* Muda a cor do texto */ + background-color: #d9d9d9; + color: var(--Matriz); + + +} + + +.Capitulo_2 .painel .Corpo .Mes_financeiro.Desativado button:hover { + /* Muda a cor do texto */ + background-color: #d9d9d9; + color: var(--Matriz); + + +} \ No newline at end of file diff --git a/Css/page/Ambiente/Home/Item_servico.css b/Css/page/Ambiente/Home/Item_servico.css new file mode 100644 index 0000000..75af761 --- /dev/null +++ b/Css/page/Ambiente/Home/Item_servico.css @@ -0,0 +1,58 @@ +.Corpo .ItemServicos img { + width: 1.5vw; + height: 3vh; +} + +.Corpo .ItemServicos .PainelTexto { + display: flex; + flex-direction: row; + + gap: 1vw; + width: 85%; + height: 5vh; + border-radius: 1.5vw; + padding-right: 1.5vw; + padding-left: 1.5vw; + + + + + + background-color: var(--Cor_Segundaria_5_1); + color: var(--Cor_Segundaria_5_1); + font-family: var(--font_titulo); + font-size: 1vw; + + align-items: center; + justify-content: center; +} + +.Corpo .ItemServicos p { + font-family: var(--font_conteudo); + color: white; + +} + +.Corpo .ItemServicos { + display: flex; + flex-direction: row; + + gap: 1vw; + width: 85%; + height: 5vh; + border-radius: 1.5vw; + padding-right: 1.5vw; + padding-left: 1.5vw; + + + + + + background-color: var(--Cor_Segundaria_5_1); + color: var(--Cor_Segundaria_5_1); + font-family: var(--font_titulo); + font-size: 1vw; + + align-items: center; + justify-content: start; +} \ No newline at end of file diff --git a/Css/page/Ambiente/Home/Iten_chamados.css b/Css/page/Ambiente/Home/Iten_chamados.css new file mode 100644 index 0000000..5e63b54 --- /dev/null +++ b/Css/page/Ambiente/Home/Iten_chamados.css @@ -0,0 +1,198 @@ +.Capitulo_1 .linha_1 .Corpo .MensangemERRO { + animation: SurgimentoDias 1s ease; +} + +.CorpoPainelChamado { + + width: 85%; + height: 5vh; + border-radius: 1.5vw; + padding-right: 1.5vw; + padding-left: 1.5vw; + + gap: 1vw; + + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + + background-color: var(--Cor_Segundaria_5_1); + + color: var(--Matriz); + font-family: var(--font_titulo); + font-size: 1vw; + transform: scale(1); + transition: 1s ease; + + animation: SurgimentoDias 1s ease; + +} + +.CorpoPainelChamado:hover { + background-color: var(--Cor_Segundaria_5_2); + transform: scale(0.9); + transition: 1s ease; +} + + + +.Capitulo_1 .linha_1 .Corpo .IconChamado { + + width: 0.5vw; + height: 0.5vw; + border-radius: 100%; +} + + +.Capitulo_1 .linha_1 .Corpo .CodeChamado { + + overflow: hidden; +} + +.Capitulo_1 .linha_1 .Corpo .TituloChamado { + + + flex-wrap: nowrap; + + overflow: hidden; +} + + + +/*Estilos do Pop*/ + +.PopUpHome.Chamado { + /* Define bordas arredondadas com 2% da largura da viewport (tela) */ + border-radius: 2vw; + /* Define a altura do elemento como 40% da altura da viewport (tela) */ + height: 40vh; + /* Inicialmente, o elemento não será exibido na página */ + display: none; + /* A posição do elemento será absoluta em relação ao contêiner pai posicionado */ + position: absolute; + /* Define a distância entre a parte superior do elemento e o topo da viewport (10% da altura da tela) */ + top: 10vh; + /* Define a distância entre a parte esquerda do elemento e o lado esquerdo da viewport (60% da largura da tela) */ + left: 60vh; + /* Define a distância entre a parte direita do elemento e o lado direito da viewport (60% da largura da tela) */ + right: 60vh; + /* Define uma borda de 0.3% da largura da viewport, com a cor definida por uma variável CSS */ + border: 0.3vw solid var(--Cor_Segundaria_5_1); + /* Define a cor de fundo do elemento como um tom muito claro de cinza (quase branco) */ + background-color: rgb(250, 250, 250); + /* Define a direção do layout flexível para coluna (elementos dentro do container serão empilhados verticalmente) */ + flex-direction: column; + /* Define que o display do elemento será flexível, permitindo o uso de propriedades flexbox */ + display: flex; +} + +.PopUpHome.Chamado .PainelConteudo { + + color: var(--Cor_Segundaria_5_1); + /*muda a cor do painel */ + height: 65%; + /*muda o tamanho do painel*/ + display: flex; + /*o display utilizado*/ + font-family: var(--font_titulo); + /*a fonte usada */ + flex-direction: column; + /*muda a direção do objeto*/ + justify-content: start; + /*alinha onde fica o objeto*/ + align-items: center; + /*alinha onde fica o objeto*/ +} + +.PopUpHome.Chamado .PainelFechar { + height: 15%; + /* Define a altura do elemento como 15% da altura do elemento pai */ + + /* Ativa o modelo de layout flexbox para o elemento */ + display: flex; + + /* Alinha os itens no eixo principal (horizontal, por padrão) no centro */ + justify-content: center; + + /* Organiza os itens na direção da coluna (vertical) */ + flex-direction: column; + + /* Alinha os itens no início do eixo transversal (o eixo vertical, no caso de flex-direction: column) */ + align-items: start; + + /* Aplica uma margem à esquerda de 0.9% da largura da tela (viewport) */ + margin-left: 0.9vw; + +} + +.PopUpHome.Chamado .PainelFechar button { + border-radius: 2vh; + /* Isso dá ao botão bordas arredondadas */ + + color: var(--Cor_Segundaria_5_1); + /* Define a cor do texto do botão como um tom de branco suave (#fffefe) */ + + + + font-family: var(--font_titulo); + /* Define a fonte do texto como Arial */ + + /* Define a borda do botão com uma espessura de 0.1vw e cor branca (#ffffff) */ + border: 0.1vw solid #ffffff; + + /* Adiciona uma transição suave de 1 segundo para mudanças de estilo, como cor e tamanho */ + transition: 1s ease; + + width: 2vw; + /* Define a largura do botão como 1.5% da largura da viewport (tela) */ + + height: 2vw; + /* Define a altura do botão como 1.5% da largura da viewport (tela) */ + + /* Alinha o conteúdo do botão (texto ou elementos) no centro, horizontalmente */ + justify-content: center; + font-size: 1.2vw; + /* Alinha o conteúdo do botão (texto ou elementos) no centro, verticalmente */ + align-items: center; + +} + +.PopUpHome.Chamado .PainelFechar button:hover { + + color: #D9D9D9; + /*muda a cor do button */ + background-color: var(--Cor_Segundaria_5_1); + /*muda a cor do fundo */ + transition: 1s ease; + /*cria a transição */ +} + +.PopUpHome.Chamado .PainelEstado { + font-size: 0.7vw; + font-family: var(--font_titulo); + /* Define a fonte do texto com a variável --font_titulo */ + + height: 20%; + /* Define a altura do elemento como 20% da altura do elemento pai */ + + color: var(--Cor_Segundaria_5_1); + /* Define a cor do texto com a variável --Cor_Segundaria_5_1 */ + + /* Altera a cor de fundo ou a cor do painel usando a variável --Cor_Segundaria_5_1 */ + display: flex; + /* Torna o elemento um contêiner flexível (flexbox) */ + + flex-direction: column; + /* Organiza os itens no contêiner de forma vertical (coluna) */ + + align-items: center; + /* Alinha os itens no final do eixo transversal (vertical, no caso de flex-direction: column) */ + + justify-content: center; + /* Alinha os itens no centro do eixo principal (horizontal, por padrão) */ + + margin-right: 0.9vw; + /* Aplica uma margem à direita de 0.9% da largura da tela (viewport) */ + +} \ No newline at end of file diff --git a/Css/page/Ambiente/Home/Iten_dia.css b/Css/page/Ambiente/Home/Iten_dia.css new file mode 100644 index 0000000..e6d0c5f --- /dev/null +++ b/Css/page/Ambiente/Home/Iten_dia.css @@ -0,0 +1,110 @@ +.Subir { + animation: TrocadeMesUP 1s ease; +} + +.Decer { + animation: TrocadeMesDown 1s ease; +} + + + +.Capitulo_1 .linha_2 .Corpo_1 .linhaMes_1 { + + width: 90%; + height: 33vh; + + display: flex; + flex-direction: column; + justify-content: start; + align-content: center; + align-items: start; + + + + +} + + +.Capitulo_1 .linha_2 .Corpo_1 .linhaMes_1 .days { + width: 100%; + height: 4vh; + + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: start; + align-content: center; + align-items: start; + + gap: 0.3vw; + font-family: var(--font_titulo); + font-size: 0.8vw; + +} + +.Capitulo_1 .linha_2 .Corpo_1 .linhaMes_1 .days .day-name { + width: 2.3vw; + height: 4vh; + + display: flex; + justify-content: center; + align-items: center; + + + + transition: 1s ease; + + font-family: var(--font_titulo); + font-size: 0.8vw; + color: var(--Cor_Segundaria_5_1); + border-bottom: 0.1vw solid var(--Cor_Segundaria_5_1); + +} + +.Capitulo_1 .linha_2 .Corpo_1 .linhaMes_1 .dates { + + width: 100%; + height: 33vh; + + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: start; + align-content: center; + align-items: start; + + column-gap: 0.3vw; + row-gap: 0.1vw; + +} + + + +.Capitulo_1 .linha_2 .Corpo_1 .linhaMes_1 .dia, +.Capitulo_1 .linha_2 .Corpo_1 .linhaMes_1 .vazio { + width: 2.3vw; + height: 3.5vh; + margin-top: -1.8vh; + + display: flex; + justify-content: center; + align-items: center; + background-color: var(--Cor_Segundaria_5_1); + font-size: 0.8vw; + + transform: scale(1); + transition: 1s ease; + animation: TrocadeMesUP 1s ease; +} + +.Capitulo_1 .linha_2 .Corpo_1 .linhaMes_1 .dia:hover { + transform: scale(1.1); + transition: 0.2s ease; + background-color: var(--Cor_Segundaria_5_2); +} + + +.Capitulo_1 .linha_2 .Corpo_1 .linhaMes_1 .dia.destaque { + + background-color: var(--Cor_Primaria_5); +} \ No newline at end of file diff --git a/Css/page/Ambiente/Home/item_Financeiro.css b/Css/page/Ambiente/Home/item_Financeiro.css new file mode 100644 index 0000000..bf31cef --- /dev/null +++ b/Css/page/Ambiente/Home/item_Financeiro.css @@ -0,0 +1,65 @@ +.Capitulo_2 .painel .Corpo { + display: flex; + font-family: var(--font_titulo); + flex-direction: column; + + + + + + +} + +.Capitulo_2 .painel .Corpo .Mes_financeiro { + display: flex; + font-family: var(--font_titulo); + flex-direction: row; + + width: 95%; + height: 7vh; + align-items: center; + justify-content: space-between; + border-bottom: 0.5vh solid var(--Cor_Segundaria_5_1); + +} + +.Capitulo_2 .painel .Corpo .Mes_financeiro p { + background: none; + outline: none; + border: none; + color: var(--Cor_Segundaria_5_1); + font-size: 1.8vw; + + +} + +.Capitulo_2 .painel .Corpo .Mes_financeiro.Ativado button { + background: none; + outline: none; + border: none; + color: #a9a9a9; + /* Muda a cor do texto */ + background-color: var(--Cor_Segundaria_5_1); + /* Cor de fundo do botão */ + border-radius: 12vh; + transition: 1s ease; + /* Transição suave de 1 segundo */ + font-family: var(--font_conteudo); + /* Arredondar completamente */ + width: 10vw; + height: 3vh; + font-size: 0.8vw; + +} + + +.Capitulo_2 .painel .Corpo .Mes_financeiro.Ativado button:hover { + color: var(--Cor_Segundaria_5_1); + /* Muda a cor do texto */ + background-color: white; + /* Muda a cor de fundo */ + transition: 1s ease; + /* Transição suave de 1 segundo */ + + +} \ No newline at end of file diff --git a/Css/page/Ambiente/Home/root_Home.css b/Css/page/Ambiente/Home/root_Home.css index 1105cf2..9c38a64 100644 --- a/Css/page/Ambiente/Home/root_Home.css +++ b/Css/page/Ambiente/Home/root_Home.css @@ -1,3 +1,9 @@ +@import url(../../../global/Animcoes.css); + +@import url(./Iten_chamados.css); +@import url(./Iten_dia.css); @import url(./tela.css); @import url(./Aplicacoes.css); -@import url(./Painel_list.css); \ No newline at end of file +@import url(./Painel_list.css); +@import url(./Item_servico.css); +@import url(./item_Financeiro.css); \ No newline at end of file diff --git a/Css/page/Ambiente/Home/tela.css b/Css/page/Ambiente/Home/tela.css index 68bd034..9a2ba04 100644 --- a/Css/page/Ambiente/Home/tela.css +++ b/Css/page/Ambiente/Home/tela.css @@ -1,231 +1,374 @@ +/* Estilo para a seção CorpoArtificial dentro do capítulo 2 */ .capitulo_2 .CorpoArtificial { width: 89.6%; + /* Largura da seção CorpoArtificial, ocupando 89.6% da largura do seu contêiner */ height: 88vh; - + /* Altura da seção CorpoArtificial, ocupando 88% da altura da janela de visualização */ padding-top: 2vw; - + /* Espaçamento superior de 2% da largura da janela */ padding-left: 5vw; + /* Espaçamento à esquerda de 5% da largura da janela */ padding-right: 5vw; - + /* Espaçamento à direita de 5% da largura da janela */ background-color: #D9D9D9; - + /* Cor de fundo branco */ display: flex; + /* Flexbox para o layout */ flex-direction: column; + /* Organiza os itens em uma coluna */ align-items: center; + /* Alinha os itens ao centro horizontalmente */ gap: 2vh; + /* Espaçamento de 2% da altura da janela entre os elementos */ } +/* Estilos gerais para os capítulos 1 e 2, alinhando seus elementos */ .Capitulo_1, .Capitulo_2 { width: 100%; - - + /* Ocupa toda a largura disponível */ display: flex; + /* Flexbox para layout */ justify-content: center; + /* Alinha os itens horizontalmente ao centro */ align-items: center; + /* Alinha os itens verticalmente ao centro */ gap: 2vw; - + /* Espaçamento de 2% da largura da janela entre os elementos */ } +/* Estilo para a primeira linha no Capítulo 1 */ .Capitulo_1 .linha_1 { - width: 30vw; - + /* Largura de 30% da largura da janela */ display: flex; + /* Flexbox para layout */ flex-direction: column; + /* Organiza os itens em coluna */ align-items: center; + /* Alinha os itens ao centro */ row-gap: 2vh; + /* Espaçamento de 2% da altura da janela entre os itens */ transition: 1s ease; + /* Transição suave de 1 segundo */ } +/* Estilo para o painel dentro da linha 1 no Capítulo 1 */ .Capitulo_1 .linha_1 .painel { - - width: 30vw; - + /* Largura de 30% da largura da janela */ display: flex; + /* Flexbox para layout */ flex-direction: column; + /* Organiza os itens em coluna */ align-items: center; + /* Alinha os itens ao centro */ transition: 1s ease; + /* Transição suave de 1 segundo */ } +/* Estilo para a seção Corpo dentro do painel da linha 1 no Capítulo 1 */ .Capitulo_1 .linha_1 .Corpo { - width: 30vw; + /* Largura de 30% da largura da janela */ height: 47vh; - + /* Altura de 47% da altura da janela */ + padding-top: 2vh; + /* Espaçamento superior de 2% da altura da janela */ background-color: var(--Matriz); - font-family: var(--font_titulo); - color: var(--Cor_Segundaria_5_1); - + /* Cor de fundo usando uma variável CSS */ display: flex; - align-items: start; - justify-content: center; + /* Flexbox para layout */ + flex-direction: column; + /* Organiza os itens em coluna */ + align-items: center; + /* Alinha os itens ao centro */ + justify-content: start; + /* Alinha os itens ao topo */ align-content: start; + /* Alinha o conteúdo ao topo */ transition: 1s ease; - - + /* Transição suave de 1 segundo */ + gap: 1vw; + /* Espaçamento entre os itens de 1% da largura da janela */ overflow-y: auto; - + /* Habilita rolagem vertical caso o conteúdo ultrapasse a altura */ } +/* Estilo para o título (h2) dentro do Corpo no Capítulo 1 */ +.Capitulo_1 .linha_1 .Corpo h2 { + color: var(--Cor_Segundaria_5_1); + /* Cor do título usando uma variável CSS */ + font-family: var(--font_titulo); + /* Fonte para o título */ + font-size: 1vw; + /* Tamanho de fonte de 1% da largura da janela */ + font-size: 1vw; +} + +/* Estilo para a seção 'cap' dentro da linha 1 no Capítulo 1 */ .Capitulo_1 .linha_1 .cap { - width: 30vw; + /* Largura de 30% da largura da janela */ height: 5vh; - - + /* Altura de 5% da altura da janela */ background-color: var(--Cor_Segundaria_5_1); + /* Cor de fundo usando uma variável CSS */ font-family: var(--font_titulo); + /* Fonte usada no texto */ color: var(--Matriz); - + /* Cor do texto usando uma variável CSS */ display: flex; + /* Flexbox para layout */ align-items: center; + /* Alinha os itens ao centro verticalmente */ justify-content: center; + /* Alinha os itens ao centro horizontalmente */ transition: 1s ease; - + /* Transição suave de 1 segundo */ + font-size: 1vw; } - - +/* Estilo para a segunda linha no Capítulo 1 */ .Capitulo_1 .linha_2 { - width: 20vw; - + /* Largura de 20% da largura da janela */ display: flex; + /* Flexbox para layout */ flex-direction: column; + /* Organiza os itens em coluna */ align-items: center; + /* Alinha os itens ao centro */ row-gap: 2vh; + /* Espaçamento de 2% da altura da janela entre os itens */ transition: 1s ease; + /* Transição suave de 1 segundo */ } - +/* Estilo para o painel dentro da linha 2 no Capítulo 1 */ .Capitulo_1 .linha_2 .painel { - - width: 20vw; - + /* Largura de 20% da largura da janela */ display: flex; + /* Flexbox para layout */ flex-direction: column; + /* Organiza os itens em coluna */ align-items: center; - - - + /* Alinha os itens ao centro */ } +/* Estilo para a seção Corpo_1 dentro da linha 2 no Capítulo 1 */ .Capitulo_1 .linha_2 .Corpo_1 { - width: 20vw; - height: 25vh; + /* Largura de 20% da largura da janela */ + height: 34vh; + /* Altura de 34% da altura da janela */ transition: 1s ease; - + /* Transição suave de 1 segundo */ background-color: var(--Matriz); + /* Cor de fundo usando variável CSS */ font-family: var(--font_titulo); - color: var(--Cor_Segundaria_5_1); - - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - - -} - -.Capitulo_1 .linha_2 .Corpo_1 .linhaMes_1 { - - display: flex; - justify-content: center; - align-items: center; - gap: 4vw; - - font-size: 1.6vw; - - -} - -.Capitulo_1 .linha_2 .Corpo_1 .linhaMes_1 button { - - background: none; - border: none; - outline: none; - - font-family: var(--font_titulo); - font-size: 1.7vw; - color: var(--Cor_Segundaria_5_1); - - -} - - -.Capitulo_1 .linha_2 .Corpo_2 { - - width: 20vw; - height: 15vh; - transition: 1s ease; - - background-color: var(--Matriz); - font-family: var(--font_titulo); - color: var(--Cor_Segundaria_5_1); - - display: flex; - align-items: center; - justify-content: center; - - -} - - - -.Capitulo_1 .linha_2 .cap { - - width: 20vw; - height: 5vh; - transition: 1s ease; - - background-color: var(--Cor_Segundaria_5_1); - font-family: var(--font_titulo); + /* Fonte usada no texto */ color: var(--Matriz); - + /* Cor do texto usando variável CSS */ display: flex; + /* Flexbox para layout */ + flex-direction: column; + /* Organiza os itens em coluna */ align-items: center; + /* Alinha os itens ao centro */ justify-content: center; - - + /* Alinha os itens ao centro */ + overflow: hidden; + /* Impede o transbordamento de conteúdo */ + font-size: 1vw; } +/* Estilo para o botão dentro da cap na linha 2 do Capítulo 1 */ +.Capitulo_1 .linha_2 .cap button { + background: none; + /* Remove o fundo do botão */ + border: none; + /* Remove a borda do botão */ + outline: none; + /* Remove o contorno do botão */ + font-family: var(--font_titulo); + /* Fonte usada no botão */ + font-size: 1vw; + /* Tamanho da fonte de 1.7% da largura da janela */ + color: var(--Matriz); + /* Cor do texto usando variável CSS */ +} + +/* Estilo para a seção Corpo_2 dentro da linha 2 no Capítulo 1 */ +.Capitulo_1 .linha_2 .Corpo_2 { + width: 20vw; + /* Largura de 20% da largura da janela */ + height: 8vh; + /* Altura de 8% da altura da janela */ + transition: 1s ease; + /* Transição suave de 1 segundo */ + background-color: var(--Matriz); + /* Cor de fundo usando variável CSS */ + font-family: var(--font_titulo); + /* Fonte usada no texto */ + color: var(--Cor_Segundaria_5_1); + /* Cor do texto usando variável CSS */ + display: flex; + /* Flexbox para layout */ + align-items: center; + /* Alinha os itens ao centro verticalmente */ + justify-content: center; + /* Alinha os itens ao centro horizontalmente */ + font-size: 1vw; +} + +/* Estilo para o botão dentro da cap na linha 2 do Capítulo 1 */ +.Capitulo_1 .linha_2 .cap { + width: 20vw; + /* Largura de 20% da largura da janela */ + height: 5vh; + /* Altura de 5% da altura da janela */ + transition: 1s ease; + /* Transição suave de 1 segundo */ + background-color: var(--Cor_Segundaria_5_1); + /* Cor de fundo usando variável CSS */ + font-family: var(--font_titulo); + /* Fonte usada no botão */ + color: var(--Matriz); + /* Cor do texto usando variável CSS */ + display: flex; + /* Flexbox para layout */ + align-items: center; + /* Alinha os itens ao centro verticalmente */ + justify-content: center; + /* Alinha os itens ao centro horizontalmente */ + overflow: hidden; + /* Impede o transbordamento de conteúdo */ + font-size: 1vw; +} + +/* Estilos do painel no Capítulo 2 */ .Capitulo_2 .painel { width: 97%; + /* Largura de 97% da largura do contêiner */ height: 40vh; - - + /* Altura de 40% da altura da janela */ } +/* Estilo da cap no Capítulo 2 */ .Capitulo_2 .cap { width: 100%; + /* Ocupa toda a largura disponível */ height: 5vh; - + /* Altura de 5% da altura da janela */ background-color: var(--Cor_Segundaria_5_1); + /* Cor de fundo usando variável CSS */ font-family: var(--font_titulo); + /* Fonte usada no título */ color: var(--Matriz); - + /* Cor do texto usando variável CSS */ display: flex; + /* Flexbox para layout */ align-items: center; + /* Alinha os itens ao centro verticalmente */ justify-content: center; + /* Alinha os itens à direita */ + font-size: 1vw; } - - -.Capitulo_2 .Corpo { - - width: 100%; - height: 25vh; - - background-color: var(--Matriz); +/* Estilo para a coluna 1 dentro da cap do Capítulo 2 */ +.Capitulo_2 .cap .Coluna_1 { + width: 70%; + /* Largura de 70% da largura da cap */ + height: 5vh; + /* Altura de 5% da altura da cap */ + background-color: var(--Cor_Segundaria_5_1); + /* Cor de fundo usando variável CSS */ font-family: var(--font_titulo); - color: var(--Cor_Segundaria_5_1); - + /* Fonte usada no texto */ + color: var(--Matriz); + /* Cor do texto usando variável CSS */ display: flex; + /* Flexbox para layout */ align-items: center; + /* Alinha os itens ao centro verticalmente */ justify-content: center; + /* Alinha os itens à direita */ + font-size: 1vw; +} + +/* Estilo para a coluna 2 dentro da cap do Capítulo 2 */ +.Capitulo_2 .cap .Coluna_2 { + width: 30%; + /* Largura de 30% da largura da cap */ + height: 4vh; + /* Altura de 4% da altura da cap */ + padding-right: 4vw; + /* Espaçamento à direita de 4% da largura da janela */ + font-family: var(--font_titulo); + /* Fonte usada no texto */ + color: var(--Matriz); + /* Cor do texto usando variável CSS */ + display: flex; + /* Flexbox para layout */ + align-items: center; + /* Alinha os itens ao centro verticalmente */ + justify-content: right; + /* Alinha os itens à direita */ + padding-left: 10vw; + /* Espaçamento à esquerda de 10% da largura da janela */ + font-size: 1vw; +} + +/* Estilo para o botão dentro da coluna 2 no Capítulo 2 */ +.Capitulo_2 .cap .Coluna_2 button { + color: #D9D9D9; + /* Cor do texto do botão */ + background-color: var(--Cor_Segundaria_5_1); + /* Cor de fundo do botão */ + border-radius: 12vh; + /* Borda arredondada */ + font-family: var(--font_titulo); + /* Fonte usada no botão */ + border: 0.1vw solid var(--Matriz); + /* Borda fina e branca */ + transition: 1s ease; + /* Transição suave de 1 segundo */ + font-size: 1vw; + +} + +/* Efeito de hover no botão da coluna 2 do Capítulo 2 */ +.Capitulo_2 .cap .Coluna_2 button:hover { + color: var(--Cor_Segundaria_5_1); + /* Muda a cor do texto */ + background-color: #D9D9D9; + /* Muda a cor de fundo */ + transition: 1s ease; + /* Transição suave de 1 segundo */ +} + +/* Estilo do Corpo no Capítulo 2 */ +.Capitulo_2 .Corpo { + width: 100%; + /* Ocupa toda a largura disponível */ + height: 25vh; + /* Altura de 25% da altura da janela */ + background-color: var(--Matriz); + /* Cor de fundo usando variável CSS */ + font-family: var(--font_titulo); + /* Fonte usada no texto */ + color: var(--Cor_Segundaria_5_1); + /* Cor do texto usando variável CSS */ + display: flex; + /* Flexbox para layout */ + align-items: center; + /* Alinha os itens ao centro verticalmente */ + justify-content: center; + /* Alinha os itens ao centro horizontalmente */ + /* Tamanho da fonte de 2.2% da largura da janela */ + font-size: 1vw; + } \ No newline at end of file diff --git a/Css/page/Login/Erros_login.css b/Css/page/Login/Erros_login.css index f58b614..7bb9535 100644 --- a/Css/page/Login/Erros_login.css +++ b/Css/page/Login/Erros_login.css @@ -14,6 +14,41 @@ } +.error-message.Status_400 { + color: #00bcd4; + +} + +.error-message.Status_404 { + color: #055499; + +} + +.error-message.Status_404 { + color: #4399e4; + +} + +.error-message.Status_401 { + color: #123f66; + +} + +.error-message.Status_500 { + color: #9726dd; + +} + +.error-message.Status_502 { + color: #5c0096; + +} + +.error-message.Status_503 { + color: #dca5fd; + +} + /*Sub classe para edições especificas, para a tag p, usando como referencia da classe, error-message*/ .error-message p { font-size: 1.2vw; diff --git a/Css/page/Telas_acao/load.css b/Css/page/Telas_acao/load.css index 6c1e965..dea5632 100644 --- a/Css/page/Telas_acao/load.css +++ b/Css/page/Telas_acao/load.css @@ -16,6 +16,8 @@ align-content: center; font-family: var(--font_titulo); + font-size: 1.8vw; + color: var(--Cor_Segundaria_5_1); border: 1px solid #fff; @@ -24,4 +26,67 @@ .teste canvas { width: 40vw; height: 40vh; +} + +.Painel_loading { + position: absolute; + width: 100%; + height: 90vh; + background-color: var(--Matriz); + z-index: 1000000; + + display: flex; + align-items: center; + justify-content: center; + transition: 1s ease; +} + +.Painel_loadingConfig { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100vh; + background-color: var(--Matriz); + z-index: 1000000; + + display: flex; + align-items: center; + justify-content: center; + transition: 1s ease; +} + +.loading span { + display: inline-block; + width: 20px; + height: 20px; + border-radius: 50%; + background: #09b; + margin: 8px; +} + +.loading span { + animation: bounce .6s cubic-bezier(0.6, 0.1, 1, 0.4); + animation-iteration-count: infinite; + animation-direction: alternate; + +} + +.loading span:nth-child(1) { + animation-delay: .1s; +} + +.loading span:nth-child(2) { + animation-delay: .2s; +} + +.loading span:nth-child(3) { + animation-delay: .3s; +} + +@keyframes bounce { + + to { + transform: translateY(50px); + } } \ No newline at end of file diff --git a/js/Data_Moni_A1.js b/js/Data_Moni_A1.js deleted file mode 100644 index 2142745..0000000 --- a/js/Data_Moni_A1.js +++ /dev/null @@ -1,21 +0,0 @@ -// Array de objetos contendo os dados para cada bloco -const dadosDoBloco = [ - { - Botao_1_A: 'http://grafana.itguys.com.br:3000/d-solo/c44d02bc-649f-489d-8d2b-ed51fd5d2144/ronald-santoro?orgId=1&refresh=5s&from=1714481632716&to=1714503232716&panelId=18', - Botao_1_P: 'Alertas', - Botao_2_A: 'http://grafana.itguys.com.br:3000/d-solo/c44d02bc-649f-489d-8d2b-ed51fd5d2144/ronald-santoro?orgId=1&refresh=5s&from=1714481787856&to=1714503387856&panelId=14', - Botao_2_P: 'VPN', - Botao_3_A: 'http://grafana.itguys.com.br:3000/d-solo/c44d02bc-649f-489d-8d2b-ed51fd5d2144/ronald-santoro?orgId=1&refresh=5s&from=1714481898486&to=1714503498486&panelId=16', - Botao_3_P: 'Cliente VPN', - Botao_4_A: 'http://grafana.itguys.com.br:3000/d-solo/c44d02bc-649f-489d-8d2b-ed51fd5d2144/ronald-santoro?orgId=1&refresh=5s&from=1714483194747&to=1714504794747&panelId=30', - Botao_4_P: 'Ramais', - Botao_5_A: 'http://grafana.itguys.com.br:3000/d-solo/c44d02bc-649f-489d-8d2b-ed51fd5d2144/ronald-santoro?orgId=1&refresh=5s&from=1714483229912&to=1714504829912&panelId=4', - Botao_5_P: 'WAN', - - - Tela: 'http://grafana.itguys.com.br:3000/d/c44d02bc-649f-489d-8d2b-ed51fd5d2144/ronald-santoro?orgId=1&refresh=5s', - - - } -]; - diff --git a/js/Erro_404.js b/js/Erro_404.js deleted file mode 100644 index ce45c68..0000000 --- a/js/Erro_404.js +++ /dev/null @@ -1,107 +0,0 @@ -//Data 1 -const dadosDosBlocos = [ - { - - titulo404: 'Erro 404', - titulotex: 'Desculpa, mas não possivel encontra sua pagina!', - titulosubtex: 'Tente fazer seu login novamente', - link2: 'https://dev.itguys.com.br/ambiente_do_usu%C3%A1rio/login.html', - botao: 'Retornar', - } -]; - - -document.addEventListener("DOMContentLoaded", function () { - var main = document.getElementById("entrada_1"); - - // Verificar se a tag main está vazia - if (main.innerHTML.trim() === "") { - // Se estiver vazia, adicione a estrutura alternativa - // Função para criar os blocos com base nos dados fornecidos - function criarBlocos(dados) { - // Limpar o container de blocos - entrada_1.innerHTML = ''; - - // Iterar sobre o array de dados dos blocos - dados.forEach(dadosDoBloco => { - // Responsavel por trazer todos os lementos da tela. - const Painel = document.createElement('section'); - Painel.classList.add('matriz_404'); - Painel.id = "cap"; - - - const painel1 = document.createElement('section'); - painel1.classList.add('paineis_1'); - - const cap1 = document.createElement('div'); - cap1.classList.add('cap'); - painel1.appendChild(cap1) - const titulo404 = document.createElement('h1'); - titulo404.textContent = dadosDoBloco.titulo404; - cap1.appendChild(titulo404) - - - const painel2 = document.createElement('section'); - painel2.classList.add('paineis_2'); - - const cap2 = document.createElement('div'); - cap2.classList.add('cap'); - painel2.appendChild(cap2) - const titulotex = document.createElement('h2'); - titulotex.textContent = dadosDoBloco.titulotex; - cap2.appendChild(titulotex) - - const titulosubtex = document.createElement('p'); - titulosubtex.textContent = dadosDoBloco.titulosubtex; - cap2.appendChild(titulosubtex) - - const capsub2 = document.createElement('div'); - capsub2.classList.add('cap_2'); - painel2.appendChild(capsub2) - const link2 = document.createElement('a'); - capsub2.appendChild(link2) - link2.href = dadosDoBloco.link2; - const botao = document.createElement('button'); - botao.textContent = dadosDoBloco.botao; - link2.appendChild(botao); - - - - - const wave1 = document.createElement('div'); - wave1.classList.add('wave', 'wave_1'); - Painel.appendChild(wave1); - - const wave2 = document.createElement('div'); - wave2.classList.add('wave', 'wave_2'); - Painel.appendChild(wave2); - - const wave3 = document.createElement('div'); - wave3.classList.add('wave', 'wave_3'); - Painel.appendChild(wave3); - - const wave4 = document.createElement('div'); - wave4.classList.add('wave', 'wave_4'); - Painel.appendChild(wave4); - - - // Adicionar o painel ao bloco - - - Painel.appendChild(painel1); - Painel.appendChild(painel2); - - - - - // Adicionar o bloco ao container de blocos - entrada_1.appendChild(Painel); - }); - } - - } - // Renderizar os blocos inicialmente ao carregar a página - criarBlocos(dadosDosBlocos); - - -}); \ No newline at end of file diff --git a/js/dominio.js b/js/dominio.js deleted file mode 100644 index d737263..0000000 --- a/js/dominio.js +++ /dev/null @@ -1,89 +0,0 @@ -document.addEventListener("DOMContentLoaded", loadDomains); - -// Função para carregar e exibir todos os domínios -function loadDomains() { - fetch('http://www.itguys.com.br:3000/domains') - .then(response => response.json()) - .then(data => { - const domainList = document.getElementById('domainList'); - domainList.innerHTML = ''; - for (const domain in data) { - const li = document.createElement('li'); - li.innerHTML = ` - ${domain}: ${JSON.stringify(data[domain], null, 2)} - - - `; - domainList.appendChild(li); - } - }) - .catch(error => console.error('Erro ao carregar domínios:', error)); -} - -// Função para carregar os dados de um domínio específico no formulário de edição -function loadDomainData(domain) { - fetch(`http://www.itguys.com.br:3000/domains/${domain}`) - .then(response => response.json()) - .then(data => { - document.getElementById('domain').value = domain; - document.getElementById('data').value = JSON.stringify(data, null, 2); - }) - .catch(error => console.error('Erro ao carregar dados do domínio:', error)); -} - -// Função para adicionar um novo domínio -function addDomain() { - const domain = document.getElementById('domain').value; - const data = document.getElementById('data').value; - - fetch('http://www.itguys.com.br:3000/add-domain', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ domain, data: JSON.parse(data) }) - }) - .then(response => response.text()) - .then(message => { - document.getElementById('message').textContent = message; - loadDomains(); - }) - .catch(error => console.error('Erro ao adicionar domínio:', error)); -} - -// Função para editar um domínio existente -function editDomain() { - const domain = document.getElementById('domain').value; - const data = document.getElementById('data').value; - - fetch('http://www.itguys.com.br:3000/edit-domain', { - method: 'PUT', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ domain, data: JSON.parse(data) }) - }) - .then(response => response.text()) - .then(message => { - document.getElementById('message').textContent = message; - loadDomains(); - }) - .catch(error => console.error('Erro ao editar domínio:', error)); -} - -// Função para excluir um domínio existente -function deleteDomain(domain) { - fetch('http://www.itguys.com.br:3000/delete-domain', { - method: 'DELETE', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ domain }) - }) - .then(response => response.text()) - .then(message => { - document.getElementById('message').textContent = message; - loadDomains(); - }) - .catch(error => console.error('Erro ao excluir domínio:', error)); -} diff --git a/js/global/Modulo_de_Insercao_Html/Funcao/Inserirscripts.js b/js/global/Modulo_de_Insercao_Html/Funcao/Inserirscripts.js deleted file mode 100644 index 613922b..0000000 --- a/js/global/Modulo_de_Insercao_Html/Funcao/Inserirscripts.js +++ /dev/null @@ -1,24 +0,0 @@ -function loadScriptsSequentially(scripts, callback) { - if (!scripts.length) { - if (callback) callback(); - return; - } - - const script = document.createElement('script'); - script.src = scripts[0]; - script.onload = () => loadScriptsSequentially(scripts.slice(1), callback); - script.onerror = () => console.error(`Erro ao carregar o script: ${scripts[0]}`); - document.getElementById('scriptsConstructor').appendChild(script); -} - -const scriptPaths = [ - './js/page/Ambiente/Estrutura/Modulo_Construcao/Funcao/Autencacao.js', - './js/global/Modulo_de_Comunicacao/Funcao/Comunicacao.js', - './js/page/Ambiente/Estrutura/Modulo_Construcao/Funcao/Controlador_telas.js', - './js/page/Ambiente/Estrutura/Modulo_Construcao/Painel/Erro/Html_erro.js', - './js/page/Ambiente/Estrutura/Modulo_Construcao/Painel/Erro/Painel_Erro.js', -]; - -loadScriptsSequentially(scriptPaths, () => { - console.log('Todos os scripts foram carregados.'); -}); diff --git a/js/padrao_Moni_A1.js b/js/padrao_Moni_A1.js deleted file mode 100644 index 3e212fd..0000000 --- a/js/padrao_Moni_A1.js +++ /dev/null @@ -1,99 +0,0 @@ - -// Função para criar os blocos com base nos dados fornecidos -function criarBlocos(dados) { - // Limpar o container de blocos - entrada_1.innerHTML = ''; - - // Iterar sobre o array de dados dos blocos - dados.forEach(dadosDoBloco => { - - const Painel = document.createElement('main'); - Painel.classList.add('Corpo'); - const Capitulo_1 = document.createElement('section'); - Capitulo_1.classList.add('Capitulos_1'); - const Capitulo_2 = document.createElement('section'); - Capitulo_2.classList.add('Capitulos_2') - // Adicionar o painel ao bloco - - const sub_tela_1 = document.createElement('a'); - sub_tela_1.href = dadosDoBloco.Botao_1_A; - sub_tela_1.target = 'iframe'; - Capitulo_1.appendChild(sub_tela_1); - const chama_tela_1 = document.createElement('div'); - chama_tela_1.classList.add('reação'); - sub_tela_1.appendChild(chama_tela_1); - const conteudo_tela_1 = document.createElement('p'); - conteudo_tela_1.textContent = dadosDoBloco.Botao_1_P; - chama_tela_1.appendChild(conteudo_tela_1); - - const sub_tela_2 = document.createElement('a'); - sub_tela_2.href = dadosDoBloco.Botao_2_A; - sub_tela_2.target = 'iframe'; - Capitulo_1.appendChild(sub_tela_2); - const chama_tela_2 = document.createElement('div'); - chama_tela_2.classList.add('reação'); - sub_tela_2.appendChild(chama_tela_2); - const conteudo_tela_2 = document.createElement('p'); - conteudo_tela_2.textContent = dadosDoBloco.Botao_2_P; - chama_tela_2.appendChild(conteudo_tela_2); - - const sub_tela_3 = document.createElement('a'); - sub_tela_3.href = dadosDoBloco.Botao_3_A; - sub_tela_3.target = 'iframe'; - Capitulo_1.appendChild(sub_tela_3); - const chama_tela_3 = document.createElement('div'); - chama_tela_3.classList.add('reação'); - sub_tela_3.appendChild(chama_tela_3); - const conteudo_tela_3 = document.createElement('p'); - conteudo_tela_3.textContent = dadosDoBloco.Botao_3_P; - chama_tela_3.appendChild(conteudo_tela_3); - - const sub_tela_4 = document.createElement('a'); - sub_tela_4.href = dadosDoBloco.Botao_4_A; - sub_tela_4.target = 'iframe'; - Capitulo_1.appendChild(sub_tela_4); - const chama_tela_4 = document.createElement('div'); - chama_tela_4.classList.add('reação'); - sub_tela_4.appendChild(chama_tela_4); - const conteudo_tela_4 = document.createElement('p'); - conteudo_tela_4.textContent = dadosDoBloco.Botao_4_P; - chama_tela_4.appendChild(conteudo_tela_4); - - const sub_tela_5 = document.createElement('a'); - sub_tela_5.href = dadosDoBloco.Botao_5_A; - sub_tela_5.target = 'iframe'; - Capitulo_1.appendChild(sub_tela_5); - const chama_tela_5 = document.createElement('div'); - chama_tela_5.classList.add('reação'); - sub_tela_5.appendChild(chama_tela_5); - const conteudo_tela_5 = document.createElement('p'); - conteudo_tela_5.textContent = dadosDoBloco.Botao_5_P; - chama_tela_5.appendChild(conteudo_tela_5); - - - const Tela = document.createElement('iframe'); - Tela.src = dadosDoBloco.Tela; - Tela.name = 'iframe'; - Capitulo_2.appendChild(Tela); - - Painel.appendChild(Capitulo_1); - Painel.appendChild(Capitulo_2); - - // Adicionar o bloco ao container de blocos - entrada_1.appendChild(Painel); - }); -} - -criarBlocos(dadosDoBloco); - -var temas = document.querySelectorAll('.reação') - -function selectLink() { - temas.forEach((item) => - item.classList.remove('ativo') - ) - this.classList.add('ativo') -} -temas.forEach((item) => - item.addEventListener('click', selectLink)) - diff --git a/js/page/Modulo_Autenticacao/Funcao/login.js b/js/page/Modulo_Autenticacao/Funcao/login.js index 31ce767..44ffcd6 100644 --- a/js/page/Modulo_Autenticacao/Funcao/login.js +++ b/js/page/Modulo_Autenticacao/Funcao/login.js @@ -22,6 +22,7 @@ document.getElementById("formLogin").addEventListener("submit", async function ( usernameElement.style.borderColor = ''; passwordElement.style.borderColor = ''; + // Verifica se os elementos do nome de usuário e senha existem if (!usernameElement || !passwordElement) { console.error('Username or password element not found'); @@ -75,8 +76,8 @@ document.getElementById("formLogin").addEventListener("submit", async function ( const data = await response.json(); // Extrai os dados JSON da resposta localStorage.setItem('x-access-token', data.token); // Armazena o token de autenticação no localStorage - // Redireciona o usuário para a página do ambiente do usuário - window.location.href = "./Ambiente_Usuario.html"; + errorMessageElement.innerHTML = "

Ambiente está carregando .....

" + window.location.href = "./Ambiente_Usuario.html"; // Redireciona o usuário para a página do ambiente do usuário } diff --git a/js/page/Modulo_Autenticacao/Painel/Repostas.js b/js/page/Modulo_Autenticacao/Painel/Repostas.js index 315cfd4..cc73460 100644 --- a/js/page/Modulo_Autenticacao/Painel/Repostas.js +++ b/js/page/Modulo_Autenticacao/Painel/Repostas.js @@ -22,13 +22,17 @@ function mensagensVazias(errorMessageElement, usernameElement, passwordElement) } -async function RespostasErro(comunica, response, errorMessageElement, usernameElement, passwordElement, erro5003) { +async function RespostasErro(comunica, response, errorMessageElement, usernameElement, passwordElement) { + /*Caso erro, onde o email usado é invalido*/ if (comunica === 400) { + errorMessageElement.innerHTML = `

O E-mail usado é invalido, o formato esperado é "usuario@domino.com.br"

`; + errorMessageElement.classList.add('Status_400') + errorMessageElement.style.height = '10vh'; errorMessageElement.style.opacity = '1'; @@ -39,6 +43,8 @@ async function RespostasErro(comunica, response, errorMessageElement, usernameEl const tempoDeExibicao = 5000; setTimeout(() => { + errorMessageElement.classList.remove('Status_400') + usernameElement.style.borderColor = '#1478cf'; // Marca o campo do usuário com erro errorMessageElement.style.height = '0vh'; // Oculta a mensagem errorMessageElement.style.opacity = '0'; @@ -52,6 +58,8 @@ async function RespostasErro(comunica, response, errorMessageElement, usernameEl errorMessageElement.innerHTML = `

Erro na autenticação, informe ao suporte, no e-mail suporte@itguys.com.br

`; + errorMessageElement.classList.add('Status_401') + errorMessageElement.style.height = '10vh'; errorMessageElement.style.opacity = '1'; @@ -60,6 +68,8 @@ async function RespostasErro(comunica, response, errorMessageElement, usernameEl const tempoDeExibicao = 5000; setTimeout(() => { + errorMessageElement.classList.remove('Status_401') + errorMessageElement.style.height = '0vh'; // Oculta a mensagem errorMessageElement.style.opacity = '0'; errorMessageElement.style.transition = ' 1s ease'; @@ -76,6 +86,9 @@ async function RespostasErro(comunica, response, errorMessageElement, usernameEl errorMessageElement.style.height = '10vh'; errorMessageElement.style.opacity = '1'; + errorMessageElement.classList.add('Status_404') + + usernameElement.style.borderColor = 'red'; // Marca o campo do usuário com erro passwordElement.style.borderColor = 'red'; // Marca o campo da senha com erro errorMessageElement.style.transition = ' 1s ease'; @@ -83,6 +96,38 @@ async function RespostasErro(comunica, response, errorMessageElement, usernameEl const tempoDeExibicao = 5000; setTimeout(() => { + errorMessageElement.classList.remove('Status_404') + + usernameElement.style.borderColor = '#1478cf'; // Marca o campo do usuário com erro + passwordElement.style.borderColor = '#1478cf'; // Marca o campo da senha com erro + errorMessageElement.style.height = '0vh'; // Oculta a mensagem + errorMessageElement.style.opacity = '0'; + errorMessageElement.style.transition = ' 1s ease'; + }, tempoDeExibicao); + + } + + /*Caso erro, onde o usuário ou senha podem estar incorretos*/ + if (comunica === 500) { + + errorMessageElement.innerHTML = `

Estamos enfrentando dificuldades técnicas no momento. Por favor, tente novamente mais tarde.

`; + + + errorMessageElement.style.height = '10vh'; + errorMessageElement.style.opacity = '1'; + + + errorMessageElement.classList.add('Status_500') + + usernameElement.style.borderColor = 'red'; // Marca o campo do usuário com erro + passwordElement.style.borderColor = 'red'; // Marca o campo da senha com erro + errorMessageElement.style.transition = ' 1s ease'; + + const tempoDeExibicao = 5000; + setTimeout(() => { + + errorMessageElement.classList.remove('Status_500') + usernameElement.style.borderColor = '#1478cf'; // Marca o campo do usuário com erro passwordElement.style.borderColor = '#1478cf'; // Marca o campo da senha com erro errorMessageElement.style.height = '0vh'; // Oculta a mensagem @@ -93,49 +138,24 @@ async function RespostasErro(comunica, response, errorMessageElement, usernameEl } /*Caso de erro especial, que é apresentado em um pop up, essa estrutura pega a informações da resposta em json e os apresenta sobre o pop up na tela*/ - if (comunica === 500) { - - const erro_500 = await response.json(); - const erroMessage = JSON.stringify(erro_500, null, 2); // O segundo argumento é para substituição, e o terceiro é para a indentação - - erro5003.innerHTML = - "
" - + - "

Contate o suporte suporte@itguys.com.br e informe esse erro" - + - erroMessage - + - "

"; - erro5003.style.height = '45vh'; // Oculta a mensagem - erro5003.style.opacity = '1'; - erro5003.style.transition = ' 1s ease'; - - //função para fechar o pop up de erro. - var botao = window.document.getElementById('fechar'); - - botao.addEventListener('click', clicou); - - function clicou() { - erro5003.style.height = '0vh'; // Oculta a mensagem - erro5003.style.opacity = '0'; - erro5003.style.transition = ' 1s ease'; - } - - } /*Caso de erro, onde acontece um problema na comunicação com o proprio servidor*/ if (comunica === 503) { - errorMessageElement.innerHTML = `

Não foi possivel se conectar ao servidor, informe ao suporte@itguys.com.br

`; + errorMessageElement.innerHTML = `

Estamos realizando manutenções necessárias. Agradecemos por sua compreensão.

`; errorMessageElement.style.height = '15vh'; errorMessageElement.style.opacity = '1'; + errorMessageElement.classList.add('Status_503') + errorMessageElement.style.transition = ' 1s ease'; const tempoDeExibicao = 5000; setTimeout(() => { + errorMessageElement.classList.remove('Status_503') + errorMessageElement.style.height = '0vh'; // Oculta a mensagem errorMessageElement.style.opacity = '0'; errorMessageElement.style.transition = ' 1s ease'; @@ -146,16 +166,20 @@ async function RespostasErro(comunica, response, errorMessageElement, usernameEl /*Caso de erro, onde acontece um problema na comunicação com o proprio servidor*/ if (comunica === 502) { - errorMessageElement.innerHTML = `

Ocorreu um erro, ao tentar se comunicar com o servidor. Por favor, tente novamente mais tarde, entre contato

`; + errorMessageElement.innerHTML = `

Houve um problema ao processar sua solicitação. Estamos trabalhando para corrigir a situação.

`; errorMessageElement.style.height = '15vh'; errorMessageElement.style.opacity = '1'; + errorMessageElement.classList.add('Status_502') + errorMessageElement.style.transition = ' 1s ease'; const tempoDeExibicao = 5000; setTimeout(() => { + errorMessageElement.classList.remove('Status_502') + errorMessageElement.style.height = '0vh'; // Oculta a mensagem errorMessageElement.style.opacity = '0'; errorMessageElement.style.transition = ' 1s ease'; diff --git a/js/page/Modulo_Construcao/Funcao/Config/Dashbord/PopDashbord.js b/js/page/Modulo_Construcao/Funcao/Config/Dashbord/PopDashbord.js deleted file mode 100644 index e69de29..0000000 diff --git a/js/page/Modulo_Construcao/Funcao/Config/Estrutura/config.js b/js/page/Modulo_Construcao/Funcao/Config/Estrutura/config.js index c55227a..fdc5e9e 100644 --- a/js/page/Modulo_Construcao/Funcao/Config/Estrutura/config.js +++ b/js/page/Modulo_Construcao/Funcao/Config/Estrutura/config.js @@ -1,39 +1,68 @@ + + + async function InteracoesTelas_Config() { - //ControladorDeVisualizacao(InfoGeral); + let usuariConfig = null + // Conexção com o script de Comunicacao.js para se utilizar da função de autenticação com a rota mouten, para puxar a const response e apiURL + const { response, apiUrl } = await Autenticao(); + //Essa constante faz um tratamento sobre a response retirando o json para armazenar nesse data + const data = await response.json(); - const Config_texts = document.getElementById('Voltar_config'); + //console.log(data) + // Armazena os dados para usos futuros + usuariConfig = { + nomeCompleto: data.usuario.nome, + Empresa: data.empresa.nome, + ImagemUser: `${apiUrl}${data.usuario.img_perfil}`, + FundoUser: `${apiUrl}${data.usuario.img_fundo}` + }; - const Home_texts = document.getElementById('Home_1'); - const Home_icon = document.getElementById('Home_2'); + + //console.log("Esse dados vem para configurações", usuariConfig) + ControladorDeVisualizacao_config(usuariConfig) + + const Voltar_home = document.getElementById('Voltar_config'); + + + const Manual_button = document.getElementById('Manual_config'); + const Perfil_button = document.getElementById('Perfil_config'); // Adiciona eventos para alternar entre as telas - Config_texts.addEventListener('click', () => carregarTela_config('config2')); + Voltar_home.addEventListener('click', () => carregarTela_config('RetornarHome')); - Home_texts.addEventListener('click', () => carregarTela_config('home2')); - Home_icon.addEventListener('click', () => carregarTela_config('home2')); + + Manual_button.addEventListener('click', () => carregarTela_config('PainelManual')); + Perfil_button.addEventListener('click', () => carregarTela_config('PainelEstilo')); + + localStorage.setItem('Carregou_tela_config', 'true'); } async function carregarTela_config(tela) { - const telaVisualizacao = document.getElementById('TelaVisualizacao'); + const telaVisualizacao = document.getElementById('Pop_up_Config'); const scriptPaths = { //Alinhamento das telas por datas, aqui são organizadas das possiveis respostas de cada botão e os caminhos scripts cada uma delas necessita para o seu funcionamento. - home2: { - func: './js/page/Modulo_Construcao/Funcao/Home/Func_Home.js', - html: './js/page/Modulo_Construcao/Painel/Home/Html_Home.js', + PainelEstilo: { + func: './js/page/Modulo_Construcao/Funcao/Config/Perfil/PopPerfil_Func.js', + html: './js/page/Modulo_Construcao/Painel/Config/Perfil/PopPerfil_html.js', mensagem: 'Carregando ...', }, - moni: { - func: './js/page/Modulo_Construcao/Funcao/Monitoramento/Func_Moni.js', - html: './js/page/Modulo_Construcao/Painel/Monitoramento/Html_Moni.js', + PainelUser: { + func: './js/page/Modulo_Construcao/Funcao/Config/User/PopUser_Func.js', + html: './js/page/Modulo_Construcao/Painel/Config/User/PopUser_html.js', mensagem: 'Carregando ...', }, - config2: { + PainelManual: { + func: './js/page/Modulo_Construcao/Funcao/Config/Manual/PopManual_Func.js', + html: './js/page/Modulo_Construcao/Painel/Config/Manual/PopManual_html.js', + mensagem: 'Carregando ...', + }, + RetornarHome: { func: './js/page/Modulo_Construcao/Funcao/Config/Estrutura/config.js', html: './js/page/Modulo_Construcao/Painel/Config/Estrutura/Estrutura_Config_Html.js', mensagem: 'Carregando ...', @@ -55,32 +84,52 @@ async function carregarTela_config(tela) { carregarScript(scriptPaths[tela].html), ]); - // Aplicação de if realizam a modificação da mensagem de cada condicional para a estrutura de seu html respectivo. + + // Função para atualizar a classe de forma dinâmica + function atualizarClasse(novaClasse) { + telaVisualizacao.className = 'Pop_up_Config'; // Remove todas as classes, mantendo apenas a base + telaVisualizacao.classList.add(novaClasse); // Adiciona a nova classe + } + // Estrutura html do home - if (tela === 'home' && typeof estruturaHtml_Home === 'function') { + if (tela === 'PainelEstilo' && typeof estruturaHtml_Home === 'function') { + scriptPaths[tela].mensagem = Estrututura_html_Perfil(); + telaVisualizacao.style.display = "flex" + atualizarClasse('PainelEstilo'); // Aplica a classe dinamicamente } // Estrutura html de monitoramento - if (tela === 'moni' && typeof estruturaHtml_Home === 'function') { - scriptPaths[tela].mensagem = estruturaHtml_Moni(); + if (tela === 'PainelUser' && typeof estruturaHtml_Home === 'function') { + scriptPaths[tela].mensagem = Estrututura_html_User_home(); + telaVisualizacao.style.display = "flex" + atualizarClasse('PainelUser'); } + // Estrutura html de monitoramento + if (tela === 'PainelManual' && typeof estruturaHtml_Home === 'function') { + scriptPaths[tela].mensagem = Estrututura_html_Manual(); + telaVisualizacao.style.display = "flex" + atualizarClasse('PainelManual'); + } + + // Estrutura html de configuração - if (tela === 'config2' && typeof estruturaHtml_Home === 'function') { + if (tela === 'RetornarHome' && typeof estruturaHtml_Home === 'function') { // Verifica se a função EstruturaEsqueleto existe antes de chamar const fimPainel = document.getElementById('entrada_2') fimPainel.innerHTML = ''; await criarBlocos(); - console.log('config') + //console.log('config') } telaVisualizacao.innerHTML = scriptPaths[tela].mensagem; - console.log(`Tela ${tela} carregada com sucesso!`); + + //console.log(`Tela ${tela} carregada com sucesso!`); } catch (error) { console.error('Erro ao carregar os scripts:', error); } @@ -104,18 +153,19 @@ function carregarScript(src) { // Controlador de visualização sobre as opições que existem dentro do ambiente do usuário function ControladorDeVisualizacao_config(InfoGeral) { - - if (InfoGeral.empresa.nome == "itguys.com.br") { - const PainelMoniIcon = document.getElementById('sub_entrada_moni_1'); - const PainelMoniButton = document.getElementById('sub_entrada_moni_2'); + //console.log(InfoGeral) + if (InfoGeral.Empresa == "itguys.com.br") { + const EstruraDinamicadeConfiguracao = document.getElementById('Painel_configuracao'); - PainelMoniButton.innerHTML = "

Monitormaneto

" - PainelMoniIcon.innerHTML = `` - - PainelMoniButton.addEventListener('click', () => carregarTela('moni')); - PainelMoniIcon.addEventListener('click', () => carregarTela('moni')); + EstruraDinamicadeConfiguracao.innerHTML += ` +
+ +

Usuário

+
`; + const User_button = document.getElementById('User_config'); + User_button.addEventListener('click', () => carregarTela_config('PainelUser')); } @@ -145,16 +195,3 @@ setTimeout(async () => { }, 300); // Executa as funções 3 segundos após o carregamento do DOM - -// Verifica se o elemento existe - - - - - - - - - - - diff --git a/js/page/Modulo_Construcao/Funcao/Config/Grupos/PopDashbord.js b/js/page/Modulo_Construcao/Funcao/Config/Grupos/PopDashbord.js deleted file mode 100644 index e69de29..0000000 diff --git a/js/page/Modulo_Construcao/Funcao/Config/Manual/PopManual.js b/js/page/Modulo_Construcao/Funcao/Config/Manual/PopManual.js deleted file mode 100644 index e69de29..0000000 diff --git a/js/page/Modulo_Construcao/Funcao/Config/Manual/PopManual_Func.js b/js/page/Modulo_Construcao/Funcao/Config/Manual/PopManual_Func.js new file mode 100644 index 0000000..fd4fec0 --- /dev/null +++ b/js/page/Modulo_Construcao/Funcao/Config/Manual/PopManual_Func.js @@ -0,0 +1,38 @@ +// Pop up dedicado para direcionar o manual do ambiente do usuário +IniciandoTelaHome(); + +function IniciandoTelaHome() { + + + const interval_home = 500; // Tempo em milissegundos (1 segundo) + + try { + + const checkElements_home = setInterval(() => { + try { + + const HomeConstruida = document.getElementById('HomeConstuctor'); + + if (HomeConstruida) { } + + + } catch (error) { + console.error('Houve algo inesperado dentro da tela home' + error) + + clearInterval(checkElements_home); // Para o setInterval + + return false + } + + + + }, interval_home); + + } catch (error) { + console.error('Houve algo inesperado fora da tela home' + error) + } + + + + +} \ No newline at end of file diff --git a/js/page/Modulo_Construcao/Funcao/Config/Perfil/PopPerfil_Func.js b/js/page/Modulo_Construcao/Funcao/Config/Perfil/PopPerfil_Func.js new file mode 100644 index 0000000..f016d2f --- /dev/null +++ b/js/page/Modulo_Construcao/Funcao/Config/Perfil/PopPerfil_Func.js @@ -0,0 +1,149 @@ +// Pop up desenvolvido para alinhar os Grupos de usuário de um ambiente respectivamente + +InicializandoPopPerfil(); + +function InicializandoPopPerfil() { + + + const interval_ConfigPerfil = 500; // Tempo em milissegundos (1 segundo) + + try { + + const checkElements_ConfigPerfil = setInterval(() => { + try { + + const ConfigPerfilConstruida = document.getElementById('EstruturaPerfil'); + + + if (ConfigPerfilConstruida) { + const IntegridadePopUp = document.getElementById('Pop_up_Config'); + const ButtonEnviar = document.getElementById('EnviarInformacoes') + ButtonEnviar.addEventListener('click', capiturarInfos); + SeletorEmpresa(); + + + const inputPerfil = document.getElementById('uploadImagem_Perfil'); + const inputFundo = document.getElementById('uploadImagem_Fundo'); + + const buttonPerfil = document.getElementById('ImagemPerfil'); + const buttonFundo = document.getElementById('ImagemFundo'); + inputPerfil.addEventListener('change', () => alterarImagem(inputPerfil, buttonPerfil)); + inputFundo.addEventListener('change', () => alterarImagem(inputFundo, buttonFundo)); + + + + // 📌 Função para alterar a imagem de fundo dos botões + function alterarImagem(input, button) { + const file = input.files[0]; + + if (file) { + const reader = new FileReader(); + + reader.onload = function (event) { + // Define a imagem como fundo do botão + button.style.backgroundImage = `url(${event.target.result})`; + button.style.backgroundSize = "cover"; + button.style.backgroundPosition = "center"; + button.style.transition = '0.5s ease'; + button.textContent = ''; // Remove qualquer texto dentro do botão + }; + + reader.readAsDataURL(file); // Lê a imagem e converte para URL + } + } + + + + function capiturarInfos() { + //const formularioPerfil = document.getElementById('formularioPerfil') + + + // Adiciona eventos para mudar a imagem quando o usuário seleciona um arquivo + + const values = [ + inputPerfil, inputFundo + ]; + + // Verifica se todos os elementos existem, meio que uma validação de todos as informações do formulario estão sendo enviadas. + for (const el of values) { + if (!el) { + console.error('Elemento não encontrado:', el); + alert('Um ou mais elementos não foram encontrados.'); + return; + } + } + + const perfil = inputPerfil.files[0]; + const foto_fundo = inputFundo.files[0]; + + + // Valida se todos os capos foram preenchidos + if (!perfil || !foto_fundo) { + + alert('Por favor, preencha todos os campos obrigatórios corretamente!'); + return; + + } + + const formData = new FormData(); + formData.append('perfil', perfil); + formData.append('foto_fundo', foto_fundo); + + //console.log(perfil) + enviarInfo(formData); + + } + async function enviarInfo(dataperfil) { + + try { + + await NovasImagens(dataperfil); + alert('Imagens atualizadas'); + + } catch (error) { + + console.error('Erro:', error); + alert('Erro ao criar ao atualizar a imagem. Tente novamente mais tarde.'); + + } + } + + function SeletorEmpresa() { + + const ButtonFecharUser = document.getElementById('EncerrarPopupPerfil'); + + ButtonFecharUser.addEventListener('click', Fechar); + + function Fechar() { + IntegridadePopUp.style.display = "none" + IntegridadePopUp.innerHTML = ''; + } + + } + + + + clearInterval(checkElements_ConfigPerfil); // Para o setInterval + } + + + } catch (error) { + console.error('Houve algo inesperado dentro da tela home' + error) + + clearInterval(checkElements_ConfigPerfil); // Para o setInterval + + return false + } + + + + }, interval_ConfigPerfil); + + } catch (error) { + console.error('Houve algo inesperado fora da tela home' + error) + } + + + + +} \ No newline at end of file diff --git a/js/page/Modulo_Construcao/Funcao/Config/User/PopUser_Func.js b/js/page/Modulo_Construcao/Funcao/Config/User/PopUser_Func.js new file mode 100644 index 0000000..edf135e --- /dev/null +++ b/js/page/Modulo_Construcao/Funcao/Config/User/PopUser_Func.js @@ -0,0 +1,221 @@ +// Pop up desenvolvido para alinhar os Grupos de usuário de um ambiente respectivamente + + + +// Pop up dedicado para direcionar o manual do ambiente do usuário +InicializandoPopUser(); + +function InicializandoPopUser() { + + + const interval_ConfigUser = 500; // Tempo em milissegundos (1 segundo) + + try { + + const checkElements_ConfigUser = setInterval(() => { + try { + + const ConfigUserConstruida = document.getElementById('EstruturaUser'); + + if (ConfigUserConstruida) { + + const IntegridadePopUp = document.getElementById('Pop_up_Config'); + let TelaHtmlRecor = null; + PainelApresentacao() + + + function PainelApresentacao() { + let TelaHtmlRecor = "Apresentacao"; + SeletorEmpresa(TelaHtmlRecor); + + + function ApresentacaoUser() { } + + + } + async function PainelCricao() { + let TelaHtmlRecor = "Criacao"; + + IntegridadePopUp.innerHTML = Estrututura_html_User_Criacao(); + SeletorEmpresa(TelaHtmlRecor); + + const SeletorEmpresaElement = document.getElementById('SeletorEmpresa'); + const ButtoEnviarUser = document.getElementById('CriarUsuario'); + const DominioEmpresaElement = document.getElementById('DominioEmpresa'); + await Empresasconsulta(); + + let dominio_empresa = 'Vazio'; + async function Empresasconsulta() { + const { Empresinhas } = await ConsultasEmpresas(); + + const EmpresinhasPDf = await Empresinhas.json(); + + //console.log(EmpresinhasPDf); + let htmlContentConfig = ''; + htmlContentConfig += `` + const seletorEmpresa = document.getElementById('SeletorEmpresa'); + + for (let EstadoEmpresa of EmpresinhasPDf) { + + const Empresas = EstadoEmpresa.nome; // "2025-01-14" + const IdEmpresas = EstadoEmpresa.idempresae; + const Dominio = EstadoEmpresa.dominio; + + + htmlContentConfig += ``; + + } + + + + seletorEmpresa.innerHTML = htmlContentConfig; + + // Evento para atualizar o domínio ao mudar a seleção + seletorEmpresa.addEventListener('change', function () { + const selectedOption = seletorEmpresa.options[seletorEmpresa.selectedIndex]; + const dominio = selectedOption.getAttribute('data-dominio') || 'Dominio'; + + DominioEmpresaElement.textContent = dominio; + dominio_empresa = dominio; + }); + + } + ButtoEnviarUser.addEventListener('click', CapitacaodeInformacao); + + + async function CapitacaodeInformacao() { + + + const NomeCompletoElement = document.getElementById('NomeUser'); + const UsuarioADElement = document.getElementById('UserAdUser'); + + const values = [ + NomeCompletoElement, UsuarioADElement, SeletorEmpresaElement + ]; + + // Verifica se todos os elementos existem, meio que uma validação de todos as informações do formulario estão sendo enviadas. + for (const el of values) { + if (!el) { + console.error('Elemento não encontrado:', el); + alert('Um ou mais elementos não foram encontrados.'); + return; + } + } + + // Alinhar cada um dos campos do formulario á sua variavel, para receber os dados que estão sendo prenchidos + const nome_completo = NomeCompletoElement.value.trim(); // Alinha o valor de um input + const usuario_ad = UsuarioADElement.value.trim(); + const empresa = SeletorEmpresaElement.value; + + + + // Valida se todos os capos foram preenchidos + if (!nome_completo || !usuario_ad || empresa === '0') { + + alert('Por favor, preencha todos os campos obrigatórios corretamente!'); + return; + } + + // Criação do objeto json do extintor, será enviado para o back end + const novoUser = { + nome_completo, + usuario_ad, + empresa, + dominio_empresa + }; + + //console.log(novoUser) + + EnvioInformacao(novoUser) + } + async function EnvioInformacao(novoUser) { + + try { + + await NovoUser(novoUser); + alert('usuário criado com sucesso'); + + } catch (error) { + + console.error('Erro:', error); + alert('Erro ao criar ao usuário. Tente novamente mais tarde.'); + + } + + } + + + } + function PainelEdicao() { + let TelaHtmlRecor = "Edicao"; + SeletorEmpresa(TelaHtmlRecor); + } + + function SeletorEmpresa(Seletor) { + + + if (Seletor == "Criacao") { + const ButtonRetornarUser = document.getElementById('VoltarPopup'); + const ButtonFecharUser = document.getElementById('EncerrarPopup'); + + ButtonRetornarUser.addEventListener('click', Retonar); + ButtonFecharUser.addEventListener('click', Fechar); + } + if (Seletor == "Apresentacao") { + const ButtonFecharUser = document.getElementById('EncerrarPopup'); + const ButtonCriarUser = document.getElementById('NovoUsuarioPopup'); + const ButtonEditarUser = document.getElementById(''); + + ButtonCriarUser.addEventListener('click', PainelCricao); + ButtonFecharUser.addEventListener('click', Fechar); + + } + if (Seletor == "Edicao") { + const ButtonRetornarUser = document.getElementById('VoltarPopup'); + const ButtonFecharUser = document.getElementById('EncerrarPopup'); + + ButtonRetornarUser.addEventListener('click', Retonar); + ButtonFecharUser.addEventListener('click', Fechar); + } + + + function Retonar() { + + IntegridadePopUp.innerHTML = Estrututura_html_User_home(); + PainelApresentacao(); + + } + function Fechar() { + IntegridadePopUp.style.display = "none" + IntegridadePopUp.innerHTML = ''; + } + + } + + + + + clearInterval(checkElements_ConfigUser); // Para o setInterval + } + + + } catch (error) { + console.error('Houve algo inesperado dentro da tela home' + error) + + clearInterval(checkElements_ConfigUser); // Para o setInterval + + return false + } + + + + }, interval_ConfigUser); + + } catch (error) { + console.error('Houve algo inesperado fora da tela home' + error) + } + + + + +} \ No newline at end of file diff --git a/js/page/Modulo_Construcao/Funcao/Estrutura/Autencacao.js b/js/page/Modulo_Construcao/Funcao/Estrutura/Autencacao.js index 4d6fdba..bdf7132 100644 --- a/js/page/Modulo_Construcao/Funcao/Estrutura/Autencacao.js +++ b/js/page/Modulo_Construcao/Funcao/Estrutura/Autencacao.js @@ -4,6 +4,7 @@ async function Autenticao() { const apiUrl = await getApiUrl(); const token = getAuthToken(); + const response = await fetch(`${apiUrl}/mounting`, { method: 'GET', headers: { @@ -22,10 +23,6 @@ async function IntegracaoZamade() { const token = getAuthToken(); - if (!apiUrl || !token) { - throw new Error("Erro: Parâmetros obrigatórios ausentes (apiUrl, token ou domain)"); - } - const Chamados = await fetch(`${apiUrl}/tickets`, { method: 'GET', headers: { @@ -35,42 +32,16 @@ async function IntegracaoZamade() { } }); + let ResutadosChamados = Chamados.status; + //console.log(ResutadosChamados); - if (!Chamados.ok) { - throw new Error(`Erro na API: ${Chamados.status} - ${Chamados.statusText}`); - } - return { Chamados, apiUrl }; // Retorna a resposta e a URL + return { Chamados, ResutadosChamados }; // Retorna a resposta e a URL } -async function IntegracaoZamade() { - const apiUrl = await getApiUrl(); - const token = getAuthToken(); - if (!apiUrl || !token) { - throw new Error("Erro: Parâmetros obrigatórios ausentes (apiUrl, token ou domain)"); - } - - const Chamados = await fetch(`${apiUrl}/tickets`, { - method: 'GET', - headers: { - 'Content-Type': 'application/json', - 'x-access-token': token, - //'Id_Cliente': domain - } - }); - - - if (!Chamados.ok) { - throw new Error(`Erro na API: ${Chamados.status} - ${Chamados.statusText}`); - } - - return { Chamados, apiUrl }; // Retorna a resposta e a URL - -} - async function IntegracaoBoleto() { const apiUrl = await getApiUrl(); const token = getAuthToken(); @@ -80,7 +51,91 @@ async function IntegracaoBoleto() { throw new Error("Erro: Parâmetros obrigatórios ausentes (apiUrl, token ou domain)"); } + await fetch(`${apiUrl}/boletos`, { method: 'OPTIONS' }); + const Boleto = await fetch(`${apiUrl}/boletos`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'x-access-token': token + } + }); + + + + + if (!Boleto.ok) { + throw new Error(`Erro na API de geração de boletos: ${Boleto.status} - ${Boleto.statusText}`); + } + + return { Boleto, apiUrl }; // Retorna a resposta e a URL + +} + +async function IntegracaoPDF() { + const apiUrl = await getApiUrl(); + const token = getAuthToken(); + + + if (!apiUrl || !token) { + throw new Error("Erro: Parâmetros obrigatórios ausentes (apiUrl, token ou domain)"); + } + + await fetch(`${apiUrl}/baixar_boleto/`, { method: 'GET' }); + + const PDF = await fetch(`${apiUrl}/baixar_boleto/`, { + method: 'OPTIONS', + headers: { + 'Content-Type': 'application/json', + 'x-access-token': token + } + }); + + + if (!PDF.ok) { + throw new Error(`Erro na API de Geração de Pdfs: ${PDF.status} - ${PDF.statusText}`); + } + + return { PDF, apiUrl }; // Retorna a resposta e a URL + +} + +async function IntegracaoZabix() { + const apiUrl = await getApiUrl(); + const token = getAuthToken(); + + + if (!apiUrl || !token) { + throw new Error("Erro: Parâmetros obrigatórios ausentes (apiUrl, token ou domain)"); + } + + const Zabix = await fetch(`${apiUrl}/zabbix/hosts`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'x-access-token': token, + //'Id_Cliente': domain + } + }); + + let ResutadosZabix = Zabix.status; + //console.log(ResutadosZabix); + + + return { Zabix, ResutadosZabix }; // Retorna a resposta e a URL + +} +/* +async function IntegracaoUser() { + const apiUrl = await getApiUrl(); + const token = getAuthToken(); + + + if (!apiUrl || !token) { + throw new Error("Erro: Parâmetros obrigatórios ausentes (apiUrl, token ou domain)"); + } + + const empresa = await fetch(`${apiUrl}/zabbixhosts`, { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -90,10 +145,118 @@ async function IntegracaoBoleto() { }); - if (!Boleto.ok) { - throw new Error(`Erro na API: ${Boleto.status} - ${Boleto.statusText}`); + if (!empresa.ok) { + throw new Error(`Erro na API do Zabix: ${empresa.status} - ${empresa.statusText}`); + } + + return { empresa, apiUrl }; // Retorna a resposta e a URL + +} +*/ +async function EmpresasServicos() { + const apiUrl = await getApiUrl(); + const token = getAuthToken(); + + + const Servicos = await fetch(`${apiUrl}/servicos`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'x-access-token': token, + //'Id_Cliente': domain + } + }); + + let ResutadosES = Servicos.status; + //console.log(ResutadosES); + + + return { Servicos, ResutadosES }; // Retorna a resposta e a URL + +} + +async function ConsultasEmpresas() { + const apiUrl = await getApiUrl(); + const token = getAuthToken(); + + + if (!apiUrl || !token) { + throw new Error("Erro: Parâmetros obrigatórios ausentes (apiUrl, token ou domain)"); + } + + const Empresinhas = await fetch(`${apiUrl}/empresas`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'x-access-token': token, + //'Id_Cliente': domain + } + }); + + + if (!Empresinhas.ok) { + throw new Error(`Erro na API das empresas: ${Empresinhas.status} - ${Empresinhas.statusText}`); + } + + return { Empresinhas, apiUrl }; // Retorna a resposta e a URL + +} + +// Envios de formularios + + +async function NovoUser(novoUser) { + const apiUrl = await getApiUrl(); + const token = getAuthToken(); + + if (!apiUrl || !token) { + throw new Error("Erro: Parâmetros obrigatórios ausentes (apiUrl, token ou domain)"); + } + + const User = await fetch(`${apiUrl}/inserir`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'x-access-token': token, + }, + body: JSON.stringify(novoUser) + }); + + + if (!User.ok) { + throw new Error(`Erro na criação de Usuário: ${User.status} - ${User.statusText}`); + } + + +} + +async function NovasImagens(dataperfil) { + const apiUrl = await getApiUrl(); + const token = getAuthToken(); + + for (let [key, value] of dataperfil.entries()) { + //console.log(`${key}:`, value); + } + + + if (!apiUrl || !token) { + throw new Error("Erro: Parâmetros obrigatórios ausentes (apiUrl, token ou domain)"); + } + + const ImagemUser = await fetch(`${apiUrl}/imagem`, { + method: 'POST', + headers: { + //'Content-Type': 'application/json', + 'x-access-token': token, + }, + body: dataperfil // Dados enviados para a API + }); + + + + if (!ImagemUser.ok) { + throw new Error(`Erro na atualização de Imagens: ${ImagemUser.status} - ${ImagemUser.statusText}`); } - return { Boleto, apiUrl }; // Retorna a resposta e a URL } diff --git a/js/page/Modulo_Construcao/Funcao/Estrutura/Controlador_telas.js b/js/page/Modulo_Construcao/Funcao/Estrutura/Controlador_telas.js index 6d68fc7..3dc224d 100644 --- a/js/page/Modulo_Construcao/Funcao/Estrutura/Controlador_telas.js +++ b/js/page/Modulo_Construcao/Funcao/Estrutura/Controlador_telas.js @@ -23,65 +23,57 @@ async function criarBlocos() { try { - // Se os dados já estiverem carregados, use-os diretamente - if (usuarioData) { - const { nomeCompleto, Empresa, ImagemUser, logoEmpresa } = usuarioData; + // Conexção com o script de Comunicacao.js para se utilizar da função de autenticação com a rota mouten, para puxar a const response e apiURL + const { response, apiUrl } = await Autenticao(); + + //Essa constante faz um tratamento sobre a response retirando o json para armazenar nesse data + const data = await response.json(); + + // Armazena os dados para usos futuros + usuarioData = { + nomeCompleto: data.usuario.nome, + Empresa: data.empresa.nome, + ImagemUser: `${apiUrl}${data.usuario.img_perfil}`, + logoEmpresa: `${apiUrl}${data.empresa.logo}` + }; + + + //Consoles para validar a chegada das informações, e se estão sendo usadas corretamento + //console.log('Data config' + usuarioData); + //console.log(usuarioData.nomeCompleto); + //console.log(usuarioData.Empresa); + + - loadImage(ImagemUser, 'profileImage'); - loadImage(logoEmpresa, 'companyLogo'); - console.log('Usando dados armazenados'); - } else { - // Conexção com o script de Comunicacao.js para se utilizar da função de autenticação com a rota mouten, para puxar a const response e apiURL - const { response, apiUrl } = await Autenticao(); - - //Essa constante faz um tratamento sobre a response retirando o json para armazenar nesse data - const data = await response.json(); - - // Armazena os dados para usos futuros - usuarioData = { - nomeCompleto: data.usuario.nome, - Empresa: data.empresa.nome, - ImagemUser: `${apiUrl}${data.usuario.img_perfil}`, - logoEmpresa: `${apiUrl}${data.empresa.logo}` - }; - - // Aplica as funções para carregamento das imagens, os alinhando com classe para a aplicação dentro do html. - loadImage(usuarioData.ImagemUser, 'profileImage'); - loadImage(usuarioData.logoEmpresa, 'companyLogo'); - - console.log(usuarioData); - console.log(usuarioData.nomeCompleto); - console.log(usuarioData.Empresa); - console.log('Link da imagem de perfil -' + usuarioData.ImagemUser); - console.log('Link da Logo -' + usuarioData.logoEmpresa); - } // Inicia a função insercaoFunc_Estrutura await insercaoFunc_Estrutura(); - // Função responsavel por construir todos os elementos sobre a tela apartir das informações recebidas pelo back end. + // Função responsavel inserir scripts que construem todo o ambiente do usuário. async function insercaoFunc_Estrutura() { const script_Func = document.createElement('script'); script_Func.id = 'Ambiente_func'; - script_Func.src = './js/page/Modulo_Construcao/Funcao/Estrutura/Estrutura.js'; + script_Func.src = './js/page/Modulo_Construcao/Funcao/Estrutura/Estrutura.js'; // Esse script é responsavel por todas as funções que o ambiente realiza de forma passiva e ativa. const script_Html = document.createElement('script'); script_Html.id = 'Ambiente_Html'; - script_Html.src = './js/page/Modulo_Construcao/Painel/Estrutura/Html_estrutura.js'; + script_Html.src = './js/page/Modulo_Construcao/Painel/Estrutura/Html_estrutura.js'; // Esse script é responsavel por inserir toda estrutura html dentro do projeto - // Adiciona os scripts ao DOM e aguarda o carregamento + + // Adiciona pousa na leitura do codigo somente enquanto os dois scripts ainda estão sendo carregados. await Promise.all([ carregarScript(script_Func), - carregarScript(script_Html) + carregarScript(script_Html), ]); - await EstruturaEsqueleto(); // Chama a função somente após o script ser carregado + await EstruturaEsqueleto(); // Chama de cosntrução do ambiente do usuário. + // Script responsavel por carregar todo os script dentro dá página html function carregarScript(script) { return new Promise((resolve, reject) => { script.onload = () => resolve(); @@ -90,6 +82,7 @@ async function criarBlocos() { }); } + async function EstruturaEsqueleto() { //constante que controla o estilo css que está estilizando todo o ambiente do usuário. const estilos = document.getElementById('conexao'); @@ -97,12 +90,21 @@ async function criarBlocos() { const construtor_primario = document.getElementById('entrada_1'); - //Estrutura Html que será apresentada sobre a tela + // Estrutura Html que será apresentada sobre a tela, puxando as informações que foram alinhadas na consultas inicias. construtor_primario.innerHTML = InterfaceAmbiente(usuarioData.nomeCompleto, usuarioData.Empresa); + // Uma condicional para iniciar as funções somente se a estrutura que está recebendo todo o esqueleto html, do ambiente do usuário esitver diferente de vazia, ou seja ser o innerhtml acima ser aplicado corretamente. if (construtor_primario.innerHTML !== '') { + // Função responsavel belo botão que reajusta todos os elementos sobre a propria tela + // Aplica as funções para carregamento das imagens, os alinhando com classe para a aplicação dentro do html. + loadImage(usuarioData.ImagemUser, 'profileImage'); + loadImage(usuarioData.logoEmpresa, 'companyLogo'); + //console.log('Link da imagem de perfil -' + usuarioData.ImagemUser); + //console.log('Link da Logo -' + usuarioData.logoEmpresa); Interatividade(); + // Função responsavel sobre o controle da telas dentro do ambiente do usuário, responsavel por determinar qual tela será usada. ApresentarTelas(usuarioData); + } @@ -112,58 +114,68 @@ async function criarBlocos() { } - + // Cenario de erro completo da estrutura } catch (error) { + // Inicialização da função insercaoFunc_Erro insercaoFunc_Erro(); + // Função similiar de inserção de scripts para o ambiente do usuário, porem nesse caso sendo para a tela de erro. function insercaoFunc_Erro() { const script_ERRO = document.createElement('script'); script_ERRO.src = './js/page/Modulo_Construcao/Funcao/Estrutura/Painel_Erro.js'; - document.body.appendChild(script_ERRO); + document.body.appendChild(script_ERRO); // Script responsavel por todas as funções da tela de erro + // Apos o carregamento das funções é executada a função dos casos de erro script_ERRO.onload = async () => { await CasodeErro(); // Chama a função somente após o script ser carregado }; + // Função responsavel por inserir o esqueleto html dentro do ambiente od usuário para apresentar a tela de erro. const script_ERRO_Html = document.createElement('script'); script_ERRO_Html.src = './js/page/Modulo_Construcao/Painel/Estrutura/Html_erro.js'; document.body.appendChild(script_ERRO_Html); } - console.error('Erro ao criar blocos:', error); + // Apresentação do atual erro do projeto dentro do //console.log + console.error('Houve um problema durante a construção do ambiente', error); } } // Função para carregar uma imagem protegida com token JWT e exibi-la - async function loadImage(url, imgElementClass) { try { + // Obtém o token de autenticação do usuário const token = getAuthToken(); - console.log('Token:', token); - console.log('URL da imagem:', url); + //console.log('Token:', token); + //console.log('URL da imagem:', url); + // Faz uma requisição GET para obter a imagem protegida const response = await fetch(url, { method: 'GET', headers: { - 'x-access-token': token ? token : '' + 'x-access-token': token ? token : '' // Adiciona o token no cabeçalho da requisição } }); + // Verifica se a requisição foi bem-sucedida if (!response.ok) { throw new Error('Erro ao carregar a imagem: ' + response.statusText); } + // Converte a resposta para um Blob (arquivo binário) const blob = await response.blob(); + // Cria uma URL temporária para exibir a imagem const imageUrl = URL.createObjectURL(blob); - // Seleciona todos os elementos com a classe + // Seleciona todos os elementos da página que possuem a classe especificada const imgElements = document.getElementsByClassName(imgElementClass); if (imgElements.length > 0) { + // Define a imagem carregada para cada elemento encontrado for (let i = 0; i < imgElements.length; i++) { imgElements[i].src = imageUrl; } @@ -174,15 +186,19 @@ async function loadImage(url, imgElementClass) { return imageUrl; // Retorna a URL da imagem carregada } catch (error) { console.error('Erro ao carregar a imagem:', error); - console.log('Classe do elemento:', imgElementClass); + //console.log('Classe do elemento:', imgElementClass); return null; // Retorna null em caso de erro } } -// Função para carregar a imagem de fundo + +// Função para carregar a imagem de fundo e atualizar o estilo dinamicamente async function loadBackgroundAndUpdateStyle() { try { + // Obtém a URL da API para buscar as informações do usuário const apiUrl = await getApiUrl(); const token = getAuthToken(); + + // Faz uma requisição GET para obter os dados do usuário const response = await fetch(`${apiUrl}/mounting`, { method: 'GET', headers: { @@ -190,13 +206,17 @@ async function loadBackgroundAndUpdateStyle() { } }); + // Verifica se a requisição foi bem-sucedida if (!response.ok) { throw new Error('Erro ao carregar os dados: ' + response.statusText); } + // Converte a resposta para JSON const data = await response.json(); + // Constrói a URL da imagem de fundo do usuário const imagemFun = `${apiUrl}${data.usuario.img_fundo}`; + // Faz uma nova requisição GET para obter a imagem de fundo const fundoResponse = await fetch(imagemFun, { method: 'GET', headers: { @@ -204,37 +224,38 @@ async function loadBackgroundAndUpdateStyle() { } }); + // Verifica se a requisição foi bem-sucedida if (!fundoResponse.ok) { throw new Error('Erro ao carregar a imagem de fundo: ' + fundoResponse.statusText); } + // Converte a resposta para um Blob (arquivo binário) const blob = await fundoResponse.blob(); + // Cria uma URL temporária para exibir a imagem de fundo const fundoUserUrl = URL.createObjectURL(blob); + // Seleciona o elemento com id 'fundouser' e aplica a imagem de fundo dinamicamente const fundouser = document.getElementById('fundouser'); fundouser.innerHTML = '.seguimentacao_2 .coluna_1 {' + - 'width: 100%;' + - 'height: 30vh;' + - 'display: flex;' + - 'flex-direction: row;' + - 'background-image: url("' + fundoUserUrl + '");' + - 'background-position: center;' - 'background-position: center;' + - 'background-size: cover;' + - 'overflow: hidden;' + - 'transition: 1s ease;' + + 'width: 100%;' + // Define a largura como 100% + 'height: 30vh;' + // Define a altura como 30% da viewport + 'display: flex;' + // Usa flexbox para organização dos elementos internos + 'flex-direction: row;' + // Organiza os elementos na horizontal + 'background-image: url("' + fundoUserUrl + '");' + // Define a imagem de fundo carregada + 'background-position: center;' + // Centraliza a imagem de fundo + 'background-size: cover;' + // Ajusta a imagem para cobrir toda a área disponível + 'overflow: hidden;' + // Esconde partes que ultrapassam os limites do contêiner + 'transition: 1s ease;' + // Aplica uma transição suave '}'; - - - - console.log('Imagem de fundo carregada e estilo aplicado com sucesso.'); + //console.log('Imagem de fundo carregada e estilo aplicado com sucesso.'); } catch (error) { console.error('Erro ao carregar a imagem de fundo:', error); } } + // Aguarda o carregamento completo do DOM document.addEventListener('DOMContentLoaded', async () => { setTimeout(async () => { diff --git a/js/page/Modulo_Construcao/Funcao/Estrutura/Estrutura.js b/js/page/Modulo_Construcao/Funcao/Estrutura/Estrutura.js index 80a87cb..f41f225 100644 --- a/js/page/Modulo_Construcao/Funcao/Estrutura/Estrutura.js +++ b/js/page/Modulo_Construcao/Funcao/Estrutura/Estrutura.js @@ -8,7 +8,7 @@ function Interatividade() { if (botao) { botao.addEventListener('click', function () { - console.log('Botão clicado!'); + //console.log('Botão clicado!'); if (menu) menu.classList.toggle('expansao'); if (cabecario) cabecario.classList.toggle('expansao'); if (tela) tela.classList.toggle('expansao'); @@ -36,9 +36,9 @@ async function ApresentarTelas(InfoGeral) { + function InteracoesTelas() { - ControladorDeVisualizacao(InfoGeral); const Config_texts = document.getElementById('Configuracao_1'); const Config_icon = document.getElementById('Configuracao_2'); @@ -46,16 +46,108 @@ async function ApresentarTelas(InfoGeral) { const Home_texts = document.getElementById('Home_1'); const Home_icon = document.getElementById('Home_2'); + const Logou_texts = document.getElementById('EncerrarSessao_1') + const Logou_icon = document.getElementById('EncerrarSessao_2') + // Adiciona eventos para alternar entre as telas Config_texts.addEventListener('click', () => carregarTela('config')); Config_icon.addEventListener('click', () => carregarTela('config')); Home_texts.addEventListener('click', () => carregarTela('home')); Home_icon.addEventListener('click', () => carregarTela('home')); + + + + const PainelMoniIcon = document.getElementById('sub_entrada_moni_1'); + const PainelMoniButton = document.getElementById('sub_entrada_moni_2'); + + + PainelMoniButton.addEventListener('click', () => carregarTela('moni')); + PainelMoniIcon.addEventListener('click', () => carregarTela('moni')); + + + Logou_texts.addEventListener('click', EncerrarSessaAm); + Logou_icon.addEventListener('click', EncerrarSessaAm); + + function EncerrarSessaAm() { + localStorage.removeItem('x-access-token'); + window.location.href = "./login.html"; + } } async function carregarTela(tela) { + + + const telaVisualizacao = document.getElementById('TelaVisualizacao'); + telaVisualizacao.innerHTML = EstrutraPrimaria(); + + function EstrutraPrimaria() { + return ` +
+
+ `; + } + TeladeCarregamento(); + + + + function TeladeCarregamento() { + + const Subentrada1 = document.getElementById('subEntrada_1'); + InciandoCarregamento(); + + function InciandoCarregamento() { + + Subentrada1.innerHTML = estruraAnimiada(); + + function estruraAnimiada() { + return ` +
+
+ + + +
+
+ `; + + + } + + FinalizandoCarregamento(); + + } + function FinalizandoCarregamento() { + + //Aplica intevalo de verificações para capitar se foi incluido carregou dentro de localstorage, uma vez encotrado um if busca a resposta para validar se ele é true, ele executa o if. + const interval = setInterval(() => { + const Subtela_laod = document.getElementById('subEntrada_1'); + const SubPaine_load = document.getElementById('Painel_loading') + const Subcarregou = localStorage.getItem('Carregou_tela'); + + if (SubPaine_load && Subtela_laod) { // Verifica se os elementos existem + if (Subcarregou === 'true') { + SubPaine_load.style.opacity = "0"; + + setTimeout(() => { + Subtela_laod.innerHTML = ''; // Limpa o conteúdo do elemento do load + localStorage.removeItem('Carregou_tela'); // Remove o item do localStorage + clearInterval(interval); // Para de verificar + }, 1000); + } + } else { + clearInterval(interval); // Para de verificar se os elementos não existem + } + }, 3500); // Verifica a cada 500ms + } + + + } + + + const Subentrada2 = document.getElementById('subEntrada_2'); + const scriptPaths = { //Alinhamento das telas por datas, aqui são organizadas das possiveis respostas de cada botão e os caminhos scripts cada uma delas necessita para o seu funcionamento. @@ -101,43 +193,99 @@ async function ApresentarTelas(InfoGeral) { const Tela_homelink = document.getElementById('conexao_tela'); Tela_homelink.href = "./Css/page/Ambiente/Home/root_Home.css"; - - } // Estrutura html de monitoramento if (tela === 'moni' && typeof estruturaHtml_Home === 'function') { scriptPaths[tela].mensagem = estruturaHtml_Moni(); + + const Tela_homelink = document.getElementById('conexao_tela'); + Tela_homelink.href = "./Css/page/Ambiente/Monitoramento/Monitor.css"; + localStorage.setItem('Carregou_tela', 'true') } // Estrutura html de configuração if (tela === 'config' && typeof estruturaHtml_Home === 'function') { + const novatela = document.getElementById('entrada_2') const antigatela = document.getElementById('entrada_1') + localStorage.setItem('Carregou_tela', 'true') + Carregar_Configuracoes(); + + function Carregar_Configuracoes() { + + InciandoCarregamento_Config(); + + function InciandoCarregamento_Config() { + + antigatela.innerHTML = estruraAnimiadaConfig(); + + function estruraAnimiadaConfig() { + return ` +
+
+ + + +
+
+ `; + } + + FinalizandoCarregamento_Config(); + } + + function FinalizandoCarregamento_Config() { + + //Aplica intevalo de verificações para capitar se foi incluido carregou dentro de localstorage, uma vez encotrado um if busca a resposta para validar se ele é true, ele executa o if. + const intervalConfig = setInterval(() => { + const Subtela_laodConfig = document.getElementById('entrada_1'); + const SubPaine_loadConfig = document.getElementById('Painel_loading') + const SubcarregouConfig = localStorage.getItem('Carregou_tela_config'); + + if (SubcarregouConfig === 'true') { + SubPaine_loadConfig.style.opacity = "0"; + + setTimeout(() => { + Subtela_laodConfig.innerHTML = ''; // Limpa o conteúdo do elemento do load + localStorage.removeItem('Carregou_tela_config'); // Remove o item do localStorage + clearInterval(intervalConfig); // Para de verificar + }, 1000); + + } + }, 3500); // Verifica a cada 500ms + } + + + } novatela.innerHTML = estruturaHtml_Config(); - antigatela.innerHTML = ""; + // Remove os scripts específicos, se existirem const scriptFunc = document.getElementById('Ambiente_func'); const scriptHtml = document.getElementById('Ambiente_Html'); + if (scriptFunc) { scriptFunc.remove(); // Remove o script 'func' - console.log('Script Ambiente_func removido'); + //console.log('Script Ambiente_func removido'); } if (scriptHtml) { scriptHtml.remove(); // Remove o script 'html' - console.log('Script Ambiente_Html removido'); + //console.log('Script Ambiente_Html removido'); } - console.log('estrutura') + //console.log('estrutura') } - telaVisualizacao.innerHTML = scriptPaths[tela].mensagem; - console.log(`Tela ${tela} carregada com sucesso!`); + + + + Subentrada2.innerHTML = scriptPaths[tela].mensagem; + //console.log(`Tela ${tela} carregada com sucesso!`); } catch (error) { console.error('Erro ao carregar os scripts:', error); } @@ -159,24 +307,6 @@ async function ApresentarTelas(InfoGeral) { // Carrega a tela 'home' automaticamente ao iniciar carregarTela('home'); - // Controlador de visualização sobre as opições que existem dentro do ambiente do usuário - function ControladorDeVisualizacao(InfoGeral) { - - if (InfoGeral.Empresa == "itguys.com.br") { - const PainelMoniIcon = document.getElementById('sub_entrada_moni_1'); - const PainelMoniButton = document.getElementById('sub_entrada_moni_2'); - - - PainelMoniButton.innerHTML = "

Monitormaneto

" - PainelMoniIcon.innerHTML = `` - - PainelMoniButton.addEventListener('click', () => carregarTela('moni')); - PainelMoniIcon.addEventListener('click', () => carregarTela('moni')); - - } - - - } diff --git a/js/page/Modulo_Construcao/Funcao/Estrutura/Painel_Erro.js b/js/page/Modulo_Construcao/Funcao/Estrutura/Painel_Erro.js index c62f698..7763a0b 100644 --- a/js/page/Modulo_Construcao/Funcao/Estrutura/Painel_Erro.js +++ b/js/page/Modulo_Construcao/Funcao/Estrutura/Painel_Erro.js @@ -7,7 +7,7 @@ async function CasodeErro() { const respostaserver = response.status - console.log(respostaserver) + //console.log(respostaserver) let Status = 'Erro 404'; @@ -43,6 +43,16 @@ async function CasodeErro() { } + if (Resposta == 500) { + + Status = 'Erro 404'; + mensagem = 'Estamos realizando manutenções'; + sub_mensagem = 'Tente fazer seu, login um outro momento'; + button_info = 'Retorne'; + button_acao = '/Sites/Site_ItGuys/ambiente_do_usuário/login.html'; + estilo = './Css/page/Telas_acao/erro_404_Back.css'; + + } if (Resposta == 404) { diff --git a/js/page/Modulo_Construcao/Funcao/Home/Func_Home.js b/js/page/Modulo_Construcao/Funcao/Home/Func_Home.js index a4c5680..1c1a11e 100644 --- a/js/page/Modulo_Construcao/Funcao/Home/Func_Home.js +++ b/js/page/Modulo_Construcao/Funcao/Home/Func_Home.js @@ -2,124 +2,654 @@ IniciandoTelaHome(); function IniciandoTelaHome() { + const interval_home = 500; // Tempo em milissegundos (1 segundo) - const checkElements_home = setInterval(() => { - const HomeConstruida = document.getElementById('HomeConstuctor'); + try { - if (HomeConstruida) { - const gerar = document.getElementById('gerar'); - gerar.addEventListener('click', gerarBoleto) - console.log('Funções da tela Home foram iniciadas corretamente') + const checkElements_home = setInterval(() => { + try { - Data_home(); - //Servicos_home(); - Chamados_home(); + const HomeConstruida = document.getElementById('HomeConstuctor'); - function Servicos_home() { + if (HomeConstruida) { + // const gerarBole = document.getElementById('gerarBoleto'); + //const gerarPDF = document.getElementById('gerarPDF'); + + // gerarBole.addEventListener('click', gerarBoleto); + // gerarPDF.addEventListener('click', GerarPDF); + //console.log('Funções da tela Home foram iniciadas corretamente') + + Data_home(); + Servicos_home(); + TelaFinanceiro(); + + async function Servicos_home() { + + const { Servicos, ResutadosES } = await EmpresasServicos(); + + const ServicosPDf = await Servicos.json(); + + //console.log(ServicosPDf); + + const paineServicos = document.getElementById('sevicoDominio'); + RespostasServiHome(ResutadosES, paineServicos) + + function RespostasServiHome(ResutadosES, paineServicos) { + + if (ResutadosES === 500) { + + paineServicos.innerHTML = ` +

Statues 404

+

Sem serviços no momento

` + throw new Error(`Erro na API dos Serviços: ${ResutadosES}`); + } + + if (ResutadosES === 404) { + + paineServicos.innerHTML = ` +

Statues 404

+

Nenhum serviço encontrado

` + throw new Error(`Erro na API dos Serviços: ${ResutadosES}`); + } + + if (ResutadosES === 401) { + + paineServicos.innerHTML = ` +

Statues 404

+

Usuário não autenticado!

` + throw new Error(`Erro na API dos Serviços: ${ResutadosES} `); + } + + if (ResutadosES === 502) { + + paineServicos.innerHTML = ` +

Statues 404

+

Estamos realizando manutenções, volte mais tarde

` + throw new Error(`Erro na API dos Serviços: ${ResutadosES} `); + } - - } - - async function Chamados_home() { - - const { Chamados } = await IntegracaoZamade(); - const dataZam = await Chamados.json(); - - // Seleciona o elemento que vai receber os ambientes no painel - const ListadeChamados = document.getElementById('ChamadosDominio'); - - // Insere o HTML gerado pela função ComponenteAmbientes dentro do painel - ListadeChamados.innerHTML = FormeChamados(); // Inserção de HTML + } + // Limpando o painel antes de adicionar os serviços + paineServicos.innerHTML = ""; - // Função responsável por gerar o HTML com a estrutura dos ambientes - function FormeChamados() { - let htmlContent = ''; // + for (const key in ServicosPDf) { + if (ServicosPDf.hasOwnProperty(key)) { + const servico = ServicosPDf[key]; - for (let Chamados in dataZam) { // Itera sobre os itens de ambientes definidos no objeto 'dataAmbientes' - const nome = dataZam[Chamados].customer_id; - const Titulo = dataZam[Chamados].title; - const DatadeAbertura = dataZam[Chamados].close_at; - const DatadeFechamento = dataZam[Chamados].created_at; - // Chama a função 'FormeEditarAmbiente' passando o nome de cada ambiente + paineServicos.innerHTML += `
+ +
+

${servico}

+
+
`; + + } + } + - htmlContent += `
  • ${Titulo}
  • ` } - // Retorna o conteúdo HTML gerado para ser inserido no DOM - return htmlContent; + async function Chamados_home(dia, pesquisaValor = '') { + const { Chamados, ResutadosChamados } = await IntegracaoZamade(); + const dataZam = await Chamados.json(); + + const ListadeChamados = document.getElementById('ChamadosDominio'); + + RespostasChamadosHome(ResutadosChamados, ListadeChamados) + + function RespostasChamadosHome(ResutadosChamados, ListadeChamados) { + + if (ResutadosChamados === 500) { + + ListadeChamados.innerHTML = ` +

    Statues 404

    +

    Sem serviços no momento

    ` + throw new Error(`Erro na API dos Serviços: ${ResutadosChamados}`); + } + + if (ResutadosChamados === 404) { + + ListadeChamados.innerHTML = ` +

    Statues 404

    +

    Nenhum serviço encontrado

    ` + throw new Error(`Erro na API dos Serviços: ${ResutadosChamados}`); + } + + if (ResutadosChamados === 401) { + + ListadeChamados.innerHTML = ` +

    Statues 404

    +

    Usuário não autenticado!

    ` + throw new Error(`Erro na API dos Serviços: ${ResutadosChamados}`); + } + + if (ResutadosChamados === 502) { + + ListadeChamados.innerHTML = ` +

    Statues 404

    +

    Estamos realizando manutenções, volte mais tarde

    ` + throw new Error(`Erro na API dos Serviços: ${ResutadosChamados} `); + } + + + + + } + + let htmlContent = ''; + let encontrouChamado = false; + + + // **Filtrando os chamados pela data** + const resultadosFiltrados = dataZam.filter(item => { + const dataAbertura = item.created_at.split("T")[0]; // "2025-01-14" + //console.log("Valor á ser pesquisado " + dia) + return dataAbertura === dia; + }); + + // **Filtrando os chamados pela pesquisa** + const chamadosPesquisados = resultadosFiltrados.filter(item => + item.customer_id.toString().toLowerCase().includes(pesquisaValor.toLowerCase()) || + item.title.toLowerCase().includes(pesquisaValor.toLowerCase()) || + item.number.toString().includes(pesquisaValor) + ); + + //console.log(chamadosPesquisados) + + // **Gerando o HTML dos chamados filtrados** + + for (let chamado of chamadosPesquisados) { + encontrouChamado = true; + + const dataAbertura = chamado.created_at.split("T")[0]; // "2025-01-14" + const horaAbertura = chamado.created_at.match(/T(\d{2}:\d{2})/)[1]; // "14:56" + const EstadoChamado = chamado.state_id; + const IdChamado = chamado.number; + + let EstadosChamado = ''; + switch (EstadoChamado) { + case 1: EstadosChamado = 'Novo_Nao_Atribuido'; break; + case 2: EstadosChamado = 'Aberto_Em_Análise'; break; + case 3: EstadosChamado = 'Aguardando_Retorno'; break; + case 4: EstadosChamado = 'Solucionado_Fechado'; break; + case 6: EstadosChamado = 'Em_Andamento'; break; + } + + htmlContent += ` +
    +
    +

    ${IdChamado}

    +

    ${dataAbertura} às ${horaAbertura}

    +
    `; + } + + // **Se nenhum chamado for encontrado** + if (!encontrouChamado) { + htmlContent = `

    Nenhum Chamado Encontrado

    `; + } + + // **Atualiza a interface** + ListadeChamados.innerHTML = htmlContent; + if (ListadeChamados.innerHTML !== "") { + setTimeout(() => { + for (let chamado of chamadosPesquisados) { + + const Titulo = chamado.title; + const IdChamado = chamado.number; + const AutorChamado = chamado.customer_id; + const estado = chamado.state_id + + + + const dataAbertura = chamado.created_at.split("T")[0]; // "2025-01-14" + const [anoA, mesA, diaA] = dataAbertura.split("-"); + const dataFormatadaA = `${mesA}/${diaA}/${anoA}`; // "01/14/2025" + + const horaAbertura = chamado.created_at.match(/T(\d{2}:\d{2})/)[1]; // "14:56" + + const dataFechamento = chamado.created_at.split("T")[0]; // "2025-01-14" + const [anoF, mesF, diaF] = dataAbertura.split("-"); + const dataFormatadaF = `${mesF}/${diaF}/${anoF}`; // "01/14/2025" + + const horaFechamento = chamado.created_at.match(/T(\d{2}:\d{2})/)[1]; // "14:56" + + let StadoChamado = 0; + + switch (estado) { + case 1: StadoChamado = 'Novo / Não Atribuido'; break; + case 2: StadoChamado = 'Aberto Em Análise'; break; + case 3: StadoChamado = 'Aguardando Retorno'; break; + case 4: StadoChamado = 'Solucionado Fechado'; break; + case 6: StadoChamado = 'Em Andamento'; break; + } + + let StadoChamadoClass = 0; + switch (estado) { + case 1: StadoChamadoClass = 'Novo_Nao_Atribuido'; break; + case 2: StadoChamadoClass = 'Aberto_Em_Analise'; break; + case 3: StadoChamadoClass = 'Aguardando_Retorno'; break; + case 4: StadoChamadoClass = 'Solucionado_Fechado'; break; + case 6: StadoChamadoClass = 'Em_Andamento'; break; + } + + + + ConstruirPoup(IdChamado, Titulo, AutorChamado, dataFormatadaA, horaAbertura, dataFormatadaF, horaFechamento, StadoChamado, StadoChamadoClass); + } + }, 0); + } + + function ConstruirPoup(Chamado, Titulo, AutorChamado, dataFormatadaA, horaAbertura, dataFormatadaF, horaFechamento, StadoChamado, StadoChamadoClass) { + + const chamadoButton = document.getElementById(`${Chamado}`) + + if (!chamadoButton) { + console.error(`Elemento com ID ${Chamado} não encontrado.`); + return; + } + + chamadoButton.addEventListener('click', AbrirPopupChamados); + + function AbrirPopupChamados() { + const PopUp = document.getElementById('PopupHome'); + + PopUp.style.display = 'flex'; + PopUp.classList.add("Chamado") + PopUp.classList.add(StadoChamadoClass) + PopUp.innerHTML = estrutPop(); + EncerrarPopUp(); + + function estrutPop() { + return ` +
    + +
    +
    +

    ${Titulo}

    +
      +
    • Autor do chamado - ${AutorChamado}
    • +
    • Data de abertura - ${dataFormatadaA} ás ${horaAbertura}
    • +
    • Data de Fechamento - ${dataFormatadaF} ás ${horaFechamento}
    • +
    +
    +
    +

    ${StadoChamado}

    +
    + `; + + + } + + function EncerrarPopUp() { + const buttonEncerrar = document.getElementById('EncerrarPopup'); + + buttonEncerrar.addEventListener('click', Encerar); + + function Encerar() { + PopUp.style.display = ''; + PopUp.classList.remove("Chamado") + PopUp.classList.remove(StadoChamadoClass) + PopUp.innerHTML = ''; + } + + } + + + } + + } + + } + + let DataAtual = null + + function Data_home() { + const DiaAtual = document.getElementById('NumeroDodial'); + const DiaSemana = document.getElementById('DiaSemana'); + const MesAtual = document.getElementById('Mesatual'); + let RecebeMes = null; + const AnoAtual = document.getElementById('AnoAtual'); + + let { dia, mes, ano, data } = CapturandoDatas(); + + function CapturandoDatas(dataReferencia = new Date()) { + // Verifica se dataReferencia é um objeto Date, se não for, converte + if (!(dataReferencia instanceof Date)) { + dataReferencia = new Date(dataReferencia); + } + + const dia = dataReferencia.getDate(); + const mes = dataReferencia.getMonth(); + + const mesesAno = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"]; + const mesNome = mesesAno[dataReferencia.getMonth()]; + const ano = dataReferencia.getFullYear(); + + const diasNoMes = new Date(ano, mes + 1, 0).getDate(); // Último dia do mês + const primeiroDiaSemana = new Date(ano, mes, 1).getDay(); // 0 = Domingo, 1 = Segunda, ..., 6 = Sábado + + let MesesDoAnoId; + switch (mesNome) { + case 'Janeiro': MesesDoAnoId = '01'; break; + case 'Fevereiro': MesesDoAnoId = '02'; break; + case 'Março': MesesDoAnoId = '03'; break; + case 'Abril': MesesDoAnoId = '04'; break; + case 'Maio': MesesDoAnoId = '05'; break; + case 'Junho': MesesDoAnoId = '06'; break; + case 'Julho': MesesDoAnoId = '07'; break; + case 'Agosto': MesesDoAnoId = '08'; break; + case 'Setembro': MesesDoAnoId = '09'; break; + case 'Outubro': MesesDoAnoId = '10'; break; + case 'Novembro': MesesDoAnoId = '11'; break; + case 'Dezembro': MesesDoAnoId = '12'; break; + } + + let dias = []; + // Adicionar espaços vazios antes do primeiro dia do mês + for (let i = 0; i < primeiroDiaSemana; i++) { + dias.push(`
    `); + } + + + for (let d = 1; d <= diasNoMes; d++) { + dias.push(`

    ${d}

    `); + } + + + + // Verifica o id do dia atual + const idDiaAtual = `${ano}-${MesesDoAnoId}-${dia}`; + + return { dias, mes: mesNome, ano, dia, idDiaAtual, data: dataReferencia }; + + } + + function AtualizarData(novaData) { + const resultado = CapturandoDatas(novaData); + + if (!resultado) { + console.error("Erro: A data fornecida não é válida."); + return; + } + + const { dias, mes, ano, dia, idDiaAtual } = resultado; + + DiaAtual.innerHTML = ` +
    +
    Dom
    +
    Seg
    +
    Ter
    +
    Qua
    +
    Qui
    +
    Sex
    +
    Sáb
    +
    +
    + ${dias.join("")} +
    + + + `; // Exibir todos os dias corretamente + RecebeMes = mes; + MesAtual.innerHTML = `

    ${RecebeMes}

    `; + + AnoAtual.innerHTML = ano; + + //console.log(dias); + + const diaAtualElement = document.getElementById(idDiaAtual); + + if (diaAtualElement) { + diaAtualElement.classList.add("destaque"); // Adiciona classe para destacar o dia + } else { + console.error("Erro: Não foi possível encontrar o dia atual."); + } + + // Definir o mês no formato de 2 dígitos + let MesesDoAno; + switch (mes) { + case 'Janeiro': MesesDoAno = '01'; break; + case 'Fevereiro': MesesDoAno = '02'; break; + case 'Março': MesesDoAno = '03'; break; + case 'Abril': MesesDoAno = '04'; break; + case 'Maio': MesesDoAno = '05'; break; + case 'Junho': MesesDoAno = '06'; break; + case 'Julho': MesesDoAno = '07'; break; + case 'Agosto': MesesDoAno = '08'; break; + case 'Setembro': MesesDoAno = '09'; break; + case 'Outubro': MesesDoAno = '10'; break; + case 'Novembro': MesesDoAno = '11'; break; + case 'Dezembro': MesesDoAno = '12'; break; + } + + let idDiaClicado = dia; // Variável global para armazenar o ID + // Função para adicionar o evento de clique a todos os dias + function adicionarEventosClick() { + // Seleciona todos os elementos

    com a classe "dia" + const dias = document.querySelectorAll('.dia'); + + // Itera sobre todos os elementos

    encontrados + dias.forEach(dia => { + // Adiciona um evento de clique para cada elemento + dia.addEventListener('click', () => { + // Remove a classe 'destaque' de todos os dias + dias.forEach(d => d.classList.remove('destaque')); + + // Adiciona a classe 'destaque' ao dia clicado + dia.classList.add('destaque'); + //console.log(`Dia clicado: ${dia.innerText}`); // Exibe o dia no console + + // Armazena a ID do dia clicado + idDiaClicado = dia.id; + + // Exibe o ID no console + //console.log(`ID do dia clicado: ${idDiaClicado}`); + Chamados_home(idDiaClicado); + }); + }); + } + + // Chama a função para adicionar os eventos de clique + adicionarEventosClick(); + + // Para acessar o ID de fora da função, você pode usar a variável global 'idDiaClicado': + setTimeout(() => { + Chamados_home(idDiaClicado); + //console.log(`ID do dia após o clique: ${idDiaClicado}`); + }, 1000); // Isso espera 1 segundo após o clique para verificar a variável + + const dataAtual = `${ano}-${MesesDoAno}-${dia}`; + //console.log("Data processada corretamente:", dataAtual); + } + + function MudarMes() { + const proximo_mes = document.getElementById('NumeroProximoMes'); + const mes_anterior = document.getElementById('NumeroAnteriorMes'); + + proximo_mes.addEventListener('click', () => { + // Converter o nome do mês para um número + let mesNumero = getMesNumero(RecebeMes); + let dataAtual = new Date(AnoAtual.innerHTML, mesNumero, 1); // Cria a data do mês atual + + dataAtual.setMonth(dataAtual.getMonth() + 1); // Avança para o próximo mês + AtualizarData(dataAtual); // Atualiza a data com o novo mês + }); + + mes_anterior.addEventListener('click', () => { + // Converter o nome do mês para um número + let mesNumero = getMesNumero(RecebeMes); + + let dataAtual = new Date(AnoAtual.innerHTML, mesNumero, 1); // Cria a data do mês atual + dataAtual.setMonth(dataAtual.getMonth() - 1); // Retrocede para o mês anterior + AtualizarData(dataAtual); // Atualiza a data com o novo mês + + + }); + } + + function getMesNumero(mesNome) { + switch (mesNome) { + case 'Janeiro': return 0; // Janeiro é o mês 0 no JavaScript (0-11) + case 'Fevereiro': return 1; + case 'Março': return 2; + case 'Abril': return 3; + case 'Maio': return 4; + case 'Junho': return 5; + case 'Julho': return 6; + case 'Agosto': return 7; + case 'Setembro': return 8; + case 'Outubro': return 9; + case 'Novembro': return 10; + case 'Dezembro': return 11; + default: return 0; + } + } + + // Inicializa os valores na tela + AtualizarData(new Date()); + MudarMes(); + + + + } + + + function TelaFinanceiro() { + const BolotosAvencer = document.getElementById('apresentarBoleto'); + + const hoje = new Date(); + const diaAtual = hoje.getDate(); + const mesAtual = hoje.getMonth(); + const anoAtual = hoje.getFullYear(); + + const meses = []; + const nomesMeses = [ + "janeiro", "fevereiro", "março", "abril", "maio", "junho", + "julho", "agosto", "setembro", "outubro", "novembro", "dezembro" + ]; + + for (let i = 0; i <= 2; i++) { + let mes = (hoje.getMonth() + i) % 12; // Garante que não passe de dezembro + let ano = anoAtual + Math.floor((hoje.getMonth() + i) / 12); // Ajusta o ano se necessário + let nomeMes = nomesMeses[mes]; + + // 🔴 O botão SÓ fica ativo se estivermos DENTRO do mês respectivo E entre os dias 1 e 12 + let botaoAtivo = ano === anoAtual && mes === mesAtual && diaAtual >= 1 && diaAtual <= 13; + console.log(botaoAtivo); + if (botaoAtivo == false) { + meses.push(` +

    + +
    +

    ${nomeMes} - ${ano}

    +
    +
    +

    Fechado

    +
    +
    + +
    + +
    + `); + } + + if (botaoAtivo == true) { + meses.push(` +
    + +
    +

    ${nomeMes} - ${ano}

    +
    +
    +

    Aberto

    +
    +
    + +
    + +
    + `); + } + + } + + BolotosAvencer.innerHTML = meses.join(''); + } + + + + + + + + + + + + + async function GerarPDF() { + + const { PDF } = await IntegracaoPDF(); + + const dataPDf = await PDF.json(); + + //console.log(dataPDf); + + } + + async function gerarBoleto() { + + const { Boleto } = await IntegracaoBoleto(); + + const dataBole = await Boleto.json(); + + //console.log(dataBole); + + } + + clearInterval(checkElements_home); // Para o setInterval + loadtelaHome(); + + function loadtelaHome() { + const respostaLoad = respotadeCarregamento(); + //console.log(respostaLoad) + + function respotadeCarregamento() { + return localStorage.setItem('Carregou_tela', 'true') + + } + } } - } - function Data_home() { - const DiaAtual = document.getElementById('NumeroDodial'); - const DiaSemana = document.getElementById('DiaSemana'); - const MesAtual = document.getElementById('Mesatual'); - const AnoAtual = document.getElementById('AnoAtual'); + } catch (error) { + console.error('Houve algo inesperado dentro da tela home' + error) - let { dia, diaSemana, mes, ano, data } = CapturandoDatas(); + clearInterval(checkElements_home); // Para o setInterval - function CapturandoDatas(dataReferencia = new Date()) { - const dia = dataReferencia.getDate(); - const diasSemana = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"]; - const diaSemana = diasSemana[dataReferencia.getDay()]; - const mesesAno = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"]; - const mes = mesesAno[dataReferencia.getMonth()]; - const ano = dataReferencia.getFullYear(); - - return { dia, diaSemana, mes, ano, data: dataReferencia }; - } - - function AtualizarData(novaData) { - const { dia, diaSemana, mes, ano } = CapturandoDatas(novaData); - DiaAtual.innerHTML = dia; - DiaSemana.innerHTML = diaSemana; - MesAtual.innerHTML = mes; - AnoAtual.innerHTML = ano; - } - - function MudarDia() { - const proximo_dia = document.getElementById('NumeroProximo'); - const dia_anterior = document.getElementById('NumeroAnterior'); - - proximo_dia.addEventListener('click', () => { - data.setDate(data.getDate() + 1); // Avança um dia - AtualizarData(data); - }); - - dia_anterior.addEventListener('click', () => { - data.setDate(data.getDate() - 1); // Retrocede um dia - AtualizarData(data); - }); - } - - // Inicializa os valores na tela - AtualizarData(data); - MudarDia(); + return false } - async function gerarBoleto() { + }, interval_home); - const { Boleto } = await IntegracaoBoleto(); + } catch (error) { + console.error('Houve algo inesperado fora da tela home' + error) + } - const dataBole = await Boleto.json(); - - console.log(dataBole); - - } - - clearInterval(checkElements_home); // Para o setInterval - } - }, interval_home); diff --git a/js/page/Modulo_Construcao/Funcao/Monitoramento/Func_Moni.js b/js/page/Modulo_Construcao/Funcao/Monitoramento/Func_Moni.js index e69de29..9848938 100644 --- a/js/page/Modulo_Construcao/Funcao/Monitoramento/Func_Moni.js +++ b/js/page/Modulo_Construcao/Funcao/Monitoramento/Func_Moni.js @@ -0,0 +1,58 @@ + + + +const interval_Moni = 500; // Tempo em milissegundos (1 segundo) + +try { + + const checkElements_Moni = setInterval(() => { + try { + + const moniConstruida = document.getElementById('Monitoramento'); + + if (moniConstruida) { + + const monitoramento = document.getElementById('Monitoramento') + monitoramento.addEventListener('click', monitoramentoIniciar) + + async function monitoramentoIniciar() { + const { Zabix, ResutadosZabix } = await IntegracaoZabix(); + + const dataZabix = await Zabix.json(); + + + if (ResutadosZabix === 500) { + alert(`Erro na API do Zabix: ${Zabix.status} - ${Zabix.statusText}`) + throw new Error(`Erro na API do Zabix: ${Zabix.status} - ${Zabix.statusText}`); + } + + if (ResutadosZabix === 404) { + alert(`Erro na API do Zabix: ${Zabix.status} - ${Zabix.statusText}`) + throw new Error(`Erro na API do Zabix: ${Zabix.status} - ${Zabix.statusText}`); + } + + + + + + } + + clearInterval(checkElements_Moni); // Para o setInterval + + } + + + } catch (error) { + console.error('Houve algo inesperado dentro da tela home' + error) + + clearInterval(checkElements_Moni); // Para o setInterval + } + + + + }, interval_Moni); + +} catch (error) { + console.error('Houve algo inesperado fora da tela home' + error) +} + diff --git a/js/page/Modulo_Construcao/Painel/Config/Ambiente/PopAmbientes_html.js b/js/page/Modulo_Construcao/Painel/Config/Ambiente/PopAmbientes_html.js index e69de29..bce5758 100644 --- a/js/page/Modulo_Construcao/Painel/Config/Ambiente/PopAmbientes_html.js +++ b/js/page/Modulo_Construcao/Painel/Config/Ambiente/PopAmbientes_html.js @@ -0,0 +1 @@ +// dedicado para atender as estrutura html desse pop up do ambiente do usuário \ No newline at end of file diff --git a/js/page/Modulo_Construcao/Painel/Config/Dashbord/Monitoramento_Root copy.js b/js/page/Modulo_Construcao/Painel/Config/Dashbord/Monitoramento_Root copy.js deleted file mode 100644 index e69de29..0000000 diff --git a/js/page/Modulo_Construcao/Painel/Config/Dashbord/PopDashbord_html.js b/js/page/Modulo_Construcao/Painel/Config/Dashbord/PopDashbord_html.js deleted file mode 100644 index e69de29..0000000 diff --git a/js/page/Modulo_Construcao/Painel/Config/Estrutura/Estrutura_Config_Html.js b/js/page/Modulo_Construcao/Painel/Config/Estrutura/Estrutura_Config_Html.js index 7847fa3..9b18353 100644 --- a/js/page/Modulo_Construcao/Painel/Config/Estrutura/Estrutura_Config_Html.js +++ b/js/page/Modulo_Construcao/Painel/Config/Estrutura/Estrutura_Config_Html.js @@ -12,29 +12,22 @@ function estruturaHtml_Config() {

    Voltar

    -
    +

    Perfil

    -
    + +

    Manual do Usuário

    -
    - -

    Grupos

    -
    -
    - -

    Dashboards

    -
    -
    +
    `; } \ No newline at end of file diff --git a/js/page/Modulo_Construcao/Painel/Config/Grupos/PopGrupos_html.js b/js/page/Modulo_Construcao/Painel/Config/Grupos/PopGrupos_html.js deleted file mode 100644 index e69de29..0000000 diff --git a/js/page/Modulo_Construcao/Painel/Config/Manual/PopManual_html.js b/js/page/Modulo_Construcao/Painel/Config/Manual/PopManual_html.js index e69de29..985e823 100644 --- a/js/page/Modulo_Construcao/Painel/Config/Manual/PopManual_html.js +++ b/js/page/Modulo_Construcao/Painel/Config/Manual/PopManual_html.js @@ -0,0 +1,12 @@ +function Estrututura_html_Manual() { + return ` + +
    + +
    +
    +

    Manual do Usuário

    + +
    +`; +} \ No newline at end of file diff --git a/js/page/Modulo_Construcao/Painel/Config/Perfil/PopPerfil_html.js b/js/page/Modulo_Construcao/Painel/Config/Perfil/PopPerfil_html.js new file mode 100644 index 0000000..d7bb123 --- /dev/null +++ b/js/page/Modulo_Construcao/Painel/Config/Perfil/PopPerfil_html.js @@ -0,0 +1,40 @@ +function Estrututura_html_Perfil() { + return ` + +
    + + + +
    + +

    perfil

    +
    + +
    + +
    + +
    +
    + + + +
    +
    + + + +
    +
    + +
    +
    + + + +
    + + + +`; +} \ No newline at end of file diff --git a/js/page/Modulo_Construcao/Painel/Config/User/PopUser_html.js b/js/page/Modulo_Construcao/Painel/Config/User/PopUser_html.js new file mode 100644 index 0000000..9f3e636 --- /dev/null +++ b/js/page/Modulo_Construcao/Painel/Config/User/PopUser_html.js @@ -0,0 +1,104 @@ +function Estrututura_html_User_home() { + return ` +
    + + + +
    +
    +
    + +

    Usuários

    + +
    +
    + + +
    +
    + +`; +} + + +function Estrututura_html_User_Criacao() { + return ` +
    + + + +
    +
    +
    + +

    Usuários

    + +
    +
    + +
    +

    Ficha do Usuário

    + + +
    +
    +

    Alinhamento de Empresa

    + +

    Dominio

    +
    +
    + +
    + +
    + + + +
    + +`; +} + +function Estrututura_html_User_edicao() { + return ` +
    + + + +
    +
    +
    +

    Usuários

    + +
    +
    + +
    +

    Ficha do Usuário

    + + +
    +
    +

    Alinhamento de Empresa

    + +

    Dominio

    +
    +
    +
    +
    +
    + +
    + + + +
    + +`; +} \ No newline at end of file diff --git a/js/page/Modulo_Construcao/Painel/Estrutura/Html_estrutura.js b/js/page/Modulo_Construcao/Painel/Estrutura/Html_estrutura.js index 2d148bd..7b6bb2d 100644 --- a/js/page/Modulo_Construcao/Painel/Estrutura/Html_estrutura.js +++ b/js/page/Modulo_Construcao/Painel/Estrutura/Html_estrutura.js @@ -12,7 +12,7 @@ function InterfaceAmbiente(nomeCompleto, Empresa) {
    - +
    @@ -30,19 +30,18 @@ function InterfaceAmbiente(nomeCompleto, Empresa) { -
    +
    + + +
    +
    - @@ -59,6 +58,12 @@ function InterfaceAmbiente(nomeCompleto, Empresa) { + +
    + + + +
    @@ -108,8 +113,11 @@ function InterfaceAmbiente(nomeCompleto, Empresa) {

    Home

    - -
    +
    + +

    Monitoramento

    + +
    @@ -146,6 +154,11 @@ function InterfaceAmbiente(nomeCompleto, Empresa) {

    Configurações

    +
    + +

    Logout

    + +
    @@ -183,5 +196,7 @@ function InterfaceAmbiente(nomeCompleto, Empresa) { + + `; } diff --git a/js/page/Modulo_Construcao/Painel/Estrutura/load.js b/js/page/Modulo_Construcao/Painel/Estrutura/load.js index bc4c9cb..b546051 100644 --- a/js/page/Modulo_Construcao/Painel/Estrutura/load.js +++ b/js/page/Modulo_Construcao/Painel/Estrutura/load.js @@ -55,7 +55,7 @@ async function verificarAmbiente() { // Inicia a animação após configurar o canvas iniciarAnimacao(); - // Inicia a contagem para limpar a tela após 3 segundos + // Inicia uma const para verificar dentro as informações localstorage, e validar se carregou existe e retornou True, para encerrar como o load finalizar(); console.error('Erro ao verificar o ambiente:', error); @@ -63,53 +63,78 @@ async function verificarAmbiente() { } function finalizar() { + //Aplica intevalo de verificações para capitar se foi incluido carregou dentro de localstorage, uma vez encotrado um if busca a resposta para validar se ele é true, ele executa o if. const interval = setInterval(() => { const tela_laod = document.getElementById('entrada_2'); const carregou = localStorage.getItem('Carregou'); if (carregou === 'true') { - tela_laod.innerHTML = ''; // Limpa o conteúdo do elemento + tela_laod.innerHTML = ''; // Limpa o conteúdo do elemento do load localStorage.removeItem('Carregou'); // Remove o item do localStorage clearInterval(interval); // Para de verificar } }, 3500); // Verifica a cada 500ms } +// Função responsavel por inicar animação de load da tela de carreagamento. function iniciarAnimacao() { + + // Obtém o elemento do canvas no HTML const canvas = document.getElementById('animationCanvas'); + + // Obtém o contexto 2D do canvas para desenhar const ctx = canvas.getContext('2d'); + + // Define a largura e altura do canvas para ocupar toda a janela canvas.width = window.innerWidth; canvas.height = window.innerHeight; + // Define as propriedades do círculo que guiará a trajetória animada const circle = { - centerX: canvas.width / 2, - centerY: canvas.height / 2, - radius: 150, - rotationSpeed: 0.10, - angle: 0, - linePath: [], - maxPathLength: 350 + centerX: canvas.width / 2, // Posição X do centro do círculo + centerY: canvas.height / 2, // Posição Y do centro do círculo + radius: 150, // Raio do círculo + rotationSpeed: 0.10, // Velocidade de rotação (incremento do ângulo) + angle: 0, // Ângulo inicial da animação + linePath: [], // Armazena os pontos percorridos pelo movimento + maxPathLength: 350 // Comprimento máximo da trilha deixada pelo movimento }; + // Função para desenhar a trilha do movimento circular function drawCircularPath() { + // Limpa o canvas antes de redesenhar o caminho ctx.clearRect(0, 0, canvas.width, canvas.height); + + // Calcula a posição do ponto atual baseado no ângulo const pathX = circle.centerX + circle.radius * Math.cos(circle.angle); const pathY = circle.centerY + circle.radius * Math.sin(circle.angle); + + // Adiciona o novo ponto ao array da trilha circle.linePath.push({ x: pathX, y: pathY }); + // Inicia o desenho da linha ctx.beginPath(); + + // Percorre os pontos armazenados para desenhar a trilha circle.linePath.forEach((point, i) => { if (i > 0) { + // Conecta o ponto atual com o anterior para criar a linha ctx.moveTo(circle.linePath[i - 1].x, circle.linePath[i - 1].y); ctx.lineTo(point.x, point.y); } }); + + // Define a cor e espessura da linha ctx.strokeStyle = '#22c0a3'; ctx.lineWidth = 10; ctx.stroke(); + // Limita o tamanho da trilha para evitar que cresça indefinidamente if (circle.linePath.length > circle.maxPathLength) { + // Remove o primeiro ponto da trilha para manter um tamanho constante circle.linePath.shift(); + + // Reinicia o ângulo e a trilha quando um ciclo completo for concluído if (circle.angle >= Math.PI * 2) { circle.angle = 0; circle.linePath = []; @@ -117,20 +142,27 @@ function iniciarAnimacao() { } } + // Função de animação que atualiza o ângulo e redesenha a trilha function animate() { - circle.angle += circle.rotationSpeed; - drawCircularPath(); - requestAnimationFrame(animate); + circle.angle += circle.rotationSpeed; // Incrementa o ângulo para continuar o movimento + drawCircularPath(); // Redesenha a trilha baseada no novo ângulo + requestAnimationFrame(animate); // Chama a animação no próximo frame } + // Inicia a animação animate(); + // Adiciona um evento para reajustar o canvas ao redimensionar a janela window.addEventListener('resize', () => { + // Atualiza a largura e altura do canvas canvas.width = window.innerWidth; canvas.height = window.innerHeight; + + // Ajusta a posição do centro do círculo circle.centerX = canvas.width / 2; circle.centerY = canvas.height / 2; }); + } // Executa verificarAmbiente apenas uma vez após o carregamento total da página diff --git a/js/page/Modulo_Construcao/Painel/Home/Html_Home.js b/js/page/Modulo_Construcao/Painel/Home/Html_Home.js index 88114df..9642351 100644 --- a/js/page/Modulo_Construcao/Painel/Home/Html_Home.js +++ b/js/page/Modulo_Construcao/Painel/Home/Html_Home.js @@ -9,9 +9,7 @@ function estruturaHtml_Home() {

    Serviço

    -
    -
      -
    +
    @@ -21,9 +19,8 @@ function estruturaHtml_Home() {

    Chamados

    -
    -
      -
    +
    +
    @@ -32,16 +29,15 @@ function estruturaHtml_Home() {
    -

    Mês

    + +
    +

    Mês

    +
    +
    -
    - -

    dia

    - -
    -
    -

    DiaAtual

    +
    +
    @@ -51,7 +47,7 @@ function estruturaHtml_Home() {

    Ano

    -

    Ano

    +

    Ano

    @@ -64,8 +60,11 @@ function estruturaHtml_Home() {
    -

    Finaceiro

    - +
    +

    Financeiro

    +
    + +
    @@ -73,6 +72,8 @@ function estruturaHtml_Home() {
    + +
    `; } \ No newline at end of file diff --git a/js/page/Modulo_Construcao/Painel/Monitoramento/Html_Moni.js b/js/page/Modulo_Construcao/Painel/Monitoramento/Html_Moni.js index 42e9381..d0ccdd1 100644 --- a/js/page/Modulo_Construcao/Painel/Monitoramento/Html_Moni.js +++ b/js/page/Modulo_Construcao/Painel/Monitoramento/Html_Moni.js @@ -2,6 +2,7 @@ function estruturaHtml_Moni() { return `

    ola Monitoramento

    + `; } \ No newline at end of file diff --git a/js/page/Service/front_end.js b/js/page/Service/front_end.js new file mode 100644 index 0000000..ac2f92c --- /dev/null +++ b/js/page/Service/front_end.js @@ -0,0 +1,112 @@ + +function setupItGuysServices(Data_Center) { + Data_Center.Ser_Itguys.Gerador_de_arquivos_telefonia = createService({ + nome: 'Configurador de Telefonia', + imagem: '../../Acessts/Imagens/Iconis/chamada-telefonica.png', + id_server: 'serv_gat_1', + resposta_popup: createTelefoniaForm(), + resposta_script: '../js/Ambiente/Service/List/Gerador_XML_Telefonia.js', + resposta_estilo: generateTelefoniaStyles() + }); +} + +function createTelefoniaForm() { + return ` +
    +
    +

    Preencha o Formulario

    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    `; +} + +function generateTelefoniaStyles() { + return `.control { width: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center; } + .formulario { width: 80%; display: flex; flex-direction: column; animation: surgirpopup 0.8s ease; } + @keyframes surgirpopup { to { opacity: 1; transform: translateY(0); } from { opacity: 0; transform: translateY(40vw); } } + .formulario input { border: none; outline: none; background: none; background-color: var(--Matriz); border: 0.2vw solid var(--Cor_Segundaria_2_1); box-shadow: 5px 5px 0px 2px var(--Cor_Segundaria_2_2); font-family: var(--font_titulo); font-size: 0.9vw; color: var(--Cor_Segundaria_2_1); padding-left: 1vw; padding-right: 1vw; width: 100%; height: 3vh; } + .formulario label { font-family: var(--font_titulo); font-size: 1vw; color: var(--Matriz); } + .formulario button { border: none; outline: none; background: none; font-family: var(--font_titulo); font-size: 1vw; color: var(--Matriz); background-color: #c6c6c6; box-shadow: -5px 5px 0px #9a9a9a; transition: 1s ease; width: 8vw; height: 4vh; } + .formulario button:hover { background-color: var(--Cor_Segundaria_2_1); box-shadow: 5px 5px 0px var(--Cor_Segundaria_2_2); } + .formulario h2 { font-family: var(--font_titulo); text-align: center; font-size: 2vw; color: var(--Matriz); }`; +} + +function setupUserServices(Data_Center) { + Data_Center.Ser_User.resetar_senha = createService({ + nome: 'Resetar senha', + imagem: '../../Acessts/Imagens/Iconis/ferramentas.png', + id_server: 'serv_gat_2', + resposta_popup: createFormeZabix(), + resposta_script: `../js/page/Ambiente/Service/List/teste.js`, + resposta_estilo: `document.body.style.backgroundColor = '#f0f0f0';` + }); +} + + +function createFormeZabix() { + return ` +
    +
    +

    Preencha o Formulario

    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    `; +} + + + + +function createService({ nome, imagem, id_server, resposta_popup, resposta_script, resposta_estilo }) { + return { + nome, + Imagem: imagem, + id_server, + resposta_popup, + resposta_script, + resposta_estilo + }; +} \ No newline at end of file diff --git a/js/page/Service/front_end.zip b/js/page/Service/front_end.zip new file mode 100644 index 0000000..1857fad Binary files /dev/null and b/js/page/Service/front_end.zip differ