Skip to content
Snippets Groups Projects
Commit 3f47b11b authored by Piotr Gawron's avatar Piotr Gawron
Browse files

Merge branch 'submap-visualization-error' into 'master'

Submap visualization error

See merge request piotr.gawron/minerva!146
parents 336aed5e 98d0e0b2
No related branches found
No related tags found
1 merge request!146Submap visualization error
Pipeline #
......@@ -2,145 +2,145 @@
var Promise = require("bluebird");
/* exported logger */
var Panel = require('../Panel');
var PanelControlElementType = require('../PanelControlElementType');
// noinspection JSUnusedLocalSymbols
var logger = require('../../logger');
var Functions = require('../../Functions');
function SubmapPanel(params) {
params.panelName = "submap";
params.helpTip = "The Submaps tab summarizes all the submap networks uploaded together and linked to the main network of <b>'"
+ params.parent.getMap().getProject().getName() + "'</b> project.";
Panel.call(this, params);
var self = this;
self._createSubmapGui();
params.panelName = "submap";
params.scrollable = true;
params.helpTip = "The Submaps tab summarizes all the submap networks uploaded together and linked to the main network of <b>'"
+ params.parent.getMap().getProject().getName() + "'</b> project.";
Panel.call(this, params);
var self = this;
self._createSubmapGui();
}
SubmapPanel.prototype = Object.create(Panel.prototype);
SubmapPanel.prototype.constructor = SubmapPanel;
SubmapPanel.prototype._createSubmapGui = function () {
var submapDiv = Functions.createElement({
type: "div",
name: "submapDiv",
className: "searchPanel"
});
this.getElement().appendChild(submapDiv);
this.setControlElement(PanelControlElementType.SUBMAP_DIV, submapDiv);
var submapDiv = Functions.createElement({
type: "div",
name: "submapDiv",
className: "searchPanel"
});
this.getElement().appendChild(submapDiv);
this.setControlElement(PanelControlElementType.SUBMAP_DIV, submapDiv);
};
SubmapPanel.prototype.createRow = function (model) {
var self = this;
var guiUtils = self.getGuiUtils();
var result = document.createElement("tr");
var nameTd = document.createElement("td");
nameTd.innerHTML = model.getName();
result.appendChild(nameTd);
var openTd = document.createElement("td");
if (model.getId() !== self.getMap().getId()) {
var img = guiUtils.createIcon("icons/search.png");
var link = document.createElement("a");
link.href = "#";
link.onclick = function () {
self.getMap().openSubmap(model.getId());
};
link.appendChild(img);
openTd.appendChild(link);
}
result.appendChild(openTd);
return result;
var self = this;
var guiUtils = self.getGuiUtils();
var result = document.createElement("tr");
var nameTd = document.createElement("td");
nameTd.innerHTML = model.getName();
result.appendChild(nameTd);
var openTd = document.createElement("td");
if (model.getId() !== self.getMap().getId()) {
var img = guiUtils.createIcon("icons/search.png");
var link = document.createElement("a");
link.href = "#";
link.onclick = function () {
self.getMap().openSubmap(model.getId());
};
link.appendChild(img);
openTd.appendChild(link);
}
result.appendChild(openTd);
return result;
};
SubmapPanel.prototype.createTableHeader = function () {
var result = document.createElement("thead");
var result = document.createElement("thead");
var row = document.createElement("tr");
var row = document.createElement("tr");
var nameTd = document.createElement("th");
nameTd.innerHTML = "Name";
row.appendChild(nameTd);
var nameTd = document.createElement("th");
nameTd.innerHTML = "Name";
row.appendChild(nameTd);
row.appendChild(Functions.createElement({
type: "th",
style: "width: 60px;",
content: "View"
}));
row.appendChild(Functions.createElement({
type: "th",
style: "width: 60px;",
content: "View"
}));
result.appendChild(row);
return result;
result.appendChild(row);
return result;
};
SubmapPanel.prototype.init = function () {
var self = this;
return new Promise(function (resolve) {
var div = self.getControlElement(PanelControlElementType.SUBMAP_DIV);
div.innerHTML = "";
var models = self.getMap().getProject().getModel().getSubmodels();
var modelsByType = [];
var types = [];
var i;
for (i = 0; i < models.length; i++) {
var model = models[i];
if (modelsByType[model.getSubmodelType()] === undefined) {
modelsByType[model.getSubmodelType()] = [];
types.push(model.getSubmodelType());
}
modelsByType[model.getSubmodelType()].push(model);
}
for (i = 0; i < types.length; i++) {
var type = types[i];
div.appendChild(self.createTable(modelsByType[type], type + " submaps"));
}
if (models.length === 0) {
self.getParent().hideTab(self);
}
return resolve();
});
var self = this;
return new Promise(function (resolve) {
var div = self.getControlElement(PanelControlElementType.SUBMAP_DIV);
div.innerHTML = "";
var models = self.getMap().getProject().getModel().getSubmodels();
var modelsByType = [];
var types = [];
var i;
for (i = 0; i < models.length; i++) {
var model = models[i];
if (modelsByType[model.getSubmodelType()] === undefined) {
modelsByType[model.getSubmodelType()] = [];
types.push(model.getSubmodelType());
}
modelsByType[model.getSubmodelType()].push(model);
}
for (i = 0; i < types.length; i++) {
var type = types[i];
div.appendChild(self.createTable(modelsByType[type], type + " submaps"));
}
if (models.length === 0) {
self.getParent().hideTab(self);
}
return resolve();
});
};
SubmapPanel.prototype.createTable = function (models, type) {
var self = this;
var result = Functions.createElement({
type: "div",
});
var title = Functions.createElement({
type: "h5",
content: type
});
result.appendChild(title);
var table = Functions.createElement({
type: "table",
className: "table table-bordered",
style: "width:100%"
});
result.appendChild(table);
table.appendChild(self.createTableHeader());
var tableBody = Functions.createElement({
type: "tbody",
});
table.appendChild(tableBody);
for (var i = 0; i < models.length; i++) {
tableBody.appendChild(self.createRow(models[i]));
}
return result;
var self = this;
var result = Functions.createElement({
type: "div"
});
var title = Functions.createElement({
type: "h5",
content: type
});
result.appendChild(title);
var table = Functions.createElement({
type: "table",
className: "table table-bordered",
style: "width:100%"
});
result.appendChild(table);
table.appendChild(self.createTableHeader());
var tableBody = Functions.createElement({
type: "tbody"
});
table.appendChild(tableBody);
for (var i = 0; i < models.length; i++) {
tableBody.appendChild(self.createRow(models[i]));
}
return result;
};
SubmapPanel.prototype.destroy = function () {
return Promise.resolve();
return Promise.resolve();
};
module.exports = SubmapPanel;
......@@ -159,7 +159,13 @@ function createProjectData(options) {
getModels: function () {
var result = [{modelId: map.getId()}];
for (var i = 0; i < map.getSubmaps().length; i++) {
result.push({modelId: map.getSubmaps()[i].getId()});
var subModel = map.getSubmaps()[i].getModel();
result.push({
modelId: subModel.getId(),
name: subModel.getName(),
width: subModel.getWidth(),
height: subModel.getHeight()
});
}
return result;
}
......@@ -385,6 +391,9 @@ function createProjectMap(options) {
throw new Error("Unknown modelId: " + params.modelId);
}
return submap.setZoom(params.zoom);
},
openMap: function (params) {
return map.openSubmap(params.id);
}
}
}
......
......@@ -6,7 +6,6 @@ var ObjectWithListeners = require('../ObjectWithListeners');
var Promise = require("bluebird");
var logger = require('../logger');
var Functions = require('../Functions');
var pluginId = 0;
......@@ -59,6 +58,7 @@ Plugin.prototype.load = function () {
var pluginData = undefined;
var error = false;
try {
var registerPromise = null;
// noinspection JSUnusedLocalSymbols
var minervaDefine = function (pluginFunction) {
try {
......@@ -77,7 +77,7 @@ Plugin.prototype.load = function () {
});
self.setLoadedPluginData(pluginData);
self.setMinervaPluginProxy(minervaPluginProxy);
pluginData.register(minervaPluginProxy);
registerPromise = pluginData.register(minervaPluginProxy);
} catch (e) {
error = e;
}
......@@ -90,15 +90,15 @@ Plugin.prototype.load = function () {
if (error) {
return Promise.reject(error);
}
return registerPromise;
});
};
Plugin.prototype.getMinWidth = function () {
var result = 0;
var value;
var data = this.getLoadedPluginData();
if (data.minWidth !== undefined) {
var value = 0;
if (typeof data.minWidth === "function") {
value = parseInt(data.minWidth());
} else {
......
......@@ -91,7 +91,7 @@ PluginManager.prototype.addPlugin = function (options) {
const tab = $(tabData.content);
tab.css('overflow', 'auto');
var adjustHeight = function () {
tab.css('height', 'calc( 100vh - ' + tab.offset().top + 'px )');
tab.css('height', 'calc( 100vh - ' + $(tabData.content.parentNode).offset().top + 'px )');
};
self._pluginOnResizeHandlers[plugin.getPluginId()] = adjustHeight;
......
......@@ -78,6 +78,18 @@ describe('Plugin', function () {
assert.ok(error.message.indexOf("Let's crash") >= 0);
});
});
it('plugin register promise reject', function () {
var plugin = new Plugin({
url: "./testFiles/plugin-invalid/result-promise-crash.js",
map: helper.createCustomMap(),
configuration: helper.getConfiguration()
});
return plugin.load().then(function () {
assert.false("expected error");
}, function (error) {
assert.ok(error.message.indexOf("Let's reject") >= 0);
});
});
});
describe('unload', function () {
it('warning about cleaning', function () {
......
minervaDefine(function () {
return {
register: function (object) {
return Promise.reject(new Error("Let's reject"));
},
unregister: function () {
console.log("unregistering test plugin");
},
getName: function () {
return "plugin with promise";
},
getVersion: function () {
return "0.0.1";
}
};
});
\ No newline at end of file
minervaDefine(function () {
return {
register: function (object) {
return Promise.resolve();
},
unregister: function () {
console.log("unregistering test plugin");
},
getName: function () {
return "plugin with promise";
},
getVersion: function () {
return "0.0.1";
}
};
});
\ No newline at end of file
......@@ -57,7 +57,7 @@ public class ModelRestImpl extends BaseRestImpl {
metaDataToProcess.add(result);
metaDataToProcess.addAll(result.getSubmodels());
for (ModelMetaData submodelData : metaDataToProcess) {
submodelData.setLayouts(layoutService.getGeneralLayouts(model));
submodelData.setLayouts(layoutService.getGeneralLayouts(model.getSubmodelById(submodelData.getIdObject())));
logger.debug(submodelData.getLayouts());
}
return result;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment