private static createMilestones()

in src/gantt.ts [789:827]


    private static createMilestones(
        dataView: DataView,
        host: IVisualHost): MilestoneData {
        let milestonesIndex = -1;
        for (const index in dataView.categorical.categories) {
            const category = dataView.categorical.categories[index];
            if (category.source.roles.Milestones) {
                milestonesIndex = +index;
            }
        }

        let milestoneData: MilestoneData = {
            dataPoints: []
        };
        const milestonesCategory = dataView.categorical.categories[milestonesIndex];
        let milestones: { value: PrimitiveValue, index: number }[] = [];

        if (milestonesCategory && milestonesCategory.values) {
            milestonesCategory.values.forEach((value: PrimitiveValue, index: number) => milestones.push({ value, index }));
            milestones.forEach((milestone) => {
                const milestoneObjects = milestonesCategory.objects && milestonesCategory.objects[milestone.index];
                const selectionBuilder: ISelectionIdBuilder = host
                    .createSelectionIdBuilder()
                    .withCategory(milestonesCategory, milestone.index);

                const milestoneDataPoint: MilestoneDataPoint = {
                    name: milestone.value as string,
                    identity: selectionBuilder.createSelectionId(),
                    shapeType: milestoneObjects && milestoneObjects.milestones && milestoneObjects.milestones.shapeType ?
                        milestoneObjects.milestones.shapeType as string : MilestoneShapeTypes.Rhombus,
                    color: milestoneObjects && milestoneObjects.milestones && milestoneObjects.milestones.fill ?
                        (milestoneObjects.milestones as any).fill.solid.color : Gantt.DefaultValues.TaskColor
                };
                milestoneData.dataPoints.push(milestoneDataPoint);
            });
        }

        return milestoneData;
    }