![]() 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-acomp/out/ |
Upload File : |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>JSDoc: Source: CircleSectionLabel.js</title> <script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/lang-css.js"> </script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <div id="main"> <h1 class="page-title">Source: CircleSectionLabel.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>import '../css/circlesectionlabel.css'; import ACore from "../ACore"; import Svg from "absol/src/HTML5/Svg"; import Dom from "absol/src/HTML5/Dom"; import AElement from "absol/src/HTML5/AElement"; var _ = ACore._; var $ = ACore.$; var _g = Svg.ShareInstance._; var $g = Svg.ShareInstance.$; var Design = { circleHeight: 218 - 36, borderWidth: 36, textBoxHeight: 146, textHeight: 48, indexHeight: 54, textBoxPaddingLeft: 80, indexArrowRadius: (172 - 18) / 2, indexArrowStrokeWidth: 18, indexArrowStartAngle: -Math.PI / 6, indexArrowEndAngle: -7 * Math.PI / 12 }; var StyleSheet = { '.as-circle-section-label-text': { height: Design.textBoxHeight / Design.textHeight + 'em', 'padding-left': Design.textBoxPaddingLeft / Design.textHeight + 'em', 'line-height': Design.textBoxHeight / Design.textHeight + 'em' }, '.as-circle-section-label-index': { 'font-size': Design.indexHeight / Design.textHeight + 'em', height: (Design.circleHeight + Design.borderWidth) / Design.indexHeight + 'em', 'line-height': (Design.circleHeight + Design.borderWidth) / Design.indexHeight + 'em', width: (Design.circleHeight + Design.borderWidth) / Design.indexHeight + 'em' }, }; _({ tag: 'style', id: 'circle-section-label-style', props: { innerHTML: Object.keys(StyleSheet).map(function (key) { var style = StyleSheet[key]; return key + ' {\n' + Object.keys(style).map(function (propName) { return propName + ': ' + style[propName] + ';'; }).join('\n') + '}'; }).join('\n') } }).addTo(document.head); /** * @extends AElement * @constructor */ function CircleSectionLabel() { this._ident = (Math.random() + '').replace(/[^0-9]/g, '_'); this.$background = $('.as-circle-section-label-background', this); this.$index = $('.as-circle-section-label-index', this); this.$text = $('.as-circle-section-label-text', this); this.$attachhook = _('attachhook').addTo(this).on('error', function () { Dom.addToResizeSystem(this); this.requestUpdateSize(); }); this.$attachhook.requestUpdateSize = this.redrawBackground.bind(this); this.$svg = _g({ tag: 'svg', attr: { width: '0', height: '0' }, child: [ { tag: 'defs', child: [ { tag: 'marker', id: 'marker_' + this._ident, attr: { markerWidth: "4", markerHeight: "4", refX: "0", refY: "1", orient: "auto", markerUnits: "strokeWidth", viewBox: "0 0 4 4" }, child: { tag: 'path', class: 'as-circle-section-label-arrow-marker-path', attr: { d: 'M0,0 L0,2 L2,1 z' } } } ] }, 'rect.as-circle-section-label-text-box', 'circle.as-circle-section-label-index-box', 'path.as-circle-section-label-arrow' ] }).addTo(this.$background); this.$indexBox = $g('circle.as-circle-section-label-index-box', this.$svg); this.$textBox = $g('rect.as-circle-section-label-text-box', this.$svg); // this.$marker = $g('defs marker', this.$svg); // this.$markerPath = $g(' path', this.$marker); this.$arrow = $g('path.as-circle-section-label-arrow', this.$svg) .attr({ 'marker-end': "url(" + '#marker_' + this._ident + ")" }); }; CircleSectionLabel.prototype.redrawBackground = function () { var indexBound = this.$index.getBoundingClientRect(); var textBound = this.$text.getBoundingClientRect(); var cHeight = indexBound.height; var cWidth = textBound.right - indexBound.left; this.$svg.attr({ height: cHeight + '', width: cWidth + '', viewBox: [0, 0, cWidth, cHeight].join(' ') }); var borderWidth = cHeight * Design.borderWidth / (Design.circleHeight + Design.borderWidth); var radius = cHeight * Design.circleHeight / (Design.circleHeight + Design.borderWidth) / 2; var x0 = indexBound.width / 2; var y0 = cHeight / 2; this.$indexBox.attr({ r: radius + '', cx: x0, cy: y0 }) .addStyle({ strokeWidth: borderWidth + '' }); var textBoxHeight = textBound.height; this.$textBox.attr( { x: x0 / 2, y: (cHeight - textBoxHeight) / 2, width: cWidth - x0 - 1, height: textBoxHeight, rx: textBoxHeight / 2, ry: textBoxHeight / 2 } ); var arrowRadius = cHeight * Design.indexArrowRadius / (Design.circleHeight + Design.borderWidth); this.$arrow.attr({ d: [ 'M', x0 + arrowRadius * Math.cos(Design.indexArrowStartAngle), y0 + arrowRadius * Math.sin(Design.indexArrowStartAngle), 'A', arrowRadius, arrowRadius, 0, 1, 1, x0 + arrowRadius * Math.cos(Design.indexArrowEndAngle), y0 + arrowRadius * Math.sin(Design.indexArrowEndAngle) ].join(' ') }).addStyle('stroke-width', cHeight * Design.indexArrowStrokeWidth / (Design.circleHeight + Design.borderWidth)) }; CircleSectionLabel.tag = 'CircleSectionLabel'.toLowerCase(); CircleSectionLabel.render = function () { return _({ class: 'as-circle-section-label', child: [ { class: 'as-circle-section-label-background' }, '.as-circle-section-label-index', '.as-circle-section-label-text' ] }); }; CircleSectionLabel.property = {}; CircleSectionLabel.property.index = { set: function (value) { this._index = value; this.$index.clearChild().addChild(_({ text: value + '' })) }, get: function () { return this._index; } }; CircleSectionLabel.property.text = { set: function (value) { this._text = value; this.$text.clearChild().addChild(_({ text: value + '' })) }, get: function () { return this._text; } } ACore.install(CircleSectionLabel); export default CircleSectionLabel;</code></pre> </article> </section> </div> <nav> <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="CalendarInput.html">CalendarInput</a></li><li><a href="CandyBoxButton.html">CandyBoxButton</a></li><li><a href="ChromeCalendar.html">ChromeCalendar</a></li><li><a href="CircleSectionLabel.html">CircleSectionLabel</a></li><li><a href="Cluster.html">Cluster</a></li><li><a href="ClusterIconInfo.html">ClusterIconInfo</a></li><li><a href="ClusterIconStyle.html">ClusterIconStyle</a></li><li><a href="ContextCaptor.html">ContextCaptor</a></li><li><a href="DateInput.html">DateInput</a></li><li><a href="DateInput2.html">DateInput2</a></li><li><a href="DropPanel.html">DropPanel</a></li><li><a href="DropPanelStack.html">DropPanelStack</a></li><li><a href="FlexiconButton.html">FlexiconButton</a></li><li><a href="MarkerClusterer.html">MarkerClusterer</a></li><li><a href="MarkerClustererOptions.html">MarkerClustererOptions</a></li><li><a href="SearchTextInput.html">SearchTextInput</a></li><li><a href="Sprite.html">Sprite</a></li><li><a href="Time24Input.html">Time24Input</a></li></ul><h3>Events</h3><ul><li><a href="MarkerClusterer.html#event:click">click</a></li><li><a href="MarkerClusterer.html#event:clusteringbegin">clusteringbegin</a></li><li><a href="MarkerClusterer.html#event:clusteringend">clusteringend</a></li><li><a href="MarkerClusterer.html#event:mouseout">mouseout</a></li><li><a href="MarkerClusterer.html#event:mouseover">mouseover</a></li></ul><h3>Global</h3><ul><li><a href="global.html#$windowTitleText">$windowTitleText</a></li><li><a href="global.html#AddIcon">AddIcon</a></li><li><a href="global.html#calcMinHMTime">calcMinHMTime</a></li><li><a href="global.html#cleanMenuItemProperty">cleanMenuItemProperty</a></li><li><a href="global.html#preventNotNumberInput">preventNotNumberInput</a></li><li><a href="global.html#vScrollIntoView">vScrollIntoView</a></li></ul> </nav> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.0</a> on Wed Jan 04 2023 18:18:58 GMT+0700 (Indochina Time) </footer> <script> prettyPrint(); </script> <script src="scripts/linenumber.js"> </script> </body> </html>