evaluator fixes

This commit is contained in:
CITE\amentis 2024-10-11 15:52:05 +03:00
parent 038c66b887
commit f8684f996a
21 changed files with 214 additions and 152 deletions

View File

@ -78,7 +78,7 @@ public class PlanUserCommonModelBuilder extends BaseCommonModelBuilder<PlanUserM
this.logger.debug("checking related - {}", UserModel.class.getSimpleName());
Map<UUID, UserModel> itemMap;
UserQuery q = this.queryFactory.query(UserQuery.class).disableTracking().isActive(IsActive.Active).ids(data.stream().map(PlanUserEntity::getUserId).distinct().collect(Collectors.toList()));
UserQuery q = this.queryFactory.query(UserQuery.class).disableTracking().isActive(IsActive.Active).authorize(this.authorize).ids(data.stream().map(PlanUserEntity::getUserId).distinct().collect(Collectors.toList()));
itemMap = this.builderFactory.builder(UserCommonModelBuilder.class).authorize(this.authorize).asForeignKey(q, UserEntity::getId);
return itemMap;
}

View File

@ -199,7 +199,7 @@ public class PlanCommonModelBuilder extends BaseCommonModelBuilder<PlanModel, Pl
Map<UUID, List<PlanUserModel>> itemMap;
PlanUserQuery query = this.queryFactory.query(PlanUserQuery.class).disableTracking().isActives(IsActive.Active).planIds(data.stream().map(PlanEntity::getId).distinct().collect(Collectors.toList()));
itemMap = this.builderFactory.builder(PlanUserCommonModelBuilder.class).asMasterKey(query, PlanUserEntity::getPlanId);
itemMap = this.builderFactory.builder(PlanUserCommonModelBuilder.class).authorize(this.authorize).asMasterKey(query, PlanUserEntity::getPlanId);
return itemMap;
}

View File

@ -17,6 +17,7 @@ import gr.cite.tools.validation.ValidatorFactory;
import org.apache.commons.io.FilenameUtils;
import org.opencdmp.authorization.AuthorizationFlags;
import org.opencdmp.authorization.Permission;
import org.opencdmp.authorization.authorizationcontentresolver.AuthorizationContentResolver;
import org.opencdmp.commonmodels.models.FileEnvelopeModel;
import org.opencdmp.commonmodels.models.description.DescriptionModel;
import org.opencdmp.commons.JsonHandlingService;
@ -101,9 +102,10 @@ public class EvaluatorServiceImpl implements EvaluatorService {
private final StorageFileService storageFileService;
private final StorageFileProperties storageFileProperties;
private final ValidatorFactory validatorFactory;
private final AuthorizationContentResolver authorizationContentResolver;
@Autowired
public EvaluatorServiceImpl(EvaluatorProperties evaluatorProperties, Map<String, EvaluatorClientImpl> clients, TokenExchangeCacheService tokenExchangeCacheService, EvaluatorConfigurationCacheService evaluatorConfigurationCacheService, AuthorizationService authorizationService, QueryFactory queryFactory, BuilderFactory builderFactory, MessageSource messageSource, ConventionService conventionService, TenantScope tenantScope, EncryptionService encryptionService, TenantProperties tenantProperties, JsonHandlingService jsonHandlingService, EvaluatorSourcesCacheService evaluatorSourcesCacheService, AccountingService accountingService, TenantEntityManager entityManager, FileTransformerService fileTransformerService, UserScope userScope, StorageFileService storageFileService, StorageFileProperties storageFileProperties, ValidatorFactory validatorFactory) {
public EvaluatorServiceImpl(EvaluatorProperties evaluatorProperties, Map<String, EvaluatorClientImpl> clients, TokenExchangeCacheService tokenExchangeCacheService, EvaluatorConfigurationCacheService evaluatorConfigurationCacheService, AuthorizationService authorizationService, QueryFactory queryFactory, BuilderFactory builderFactory, MessageSource messageSource, ConventionService conventionService, TenantScope tenantScope, EncryptionService encryptionService, TenantProperties tenantProperties, JsonHandlingService jsonHandlingService, EvaluatorSourcesCacheService evaluatorSourcesCacheService, AccountingService accountingService, TenantEntityManager entityManager, FileTransformerService fileTransformerService, UserScope userScope, StorageFileService storageFileService, StorageFileProperties storageFileProperties, ValidatorFactory validatorFactory, AuthorizationContentResolver authorizationContentResolver) {
this.evaluatorProperties = evaluatorProperties;
this.clients = clients;
this.tokenExchangeCacheService = tokenExchangeCacheService;
@ -125,6 +127,7 @@ public class EvaluatorServiceImpl implements EvaluatorService {
this.storageFileService = storageFileService;
this.storageFileProperties = storageFileProperties;
this.validatorFactory = validatorFactory;
this.authorizationContentResolver = authorizationContentResolver;
}
private EvaluatorClientImpl getEvaluatorClient(String repoId) throws InvalidApplicationException, InvalidAlgorithmParameterException, NoSuchPaddingException, IllegalBlockSizeException, NoSuchAlgorithmException, BadPaddingException, InvalidKeyException {
String repositoryIdByTenant = this.getRepositoryIdByTenant(repoId);
@ -271,7 +274,7 @@ public class EvaluatorServiceImpl implements EvaluatorService {
@Override
public RankModel rankPlan(UUID planId, String evaluatorId, String format, boolean isPublic) throws InvalidAlgorithmParameterException, NoSuchPaddingException, IllegalBlockSizeException, InvalidApplicationException, NoSuchAlgorithmException, BadPaddingException, InvalidKeyException, IOException, InvalidTypeException {
this.authorizationService.authorizeForce(Permission.EvaluatePlan);
this.authorizationService.authorizeAtLeastOneForce(List.of(this.authorizationContentResolver.planAffiliation(planId)), Permission.EvaluatePlan);
EvaluatorClientImpl repository = this.getEvaluatorClient(evaluatorId);
if(repository == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{format, EvaluatorClientImpl.class.getSimpleName()}, LocaleContextHolder.getLocale()));
@ -298,7 +301,7 @@ public class EvaluatorServiceImpl implements EvaluatorService {
@Override
public RankModel rankDescription(UUID descriptionId, String repositoryId, String format, boolean isPublic) throws InvalidAlgorithmParameterException, NoSuchPaddingException, IllegalBlockSizeException, InvalidApplicationException, NoSuchAlgorithmException, BadPaddingException, InvalidKeyException, IOException {
this.authorizationService.authorizeForce(Permission.EvaluateDescription);
this.authorizationService.authorizeAtLeastOneForce(List.of(this.authorizationContentResolver.descriptionAffiliation(descriptionId)), Permission.EvaluateDescription);
EvaluatorClientImpl repository = this.getEvaluatorClient(repositoryId);
if(repository == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{format, EvaluatorClientImpl.class.getSimpleName()}, LocaleContextHolder.getLocale()));

View File

@ -276,7 +276,7 @@ public class FileTransformerServiceImpl implements FileTransformerService {
if (entity == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{planId, Plan.class.getSimpleName()}, LocaleContextHolder.getLocale()));
PlanModel planFileTransformerModel = this.builderFactory.builder(PlanCommonModelBuilder.class).useSharedStorage(repository.getConfiguration().isUseSharedStorage()).setRepositoryId(repository.getConfiguration().getFileTransformerId()).isPublic(isPublic).authorize(AuthorizationFlags.All).build(entity);
PlanModel planFileTransformerModel = this.builderFactory.builder(PlanCommonModelBuilder.class).useSharedStorage(repository.getConfiguration().isUseSharedStorage()).setRepositoryId(repository.getConfiguration().getFileTransformerId()).isPublic(isPublic).authorize(isPublic ? AuthorizationFlags.All: AuthorizationFlags.AllExceptPublic).build(entity);
if (planFileTransformerModel == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{planId, Plan.class.getSimpleName()}, LocaleContextHolder.getLocale()));
FileEnvelopeModel fileEnvelope = repository.exportPlan(planFileTransformerModel, format);
@ -316,7 +316,7 @@ public class FileTransformerServiceImpl implements FileTransformerService {
if (entity == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{descriptionId, Description.class.getSimpleName()}, LocaleContextHolder.getLocale()));
DescriptionModel descriptionFileTransformerModel = this.builderFactory.builder(DescriptionCommonModelBuilder.class).setRepositoryId(repository.getConfiguration().getFileTransformerId()).useSharedStorage(repository.getConfiguration().isUseSharedStorage()).isPublic(isPublic).authorize(AuthorizationFlags.All).build(entity);
DescriptionModel descriptionFileTransformerModel = this.builderFactory.builder(DescriptionCommonModelBuilder.class).setRepositoryId(repository.getConfiguration().getFileTransformerId()).useSharedStorage(repository.getConfiguration().isUseSharedStorage()).isPublic(isPublic).authorize(isPublic ? AuthorizationFlags.All: AuthorizationFlags.AllExceptPublic).build(entity);
if (descriptionFileTransformerModel == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{descriptionId, Description.class.getSimpleName()}, LocaleContextHolder.getLocale()));
FileEnvelopeModel fileEnvelope = repository.exportDescription(descriptionFileTransformerModel, format);

View File

@ -1,4 +1,4 @@
export enum SuccessStatus {
Fail = 0,
Pass = 1
Fail = "Fail",
Pass = "Pass"
}

View File

@ -33,6 +33,7 @@ import { UsageLimitTargetMetric } from '@app/core/common/enum/usage-limit-target
import { UsageLimitPeriodicityRange } from '@app/core/common/enum/usage-limit-periodicity-range';
import { PlanStatusAvailableActionType } from '@app/core/common/enum/plan-status-available-action-type';
import { DescriptionStatusAvailableActionType } from '@app/core/common/enum/description-status-available-action-type';
import { SuccessStatus } from '@app/core/model/evaluator/evaluator-success-status.model';
@Injectable()
export class EnumUtils {
@ -342,4 +343,12 @@ export class EnumUtils {
}
}
public toSuccessStatusString(value: SuccessStatus): string {
switch (value) {
case SuccessStatus.Fail: return this.language.instant('TYPES.EVALUATOR-SUCCESS-STATUS.FAIL');
case SuccessStatus.Pass: return this.language.instant('TYPES.EVALUATOR-SUCCESS-STATUS.PASS');
default: return '';
}
}
}

View File

@ -244,7 +244,7 @@
<mat-menu #rankMenu="matMenu" xPosition="before">
<button mat-menu-item *ngFor='let evaluator of evaluatorService.availableEvaluatorsFor(evaluatorEntityTypeEnum.Plan)'
(click)="onEvaluatePlan(plan.id, evaluator.evaluatorId, evaluator.format, isPublicView)">
(click)="onEvaluatePlan(plan.id, evaluator.evaluatorId, evaluator.format, evaluator.rankConfig, isPublicView)">
<span class="evaluator-id pr-2">{{ (evaluator.evaluatorId?.toUpperCase()) | translate }}</span>
<img *ngIf="evaluator.hasLogo" class="logo" [src]="logos.get(evaluator.evaluatorId)">
<img *ngIf="!evaluator.hasLogo" class="logo" src="assets/images/repository-placeholder.png">

View File

@ -59,6 +59,7 @@ import { NewVersionPlanDialogComponent } from '../new-version-dialog/plan-new-ve
import { PlanDeleteDialogComponent } from '../plan-delete-dialog/plan-delete-dialog.component';
import { PlanEvaluateDialogComponent } from '../plan-evaluate-dialog/plan-evaluate-dialog.component';
import { PlanFinalizeDialogComponent, PlanFinalizeDialogOutput } from '../plan-finalize-dialog/plan-finalize-dialog.component';
import { RankConfig } from '@app/core/model/evaluator/rank-config';
@Component({
selector: 'app-plan-overview',
@ -324,26 +325,7 @@ export class PlanOverviewComponent extends BaseComponent implements OnInit {
return (authorizationFlags?.some(x => x === AppPermission.EvaluatePlan) || this.authentication.hasPermission(AppPermission.EvaluatePlan));
}
// onEvaluatePlan(planId: Guid, evaluatorId: string, format: string, isPublicView: boolean) {
// this.evaluatorService.rankPlan(planId, evaluatorId, format).subscribe(
// (response: RankModel) => {
// const dialogRef = this.dialog.open(PlanEvaluateDialogComponent, {
// data: { rankData: response }
// });
// dialogRef.afterClosed().subscribe(result => {
// this.logger.debug("Dialog closed with result:", result);
// });
// },
// error => {
// this.logger.error("Error ranking plan:", error);
// }
// );
// }
onEvaluatePlan(planId: Guid, evaluatorId: string, format: string, isPublicView: boolean) {
onEvaluatePlan(planId: Guid, evaluatorId: string, format: string, rankConfig: RankConfig ,isPublicView: boolean) {
this.evaluatorService.rankPlan(planId, evaluatorId, format).subscribe(
(response: RankModel) => {
this.evaluatorService.getLogo(evaluatorId).subscribe(
@ -354,6 +336,7 @@ export class PlanOverviewComponent extends BaseComponent implements OnInit {
const dialogRef = this.dialog.open(PlanEvaluateDialogComponent, {
data: {
rankData: response,
rankConfig: rankConfig
}
});

View File

@ -1,35 +1,29 @@
<h1 mat-dialog-title>{{ 'PLAN-EVALUATE-DIALOG.HEADER' | translate }}</h1>
<div mat-dialog-content>
<mat-card>
<mat-card-header>
<mat-card-title>{{'PLAN-EVALUATE-DIALOG.DETAILS-SUB-HEADER' | translate}}</mat-card-title>
</mat-card-header>
<mat-card-content>
<div *ngIf="data.rankData" class="dialog-content">
<mat-form-field appearance="fill">
<mat-label>{{'PLAN-EVALUATE-DIALOG.RANK-BODY' | translate}}</mat-label>
<input matInput [value]="data.rankData.body.rank" disabled>
</mat-form-field>
<mat-form-field appearance="fill">
<mat-label>{{'PLAN-EVALUATE-DIALOG.DETAILS-BODY' | translate}}</mat-label>
<textarea matInput [value]="data.rankData.body.details" rows="4" disabled></textarea>
</mat-form-field>
<h1 *ngIf="isSelectionRankType && selectionRankResult" mat-dialog-title>{{ 'PLAN-EVALUATE-DIALOG.HEADER' | translate }}: {{enumUtils.toSuccessStatusString(selectionRankResult)}}</h1>
<div mat-dialog-content *ngIf="data?.rankData?.body?.details || data?.rankData?.body?.messages" >
<mat-card-content class="dialog-content">
<ng-container *ngIf="data.rankData.body.details" >
<mat-card-header>
<mat-card-title>{{'PLAN-EVALUATE-DIALOG.DETAILS-SUB-HEADER' | translate}}</mat-card-title>
</mat-card-header>
<mat-form-field appearance="fill">
<mat-label>{{'PLAN-EVALUATE-DIALOG.DETAILS-BODY' | translate}}</mat-label>
<textarea matInput [value]="data.rankData.body.details" rows="4" disabled></textarea>
</mat-form-field>
</ng-container>
<div *ngIf="data.rankData.body.messages">
<ng-container *ngIf="data.rankData.body.messages">
<mat-card-header>
<mat-card-title>{{'PLAN-EVALUATE-DIALOG.MESSAGES-BODY' | translate}}</mat-card-title>
</mat-card-header>
<mat-card>
<mat-card-content>
<ul>
<li *ngFor="let entry of data.rankData.body.messages | keyvalue">
<strong>{{ entry.key }}:</strong> {{ entry.value }}
<li *ngFor="let entry of data.rankData.body.messages | keyvalue; let i=index;">
<strong>{{ 'PLAN-EVALUATE-DIALOG.ERROR' | translate }} {{i+1}}:</strong> {{ entry.value }}
</li>
</ul>
</mat-card-content>
</mat-card>
</div>
</div>
</ng-container>
</mat-card-content>
</mat-card>
</div>

View File

@ -1,6 +1,11 @@
import { HttpResponse } from '@angular/common/http';
import { Component, Inject } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { RankModel } from '@app/core/model/evaluator/evaluator-plan-model.model';
import { SuccessStatus } from '@app/core/model/evaluator/evaluator-success-status.model';
import { RankConfig } from '@app/core/model/evaluator/rank-config';
import { RankType } from '@app/core/model/evaluator/rank-type';
import { EnumUtils } from '@app/core/services/utilities/enum-utils.service';
@Component({
selector: 'app-plan-evaluate-dialog',
@ -11,6 +16,19 @@ export class PlanEvaluateDialogComponent {
// Injecting the dialog data into the component
constructor(
public dialogRef: MatDialogRef<PlanEvaluateDialogComponent>,
@Inject(MAT_DIALOG_DATA) public data: { rankData: RankModel },
public enumUtils: EnumUtils,
@Inject(MAT_DIALOG_DATA) public data: { rankData: HttpResponse<RankModel>, rankConfig: RankConfig},
) { }
get isValueRangeRankType(): boolean{
return this.data?.rankConfig?.rankType === RankType.ValueRange;
}
get isSelectionRankType(): boolean{
return this.data?.rankConfig?.rankType === RankType.Selection;
}
get selectionRankResult(): SuccessStatus{
return this.data?.rankConfig?.selectionConfiguration?.valueSetList?.find(x => x.key == this.data?.rankData?.body?.rank)?.successStatus || null;
}
}

View File

@ -1966,15 +1966,16 @@
"MESSAGE": "Somebody else is modifying the Plan at this moment. You may view the Plan but you cannot make any changes."
}
},
"PLAN-EVALUATE-DIALOG":{
"HEADER": "Ranking Information",
"PLAN-EVALUATE-DIALOG": {
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"MESSAGES-BODY": "Messages",
"ERROR":"Error"
},
"DESCRIPTION-EVALUATE-DIALOG":{
"HEADER": "Ranking Information",
"DESCRIPTION-EVALUATE-DIALOG": {
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
@ -2365,6 +2366,10 @@
"USAGE-LIMIT-PERIODICITY-RANGE": {
"MONTHLY": "Monthly",
"YEARLY": "Yearly"
},
"EVALUATOR-SUCCESS-STATUS": {
"FAIL": "Failed",
"PASS": "Passed"
}
},
"FOOTER": {

View File

@ -1969,15 +1969,16 @@
"MESSAGE": "Somebody else is modifying the Plan at this moment. You may view the Plan but you cannot make any changes."
}
},
"PLAN-EVALUATE-DIALOG":{
"HEADER": "Ranking Information",
"PLAN-EVALUATE-DIALOG": {
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"MESSAGES-BODY": "Messages",
"ERROR":"Error"
},
"DESCRIPTION-EVALUATE-DIALOG":{
"HEADER": "Ranking Information",
"DESCRIPTION-EVALUATE-DIALOG": {
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
@ -2368,6 +2369,10 @@
"USAGE-LIMIT-PERIODICITY-RANGE": {
"MONTHLY": "Monthly",
"YEARLY": "Yearly"
},
"EVALUATOR-SUCCESS-STATUS": {
"FAIL": "Failed",
"PASS": "Passed"
}
},
"FOOTER": {

View File

@ -1969,15 +1969,16 @@
"MESSAGE": "Somebody else is modifying the Plan at this moment. You may view the Plan but you cannot make any changes."
}
},
"PLAN-EVALUATE-DIALOG":{
"HEADER": "Ranking Information",
"PLAN-EVALUATE-DIALOG": {
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"MESSAGES-BODY": "Messages",
"ERROR":"Error"
},
"DESCRIPTION-EVALUATE-DIALOG":{
"HEADER": "Ranking Information",
"DESCRIPTION-EVALUATE-DIALOG": {
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
@ -2368,6 +2369,10 @@
"USAGE-LIMIT-PERIODICITY-RANGE": {
"MONTHLY": "Monthly",
"YEARLY": "Yearly"
},
"EVALUATOR-SUCCESS-STATUS": {
"FAIL": "Failed",
"PASS": "Passed"
}
},
"FOOTER": {

View File

@ -1970,18 +1970,19 @@
}
},
"PLAN-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages",
"ERROR":"Error"
},
"DESCRIPTION-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
},
"REFERENCE-FIELD": {
"COULD-NOT-FIND-MESSAGE": "Couldn't find it?",
@ -2368,6 +2369,10 @@
"USAGE-LIMIT-PERIODICITY-RANGE": {
"MONTHLY": "Monthly",
"YEARLY": "Yearly"
},
"EVALUATOR-SUCCESS-STATUS": {
"FAIL": "Failed",
"PASS": "Passed"
}
},
"FOOTER": {

View File

@ -1970,18 +1970,19 @@
}
},
"PLAN-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages",
"ERROR":"Error"
},
"DESCRIPTION-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
},
"REFERENCE-FIELD": {
"COULD-NOT-FIND-MESSAGE": "Couldn't find it?",
@ -2368,6 +2369,10 @@
"USAGE-LIMIT-PERIODICITY-RANGE": {
"MONTHLY": "Monthly",
"YEARLY": "Yearly"
},
"EVALUATOR-SUCCESS-STATUS": {
"FAIL": "Failed",
"PASS": "Passed"
}
},
"FOOTER": {

View File

@ -1970,18 +1970,19 @@
}
},
"PLAN-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages",
"ERROR":"Error"
},
"DESCRIPTION-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
},
"REFERENCE-FIELD": {
"COULD-NOT-FIND-MESSAGE": "Couldn't find it?",
@ -2368,6 +2369,10 @@
"USAGE-LIMIT-PERIODICITY-RANGE": {
"MONTHLY": "Monthly",
"YEARLY": "Yearly"
},
"EVALUATOR-SUCCESS-STATUS": {
"FAIL": "Failed",
"PASS": "Passed"
}
},
"FOOTER": {

View File

@ -1970,18 +1970,19 @@
}
},
"PLAN-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages",
"ERROR":"Error"
},
"DESCRIPTION-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
},
"REFERENCE-FIELD": {
"COULD-NOT-FIND-MESSAGE": "Couldn't find it?",
@ -2368,6 +2369,10 @@
"USAGE-LIMIT-PERIODICITY-RANGE": {
"MONTHLY": "Monthly",
"YEARLY": "Yearly"
},
"EVALUATOR-SUCCESS-STATUS": {
"FAIL": "Failed",
"PASS": "Passed"
}
},
"FOOTER": {

View File

@ -1970,18 +1970,19 @@
}
},
"PLAN-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages",
"ERROR":"Error"
},
"DESCRIPTION-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
},
"REFERENCE-FIELD": {
"COULD-NOT-FIND-MESSAGE": "Couldn't find it?",
@ -2368,6 +2369,10 @@
"USAGE-LIMIT-PERIODICITY-RANGE": {
"MONTHLY": "Monthly",
"YEARLY": "Yearly"
},
"EVALUATOR-SUCCESS-STATUS": {
"FAIL": "Failed",
"PASS": "Passed"
}
},
"FOOTER": {

View File

@ -1970,18 +1970,19 @@
}
},
"PLAN-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages",
"ERROR":"Error"
},
"DESCRIPTION-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
},
"REFERENCE-FIELD": {
"COULD-NOT-FIND-MESSAGE": "Couldn't find it?",
@ -2368,6 +2369,10 @@
"USAGE-LIMIT-PERIODICITY-RANGE": {
"MONTHLY": "Monthly",
"YEARLY": "Yearly"
},
"EVALUATOR-SUCCESS-STATUS": {
"FAIL": "Failed",
"PASS": "Passed"
}
},
"FOOTER": {

View File

@ -1970,18 +1970,19 @@
}
},
"PLAN-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages",
"ERROR":"Error"
},
"DESCRIPTION-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
},
"REFERENCE-FIELD": {
"COULD-NOT-FIND-MESSAGE": "Couldn't find it?",
@ -2368,6 +2369,10 @@
"USAGE-LIMIT-PERIODICITY-RANGE": {
"MONTHLY": "Monthly",
"YEARLY": "Yearly"
},
"EVALUATOR-SUCCESS-STATUS": {
"FAIL": "Failed",
"PASS": "Passed"
}
},
"FOOTER": {

View File

@ -1970,18 +1970,19 @@
}
},
"PLAN-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages",
"ERROR":"Error"
},
"DESCRIPTION-EVALUATE-DIALOG": {
"HEADER": "Ranking Information",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
"HEADER": "Evaluation Result",
"DETAILS-SUB-HEADER": "Details",
"RANK-BODY": "Rank",
"DETAILS-BODY": "Details",
"MESSAGES-BODY": "Messages"
},
"REFERENCE-FIELD": {
"COULD-NOT-FIND-MESSAGE": "Couldn't find it?",
@ -2368,6 +2369,10 @@
"USAGE-LIMIT-PERIODICITY-RANGE": {
"MONTHLY": "Monthly",
"YEARLY": "Yearly"
},
"EVALUATOR-SUCCESS-STATUS": {
"FAIL": "Failed",
"PASS": "Passed"
}
},
"FOOTER": {