gantt-source_management
Version:
Gantt, Schedule,
27 lines • 2.46 kB
JavaScript
/**
* 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};