diff --git a/angular.json b/angular.json index 657c52f..8d3ff79 100644 --- a/angular.json +++ b/angular.json @@ -29,8 +29,8 @@ } ], "styles": [ - "src/assets/styles.scss", - "src/assets/tailwind.css" + "./src/assets/styles.scss", + "./src/assets/tailwind.css" ], "scripts": [] }, diff --git a/package-lock.json b/package-lock.json index e7c7d2f..ab4a46c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -709,7 +709,6 @@ "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.0.6.tgz", "integrity": "sha512-Yd8PF0dR37FAzqEcBHAyVCiSGMJOezSJe6rV/4BC6AVLfaZ7oZLl8CNVxKsod2UHd6rKxt1hzx05QdVcVvYNeA==", "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -726,7 +725,6 @@ "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.0.6.tgz", "integrity": "sha512-rBMzG7WnQMouFfDST+daNSAOVYdtw560645PhlxyVeIeHMlCm0j1jjBgVPGTBNpVgKRdT/sqbi6W6JYkY9mERA==", "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -740,7 +738,6 @@ "integrity": "sha512-UcIUx+fbn0VLlCBCIYxntAzWG3zPRUo0K7wvuK0MC6ZFCWawgewx9SdLLZTqcaWe1g5FRQlQeVQcFgHAO5R2Mw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "7.28.4", "@jridgewell/sourcemap-codec": "^1.4.14", @@ -773,7 +770,6 @@ "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.0.6.tgz", "integrity": "sha512-SvWbOkkrsqprYJSBmzQEWkWjfZB/jkRYyFp2ClMJBPqOLxP1a+i3Om2rolcNQjZPz87bs9FszwgRlXUy7sw5cQ==", "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -799,7 +795,6 @@ "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.0.6.tgz", "integrity": "sha512-aAkAAKuUrP8U7R4aH/HbmG/CXP90GlML77ECBI5b4qCSb+bvaTEYsaf85mCyTpr9jvGkia2LTe42hPcOuyzdsQ==", "license": "MIT", - "peer": true, "dependencies": { "@standard-schema/spec": "^1.0.0", "tslib": "^2.3.0" @@ -819,7 +814,6 @@ "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.0.6.tgz", "integrity": "sha512-tPk8rlUEBPXIUPRYq6Xu7QhJgKtnVr0dOHHuhyi70biKTupr5VikpZC5X9dy2Q3H3zYbK6MHC6384YMuwfU2kg==", "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -860,7 +854,6 @@ "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.0.6.tgz", "integrity": "sha512-HOfomKq7jRSgxt/uUvpdbB8RNaYuGB/FJQ3BfQCFfGw1O9L3B72b7Hilk6AcjCruul6cfv/kmT4EB6Vqi3dQtA==", "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -905,7 +898,6 @@ "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", @@ -3464,7 +3456,6 @@ "integrity": "sha512-X7/+dG9SLpSzRkwgG5/xiIzW0oMrV3C0HOa7YHG1WnrLK+vCQHfte4k/T80059YBdei29RBC3s+pSMvPJDU9/A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/checkbox": "^4.3.0", "@inquirer/confirm": "^5.1.19", @@ -6733,7 +6724,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -6821,7 +6811,6 @@ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -7450,7 +7439,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -8762,7 +8750,6 @@ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "iconv-lite": "^0.6.2" } @@ -9197,7 +9184,6 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -9591,7 +9577,6 @@ "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", @@ -11714,8 +11699,7 @@ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.4.0.tgz", "integrity": "sha512-T4fio3W++llLd7LGSGsioriDHgWyhoL6YTu4k37uwJLF7DzOzspz7mNxRoM3cQdLWtL/ebazQpIf/yZGJx/gzg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/jest-worker": { "version": "27.5.1", @@ -11877,7 +11861,6 @@ "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@colors/colors": "1.5.0", "body-parser": "^1.19.0", @@ -12367,7 +12350,6 @@ "integrity": "sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -14633,7 +14615,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -14782,7 +14763,6 @@ "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -16043,7 +16023,6 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "license": "Apache-2.0", - "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -16135,7 +16114,6 @@ "integrity": "sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", @@ -17205,8 +17183,7 @@ "version": "4.1.18", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/tailwindcss-primeui": { "version": "0.6.1", @@ -17263,7 +17240,6 @@ "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", @@ -17465,8 +17441,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/tsx": { "version": "4.21.0", @@ -18090,7 +18065,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18990,7 +18964,6 @@ "integrity": "sha512-5DeICTX8BVgNp6afSPYXAFjskIgWGlygQH58bcozPOXgo2r/6xx39Y1+cULZ3gTxUYQP88jmwLj2anu4Xaq84g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -19865,7 +19838,6 @@ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "devOptional": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10.0.0" }, @@ -20005,7 +19977,6 @@ "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/src/app/layout/component/app.menu.ts b/src/app.menu.ts similarity index 96% rename from src/app/layout/component/app.menu.ts rename to src/app.menu.ts index fe50158..956749a 100644 --- a/src/app/layout/component/app.menu.ts +++ b/src/app.menu.ts @@ -2,7 +2,7 @@ import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterModule } from '@angular/router'; import { MenuItem } from 'primeng/api'; -import { AppMenuitem } from './app.menuitem'; +import { AppMenuitem } from './app/layout/component/app.menuitem'; @Component({ selector: 'app-menu', @@ -25,7 +25,10 @@ export class AppMenu { this.model = [ { label: 'Home', - items: [{ label: 'Dashboard', icon: 'pi pi-fw pi-home', routerLink: ['/'] }] + items: [ + { label: 'Dashboard', icon: 'pi pi-fw pi-home', routerLink: ['/'] }, + { label: 'Teste', icon: 'pi pi-fw pi-home', routerLink: ['/teste'] } + ] }, { label: 'UI Components', diff --git a/src/app.routes.ts b/src/app.routes.ts index 96e5ba3..a45e6ee 100644 --- a/src/app.routes.ts +++ b/src/app.routes.ts @@ -4,6 +4,7 @@ import { Dashboard } from './app/pages/dashboard/dashboard'; import { Documentation } from './app/pages/documentation/documentation'; import { Landing } from './app/pages/landing/landing'; import { Notfound } from './app/pages/notfound/notfound'; +import { Teste } from '@/app/pages/teste/teste'; export const appRoutes: Routes = [ { @@ -13,6 +14,7 @@ export const appRoutes: Routes = [ { path: '', component: Dashboard }, { path: 'uikit', loadChildren: () => import('./app/pages/uikit/uikit.routes') }, { path: 'documentation', component: Documentation }, + { path: 'teste', component: Teste }, { path: 'pages', loadChildren: () => import('./app/pages/pages.routes') } ] }, diff --git a/src/app/core/domain/Project.ts b/src/app/core/domain/Project.ts new file mode 100644 index 0000000..64dbdab --- /dev/null +++ b/src/app/core/domain/Project.ts @@ -0,0 +1,6 @@ +export class Project { + description?: string; + nameProject?: string; + sequence?: number; + uuid?: string; +} diff --git a/src/app/core/service/coolify.service.ts b/src/app/core/service/coolify.service.ts new file mode 100644 index 0000000..bfa4983 --- /dev/null +++ b/src/app/core/service/coolify.service.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { catchError, Observable } from 'rxjs'; +import { Project } from '@/app/core/domain/Project'; + +@Injectable({ + providedIn: 'root' +}) +export class CoolifyService { + private baseUrl = 'http://localhost:8080/nexus'; + private urlProd = 'https://nexus-api.stackpanel.com.br'; + + constructor(private http: HttpClient) {} + + getProjects(): Observable { + return this.http.get(`${this.urlProd}/projects/buscar`); + } +} diff --git a/src/app/layout/component/app.sidebar.ts b/src/app/layout/component/app.sidebar.ts index 7c33954..b075eb7 100644 --- a/src/app/layout/component/app.sidebar.ts +++ b/src/app/layout/component/app.sidebar.ts @@ -1,13 +1,14 @@ import { Component, computed, effect, ElementRef, inject, OnDestroy, OnInit } from '@angular/core'; import { NavigationEnd, Router, RouterModule } from '@angular/router'; import { filter, Subject, takeUntil } from 'rxjs'; -import { AppMenu } from './app.menu'; + import { LayoutService } from '@/app/layout/service/layout.service'; +import { AppMenu } from '@/app.menu'; @Component({ selector: 'app-sidebar', standalone: true, - imports: [AppMenu, RouterModule], + imports: [AppMenu, RouterModule, AppMenu], template: `
@@ -105,11 +106,6 @@ export class AppSidebar implements OnInit, OnDestroy { const topbarButtonEl = document.querySelector('.topbar-start > button'); const sidebarEl = this.el.nativeElement; - return !( - sidebarEl?.isSameNode(event.target as Node) || - sidebarEl?.contains(event.target as Node) || - topbarButtonEl?.isSameNode(event.target as Node) || - topbarButtonEl?.contains(event.target as Node) - ); + return !(sidebarEl?.isSameNode(event.target as Node) || sidebarEl?.contains(event.target as Node) || topbarButtonEl?.isSameNode(event.target as Node) || topbarButtonEl?.contains(event.target as Node)); } } diff --git a/src/app/layout/component/app.topbar.ts b/src/app/layout/component/app.topbar.ts index 9baa461..448d196 100644 --- a/src/app/layout/component/app.topbar.ts +++ b/src/app/layout/component/app.topbar.ts @@ -33,7 +33,7 @@ import { LayoutService } from '@/app/layout/service/layout.service'; /> - SAKAI + NEXUS
diff --git a/src/app/layout/service/layout.service.ts b/src/app/layout/service/layout.service.ts index 7273298..c9fd01d 100644 --- a/src/app/layout/service/layout.service.ts +++ b/src/app/layout/service/layout.service.ts @@ -25,7 +25,7 @@ export class LayoutService { preset: 'Aura', primary: 'emerald', surface: null, - darkTheme: false, + darkTheme: true, menuMode: 'static' }); diff --git a/src/app/pages/pages.routes.ts b/src/app/pages/pages.routes.ts index 6561edc..fee5a1f 100644 --- a/src/app/pages/pages.routes.ts +++ b/src/app/pages/pages.routes.ts @@ -2,9 +2,11 @@ import { Routes } from '@angular/router'; import { Documentation } from './documentation/documentation'; import { Crud } from './crud/crud'; import { Empty } from './empty/empty'; +import { Teste } from '@/app/pages/teste/teste'; export default [ { path: 'documentation', component: Documentation }, + { path: 'teste', component: Teste }, { path: 'crud', component: Crud }, { path: 'empty', component: Empty }, { path: '**', redirectTo: '/notfound' } diff --git a/src/app/pages/service/product.service.ts b/src/app/pages/service/product.service.ts index cad353d..7738ef7 100644 --- a/src/app/pages/service/product.service.ts +++ b/src/app/pages/service/product.service.ts @@ -19,7 +19,7 @@ export interface Product { rating?: number; } -@Injectable() +@Injectable({ providedIn: 'root'}) export class ProductService { getProductsData() { return [ diff --git a/src/app/pages/teste/teste.html b/src/app/pages/teste/teste.html new file mode 100644 index 0000000..ce4284e --- /dev/null +++ b/src/app/pages/teste/teste.html @@ -0,0 +1,23 @@ +
+ + + + Code + Name + Category + Quantity + + + + + {{ project.sequence }} + {{ project.nameProject }} + {{ project.description }} + {{ project.uuid }} + + + + + + +
diff --git a/src/app/pages/teste/teste.scss b/src/app/pages/teste/teste.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/teste/teste.spec.ts b/src/app/pages/teste/teste.spec.ts new file mode 100644 index 0000000..8acd9b1 --- /dev/null +++ b/src/app/pages/teste/teste.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Teste } from './teste'; + +describe('Teste', () => { + let component: Teste; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Teste] + }) + .compileComponents(); + + fixture = TestBed.createComponent(Teste); + component = fixture.componentInstance; + await fixture.whenStable(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/teste/teste.ts b/src/app/pages/teste/teste.ts new file mode 100644 index 0000000..fd599b7 --- /dev/null +++ b/src/app/pages/teste/teste.ts @@ -0,0 +1,54 @@ +import { ChangeDetectorRef, Component, OnInit } from '@angular/core'; +import { Button } from 'primeng/button'; +import { Product, ProductService } from '@/app/pages/service/product.service'; +import { FormsModule } from '@angular/forms'; +import { TableModule } from 'primeng/table'; +import { CoolifyService } from '@/app/core/service/coolify.service'; +import { Project } from '@/app/core/domain/Project'; + +@Component({ + selector: 'app-teste', + imports: [FormsModule, TableModule, Button], + templateUrl: './teste.html', + styleUrl: './teste.scss' +}) +export class Teste implements OnInit { + layout: 'list' | 'grid' = 'list'; + + isLoadingTable: boolean = true; + + projects: Project[] = []; + project: Project = new Project(); + + constructor( + private productService: ProductService, + private nexusService: CoolifyService, + private cd: ChangeDetectorRef, + ) {} + + ngOnInit() { + + this.buscarProjects(); + } + + buscarProjects() { + this.isLoadingTable = true; + + this.nexusService.getProjects() + .subscribe((data) => { + if (data && data.length > 0) { + this.projects = [...data]; + this.isLoadingTable = false; + console.log(data); + this.cd.detectChanges(); + } + else { + console.log('Nada aqui', data); + } + }) + } + + detalhes(project: Project): void { + console.log('Projeto enviado: ',project); + } +}