-->
+<mat-progress-bar mode="indeterminate" *ngIf="loaderStatus === true"></mat-progress-bar>
+<div [ngClass]="{'overlay': loaderStatus === true}">
<router-outlet></router-outlet>
+<div class="notification-container">
+ <app-notification></app-notification>
+</div>
+</div>
height: 200px;
overflow: auto;
border: 1px solid #555;
+ }
+
+ .overlay {
+ opacity: 0.5;
+ pointer-events: none;
+ }
+
+ .notification-container{
+ position: fixed;
+ top: 1em;
+ z-index: 1;
+ right: 1em;
+ overflow: auto;
}
\ No newline at end of file
import { Observable} from 'rxjs';
import { Store } from '@ngrx/store';
+import { LoaderService } from './common/core/services/loader.service';
+
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
+ loaderStatus: boolean = false;
+ constructor(private router: Router,
+ private loaderService: LoaderService
+ ) {
- constructor(private router: Router) {
+ this.loaderService.subject.subscribe(data=>{
+ console.log(data);
+ this.loaderStatus = data;
+ })
}
}
import { BlueprintEffects } from './store/effects/blueprint.effects';
import { ResourcesEffects } from './store/effects/resources.effects';
import { ApiService } from './services/api.service';
+import { NotificationHandlerService } from './services/notification-handler.service';
+import { LoaderService } from './services/loader.service';
// import { BlueprintService } from './services/blueprint.service';
@NgModule({
imports: [
CommonModule,
StoreModule.forRoot(appReducers),
- EffectsModule.forRoot([BlueprintEffects,ResourcesEffects]),
- StoreRouterConnectingModule.forRoot({stateKey: 'router'}),
+ EffectsModule.forRoot([BlueprintEffects, ResourcesEffects]),
+ StoreRouterConnectingModule.forRoot({ stateKey: 'router' }),
HttpClientModule
],
- providers : [ ApiService ]
+ providers: [ApiService,
+ NotificationHandlerService,
+ LoaderService
+ ]
})
export class CoreModule { }
import { Injectable } from '@angular/core';
-// import { NotificationService } from '../../shared/components/notification/notification.service';
+import { NotificationService } from '../../shared/components/notification/notification.service';
@Injectable()
export class NotificationHandlerService {
constructor(
- // private alert: NotificationService
+ private alert: NotificationService
) { }
success(message: string) {
- // this.alert.success(message);
+ this.alert.success(message);
}
error(message: string) {
- // this.alert.error(message);
+ this.alert.error(message);
}
info(message: string) {
import { SearchDialog } from './components/search-dialog/search-dialog.component';
import { AppMaterialModule } from '../modules/app-material.module';
import { SortPipe } from './pipes/sort.pipe';
+import { NotificationComponent } from './components/notification/notification.component';
+import { NotificationService } from './components/notification/notification.service';
@NgModule({
declarations: [
CBAWizardComponent,
SearchPipe,
SearchDialog,
- SortPipe
+ SortPipe,
+ NotificationComponent
],
exports: [
HomeComponent,
CBAWizardComponent,
SearchPipe,
SearchDialog,
- SortPipe
+ SortPipe,
+ NotificationComponent
],
imports: [
AppMaterialModule,
MatStepperModule,
RouterModule
],
+ providers: [NotificationService],
entryComponents: [SearchDialog]
})
export class SharedModule { }
\ No newline at end of file
import { IMetaData } from 'src/app/common/core/store/models/metadata.model';
import { EditorService } from './editor.service';
import { SortPipe } from '../../../../common/shared/pipes/sort.pipe';
+import { NotificationHandlerService } from 'src/app/common/core/services/notification-handler.service';
+import { LoaderService } from 'src/app/common/core/services/loader.service';
+
interface Node {
name: string;
private tocsaMetadaData: any;
metadata: IMetaData;
uploadedFileName: string;
+ entryDefinition: string;
private transformer = (node: Node, level: number) => {
return {
artifactName: any;
artifactVersion: any;
- constructor(private store: Store<IAppState>, private apiservice: EditorService) {
+ constructor(private store: Store<IAppState>, private apiservice: EditorService,
+ private alertService: NotificationHandlerService, private loader: LoaderService
+ )
+ {
this.dataSource.data = TREE_DATA;
this.bpState = this.store.select('blueprint');
// this.dataSource.data = TREE_DATA;
this.dataSource.data = this.filesTree;
this.blueprintName = blueprintdata.name;
this.uploadedFileName = blueprintdata.uploadedFileName;
+ this.entryDefinition = blueprintdata.entryDefinition;
let blueprint = [];
for (let key in this.blueprintdata) {
if (this.blueprintdata.hasOwnProperty(key)) {
name: this.blueprintName,
files: this.filesTree,
filesData: this.filesData,
- uploadedFileName: this.uploadedFileName
+ uploadedFileName: this.uploadedFileName,
+ entryDefinition: this.entryDefinition
}
this.store.dispatch(new SetBlueprintState(blueprintState));
- // console.log(this.text);
}
selectFileToView(file) {
}
})
this.fileExtension = this.selectedFile.substr(this.selectedFile.lastIndexOf('.') + 1);
- // console.log(this.fileExtension);
this.setEditorMode();
}
console.log("processed");
}
});
- window.alert('Blueprint enriched successfully');
+ this.alertService.success('Blueprint enriched successfully');
+ },
+ (error)=>{
+ this.alertService.error('Enrich:' + error.message);
});
});
}
this.apiservice.post("/create-blueprint/", formData)
.subscribe(
data => {
- // console.log(data);
- window.alert('Success:' + JSON.stringify(data));
+ this.alertService.success('Success:' + JSON.stringify(data));
+ }, error=>{
+ this.alertService.error('Save -' +error.message);
});
});
formData.append("file", blob);
this.apiservice.deployPost("/deploy-blueprint/", formData)
.subscribe(data => {
- // console.log(data);
- window.alert('Saved Successfully:' + JSON.stringify(data));
+ this.alertService.success('Saved Successfully:' + JSON.stringify(data));
+ }, error=>{
+ this.alertService.error('Deploy - ' + error.message);
});
});
formData.append("file", blob);
this.apiservice.post("/publish/", formData)
.subscribe(data => {
- // console.log(data);
- window.alert('Published:' + JSON.stringify(data));
+ this.alertService.success('Published:' + JSON.stringify(data))
+ }, error=>{
+ this.alertService.error('Publish - ' + error.message);
});
});
}
saveEditedChanges() {
+ this.loader.showLoader();
this.filesData.forEach(fileNode => {
if (this.selectedFile && fileNode.name.includes(this.blueprintName.trim()) && fileNode.name.includes(this.selectedFile.trim())) {
fileNode.data = this.text;
}
this.updateBlueprint();
+ this.loader.hideLoader();
}
}
import { IBlueprint } from 'src/app/common/core/store/models/blueprint.model';
import { IMetaData } from '../../../../common/core/store/models/metadata.model';
import { SetBlueprintState } from 'src/app/common/core/store/actions/blueprint.action';
+import { LoaderService } from '../../../../common/core/services/loader.service';
@Component({
selector: 'app-metadata',
uploadedFileName: string;
entryDefinition: string;
- constructor(private formBuilder: FormBuilder, private store: Store<IAppState>) {
+ constructor(private formBuilder: FormBuilder, private store: Store<IAppState>, private loader: LoaderService) {
this.bpState = this.store.select('blueprint');
this.CBAMetadataForm = this.formBuilder.group({
template_author: ['', Validators.required],
}
UploadMetadata() {
+ this.loader.showLoader();
this.metadata = Object.assign({}, this.CBAMetadataForm.value);
this.blueprint.metadata = this.metadata;
entryDefinition: this.entryDefinition
}
this.store.dispatch(new SetBlueprintState(blueprintState));
+ this.loader.hideLoader();
}
-
}
\ No newline at end of file
import { LoadBlueprintSuccess, SET_BLUEPRINT_STATE, SetBlueprintState } from '../../../../common/core/store/actions/blueprint.action';
import { json } from 'd3';
import { SortPipe } from '../../../../common/shared/pipes/sort.pipe';
+import { LoaderService } from '../../../../common/core/services/loader.service';
@Component({
selector: 'app-search-template',
private blueprintName: string;
private entryDefinition: string;
- constructor(private store: Store<IAppState>) { }
+ constructor(private store: Store<IAppState>, private loader: LoaderService) { }
ngOnInit() {
}
this.zipFile.files = {};
this.zipFile.loadAsync(this.file)
.then((zip) => {
- if(zip) {
+ if(zip) {
+ this.loader.showLoader();
this.buildFileViewData(zip);
}
});
}
}
});
- });
- console.log('tree', tree);
+ });
+ this.loader.hideLoader();
return tree;
}
import { Observable } from 'rxjs';
import { A11yModule } from '@angular/cdk/a11y';
import { ResourceEditService } from './resource-edit.service';
+import { NotificationHandlerService } from 'src/app/common/core/services/notification-handler.service';
@Component({
selector: 'app-resource-edit',
@ViewChild(JsonEditorComponent) editor: JsonEditorComponent;
options = new JsonEditorOptions();
- constructor(private store: Store<IAppState>, private resourceEditService: ResourceEditService) {
+ constructor(private store: Store<IAppState>, private resourceEditService: ResourceEditService, private alertService: NotificationHandlerService) {
this.rdState = this.store.select('resources');
this.options.mode = 'text';
this.options.modes = [ 'text', 'tree', 'view'];
saveToBackend() {
this.resourceEditService.saveResource(this.data)
.subscribe(response=>{
- window.alert("save success");
+ this.alertService.success("save success")
},
error=>{
- window.alert('Error saving resources');
+ this.alertService.error('Error saving resources');
})
}
}