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

var SessionObjectType = require('./SessionObjectType');

var Cookies = require('js-cookie');

function SessionData(project) {
  if (project === undefined) {
    throw new Error("Project must be passed as an argument");
  }
  this.setProject(project);
}

SessionData.prototype.setProject = function(project) {
  this._project = project;
};

SessionData.prototype.getProjectId = function() {
  return this._project.getProjectId();
};

SessionData.prototype.getShowComments = function() {
  var key = this.getKey(SessionObjectType.SHOW_COMMENT);
  return Cookies.get(key) === "true";
};

SessionData.prototype.setSearchQuery = function(value) {
  var key = this.getKey(SessionObjectType.SEARCH_QUERY);
  Cookies.set(key, JSON.stringify(value));
};

SessionData.prototype.getSearchQuery = function() {
  var key = this.getKey(SessionObjectType.SEARCH_QUERY);
  var result = Cookies.get(key);
  if (result !== undefined) {
    result = JSON.parse(result);
  }
  return result;
};

SessionData.prototype.setShowComments = function(value) {
  var key = this.getKey(SessionObjectType.SHOW_COMMENT);
  Cookies.set(key, value + "");
};

SessionData.prototype.getSelectedBackgroundOverlay = function() {
  var key = this.getKey(SessionObjectType.SELECTED_BACKGROUND_OVERLAY);
  return Cookies.get(key);
};

SessionData.prototype.setSelectedBackgroundOverlay = function(value) {
  var key = this.getKey(SessionObjectType.SELECTED_BACKGROUND_OVERLAY);
  Cookies.set(key, value + "");
};

SessionData.prototype.getVisibleOverlays = function() {
  var key = this.getKey(SessionObjectType.VISIBLE_OVERLAYS);
  var value = Cookies.get(key);
  if (value === undefined || value === "") {
    value = [];
  } else {
    value = value.split(",");
  }
  return value;
};

SessionData.prototype.setVisibleOverlays = function(value) {
  var key = this.getKey(SessionObjectType.VISIBLE_OVERLAYS);
  Cookies.set(key, value + "");
};

SessionData.prototype.setZoomLevel = function(model, value) {
  var key = this.getKey(SessionObjectType.ZOOM_LEVEL, [ model.getId() ]);
  Cookies.set(key, value + "");
};

SessionData.prototype.getZoomLevel = function(model) {
  var key = this.getKey(SessionObjectType.ZOOM_LEVEL, [ model.getId() ]);
  var value = Cookies.get(key);
  if (value !== undefined) {
    value = parseInt(value);
  }
  return value;
};

SessionData.prototype.setCenter = function(model, value) {
  var key = this.getKey(SessionObjectType.CENTER, [ model.getId() ]);
  Cookies.set(key, value.x + "," + value.y);
};

SessionData.prototype.getCenter = function(model) {
  var key = this.getKey(SessionObjectType.CENTER, [ model.getId() ]);
  var value = Cookies.get(key);
  if (value !== undefined) {
    var tmp = value.split(",");
    value = new google.maps.Point(tmp[0], tmp[1]);
  }
  return value;
};

SessionData.prototype.getKey = function(type, args) {
  if (type === undefined) {
    throw new Error("Undefined type");
  }
  if (args === undefined) {
    args = [];
  }
  return type + "_" + this.getProjectId() + "_" + args.join("_");
};

module.exports = SessionData;