aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/bower_components/jvectormap/src/abstract-shape-element.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/bower_components/jvectormap/src/abstract-shape-element.js')
-rw-r--r--public/bower_components/jvectormap/src/abstract-shape-element.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/public/bower_components/jvectormap/src/abstract-shape-element.js b/public/bower_components/jvectormap/src/abstract-shape-element.js
new file mode 100644
index 0000000..9a2419a
--- /dev/null
+++ b/public/bower_components/jvectormap/src/abstract-shape-element.js
@@ -0,0 +1,62 @@
+/**
+ * Abstract shape element. Shape element represents some visual vector or raster object.
+ * @constructor
+ * @param {String} name Tag name of the element.
+ * @param {Object} config Set of parameters to initialize element with.
+ * @param {Object} style Object with styles to set on element initialization.
+ */
+jvm.AbstractShapeElement = function(name, config, style){
+ this.style = style || {};
+ this.style.current = this.style.current || {};
+ this.isHovered = false;
+ this.isSelected = false;
+ this.updateStyle();
+};
+
+/**
+ * Set element's style.
+ * @param {Object|String} property Could be string to set only one property or object to set several style properties at once.
+ * @param {String} value Value to set in case only one property should be set.
+ */
+jvm.AbstractShapeElement.prototype.setStyle = function(property, value){
+ var styles = {};
+
+ if (typeof property === 'object') {
+ styles = property;
+ } else {
+ styles[property] = value;
+ }
+ jvm.$.extend(this.style.current, styles);
+ this.updateStyle();
+};
+
+
+jvm.AbstractShapeElement.prototype.updateStyle = function(){
+ var attrs = {};
+
+ jvm.AbstractShapeElement.mergeStyles(attrs, this.style.initial);
+ jvm.AbstractShapeElement.mergeStyles(attrs, this.style.current);
+ if (this.isHovered) {
+ jvm.AbstractShapeElement.mergeStyles(attrs, this.style.hover);
+ }
+ if (this.isSelected) {
+ jvm.AbstractShapeElement.mergeStyles(attrs, this.style.selected);
+ if (this.isHovered) {
+ jvm.AbstractShapeElement.mergeStyles(attrs, this.style.selectedHover);
+ }
+ }
+ this.set(attrs);
+};
+
+jvm.AbstractShapeElement.mergeStyles = function(styles, newStyles){
+ var key;
+
+ newStyles = newStyles || {};
+ for (key in newStyles) {
+ if (newStyles[key] === null) {
+ delete styles[key];
+ } else {
+ styles[key] = newStyles[key];
+ }
+ }
+} \ No newline at end of file