diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index d3cfab6..5c9531d 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -39,7 +39,7 @@ const routes: Routes = [ }, { path: 'admin/:stakeholder', - loadChildren: './manageStakeholder/manageStakeholder.module#ManageStakeholderModule', + loadChildren: './general/general.module#GeneralModule', resolve: {envSpecific: EnvironmentSpecificResolver}, data: {hasAdminMenu: true} }, diff --git a/src/app/manageStakeholder/edit-stakeholder/edit-stakeholder.component.css b/src/app/general/edit-stakeholder/edit-stakeholder.component.css similarity index 100% rename from src/app/manageStakeholder/edit-stakeholder/edit-stakeholder.component.css rename to src/app/general/edit-stakeholder/edit-stakeholder.component.css diff --git a/src/app/manageStakeholder/edit-stakeholder/edit-stakeholder.component.ts b/src/app/general/edit-stakeholder/edit-stakeholder.component.ts similarity index 94% rename from src/app/manageStakeholder/edit-stakeholder/edit-stakeholder.component.ts rename to src/app/general/edit-stakeholder/edit-stakeholder.component.ts index e8de7e8..537cd7b 100644 --- a/src/app/manageStakeholder/edit-stakeholder/edit-stakeholder.component.ts +++ b/src/app/general/edit-stakeholder/edit-stakeholder.component.ts @@ -12,7 +12,9 @@ import {UtilitiesService} from "../../openaireLibrary/services/utilities.service @Component({ selector: 'edit-stakeholder', template: ` -
stakeholder.alias !== this.stakeholder.alias) : this.stakeholders.filter(stakeholder => stakeholder.alias !== this.stakeholder.alias) )] ), - isDefault: this.fb.control(isDefault), + isDefault: this.fb.control((this.isDefault)), visibility: this.fb.control(this.stakeholder.visibility, Validators.required), type: this.fb.control(this.stakeholder.type, Validators.required), topics: this.fb.control(this.stakeholder.topics), @@ -156,6 +162,11 @@ export class EditStakeholderComponent implements OnDestroy { })); this.stakeholderFb.setControl('defaultId', this.fb.control(stakeholder.defaultId, Validators.required)); } + if(this.disableAlias) { + setTimeout(() => { + this.stakeholderFb.get('alias').disable(); + }, 0); + } if (isNew) { setTimeout(() => { this.stakeholderFb.get('type').enable(); @@ -179,6 +190,10 @@ export class EditStakeholderComponent implements OnDestroy { (this.uploadError && this.uploadError.length > 0); } + public get dirty(): boolean { + return this.stakeholderFb && this.stakeholderFb.dirty; + } + reset() { this.uploadError = null; this.stakeholderFb = null; @@ -236,6 +251,7 @@ export class EditStakeholderComponent implements OnDestroy { }); } else { this.stakeholderFb.get('type').enable(); + this.stakeholderFb.get('alias').enable(); this.stakeholderService.saveElement(this.properties.monitorServiceAPIURL, this.stakeholderFb.value).subscribe(stakeholder => { callback(stakeholder); }); @@ -247,9 +263,13 @@ export class EditStakeholderComponent implements OnDestroy { this.file = event.target.files[0]; if (this.file.type !== 'image/png' && this.file.type !== 'image/jpeg') { this.uploadError = 'You must choose a file with type: image/png or image/jpeg!'; + this.stakeholderFb.get('isUpload').setValue(false); + this.stakeholderFb.get('isUpload').markAsDirty(); this.removePhoto(); } else if (this.file.size > this.maxsize) { this.uploadError = 'File exceeds size\'s limit! Maximum resolution is 256x256 pixels.'; + this.stakeholderFb.get('isUpload').setValue(false); + this.stakeholderFb.get('isUpload').markAsDirty(); this.removePhoto(); } else { this.uploadError = null; @@ -271,8 +291,6 @@ export class EditStakeholderComponent implements OnDestroy { } removePhoto() { - this.stakeholderFb.get('isUpload').setValue(false); - this.stakeholderFb.get('isUpload').markAsDirty(); if (this.file) { if (typeof document != 'undefined') { (document.getElementById("photo")).value = ""; @@ -283,6 +301,8 @@ export class EditStakeholderComponent implements OnDestroy { } remove() { + this.stakeholderFb.get('isUpload').setValue(false); + this.stakeholderFb.get('isUpload').markAsDirty(); this.removePhoto(); this.stakeholderFb.setControl('logoUrl', this.fb.control(null)); if (this.stakeholder.isUpload) { diff --git a/src/app/manageStakeholder/edit-stakeholder/edit-stakeholder.module.ts b/src/app/general/edit-stakeholder/edit-stakeholder.module.ts similarity index 100% rename from src/app/manageStakeholder/edit-stakeholder/edit-stakeholder.module.ts rename to src/app/general/edit-stakeholder/edit-stakeholder.module.ts diff --git a/src/app/manageStakeholder/manageStakeholder-routing.module.ts b/src/app/general/general-routing.module.ts similarity index 74% rename from src/app/manageStakeholder/manageStakeholder-routing.module.ts rename to src/app/general/general-routing.module.ts index 5e37524..28ab0d7 100644 --- a/src/app/manageStakeholder/manageStakeholder-routing.module.ts +++ b/src/app/general/general-routing.module.ts @@ -1,7 +1,7 @@ import {NgModule} from '@angular/core'; import {RouterModule} from '@angular/router'; import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; -import {ManageStakeholderComponent} from "./manageStakeholder.component"; +import {GeneralComponent} from "./general.component"; import {AdminDashboardGuard} from "../utils/adminDashboard.guard"; @NgModule({ @@ -9,7 +9,7 @@ import {AdminDashboardGuard} from "../utils/adminDashboard.guard"; RouterModule.forChild([ { path: '', - component: ManageStakeholderComponent, + component: GeneralComponent, canActivate: [AdminDashboardGuard], canDeactivate: [PreviousRouteRecorder], data: {hasSidebar: true} @@ -17,5 +17,5 @@ import {AdminDashboardGuard} from "../utils/adminDashboard.guard"; ]) ] }) -export class ManageStakeholderRoutingModule { +export class GeneralRoutingModule { } diff --git a/src/app/general/general.component.css b/src/app/general/general.component.css new file mode 100644 index 0000000..8e449f6 --- /dev/null +++ b/src/app/general/general.component.css @@ -0,0 +1,9 @@ +.form-header { + background-color: #F2F2F2; + box-shadow: 0 3px 6px #00000029; + padding: 10px 20px; + color: #7A7A7A; + font-family: "Roboto", sans-serif; + z-index: 1; + position: relative; +} diff --git a/src/app/general/general.component.html b/src/app/general/general.component.html new file mode 100644 index 0000000..90e355b --- /dev/null +++ b/src/app/general/general.component.html @@ -0,0 +1,38 @@ +
+
+
+
+
+
+
+ Manage Profile +
+
+ {{stakeholder.name}} + (unsaved changes) +
+
+
+ + +
+
+
+
+
+ +
+
+ +
+
+
+
+
diff --git a/src/app/general/general.component.ts b/src/app/general/general.component.ts new file mode 100644 index 0000000..ee2e1aa --- /dev/null +++ b/src/app/general/general.component.ts @@ -0,0 +1,76 @@ +import {Component, OnDestroy, OnInit, ViewChild} from "@angular/core"; +import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service"; +import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties"; +import {EnvironmentSpecificService} from "../openaireLibrary/utils/properties/environment-specific.service"; +import {Stakeholder} from "../openaireLibrary/monitor/entities/stakeholder"; +import {Subscriber, Subscription, zip} from "rxjs"; +import {StakeholderUtils} from "../utils/indicator-utils"; +import {FormBuilder, FormGroup, Validators} from "@angular/forms"; +import {AlertModal} from "../openaireLibrary/utils/modal/alert"; +import {Option} from "../openaireLibrary/dashboard/sharedComponents/input/input.component"; +import {Title} from "@angular/platform-browser"; +import {UserManagementService} from "../openaireLibrary/services/user-management.service"; +import {Session} from "../openaireLibrary/login/utils/helper.class"; +import {UtilitiesService} from "../openaireLibrary/services/utilities.service"; +import {EditStakeholderComponent} from "./edit-stakeholder/edit-stakeholder.component"; +import {properties} from "../../environments/environment"; + +@Component({ + selector: 'general', + templateUrl: "./general.component.html", + styleUrls: ['general.component.css'] +}) +export class GeneralComponent implements OnInit, OnDestroy { + + public stakeholder: Stakeholder; + public stakeholders: Stakeholder[]; + public properties: EnvProperties = properties; + public defaultStakeholders: Stakeholder[]; + public loading: boolean = false; + private subscriptions: any[] = []; + @ViewChild('editStakeholderComponent') editStakeholderComponent: EditStakeholderComponent; + + constructor(private stakeholderService: StakeholderService) { + } + + ngOnInit() { + this.loading = true; + this.subscriptions.push(this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => { + this.stakeholder = stakeholder; + if(this.stakeholder) { + let data = zip( + this.stakeholderService.getDefaultStakeholders(this.properties.monitorServiceAPIURL), + this.stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL) + ); + this.subscriptions.push(data.subscribe(res => { + this.defaultStakeholders = res[0]; + this.stakeholders = res[1]; + this.reset(); + this.loading = false; + })); + } + })); + } + + public reset() { + this.editStakeholderComponent.init(this.stakeholder, this.stakeholders, this.defaultStakeholders, this.stakeholder.defaultId == null, false) + } + + + public save() { + this.loading = true; + this.editStakeholderComponent.save((stakeholder) => { + this.stakeholder = stakeholder; + this.reset(); + this.loading = false; + }); + } + + ngOnDestroy() { + this.subscriptions.forEach(subscription => { + if(subscription instanceof Subscription) { + subscription.unsubscribe(); + } + }); + } +} diff --git a/src/app/manageStakeholder/manageStakeholder.module.ts b/src/app/general/general.module.ts similarity index 68% rename from src/app/manageStakeholder/manageStakeholder.module.ts rename to src/app/general/general.module.ts index f5a4e36..f9150a9 100644 --- a/src/app/manageStakeholder/manageStakeholder.module.ts +++ b/src/app/general/general.module.ts @@ -1,6 +1,6 @@ import {NgModule} from "@angular/core"; -import {ManageStakeholderComponent} from "./manageStakeholder.component"; -import {ManageStakeholderRoutingModule} from "./manageStakeholder-routing.module"; +import {GeneralComponent} from "./general.component"; +import {GeneralRoutingModule} from "./general-routing.module"; import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard"; import {CommonModule} from "@angular/common"; import {RouterModule} from "@angular/router"; @@ -9,23 +9,25 @@ import {LoadingModule} from "../openaireLibrary/utils/loading/loading.module"; import {AlertModalModule} from "../openaireLibrary/utils/modal/alertModal.module"; import {ReactiveFormsModule} from "@angular/forms"; import {AdminDashboardGuard} from "../utils/adminDashboard.guard"; +import {EditStakeholderModule} from "./edit-stakeholder/edit-stakeholder.module"; @NgModule({ - declarations: [ManageStakeholderComponent], + declarations: [GeneralComponent], imports: [ - ManageStakeholderRoutingModule, + GeneralRoutingModule, CommonModule, RouterModule, InputModule, LoadingModule, AlertModalModule, - ReactiveFormsModule + ReactiveFormsModule, + EditStakeholderModule ], providers: [ AdminDashboardGuard, PreviousRouteRecorder, ], - exports: [ManageStakeholderComponent] + exports: [GeneralComponent] }) -export class ManageStakeholderModule { +export class GeneralModule { } diff --git a/src/app/manageStakeholder/manageStakeholder.component.html b/src/app/manageStakeholder/manageStakeholder.component.html deleted file mode 100644 index dacdff6..0000000 --- a/src/app/manageStakeholder/manageStakeholder.component.html +++ /dev/null @@ -1,79 +0,0 @@ -
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
- -
-
- - -
- -
-
{{uploadError}}
-
-
- -
-
-
-
- OR -
-
- -
-
-
-
-
-
-
-
-
-
-
-
No default profiles has been found for - this type. -
-
-
-
-
diff --git a/src/app/manageStakeholder/manageStakeholder.component.ts b/src/app/manageStakeholder/manageStakeholder.component.ts deleted file mode 100644 index 857bdbc..0000000 --- a/src/app/manageStakeholder/manageStakeholder.component.ts +++ /dev/null @@ -1,22 +0,0 @@ -import {Component, OnDestroy, OnInit, ViewChild} from "@angular/core"; -import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service"; -import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties"; -import {EnvironmentSpecificService} from "../openaireLibrary/utils/properties/environment-specific.service"; -import {Stakeholder} from "../openaireLibrary/monitor/entities/stakeholder"; -import {Subscriber, zip} from "rxjs"; -import {StakeholderUtils} from "../utils/indicator-utils"; -import {FormBuilder, FormGroup, Validators} from "@angular/forms"; -import {AlertModal} from "../openaireLibrary/utils/modal/alert"; -import {Option} from "../openaireLibrary/dashboard/sharedComponents/input/input.component"; -import {Title} from "@angular/platform-browser"; -import {UserManagementService} from "../openaireLibrary/services/user-management.service"; -import {Session} from "../openaireLibrary/login/utils/helper.class"; -import {UtilitiesService} from "../openaireLibrary/services/utilities.service"; - -@Component({ - selector: 'manage-stakeholder', - templateUrl: "./manageStakeholder.component.html" -}) -export class ManageStakeholderComponent { - -} diff --git a/src/app/manageStakeholders/manageStakeholders.component.ts b/src/app/manageStakeholders/manageStakeholders.component.ts index bc323d1..25f3638 100644 --- a/src/app/manageStakeholders/manageStakeholders.component.ts +++ b/src/app/manageStakeholders/manageStakeholders.component.ts @@ -11,7 +11,7 @@ import {Option} from "../openaireLibrary/dashboard/sharedComponents/input/input. import {Title} from "@angular/platform-browser"; import {UserManagementService} from "../openaireLibrary/services/user-management.service"; import {Session} from "../openaireLibrary/login/utils/helper.class"; -import {EditStakeholderComponent} from "../manageStakeholder/edit-stakeholder/edit-stakeholder.component"; +import {EditStakeholderComponent} from "../general/edit-stakeholder/edit-stakeholder.component"; declare var UIkit; diff --git a/src/app/manageStakeholders/manageStakeholders.module.ts b/src/app/manageStakeholders/manageStakeholders.module.ts index 04e2576..fc8fe72 100644 --- a/src/app/manageStakeholders/manageStakeholders.module.ts +++ b/src/app/manageStakeholders/manageStakeholders.module.ts @@ -9,7 +9,7 @@ import {LoadingModule} from "../openaireLibrary/utils/loading/loading.module"; import {AlertModalModule} from "../openaireLibrary/utils/modal/alertModal.module"; import {ReactiveFormsModule} from "@angular/forms"; import {AdminDashboardGuard} from "../utils/adminDashboard.guard"; -import {EditStakeholderModule} from "../manageStakeholder/edit-stakeholder/edit-stakeholder.module"; +import {EditStakeholderModule} from "../general/edit-stakeholder/edit-stakeholder.module"; @NgModule({ declarations: [ManageStakeholdersComponent], diff --git a/src/assets/dashboard-theme/structure.css b/src/assets/dashboard-theme/structure.css index 4fa9f58..b8ea9aa 100644 --- a/src/assets/dashboard-theme/structure.css +++ b/src/assets/dashboard-theme/structure.css @@ -103,7 +103,7 @@ } #page_content_inner { - padding: 50px 50px 100px 50px; + padding: 90px; } navbar > * {