{"version":3,"file":"ng-rawy-gannt-chart.mjs","sources":["../../../projects/rawy-gantt-chart/src/lib/rawy-gantt-chart.service.ts","../../../projects/rawy-gantt-chart/src/lib/resizable.directive.ts","../../../projects/rawy-gantt-chart/src/lib/rawy-gantt-chart.component.ts","../../../projects/rawy-gantt-chart/src/lib/rawy-gantt-chart.component.html","../../../projects/rawy-gantt-chart/src/lib/rawy-gantt-chart.module.ts","../../../projects/rawy-gantt-chart/src/public-api.ts","../../../projects/rawy-gantt-chart/src/ng-rawy-gannt-chart.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class RawyGanttChartService {\n\n  constructor() { }\n}\n","import { Directive, ElementRef, OnInit, Input, OnDestroy, Output, EventEmitter } from '@angular/core';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\n\r\n@Directive({\r\n    selector: '[resize]', // Attribute selector\r\n})\r\nexport class ResizableDirective implements OnInit, OnDestroy {\r\n    subscription$: Subscription = new Subscription();\r\n\r\n    @Input() resizableGrabWidth = 5;\r\n    @Input() direction = 'right'; // or left\r\n    @Input() resizableMinWidth = 10;\r\n    @Output() updateSize = new EventEmitter<number>();\r\n\r\n    dragging = false;\r\n\r\n    currentWidth =0\r\n    mousedountclientX = 0\r\n\r\n\r\n    constructor(private el: ElementRef) {\r\n        const self = this;\r\n\r\n        const EventListenerMode = { capture: true };\r\n\r\n        function preventGlobalMouseEvents() {\r\n            (document.body.style as any)['pointer-events'] = 'none';\r\n        }\r\n\r\n        function restoreGlobalMouseEvents() {\r\n            (document.body.style as any)['pointer-events'] = 'auto';\r\n        }\r\n\r\n\r\n\r\n        const mouseMoveG = (evt: any) => {\r\n            if (!this.dragging) {\r\n                return;\r\n            }\r\n            evt.stopPropagation();\r\n        };\r\n\r\n\r\n\r\n        const mouseUpG = (evt: any) => {\r\n\r\n            if (!this.dragging) {\r\n                return;\r\n            }\r\n            restoreGlobalMouseEvents();\r\n            this.dragging = false;\r\n            evt.stopPropagation();\r\n            if(this.mousedountclientX >evt.screenX){\r\n                this.updateSize.emit(-1);\r\n            }else{\r\n                this.updateSize.emit(1);\r\n            }\r\n\r\n        };\r\n\r\n        const mouseDown = (evt: any) => {\r\n            this.mousedountclientX = evt.screenX\r\n            if (this.inDragRegion(evt)) {\r\n                this.dragging = true;\r\n                preventGlobalMouseEvents();\r\n                evt.stopPropagation();\r\n            }\r\n        };\r\n\r\n        const mouseMove = (evt: any) => {\r\n            if (this.inDragRegion(evt) || this.dragging) {\r\n                el.nativeElement.style.cursor = 'col-resize';\r\n            } else {\r\n                el.nativeElement.style.cursor = 'default';\r\n            }\r\n        };\r\n\r\n    \r\n\r\n        this.subscription$.add(\r\n            fromEvent(document, 'mousemove').pipe(\r\n            ).subscribe((ev) => {\r\n                mouseMoveG(ev)\r\n            }),\r\n        )\r\n        this.subscription$.add(\r\n            fromEvent(document, 'mouseup').pipe(\r\n            ).subscribe((e) => {\r\n                mouseUpG(e)\r\n            })\r\n        )\r\n        this.subscription$.add(\r\n            fromEvent(el.nativeElement, 'mousedown').pipe(\r\n            ).subscribe((e) => {\r\n                this.currentWidth = el.nativeElement.style.width.slice(0.-2)\r\n                mouseDown(e)\r\n            })\r\n        )\r\n        this.subscription$.add(fromEvent(el.nativeElement, 'mousemove').pipe(\r\n        ).subscribe((e) => {\r\n            mouseMove(e)\r\n\r\n        }))\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.el.nativeElement.style['border-right'] =\r\n            this.resizableGrabWidth + 'px solid  #54515156';\r\n\r\n\r\n            this.el.nativeElement.style['border-left'] =\r\n            this.resizableGrabWidth + 'px solid  #54515156';\r\n    }\r\n\r\n    inDragRegion(evt: any) {\r\n        return (\r\n            this.el.nativeElement.clientWidth -\r\n            evt.clientX +\r\n            this.el.nativeElement.offsetLeft <\r\n            this.resizableGrabWidth\r\n        );\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n\t\tthis.subscription$.unsubscribe();\r\n\t}\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { GanntTask } from './rawy-gantt-chart.interface';\r\n\r\n@Component({\r\n  selector: 'rawy-gantt-chart',\r\n  templateUrl:'./rawy-gantt-chart.component.html',\r\n  styleUrls: ['./rawy-gantt-chart.component.scss']\r\n\r\n})\r\nexport class RawyGanttChartComponent {\r\n\r\n  @Input() dayStart='';\r\n  @Input() dayEnd='';\r\n  @Input() beforeStartDay = 3;\r\n  @Input() afterEndDay = 3;\r\n  @Input() cellWidth = 120; // 1 day is 120px\r\n  @Input() tasks: GanntTask[]=[];\r\n  dates: string[] = []\r\n  todayIndex=0\r\n  workingDays=0;\r\n  todayWidth=0\r\n  line:number=0\r\n\r\n\r\n  ngOnInit(): void {\r\n    this.prepareChart();\r\n  }\r\n\r\n  prepareChart() {\r\n \r\n    const first = new Date(this.dayStart)\r\n          first.setMonth( first.getMonth() - this.beforeStartDay)\r\n          first.toLocaleDateString()\r\n    const second= new Date(this.dayEnd)\r\n          second.setMonth( second.getMonth() + this.afterEndDay) \r\n          second.toLocaleDateString()\r\n    const d1 = new Date(this.formateDate([first])[0]);\r\n    const d2 = new Date(this.formateDate([second])[0]);\r\n\r\n    this.dates= this.getDatesInRange(d1, d2) \r\n    this.todayIndex= (this.dates.indexOf(this.formateDate([new Date()])[0])+1)\r\n    this.todayWidth = this.todayIndex * this.cellWidth\r\n    this.line = (this.dates.indexOf(this.formateDate([new Date()])[0])+1)*this.cellWidth -100\r\n    this.workingDays = this.dates.length\r\n    this.prepareTasks(this.tasks)\r\n    for(let task of this.tasks) { //prepare subTasks\r\n      this.prepareTasks(task.subTasks as GanntTask[])\r\n    } \r\n    setTimeout(()=> {\r\n\r\n      document.getElementById(\"timelineWrapper\")!.scrollLeft += this.todayWidth -538\r\n    },0)\r\n  }\r\n\r\n  prepareTasks(data:GanntTask[]) {\r\n    \r\n    data.map((task:GanntTask) => {\r\n\r\n      let start = this.dates.indexOf(task.start)+1;\r\n      let end = this.dates.indexOf(task.end)+1\r\n      task.offset = (start* this.cellWidth )-this.cellWidth\r\n      task.width = ((end - start +1) * this.cellWidth )\r\n      let range = end - (this.todayIndex)\r\n      let width = task.width /this.cellWidth\r\n      let status = (range /width) * 100\r\n\r\n      if(start  > this.todayIndex){task.color ='#ffffff8'}\r\n      else if(status > 30 && (end- this.todayIndex >3)) { task.color ='#99E7D1'} \r\n      else if(status < 0 ) {task.color ='#FF375E'}\r\n      else if(status == 0 ){task.color ='#00C48C'} \r\n      else if( end - this.todayIndex <3 || status < 30 && end != this.todayIndex){task.color ='#E1DD40'} \r\n\r\n    });\r\n  }\r\n  onTaskClick(clickedTask:GanntTask) {\r\n    document.getElementById(\"timelineWrapper\")!.scrollLeft = 0\r\n    document.getElementById(\"timelineWrapper\")!.scrollLeft += (clickedTask.offset as number)\r\n\r\n    this.tasks.filter((task:GanntTask) => {\r\n      if (task.id === clickedTask.id) {\r\n        task.isHidden = !task.isHidden;\r\n        clickedTask.active = !clickedTask.active;\r\n      }\r\n    });\r\n  }\r\n\r\n\r\n\r\n\r\n\r\n  getDatesInRange(startDate: Date, endDate: Date) {\r\n    const date = new Date(startDate.getTime());\r\n    const dates = [];\r\n    while (date <= endDate) {\r\n      dates.push(new Date(date));\r\n      date.setDate(date.getDate() + 1);\r\n    }\r\n  \r\n    return this.formateDate(dates);\r\n  }\r\n  \r\n  formateDate(dates: Date[]):Array<string>{\r\n    let shortDates:Array<string> = []\r\n    dates.forEach(value => {\r\n      const year = value.getFullYear();\r\n      const month = value.getMonth() + 1;\r\n      const day = value.getDate();\r\n      const withSlashes = [year, month, day].join('/');\r\n      shortDates.push(withSlashes)\r\n\r\n    })\r\n    return shortDates\r\n  }\r\n \r\n  scroll(s:any){}\r\n\r\n  updatedSize(size:any, index:any ,dr:string,childIndex?:number){\r\n       \r\n        if( !this.canResize(dr,size,index, childIndex)) return\r\n\r\n    if(dr=='right'){\r\n      \r\n      if(size == 1){\r\n         this.getTask(index, childIndex)['width']  += this.cellWidth;\r\n         this.getTask(index, childIndex)['end'] =  this.incrementDate( this.getTask(index, childIndex)['end'],1)\r\n      }else if(size == -1 &&  this.getTask(index, childIndex)['width']  >this.cellWidth) {\r\n        // if( !this.canResize(index) && !childIndex) return\r\n\r\n        this.getTask(index, childIndex)['width'] += -this.cellWidth\r\n         this.getTask(index, childIndex)['end']  =  this.incrementDate( this.getTask(index, childIndex)['end'],-1)\r\n      }\r\n    }else{\r\n      if(size == 1 &&  this.getTask(index,childIndex)['width'] >this.cellWidth){\r\n        \r\n         this.getTask(index, childIndex)['offset'] += this.cellWidth;\r\n         this.getTask(index, childIndex)['width']  -= this.cellWidth; \r\n         this.getTask(index, childIndex)['start']  =  this.incrementDate( this.getTask(index, childIndex)['start'],+1)\r\n      } else if (size == -1){\r\n         this.getTask(index, childIndex)['offset'] -= this.cellWidth;\r\n         this.getTask(index, childIndex)['width']  += this.cellWidth;\r\n         this.getTask(index, childIndex)['start']  =  this.incrementDate( this.getTask(index, childIndex)['start'],-1)\r\n      }\r\n    }\r\n    this.prepareTasks(this.tasks)\r\n  }\r\n\r\n  incrementDate(date:string, inc:number){\r\n   let  newDate =  this.dates.indexOf(date) + inc\r\n   return  this.dates[newDate]\r\n  }\r\n\r\n  getTask(parentIndex:number, childIndex?:number){\r\n    if( childIndex !=undefined && this.tasks[parentIndex].subTasks){\r\n      \r\n      return(this.tasks[parentIndex] as any).subTasks[childIndex] \r\n\r\n    }else {\r\n      return this.tasks[parentIndex]\r\n    }\r\n  }\r\n\r\n \r\n\r\n\r\n    canResize(dr:string,size:number, index:number, childIndex?:number ) {\r\n\r\n      let task :any;\r\n      if(dr =='right'){\r\n        if(childIndex == undefined && size<0){//can dec parent to right\r\n        task = this.tasks[index].subTasks?.filter((e) => (this.dates.indexOf(e.end)+1) > this.dates.indexOf(this.tasks[index].end)) \r\n      }else{\r\n          if(childIndex != undefined && size>0){//can inc child to right\r\n            task = this.tasks[index].subTasks?.filter((e) => (this.dates.indexOf(e.end)+1) > this.dates.indexOf(this.tasks[index].end)) \r\n          }\r\n      }\r\n      } else {\r\n        if(childIndex == undefined){ //can dec child at left \r\n          if( size>0){\r\n            task = this.tasks[index].subTasks?.filter((e) => (this.dates.indexOf(e.start)) <= this.dates.indexOf(this.tasks[index].start)) \r\n\r\n          } else {return true} \r\n                 \r\n        }else{//can inc child at left\r\n          if(size<0 ){\r\n            task = this.tasks[index].subTasks?.filter((e) => (this.dates.indexOf(e.start)) == this.dates.indexOf(this.tasks[index].start)) \r\n          }else {return true }\r\n        }\r\n      }\r\n    return  !task?.length   \r\n     \r\n  }\r\n\r\n\r\n\r\n}\r\n\r\n\r\n","<!-- mat-elevation-z8 -->\r\n\r\n<div [ngClass]=\"'theme-material'\" class=\"container  \">\r\n  <div class=\"line\" [ngStyle]=\"{left:line+'px'}\"></div>\r\n  <div class=\"taskTableWrapper \" #scrollOne id=\"timeline\">\r\n    <div class=\"side-task-header\">\r\n      <div class=\"d-flex justify-content-around\">\r\n        <span>title</span><span>Duration</span><span>Progress</span>\r\n      </div>\r\n\r\n    </div>\r\n    <div class=\"side-task-body\">\r\n      <cdk-accordion class=\"example-accordion\">\r\n        <cdk-accordion-item *ngFor=\"let task of tasks; let index = index;\" (click)=\"onTaskClick(task)\"\r\n          #accordionItem=\"cdkAccordionItem\" class=\"example-accordion-item\" role=\"button\" tabindex=\"0\"\r\n          [attr.id]=\"'accordion-header-' + index\" [attr.aria-expanded]=\"accordionItem.expanded\"\r\n          [attr.aria-controls]=\"'accordion-body-' + index\">\r\n          <div class=\"example-accordion-item-header\" (click)=\"accordionItem.toggle()\">\r\n            <div class=\"d-flex justify-content-around\">\r\n              <span>\r\n                <span class=\"example-accordion-item-description\">\r\n                  Click to {{ accordionItem.expanded ? 'close' : 'open' }}\r\n                </span>\r\n                {{task.label}}</span>\r\n\r\n              <span>Duration</span>\r\n              <span>Progress</span>\r\n            </div>\r\n\r\n\r\n          </div>\r\n          <div class=\"\" role=\"region\" [style.display]=\"accordionItem.expanded ? '' : 'none'\"\r\n            [attr.id]=\"'accordion-body-' + index\" [attr.aria-labelledby]=\"'accordion-header-' + index\"\r\n            *ngFor=\"let subTask of task.subTasks\">\r\n            <div class=\"accordion-sub-item\">sub task</div>\r\n\r\n          </div>\r\n        </cdk-accordion-item>\r\n\r\n\r\n      </cdk-accordion>\r\n    </div>\r\n\r\n  </div>\r\n  <div id=\"timelineWrapper\" class=\"timelineWrapper\" (scroll)=\"scrollOne.scrollTop = scrollTwo.scrollTop ;\r\n     scroll( scrollOne.scrollLeft)\" #scrollTwo>\r\n    <table class=\"timeline \">\r\n\r\n      <thead>\r\n        <tr>\r\n          <th *ngFor=\"let item of [].constructor(workingDays); let i = index\" [ngStyle]=\"{width: cellWidth+'px' }\">\r\n            {{ dates[i] }}\r\n\r\n          </th>\r\n        </tr>\r\n      </thead>\r\n      <tbody>\r\n        <div class=\"row\" *ngFor=\"let task of tasks  let i= index\" [ngStyle]=\"{\r\n            height: (task.subTasks!.length > 0 && task.isHidden ? (task.subTasks!.length * 30 )+(task.subTasks!.length *6): 30 ) + 'px' \r\n          }\">\r\n          <div \r\n              *ngIf=\"!task.isHidden ; else elseBlock \" \r\n              (click)=\"onTaskClick(task)\" \r\n              class=\"taskBar d-flex justify-content-between\"\r\n              [matTooltip]=\"'label: '+ task.label+'\\nstart: '+task.start+'\\nend: '+ task.end \"\r\n              matTooltipClass=\"gantt-tooltip\" [ngStyle]=\"{\r\n              left: task.offset + 'px',\r\n              width: task.width + 'px',\r\n              'background-color': task.color\r\n          }\" >\r\n            <span class=\"\" resize  (updateSize)=\"updatedSize($event, i, 'left')\"></span>\r\n            <span class=\"\" resize  (updateSize)=\"updatedSize($event, i,'right')\"></span>\r\n          </div>\r\n          <ng-template #elseBlock >\r\n            <div  \r\n              (click)=\"onTaskClick(task)\"\r\n              [ngStyle]=\"{\r\n              display: 'inline-block',\r\n              position: 'relative',\r\n              left: task.offset + 'px',\r\n              width: task.width + 'px',\r\n              'background-color': task.color+'33  '\r\n            }\">\r\n              <div *ngFor=\"let subTask of task.subTasks;let j= index\" class=\"taskBar d-flex justify-content-between  \"\r\n                [matTooltip]=\"'label: '+ subTask.label+'\\nstart: '+subTask.start+'\\nend: '+ subTask.end \"\r\n                matTooltipClass=\"gantt-tooltip\" [ngStyle]=\"{\r\n                left: $any((subTask.offset||0) - (task.offset||0)) + 'px',\r\n                width: subTask.width + 'px',\r\n               ' margin-left':10+'px',\r\n                display: 'block',\r\n              'background-color': subTask.color\r\n\r\n            }\"\r\n           >\r\n                <!-- <p>{{subTask.start}} to {{subTask.end}}</p> -->\r\n              <span class=\"\" resize  (updateSize)=\"updatedSize($event, i, 'left',j)\"></span>\r\n              <span class=\"\" resize  (updateSize)=\"updatedSize($event, i,'right',j)\"></span>\r\n              </div>\r\n            </div>\r\n          </ng-template>\r\n        </div>\r\n      </tbody>\r\n    </table>\r\n  </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { RawyGanttChartComponent } from './rawy-gantt-chart.component';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations'\r\nimport { BrowserModule } from '@angular/platform-browser';\r\n\r\nimport {MatToolbarModule} from '@angular/material/toolbar';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatDialogModule} from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon'\r\nimport { MatCardModule } from '@angular/material/card'\r\nimport { MatInputModule } from '@angular/material/input'\r\nimport { MatSidenavModule} from '@angular/material/sidenav';\r\nimport { MatListModule,} from '@angular/material/list';\r\nimport {MatTableModule} from '@angular/material/table';\r\nimport {MatMenuModule} from '@angular/material/menu';\r\n\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport {CdkAccordionModule} from '@angular/cdk/accordion';\r\nimport { ResizableDirective } from './resizable.directive';\r\n\r\n\r\nconst MATERIAL_MODULES = [\r\n  MatToolbarModule,\r\n  MatIconModule,\r\n  MatButtonModule,\r\n  MatDialogModule,\r\n  MatCardModule,\r\n  MatInputModule,\r\n  MatSidenavModule,\r\n  MatListModule,\r\n  MatTableModule,\r\n  MatMenuModule,\r\n  MatTooltipModule,\r\n  CdkAccordionModule\r\n ];\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    RawyGanttChartComponent,\r\n    ResizableDirective\r\n  ],\r\n  imports: [\r\n    BrowserModule,\r\n    BrowserAnimationsModule,\r\n    MATERIAL_MODULES\r\n  ],\r\n  exports: [\r\n    RawyGanttChartComponent,\r\n    ResizableDirective,\r\n  ]\r\n})\r\nexport class RawyGanttChartModule { }\r\n","/*\r\n * Public API Surface of rawy-gantt-chart\r\n */\r\n\r\nexport * from './lib/rawy-gantt-chart.service';\r\nexport * from './lib/rawy-gantt-chart.component';\r\nexport * from './lib/rawy-gantt-chart.module';\r\nexport * from './lib/rawy-gantt-chart.interface';\r\nexport * from './lib/resizable.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4.ResizableDirective"],"mappings":"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"}