<core:FragmentDefinition xmlns="sap.suite.ui.microchart" 
	xmlns:core="sap.ui.core" 
	xmlns:m="sap.m" 
	xmlns:oDataV4MicroChart="sap.fe.macros.microchart"
	xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
	template:require="{
		MODEL: 'sap/ui/model/odata/v4/AnnotationHelper',
		MICROCHART: 'sap/fe/macros/microchart/MicroChartHelper',
		ID: 'sap/fe/macros/StableIdHelper'
	}"
>
	<!-- MODEL.value is used instead MODEL.format because, MODEL.format adds type as Unit when Currency/Unit annotations exist and the control property expects decimal as type -->
	<template:with path="chartAnnotation>Measures/0" helper="MICROCHART.getMeasureAttributeForMeasure" var="MeasureAttribute">
		<template:with path="MeasureAttribute>DataPoint/$AnnotationPath/" var="DataPoint">
			<template:if test="{= ${DataPoint>Value} &amp;&amp; MICROCHART.isNotAlwaysHidden('Bullet', ${DataPoint>Value}, undefined, ${DataPoint>Value/$Path@com.sap.vocabularies.UI.v1.Hidden}) }">
				<template:then>
					<template:with path="DataPoint>Value/$Path" helper="MODEL.resolve$Path" var="Measure">
						<oDataV4MicroChart:MicroChartContainer
							id="{= ${this>id} ? ID.generate([${this>id}, 'mCC']) : undefined }"
							renderLabels="{= ${this>renderLabels} !== 'false' ? true : false }"
							chartTitle="{= ${this>title} || ${chartAnnotation>Title}}"
							chartDescription="{= ${this>description} || ${chartAnnotation>Description}}"
							uomPath="{= ${this>renderLabels} !== 'false' &amp;&amp; (${Measure>@Org.OData.Measures.V1.ISOCurrency} || ${Measure>@Org.OData.Measures.V1.Unit}) &amp;&amp; (${Measure>@Org.OData.Measures.V1.ISOCurrency/$Path} || ${Measure>@Org.OData.Measures.V1.Unit/$Path}) }"
							binding="{= ('{path:\'' + ((${collection>$isCollection} || ${collection>$kind} === 'EntitySet') ? '' : ${collection>@sapui.name}) + '\' , parameters : {' + MICROCHART.getSelectParameters(${this>groupId}, '', '', ((${Measure>@Org.OData.Measures.V1.ISOCurrency} || ${Measure>@Org.OData.Measures.V1.Unit}) ? (${Measure>@Org.OData.Measures.V1.ISOCurrency/$Path} || ${Measure>@Org.OData.Measures.V1.Unit/$Path}) : '')) + '} }') }"
							visible="{= MICROCHART.getHiddenPathExpression(${DataPoint>Value/$Path@com.sap.vocabularies.UI.v1.Hidden}) }">
							<BulletMicroChart
								targetValue="{DataPoint>TargetValue@@.MODEL.value}"
								forecastValue="{DataPoint>ForecastValue@@.MODEL.value}"
								maxValue="{DataPoint>MaximumValue@@.MODEL.format}"
								minValue="{DataPoint>MinimumValue@@.MODEL.format}"
								actualValueLabel="{= MICROCHART.formatDecimal(${DataPoint>Value/$Path}, ${DataPoint>Value/$Path/$}, (${DataPoint>ValueFormat} &amp;&amp; ${DataPoint>ValueFormat/NumberOfFractionalDigits})) }"
								targetValueLabel="{= MICROCHART.formatDecimal(${DataPoint>TargetValue/$Path}, ${DataPoint>TargetValue/$Path/$}, (${DataPoint>ValueFormat} &amp;&amp; ${DataPoint>ValueFormat/NumberOfFractionalDigits})) }"
								showDeltaValue="{= ${DataPoint>Visualization/$EnumMember}.indexOf('DeltaBulletChart') > -1 }"
								mode="{= ${DataPoint>Visualization/$EnumMember}.indexOf('DeltaBulletChart') > -1 ? 'Delta' : undefined }">
								<template:if test="{= ${DataPoint>Criticality} || (!${DataPoint>Criticality} &amp;&amp; !${DataPoint>CriticalityCalculation}) }">
									<template:then>
										<actual>
											<BulletMicroChartData value="{DataPoint>Value@@.MODEL.value}" color="{= ${DataPoint>Criticality} ? MICROCHART.getCriticalityBinding(${DataPoint>}) : undefined }"/>
										</actual>
									</template:then>
									<template:else>
										<template:with path="DataPoint>CriticalityCalculation" var="CriticalityCalculation">
											<template:with path="DataPoint>CriticalityCalculation/ImprovementDirection/$EnumMember" var="Direction">
												<actual>
													<BulletMicroChartData value="{DataPoint>Value@@.MODEL.value}" color="{= MICROCHART.getCriticalityCalculationBinding(${Direction>},
											${DataPoint>Value@@.MODEL.value},
											${CriticalityCalculation>DeviationRangeLowValue@@MODEL.format},
											${CriticalityCalculation>ToleranceRangeLowValue@@MODEL.format},
											${CriticalityCalculation>AcceptanceRangeLowValue@@MODEL.format},
											${CriticalityCalculation>AcceptanceRangeHighValue@@MODEL.format},
											${CriticalityCalculation>ToleranceRangeHighValue@@MODEL.format},
											${CriticalityCalculation>DeviationRangeHighValue@@MODEL.format}) }"/>
												</actual>
												<thresholds>
													<template:if test="{= ${Direction>}.indexOf('Minimize') === -1 &amp;&amp; ${CriticalityCalculation>DeviationRangeLowValue} }">
														<BulletMicroChartData value="{CriticalityCalculation>DeviationRangeLowValue@@.MODEL.format}" color="{CriticalityCalculation>DeviationRangeLowValue@@MICROCHART.getThresholdColor}"/>
													</template:if>
													<template:if test="{= ${Direction>}.indexOf('Minimize') === -1 &amp;&amp; ${CriticalityCalculation>ToleranceRangeLowValue} }">
														<BulletMicroChartData value="{CriticalityCalculation>ToleranceRangeLowValue@@.MODEL.format}" color="{CriticalityCalculation>ToleranceRangeLowValue@@MICROCHART.getThresholdColor}"/>
													</template:if>
													<template:if test="{= ${Direction>}.indexOf('Maximize') === -1 &amp;&amp; ${CriticalityCalculation>ToleranceRangeHighValue} }">
														<BulletMicroChartData value="{CriticalityCalculation>ToleranceRangeHighValue@@.MODEL.format}" color="{CriticalityCalculation>ToleranceRangeHighValue@@MICROCHART.getThresholdColor}"/>
													</template:if>
													<template:if test="{= ${Direction>}.indexOf('Maximize') === -1 &amp;&amp; ${CriticalityCalculation>DeviationRangeHighValue} }">
														<BulletMicroChartData value="{CriticalityCalculation>DeviationRangeHighValue@@.MODEL.format}" color="{CriticalityCalculation>DeviationRangeHighValue@@MICROCHART.getThresholdColor}"/>
													</template:if>
												</thresholds>
											</template:with>
										</template:with>
									</template:else>
								</template:if>
							</BulletMicroChart>
						</oDataV4MicroChart:MicroChartContainer>
					</template:with>
				</template:then>
				<template:elseif test="{= MICROCHART.logWarning('Bullet', { DataPoint_Value : ${DataPoint>Value} }) }">
				</template:elseif>
			</template:if>
		</template:with>
	</template:with>

</core:FragmentDefinition>
