UNPKG

gantt-source_management

Version:

Gantt, Schedule,

27 lines 2.46 kB
/** * 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 t="gstc";function i(i,s=""){let e=`${t}__${i}`;return i===t&&(e=t),s?`${e} ${e}--${s.replace(":","-")}`:e} /** * 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 e{constructor(t,s){this.options=function(t){return Object.assign({enabled:!0,className:i("chart-timeline-items-row-item-progress-bar")},t)}(t),this.vido=s,this.state=s.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,i){let s;const e=new t.StyleMap({width:"0px"});return t.onChange((r=>{if(!(i=r)||!i.item)return void(e.style.width="0px");const o=t.api.getItemData(i.item.id);if(!o||void 0===i.item.progress)return void(e.style.width="0px");if(!i.item)return;const n=i.item,a=void 0===n.progress?100:n.progress;0===Math.floor(o.width)?e.style.width=100-a+"%":(s=o.width-o.width/100*a,s-=o.position.right-o.position.actualRight,s<0&&(s=0),e.style.width=Math.floor(s)+"px")})),t=>i&&i.item&&void 0!==i.item.progress?this.vido.html` <div class="${this.className}" style=${e.directive()}></div>${t} `:null}}function r(t={}){return function(i){const r=i.state.get(s);r&&(t=i.api.mergeDeep({},t,r));const o=new e(t,i);return i.api.pluginInitialized("ProgressBar"),o.destroy}}export{r as Plugin,s as pluginPath};