Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
helper.js 6.82 KiB
"use strict";

require("./mocha-config");

var Alias = require("../../main/js/map/data/Alias");
var AbstractCustomMap = require("../../main/js/map/AbstractCustomMap");
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 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 Model = require("../../main/js/map/data/MapModel");
var OverlayCollection = require("../../main/js/map/overlay/OverlayCollection");
var Project = require("../../main/js/map/data/Project");
var Reaction = require("../../main/js/map/data/Reaction");
var SearchDbOverlay = require("../../main/js/map/overlay/SearchDbOverlay");

function Helper() {
  this.idCounter = 1000000;
}

Helper.prototype.createCommentDbOverlay = function(map) {
  var result = new CommentDbOverlay({
    map : map,
    name : "comment",
    allowGeneralSearch : true
  });
  return result;
};

Helper.prototype.createSearchDbOverlay = function(map) {
  var result = new SearchDbOverlay({
    map : map,
    name : "search",
  });
  return result;
};



Helper.prototype.createDrugDbOverlay = function(map) {
  var result = this.createDbOverlay(map);
  result.setName('drug');
  result.setAllowGeneralSearch(true);
  result.setAllowSearchById(true);
  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.createDbOverlay = function(map) {
  var result = new OverlayCollection({
    map : map,
    name : "overlay name: " + (this.idCounter++),
    allowGeneralSearch : true
  });
  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.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,
    },
  });
  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",
      idObject : 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,
  });
  return result;
};

Helper.prototype.createOptions = function() {
  var map = this.createGoogleMap();

  var project = this.createProject();

  var options = {
    map : map,
    project : project,
    dataCollections : [ {
      name : "testCollection" + this.idCounter++,
    } ],
  };
  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);

  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() {
  var project = this.createProject();
  var map = this.createGoogleMap();
  var result = new CustomMapOptions({
    markerOptimization : true,
    project : project,
    map : map
  });

  return result;
};

Helper.prototype.createAbstractCustomMap = function() {
  var options = this.createCustomMapOptions();
  var result = new AbstractCustomMap(options.getProject().getModel(), options);

  return result;
};

Helper.prototype.createCustomMap = function() {
  var options = this.createCustomMapOptions();
  var result = new CustomMap(options);
  return result;
};

module.exports = Helper;