@eui/cli 21.0.0-alpha.9 → 21.0.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/eui-cli.js +61 -41
- package/bin/scripts/build-app.js +12 -0
- package/bin/scripts/lint-app.js +22 -0
- package/bin/scripts/new.js +39 -0
- package/bin/scripts/serve-app.js +12 -0
- package/lib/app-utils/build.js +176 -0
- package/lib/app-utils/projects.js +41 -0
- package/lib/app-utils/serve.js +78 -0
- package/lib/build.js +14 -39
- package/lib/cli.js +22 -5
- package/lib/config.js +1 -0
- package/lib/generators.js +5 -8
- package/lib/install.js +7 -7
- package/lib/post-build.js +1 -3
- package/lib/skeletons/_angular/base/angular.json +12 -25
- package/lib/skeletons/_angular/base/eslint.config.js +43 -0
- package/lib/skeletons/_angular/base/package.json +29 -23
- package/lib/skeletons/_angular/base/src/app/app-starter.service.spec.ts +8 -6
- package/lib/skeletons/_angular/base/src/app/app.component.html +3 -3
- package/lib/skeletons/_angular/base/src/app/app.component.spec.ts +15 -13
- package/lib/skeletons/_angular/base/src/app/app.component.ts +2 -2
- package/lib/skeletons/_angular/base/src/app/features/home/home.component.html +1 -1
- package/lib/skeletons/_angular/base/src/app/features/home/home.component.ts +5 -3
- package/lib/skeletons/_angular/base/src/app/features/module1/components/page1/page1.component.html +1 -1
- package/lib/skeletons/_angular/base/src/app/features/module1/components/page2/page2.component.html +1 -1
- package/lib/skeletons/_angular/base/src/app/features/module1/module1.component.html +2 -4
- package/lib/skeletons/_angular/base/src/app/features/module2/module2.component.html +1 -1
- package/lib/skeletons/_angular/base/src/app/features/module2/module2.component.ts +1 -1
- package/lib/skeletons/_angular/base/src/dummy.spec.ts +2 -0
- package/lib/skeletons/_angular/base/src/karma.conf.js +42 -2
- package/lib/skeletons/_angular/base/src/tsconfig.app.json +3 -0
- package/lib/skeletons/_angular/base/src/tsconfig.spec.json +1 -5
- package/lib/skeletons/_angular/base/tsconfig.json +28 -24
- package/lib/skeletons/_angular/base-mobile/package.json +4 -4
- package/lib/skeletons/_angular/base-mobile/tsconfig.json +27 -0
- package/lib/skeletons/_angular/options/ecl-ec/src/app/app.component.ts +16 -16
- package/lib/skeletons/_angular/options/ecl-ec/src/app/features/home/home.component.ts +4 -4
- package/lib/skeletons/_angular/options/ecl-eu/src/app/app.component.ts +16 -16
- package/lib/skeletons/_angular/options/ecl-eu/src/app/features/home/home.component.ts +4 -4
- package/lib/skeletons/_angular/options/ecl-eu/src/app/shared/shared.module.ts +1 -5
- package/lib/skeletons/_angular/options/pnpm/package.json +72 -0
- package/lib/utils.js +204 -0
- package/package.json +10 -13
- package/.version.properties +0 -1
- package/lib/skeletons/_angular/base/.euirc.json +0 -8
- package/lib/skeletons/_angular/base/src/.eslintrc.json +0 -121
- package/lib/skeletons/web-symfony/myapp-web/angular.json +0 -169
- package/lib/skeletons/web-symfony/myapp-web/package.json +0 -23
- package/lib/skeletons/web-symfony/myapp-web/src/app/app-routing.module.ts +0 -18
- package/lib/skeletons/web-symfony/myapp-web/src/app/app.component.ts +0 -77
- package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/components/products.component.html +0 -160
- package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/components/products.component.scss +0 -0
- package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/components/products.component.ts +0 -104
- package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/models/product.model.ts +0 -6
- package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/products-routing.module.ts +0 -16
- package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/products.module.ts +0 -16
- package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/services/products.service.ts +0 -29
- package/lib/skeletons/web-symfony/myapp-web/src/environments/environment.ts +0 -17
- package/lib/skeletons/web-symfony/myapp-web-rest/.env +0 -28
- package/lib/skeletons/web-symfony/myapp-web-rest/bin/console +0 -42
- package/lib/skeletons/web-symfony/myapp-web-rest/composer.json +0 -67
- package/lib/skeletons/web-symfony/myapp-web-rest/composer.lock +0 -3572
- package/lib/skeletons/web-symfony/myapp-web-rest/config/bootstrap.php +0 -21
- package/lib/skeletons/web-symfony/myapp-web-rest/config/bundles.php +0 -12
- package/lib/skeletons/web-symfony/myapp-web-rest/config/config.yml +0 -0
- package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/cache.yaml +0 -19
- package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/dev/routing.yaml +0 -3
- package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/doctrine.yaml +0 -29
- package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/doctrine_migrations.yaml +0 -5
- package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/framework.yaml +0 -17
- package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/prod/doctrine.yaml +0 -32
- package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/routing.yaml +0 -4
- package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/sensio_framework_extra.yaml +0 -3
- package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/test/framework.yaml +0 -4
- package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/test/routing.yaml +0 -3
- package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/twig.yaml +0 -4
- package/lib/skeletons/web-symfony/myapp-web-rest/config/routes/annotations.yaml +0 -3
- package/lib/skeletons/web-symfony/myapp-web-rest/config/routes/dev/twig.yaml +0 -3
- package/lib/skeletons/web-symfony/myapp-web-rest/config/routes.yaml +0 -3
- package/lib/skeletons/web-symfony/myapp-web-rest/config/services.yaml +0 -27
- package/lib/skeletons/web-symfony/myapp-web-rest/public/index.php +0 -27
- package/lib/skeletons/web-symfony/myapp-web-rest/src/Controller/ProductController.php +0 -196
- package/lib/skeletons/web-symfony/myapp-web-rest/src/Entity/Product.php +0 -99
- package/lib/skeletons/web-symfony/myapp-web-rest/src/Kernel.php +0 -53
- package/lib/skeletons/web-symfony/myapp-web-rest/src/Migrations/Version20190604101623.php +0 -31
- package/lib/skeletons/web-symfony/myapp-web-rest/src/Migrations/Version20190604101638.php +0 -35
- package/lib/skeletons/web-symfony/myapp-web-rest/src/Repository/ProductRepository.php +0 -51
- package/lib/skeletons/web-symfony/myapp-web-rest/symfony.lock +0 -274
- package/lib/skeletons/web-symfony/myapp-web-rest/templates/base.html.twig +0 -12
- package/lib/skeletons/web-symfony/myapp-web-rest/templates/lucky/number.html.twig +0 -1
- package/lib/skeletons/web-symfony/myapp-web-rest/templates/product/index.html.twig +0 -20
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
|
3
|
-
"version": 1,
|
|
4
|
-
"newProjectRoot": "projects",
|
|
5
|
-
"defaultProject": "app",
|
|
6
|
-
"cli": {
|
|
7
|
-
"analytics": false
|
|
8
|
-
},
|
|
9
|
-
"projects": {
|
|
10
|
-
"app": {
|
|
11
|
-
"root": "",
|
|
12
|
-
"sourceRoot": "src",
|
|
13
|
-
"projectType": "application",
|
|
14
|
-
"prefix": "app",
|
|
15
|
-
"schematics": {
|
|
16
|
-
"@schematics/angular:component": {
|
|
17
|
-
"styleext": "scss"
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
"architect": {
|
|
21
|
-
"build": {
|
|
22
|
-
"builder": "ngx-build-plus:build",
|
|
23
|
-
"options": {
|
|
24
|
-
"outputPath": "dist",
|
|
25
|
-
"index": "src/index.html",
|
|
26
|
-
"main": "src/main.ts",
|
|
27
|
-
"polyfills": "src/polyfills.ts",
|
|
28
|
-
"tsConfig": "src/tsconfig.app.json",
|
|
29
|
-
"assets": [
|
|
30
|
-
"src/favicon.ico",
|
|
31
|
-
"src/assets",
|
|
32
|
-
{
|
|
33
|
-
"glob": "**/*",
|
|
34
|
-
"input": "node_modules/@eui/core/assets/",
|
|
35
|
-
"output": "./assets"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"glob": "**/*",
|
|
39
|
-
"input": "node_modules/@eui/styles/dist/assets/images",
|
|
40
|
-
"output": "./assets/images"
|
|
41
|
-
}
|
|
42
|
-
],
|
|
43
|
-
"styles": [
|
|
44
|
-
"node_modules/@eui/styles/dist/styles/eui.css",
|
|
45
|
-
"node_modules/@eui/styles/dist/styles/eui-utilities.css",
|
|
46
|
-
"node_modules/@eui/styles/dist/styles/eui-legacy-bootstrap-utilities.css",
|
|
47
|
-
"src/styles.scss"
|
|
48
|
-
]
|
|
49
|
-
},
|
|
50
|
-
"configurations": {
|
|
51
|
-
"production": {
|
|
52
|
-
"fileReplacements": [
|
|
53
|
-
{
|
|
54
|
-
"replace": "src/environments/environment.ts",
|
|
55
|
-
"with": "src/environments/environment.prod.ts"
|
|
56
|
-
}
|
|
57
|
-
],
|
|
58
|
-
"optimization": true,
|
|
59
|
-
"outputHashing": "all",
|
|
60
|
-
"sourceMap": false,
|
|
61
|
-
"extractCss": true,
|
|
62
|
-
"namedChunks": true,
|
|
63
|
-
"aot": true,
|
|
64
|
-
"extractLicenses": true,
|
|
65
|
-
"vendorChunk": false,
|
|
66
|
-
"buildOptimizer": true,
|
|
67
|
-
"budgets": [
|
|
68
|
-
{
|
|
69
|
-
"type": "initial",
|
|
70
|
-
"maximumWarning": "3mb",
|
|
71
|
-
"maximumError": "5mb"
|
|
72
|
-
}
|
|
73
|
-
]
|
|
74
|
-
},
|
|
75
|
-
"dev": {
|
|
76
|
-
"fileReplacements": [
|
|
77
|
-
{
|
|
78
|
-
"replace": "src/environments/environment.ts",
|
|
79
|
-
"with": "src/environments/environment.dev.ts"
|
|
80
|
-
}
|
|
81
|
-
]
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
"serve": {
|
|
86
|
-
"builder": "@angular-devkit/build-angular:dev-server",
|
|
87
|
-
"options": {
|
|
88
|
-
"browserTarget": "app:build"
|
|
89
|
-
},
|
|
90
|
-
"configurations": {
|
|
91
|
-
"proxy-mock": {
|
|
92
|
-
"browserTarget": "app:build",
|
|
93
|
-
"proxyConfig": "proxy-mock.conf.json"
|
|
94
|
-
},
|
|
95
|
-
"proxy": {
|
|
96
|
-
"browserTarget": "app:build",
|
|
97
|
-
"proxyConfig": "proxy.conf.json"
|
|
98
|
-
},
|
|
99
|
-
"production": {
|
|
100
|
-
"browserTarget": "app:build:production"
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
"test": {
|
|
105
|
-
"builder": "@angular-devkit/build-angular:karma",
|
|
106
|
-
"options": {
|
|
107
|
-
"main": "src/test.ts",
|
|
108
|
-
"polyfills": "src/polyfills.ts",
|
|
109
|
-
"tsConfig": "src/tsconfig.spec.json",
|
|
110
|
-
"karmaConfig": "src/karma.conf.js",
|
|
111
|
-
"styles": [
|
|
112
|
-
"src/styles.scss"
|
|
113
|
-
],
|
|
114
|
-
"scripts": [],
|
|
115
|
-
"assets": [
|
|
116
|
-
"src/favicon.ico",
|
|
117
|
-
"src/assets",
|
|
118
|
-
{
|
|
119
|
-
"glob": "**/*",
|
|
120
|
-
"input": "node_modules/@eui/core/assets/",
|
|
121
|
-
"output": "./assets"
|
|
122
|
-
}
|
|
123
|
-
]
|
|
124
|
-
}
|
|
125
|
-
},
|
|
126
|
-
"lint": {
|
|
127
|
-
"builder": "@angular-devkit/build-angular:tslint",
|
|
128
|
-
"options": {
|
|
129
|
-
"tsConfig": [
|
|
130
|
-
"src/tsconfig.app.json",
|
|
131
|
-
"src/tsconfig.spec.json"
|
|
132
|
-
],
|
|
133
|
-
"exclude": [
|
|
134
|
-
"**/node_modules/**"
|
|
135
|
-
]
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
},
|
|
140
|
-
"app-e2e": {
|
|
141
|
-
"root": "e2e/",
|
|
142
|
-
"projectType": "application",
|
|
143
|
-
"prefix": "",
|
|
144
|
-
"architect": {
|
|
145
|
-
"e2e": {
|
|
146
|
-
"builder": "@angular-devkit/build-angular:protractor",
|
|
147
|
-
"options": {
|
|
148
|
-
"protractorConfig": "e2e/protractor.conf.js",
|
|
149
|
-
"devServerTarget": "app:serve"
|
|
150
|
-
},
|
|
151
|
-
"configurations": {
|
|
152
|
-
"production": {
|
|
153
|
-
"devServerTarget": "app:serve:production"
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
},
|
|
157
|
-
"lint": {
|
|
158
|
-
"builder": "@angular-devkit/build-angular:tslint",
|
|
159
|
-
"options": {
|
|
160
|
-
"tsConfig": "e2e/tsconfig.e2e.json",
|
|
161
|
-
"exclude": [
|
|
162
|
-
"**/node_modules/**"
|
|
163
|
-
]
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "eui-angular-app",
|
|
3
|
-
"version": "21.0.0-alpha.8",
|
|
4
|
-
"license": "EUPL-1.1",
|
|
5
|
-
"description": "eUI JEE Symfony app scripts",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"ng": "ng",
|
|
8
|
-
"e2e": "ng e2e",
|
|
9
|
-
"stylelint": "stylelint \"src/**/*.scss\"",
|
|
10
|
-
"tslint": "tslint \"src/**/*.ts\"",
|
|
11
|
-
"clean": "rimraf out-tsc dist packages/**/dist/** packages/**/out-tsc/** packages/**/src/lib/**/*.js packages/**/src/lib/**/*.js.map",
|
|
12
|
-
"start-symfony": "eui-scripts start-symfony --configuration=dev",
|
|
13
|
-
"start-serve": "eui-scripts serve-app --configuration=proxy-mock",
|
|
14
|
-
"start": "npm run clean && npm-run-all --parallel start-symfony start-serve",
|
|
15
|
-
"start-mean": "npm run clean && npm-run-all --parallel start-mock-server-mean start-serve",
|
|
16
|
-
"start-proxy": "npm run clean && eui-scripts serve-app --configuration=proxy",
|
|
17
|
-
"generate-changelog": "eui-scripts generate-changelog"
|
|
18
|
-
},
|
|
19
|
-
"private": true,
|
|
20
|
-
"dependencies": {
|
|
21
|
-
"@eui/deps-base": "21.0.0-alpha.8"
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { RouterModule, Routes } from '@angular/router';
|
|
3
|
-
|
|
4
|
-
const routes: Routes = [
|
|
5
|
-
{ path: '', redirectTo: 'screen/home', pathMatch: 'full' },
|
|
6
|
-
{ path: 'index.jsp', redirectTo: 'screen/home' },
|
|
7
|
-
{ path: 'screen/home', loadChildren: './features/home/home.module#Module' },
|
|
8
|
-
{ path: 'screen/products', loadChildren: './features/products/products.module#ProductsModule' },
|
|
9
|
-
{ path: 'screen/module1', loadChildren: './features/module1/module1.module#Module' },
|
|
10
|
-
{ path: 'screen/module2', loadChildren: './features/module2/module2.module#Module' }
|
|
11
|
-
];
|
|
12
|
-
|
|
13
|
-
@NgModule({
|
|
14
|
-
imports: [
|
|
15
|
-
RouterModule.forRoot(routes),
|
|
16
|
-
],
|
|
17
|
-
})
|
|
18
|
-
export class AppRoutingModule {}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { Component, OnInit } from '@angular/core';
|
|
2
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
3
|
-
import { Observable } from 'rxjs/Observable';
|
|
4
|
-
import { Store } from '@ngrx/store';
|
|
5
|
-
|
|
6
|
-
import { UserState, getUserState, UxLink, UxLanguage } from '@eui/core';
|
|
7
|
-
|
|
8
|
-
@Component({
|
|
9
|
-
selector: 'app-root',
|
|
10
|
-
templateUrl: './app.component.html'
|
|
11
|
-
})
|
|
12
|
-
export class AppComponent implements OnInit {
|
|
13
|
-
userState: Observable<UserState>;
|
|
14
|
-
|
|
15
|
-
menuLinks: UxLink[] = [];
|
|
16
|
-
notificationLinks: UxLink[] = [];
|
|
17
|
-
|
|
18
|
-
constructor(
|
|
19
|
-
private translateService: TranslateService,
|
|
20
|
-
private store: Store<any>,
|
|
21
|
-
) {
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
ngOnInit() {
|
|
25
|
-
this.userState = <any>this.store.select(getUserState);
|
|
26
|
-
|
|
27
|
-
this._createMenuLinks();
|
|
28
|
-
this._createNotifications();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
onLanguageChanged(language: UxLanguage) {
|
|
32
|
-
this.translateService.use(language.code);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
private _createMenuLinks() {
|
|
36
|
-
this.menuLinks = [
|
|
37
|
-
new UxLink(
|
|
38
|
-
{
|
|
39
|
-
label: 'HOME', url: '/screen/home', isHome: true
|
|
40
|
-
}
|
|
41
|
-
),
|
|
42
|
-
new UxLink(
|
|
43
|
-
{
|
|
44
|
-
label: 'Module1', url: '/screen/module1', children: [
|
|
45
|
-
new UxLink({ label: 'disabled item', disabled: true }),
|
|
46
|
-
new UxLink({ label: 'Page 1', url: '/screen/module1/page1' }),
|
|
47
|
-
new UxLink({ label: 'Page 2', url: '/screen/module1/page2' })
|
|
48
|
-
]
|
|
49
|
-
}
|
|
50
|
-
),
|
|
51
|
-
new UxLink(
|
|
52
|
-
{
|
|
53
|
-
label: 'Module2', url: '/screen/module2'
|
|
54
|
-
}
|
|
55
|
-
),
|
|
56
|
-
new UxLink(
|
|
57
|
-
{
|
|
58
|
-
label: 'Products', url: '/screen/products'
|
|
59
|
-
}
|
|
60
|
-
)
|
|
61
|
-
];
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
private _createNotifications() {
|
|
65
|
-
this.notificationLinks = [
|
|
66
|
-
new UxLink(
|
|
67
|
-
{ label: 'Notification title', subLabel: 'This is the description of the noficiation' }
|
|
68
|
-
),
|
|
69
|
-
new UxLink(
|
|
70
|
-
{ label: 'Notification title', subLabel: 'This is the description of the noficiation' }
|
|
71
|
-
),
|
|
72
|
-
new UxLink(
|
|
73
|
-
{ label: 'Notification title', subLabel: 'This is the description of the noficiation' }
|
|
74
|
-
),
|
|
75
|
-
];
|
|
76
|
-
}
|
|
77
|
-
}
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
<div class="page-title">
|
|
2
|
-
List of products
|
|
3
|
-
</div>
|
|
4
|
-
|
|
5
|
-
<div class="row">
|
|
6
|
-
<div class="col-sm-8">
|
|
7
|
-
<ux-panel label="List of Products" [isBlocked]="mode === 'load'" contentHeight="60vh">
|
|
8
|
-
|
|
9
|
-
<uxPanelHeaderRightContent>
|
|
10
|
-
<div class="flex-container">
|
|
11
|
-
<ux-button-group [hasPairedIcon]="true" styleClass="ml-3" (clicked)="addItem()">
|
|
12
|
-
<ux-button-group-item label="Create new product"></ux-button-group-item>
|
|
13
|
-
<ux-button-group-item iconClass="fa fa-plus"></ux-button-group-item>
|
|
14
|
-
</ux-button-group>
|
|
15
|
-
</div>
|
|
16
|
-
</uxPanelHeaderRightContent>
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
<ng-container *ngIf="products && mode !== 'load'; else loading">
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
<p-table [value]="products" [paginator]="true" [rows]="10" [pageLinks]="3" [rowsPerPageOptions]="[5,10,20]" >
|
|
23
|
-
<ng-template pTemplate="header" let-columns>
|
|
24
|
-
<tr>
|
|
25
|
-
<th [pSortableColumn]="'productId'">ID <p-sortIcon [field]="'productId'"></p-sortIcon></th>
|
|
26
|
-
<th [pSortableColumn]="'name'">Name <p-sortIcon [field]="'name'"></p-sortIcon></th>
|
|
27
|
-
<th [pSortableColumn]="'price'">Price <p-sortIcon [field]="'price'"></p-sortIcon></th>
|
|
28
|
-
<th [pSortableColumn]="'description'">Description <p-sortIcon [field]="'description'"></p-sortIcon></th>
|
|
29
|
-
<th class="actionsColumn">ACTIONS</th>
|
|
30
|
-
</tr>
|
|
31
|
-
</ng-template>
|
|
32
|
-
|
|
33
|
-
<ng-template pTemplate="body" let-rowData let-columns="columns" let-rowIndex="rowIndex" >
|
|
34
|
-
<tr [pSelectableRow]="rowData" [pSelectableRowIndex]="rowIndex">
|
|
35
|
-
<td>{{rowData.productId}}</td>
|
|
36
|
-
<td>
|
|
37
|
-
<ux-badge typeClass="default">
|
|
38
|
-
{{ rowData.name }}
|
|
39
|
-
</ux-badge>
|
|
40
|
-
</td>
|
|
41
|
-
<td>{{rowData.price}}</td>
|
|
42
|
-
<td>{{rowData.description}}</td>
|
|
43
|
-
|
|
44
|
-
<td class="actionsColumn">
|
|
45
|
-
<div class="flex-container justify-content-center">
|
|
46
|
-
<ux-button [isFlat]="true" iconClass="fa fa-pencil" typeClass="info" (click)="editProduct(rowData)"></ux-button>
|
|
47
|
-
<ux-button [isFlat]="true" iconClass="fa fa-trash-o" typeClass="danger" (click)="deleteProduct(rowData.productId)"></ux-button>
|
|
48
|
-
</div>
|
|
49
|
-
</td>
|
|
50
|
-
</tr>
|
|
51
|
-
</ng-template>
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
</p-table>
|
|
55
|
-
</ng-container>
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
<ng-template #loading>
|
|
60
|
-
<ng-container *ngIf="! serviceError; else error">
|
|
61
|
-
Loading...
|
|
62
|
-
</ng-container>
|
|
63
|
-
</ng-template>
|
|
64
|
-
|
|
65
|
-
<ng-template #error>
|
|
66
|
-
<ux-alert typeClass="warning">
|
|
67
|
-
Unable to retrieve the list of products; please <a (click)="loadProducts()">try again</a> later.<br/>
|
|
68
|
-
If the problem persists, please contact the administrator.<br/>
|
|
69
|
-
<br/>
|
|
70
|
-
<a (click)="serviceErrorVisible = !serviceErrorVisible">
|
|
71
|
-
<span *ngIf="!serviceErrorVisible">Show technical reason</span>
|
|
72
|
-
<span *ngIf="serviceErrorVisible">Hide technical reason</span>
|
|
73
|
-
</a>
|
|
74
|
-
<pre *ngIf="serviceErrorVisible">{{serviceError.message}}</pre>
|
|
75
|
-
</ux-alert>
|
|
76
|
-
</ng-template>
|
|
77
|
-
</ux-panel>
|
|
78
|
-
</div>
|
|
79
|
-
|
|
80
|
-
<div class="col-sm-4">
|
|
81
|
-
<ux-panel label="Products" [isBlocked]="mode === 'load'" contentHeight="60vh">
|
|
82
|
-
<pre>{{products | json}}</pre>
|
|
83
|
-
</ux-panel>
|
|
84
|
-
</div>
|
|
85
|
-
</div>
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
<!-- MODAL EDIT / NEW-->
|
|
90
|
-
<ux-modal id="modal1b" titleLabel="{{actionLabel}}" [isFooterVisible]="false" [isSizeSmall]="true" (onDismiss)="onModalDismiss($event)" (onAccept)="onModalAccept($event)">
|
|
91
|
-
<uxModalBody>
|
|
92
|
-
<form [formGroup]="formInput" *ngIf="ItemSelected">
|
|
93
|
-
<div class="row">
|
|
94
|
-
<div class="col-10">
|
|
95
|
-
<ux-form-group label="Name:" isRequired="true">
|
|
96
|
-
<ux-form-control [(ngModel)]="ItemSelected.name" formControlName="name" placeholderLabel="es: iPad Pro 512GB" ></ux-form-control>
|
|
97
|
-
</ux-form-group>
|
|
98
|
-
|
|
99
|
-
<ux-form-group label="Price:" isRequired="true">
|
|
100
|
-
<ux-form-control [(ngModel)]="ItemSelected.price" [isNumber]="true" formControlName="price" placeholderLabel="price"></ux-form-control>
|
|
101
|
-
</ux-form-group>
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
<ux-form-group label="Description:" isRequired=true>
|
|
105
|
-
<ux-form-control [(ngModel)]="ItemSelected.description" [isTextarea]="true" formControlName="description" placeholderLabel="description"></ux-form-control>
|
|
106
|
-
</ux-form-group>
|
|
107
|
-
|
|
108
|
-
<div class="text-right mt-3">
|
|
109
|
-
<ux-button (click)="onUpdateSubmit(ItemSelected)" class='ml-3' [isDisabled]="!formInput.valid">
|
|
110
|
-
Update Product
|
|
111
|
-
</ux-button>
|
|
112
|
-
</div>
|
|
113
|
-
|
|
114
|
-
</div>
|
|
115
|
-
</div>
|
|
116
|
-
</form>
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
<form [formGroup]="formInput" *ngIf="!ItemSelected">
|
|
120
|
-
<div class="row">
|
|
121
|
-
<div class="col-10">
|
|
122
|
-
<ux-form-group label="Name:" isRequired="true">
|
|
123
|
-
<ux-form-control formControlName="name" placeholderLabel="es: iPad Pro 512GB" ></ux-form-control>
|
|
124
|
-
</ux-form-group>
|
|
125
|
-
|
|
126
|
-
<ux-form-group label="Price:" isRequired="true">
|
|
127
|
-
<ux-form-control [isNumber]="true" formControlName="price" placeholderLabel="price"></ux-form-control>
|
|
128
|
-
</ux-form-group>
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
<ux-form-group label="Description:" isRequired=true>
|
|
132
|
-
<ux-form-control [isTextarea]="true" formControlName="description" placeholderLabel="description"></ux-form-control>
|
|
133
|
-
</ux-form-group>
|
|
134
|
-
|
|
135
|
-
<div class="text-right mt-3">
|
|
136
|
-
<ux-button (click)="onSubmit()" class='ml-3' [isDisabled]="!formInput.valid">
|
|
137
|
-
Save Product
|
|
138
|
-
</ux-button>
|
|
139
|
-
</div>
|
|
140
|
-
|
|
141
|
-
</div>
|
|
142
|
-
</div>
|
|
143
|
-
</form>
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
</uxModalBody>
|
|
149
|
-
</ux-modal>
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
<!-- MODAL DELETE -->
|
|
153
|
-
<ux-modal id="modaldelete" titleLabel="Modal title" [isSizeSmall]="true"
|
|
154
|
-
[isHandleCloseOnDismiss]="false" [isHandleCloseOnAccept]="false" [isHandleCloseOnClose]="false"
|
|
155
|
-
(onDismiss)="onModalDismiss($event)" (onAccept)="onModalAccept($event)" (onClose)="onModalClose($event)">
|
|
156
|
-
<uxModalBody>
|
|
157
|
-
<p>Are you sure to delete it?</p>
|
|
158
|
-
</uxModalBody>
|
|
159
|
-
</ux-modal>
|
|
160
|
-
|
|
File without changes
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { Component, OnInit } from '@angular/core';
|
|
2
|
-
import { ProductsService } from '../services/products.service';
|
|
3
|
-
import { Product } from '../models/product.model';
|
|
4
|
-
import { UxService } from '@eui/core';
|
|
5
|
-
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
|
|
6
|
-
|
|
7
|
-
@Component({
|
|
8
|
-
templateUrl: './products.component.html',
|
|
9
|
-
styleUrls: ['./products.component.scss'],
|
|
10
|
-
})
|
|
11
|
-
export class ProductsComponent implements OnInit {
|
|
12
|
-
formInput: FormGroup;
|
|
13
|
-
product: Product;
|
|
14
|
-
products: Array<Product>;
|
|
15
|
-
actionLabel: string;
|
|
16
|
-
serviceError: null;
|
|
17
|
-
IdSelected: number;
|
|
18
|
-
ItemSelected: Product;
|
|
19
|
-
mode = null;
|
|
20
|
-
modes: string [] = [];
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
constructor(protected productsService: ProductsService, public uxService: UxService, private fb: FormBuilder) {
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
ngOnInit() {
|
|
28
|
-
this.loadProducts();
|
|
29
|
-
this.buildForm();
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
loadProducts() {
|
|
34
|
-
this.serviceError = null;
|
|
35
|
-
this.productsService.loadProducts().subscribe(products => {
|
|
36
|
-
this.products = products.items;
|
|
37
|
-
}, error => {
|
|
38
|
-
this.serviceError = error;
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
buildForm(): void {
|
|
43
|
-
|
|
44
|
-
this.formInput = this.fb.group({
|
|
45
|
-
'name': [null , [Validators.required]],
|
|
46
|
-
'price': [null , [Validators.required]],
|
|
47
|
-
'description': [null , [Validators.required]]
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
editProduct(item: Product) {
|
|
52
|
-
this.ItemSelected = item;
|
|
53
|
-
this.actionLabel = 'Edit product';
|
|
54
|
-
this.uxService.openModal('modal1b');
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
deleteProduct(id: number) {
|
|
58
|
-
this.IdSelected = id;
|
|
59
|
-
this.uxService.openModal('modaldelete');
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
onModalAccept(event) {
|
|
63
|
-
this.productsService.deleteProduct(this.IdSelected).subscribe(product => {
|
|
64
|
-
let index = this.products.findIndex(item => item['productId'] === product['productId']);
|
|
65
|
-
this.products.splice(index, 1);
|
|
66
|
-
});
|
|
67
|
-
this.uxService.closeModal('modaldelete');
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
onModalDismiss(event) {
|
|
71
|
-
this.uxService.closeModal('modaldelete');
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
onModalClose(event) {
|
|
75
|
-
this.uxService.closeModal('modaldelete');
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
addItem() {
|
|
79
|
-
this.ItemSelected = null;
|
|
80
|
-
this.actionLabel = 'New product';
|
|
81
|
-
this.formInput.reset();
|
|
82
|
-
this.uxService.openModal('modal1b');
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
onSubmit() {
|
|
86
|
-
this.product = new Product(this.formInput.value);
|
|
87
|
-
this.productsService.addProduct(this.product).subscribe(product => {
|
|
88
|
-
this.products.push(product);
|
|
89
|
-
this.uxService.closeModal('modal1b');
|
|
90
|
-
}, error => {
|
|
91
|
-
this.serviceError = error;
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
onUpdateSubmit(ItemSelected: Product) {
|
|
96
|
-
this.product = new Product(this.formInput.value);
|
|
97
|
-
this.productsService.updateProduct(ItemSelected).subscribe(product => {
|
|
98
|
-
this.uxService.closeModal('modal1b');
|
|
99
|
-
}, error => {
|
|
100
|
-
this.serviceError = error;
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
}
|
package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/products-routing.module.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { RouterModule } from '@angular/router';
|
|
3
|
-
import { ProductsComponent } from './components/products.component';
|
|
4
|
-
|
|
5
|
-
@NgModule({
|
|
6
|
-
imports: [
|
|
7
|
-
RouterModule.forChild([
|
|
8
|
-
{ path: '', component: ProductsComponent },
|
|
9
|
-
])
|
|
10
|
-
],
|
|
11
|
-
exports: [
|
|
12
|
-
RouterModule
|
|
13
|
-
]
|
|
14
|
-
})
|
|
15
|
-
export class ProductsRoutingModule {
|
|
16
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { PaginatorModule } from 'primeng/paginator';
|
|
4
|
-
import { UxAllModule } from '@eui/core';
|
|
5
|
-
import { ProductsComponent } from './components/products.component';
|
|
6
|
-
import { ProductsService } from './services/products.service';
|
|
7
|
-
import { ProductsRoutingModule } from './products-routing.module';
|
|
8
|
-
import { TableModule } from 'primeng/table';
|
|
9
|
-
|
|
10
|
-
@NgModule({
|
|
11
|
-
imports: [CommonModule, UxAllModule, ProductsRoutingModule, PaginatorModule, TableModule],
|
|
12
|
-
declarations: [ProductsComponent],
|
|
13
|
-
providers: [ProductsService]
|
|
14
|
-
})
|
|
15
|
-
export class ProductsModule {
|
|
16
|
-
}
|
package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/services/products.service.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
3
|
-
import { Observable } from 'rxjs/Observable';
|
|
4
|
-
import { Product } from '../models/product.model';
|
|
5
|
-
import { environment } from '../../../../environments/environment';
|
|
6
|
-
import { delay } from 'rxjs/operators';
|
|
7
|
-
|
|
8
|
-
@Injectable()
|
|
9
|
-
export class ProductsService {
|
|
10
|
-
constructor(protected http: HttpClient) {
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
loadProducts(): Observable<any> {
|
|
14
|
-
return this.http.get(environment.apiBaseUrl + '/products').pipe(delay(100));
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
deleteProduct(id: number) {
|
|
18
|
-
return this.http.delete(environment.apiBaseUrl + '/product/delete/' + id );
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
addProduct(item: Product): Observable<Product> {
|
|
22
|
-
return this.http.post(environment.apiBaseUrl + '/product', item);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
updateProduct(item: Product): Observable<Product> {
|
|
26
|
-
return this.http.post(environment.apiBaseUrl + '/product', item);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// used by serve / when no configuration is provided on the build script
|
|
2
|
-
// run npm run build
|
|
3
|
-
|
|
4
|
-
export const environment = {
|
|
5
|
-
production: false,
|
|
6
|
-
enableDevToolRedux: true,
|
|
7
|
-
apiBaseUrl: 'http://localhost:8000/api',
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
/*
|
|
11
|
-
* For easier debugging in development mode, you can import the following file
|
|
12
|
-
* to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
|
|
13
|
-
*
|
|
14
|
-
* This import should be commented out in production mode because it will have a negative impact
|
|
15
|
-
* on performance if an error is thrown.
|
|
16
|
-
*/
|
|
17
|
-
// import 'zone.js/dist/zone-error'; // Included with Angular CLI.
|