UNPKG

gantt-source_management

Version:

Gantt, Schedule,

27 lines 2.74 kB
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ProgressBar={})}(this,(function(t){"use strict"; /** * Gantt-Schedule-Timeline-Calendar helpers * * @copyright NEURONET - Rafal Pospiech * @author Rafal Pospiech <neuronet.io@gmail.com> * @module gantt-schedule-timeline-calendar * @link https://github.com/neuronetio/gantt-schedule-timeline-calendar * @link https://gantt-schedule-timeline-calendar.neuronet.io * @version 3.37.5 * @released 2024-07-19 * @license SEE LICENSE IN LICENSE FILE */const e="gstc";function i(t,i=""){let s=`${e}__${t}`;return t===e&&(s=e),i?`${s} ${s}--${i.replace(":","-")}`:s} /** * ProgressBar plugin * * @copyright NEURONET - Rafal Pospiech * @author Rafal Pospiech <neuronet.io@gmail.com> * @module gantt-schedule-timeline-calendar * @link https://github.com/neuronetio/gantt-schedule-timeline-calendar * @link https://gantt-schedule-timeline-calendar.neuronet.io * @version 3.37.5 * @released 2024-07-19 * @license SEE LICENSE IN LICENSE FILE */const s="config.plugin.ProgressBar";class r{constructor(t,e){this.options=function(t){return Object.assign({enabled:!0,className:i("chart-timeline-items-row-item-progress-bar")},t)}(t),this.vido=e,this.state=e.state,this.className=this.options.className,this.PluginProgressBarSlot=this.PluginProgressBarSlot.bind(this),this.destroy=this.destroy.bind(this),this.state.update("config.slots.chart-timeline-items-row-item.inner",(t=>(t.includes(this.PluginProgressBarSlot)||t.push(this.PluginProgressBarSlot),t)))}destroy(){this.state.update("config.slots.chart-timeline-items-row-item.inner",(t=>t.filter((t=>t!==this.PluginProgressBarSlot)))),this.vido.api.pluginDestroyed("ProgressBar")}PluginProgressBarSlot(t,e){let i;const s=new t.StyleMap({width:"0px"});return t.onChange((r=>{if(!(e=r)||!e.item)return void(s.style.width="0px");const o=t.api.getItemData(e.item.id);if(!o||void 0===e.item.progress)return void(s.style.width="0px");if(!e.item)return;const n=e.item,l=void 0===n.progress?100:n.progress;0===Math.floor(o.width)?s.style.width=100-l+"%":(i=o.width-o.width/100*l,i-=o.position.right-o.position.actualRight,i<0&&(i=0),s.style.width=Math.floor(i)+"px")})),t=>e&&e.item&&void 0!==e.item.progress?this.vido.html` <div class="${this.className}" style=${s.directive()}></div>${t} `:null}}t.Plugin=function(t={}){return function(e){const i=e.state.get(s);i&&(t=e.api.mergeDeep({},t,i));const o=new r(t,e);return e.api.pluginInitialized("ProgressBar"),o.destroy}},t.pluginPath=s,Object.defineProperty(t,"__esModule",{value:!0})}));