From df914a1895962073af22a5c2a975b6fbe4d131c3 Mon Sep 17 00:00:00 2001 From: nonodev96 Date: Thu, 14 Apr 2022 04:07:45 +0200 Subject: [PATCH] PlantUML Gantt with all project with svg and pdf generator. Add table with dependencies info in about Fix directive button async await Refactor view in shared components. Change console.log() to console.debug() More translations --- .editorconfig | 1 + CHANGELOG.md | 10 +- README.md | 2 +- UML/0.Project/0.0.Config.puml | 46 ++ UML/0.Project/0.0.Gantt-2021-08.puml | 20 + UML/0.Project/0.0.Gantt-2021-09.puml | 33 + UML/0.Project/0.0.Gantt-2021-10.puml | 26 + UML/0.Project/0.0.Gantt-2021-11.puml | 35 ++ UML/0.Project/0.0.Gantt-2021-12.puml | 38 ++ UML/0.Project/0.0.Gantt-2022-01.puml | 35 ++ UML/0.Project/0.0.Gantt-2022-02.puml | 33 + UML/0.Project/0.0.Gantt-2022-03.puml | 52 ++ UML/0.Project/0.0.Gantt-2022-04.puml | 36 ++ UML/0.Project/0.0.Gantt.puml | 258 ++++++-- UML/0.Project/0.0.Gantt.svg | 592 ++++++++++++++++++ UML/THUMDER-core-Services.puml | 76 ++- _0_generate_pdf.sh | 16 + _1_generate_uml.sh | 14 + assets/favicon.256x256.png | Bin 0 -> 10654 bytes package.json | 1 + src/app/Utils.ts | 4 +- src/app/__core/auth/auth.service.ts | 2 +- src/app/__core/machine/machine.service.ts | 14 +- .../file-system/file-system.service.ts | 10 +- .../page-not-found.component.html | 3 +- .../async-await/async-click.directive.ts | 85 ++- src/app/app.component.ts | 41 +- .../monaco-editor/monaco-editor.component.ts | 9 - src/app/views/_account/login/login.view.ts | 1 - src/app/views/_auth/editor/editor.view.ts | 6 +- .../_auth/file-manager/file-manager.view.html | 20 +- .../_auth/file-manager/file-manager.view.ts | 16 +- src/app/views/_auth/profile/profile.view.ts | 2 +- src/app/views/_landing/about/about.view.html | 80 ++- src/app/views/_landing/about/about.view.ts | 60 +- src/app/views/debug/debug-view.html | 9 +- src/app/views/debug/debug-view.ts | 18 +- src/assets/i18n/en.json | 13 + src/assets/i18n/sp.json | 13 + src/styles.scss | 35 ++ 40 files changed, 1584 insertions(+), 181 deletions(-) create mode 100644 UML/0.Project/0.0.Config.puml create mode 100644 UML/0.Project/0.0.Gantt-2021-08.puml create mode 100644 UML/0.Project/0.0.Gantt-2021-09.puml create mode 100644 UML/0.Project/0.0.Gantt-2021-10.puml create mode 100644 UML/0.Project/0.0.Gantt-2021-11.puml create mode 100644 UML/0.Project/0.0.Gantt-2021-12.puml create mode 100644 UML/0.Project/0.0.Gantt-2022-01.puml create mode 100644 UML/0.Project/0.0.Gantt-2022-02.puml create mode 100644 UML/0.Project/0.0.Gantt-2022-03.puml create mode 100644 UML/0.Project/0.0.Gantt-2022-04.puml create mode 100644 UML/0.Project/0.0.Gantt.svg create mode 100644 _0_generate_pdf.sh create mode 100644 _1_generate_uml.sh create mode 100644 assets/favicon.256x256.png diff --git a/.editorconfig b/.editorconfig index 9d0bb7f..289d065 100644 --- a/.editorconfig +++ b/.editorconfig @@ -2,6 +2,7 @@ root = true [*] +end_of_line = lf charset = utf-8 indent_style = space indent_size = 2 diff --git a/CHANGELOG.md b/CHANGELOG.md index 93996ad..1435722 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ +## 1.3.9 (2022-03-31) + +* fix files in file system storage (delete item) ([86b65fa](https://github.com/nonodev96/THUMDER/commit/86b65fa)) +* Refactor in all firebase method with new modular functions and providers for electron. ([f8de3f8](https://github.com/nonodev96/THUMDER/commit/f8de3f8)) +* update wiki and multiview drag and drop ([6d42941](https://github.com/nonodev96/THUMDER/commit/6d42941)) + + + ## 1.3.8 (2022-03-09) -* Add submodule wiki ([7d7a041](https://github.com/nonodev96/THUMDER/commit/7d7a041)) +* Add submodul wiki ([7d7a041](https://github.com/nonodev96/THUMDER/commit/7d7a041)) * CHANGELOG ([f04025e](https://github.com/nonodev96/THUMDER/commit/f04025e)) * Deleted submodule wiki ([41b6bb9](https://github.com/nonodev96/THUMDER/commit/41b6bb9)) * fix karma version ([ee905d3](https://github.com/nonodev96/THUMDER/commit/ee905d3)) diff --git a/README.md b/README.md index 50955b6..ce14437 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ THUMDER =======
- ICON + ICON
diff --git a/UML/0.Project/0.0.Config.puml b/UML/0.Project/0.0.Config.puml new file mode 100644 index 0000000..2edaf51 --- /dev/null +++ b/UML/0.Project/0.0.Config.puml @@ -0,0 +1,46 @@ +@startuml(id=Config) +'https://plantuml.com/es/gantt-diagram +!theme plain + +'page 2x2 +skinparam defaultFontName consolas +skinparam minClassWidth 100 +skinparam conditionStyle inside + +'printscale daily zoom 2 +saturday are closed and are colored in pink +sunday are closed and are colored in pink +@enduml + + +'2021-08-01 to 2021-08-05 are named [Holidays] +'2021-08-01 to 2021-08-05 are colored in lime + + +''XL+M+L => 6+2+4 = 12 días +'then [UML Gestión cuentas] lasts 4 days +''L+L+L => 4+4+4 = 12 días +'then [UML Gestión ficheros] lasts 4 days +''M+M+M+L+L+XL => 2+2+2+4+4+6 = 20 días +'then [UML Editor de ficheros] lasts 7 days +''XL+XL+M+M+M+L+L => 6+6+2+2+2+4+4 = 26 días +'then [UML Simulación] lasts 9 days +''M+S+S+S+S+S+S+S+L+XL => 2+1+1+1+1+1+1+1+4+6 = 19 días +'then [UML Configuración] lasts 6 days +' +''M => 2 = 2 días +'then [UML Componente Calculadora] lasts 1 days +''M+XXL => 2+10 = 12 días +'then [UML Componente Memoria] lasts 4 days +''L => 6 = 6 días +'then [UML Componente Código] lasts 2 days +''S+S+M+L+M+M+L+XL => 1+1+2+4+2+2+4+6 = 22 días +'then [UML Componente Registros] lasts 7 days +''XL => 6 = 6 días +'then [UML Componente Pipeline] lasts 2 days +''XL+L+L => 6+4+4 = 14 días +'then [UML Componente Cycle Clock] lasts 5 days +''XL+L+L => 6+4+4 = 14 días +'then [UML Componente Cycle Clock] lasts 5 days +''L+M+L+L+L+XL+L => 4+2+4+4+4+6+4 = 28 días +'then [UML Servidor de pruebas] lasts 9 days diff --git a/UML/0.Project/0.0.Gantt-2021-08.puml b/UML/0.Project/0.0.Gantt-2021-08.puml new file mode 100644 index 0000000..8ac7058 --- /dev/null +++ b/UML/0.Project/0.0.Gantt-2021-08.puml @@ -0,0 +1,20 @@ +@startgantt +!include ./0.0.Config.puml!Config + +Project starts the 1st of November 2021 + +-- Planteamiento del proyecto -- + +-- Desarrollo de los prototipos -- + +-- Análisis y Diseño-- + +-- Implementación -- + +-- Pruebas -- + +-- Entregas -- + +-- Reuniones -- + +@endgantt diff --git a/UML/0.Project/0.0.Gantt-2021-09.puml b/UML/0.Project/0.0.Gantt-2021-09.puml new file mode 100644 index 0000000..4346f00 --- /dev/null +++ b/UML/0.Project/0.0.Gantt-2021-09.puml @@ -0,0 +1,33 @@ +@startgantt +!include ./0.0.Config.puml!Config + +Project starts the 1st of September 2021 + + +-- Planteamiento del proyecto -- + +[Desarrollar la planificación] starts 2021-09-01 and lasts 4 days +[Gantt] lasts 5 days and starts 4 days before [Desarrollar la planificación]'s end + +-- Desarrollo de los prototipos -- + +[Mockups] lasts 3 days and starts 0 days before [Gantt]'s end +[Wireframes] lasts 5 days and starts 0 days before [Mockups]'s end + +note bottom + Generar una versión de prueba + con los diseños y prototipos +end note + + +[Story Case] lasts 5 days and starts 0 days before [Wireframes]'s end +then [Story Case] lasts 3 days +then [State Diagram] lasts 4 days + + +-- Reuniones -- + +[1ª Reunión] starts 2021-09-01 + + +@endgantt diff --git a/UML/0.Project/0.0.Gantt-2021-10.puml b/UML/0.Project/0.0.Gantt-2021-10.puml new file mode 100644 index 0000000..3968261 --- /dev/null +++ b/UML/0.Project/0.0.Gantt-2021-10.puml @@ -0,0 +1,26 @@ +@startgantt +!include ./0.0.Config.puml!Config + +Project starts the 1st of October 2021 + + +-- Desarrollo de los prototipos -- + +[Presentación análisis] lasts 1 days and starts at 2021/10/01 +then [UML - Proyecto plantilla] lasts 3 days +then [Proyecto plantilla] lasts 5 days +then [Proyecto plantilla - Frameworks] lasts 6 days +then [Proyecto plantilla - Tests] lasts 4 days +[Proyecto plantilla - CI] lasts 3 days and starts 0 days before [Proyecto plantilla - Tests]'s end +[Pre release v1.0.0] happens at [Proyecto plantilla - CI]'s end + + +2021/10/01 to 2021/10/31 are colored in orange and are named [Sprint Init] +2021/11/01 to 2021/11/06 are colored in lightblue and are named [Sprint 1] + +-- Reuniones -- + +[2ª Reunión] starts 2021-10-01 + + +@endgantt diff --git a/UML/0.Project/0.0.Gantt-2021-11.puml b/UML/0.Project/0.0.Gantt-2021-11.puml new file mode 100644 index 0000000..5cbcd83 --- /dev/null +++ b/UML/0.Project/0.0.Gantt-2021-11.puml @@ -0,0 +1,35 @@ +@startgantt +!include ./0.0.Config.puml!Config +'November +Project starts the 29 of October 2021 + + +-- Análisis, Diseño e Implementación-- + +[Pre release v1.0.0] happens 2021/10/29 + +'XL+M+L => 4+2+3 = 9 días +[UML - Manager accounts] lasts 5 days and starts 0 days before [Pre release v1.0.0]'s end +[Servicio - Manager accounts] lasts 10 days and starts 0 days after [UML - Manager accounts]'s end +[Tests - Manager accounts] lasts 3 days and starts 5 days after [Servicio - Manager accounts]'s end + +'L+L+L => 3+3+3 = 9 días +[UML - Manager files] lasts 5 days and starts 0 days before [Pre release v1.0.0]'s end +[Component-view Manager files] lasts 13 days and starts 0 days after [UML - Manager accounts]'s end +[Tests - Manager files] lasts 4 days and starts 0 days after [Component-view Manager files]'s end + +[Pre release v1.1.0] happens at [Tests - Manager accounts]'s end +[Pre release v1.1.0] happens at [Tests - Manager files]'s end + + +-- Reuniones -- + +[3ª Reunión] happens 0 days after [Pre release v1.0.0]'s end +[4ª Reunión] happens 0 days after [Pre release v1.1.0]'s end + + +2021/11/01 to 2021/11/14 are colored in lightblue and are named [Sprint 1] +2021/11/15 to 2021/11/30 are colored in lightgreen and are named [Sprint 2] +2021/12/01 to 2021/12/05 are colored in lightblue and are named [Sprint 3] + +@endgantt diff --git a/UML/0.Project/0.0.Gantt-2021-12.puml b/UML/0.Project/0.0.Gantt-2021-12.puml new file mode 100644 index 0000000..c38261a --- /dev/null +++ b/UML/0.Project/0.0.Gantt-2021-12.puml @@ -0,0 +1,38 @@ +@startgantt +!include ./0.0.Config.puml!Config +'December +Project starts 30 29 of November 2021 + +-- Análisis, Diseño e Implementación-- + +[Pre release v1.1.0] happens 2021/11/30 + + +'M+S+S+S+S+S+S+S+L+XL => 2+1+1+1+1+1+1+1+3+4 = 16 días +[UML - Config] lasts 2 days and starts 0 days before [Pre release v1.1.0]'s end +then [Component-view Config] lasts 6 days +then [Tests - Config] lasts 2 days + +'M+M+M+L+L+XL => 2+2+2+3+3+4 = 16 días +[UML - Editor of files] lasts 2 days and starts 0 days before [Pre release v1.1.0]'s end +[Component-view Editor of files] lasts 5 days and starts 0 days after [UML - Config]'s end +[Tests - Editor of files] lasts 2 days and starts 0 days after [Component-view Config]'s end + +[Pre release v1.2.0] happens at 0 day after [Tests - Config]'s end +[Pre release v1.2.0] happens at 0 day after [Tests - Editor of files]'s end + + + +-- Reuniones -- + +[4ª Reunión] happens 0 days after [Pre release v1.1.0]'s end +[5ª Reunión] happens 0 days after [Pre release v1.2.0]'s end + + +2021/12/01 to 2021/12/14 are colored in lightblue and are named [Sprint 3] +2021/12/15 to 2021/12/31 are closed +2021/12/15 to 2021/12/31 are named [Holidays] +2021/12/15 to 2022/01/01 are colored salmon +'2021/12/15 to 2022/01/14 are colored in lightgreen and are named [Sprint 3] + +@endgantt diff --git a/UML/0.Project/0.0.Gantt-2022-01.puml b/UML/0.Project/0.0.Gantt-2022-01.puml new file mode 100644 index 0000000..ec08ea8 --- /dev/null +++ b/UML/0.Project/0.0.Gantt-2022-01.puml @@ -0,0 +1,35 @@ +@startgantt +!include ./0.0.Config.puml!Config + +Project starts the 14 of December 2021 + +-- Análisis, Diseño e Implementación-- + +[Pre release v1.2.0] happens 2021/12/14 + + +'S+S+M+L+M+M+L+XL => 1+1+2+3+2+2+3+4 = 18 días +[UML - Manager Registers] lasts 5 days and starts 0 days after [Pre release v1.2.0]'s end +[Component-view Registers] lasts 10 days and starts 17 days after [UML - Manager Registers]'s end +[Tests - Manager Registers] lasts 5 days and starts 0 days after [Component-view Registers]'s end + +'M+XXL => 2+6 = 8 días +[UML - Manager Memory] lasts 5 days and starts 0 days after [Pre release v1.2.0]'s end +[Component-view Memory] lasts 11 days and starts 17 days after [UML - Manager Memory]'s end +[Tests - Manager Memory] lasts 5 days and starts 0 days after [Component-view Memory]'s end + +[Pre release v1.3.0] happens at 0 day after [Tests - Manager Registers]'s end +[Pre release v1.3.0] happens at 0 day after [Tests - Manager Memory]'s end + + +-- Reuniones -- + +[5ª Reunión] happens 0 days after [Pre release v1.2.0]'s end +[6ª Reunión] happens 0 days after [Pre release v1.3.0]'s end + +2021/12/15 to 2021/12/31 are closed +2021/12/15 to 2021/12/31 are named [Holidays] +2022/01/01 to 2022/01/14 are colored in lightblue and are named [Sprint 4] +2022/01/15 to 2022/01/31 are colored in lightgreen and are named [Sprint 5] + +@endgantt diff --git a/UML/0.Project/0.0.Gantt-2022-02.puml b/UML/0.Project/0.0.Gantt-2022-02.puml new file mode 100644 index 0000000..fdecce7 --- /dev/null +++ b/UML/0.Project/0.0.Gantt-2022-02.puml @@ -0,0 +1,33 @@ +@startgantt +!include ./0.0.Config.puml!Config + +Project starts the 31 of January 2022 + + +-- Análisis, Diseño e Implementación-- + +[Pre release v1.3.0] happens 2021/01/31 + +'XL+L+L => 4+3+3 = 10 días +[UML - Component Cycle Clock] lasts 4 days and starts 0 days after [Pre release v1.3.0]'s end +then [Component-view Cycle Clock] lasts 13 days +then [Tests - Component Cycle Clock] lasts 3 days + +'XL => 4 = 4 días +[UML - Component Pipeline] lasts 2 days and starts 0 days after [Pre release v1.3.0]'s end +[Component-view Pipeline] lasts 10 days and starts 0 days before [UML - Component Cycle Clock]'s end +[Tests - Component Pipeline] lasts 3 days and starts 0 days after [Component-view Cycle Clock]'s end + +[Pre release v1.4.0] happens at 0 days after [Tests - Component Cycle Clock]'s end +[Pre release v1.4.0] happens at 0 days after [Tests - Component Pipeline]'s end + + +-- Reuniones -- + +[6ª Reunión] happens 0 days after [Pre release v1.3.0]'s end +[7ª Reunión] happens 0 days after [Pre release v1.4.0]'s end + +2022/02/01 to 2022/02/14 are colored in lightblue and are named [Sprint 6] +2022/02/15 to 2022/02/28 are colored in lightgreen and are named [Sprint 7] + +@endgantt diff --git a/UML/0.Project/0.0.Gantt-2022-03.puml b/UML/0.Project/0.0.Gantt-2022-03.puml new file mode 100644 index 0000000..1b056a0 --- /dev/null +++ b/UML/0.Project/0.0.Gantt-2022-03.puml @@ -0,0 +1,52 @@ +@startgantt +!include ./0.0.Config.puml!Config + +Project starts the 28 of February 2022 + + +-- Análisis, Diseño e Implementación-- + +[Pre release v1.4.0] happens 2022/01/31 + +' Statistics TODO +[UML - Component Statistics] lasts 1 days and starts 1 days after [Pre release v1.4.0]'s end +then [Component-view Statistics] lasts 6 days +then [Tests - Component Statistics] lasts 2 days + +'L => 4 = 4 días +[UML - Component Código] lasts 2 days and starts 0 days before [Pre release v1.4.0]'s end +[Component-view Código] lasts 5 days and starts 0 days after [UML - Component Statistics]'s end +[Tests - Component Código] lasts 2 days and starts 0 days after [Component-view Statistics]'s end + + +[Pre release v1.5.0] happens at 0 days after [Tests - Component Código]'s end +[Pre release v1.5.0] happens at 0 days after [Tests - Component Statistics]'s end + + +' Multiview TODO +[UML - Component Multiview] lasts 2 days and starts 0 days before [Pre release v1.5.0]'s end +[Component-view Multiview] lasts 8 days and starts 0 days after [UML - Component Multiview]'s end +[Tests - Component Multiview] lasts 3 days and starts 0 days after [Component-view Multiview]'s end + +'M => 2 = 2 días +[UML - Component Calculator] lasts 1 days and starts 0 days before [Pre release v1.5.0]'s end +[Component-view Calculator] lasts 3 days and starts 0 days after [UML - Component Multiview]'s end +[Tests - Component Calculator] lasts 1 days and starts 0 days after [Component-view Multiview]'s end + + +[Pre release v1.6.0] happens at 0 days after [Tests - Component Multiview]'s end +[Pre release v1.6.0] happens at 0 days after [Tests - Component Calculator]'s end + + +-- Reuniones -- + +[7ª Reunión] happens 0 days after [Pre release v1.4.0]'s end +[8ª Reunión] happens 0 days after [Pre release v1.5.0]'s end +[9ª Reunión] happens 0 days after [Pre release v1.6.0]'s end + + +2022/03/01 to 2022/03/14 are colored in lightblue and are named [Sprint 8] +2022/03/15 to 2022/04/02 are colored in lightgreen and are named [Sprint 9] +2022/04/01 to 2022/04/04 are colored in lightblue and are named [Sprint 10] + +@endgantt diff --git a/UML/0.Project/0.0.Gantt-2022-04.puml b/UML/0.Project/0.0.Gantt-2022-04.puml new file mode 100644 index 0000000..9d13633 --- /dev/null +++ b/UML/0.Project/0.0.Gantt-2022-04.puml @@ -0,0 +1,36 @@ +@startgantt +!include ./0.0.Config.puml!Config +'April +Project starts the 31st of March 2022 + + + +[Pre release v1.6.0] happens 2022/03/31 + + + +' About TODO +[UML - Component Documentation] lasts 3 days and starts 0 days before [Pre release v1.6.0]'s end +then [Component-view Documentation] lasts 6 days +then [Tests - Component Documentation] lasts 1 days + +' Documentation TODO +[UML - Component About] lasts 2 days and starts 0 days before [Pre release v1.6.0]'s end +[Component-view About] lasts 5 days and starts 0 days after [UML - Component Documentation]'s end +[Tests - Component About] lasts 1 days and starts 0 days after [Component-view Documentation]'s end + + +[Pre release v1.7.0] happens at 0 days after [Tests - Component Documentation]'s end +[Pre release v1.7.0] happens at 0 days after [Tests - Component About]'s end + + +-- Reuniones -- + +[9ª Reunión] happens 0 days after [Pre release v1.6.0]'s end +[10ª Reunión] happens 0 days after [Pre release v1.7.0]'s end + + +2022/04/01 to 2022/04/14 are colored in lightblue and are named [Sprint 10] +2022/04/15 to 2022/04/30 are colored in lightgreen and are named [Sprint 11] + +@endgantt diff --git a/UML/0.Project/0.0.Gantt.puml b/UML/0.Project/0.0.Gantt.puml index de12714..5f2b24a 100644 --- a/UML/0.Project/0.0.Gantt.puml +++ b/UML/0.Project/0.0.Gantt.puml @@ -1,61 +1,237 @@ @startgantt -'https://plantuml.com/es/gantt-diagram -'!theme amiga from https://raw.githubusercontent.com/plantuml/plantuml/master/themes -skinparam defaultFontName consolas -skinparam minClassWidth 100 -skinparam conditionStyle inside -printscale daily zoom 2 - -saturday are closed -sunday are closed - -Project starts the 1st of july 2021 - --- Planteamiento del proyeto -- -[Desarrollar la planificación] starts 2021-07-01 and lasts 3 days -'[Test prototype] lasts 3 days and starts 7 days before [Desarrollar la planificación]'s end -then [Gantt] lasts 2 days -then [Story Case] lasts 3 days -then [State Diagram] lasts 3 days -then [UML] lasts 6 days -'then [Presentación] is deleted -'[Presentación] happens at [UML]'s end +!include ./0.0.Config.puml!Config +' Norma Estimación +' Talla S --> 1 día +' Talla M --> 2 días +' Talla L --> 3 días +' Talla XL --> 4 días +' Talla XXL --> 6 días +'Ejemplo si Gestión de cuentas tiene 3 tareas: Crear cuenta, recuperar cuenta, iniciar y cerrar sesión +'Se suman todas las tallas y se dividen en UML e implementación +'Crear cuenta --> XL --> 6 días +'Recuperar cuenta --> M --> 2 días +'Iniciar y cerrar sesión --> L --> 4 días +' Total: 12 días +' 50 % de los días para planteamiento +' 50 % de los días para la implementación +'2+2+2+4+4+6 + + +Project starts the 1st of September 2021 + +-- Planteamiento del proyecto -- + +[Desarrollar la planificación] starts 2021-07-02 and lasts 4 days +[Gantt] lasts 5 days and starts 1 days before [Desarrollar la planificación]'s end + +-- Desarrollo de los prototipos -- + +[Mockups] lasts 3 days and starts 1 days before [Gantt]'s end +[Wireframes] lasts 5 days and starts 1 days before [Mockups]'s end note bottom - Diagrama de clase - Diagrama de casos de uso - Diagrama de secuencia - Diagrama de actividad - Diagrama de Despliegue - Diagrama de componentes - Diagrama de máquina de estado - Diagrama de paquete + Generar una versión de prueba + con los diseños y prototipos end note --- Desarrollo de los prototipos -- +[Story Case] lasts 5 days and starts 0 days before [Wireframes]'s end +then [Story Case] lasts 3 days +then [State Diagram] lasts 4 days +'then [UML] lasts 9 days +then [Presentación análisis] lasts 1 days +'then [Presentación] is deleted -[Mockups] starts 2021-07-25 and lasts 3 days -[Wireframes] lasts 3 days and starts 1 days before [Mockups]'s end +then [UML - Proyecto plantilla] lasts 3 days +then [Proyecto plantilla] lasts 5 days +then [Proyecto plantilla - Frameworks] lasts 6 days +then [Proyecto plantilla - Tests] lasts 4 days +[Proyecto plantilla - CI] lasts 3 days and starts 0 days before [Proyecto plantilla - Tests]'s end +[Pre release v1.0.0] happens at [Proyecto plantilla - CI]'s end + + +-- Análisis, Diseño e Implementación-- + + +'XL+M+L => 4+2+3 = 9 días +[UML - Manager accounts] lasts 5 days and starts 0 days before [Pre release v1.0.0]'s end +[Servicio - Manager accounts] lasts 10 days and starts 0 days after [UML - Manager accounts]'s end +[Tests - Manager accounts] lasts 3 days and starts 5 days after [Servicio - Manager accounts]'s end + +'L+L+L => 3+3+3 = 9 días and starts 0 days before [Servicio Manager accounts]'s end +[UML - Manager files] lasts 5 days and starts 0 days before [Pre release v1.0.0]'s end +[Component-view Manager files] lasts 13 days and starts 0 days after [UML - Manager accounts]'s end +[Tests - Manager files] lasts 4 days and starts 0 days after [Component-view Manager files]'s end + +[Pre release v1.1.0] happens at [Tests - Manager accounts]'s end +[Pre release v1.1.0] happens at [Tests - Manager files]'s end + + + + +'M+S+S+S+S+S+S+S+L+XL => 2+1+1+1+1+1+1+1+3+4 = 16 días +[UML - Config] lasts 2 days and starts 0 days before [Pre release v1.1.0]'s end +then [Component-view Config] lasts 6 days +then [Tests - Config] lasts 2 days + +'M+M+M+L+L+XL => 2+2+2+3+3+4 = 16 días +[UML - Editor of files] lasts 2 days and starts 0 days before [Pre release v1.1.0]'s end +[Component-view Editor of files] lasts 5 days and starts 0 days after [UML - Config]'s end +[Tests - Editor of files] lasts 2 days and starts 0 days after [Component-view Config]'s end + +[Pre release v1.2.0] happens at 0 day after [Tests - Config]'s end +[Pre release v1.2.0] happens at 0 day after [Tests - Editor of files]'s end + + + + + + + +'S+S+M+L+M+M+L+XL => 1+1+2+3+2+2+3+4 = 18 días +[UML - Manager Registers] lasts 5 days and starts 0 days after [Pre release v1.2.0]'s end +[Component-view Registers] lasts 10 days and starts 17 days after [UML - Manager Registers]'s end +[Tests - Manager Registers] lasts 5 days and starts 0 days after [Component-view Registers]'s end + +'M+XXL => 2+6 = 8 días +[UML - Manager Memory] lasts 5 days and starts 0 days after [Pre release v1.2.0]'s end +[Component-view Memory] lasts 11 days and starts 17 days after [UML - Manager Memory]'s end +[Tests - Manager Memory] lasts 5 days and starts 0 days after [Component-view Memory]'s end + +[Pre release v1.3.0] happens at 0 day after [Tests - Manager Registers]'s end +[Pre release v1.3.0] happens at 0 day after [Tests - Manager Memory]'s end + + + + + + + +'XL+L+L => 4+3+3 = 10 días +[UML - Component Cycle Clock] lasts 4 days and starts 0 days after [Pre release v1.3.0]'s end +then [Component-view Cycle Clock] lasts 13 days +then [Tests - Component Cycle Clock] lasts 3 days + +'XL => 4 = 4 días +[UML - Component Pipeline] lasts 2 days and starts 0 days after [Pre release v1.3.0]'s end +[Component-view Pipeline] lasts 10 days and starts 0 days before [UML - Component Cycle Clock]'s end +[Tests - Component Pipeline] lasts 3 days and starts 0 days after [Component-view Cycle Clock]'s end + +[Pre release v1.4.0] happens at 0 days after [Tests - Component Cycle Clock]'s end +[Pre release v1.4.0] happens at 0 days after [Tests - Component Pipeline]'s end + + + + + + + + +' Statistics TODO +[UML - Component Statistics] lasts 1 days and starts 1 days after [Pre release v1.4.0]'s end +then [Component-view Statistics] lasts 6 days +then [Tests - Component Statistics] lasts 2 days + +'L => 4 = 4 días +[UML - Component Código] lasts 2 days and starts 0 days before [Pre release v1.4.0]'s end +[Component-view Código] lasts 5 days and starts 0 days after [UML - Component Statistics]'s end +[Tests - Component Código] lasts 2 days and starts 0 days after [Component-view Statistics]'s end + + +[Pre release v1.5.0] happens at 0 days after [Tests - Component Código]'s end +[Pre release v1.5.0] happens at 0 days after [Tests - Component Statistics]'s end + + + + + +' Multiview TODO +[UML - Component Multiview] lasts 2 days and starts 0 days before [Pre release v1.5.0]'s end +[Component-view Multiview] lasts 8 days and starts 0 days after [UML - Component Multiview]'s end +[Tests - Component Multiview] lasts 3 days and starts 0 days after [Component-view Multiview]'s end + +'M => 2 = 2 días +[UML - Component Calculator] lasts 1 days and starts 0 days before [Pre release v1.5.0]'s end +[Component-view Calculator] lasts 3 days and starts 0 days after [UML - Component Multiview]'s end +[Tests - Component Calculator] lasts 1 days and starts 0 days after [Component-view Multiview]'s end + + +[Pre release v1.6.0] happens at 0 days after [Tests - Component Multiview]'s end +[Pre release v1.6.0] happens at 0 days after [Tests - Component Calculator]'s end + + + + + + +' About TODO +[UML - Component Documentation] lasts 3 days and starts 0 days before [Pre release v1.6.0]'s end +then [Component-view Documentation] lasts 6 days +then [Tests - Component Documentation] lasts 1 days + +' Documentation TODO +[UML - Component About] lasts 2 days and starts 0 days before [Pre release v1.6.0]'s end +[Component-view About] lasts 5 days and starts 0 days after [UML - Component Documentation]'s end +[Tests - Component About] lasts 1 days and starts 0 days after [Component-view Documentation]'s end + + +[Pre release v1.7.0] happens at 0 days after [Tests - Component Documentation]'s end +[Pre release v1.7.0] happens at 0 days after [Tests - Component About]'s end -[Pre release v1 prototype] starts 2021-08-06 and lasts 1 days -note bottom - Generar la versión de prueba - de los diseños y prototipos -end note +'L+M+L+L+L+XL+L => 3+2+3+3+3+4+3 = 21 días +[UML - THUMDER Server] lasts 5 days and starts 0 days before [Pre release v1.0.0]'s end +[THUMDER Server] starts 0 day before [UML - THUMDER Server]'s start and ends 0 day after [Pre release v1.5.0]'s end +[Tests - THUMDER Server] lasts 13 days and starts 0 days after [THUMDER Server]'s end +'-- Pruebas -- +'XL+XL+M+M+M+L+L => 4+4+2+2+2+3+3 = 20 días +'[UML - Simulación] lasts 4 days and starts 0 days before [Pre release v1.0.0]'s end +'then [Servicio Simulación] happens at [Release v2.0.0]'s end +'then [Tests - Simulación] lasts 4 days +-- Entregas -- -2021-08-01 to 2021-08-05 are named [Holidays] -2021-08-01 to 2021-08-05 are colored in salmon +[Release] happens at 0 days after [Pre release v1.7.0]'s end +'[Pre release v1.0.0] starts 2021-07-30 and lasts 1 days -- Reuniones -- -'[Reunión 1] starts 2021-06-10 -[Reunión 2] starts 2021-07-20 +[1ª Reunión] starts 2021-09-01 +[2ª Reunión] starts 2021-10-01 +[3ª Reunión] happens 0 days after [Pre release v1.0.0]'s end +[4ª Reunión] happens 0 days after [Pre release v1.1.0]'s end +[5ª Reunión] happens 0 days after [Pre release v1.2.0]'s end +[6ª Reunión] happens 0 days after [Pre release v1.3.0]'s end +[7ª Reunión] happens 0 days after [Pre release v1.4.0]'s end +[8ª Reunión] happens 0 days after [Pre release v1.5.0]'s end +[9ª Reunión] happens 0 days after [Pre release v1.6.0]'s end +[10ª Reunión] happens 0 days after [Pre release v1.7.0]'s end + + +'2021/09/21 to 2021/09/22 and colored in lightgreen and are named [Sprint 11] +2021/10/01 to 2021/10/31 are colored in orange and are named [Sprint Init] + +'2021/10/15 to 2021/10/31 are colored in lightgreen and are named [Sprint 1] +2021/11/01 to 2021/11/14 are colored in lightblue and are named [Sprint 1] +2021/11/15 to 2021/11/30 are colored in lightgreen and are named [Sprint 2] +2021/12/01 to 2021/12/14 are colored in lightblue and are named [Sprint 3] +'2021/12/15 to 2021/12/31 are colored in lightgreen and are named [Sprint 5] +2021/12/15 to 2021/12/31 are closed +2021/12/15 to 2021/12/31 are named [Holidays] +2021/12/15 to 2022/01/01 are colored salmon +2022/01/01 to 2022/01/14 are colored in lightblue and are named [Sprint 4] +2022/01/15 to 2022/01/31 are colored in lightgreen and are named [Sprint 5] +2022/02/01 to 2022/02/14 are colored in lightblue and are named [Sprint 6] +2022/02/15 to 2022/02/28 are colored in lightgreen and are named [Sprint 7] +2022/03/01 to 2022/03/14 are colored in lightblue and are named [Sprint 8] +2022/03/15 to 2022/03/31 are colored in lightgreen and are named [Sprint 9] +2022/04/01 to 2022/04/14 are colored in lightblue and are named [Sprint 10] +2022/04/15 to 2022/04/30 are colored in lightgreen and are named [Sprint 11] +'2022/10/15 to 2022/10/31 are colored in lightblue and are named [Sprint 12] +'2022/10/15 to 2022/10/31 are colored in lightgreen and are named [Sprint 13] @endgantt diff --git a/UML/0.Project/0.0.Gantt.svg b/UML/0.Project/0.0.Gantt.svg new file mode 100644 index 0000000..566563a --- /dev/null +++ b/UML/0.Project/0.0.Gantt.svg @@ -0,0 +1,592 @@ +WeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSa1234567891011121314151617181920212223242526272829301234567891011121314151617181920212223242526272829303112345678910111213141516171819202122232425262728293012345678910111213141516171819202122232425262728293031123456789101112131415161718192021222324252627282930311234567891011121314151617181920212223242526272812345678910111213141516171819202122232425262728293031123456789101112131415161718192021222324252627282930September 2021October 2021November 2021December 2021January 2022February 2022March 2022April 2022Sprint InitSprint 1Sprint 2Sprint 3HolidaysSprint 4Sprint 5Sprint 6Sprint 7Sprint 8Sprint 9Sprint 10Sprint 11Generar una versión de pruebacon los diseños y prototiposPlanteamiento del proyectoDesarrollar la planificaciónGanttDesarrollo de los prototiposMockupsWireframesStory CaseState DiagramPresentación análisisUML - Proyecto plantillaProyecto plantillaProyecto plantilla - FrameworksProyecto plantilla - TestsProyecto plantilla - CIPre release v1.0.0Análisis, Diseño e ImplementaciónUML - Manager accountsServicio - Manager accountsTests - Manager accountsUML - Manager filesComponent-view Manager filesTests - Manager filesPre release v1.1.0UML - ConfigComponent-view ConfigTests - ConfigUML - Editor of filesComponent-view Editor of filesTests - Editor of filesPre release v1.2.0UML - Manager RegistersComponent-view RegistersTests - Manager RegistersUML - Manager MemoryComponent-view MemoryTests - Manager MemoryPre release v1.3.0UML - Component Cycle ClockComponent-view Cycle ClockTests - Component Cycle ClockUML - Component PipelineComponent-view PipelineTests - Component PipelinePre release v1.4.0UML - Component StatisticsComponent-view StatisticsTests - Component StatisticsUML - Component CódigoComponent-view CódigoTests - Component CódigoPre release v1.5.0UML - Component MultiviewComponent-view MultiviewTests - Component MultiviewUML - Component CalculatorComponent-view CalculatorTests - Component CalculatorPre release v1.6.0UML - Component DocumentationComponent-view DocumentationTests - Component DocumentationUML - Component AboutComponent-view AboutTests - Component AboutPre release v1.7.0UML - THUMDER ServerTHUMDER ServerTests - THUMDER ServerEntregasReleaseReuniones1ª Reunión2ª Reunión3ª Reunión4ª Reunión5ª Reunión6ª Reunión7ª Reunión8ª Reunión9ª Reunión10ª Reunión1234567891011121314151617181920212223242526272829301234567891011121314151617181920212223242526272829303112345678910111213141516171819202122232425262728293012345678910111213141516171819202122232425262728293031123456789101112131415161718192021222324252627282930311234567891011121314151617181920212223242526272812345678910111213141516171819202122232425262728293031123456789101112131415161718192021222324252627282930WeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSeptember 2021October 2021November 2021December 2021January 2022February 2022March 2022April 2022 \ No newline at end of file diff --git a/UML/THUMDER-core-Services.puml b/UML/THUMDER-core-Services.puml index 88713da..8d5fee8 100644 --- a/UML/THUMDER-core-Services.puml +++ b/UML/THUMDER-core-Services.puml @@ -18,7 +18,7 @@ package Services #DDDDDD { -_electron: any -electron: any +isElectronApp: boolean - +nativeImage: Electron.NativeImage + '+nativeImage: Electron.NativeImage +screen: Electron.Screen +shell: Electron.Shell +{static} serviceElectron(): "" | "browser" | "renderer" | "worker" @@ -50,40 +50,54 @@ package Services #DDDDDD { +thumbnail: string +dataItem: any } - class FileItem extends FileSystemItem implements InterfaceFileItem { + class THUMDER_FileItem extends FileSystemItem implements InterfaceFileItem { + +$key: string + +content: string + +description: string + +e1_uid: string + +f_id: string } class FileSystemService { - +items: FileItem[] - +ITEMS: InterfaceFileItem[] - -UID: string - -updateUI$: Subject - -fileSystemStorageService: FileSystemStorageService - +initialize(): Promise - +getUpdateUIObservable(): Observable - +getItems(_path: FileSystemItem): Promise - +createDirectory(parentDirectory: FileSystemItem, name: string): Promise - +createFile(item: FileSystemItem, extension: string): Promise - +updateCategory(directory: FileSystemItem, selectedItems: FileSystemItem[], newCategory: any, viewArea: "navPane" | "itemView"): Promise - +editFileItem(updateFileItem: InterfaceFileItem, $key: string): Promise - +renameItem(item: FileSystemItem, newName: string): Promise - +deleteItem(item: FileSystemItem): Promise - +moveItem(item: FileSystemItem, destinationDirectory: FileSystemItem): any - +uploadFileChunk(fileData: File, uploadInfo: UploadInfo, destinationDirectory: FileSystemItem): any - +downloadItem(items: FileSystemItem[]): void - +generateDefaultFiles(): Promise + +items: THUMDER_FileItem[] + -updateUI$: Subject + -subscription: Subscription + +fileSystemStorageService: FileSystemStorageService + +init(): Promise + +getUpdateUIObservable(): Observable + +getItems(path: FileSystemItem): Promise + +createDirectory(parentDirectory: FileSystemItem, name: string): Promise + +createFile(item: FileSystemItem, extension: string): Promise + +updateCategory(directory: FileSystemItem, selectedItems: FileSystemItem[], newCategory: any, viewArea: "navPane" | "itemView"): Promise + +editFileItem(updateFileItem: THUMDER_FileItem, $key: string): Promise + +renameItem(item: FileSystemItem, newName: string): Promise + +deleteItem(item: FileSystemItem): Promise + +moveItem(item: FileSystemItem, destinationDirectory: FileSystemItem): Promise + +uploadFileChunk(fileData: File, uploadInfo: UploadInfo, destinationDirectory: FileSystemItem): Promise + +downloadItem(items: FileSystemItem[]): Promise + -setList_FileItems(items: THUMDER_FileItem[]): Promise + -updateLocalItems(): Promise + -{static} transform_InterfaceFileItem_to_THUMDER_FileItem(interfaceFileItem: InterfaceFileItem): THUMDER_FileItem } class FileSystemStorageService { - -fileItems_Collections: AngularFirestoreCollection - -UID: string - -httpClient: HttpClient - -afs: AngularFirestore - +generateDefaultFiles(): Promise - +getAllFilesFromFirestore(): Observable - +getFileItemsAsObservable(): Observable - +addFileItem(interfaceFileItem: InterfaceFileItem): Promise - +deleteFileItem(id: string): Promise - +editFileItem(fileItem: InterfaceFileItem, $key: string): Promise - -isInitialize(): Promise + -dbFileItemsPath: "/fileitems" + -httpClient: HttpClient + -afs: Firestore + +isInitialize(): Promise + +queryFileFromUser(filename: string): Promise> + -queryAllFilesFromUser(): Query + -collectionFileItems(): Promise> + +generateDefaultFiles(): Promise + +getAllFilesFromFirestoreAsObservable(): Observable + +createFileItem(fileItem: THUMDER_FileItem): Promise + +deleteFileItem($key: string): Promise + +updateFileItem($key: string, fileItem: THUMDER_FileItem): Promise + +FileItem_Documents_valueChanges(id: any): Observable + +FileItem_Documents_snapShotChanges(id: any): Observable> + +FileItems_Collections_valueChanges(): Observable + +FileItems_Collections_snapShotChanges(): Observable[]> + +createNewDocument(): { ref: DocumentReference; id: string; } + +getAllFilesFromFirestore(): Promise> + +getFiles(): Promise } class Globals { diff --git a/_0_generate_pdf.sh b/_0_generate_pdf.sh new file mode 100644 index 0000000..c1243cd --- /dev/null +++ b/_0_generate_pdf.sh @@ -0,0 +1,16 @@ +#!/bin/bash +echo 'Running Script' + +PATH_UML_INPUT="/Users/nonodev96/WebstormProjects/THUMDER/UML/" +PATH_UML_OUTPUT="/Users/nonodev96/" + +FILES=" +THUMDER-core-Services +" +for filename in $FILES ; do + echo $filename + # Generamos un svg a partir del uml + java -jar /Users/nonodev96/Applications/plantuml/plantuml.jar -tsvg "${PATH_UML_INPUT}${filename}.puml" + # Generamos un pdf optimizado mediante el svg anterior + inkscape --export-filename="${PATH_UML_OUTPUT}${filename}.pdf" "${PATH_UML_INPUT}${filename}.svg" &> /dev/null +done diff --git a/_1_generate_uml.sh b/_1_generate_uml.sh new file mode 100644 index 0000000..ca4e00d --- /dev/null +++ b/_1_generate_uml.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +#tplant --input ../src/**/*.ts --output ../UML/THUMDER.puml +#tplant --input ../src/app/__core/**/*.ts --output ../UML/CORE.puml +#tplant --input ../src/app/__shared/**/*.ts --output ../UML/SHARED.puml +#tplant --input ../src/app/_layouts/**/*.ts --output ../UML/LAYOUT.puml +#tplant --input ../src/app/components/**/*.ts --output ../UML/COMPONENTS.puml +#tplant --input ../src/app/views/**/*.ts --output ../UML/VIEWS.puml + +#tplant --input ./src/**/*.ts --output ./UML/SERVICES.puml +tplant -p tsconfig.json -i ./src/app/__core/services/**/**/*.ts --output ./UML/SERVICES.puml + + + diff --git a/assets/favicon.256x256.png b/assets/favicon.256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..3b399ac15cf9f98d3264e92bb088253c2600485f GIT binary patch literal 10654 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 g_Sm(SoGc_xDpKOVtwHeU3IX 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 { - console.log("initSynchronousFactory"); + }; } @@ -83,7 +83,7 @@ export namespace Utils { export function initWithDependencyFactory(service: any) { return () => { - console.log("initWithDependencyFactory - started"); + return service; }; } diff --git a/src/app/__core/auth/auth.service.ts b/src/app/__core/auth/auth.service.ts index 146e456..7495dbf 100644 --- a/src/app/__core/auth/auth.service.ts +++ b/src/app/__core/auth/auth.service.ts @@ -193,7 +193,7 @@ export class AuthService { if (!this.electronService.isElectronApp) { const userCredential = await getRedirectResult(this.afAuth); if (userCredential.user !== null) { - console.log("getRedirectResult", userCredential); + // console.debug("getRedirectResult", userCredential); await this.SetUserData(userCredential); this.ngZone.run(() => { this.router.navigate(["/"]); diff --git a/src/app/__core/machine/machine.service.ts b/src/app/__core/machine/machine.service.ts index 45947c5..614b8b1 100644 --- a/src/app/__core/machine/machine.service.ts +++ b/src/app/__core/machine/machine.service.ts @@ -138,35 +138,35 @@ export class MachineService { // this.socketProviderConnect.socket.on("SimulationInitResponse", (response) => { // const simulationInit = JSON.parse(response) as TypeSimulationInitResponse; - // console.log("Simulation Init", simulationInit); + // console.debug("Simulation Init", simulationInit); // }); // this.socketProviderConnect.socket.on("SimulationNextStepResponse", (response) => { // const simulationStep = JSON.parse(response) as TypeSimulationStep; - // console.log("Simulation Step", simulationStep); + // console.debug("Simulation Step", simulationStep); // }); // TODO CHECK this.socketProviderConnect.socketIO.on("UpdateRegisterResponse", (response) => { const registers = JSON.parse(response) as TypeRegisterToUpdate[]; this.registers.processRegisterToUpdateArray(registers); - console.log("Registers update", registers); + console.debug("Registers update", registers); }); // TODO CHECK this.socketProviderConnect.socketIO.on("UpdateMemoryResponse", (response) => { const memory = JSON.parse(response) as TypeMemoryToUpdate[]; this.memory.processMemoryToUpdateArray(memory); - console.log("Memory update", memory); + console.debug("Memory update", memory); }); this.socketProviderConnect.socketIO.on("GetAllRegistersResponse", (response) => { const allRegisters = JSON.parse(response) as TypeAllRegisters; - console.log("GetAllRegisters", allRegisters); + console.debug("GetAllRegisters", allRegisters); }); this.socketProviderConnect.socketIO.on("GetAllMemoryResponse", (response) => { const allMemory = JSON.parse(response) as TypeAllMemory; - console.log("GetAllMemory", allMemory); + console.debug("GetAllMemory", allMemory); }); this.socketProviderConnect.socketIO.on("UpdateConfigurationMachineResponse", (response) => { const configurationMachine = JSON.parse(response) as TypeConfigurationMachine; - console.log("Configuration machine", configurationMachine); + console.debug("Configuration machine", configurationMachine); }); const timeSimulation = this.store.getItem("time_simulation_configuration"); diff --git a/src/app/__core/services/file-system/file-system.service.ts b/src/app/__core/services/file-system/file-system.service.ts index 4e037ab..352c684 100644 --- a/src/app/__core/services/file-system/file-system.service.ts +++ b/src/app/__core/services/file-system/file-system.service.ts @@ -125,7 +125,6 @@ export class FileSystemService { } public async deleteItem(item: FileSystemItem): Promise { - console.log({ item }); const indexToDelete = this.items.findIndex(value => value.key === item.key); if (indexToDelete > -1) { const element = this.items.find(value => value.key === item.key); @@ -138,18 +137,21 @@ export class FileSystemService { } } + // TODO public moveItem(item: FileSystemItem, destinationDirectory: FileSystemItem): Promise { - console.log("TODO", item, destinationDirectory); + console.debug("TODO", item, destinationDirectory); return Promise.resolve() } + // TODO public async uploadFileChunk(fileData: File, uploadInfo: UploadInfo, destinationDirectory: FileSystemItem): Promise { - console.log("TODO", fileData, uploadInfo, destinationDirectory); + console.debug("TODO", fileData, uploadInfo, destinationDirectory); return Promise.resolve() } + // TODO public async downloadItem(items: Array): Promise { - console.log("TODO", items); + console.debug("TODO", items); return Promise.resolve() } diff --git a/src/app/__shared/components/page-not-found/page-not-found.component.html b/src/app/__shared/components/page-not-found/page-not-found.component.html index 3bcb4b2..99a5cf0 100644 --- a/src/app/__shared/components/page-not-found/page-not-found.component.html +++ b/src/app/__shared/components/page-not-found/page-not-found.component.html @@ -32,6 +32,7 @@

Oops! Page not foun Meanwhile, you may return to dashboard or try using the search form.

+ + --> diff --git a/src/app/__shared/directives/async-await/async-click.directive.ts b/src/app/__shared/directives/async-await/async-click.directive.ts index fba1423..9788731 100644 --- a/src/app/__shared/directives/async-await/async-click.directive.ts +++ b/src/app/__shared/directives/async-await/async-click.directive.ts @@ -1,38 +1,51 @@ -import { Directive, HostListener, Input, OnChanges, OnDestroy, SimpleChanges, Renderer2, ElementRef } from "@angular/core"; +import { + Directive, + HostListener, + Input, + OnChanges, + OnDestroy, + SimpleChanges, + Renderer2, + ElementRef, +} from "@angular/core"; import { Subscription, Observable } from "rxjs"; -const noop = () => { -}; @Directive({ - selector: "[asyncClick]" + selector: "[asyncClick]", }) export class AsyncClickDirective implements OnChanges, OnDestroy { private pending = true; - private disabled = false; private subscription: Subscription; @Input("asyncClick") clickFunc; - constructor( - private _renderer: Renderer2, - private _elementRef: ElementRef - ) { - this.pending = true; - this.disabled = false; - console.log(this._elementRef); + @Input() defaultButtonClass = ''; + @Input() successButtonClass = ''; + @Input() warningButtonClass = ''; + + constructor(private _renderer: Renderer2, + private _elementRef: ElementRef) { + this._renderer.setAttribute( + this._elementRef.nativeElement, + "class", + "" + ); } @HostListener("click") onClick() { - console.log("click"); if (typeof this.clickFunc === "function") { this.subscribe(this.clickFunc()); } } ngOnChanges(changes: SimpleChanges) { + const vector = this.defaultButtonClass.split(" ") + this._elementRef.nativeElement.classList.add( + ...vector + ); if (this.pending) { this.enable(); } @@ -47,35 +60,65 @@ export class AsyncClickDirective implements OnChanges, OnDestroy { "disabled", "true" ); - this._renderer.addClass( + } + + enable() { + this._renderer.removeAttribute( this._elementRef.nativeElement, "disabled", ); } - enable() { + noop() { + + } + + complete() { this._renderer.removeAttribute( this._elementRef.nativeElement, "disabled" ); - this._renderer.removeClass( + + const vector_successButtonClass = this.successButtonClass.split(" ") + const vector_warningButtonClass = this.warningButtonClass.split(" ") + this._elementRef.nativeElement.classList.add( + ...vector_successButtonClass + ); + this._elementRef.nativeElement.classList.remove( + ...vector_warningButtonClass + ); + } + + error() { + this._renderer.removeAttribute( this._elementRef.nativeElement, "disabled" ); + + const vector_successButtonClass = this.successButtonClass.split(" ") + const vector_warningButtonClass = this.warningButtonClass.split(" ") + this._elementRef.nativeElement.classList.remove( + ...vector_successButtonClass + ); + this._elementRef.nativeElement.classList.add( + ...vector_warningButtonClass + ); } subscribe(r) { this.pending = true; this.disable(); - const enable = () => this.enable(); + const noop = () => this.noop(); + const complete = () => this.complete(); + const error = () => this.error(); if (typeof r.subscribe === "function") { - this.subscription = (>r).subscribe({ + this.subscription = (r as Observable).subscribe({ next: noop, - complete: enable, - error: enable + complete: complete, + error: error, }); } else if (typeof r.then === "function") { - (>r).then(enable).catch(enable); + (r as Promise).then(complete).catch(error); this.subscription = null; } } diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 55e4908..443fd44 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -3,7 +3,12 @@ import { DOCUMENT } from "@angular/common"; import { NavigationEnd, NavigationStart, Router } from "@angular/router"; import { TranslateService } from "@ngx-translate/core"; import { Subscription } from "rxjs"; -import { NgcCookieConsentService, NgcInitializeEvent, NgcStatusChangeEvent, NgcNoCookieLawEvent } from "ngx-cookieconsent"; +import { + NgcCookieConsentService, + NgcInitializeEvent, + NgcStatusChangeEvent, + NgcNoCookieLawEvent +} from "ngx-cookieconsent"; import MonacoConfig from "../monaco-config"; import { DEFAULT_LANG } from "./CONSTANTS"; @@ -17,10 +22,14 @@ declare const AppAdminLTE: { initMainPage(); }; +import enMessages from 'devextreme/localization/messages/en.json'; +import esMessages from 'devextreme/localization/messages/es.json'; +import { locale, loadMessages, formatMessage } from 'devextreme/localization'; + @Component({ selector: "app-root", templateUrl: "./app.component.html", - styleUrls: [ "./app.component.scss" ] + styleUrls: ["./app.component.scss"] }) export class AppComponent implements OnInit, AfterViewInit, OnDestroy { @@ -53,7 +62,6 @@ export class AppComponent implements OnInit, AfterViewInit, OnDestroy { const cards: any = window.jQuery(".card"); cards.on("expanded.lte.cardwidget", () => { const resize = window.dispatchEvent(new Event("resize")); - console.log("resize", resize); }); } }); @@ -64,7 +72,7 @@ export class AppComponent implements OnInit, AfterViewInit, OnDestroy { AppAdminLTE.initMainPage(); this.lang = this.storageService.getItem("lang"); this.document.documentElement.lang = this.lang; - this.translate.addLangs([ "en", "sp" ]); + this.translate.addLangs(["en", "sp"]); this.translate.setDefaultLang(this.lang); this.popupOpenSubscription = this.ccService.popupOpen$.subscribe(() => { @@ -116,12 +124,13 @@ export class AppComponent implements OnInit, AfterViewInit, OnDestroy { this.storageService.setItem("lang", lang); this.lang = lang; this.translate.setDefaultLang(lang); + // this.updateDevExpressLocation(lang); this.updateCookiesConsentLang(); } private updateCookiesConsentLang() { this.translate - .get([ "cookie.header", "cookie.message", "cookie.dismiss", "cookie.allow", "cookie.deny", "cookie.link", "cookie.policy" ]) + .get(["cookie.header", "cookie.message", "cookie.dismiss", "cookie.allow", "cookie.deny", "cookie.link", "cookie.policy"]) .subscribe((data) => { this.ccService.getConfig().content = this.ccService.getConfig().content || {}; // Override default messages with the translated ones @@ -137,4 +146,26 @@ export class AppComponent implements OnInit, AfterViewInit, OnDestroy { this.ccService.init(this.ccService.getConfig()); // update config with translated messages }); } + + private updateDevExpressLocation(lang: TypeLang) { + if (lang === "en") { + loadMessages(enMessages); + locale("en") + } else if (lang === "sp") { + const esMessagesDefault = { + es: { + "dxFileManager-commandDelete": "Borrar", + "dxFileManager-rootDirectoryName": "Archivos", + "dxFileManager-commandRename": "Rename", + "dxFileManager-listDetailsColumnCaptionName": "Nombre", + "dxFileManager-listDetailsColumnCaptionDateModified": "Fecha modificada", + } + }; + const op1 = { ...esMessages.es }; + const op2 = { ...esMessagesDefault.es } + const copy = { ...op1, ...op2 }; + loadMessages(copy); + locale("es"); + } + } } diff --git a/src/app/components/monaco-editor/monaco-editor.component.ts b/src/app/components/monaco-editor/monaco-editor.component.ts index c5862ac..2d0d02a 100644 --- a/src/app/components/monaco-editor/monaco-editor.component.ts +++ b/src/app/components/monaco-editor/monaco-editor.component.ts @@ -179,13 +179,6 @@ export class MonacoEditorComponent implements OnInit, AfterViewInit, OnDestroy { this.printLine(this.iteratorLine); } - // public debugToLine(iteratorLine: number): void { - // console.log("debugToLine"); - // const lineCount = this.editor.getModel().getLineCount(); - // this.iteratorLine = iteratorLine % lineCount; - // this.printLine(this.iteratorLine); - // } - public debugNextLineWithTag(): void { const listOfTags = this.getListOfTags(); const listOfTags_filter = listOfTags.filter(value => value.line > this.iteratorLine); @@ -237,7 +230,6 @@ export class MonacoEditorComponent implements OnInit, AfterViewInit, OnDestroy { if (this.editorFile.$key === "") { throw new Error("Debes crear un fichero antes de guardarlo"); } - console.log("editorFile", this.editorFile) this.editorFile.content = this.editor?.getModel()?.getLinesContent()?.join("\n") ?? ""; } @@ -254,7 +246,6 @@ export class MonacoEditorComponent implements OnInit, AfterViewInit, OnDestroy { } public async setEditorFile(fileItem: InterfaceFileItem): Promise { - console.log(this.editorFile, fileItem); this.editorFile.$key = fileItem.$key; this.editorFile.f_id = fileItem.f_id; this.editorFile.e1_uid = fileItem.e1_uid; diff --git a/src/app/views/_account/login/login.view.ts b/src/app/views/_account/login/login.view.ts index 6a9eb6c..0999c25 100644 --- a/src/app/views/_account/login/login.view.ts +++ b/src/app/views/_account/login/login.view.ts @@ -46,7 +46,6 @@ export class LoginView implements OnInit { this.authService.getIsLoggingObservable().subscribe(async (isLogging) => { if (isLogging) { const isValid = await this.router.navigateByUrl("/"); - console.log("navigateByUrl('/') => IsValid", isValid); } }); } diff --git a/src/app/views/_auth/editor/editor.view.ts b/src/app/views/_auth/editor/editor.view.ts index d2ca481..c616b6b 100644 --- a/src/app/views/_auth/editor/editor.view.ts +++ b/src/app/views/_auth/editor/editor.view.ts @@ -62,11 +62,7 @@ export class EditorView implements OnInit, AfterViewInit, OnDestroy { JSON.parse(localStorage.getItem("interfaceFileItem")) ?? DEFAULT_INTERFACE_FILE_ITEM ) as InterfaceFileItem; - // console.log({ - // extra: this.extrasIDE?.interfaceFileItem, - // local: JSON.parse(localStorage.getItem("interfaceFileItem")), - // default_interface: DEFAULT_INTERFACE_FILE_ITEM - // }); + await this.monacoEditorComponent.setEditorFile(this.interfaceFileItem); await this.monacoEditorComponent.setEditorContent(this.interfaceFileItem.content); diff --git a/src/app/views/_auth/file-manager/file-manager.view.html b/src/app/views/_auth/file-manager/file-manager.view.html index a5812cc..02ef68b 100644 --- a/src/app/views/_auth/file-manager/file-manager.view.html +++ b/src/app/views/_auth/file-manager/file-manager.view.html @@ -10,7 +10,8 @@ - + @@ -37,13 +38,14 @@ - + - - + + @@ -60,11 +62,11 @@

{{'DEBUG' | translate}}

- - - - - + +
@@ -21,13 +22,14 @@

- 1. Readme + 1. {{'VIEWS.ABOUT.TITLE_README' | translate}} Readme

- +

@@ -36,13 +38,14 @@

- 2. License + 2. {{'VIEWS.ABOUT.TITLE_LICENSE' | translate}}

- +
@@ -51,13 +54,14 @@

- 3. Cookies + 3. {{'VIEWS.ABOUT.TITLE_COOKIES' | translate}}

- +
@@ -66,17 +70,73 @@

- 4. Changelog + 4. {{'VIEWS.ABOUT.TITLE_CHANGELOG' | translate}}

- +
+
+ +
+

+ 5. {{'VIEWS.ABOUT.TITLE_DEPENDENCIES' | translate}} +

+
+
+
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{ "TABLE.NAME" | translate }}{{ "TABLE.VERSION" | translate }}{{ "TABLE.LICENSE" | translate }}{{ "TABLE.AUTHOR" | translate }}{{ "TABLE.DESCRIPTION" | translate }}
{{data?.name}}{{data?.version}}{{data?.license}}{{data?.author?.name}}{{data?.description}}
{{data?.name}}{{data?.version}}{{data?.license}}{{data?.author?.name}}{{data?.description}}
+
+ +
+
+ +
+
+
+ +
diff --git a/src/app/views/_landing/about/about.view.ts b/src/app/views/_landing/about/about.view.ts index 4e73699..ce4f510 100644 --- a/src/app/views/_landing/about/about.view.ts +++ b/src/app/views/_landing/about/about.view.ts @@ -1,28 +1,39 @@ -import { Component, OnInit, Renderer2, ViewChild } from "@angular/core"; +import { AfterViewInit, Component, OnInit, Renderer2, ViewChild } from "@angular/core"; import { REGEX_IS_ABSOLUTE_HREF } from "../../../CONSTANTS"; import { MarkdownComponent, MarkdownService } from "ngx-markdown"; import { ViewportScroller } from "@angular/common"; import { Router } from "@angular/router"; +import npm from "../../../../../package.json"; +import { HttpClient } from "@angular/common/http"; +import { IPackageJson } from 'package-json-type'; @Component({ - selector: "app-about", + selector: "app-about", templateUrl: "./about.view.html", - styleUrls: [] + styleUrls: [] }) -export class AboutView implements OnInit { - @ViewChild("markdownComponentID_README", {static: false}) +export class AboutView implements OnInit, AfterViewInit { + + private readonly SERVER_API = "https://unpkg.com/" + + public dependencies = Object.entries(npm.dependencies) as unknown as [string, string]; + public devDependencies = Object.entries(npm.devDependencies) as unknown as [string, string]; + public dependenciesData: IPackageJson[] = [] + public devDependenciesData: IPackageJson[] = [] + + @ViewChild("markdownComponentID_README", { static: false }) private markdownComponentID_README: MarkdownComponent; - @ViewChild("markdownComponentID_LICENSE", {static: false}) + @ViewChild("markdownComponentID_LICENSE", { static: false }) private markdownComponentID_LICENSE: MarkdownComponent; - @ViewChild("markdownComponentID_ABOUT", {static: false}) + @ViewChild("markdownComponentID_ABOUT", { static: false }) private markdownComponentID_ABOUT: MarkdownComponent; - @ViewChild("markdownComponentID_COOKIES", {static: false}) + @ViewChild("markdownComponentID_COOKIES", { static: false }) private markdownComponentID_COOKIES: MarkdownComponent; - @ViewChild("markdownComponentID_CHANGELOG", {static: false}) + @ViewChild("markdownComponentID_CHANGELOG", { static: false }) private markdownComponentID_CHANGELOG: MarkdownComponent; private listenObj: any; @@ -30,12 +41,41 @@ export class AboutView implements OnInit { constructor(private markdownService: MarkdownService, private scroller: ViewportScroller, private router: Router, - private renderer: Renderer2) { + private renderer: Renderer2, + private httpClient: HttpClient) { } ngOnInit(): void { } + ngAfterViewInit(): void { + this.prepareData().then((r) => { + console.log("End"); + }) + } + + private async prepareData() { + let dependenciesData_Promises: Promise[] = []; + let devDependenciesData_Promises: Promise[] = []; + for (const dependency of this.dependencies) { + dependenciesData_Promises.push(this.queryNPMPackage(dependency[0], dependency[1])); + } + for (const dependency of this.devDependencies) { + devDependenciesData_Promises.push(this.queryNPMPackage(dependency[0], dependency[1])); + } + this.dependenciesData = await Promise.all(dependenciesData_Promises) + this.devDependenciesData = await Promise.all(devDependenciesData_Promises) + } + + private async queryNPMPackage(package_name: string, version: string): Promise { + return new Promise((resolve, reject) => { + const QUERY = this.SERVER_API + package_name + "@" + version + "/package.json"; + this.httpClient.get(QUERY).toPromise().then((response) => { + resolve(JSON.parse(JSON.stringify(response))); + }) + }) + } + public onMarkdownLoad(id: string) { let markdownComponent: MarkdownComponent; switch (id) { diff --git a/src/app/views/debug/debug-view.html b/src/app/views/debug/debug-view.html index e190f1c..d12bed9 100644 --- a/src/app/views/debug/debug-view.html +++ b/src/app/views/debug/debug-view.html @@ -1,6 +1,6 @@
-

Debug electron 1

+

Debug

+ + +
+ diff --git a/src/app/views/debug/debug-view.ts b/src/app/views/debug/debug-view.ts index ac9c30e..00d9d55 100644 --- a/src/app/views/debug/debug-view.ts +++ b/src/app/views/debug/debug-view.ts @@ -18,7 +18,7 @@ import { ElectronService } from "../../__core/services"; @Component({ selector: "app-debug", templateUrl: "./debug-view.html", - styleUrls: [ "./debug-view.scss" ] + styleUrls: ["./debug-view.scss"] }) export class DebugView implements OnInit, AfterViewInit { @@ -113,6 +113,12 @@ export class DebugView implements OnInit, AfterViewInit { ngAfterViewInit(): void { } + public async wait_resolve() { + return new Promise((resolve, reject) => { + setTimeout(resolve, 2000); + }); + } + public async notification() { this.electronService.ipcRenderer.send("thumder-notification"); } @@ -136,7 +142,7 @@ export class DebugView implements OnInit, AfterViewInit { pepe.key = Utils.uuidv4(); const value = JSON.stringify({ - items: [ documents, pepe ] + items: [documents, pepe] }); localStorage.setItem("FileSystem", value); } @@ -154,11 +160,11 @@ export class DebugView implements OnInit, AfterViewInit { async updateRegisterServer(typeRegister: TypeRegister, register: string, value: string): Promise { try { - const payload = JSON.stringify([ { + const payload = JSON.stringify([{ typeRegister: typeRegister, register: register, hexadecimalValue: value - } ] as TypeRegisterToUpdate[]); + }] as TypeRegisterToUpdate[]); this.socketProviderConnect.emitMessage("UpdateRegisterRequest", payload); } catch (error) { console.error(error); @@ -169,11 +175,11 @@ export class DebugView implements OnInit, AfterViewInit { async updateMemoryServer(memoryTypeData: TypeData, memoryAddress: TypeAddress, memoryValue: string): Promise { try { - const payload = JSON.stringify([ { + const payload = JSON.stringify([{ typeData: memoryTypeData, address: memoryAddress, value: memoryValue - } ] as TypeMemoryToUpdate[]); + }] as TypeMemoryToUpdate[]); this.socketProviderConnect.emitMessage("UpdateMemoryRequest", payload); } catch (error) { console.error(error); diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 307fbca..f2648e6 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -195,6 +195,13 @@ "TITLE_BREAKPOINT_SIMULATION": "Breakpoint", "MESSAGE_BREAKPOINT_SIMULATION": "Stop simulation" }, + "TABLE": { + "NAME": "Name", + "VERSION": "Version", + "LICENSE": "License", + "AUTHOR": "Author", + "DESCRIPTION": "Description" + }, "MODAL": { "TEXT": "Text", "INFO": "Info", @@ -221,6 +228,12 @@ "SEND_ME_A_NEW_PASSWORD": "Send me a new password" }, "ABOUT": { + "TITLE_ABOUT": "About", + "TITLE_README": "Readme", + "TITLE_LICENSE": "License", + "TITLE_COOKIES": "Cookies", + "TITLE_CHANGELOG": "Changelog", + "TITLE_DEPENDENCIES": "Dependencies", "LICENSE": "Copyright 2022 - Antonio Mudarra Machuca - \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." } } diff --git a/src/assets/i18n/sp.json b/src/assets/i18n/sp.json index 85874e3..3dd63d8 100644 --- a/src/assets/i18n/sp.json +++ b/src/assets/i18n/sp.json @@ -195,6 +195,13 @@ "TITLE_BREAKPOINT_SIMULATION": "Breakpoint", "MESSAGE_BREAKPOINT_SIMULATION": "Pausa la simulación" }, + "TABLE": { + "NAME": "Nombre", + "VERSION": "Versión", + "LICENSE": "Licencia", + "AUTHOR": "Autor", + "DESCRIPTION": "Descripción" + }, "MODAL": { "TEXT": "Texto", "INFO": "Información", @@ -221,6 +228,12 @@ "SEND_ME_A_NEW_PASSWORD": "Enviar una nueva contraseña" }, "ABOUT": { + "TITLE_ABOUT": "Sobre nosotros", + "TITLE_README": "Leeme", + "TITLE_LICENSE": "Licencia", + "TITLE_COOKIES": "Cookies", + "TITLE_CHANGELOG": "Cambios", + "TITLE_DEPENDENCIES": "Dependencias", "LICENSE": "Copyright 2022 - Antonio Mudarra Machuca - \n\nPor la presente se concede permiso, libre de cargos, a cualquier persona que obtenga una copia de este software y de los archivos de documentación asociados (el \"Software\"), a utilizar el Software sin restricción, incluyendo sin limitación los derechos a usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar, y/o vender copias del Software, y a permitir a las personas a las que se les proporcione el Software a hacer lo mismo, sujeto a las siguientes condiciones:\n\n\nEl aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.\n\n\nEL SOFTWARE SE PROPORCIONA \"COMO ESTA\", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A GARANTÍAS DE COMERCIALIZACIÓN, IDONEIDAD PARA UN PROPÓSITO PARTICULAR E INCUMPLIMIENTO. EN NINGÚN CASO LOS AUTORES O PROPIETARIOS DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑOS U OTRAS RESPONSABILIDADES, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O CUALQUIER OTRO MOTIVO, DERIVADAS DE, FUERA DE O EN CONEXIÓN CON EL SOFTWARE O SU USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE." } } diff --git a/src/styles.scss b/src/styles.scss index 731cf63..fa19fb6 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -402,3 +402,38 @@ markdown img { justify-items: center; align-items: center; } + +:root { + --slider-width: 400px; +} + +body { + background-color: gray; +} + +.slider { + width: var(--slider-width); + height: 1.1em; + overflow: hidden; + white-space: nowrap; +} + +.text { + font-size: 1em; + display: inline-block; + animation: slide 20s linear infinite; +} + +@keyframes slide { + 0% { + transform: translateX(0%); + } + + 50% { + transform: translateX(calc(-100% + 400px)); + } + + 100% { + transform: translateX(0%); + } +}