webgme
Version:
Web-based Generic Modeling Environment
163 lines (137 loc) • 5.26 kB
JavaScript
/*globals define, _*/
/*jshint browser: true*/
/**
* @author rkereskenyi / https://github.com/rkereskenyi
*/
define([
'jquery',
'js/Constants',
'js/NodePropertyNames',
'js/RegistryKeys',
'js/Panels/MetaEditor/MetaEditorConstants',
'js/Utils/DisplayFormat'
], function (_jquery,
CONSTANTS,
nodePropertyNames,
REGISTRY_KEYS,
MetaEditorConstants,
displayFormat) {
'use strict';
var _client,
DEFAULT_LINE_STYLE = {};
DEFAULT_LINE_STYLE[CONSTANTS.LINE_STYLE.WIDTH] = 1;
DEFAULT_LINE_STYLE[CONSTANTS.LINE_STYLE.COLOR] = '#000000';
DEFAULT_LINE_STYLE[CONSTANTS.LINE_STYLE.PATTERN] = CONSTANTS.LINE_STYLE.PATTERNS.SOLID;
DEFAULT_LINE_STYLE[CONSTANTS.LINE_STYLE.TYPE] = CONSTANTS.LINE_STYLE.TYPES.NONE;
DEFAULT_LINE_STYLE[CONSTANTS.LINE_STYLE.START_ARROW] = CONSTANTS.LINE_STYLE.LINE_ARROWS.NONE;
DEFAULT_LINE_STYLE[CONSTANTS.LINE_STYLE.END_ARROW] = CONSTANTS.LINE_STYLE.LINE_ARROWS.NONE;
DEFAULT_LINE_STYLE[CONSTANTS.LINE_STYLE.CUSTOM_POINTS] = [];
DEFAULT_LINE_STYLE[REGISTRY_KEYS.BOX_DECORATION] = false;
var _initialize = function (client) {
if (!_client) {
_client = client;
}
};
var _getConnectionVisualProperties = function (objID) {
var obj = _client.getNode(objID),
result = {},
getValue,
val;
getValue = function (srcObj, regKey, type) {
var result,
regValue;
if (srcObj) {
regValue = srcObj.getRegistry(regKey);
if (regValue) {
switch (type) {
case 'int':
try {
result = parseInt(regValue, 10);
} catch (e) {
result = undefined;
}
break;
case 'array':
try {
if (!_.isArray(regValue)) {
result = JSON.parse(regValue);
} else {
result = regValue.slice(0);
}
if (!_.isArray(result)) {
result = undefined;
}
} catch (e) {
result = undefined;
}
break;
default:
result = regValue;
}
}
}
return result;
};
if (obj) {
_.extend(result, DEFAULT_LINE_STYLE);
// line label placement
val = getValue(obj, REGISTRY_KEYS.LINE_LABEL_PLACEMENT);
switch (val) {
case 'src':
result.srcText = displayFormat.resolve(obj);
break;
case 'dst':
result.dstText = displayFormat.resolve(obj);
break;
default:
result.name = displayFormat.resolve(obj);
}
val = getValue(obj, REGISTRY_KEYS.LINE_LABEL_X_OFFSET);
result[REGISTRY_KEYS.LINE_LABEL_X_OFFSET] = typeof val === 'number' ? val : 0;
val = getValue(obj, REGISTRY_KEYS.LINE_LABEL_Y_OFFSET);
result[REGISTRY_KEYS.LINE_LABEL_Y_OFFSET] = typeof val === 'number' ? val : 0;
//line width
val = getValue(obj, REGISTRY_KEYS.LINE_WIDTH, 'int');
if (val) {
result[CONSTANTS.LINE_STYLE.WIDTH] = val;
}
//color
val = getValue(obj, REGISTRY_KEYS.COLOR);
if (val && val !== '') {
result[CONSTANTS.LINE_STYLE.COLOR] = val;
}
//pattern
val = getValue(obj, REGISTRY_KEYS.LINE_STYLE);
if (val !== undefined && val !== null) {
result[CONSTANTS.LINE_STYLE.PATTERN] = val;
}
//line type
val = getValue(obj, REGISTRY_KEYS.LINE_TYPE);
if (val !== undefined && val !== null) {
result[CONSTANTS.LINE_STYLE.TYPE] = val;
}
//start arrow
val = getValue(obj, REGISTRY_KEYS.LINE_START_ARROW);
if (val) {
result[CONSTANTS.LINE_STYLE.START_ARROW] = val;
}
//end arrow
val = getValue(obj, REGISTRY_KEYS.LINE_END_ARROW);
if (val) {
result[CONSTANTS.LINE_STYLE.END_ARROW] = val;
}
//box decoration
val = getValue(obj, REGISTRY_KEYS.BOX_DECORATION);
if (val === true) {
// It's false by default..
result[REGISTRY_KEYS.BOX_DECORATION] = val;
}
}
return result;
};
//return utility functions
return {
initialize: _initialize,
getConnectionVisualProperties: _getConnectionVisualProperties
};
});