2018-03-10 18:32:45 +01:00
import { Component , OnInit } from '@angular/core' ;
2018-02-28 12:41:06 +01:00
import { ManageprofilesService } from './manageprofiles.service' ;
2018-03-17 14:05:55 +01:00
import { ActivatedRoute , Router } from '@angular/router' ;
2018-02-28 12:41:06 +01:00
import UIkit from 'uikit' ;
import { PaginationInstance } from 'ngx-pagination' ;
import { ProfileMetadata } from './profile-metadata' ;
import { ExampleProfilesMetadata } from './example-profiles-metadata' ;
2018-11-02 18:31:11 +01:00
import { UsersMetadata } from './users-metadata' ;
2018-03-10 18:32:45 +01:00
import { saveFile } from '../util' ;
2018-02-28 12:41:06 +01:00
@Component ( {
selector : 'app-manageprofiles' ,
templateUrl : './manageprofiles.component.html' ,
styleUrls : [ './manageprofiles.component.css' ]
} )
export class ManageprofilesComponent implements OnInit {
// TODO profile table sorting: https://ciphertrick.com/2017/08/01/search-sort-pagination-in-angular/
2018-11-02 18:31:11 +01:00
public allUsersProfiles : Array < UsersMetadata > = [ ] ;
public statusValues = [
2019-05-29 16:02:54 +02:00
'Processing' ,
2018-11-02 18:31:11 +01:00
'Evaluating' ,
'On Beta'
] ;
2019-05-29 16:02:54 +02:00
public communityId = '' ;
2018-11-02 18:31:11 +01:00
public isCommunityManager = false ;
2018-02-28 12:41:06 +01:00
public userSavedProfiles : Array < ProfileMetadata > = [ ] ;
public exampleProfiles : Array < ExampleProfilesMetadata > = [ ] ;
public config : PaginationInstance = {
id : 'custom' ,
itemsPerPage : 5 ,
currentPage : 1
} ;
2019-05-29 16:02:54 +02:00
public pending = false ;
2018-03-17 14:05:55 +01:00
constructor ( private manageProfilesService : ManageprofilesService , private route : ActivatedRoute , private router : Router ) {
2018-03-10 18:32:45 +01:00
}
2018-02-28 12:41:06 +01:00
ngOnInit() {
2018-11-02 18:31:11 +01:00
this . route . queryParams
. subscribe (
params = > {
2019-05-29 16:02:54 +02:00
// console.log('queryParams', params['communityId']);
this . communityId = params [ 'communityId' ] ;
this . initialServerhandshake ( this . communityId ) ;
2018-11-02 18:31:11 +01:00
} ) ;
this . isCommunityManager = this . manageProfilesService . isCommunityManager === 'true' ;
2018-02-28 12:41:06 +01:00
}
2018-11-02 18:31:11 +01:00
initialServerhandshake ( communityId : string ) : void {
this . manageProfilesService . initialServerHandshake ( communityId )
2018-03-10 18:32:45 +01:00
. subscribe ( ( ) = > {
2018-11-02 18:31:11 +01:00
if ( this . isCommunityManager ) {
this . getAllUsersProfiles ( ) ;
}
2018-02-28 12:41:06 +01:00
this . getSavedProfiles ( ) ;
this . getExampleProfiles ( ) ;
} ) ;
}
2018-11-02 18:31:11 +01:00
getAllUsersProfiles ( ) : void {
this . manageProfilesService . getUsersProfiles ( )
. subscribe ( res = > {
if ( res ) {
this . allUsersProfiles = res ;
}
} ) ;
}
loadUserProfileAdmin ( userId : string , profileId : string , name : string ) : void {
this . manageProfilesService . loadUserProfileAdmin ( userId , profileId )
. subscribe ( res = > {
// clear localstorage values
this . clearLocalStorage ( ) ;
// store to client all profile data
localStorage . setItem ( 'docname' , res . docname ) ;
localStorage . setItem ( 'docsnumber' , res . docsnumber ) ;
localStorage . setItem ( 'concepts' , res . concepts ) ;
localStorage . setItem ( 'poswords' , JSON . stringify ( res . poswords ) ) ;
localStorage . setItem ( 'negwords' , JSON . stringify ( res . negwords ) ) ;
localStorage . setItem ( 'contextprev' , res . contextprev ) ;
localStorage . setItem ( 'contextmiddle' , res . contextmiddle ) ;
localStorage . setItem ( 'contextnext' , res . contextnext ) ;
localStorage . setItem ( 'wordssplitnum' , res . wordssplitnum ) ;
localStorage . setItem ( 'punctuation' , res . punctuation ) ;
localStorage . setItem ( 'stopwords' , res . stopwords ) ;
localStorage . setItem ( 'lowercase' , res . lowercase ) ;
localStorage . setItem ( 'stemming' , res . stemming ) ;
2018-11-28 17:55:22 +01:00
localStorage . setItem ( 'documentarea' , res . documentarea ) ;
2018-11-02 18:31:11 +01:00
this . router . navigate ( [ '../upload-content' ] , { relativeTo : this.route , queryParamsHandling : 'preserve' } ) ;
} ) ;
}
downloadUserProfileAdmin ( userId : string , profileId : string , profileName : string ) : void {
this . manageProfilesService . downloadUserProfileAdmin ( userId , profileId )
. subscribe ( res = > {
saveFile ( res , profileName . replace ( / /g , '_' ) + '.oamp' ) ;
} ) ;
}
onStatusChange ( userId : string , profileId : string , status : string ) : void {
this . manageProfilesService . updateProfileStatus ( userId , profileId , status )
. subscribe ( ) ;
}
2018-02-28 12:41:06 +01:00
getSavedProfiles ( ) : void {
this . manageProfilesService . getSavedProfiles ( )
2018-03-08 11:19:06 +01:00
. subscribe ( res = > {
if ( res ) {
this . userSavedProfiles = res ;
}
} ) ;
2018-02-28 12:41:06 +01:00
}
loadSavedProfile ( id : string , name : string ) : void {
this . manageProfilesService . loadSavedProfile ( id )
. subscribe ( res = > {
2018-03-10 18:32:45 +01:00
console . log ( res ) ;
// clear localstorage values
this . clearLocalStorage ( ) ;
// store to client all profile data
localStorage . setItem ( 'profilename' , name ) ;
localStorage . setItem ( 'profileid' , id ) ;
localStorage . setItem ( 'docname' , res . docname ) ;
localStorage . setItem ( 'docsnumber' , res . docsnumber ) ;
localStorage . setItem ( 'concepts' , res . concepts ) ;
localStorage . setItem ( 'poswords' , JSON . stringify ( res . poswords ) ) ;
localStorage . setItem ( 'negwords' , JSON . stringify ( res . negwords ) ) ;
localStorage . setItem ( 'contextprev' , res . contextprev ) ;
localStorage . setItem ( 'contextmiddle' , res . contextmiddle ) ;
localStorage . setItem ( 'contextnext' , res . contextnext ) ;
localStorage . setItem ( 'wordssplitnum' , res . wordssplitnum ) ;
localStorage . setItem ( 'punctuation' , res . punctuation ) ;
localStorage . setItem ( 'stopwords' , res . stopwords ) ;
2018-03-22 22:32:33 +01:00
localStorage . setItem ( 'lowercase' , res . lowercase ) ;
2018-03-23 15:02:35 +01:00
localStorage . setItem ( 'stemming' , res . stemming ) ;
2018-11-28 17:55:22 +01:00
localStorage . setItem ( 'documentarea' , res . documentarea ) ;
2018-03-19 13:44:18 +01:00
this . router . navigate ( [ '../upload-content' ] , { relativeTo : this.route , queryParamsHandling : 'preserve' } ) ;
2018-02-28 12:41:06 +01:00
} ) ;
}
downloadProfile ( profileId : string , profileName : string ) : void {
this . manageProfilesService . downloadProfile ( profileId )
. subscribe ( res = > {
saveFile ( res , profileName . replace ( / /g , '_' ) + '.oamp' ) ;
} ) ;
}
deleteProfilePrompt ( index ) {
UIkit . modal . confirm ( '<span class="uk-text-bold uk-text-danger">' +
'Are you sure you want to delete this profile? This action cannot be undone!</span>' , { escClose : true } ) . then ( ( ) = > {
2018-03-10 18:32:45 +01:00
this . manageProfilesService . deleteProfile ( this . userSavedProfiles [ index ] . id )
. subscribe ( ( ) = > this . userSavedProfiles . splice ( index , 1 ) ) ;
2018-02-28 12:41:06 +01:00
} ) ;
}
createNewProfile ( ) : void {
2018-03-10 18:32:45 +01:00
// clear localstorage values
this . clearLocalStorage ( ) ;
2018-02-28 12:41:06 +01:00
this . manageProfilesService . createNewProfile ( )
2018-03-19 13:44:18 +01:00
. subscribe ( ( ) = > this . router . navigate ( [ '../upload-content' ] , { relativeTo : this.route , queryParamsHandling : 'preserve' } ) ) ;
2018-02-28 12:41:06 +01:00
}
fileChangeUpload ( event ) : void {
2018-03-10 18:32:45 +01:00
// clear localstorage values
this . clearLocalStorage ( ) ;
2018-02-28 12:41:06 +01:00
const fileList : FileList = event . target . files ;
if ( fileList && fileList . length === 1 ) {
const file : File = fileList [ 0 ] ;
// get new profile data
this . manageProfilesService . uploadFile ( file )
. subscribe ( res = > {
console . log ( res ) ;
localStorage . setItem ( 'concepts' , res . concepts ) ;
localStorage . setItem ( 'poswords' , JSON . stringify ( res . poswords ) ) ;
localStorage . setItem ( 'negwords' , JSON . stringify ( res . negwords ) ) ;
localStorage . setItem ( 'contextprev' , res . contextprev ) ;
localStorage . setItem ( 'contextmiddle' , res . contextmiddle ) ;
localStorage . setItem ( 'contextnext' , res . contextnext ) ;
localStorage . setItem ( 'wordssplitnum' , res . wordssplitnum ) ;
localStorage . setItem ( 'punctuation' , res . punctuation ) ;
localStorage . setItem ( 'stopwords' , res . stopwords ) ;
2018-03-22 22:32:33 +01:00
localStorage . setItem ( 'lowercase' , res . lowercase ) ;
2018-03-23 15:02:35 +01:00
localStorage . setItem ( 'stemming' , res . stemming ) ;
2018-11-28 17:55:22 +01:00
localStorage . setItem ( 'documentarea' , res . documentarea ) ;
2018-03-19 13:44:18 +01:00
this . router . navigate ( [ '../upload-content' ] , { relativeTo : this.route , queryParamsHandling : 'preserve' } ) ;
2018-02-28 12:41:06 +01:00
} ) ;
}
}
getExampleProfiles ( ) : void {
this . manageProfilesService . getExampleProfiles ( )
. subscribe ( res = > this . exampleProfiles = res ) ;
}
2019-05-29 16:02:54 +02:00
notifyProfile ( profile : ProfileMetadata ) : void {
UIkit . modal . confirm ( '<span class="uk-text-bold">' +
'A notification will be sent to the OpenAIRE Mining experts, that your profile is in its final version!</br></br>Are you sure you want to proceed?</span>' , { escClose : true } ) . then ( ( ) = > {
this . pending = true ;
this . manageProfilesService . notifyProfile ( this . communityId , profile . id )
. subscribe ( res = > {
profile . notified = 1 ;
this . pending = false ;
} ) ;
} ) ;
}
2018-02-28 12:41:06 +01:00
loadExampleProfile ( name : string ) : void {
2018-03-10 18:32:45 +01:00
// clear localstorage values
this . clearLocalStorage ( ) ;
2018-02-28 12:41:06 +01:00
// get new profile data
this . manageProfilesService . loadExampleProfile ( name )
. subscribe ( res = > {
console . log ( res ) ;
localStorage . setItem ( 'concepts' , res . concepts ) ;
2018-03-02 11:07:03 +01:00
localStorage . setItem ( 'docname' , res . docname ) ;
localStorage . setItem ( 'docsnumber' , res . docsnumber ) ;
2018-02-28 12:41:06 +01:00
localStorage . setItem ( 'poswords' , JSON . stringify ( res . poswords ) ) ;
localStorage . setItem ( 'negwords' , JSON . stringify ( res . negwords ) ) ;
localStorage . setItem ( 'contextprev' , res . contextprev ) ;
localStorage . setItem ( 'contextmiddle' , res . contextmiddle ) ;
localStorage . setItem ( 'contextnext' , res . contextnext ) ;
localStorage . setItem ( 'wordssplitnum' , res . wordssplitnum ) ;
localStorage . setItem ( 'punctuation' , res . punctuation ) ;
localStorage . setItem ( 'stopwords' , res . stopwords ) ;
2018-03-22 22:32:33 +01:00
localStorage . setItem ( 'lowercase' , res . lowercase ) ;
2018-03-23 15:02:35 +01:00
localStorage . setItem ( 'stemming' , res . stemming ) ;
2018-11-28 17:55:22 +01:00
localStorage . setItem ( 'documentarea' , res . documentarea ) ;
2018-03-19 13:44:18 +01:00
this . router . navigate ( [ '../upload-content' ] , { relativeTo : this.route , queryParamsHandling : 'preserve' } ) ;
2018-02-28 12:41:06 +01:00
} ) ;
}
2018-03-10 18:32:45 +01:00
clearLocalStorage ( ) : void {
// clear localstorage values
localStorage . removeItem ( 'grants' ) ;
localStorage . removeItem ( 'profilename' ) ;
localStorage . removeItem ( 'profileid' ) ;
localStorage . removeItem ( 'docname' ) ;
localStorage . removeItem ( 'docsnumber' ) ;
localStorage . removeItem ( 'concepts' ) ;
localStorage . removeItem ( 'poswords' ) ;
localStorage . removeItem ( 'negwords' ) ;
localStorage . removeItem ( 'contextprev' ) ;
localStorage . removeItem ( 'contextmiddle' ) ;
localStorage . removeItem ( 'contextnext' ) ;
localStorage . removeItem ( 'wordssplitnum' ) ;
localStorage . removeItem ( 'punctuation' ) ;
localStorage . removeItem ( 'stopwords' ) ;
2018-03-22 22:32:33 +01:00
localStorage . removeItem ( 'lowercase' ) ;
2018-03-23 15:02:35 +01:00
localStorage . removeItem ( 'stemming' ) ;
2018-11-28 17:55:22 +01:00
localStorage . removeItem ( 'documentarea' ) ;
2018-03-10 18:32:45 +01:00
}
2018-02-28 12:41:06 +01:00
}