VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/libs/absol-full/dist/js/mdls__absol-vchart__src__AssessmentChart.js
/*** module: node_modules/absol-vchart/src/AssessmentChart.js ***/
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;

require("./style/assessmentchart.css");

var _helper = require("./helper");

var _VCore = _interopRequireDefault(require("./VCore"));

var _Color = _interopRequireDefault(require("absol/src/Color/Color"));

var _template = require("./template");

var _Rectangle = _interopRequireDefault(require("absol/src/Math/Rectangle"));

var _BChart = _interopRequireDefault(require("./BChart"));

var _OOP = _interopRequireDefault(require("absol/src/HTML5/OOP"));

var _Object = require("absol/src/DataStructure/Object");


var _ = _VCore.default._;
var $ = _VCore.default.$;
/***
 * or RadaChart
 * @extends BChart
 * @constructor
 */

function AssessmentChart() {
  _BChart.default.call(this);

  this.rangePlotRadius = 5; //? not display

  this.rangeFillColor = null;
  this.rangeFillColor = null;
  this.rangeMaxStrokeColor = _Color.default.parse('rgba(255, 150, 0, 0.3)');
  this.rangeMinStrokeColor = _Color.default.parse('rgba(200, 200, 0, 0.3)');
  /**
   *
   * @type {{values:number[], name: string, stroke: Color|string, fill:Color|string, color:Color|string}[]}
   */

  this.areas = [];
  this.ranges = [];
  /***
   *
   * @type {string[]}
   */

  this.keys = [];
  this.levels = [];
  /***
   *
   * @type {null|[]}
   */

  this.axisWeight = null;
  /***
   *
   * @type {GContainer}
   */

  this.$netCtn = _('gcontainer.vc-assessment-net-ctn');
  this.$netCtn = _('gcontainer.vc-assessment-net-ctn');
  this.$body.addChild(this.$netCtn);
  this.$netCtn.box.setPosition(200, 200);
  this.$axisCnt = _('gcontainer.vc-assessment-axis-ctn');
  this.$levelValueCnt = _('gcontainer.vc-assessment-axis-level-ctn');
  this.$levelCnt = _('gcontainer.vc-assessment-level-ctn');
  this.$areaCtn = _('gcontainer.vc-assessment-area-ctn');
  this.$rangeCtn = _('gcontainer.vc-assessment-range-ctn');
  this.$netCtn.addChild(this.$levelCnt);
  this.$netCtn.addChild(this.$axisCnt);
  this.$netCtn.addChild(this.$rangeCtn);
  this.$netCtn.addChild(this.$areaCtn);
  this.$netCtn.addChild(this.$levelValueCnt);
}

_OOP.default.mixClass(AssessmentChart, _BChart.default);

AssessmentChart.property = Object.assign({}, _BChart.default.property);
AssessmentChart.eventHandler = Object.assign({}, _BChart.default.eventHandler);
AssessmentChart.tag = 'AssessmentChart'.toLowerCase();

AssessmentChart.render = function () {
  return _BChart.default.render().addClass('vc-assessment-chart');
};

AssessmentChart.prototype.dataKeys = ['title', 'simpleMode ', 'keys ', 'rangeFillColor'];

AssessmentChart.prototype.normalizeData = function () {
  var thisC = this; // fill: area.fill || this.autoColor(i, 0.3),
  //     stroke: area.stroke || this.autoColor(i, 0.8),

  this.areas.forEach(function (area, i) {
    var color = area.color || area.stroke || area.fill || thisC.autoColor(i);
    color = _Color.default.parse(color + '');
    color.rgba[3] = 1;
    var strokeColor = color.clone();
    strokeColor.rgba[3] = 0.8;
    var filColor = color.clone();
    filColor.rgba[3] = 0.3;

    if (area.color) {
      area.fill = area.fill || filColor;
      area.stroke = area.stroke || strokeColor;
    } else {
      if (area.stroke) {
        area.fill = area.fill || 'none';
      } else if (area.fill) {
        area.stroke = area.stroke || 'none';
      } else {
        area.fill = filColor;
        area.stroke = strokeColor;
      }

      area.color = color;
    }
  });
};

AssessmentChart.prototype.computeNotes = function () {
  return this.areas.map(function (area) {
    return {
      type: 'stroke',
      color: area.color,
      text: area.name
    };
  }).filter(it => !!it.text);
};

AssessmentChart.prototype._createAxis = function () {
  this.$axisCnt.clearChild();
  this.$axisLines = this.keys.map(function (u, i) {
    var res = _('hlinearrow');

    res.resize(200);
    res.attr('transform', (0, _template.rotate)(-90 + i * 360 / this.keys.length));
    res.addTo(this.$axisCnt);
    return res;
  }.bind(this));
  this.$axisNames = this.keys.map(function (key, i, arr) {
    var anchor = 'start';
    if (i === 0 || i === arr.length / 2) anchor = 'middle';else if (i > arr.length / 2) anchor = 'end';
    return _({
      tag: 'text',
      attr: {
        x: 0,
        y: 0
      },
      style: {
        textAnchor: anchor
      },
      child: {
        text: key
      }
    }).addTo(this.$axisCnt);
  }.bind(this));
  this.$levelCnt.clearChild();
  this.$levels = this.levels.map(function (level, i, levels) {
    return _('path.vc-assessment-chart-level' + (i + 1 == levels.length ? '.last' : '')).addTo(this.$levelCnt);
  }.bind(this));
  this.computedData.axisNameSize = this.$axisNames.map(function (elt) {
    var box = elt.getBBox();
    return {
      width: box.width,
      height: box.height
    };
  });
  this.$levelValueCnt.clearChild();
  this.$levelValues = this.levels.map(function (level) {
    return this._createLevelValue(level).addTo(this.$levelValueCnt);
  }.bind(this));
};

AssessmentChart.prototype._createAreas = function () {
  this.$areaCtn.clearChild();
  this.$areas = this.areas.map(function (area, i, arr) {
    return _('path.vc-assessment-chart-area').addTo(this.$areaCtn).addStyle({
      fill: area.fill,
      stroke: area.stroke
    });
  }.bind(this));
};

AssessmentChart.prototype._createRanges = function () {
  this.$rangeCtn.clearChild();

  if (this.ranges && this.ranges.length > 0) {
    this.$rangeArea = _('shape.vc-assessment-chart-range-area').addStyle('fill-rule', "evenodd").addTo(this.$rangeCtn);

    if (this.rangeFillColor) {
      var rangeFillColor = _Color.default.parse(this.rangeFillColor + '');

      rangeFillColor.rgba[3] = 0.3;
      this.$rangeArea.addStyle({
        fill: rangeFillColor.toString()
      });
    }

    this.$ranges = this.ranges.map(function (range, i, arr) {
      return this._createRangeLine().addTo(this.$rangeCtn);
    }.bind(this));
    this.$rangeMax = _('shape.vc-assessment-chart-range-area-stroke').addTo(this.$rangeCtn).addStyle({
      stroke: this.rangeMaxStrokeColor || 'rgba(255, 150, 0, 0.3)'
    });
    this.$rangeMin = _('shape.vc-assessment-chart-range-area-stroke').addTo(this.$rangeCtn).addStyle({
      stroke: this.rangeMinStrokeColor || 'rgba(200, 200, 0, 0.3)'
    });
  }
};

AssessmentChart.prototype.createContent = function () {
  _BChart.default.prototype.createContent.call(this);

  this._createAxis();

  this._createRanges();

  this._createAreas();
};

AssessmentChart.prototype._createLevelValue = function (value) {
  var res = _('gcontainer.vc-assessment-chart-level-value');

  res.$bound = (0, _helper.rect)(0, -6, 0, 13).attr({
    rx: '4',
    ry: '4'
  }).addTo(res);
  res.$text = (0, _helper.text)(value + '', 0, 4).attr({
    'text-anchor': 'middle'
  }).addTo(res);
  if (value === '' || value === undefined || value === null) res.addStyle('visibility', 'hidden');
  return res;
};

AssessmentChart.prototype.autoColor = function (index, alpha) {
  var hsla = [index / this.areas.length, 0.8, 0.5, alpha === undefined ? 1 : alpha];

  var c = _Color.default.fromHSLA(hsla[0], hsla[1], hsla[2], hsla[3]);

  return c.toString('rgba');
};

AssessmentChart.prototype.mapAngle = function (i, deg) {
  return (-90 + i * 360 / this.keys.length) * (deg ? 1 : Math.PI / 180);
};

AssessmentChart.prototype.mapRadius = function (level) {
  return this.computedData.axisLength * (level / (this.levels.length - 1));
};

AssessmentChart.prototype.mapLevel = function (value) {
  if (this.isMappingLevel) {
    if (value < this.levelMappingArray[0]) return (0, _helper.map)(value, this.levelMappingArray[0], this.levelMappingArray[1], 0, 1);
    if (value > this.levelMappingArray[this.levels.length - 1]) return (0, _helper.map)(value, this.levelMappingArray[this.levels.length - 2], this.levelMappingArray[this.levels.length - 1], 0, 1);

    for (var i = 1; i < this.levels.length; ++i) {
      if (value >= this.levelMappingArray[i - 1] && value <= this.levelMappingArray[i]) return (0, _helper.map)(value, this.levelMappingArray[i - 1], this.levelMappingArray[i], i - 1, i);
    }
  } else {
    return value;
  }
};

AssessmentChart.prototype._createRangeLine = function () {
  var res = _({
    tag: 'g',
    class: 'vc-assessment-chart-range-segment'
  });

  res.$min = (0, _helper.circle)(0, 0, this.rangePlotRadius, 'vc-assessment-chart-range-plot').addTo(res);
  res.$max = (0, _helper.circle)(0, 0, this.rangePlotRadius, 'vc-assessment-chart-range-plot').addTo(res);
  res.$line = _('path.vc-assessment-chart-range-line').addTo(res);
  return res;
};
/**
 * @param {Array<Rectangle>} rects
 * @returns {Rectangle}
 */


AssessmentChart.prototype._expectSize = function (rects, r) {
  var cr = new _Rectangle.default(0, 0, 0, 0);
  var rect;

  for (var i = 0; i < rects.length; ++i) {
    var angle = Math.PI * 2 * i / rects.length - Math.PI / 2;
    rect = rects[i];

    if (i == 0) {
      rect.x = rect.width / 2;
      rect.y = -rect.height - r - 7;
    } else if (rects.length % 4 == 0 && i == rects.length >> 2) {
      rect.x = r;
      rect.y = rect.height / 2;
    } else if (rects.length % 4 == 0 && i == (rects.length >> 2) * 3) {
      rect.x = -r - rect.width;
      rect.y = rect.height / 2;
    } else if (rects.length % 2 == 0 && i == rects.length >> 1) {
      rect.x = rect.width / 2;
      rect.y = r + 7;
    } else if (i < rects.length / 4) {
      rect.x = r * Math.cos(angle);
      rect.y = r * Math.sin(angle) - rect.height;
    } else if (i < rects.length / 2) {
      rect.x = r * Math.cos(angle);
      rect.y = r * Math.sin(angle);
    } else if (i < rects.length / 4 * 3) {
      rect.x = r * Math.cos(angle) - rect.width;
      rect.y = r * Math.sin(angle);
    } else {
      rect.x = r * Math.cos(angle) - rect.width;
      rect.y = r * Math.sin(angle) - rect.height;
    }

    cr = cr.merge(rect);
  }

  return cr;
};

AssessmentChart.prototype._computedNetSize = function () {
  var rects = this.computedData.axisNameSize.map(function (box) {
    return new _Rectangle.default(0, 0, box.width, box.height);
  });
  var aWidth = this.$body.box.width;
  var aHeight = this.$body.box.height;
  var maxR = Math.min(aWidth, this.$body.box.height) / 2;
  var minR = 20; //

  while (maxR - minR > 3) {
    var midR = (minR + maxR) / 2;

    var size = this._expectSize(rects, midR);

    if (size.width < aWidth && size.height < aHeight) {
      minR = midR;
    } else {
      maxR = midR;
    }
  }

  this.computedData.expectedSize = this._expectSize(rects, minR);
  this.computedData.expectedRadius = minR;
  this.computedData.axisLength = this.computedData.expectedRadius - 30;
};

AssessmentChart.prototype._updateAxisPosition = function () {
  var axisLength = this.computedData.axisLength;
  this.$axisLines.forEach(function ($axisLine) {
    $axisLine.resize(axisLength + 20);
  }.bind(this));

  if (this.axisWeight && this.axisWeight.forEach) {
    this.axisWeight.forEach(function (value, i) {
      var axisLineElt = this.$axisLines[i];

      if (axisLineElt) {
        if (value >= 0) {
          axisLineElt.addStyle('strokeWidth', value + '');
        } else {
          axisLineElt.remove('strokeWidth');
        }
      }
    }.bind(this));
  }

  this.$axisNames.forEach(function ($axisName, i) {
    var angle = (-90 + i * 360 / this.keys.length) * Math.PI / 180;
    var x = (axisLength + 30) * Math.cos(angle);
    var y = (axisLength + 30) * Math.sin(angle) + 5;

    if (this.keys.length % 2 == 0 && i == this.keys.length >> 1) {
      y += 7;
    } else if (i == 0) {
      y -= 7;
    }

    $axisName.attr({
      x: x,
      y: y
    });
  }.bind(this));
  this.$levels.forEach(function ($level, level) {
    var points = this.keys.reduce(function (ac, value, i) {
      var angle = this.mapAngle(i);
      var x = this.mapRadius(level) * Math.cos(angle);
      var y = this.mapRadius(level) * Math.sin(angle);
      ac.push(x + ' ' + y);
      return ac;
    }.bind(this), []);
    var d = 'M' + points.join('L') + 'Z';
    $level.attr('d', d);
  }.bind(this));
  var levelValueWidth = this.$levelValues.reduce(function (w, $levelValue) {
    return Math.max(w, $levelValue.$text.getBBox().width + 4);
  }, 0);

  if (this.mapRadius(1) - this.mapRadius(0) > 13) {
    this.$levelValues.forEach(function ($levelValue, i) {
      $levelValue.$bound.attr({
        x: -levelValueWidth / 2,
        width: levelValueWidth
      });
      $levelValue.attr('transform', (0, _template.translate)(0, -this.mapRadius(i)));
    }.bind(this));
  } else {
    this.$levelValues.forEach(function ($levelValue, i) {
      $levelValue.addStyle('display', 'none');
    }.bind(this));
  }

  var contentBound = new _Rectangle.default(0, 0, this.$body.box.width, this.$body.box.height);
  var centerBound = contentBound.centerPoint();
  this.$netCtn.box.setPosition(centerBound.x + (-this.computedData.expectedSize.x - this.computedData.expectedSize.width / 2), centerBound.y + (-this.computedData.expectedSize.y - this.computedData.expectedSize.height / 2));
};

AssessmentChart.prototype._updateAreaPosition = function () {
  this.$areas.forEach(function ($area, i) {
    var area = this.areas[i];
    var points = area.values.reduce(function (ac, value, i) {
      var angle = this.mapAngle(i);
      var level = this.mapLevel(value);
      var x = this.mapRadius(level) * Math.cos(angle);
      var y = this.mapRadius(level) * Math.sin(angle);
      ac.push(x + ' ' + y);
      return ac;
    }.bind(this), []);
    var d = 'M' + points.join('L') + 'Z';
    $area.attr('d', d);

    if (typeof area.strokeWidth == "number") {
      $area.addStyle('stroke-width', area.strokeWidth + '');
    }
  }.bind(this));
};

AssessmentChart.prototype._updateRangePosition = function () {
  if (this.ranges && this.ranges.length > 0) {
    this.$ranges.forEach(function ($range, i) {
      var range = this.ranges[i];
      var angle = this.mapAngle(i);
      var levelMax = this.mapLevel(range[1]);
      var xMax = this.mapRadius(levelMax) * Math.cos(angle);
      var yMax = this.mapRadius(levelMax) * Math.sin(angle);
      $range.$max.attr({
        cx: xMax,
        cy: yMax
      });
      var levelMin = this.mapLevel(range[0]);
      var xMin = this.mapRadius(levelMin) * Math.cos(angle);
      var yMin = this.mapRadius(levelMin) * Math.sin(angle);
      $range.$min.attr({
        cx: xMin,
        cy: yMin
      });
      $range.$line.attr('d', 'M' + xMin + ' ' + yMin + 'L' + xMax + ' ' + yMax);
    }.bind(this));
    this.$rangeArea.begin();
    this.$rangeMax.begin();
    this.$rangeMin.begin();
    this.ranges.forEach(function (range, i, arr) {
      var angle = this.mapAngle(i);
      var levelMax = this.mapLevel(range[1]);
      var xMax = this.mapRadius(levelMax) * Math.cos(angle);
      var yMax = this.mapRadius(levelMax) * Math.sin(angle);

      if (i == 0) {
        this.$rangeArea.moveTo(xMax, yMax);
        this.$rangeMax.moveTo(xMax, yMax);
      } else {
        this.$rangeArea.lineTo(xMax, yMax);
        this.$rangeMax.lineTo(xMax, yMax);
      }

      if (i + 1 == arr.length) {
        this.$rangeArea.closePath();
        this.$rangeMax.closePath();
      }
    }.bind(this));
    this.ranges.forEach(function (range, i, arr) {
      var angle = this.mapAngle(i);
      var levelMax = this.mapLevel(range[0]);
      var xMin = this.mapRadius(levelMax) * Math.cos(angle);
      var yMin = this.mapRadius(levelMax) * Math.sin(angle);

      if (i == 0) {
        this.$rangeArea.moveTo(xMin, yMin);
        this.$rangeMin.moveTo(xMin, yMin);
      } else {
        this.$rangeArea.lineTo(xMin, yMin);
        this.$rangeMin.lineTo(xMin, yMin);
      }

      if (i + 1 == arr.length) {
        this.$rangeArea.closePath();
        this.$rangeMin.closePath();
      }
    }.bind(this));
    this.$rangeMax.end();
    this.$rangeMin.end();
    this.$rangeArea.end();
  }
};

AssessmentChart.prototype._updatePrintViewport = function () {
  var children = Array.prototype.slice.call(this.childNodes);
  var bound = children.reduce((ac, cr) => {
    var bbox = cr.getBBox();
    if (bbox.width === 0 || bbox.height === 0) return ac;
    var rect = (0, _helper.getGlobalBBox)(cr);
    if (!ac) return rect;
    return ac.merge(rect);
  }, null);

  if (bound) {
    this.attr('data-print-view-box', Math.floor(bound.x) - 0.5 + ' ' + (Math.floor(bound.y) - 0.5) + ' ' + Math.ceil(bound.width + 1) + ' ' + Math.ceil(bound.height + 1));
  } else this.attr('data-print-view-box', null);
};

AssessmentChart.prototype.updateBodyPosition = function () {
  _BChart.default.prototype.updateBodyPosition.call(this);

  this._computedNetSize();

  this._updateAxisPosition();

  this._updateAreaPosition();

  this._updateRangePosition();

  this._updatePrintViewport();
};

AssessmentChart.prototype.updateContent = function () {
  this.prepareData();

  _BChart.default.prototype.updateContent.call(this);
};

AssessmentChart.prototype.prepareData = function () {
  this.levelMappingArray = this.levels.map(function (value) {
    return parseFloat(value + '');
  });
  this.isMappingLevel = this.levelMappingArray.reduce(function (ac, cr) {
    return ac && !isNaN(cr);
  }, true);
};

AssessmentChart.property.simpleMode = {
  set: function (value) {
    if (value) this.addClass('simple-mode');else this.removeClass('simple-mode');
  },
  get: function () {
    return this.containsClass('simple-mode');
  }
};
AssessmentChart.property.rangeSegment = {
  set: function (value) {
    if (value) this.addClass('show-range-segment');else this.removeClass('show-range-segment');
  },
  get: function () {
    return this.containsClass('show-range-segment');
  }
};

_VCore.default.install(AssessmentChart);

var _default = AssessmentChart;
exports.default = _default;

VaKeR 2022