-
Piotr Gawron authoredPiotr Gawron authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
helper.js 9.32 KiB
"use strict";
require("./mocha-config");
var logger = require('./logger');
var Alias = require("../../main/js/map/data/Alias");
var AbstractCustomMap = require("../../main/js/map/AbstractCustomMap");
var ChemicalDbOverlay = require("../../main/js/map/overlay/ChemicalDbOverlay");
var Comment = require("../../main/js/map/data/Comment");
var CommentDbOverlay = require("../../main/js/map/overlay/CommentDbOverlay");
var CustomMap = require("../../main/js/map/CustomMap");
var CustomMapOptions = require("../../main/js/map/CustomMapOptions");
var DrugDbOverlay = require("../../main/js/map/overlay/DrugDbOverlay");
var IdentifiedElement = require("../../main/js/map/data/IdentifiedElement");
var LayoutAlias = require("../../main/js/map/data/LayoutAlias");
var LayoutData = require("../../main/js/map/data/LayoutData");
var LayoutReaction = require("../../main/js/map/data/LayoutReaction");
var MiRnaDbOverlay = require("../../main/js/map/overlay/MiRnaDbOverlay");
var Model = require("../../main/js/map/data/MapModel");
var AbstractDbOverlay = require("../../main/js/map/overlay/AbstractDbOverlay");
var Project = require("../../main/js/map/data/Project");
var Reaction = require("../../main/js/map/data/Reaction");
var SearchDbOverlay = require("../../main/js/map/overlay/SearchDbOverlay");
var User = require("../../main/js/map/data/User");
var Cookies = require('js-cookie');
var fs = require('fs');
var Promise = require('bluebird');
var GuiConnector = require('../../main/js/GuiConnector');
function Helper(configuration) {
if (configuration === undefined) {
throw new Error("Configuration must be defined");
}
this.setConfiguration(configuration);
this.idCounter = 1000000;
}
Helper.prototype.setConfiguration = function (configuration) {
this._configuration = configuration;
};
Helper.prototype.getConfiguration = function () {
return this._configuration;
};
Helper.prototype.createCommentDbOverlay = function (map) {
var result = new CommentDbOverlay({
map: map,
name: "comment",
allowGeneralSearch: true
});
map.registerDbOverlay(result);
return result;
};
Helper.prototype.createSearchDbOverlay = function (map) {
var result = new SearchDbOverlay({
map: map,
name: "search",
});
map.registerDbOverlay(result);
return result;
};
Helper.prototype.createDbOverlay = function (map) {
var result = new AbstractDbOverlay({
map: map,
name: "search",
});
result.clear = function () {
logger.debug("Clear mock");
};
map.registerDbOverlay(result);
return result;
};
Helper.prototype.createDrugDbOverlay = function (map) {
var result = new DrugDbOverlay({
map: map,
name: "drug",
allowGeneralSearch: true,
allowSearchById: true,
});
map.registerDbOverlay(result);
return result;
};
Helper.prototype.createChemicalDbOverlay = function (map) {
var result = new ChemicalDbOverlay({
map: map,
name: "chemical",
allowGeneralSearch: true,
allowSearchById: true,
});
map.registerDbOverlay(result);
return result;
};
Helper.prototype.createMiRnaDbOverlay = function (map) {
var result = new MiRnaDbOverlay({
map: map,
name: "mirna",
allowGeneralSearch: true,
allowSearchById: true,
});
map.registerDbOverlay(result);
return result;
};
Helper.prototype.createComment = function (element) {
var elementType = "ALIAS";
var elementId = this.idCounter++;
var id = this.idCounter++;
var modelId = this.idCounter++;
if (element !== undefined) {
if (element instanceof Alias) {
elementType = "ALIAS";
elementId = element.getId();
modelId = element.getModelId();
} else {
throw new Error("Unknown element type: " + element);
}
}
var result = new Comment({
elementId: elementId,
type: elementType,
modelId: modelId,
icon: "icons/comment.png",
id: id,
pinned: true,
coord: {
x: 321.5,
y: 289.0
},
removed: false,
title: "title fo comment: " + id,
content: "content of the comment # " + id
});
return result;
};
Helper.prototype.createProject = function () {
var result = new Project();
result.setProjectId("testId");
result.setId(this.idCounter++);
result.setModel(this.createModel());
return result;
};
Helper.prototype.createUser = function () {
var result = new User({
login: "test_login",
id: this.idCounter++,
name: "some name",
surname: "surname",
});
return result;
};
Helper.prototype.createAlias = function (map) {
var mapId;
if (map === undefined) {
mapId = this.idCounter++;
} else {
mapId = map.getId();
}
var result = new Alias({
idObject: this.idCounter++,
name: "Test element",
type: "RNA",
modelId: mapId,
bounds: {
x: 10.0,
y: 20.0,
width: 30.0,
height: 40.0,
},
references: [],
});
if (map !== undefined) {
map.getModel().addAlias(result);
}
return result;
};
Helper.prototype.createLayoutAlias = function (alias) {
var id;
if (alias instanceof Alias) {
id = alias.getId();
} else {
id = this.idCounter++;
}
var result = new LayoutAlias({
idObject: id,
value: 0.2,
color: {
a: 23
},
geneVariations: [{}]
});
return result;
};
Helper.prototype.createLayoutReaction = function (reaction) {
var reactionId;
if (reaction instanceof Reaction) {
reactionId = reaction.getId();
} else {
reactionId = this.idCounter++;
}
var result = new LayoutReaction({
idObject: reactionId,
width: 3.4,
color: {
a: 24,
},
reverse: true
});
return result;
};
Helper.prototype.createIdentifiedElement = function (element) {
if (element === undefined) {
return new IdentifiedElement({
type: "ALIAS",
id: this.idCounter++,
modelId: this.idCounter++,
});
}
return new IdentifiedElement(element);
};
Helper.prototype.createReaction = function (map) {
var mapId = null;
if (map !== undefined) {
mapId = map.getId();
} else {
mapId = this.idCounter++;
}
var result = new Reaction({
idObject: this.idCounter++,
lines: [{
start: {
x: 434.8904109589041,
y: 85.0
},
end: {
x: 410.8341500923087,
y: 104.95576185524392
},
type: "START"
}, {
start: {
x: 404.6769250286157,
y: 110.06345991944379
},
end: {
x: 380.62066416202026,
y: 130.0192217746877
},
type: "END"
}],
centerPoint: new google.maps.Point(0, 0),
modelId: mapId,
references: [],
});
return result;
};
Helper.prototype.createOptions = function (project) {
if (project === undefined) {
project = this.createProject();
}
var options = {
mapDiv: testDiv,
element: testDiv,
project: project,
};
return options;
};
Helper.prototype.createModel = function () {
var result = new Model();
result.setId(this.idCounter++);
result.setTileSize(256);
result.setWidth(26547.3333333333);
result.setHeight(800);
result.setMaxZoom(8);
result.setMinZoom(2);
result.setCenterLatLng({
lat: 10,
lng: 20
});
result.setTopLeftLatLng({
lat: 8,
lng: 8
});
result.setBottomRightLatLng({
lat: 30,
lng: 30
});
var layout = this.createLayout();
result.addLayout(layout);
return result;
};
Helper.prototype.createLayout = function () {
var id = this.idCounter++;
var layout = new LayoutData({
idObject: id,
name: "testLayout" + id,
});
return layout;
};
Helper.prototype.createGoogleMap = function () {
var result = new google.maps.Map(testDiv, {
center: {
lat: -34.397,
lng: 150.644
},
scrollwheel: false,
zoom: 8
});
return result;
};
Helper.prototype.createCustomMapOptions = function (project) {
if (project === undefined) {
project = this.createProject();
}
var result = new CustomMapOptions({
markerOptimization: true,
project: project,
element: testDiv,
mapDiv: testDiv,
configuration: this.getConfiguration(),
});
return result;
};
Helper.prototype.createAbstractCustomMap = function () {
var options = this.createCustomMapOptions();
var result = new AbstractCustomMap(options.getProject().getModel(), options);
return result;
};
Helper.prototype.createCustomMap = function (project) {
if (project === null) {
throw new Error("Project cannot be null");
}
var options = this.createCustomMapOptions(project);
var result = new CustomMap(options);
return result;
};
/**
* Changes url but saves the cookies.
*/
Helper.prototype.setUrl = function (url) {
var cookies = Cookies.get();
global.dom.reconfigure({
url: url
});
for (var cookie in cookies) {
Cookies.set(cookie, cookies[cookie]);
}
GuiConnector.init();
};
Helper.prototype.readFile = function (filename) {
return new Promise(function (resolve, reject) {
fs.readFile(filename, 'utf8', function (err, content) {
if (err) {
reject(err);
} else {
resolve(content);
}
});
});
};
Helper.EPSILON = 1e-6;
module.exports = Helper;