Skip to content

Commit e51e69a

Browse files
committed
refactor
1 parent 826ea91 commit e51e69a

5 files changed

Lines changed: 22 additions & 9 deletions

File tree

lib/public/models/DataExportModel.js

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ export class DataExportModel extends Observable {
2222
/**
2323
* Constructor
2424
* @param {ObservableData<RemoteData<T[]>>} items$ observable data used as source for export
25-
* @param {function} onDataNotAskedAction
25+
* @param {object<string, {exportFormat: function|null|undefined}>} fieldsFormatting defines selectable fields and their formatting
26+
* @param {function} onDataNotAskedAction function to be called in case of missing data
2627
*/
27-
constructor(items$, onDataNotAskedAction) {
28+
constructor(items$, fieldsFormatting, onDataNotAskedAction) {
2829
super();
2930

3031
this._items$ = items$;
@@ -38,14 +39,22 @@ export class DataExportModel extends Observable {
3839

3940
this._exportName = 'data';
4041

41-
this.columnFormats = null;
42+
this._fieldsFormatting = fieldsFormatting;
4243
this._onDataNotAskedAction = onDataNotAskedAction;
4344

4445
this._disabled = null;
4546

4647
this._totalExistingItemsCount = null;
4748
}
4849

50+
/**
51+
* Get mapping of selecteble fields to their format functions
52+
* @return {object<string, {exportFormat: function|null|undefined}>} mapping
53+
*/
54+
get fieldsFormatting() {
55+
return this._fieldsFormatting;
56+
}
57+
4958
/**
5059
* Get total number of items that model knows they exist
5160
* @return {number} totalExistingItemsCount
@@ -104,7 +113,7 @@ export class DataExportModel extends Observable {
104113

105114
/**
106115
* Observable notified when the export configuration visually changes
107-
* @return {Observable}
116+
* @return {Observable} the visual change observable
108117
*/
109118
get visualChange$() {
110119
return this._visualChange$;
@@ -161,7 +170,7 @@ export class DataExportModel extends Observable {
161170
const formatted = items.map((item) => {
162171
const selectedEntries = Object.entries(pick(item, selectedFields));
163172
const mappedEntries = selectedEntries.map(([key, value]) => {
164-
const formatter = this.columnFormats[key]?.exportFormat || ((v) => v);
173+
const formatter = this.fieldsFormatting[key]?.exportFormat || ((v) => v);
165174
return [key, formatter(value, item)];
166175
});
167176

lib/public/models/OverviewModel.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,11 @@ export class OverviewPageModel extends Observable {
241241
return this._sortModel;
242242
}
243243

244+
/**
245+
* State whther some data was successfuly fetched
246+
*
247+
* @return {boolean} true if any data was successfuly fetched, false otherwise
248+
*/
244249
hasAnyData() {
245250
return this._item$.getCurrent().match({ Success: ({ length = 0 } = {}) => length > 0, Other: () => false });
246251
}

lib/public/views/Runs/Overview/RunsOverviewModel.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import { RunDefinitionFilterModel } from '../../../components/Filters/RunsFilter
3434
import { RUN_QUALITIES } from '../../../domain/enums/RunQualities.js';
3535
import { SelectionFilterModel } from '../../../components/Filters/common/filters/SelectionFilterModel.js';
3636
import { DataExportModel } from '../../../models/DataExportModel.js';
37+
import { runsActiveColumns as fieldsFormattingConf } from '../ActiveColumns/runsActiveColumns.js';
3738

3839
/**
3940
* Model representing handlers for runs page
@@ -100,7 +101,7 @@ export class RunsOverviewModel extends OverviewPageModel {
100101
this._debouncedLoad = debounce(this.load.bind(this), model.inputDebounceTime);
101102
};
102103

103-
this._exportModel = new DataExportModel(this._allItems$, () => this.loadAll());
104+
this._exportModel = new DataExportModel(this._allItems$, fieldsFormattingConf, () => this.loadAll());
104105
this._item$.observe(() => {
105106
this._exportModel.setDisabled(!this.hasAnyData());
106107
this._exportModel.setTotalExistingItemsCount(this._pagination.itemsCount);

lib/public/views/Runs/Overview/RunsOverviewPage.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,6 @@ export const RunsOverviewPage = ({ runs: { overviewModel: runsOverviewModel }, m
5151
PAGE_USED_HEIGHT,
5252
));
5353

54-
runsOverviewModel.exportModel.columnFormats = runsActiveColumns;
55-
5654
return h('', [
5755
h('.flex-row.header-container.g2.pv2', [
5856
filtersPanelPopover(runsOverviewModel, runsActiveColumns),

lib/public/views/Runs/Overview/exportTriggerAndModal.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const exportForm = (exportModel, modalHandler) => {
2727

2828
const { selectedFields } = exportModel;
2929
const { selectedExportType } = exportModel;
30-
const fields = Object.keys(exportModel.columnFormats);
30+
const fields = Object.keys(exportModel.fieldsFormatting);
3131

3232
const fieldsSelected = selectedFields.length > 0;
3333

0 commit comments

Comments
 (0)