(function() { jQuery.fn.extend({ _blocks: ['seg', 'val', 'act', 'res', 'par', 'rev', 'cos', 'cha', 'rel', 'ind', 'tre', 'mac', 'mar'], _fillColor: function(key) { var fillcolor = {}; //TODO: separate function if (jQuery(this).hasClass(key)) { fillcolor = "000000"; } else if (jQuery(this).hasClass(key+'-h')) { fillcolor = "ED1F24"; } else { if (jQuery.inArray(key, ['ind', 'tre', 'mac', 'mar']) > -1) { fillcolor = "f0f0f0"; } else { fillcolor = "d0d0d0"; } } return fillcolor; }, businessModel: function(options) { var modelsvg; var fillcolor = {}; options = options || {clickable: false}; jQuery(this).css('border', 'none'); jQuery(this).css('padding', '15px 5px 5px 100px'); jQuery(this).css('position', 'relative'); jQuery(this).css('min-height', '50px'); for (var key in this._blocks) { fillcolor[this._blocks[key]] = this._fillColor(this._blocks[key]); } modelsvg = ''; //par modelsvg += ''; //seg modelsvg += ''; //val modelsvg += ''; modelsvg += ''; //act modelsvg += ''; //cha modelsvg += ''; //rel modelsvg += ''; //cos modelsvg += ''; //rev modelsvg += ''; //ind modelsvg += ''; //mar modelsvg += ''; //tre modelsvg += ''; //mac modelsvg += ''; modelsvg += ''; modelsvg += ""; div = jQuery("
"); div.html(modelsvg); div.css('position', 'absolute'); div.css('top', 0); div.css('left', '0px'); jQuery(this).append(div); //register behaviours if (options.clickable == true) { for (var i = 0; i < this._blocks.length; i++) { $('.'+this._blocks[i], this).on('mouseover.bm', function() { this.style.fill = "#333"; }); $('.'+this._blocks[i], this).on('mouseout.bm', {color: this._fillColor(this._blocks[i])}, function(event) { this.style.fill = event.data.color; }); $('.'+this._blocks[i], this).on('click.bm', {block: this._blocks[i], parent: this}, function(event) { //change state, tag and hidden clickbox inputs if (event.data.parent.hasClass(event.data.block)) { event.data.parent.removeClass(event.data.block) } else { event.data.parent.addClass(event.data.block) } //change color this.style.fill = event.data.parent._fillColor(event.data.block) //reset mouseout color $('.'+event.data.block, event.data.parent).off('mouseout.bm'); $('.'+event.data.block, event.data.parent).on('mouseout.bm', {color: event.data.parent._fillColor(event.data.block)}, function(event) { this.style.fill = event.data.color; }); }); } } } }); }).call(this);