![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/libs/absol-full/dist/js/ |
Upload File : |
/*** module: node_modules/absol-vchart/src/BarStackChart.js ***/ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("./style/barstackchart.css"); var _VCore = _interopRequireDefault(require("./VCore")); var _GContainer = _interopRequireDefault(require("absol-svg/js/svg/GContainer")); var _SvgCanvas = _interopRequireDefault(require("absol-svg/js/svg/SvgCanvas")); var _DomSignal = _interopRequireDefault(require("absol/src/HTML5/DomSignal")); var _helper = require("./helper"); var _Color = _interopRequireDefault(require("absol/src/Color/Color")); var _BChart = require("./BChart"); var _Object = require("absol/src/DataStructure/Object"); var _utils = require("absol-acomp/js/utils"); var _noop = _interopRequireDefault(require("absol/src/Code/noop")); var _ = _VCore.default._; var $ = _VCore.default.$; /*** * @extends SvgCanvas * @constructor */ function BarStackChart() { this._contentMargin = 5; /*** * * @type {GContainer} */ this.$content = $('.vc-bar-stack-content', this); this.$content.box.setPosition(40, 5); /*** * * @type {GContainer} */ this.$noteCtn = $('.vc-bar-stack-note-ctn', this); /*** * * @type {GContainer} */ this.$stack = $('.vc-bar-stack', this); this.domSignal = new _DomSignal.default($('sattachhook.vc-dom-signal', this)); this.domSignal.on('_updateContentPosition', this.updateContentPosition.bind(this)).on('updateContent', this.updateContent.bind(this)); this.blocks = []; this.$blocks = []; this.$notes = []; this.domSignal.emit('updateContent'); this.resizeCtrl = new _BChart.ChartResizeController(this); (0, _Object.observePropertyChanges)(this, ['blocks'], () => { this.domSignal.emit('updateContent'); }); } BarStackChart.tag = 'BarStackChart'.toLowerCase(); BarStackChart.render = function () { return _({ tag: 'svgcanvas', class: ['vc-bar-stack-chart', 'base-chart'], child: [{ tag: 'gcontainer', class: 'vc-bar-stack-content', child: [{ tag: 'gcontainer', class: 'vc-bar-stack-note-ctn' }, { tag: 'gcontainer', class: 'vc-bar-stack' }] }, 'sattachhook.vc-dom-signal'] }); }; BarStackChart.prototype.revokeResource = function () { (0, _Object.unobservePropertyChanges)(this, ['blocks']); (0, _utils.revokeResource)(this.resizeCtrl); this.revokeResource = _noop.default; while (this.lastChild) { (0, _utils.revokeResource)(this.lastChild); this.lastChild.remove(); } }; BarStackChart.prototype.normalizeData = function () { var blockColor = (0, _helper.generateBackgroundColors)(this.blocks.length); var sum = this.blocks.reduce(function (ac, cr) { return ac + cr.value; }, 0); this.blocks.forEach(function (block, i) { block.color = block.color || blockColor[i]; block.percent = block.percent || block.value * 100 / sum; }); }; BarStackChart.prototype.updateSize = function () { _SvgCanvas.default.prototype.updateSize.call(this); this.updateContentPosition(); }; /*** * * @param block * @returns {GContainer} * @private */ BarStackChart.prototype._makeNote = function (block) { var noteElt = _({ tag: 'gcontainer', class: 'vc-bar-stack-note', child: [{ tag: 'text', class: 'vc-bar-stack-note-name', style: { fill: block.color + '' }, attr: { y: 15, x: 0 }, child: { text: block.name } }, { tag: 'text', class: 'vc-bar-stack-note-desc' }] }); noteElt.$name = $('.vc-bar-stack-note-name', this); noteElt.$desc = $('.vc-bar-stack-note-desc', this); return noteElt; }; /*** * * @param block * @returns {GContainer} * @private */ BarStackChart.prototype._makeBlock = function (block) { var valueColor = _Color.default.parse(block.color + '').getContrastYIQ(); var percenColor = valueColor.clone(); percenColor.rgba[0] = (percenColor.rgba[0] + Math.sqrt(0.5)) / 2; percenColor.rgba[1] = (percenColor.rgba[1] + Math.sqrt(0.5)) / 2; percenColor.rgba[2] = (percenColor.rgba[2] + Math.sqrt(0.5)) / 2; var blockElt = _({ tag: 'gcontainer', class: 'vc-bar-stack-block', child: [{ tag: 'rect', class: 'vc-bar-stack-block-rect', style: { fill: block.color }, attr: { x: -250, y: 0, width: 500, height: 10 } }, { tag: 'text', class: 'vc-bar-stack-block-value', attr: { y: 25 }, style: { fill: valueColor + '' }, child: { text: block.value } }, { tag: 'text', class: 'vc-bar-stack-block-percent', attr: { y: 55 }, style: { fill: percenColor + '' }, child: { text: block.percent.toFixed(1) + '%' } }] }); blockElt.$rect = $('.vc-bar-stack-block-rect', blockElt); return blockElt; }; BarStackChart.prototype._createNote = function () { var thisC = this; this.$noteCtn.clearChild(); this.$notes = this.blocks.map(function (block) { var noteElt = thisC._makeNote(block); thisC.$noteCtn.addChild(noteElt); return noteElt; }); }; BarStackChart.prototype._createStack = function () { var thisC = this; this.$stack.clearChild(); this.$blocks = this.blocks.map(function (block) { var blockElt = thisC._makeBlock(block); thisC.$stack.addChild(blockElt); return blockElt; }); }; BarStackChart.prototype.createContent = function () { this.normalizeData(); this._createNote(); this._createStack(); }; BarStackChart.prototype.updateContentPosition = function () { if (!this.isDescendantOf(document.body)) { this.emit('_updateContentPosition'); return; } this.$content.box.setPosition(this._contentMargin, 40); this.$content.box.setSize(this.box.width - 2 * this._contentMargin, this.box.height - this._contentMargin - 40); this._updateNotePosition(); this._updateStackPosition(); }; BarStackChart.prototype._updateNotePosition = function () { var thisC = this; var noteCtnBox = this.$noteCtn.getBBox(); this.$noteCtn.box.setSize(noteCtnBox.width, this.$content.box.height); this.$noteCtn.box.setPosition(this.$content.box.width - noteCtnBox.width, 0); var dy = this.$noteCtn.box.height / this.blocks.length; this.$notes.forEach(function (noteElt, i) { noteElt.box.y = dy * i + dy / 2 - 7; }); }; BarStackChart.prototype._updateStackPosition = function () { var thisC = this; this.$stack.box.setSize(this.$content.box.width - this.$noteCtn.box.width - 20, this.$content.box.height); this.$stack.box.x = this.$stack.box.width / 2; //to center var dy = this.$noteCtn.box.height / this.blocks.length; var width = this.$stack.box.width; var maxValue = this.blocks.reduce(function (ac, cr) { return Math.max(ac, cr.value); }, 0); this.$blocks.forEach(function (blockElt, i) { var block = thisC.blocks[i]; blockElt.box.y = dy * i; blockElt.$rect.attr({ height: dy, width: block.value / maxValue * width, x: -block.value / maxValue * width / 2 }); }); }; BarStackChart.prototype.updateContent = function () { this.createContent(); this.updateContentPosition(); }; _VCore.default.install(BarStackChart); var _default = BarStackChart; exports.default = _default;