Skip to content

Commit 838a0d2

Browse files
committed
[CST-9683] Fix visualization order of the metrics boxes in the item page
1 parent 6af2398 commit 838a0d2

5 files changed

Lines changed: 20 additions & 24 deletions

File tree

src/app/core/core.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ import { EditItemMode } from './submission/models/edititem-mode.model';
162162
import { AuditDataService } from './audit/audit-data.service';
163163
import { Audit } from './audit/model/audit.model';
164164
import { ItemExportFormat } from './itemexportformat/model/item-export-format.model';
165-
import { MetricsComponentsDataService } from './layout/metrics-components-data.service';
165+
import { MetricsComponentsService } from './layout/metrics-components.service';
166166
import { MetricsComponent } from './layout/models/metrics-component.model';
167167
import { Metric } from './shared/metric.model';
168168
import { MetricsDataService } from './data/metrics-data.service';
@@ -354,7 +354,7 @@ const PROVIDERS = [
354354
FilteredDiscoveryPageResponseParsingService,
355355
{ provide: NativeWindowService, useFactory: NativeWindowFactory },
356356
TabDataService,
357-
MetricsComponentsDataService,
357+
MetricsComponentsService,
358358
MetricsDataService,
359359
VocabularyService,
360360
VocabularyDataService,

src/app/core/layout/metrics-components-data.service.spec.ts renamed to src/app/core/layout/metrics-components.service.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { Metric } from '../shared/metric.model';
2-
import { MetricsComponentsDataService } from './metrics-components-data.service';
2+
import { MetricsComponentsService } from './metrics-components.service';
33

4-
describe('MetricsComponentsDataService', () => {
4+
describe('MetricsComponentsService', () => {
55

6-
let service: MetricsComponentsDataService;
6+
let service: MetricsComponentsService;
77

88
beforeEach(() => {
9-
service = new MetricsComponentsDataService();
9+
service = new MetricsComponentsService();
1010

1111
});
1212

@@ -44,8 +44,8 @@ describe('MetricsComponentsDataService', () => {
4444

4545
expect(result.length).toBe(1);
4646
expect(result[0].metrics.length).toBe(2);
47-
expect(result[0].metrics[0].metricType).toBe('views');
48-
expect(result[0].metrics[1].metricType).toBe('downloads');
47+
expect(result[0].metrics[0].metricType).toBe('downloads');
48+
expect(result[0].metrics[1].metricType).toBe('views');
4949

5050
});
5151

src/app/core/layout/metrics-components-data.service.ts renamed to src/app/core/layout/metrics-components.service.ts

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { CrisLayoutMetricRow } from './models/tab.model';
44
/**
55
* A service responsible for managing metrics objects
66
*/
7-
export class MetricsComponentsDataService {
7+
export class MetricsComponentsService {
88

99
/**
1010
* Get matching metrics for item.
@@ -20,17 +20,13 @@ export class MetricsComponentsDataService {
2020

2121
computeMetricsRows(itemMetrics: Metric[], maxColumn, metricTypes: string[]): CrisLayoutMetricRow[] {
2222

23-
// support
24-
const typeMap = {};
25-
metricTypes.forEach((type) => typeMap[type] = type);
26-
2723
// filter, enrich, order
28-
const metrics = itemMetrics
29-
.filter((metric) => typeMap[metric.metricType])
30-
.map((metric) => {
31-
return { ...metric, position: typeMap[metric.metricType].position };
24+
const metrics: Metric[] = itemMetrics
25+
.filter((metric: Metric) => metricTypes.includes(metric.metricType))
26+
.map((metric: Metric) => {
27+
return { ...metric, position: metricTypes.indexOf(metric.metricType) };
3228
})
33-
.sort((metric) => metric.position);
29+
.sort((metricA, metricB ) => metricA.position - metricB.position);
3430

3531
// chunker
3632
const totalRow = Math.ceil(metrics.length / maxColumn);

src/app/cris-layout/cris-layout-matrix/cris-layout-box-container/boxes/metrics/cris-layout-metrics-box.component.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* eslint-disable max-classes-per-file */
2-
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2+
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
33

44
import { Observable, of } from 'rxjs';
55
import { RemoteData } from '../../../../../core/data/remote-data';
@@ -16,7 +16,7 @@ import { SharedModule } from '../../../../../shared/shared.module';
1616
import { CrisLayoutMetricsBoxComponent } from './cris-layout-metrics-box.component';
1717
import { metricsComponent } from '../../../../../shared/testing/metrics-components.mock';
1818
import { MetricsComponent } from '../../../../../core/layout/models/metrics-component.model';
19-
import { MetricsComponentsDataService } from '../../../../../core/layout/metrics-components-data.service';
19+
import { MetricsComponentsService } from '../../../../../core/layout/metrics-components.service';
2020
import { Metric } from '../../../../../core/shared/metric.model';
2121
import { ItemDataService } from '../../../../../core/data/item-data.service';
2222
import { CrisLayoutMetricRow } from '../../../../../core/layout/models/tab.model';
@@ -78,7 +78,7 @@ describe('CrisLayoutMetricsBoxComponent', () => {
7878
let component: CrisLayoutMetricsBoxComponent;
7979
let fixture: ComponentFixture<CrisLayoutMetricsBoxComponent>;
8080

81-
beforeEach(async(() => {
81+
beforeEach(waitForAsync(() => {
8282

8383
itemDataService = jasmine.createSpyObj('ItemDataService', {
8484
getMetrics: jasmine.createSpy('getMetrics')
@@ -94,7 +94,7 @@ describe('CrisLayoutMetricsBoxComponent', () => {
9494
BrowserAnimationsModule,
9595
SharedModule],
9696
providers: [
97-
{ provide: MetricsComponentsDataService, useClass: MetricsComponentsDataServiceMock },
97+
{ provide: MetricsComponentsService, useClass: MetricsComponentsDataServiceMock },
9898
{ provide: ItemDataService, useValue: itemDataService },
9999
{ provide: 'boxProvider', useClass: boxMetrics },
100100
{ provide: 'itemProvider', useClass: { metrics: [metric1Mock, metric2Mock] } },

src/app/cris-layout/cris-layout-matrix/cris-layout-box-container/boxes/metrics/cris-layout-metrics-box.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { RenderCrisLayoutBoxFor } from '../../../../decorators/cris-layout-box.d
88
import { LayoutBox } from '../../../../enums/layout-box.enum';
99
import { getFirstSucceededRemoteDataPayload } from '../../../../../core/shared/operators';
1010
import { hasValue } from '../../../../../shared/empty.util';
11-
import { MetricsComponentsDataService } from '../../../../../core/layout/metrics-components-data.service';
11+
import { MetricsComponentsService } from '../../../../../core/layout/metrics-components.service';
1212
import { ItemDataService } from '../../../../../core/data/item-data.service';
1313
import { CrisLayoutBox, MetricsBoxConfiguration, } from '../../../../../core/layout/models/box.model';
1414
import { Item } from '../../../../../core/shared/item.model';
@@ -51,7 +51,7 @@ export class CrisLayoutMetricsBoxComponent extends CrisLayoutBoxModelComponent i
5151
subs: Subscription[] = [];
5252

5353
constructor(
54-
protected metricsComponentService: MetricsComponentsDataService,
54+
protected metricsComponentService: MetricsComponentsService,
5555
protected itemService: ItemDataService,
5656
protected translateService: TranslateService,
5757
@Inject('boxProvider') public boxProvider: CrisLayoutBox,

0 commit comments

Comments
 (0)