Skip to content

Commit 874c6ba

Browse files
authored
Merge pull request #284 from netgrif/NAE-2116
[NAE-2116] Frontend remote configuration
2 parents 37fe1f2 + 4abd4b7 commit 874c6ba

File tree

20 files changed

+296
-23
lines changed

20 files changed

+296
-23
lines changed

.github/workflows/pr-build.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ on:
55
jobs:
66
matrix-test:
77
name: Matrix Test
8-
runs-on: ubuntu-latest
8+
runs-on: ubuntu-24.04
99
strategy:
1010
matrix:
11-
node-version: [ 18, 20 ]
11+
node-version: [ 20, 22, 24 ]
1212
steps:
1313
- uses: actions/checkout@v4
1414
with:
@@ -17,7 +17,8 @@ jobs:
1717
name: Full Test on Node.js version ${{ matrix.node-version }}
1818
with:
1919
node-version: ${{ matrix.node-version }}
20-
- run: npm i --legacy-peer-deps
20+
- name: Install dependencies
21+
run: npm install --legacy-peer-deps
2122
- name: Build & test components-core
2223
run: |
2324
npm run ncc:build

projects/nae-example-app/src/app/app.module.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {BrowserModule} from '@angular/platform-browser';
2-
import {Injector, NgModule} from '@angular/core';
2+
import {APP_INITIALIZER, Injector, NgModule} from '@angular/core';
33
import {AppRoutingModule} from './app-routing.module';
44
import {AppComponent} from './app.component';
55
import {
@@ -19,7 +19,8 @@ import {
1919
ViewService,
2020
ProfileModule,
2121
Dashboard,
22-
FrontActionModule, NAE_ASYNC_RENDERING_CONFIGURATION
22+
FrontActionModule, NAE_ASYNC_RENDERING_CONFIGURATION,
23+
loadConfiguration
2324
} from '@netgrif/components-core';
2425
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
2526
import {FlexLayoutModule, FlexModule} from '@ngbracket/ngx-layout';
@@ -244,10 +245,18 @@ export function HttpLoaderFactory(http: HttpClient) {
244245
DialogComponentsModule,
245246
FrontActionModule
246247
],
247-
providers: [{
248-
provide: ConfigurationService,
249-
useClass: NaeExampleAppConfigurationService
250-
},
248+
providers: [
249+
ResourceProvider,
250+
{
251+
provide: ConfigurationService,
252+
useClass: NaeExampleAppConfigurationService
253+
},
254+
{
255+
provide: APP_INITIALIZER,
256+
useFactory: loadConfiguration,
257+
deps: [ConfigurationService],
258+
multi: true
259+
},
251260
{provide: NAE_SNACKBAR_VERTICAL_POSITION, useValue: SnackBarVerticalPosition.TOP},
252261
{provide: NAE_SNACKBAR_HORIZONTAL_POSITION, useValue: SnackBarHorizontalPosition.LEFT},
253262
{provide: NAE_ASYNC_RENDERING_CONFIGURATION, useValue: {
@@ -257,7 +266,6 @@ export function HttpLoaderFactory(http: HttpClient) {
257266
enableAsyncRenderingForNewFields: true,
258267
enableAsyncRenderingOnTaskExpand: true
259268
}},
260-
ResourceProvider,
261269
TranslateService,
262270
TranslatePipe,
263271
TranslateStore,
Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
import {Injectable} from '@angular/core';
2-
import {ConfigurationService} from '@netgrif/components-core';
3-
import {NetgrifApplicationEngine} from '@netgrif/components-core/';
2+
import {ApplicationConfiguration, ConfigurationService, NetgrifApplicationEngine, ConfigurationResourceService} from '@netgrif/components-core';
43
import {default as naeConfig} from '../../../../nae.json';
4+
import {environment} from '../environments/environment';
55

66
@Injectable({
77
providedIn: 'root'
88
})
99
export class NaeExampleAppConfigurationService extends ConfigurationService {
10-
constructor() {
11-
super(naeConfig as unknown as NetgrifApplicationEngine);
10+
constructor(protected _configurationResource: ConfigurationResourceService) {
11+
const applicationConfig: ApplicationConfiguration = {
12+
application: environment.application_identifier,
13+
type: environment.type_identifier,
14+
gateway_url: environment.gateway_url,
15+
resolve_configuration: environment.resolve_configuration
16+
};
17+
super(naeConfig as unknown as NetgrifApplicationEngine, _configurationResource, applicationConfig);
1218
}
1319
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
(function(window) {
2+
window["env"] = window["env"] || {};
3+
4+
window['env']['resolve_configuration'] = false;
5+
window['env']['gateway_url'] = 'http://localhost:8800/api';
6+
window['env']['application_identifier'] = 'nae';
7+
window['env']['type_identifier'] = 'default';
8+
})(window);
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
(function(window) {
2+
window["env"] = window["env"] || {};
3+
4+
window['env']['resolve_configuration'] = "${RESOLVE_CONFIGURATION}";
5+
window['env']['gateway_url'] = "${GATEWAY_URL}";
6+
window['env']['application_identifier'] = "${APPLICATION_IDENTIFIER}";
7+
window['env']['type_identifier'] = "${TYPE_IDENTIFIER}";
8+
})(window);
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
export const environment = {
2-
production: true
2+
production: true,
3+
resolve_configuration: window['env']['resolve_configuration'] || false,
4+
gateway_url: window['env']['gateway_url'] || 'http://localhost:8800/api',
5+
application_identifier: window['env']['application_identifier'] || 'nae',
6+
type_identifier: window['env']['type_identifier'] || 'default'
37
};

projects/nae-example-app/src/environments/environment.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33
// The list of file replacements can be found in `angular.json`.
44

55
export const environment = {
6-
production: false
6+
production: false,
7+
resolve_configuration: window['env']['resolve_configuration'] || false,
8+
gateway_url: window['env']['gateway_url'] || 'http://localhost:8800/api',
9+
application_identifier: window['env']['application_identifier'] || 'nae',
10+
type_identifier: window['env']['type_identifier'] || 'default'
711
};
812

913
/*

projects/nae-example-app/src/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<base href="/">
77
<meta name="viewport" content="width=device-width, initial-scale=1">
88
<link rel="icon" type="image/x-icon" href="favicon.ico">
9+
<script src="assets/env.js"></script>
910
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap" rel="stylesheet">
1011
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
1112
</head>

projects/netgrif-components-core/src/lib/authentication/profile/services/profile.service.spec.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ import {RouterTestingModule} from '@angular/router/testing';
77
import {ProfileService} from './profile.service';
88
import {NetgrifApplicationEngine} from "../../../../commons/schema";
99
import {UserChangePasswordRequest} from "../models/user-change-password-request";
10+
import {ConfigurationResourceService} from '../../../resources/engine-endpoint/configuration-resource.service';
11+
import {ResourceProvider} from '../../../resources/resource-provider.service';
12+
import {HttpClient} from '@angular/common/http';
13+
import {Injectable} from '@angular/core';
1014

1115
describe('ProfileService', () => {
1216
let service: ProfileService;
@@ -56,6 +60,9 @@ describe('ProfileService', () => {
5660
TestBed.configureTestingModule({
5761
imports: [HttpClientTestingModule, NoopAnimationsModule, RouterTestingModule.withRoutes([])],
5862
providers: [
63+
HttpClient,
64+
ResourceProvider,
65+
ConfigurationResourceService,
5966
ProfileService,
6067
{provide: ConfigurationService, useClass: MissingEndpointsConfigurationService}
6168
]
@@ -74,8 +81,9 @@ describe('ProfileService', () => {
7481
});
7582
});
7683

84+
@Injectable()
7785
class MissingEndpointsConfigurationService extends ConfigurationService {
78-
constructor() {
86+
constructor(protected configurationResource: ConfigurationResourceService) {
7987
super({
8088
extends: 'nae-default',
8189
providers: {
@@ -89,6 +97,13 @@ class MissingEndpointsConfigurationService extends ConfigurationService {
8997
},
9098
resources: []
9199
}
92-
} as unknown as NetgrifApplicationEngine);
100+
} as unknown as NetgrifApplicationEngine,
101+
configurationResource,
102+
{
103+
application: 'nae',
104+
type: 'default',
105+
gateway_url: 'http://localhost:8888/api',
106+
resolve_configuration: false
107+
});
93108
}
94109
}

projects/netgrif-components-core/src/lib/authentication/sign-up/services/sign-up.service.spec.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ import {HttpClientTestingModule, HttpTestingController} from '@angular/common/ht
66
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
77
import {RouterTestingModule} from '@angular/router/testing';
88
import {NetgrifApplicationEngine} from '../../../../commons/schema';
9+
import {ConfigurationResourceService} from '../../../resources/engine-endpoint/configuration-resource.service';
10+
import {ResourceProvider} from '../../../resources/resource-provider.service';
11+
import {HttpClient} from '@angular/common/http';
12+
import {Injectable} from '@angular/core';
913

1014
describe('SignUpService', () => {
1115
let service: SignUpService;
@@ -85,6 +89,9 @@ describe('SignUpService', () => {
8589
TestBed.configureTestingModule({
8690
imports: [HttpClientTestingModule, NoopAnimationsModule, RouterTestingModule.withRoutes([])],
8791
providers: [
92+
HttpClient,
93+
ResourceProvider,
94+
ConfigurationResourceService,
8895
SignUpService,
8996
{provide: ConfigurationService, useClass: MissingEndpointsConfigurationService}
9097
]
@@ -118,8 +125,9 @@ describe('SignUpService', () => {
118125
});
119126
});
120127

128+
@Injectable()
121129
class MissingEndpointsConfigurationService extends ConfigurationService {
122-
constructor() {
130+
constructor(protected configurationResource: ConfigurationResourceService) {
123131
super({
124132
extends: 'nae-default',
125133
providers: {
@@ -135,6 +143,13 @@ class MissingEndpointsConfigurationService extends ConfigurationService {
135143
},
136144
resources: []
137145
}
138-
} as unknown as NetgrifApplicationEngine);
146+
} as unknown as NetgrifApplicationEngine,
147+
configurationResource,
148+
{
149+
application: 'nae',
150+
type: 'default',
151+
gateway_url: 'http://localhost:8888/api',
152+
resolve_configuration: false
153+
});
139154
}
140155
}

0 commit comments

Comments
 (0)