devexpress-gantt
Version:
DevExpress Gantt Control
55 lines (46 loc) • 2.28 kB
text/typescript
import { Resource } from "../../Model/Entities/Resource";
import { ViewVisualModelItem } from "../../Model/VisualModel/ViewVisualModelItem";
import { GridLayoutCalculator } from "../Helpers/GridLayoutCalculator";
import { RenderElementUtils } from "./RenderElementUtils";
import { RenderHelper } from "./RenderHelper";
export class ResourseRender {
private _renderHelper: RenderHelper;
private _resourcesElements: Array<HTMLElement> = [];
constructor(renderHelepr: RenderHelper) {
this._renderHelper = renderHelepr;
}
protected get gridLayoutCalculator(): GridLayoutCalculator {
return this._renderHelper.gridLayoutCalculator;
}
protected get taskArea(): HTMLElement {
return this._renderHelper.taskArea;
}
public get resourcesElements(): HTMLElement[] {
return this._resourcesElements;
}
getViewItem(index: number): ViewVisualModelItem {
return this._renderHelper.getViewItem(index);
}
getTaskResourcesVisibility(index: number): boolean {
return this._renderHelper.getTaskResourcesVisibility(index);
}
createResources(index: number): void {
const viewItem = this.getViewItem(index);
const resources = viewItem.resources.items;
for(let i = 0; i < resources.length; i++)
this.createResourceElement(index, resources[i]);
}
createResourcesWrapperElement(index: number): void {
const resourcesWrapperElementInfo = this.gridLayoutCalculator.getTaskResourcesWrapperElementInfo(index);
RenderElementUtils.create(resourcesWrapperElementInfo, index, this.taskArea, this.resourcesElements);
this.resourcesElements[index].style.display = this.getTaskResourcesVisibility(index) ? "" : "none";
}
createResourceElement(index: number, resource: Resource): void {
const resourceElementInfo = this.gridLayoutCalculator.getTaskResourceElementInfo();
if(resource.color)
resourceElementInfo.style.backgroundColor = resource.color;
const resElement = RenderElementUtils.create(resourceElementInfo, index, this.resourcesElements[index]);
resElement.innerText = resource.text;
this.gridLayoutCalculator.checkAndCorrectElementDisplayByRange(resElement);
}
}