UNPKG

gantt-source_management

Version:

Gantt, Schedule,

50 lines 4.35 kB
!function(t,s){"object"==typeof exports&&"undefined"!=typeof module?s(exports):"function"==typeof define&&define.amd?define(["exports"],s):s((t="undefined"!=typeof globalThis?globalThis:t||self).TimeBookmarks={})}(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 s="gstc"; /** * TimeBookmarks 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 e="config.plugin.TimeBookmarks",i="config.slots.chart-timeline-items.outer";class a{constructor(t,a){this.unsub=[],this.options=function(t){return Object.assign({enabled:!0,className:""},t)}(t),this.vido=a,this.state=a.state,this.className=function(t,e=""){let i=`${s}__${t}`;return t===s&&(i=s),e?`${i} ${i}--${e.replace(":","-")}`:i}("chart-time-bookmark")+(this.options.className?` ${this.options.className}`:""),this.PluginTimeBookmarksSlot=this.PluginTimeBookmarksSlot.bind(this),this.destroy=this.destroy.bind(this),this.state.update(e,this.options),this.state.update(i,(t=>(t.includes(this.PluginTimeBookmarksSlot)||t.push(this.PluginTimeBookmarksSlot),t))),this.unsub.push(this.state.subscribe(e,(t=>this.options=t)))}destroy(){this.unsub.forEach((t=>t())),this.state.update(i,(t=>t.filter((t=>t!==this.PluginTimeBookmarksSlot)))),this.vido.api.pluginDestroyed("TimeBookmarks")}PluginTimeBookmarksSlot(t){const{html:s,onDestroy:i,state:a,update:l,api:o,StyleMap:n}=t,c=[];i(a.subscribeAll([e,"$data.chart.time","$data.scroll.horizontal.dataIndex"],(()=>{var t;const s=a.get("$data.chart.time"),i=a.get(e);c.length=0;for(const e in i.bookmarks){const a=o.time.date(i.bookmarks[e].time);if(!o.time.isInCurrentView(a,s))continue;const l=Object.assign(Object.assign({},i.bookmarks[e]),{id:e,leftViewPx:0,absoluteLeftPx:0,visible:!1,date:null,styleMap:new n(Object.assign(null!==(t=i.bookmarks[e].style)&&void 0!==t?t:{},{left:"",height:""}))});l.styleMap.style.background=l.styleMap.style.background||l.color||"#3498DB",l.id=e,l.date=a,l.leftViewPx=o.time.getViewOffsetPxFromDates(a,!1,s),l.absoluteLeftPx=o.time.getGlobalOffsetPxFromDates(l.date,!1,s),l.visible=l.absoluteLeftPx>=s.leftPx&&l.absoluteLeftPx<=s.rightPx,c.push(l)}l()}),{group:!0}));let r=0,d=0;i(a.subscribe("$data.scroll.vertical",(t=>{r=Math.round(o.getRealChartHeight()),d=Math.round(-t.preciseOffset),l()})));const h=t=>s`<div class="${this.className}-line ${this.className}-line--${t.id}${t.className?` ${t.className}`:""}" style="left:${t.leftViewPx}px;top: ${d}px;" > <div class="${this.className}-line-content ${this.className}-line-content--${t.id}" style="border-left: 1px solid ${t.styleMap.style.background};" ></div> </div>`,m=t=>s`<div class="${this.className}-label ${this.className}-label--${t.id}${t.className?` ${t.className}`:""}" style="left:${t.leftViewPx}px;top: ${d}px;" > <div class="${this.className}-label-content ${this.className}-label-content--${t.id}" style=${t.styleMap.directive()} > ${t.label} </div> </div>`;return t=>s`<div class="${this.className}s ${this.className}s--lines" style="height: ${r}px;"> ${c.filter((t=>t.visible)).map((t=>h(t)))} </div> ${t} <div class="${this.className}s ${this.className}s--labels" style="height: ${r}px;"> ${c.filter((t=>t.visible)).map((t=>m(t)))} </div>`}}t.Plugin=function(t={}){return function(s){const i=s.state.get(e);i&&(t=s.api.mergeDeep({},t,i));const l=new a(t,s);return s.api.pluginInitialized("TimeBookmarks"),l.destroy}},t.pluginPath=e,t.slotPath=i,Object.defineProperty(t,"__esModule",{value:!0})}));