<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('Area', ${DataPoint>Value}, undefined, ${DataPoint>Value/$Path@com.sap.vocabularies.UI.v1.Hidden}) &amp;&amp; ${chartAnnotation>Dimensions/0/} }">
				<template:then>
					<template:with path="DataPoint>Value/$Path" helper="MODEL.resolve$Path" var="Measure">
						<template:with path="chartAnnotation>Dimensions/0/" var="Dimension">
							<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}) }"
								measures="{DataPoint>Value/$Path}"
								dimension="{= ${Dimension>$PropertyPath@com.sap.vocabularies.Common.v1.Text} ? ${Dimension>$PropertyPath@com.sap.vocabularies.Common.v1.Text/$Path} : ${Dimension>$PropertyPath} }"
								measurePrecision="{= ${DataPoint>Value/$Path/$Precision} ? ${DataPoint>Value/$Path/$Precision} : undefined }"
								measureScale="{= (${DataPoint>ValueFormat} &amp;&amp; ${DataPoint>ValueFormat/NumberOfFractionalDigits}) ?  ${DataPoint>ValueFormat/NumberOfFractionalDigits} : ${DataPoint>Value/$Path/$Scale} ? ${DataPoint>Value/$Path/$Scale} : 1 }"
								dimensionPrecision="{= ${Dimension>$PropertyPath/$Precision} ? ${Dimension>$PropertyPath/$Precision} : undefined }"
								dataPointQualifiers="{= ${DataPoint>./@sapui.name}.indexOf('com.sap.vocabularies.UI.v1.DataPoint') === -1 ? undefined : (${DataPoint>./@sapui.name}.indexOf('#') > -1 ? ${DataPoint>./@sapui.name}.split('#')[1] : '') }"
								binding="{= ${this>groupId} ? ('{path:\'\', parameters : { $$groupId: \'' + ${this>groupId} + '\'} }') : undefined }">
								<AreaMicroChart>
									<chart>
										<AreaMicroChartItem points="{= '{path:\'' + (${collection>$kind} === 'EntitySet' ? '/' : '') + ${collection>@sapui.name} + '\', parameters : {' + MICROCHART.getSelectParameters('', ${DataPoint>CriticalityCalculation}, '',((${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}) : ''), ${DataPoint>TargetValue/$Path}, (${Dimension>$PropertyPath@com.sap.vocabularies.Common.v1.Text} ? ${Dimension>$PropertyPath@com.sap.vocabularies.Common.v1.Text/$Path} : ${Dimension>$PropertyPath})) + '} }' }">
											<points>
												<AreaMicroChartPoint x="{Dimension>@@.MODEL.format}" y="{DataPoint>Value@@.MODEL.value}"/>
											</points>
										</AreaMicroChartItem>
									</chart>
									<target>
										<AreaMicroChartItem points="{= '{path:\'' + (${collection>$kind} === 'EntitySet' ? '/' : '') + ${collection>@sapui.name} + '\'}' }">
											<points>
												<AreaMicroChartPoint x="{Dimension>@@.MODEL.format}" y="{DataPoint>TargetValue@@.MODEL.value}"/>
											</points>
										</AreaMicroChartItem>
									</target>
									<template:if test="{= ${this>renderLabels} !== 'false' }">
										<firstXLabel>
											<AreaMicroChartLabel/>
										</firstXLabel>
										<firstYLabel>
											<AreaMicroChartLabel/>
										</firstYLabel>
										<lastXLabel>
											<AreaMicroChartLabel/>
										</lastXLabel>
										<lastYLabel>
											<AreaMicroChartLabel/>
										</lastYLabel>
									</template:if>
									<template:if test="{= ${DataPoint>CriticalityCalculation} &amp;&amp; ${DataPoint>CriticalityCalculation/ImprovementDirection/$EnumMember} }">
										<template:with path="DataPoint>CriticalityCalculation" var="CriticalityCalculation">
											<template:if test="{= ${CriticalityCalculation>ImprovementDirection/$EnumMember} === 'com.sap.vocabularies.UI.v1.ImprovementDirectionType/Minimize'}">
												<template:then>
													<minThreshold>
														<AreaMicroChartItem color="Good" points="{= '{path:\'' + (${collection>$kind} === 'EntitySet' ? '/' : '') + ${collection>@sapui.name} + '\'}' }">
															<points>
																<AreaMicroChartPoint x="{Dimension>@@.MODEL.format}" y="{CriticalityCalculation>ToleranceRangeHighValue@@.MODEL.format}"/>
															</points>
														</AreaMicroChartItem>
													</minThreshold>
													<maxThreshold>
														<AreaMicroChartItem color="Error" points="{= '{path:\'' + (${collection>$kind} === 'EntitySet' ? '/' : '') + ${collection>@sapui.name} + '\'}' }">
															<points>
																<AreaMicroChartPoint x="{Dimension>@@.MODEL.format}" y="{CriticalityCalculation>DeviationRangeHighValue@@.MODEL.format}"/>
															</points>
														</AreaMicroChartItem>
													</maxThreshold>
												</template:then>
												<template:elseif test="{= ${CriticalityCalculation>ImprovementDirection/$EnumMember} === 'com.sap.vocabularies.UI.v1.ImprovementDirectionType/Maximize'}">
													<minThreshold>
														<AreaMicroChartItem color="Error" points="{= '{path:\'' + (${collection>$kind} === 'EntitySet' ? '/' : '') + ${collection>@sapui.name} + '\'}' }">
															<points>
																<AreaMicroChartPoint x="{Dimension>@@.MODEL.format}" y="{CriticalityCalculation>DeviationRangeLowValue@@.MODEL.format}"/>
															</points>
														</AreaMicroChartItem>
													</minThreshold>
													<maxThreshold>
														<AreaMicroChartItem color="Good" points="{= '{path:\'' + (${collection>$kind} === 'EntitySet' ? '/' : '') + ${collection>@sapui.name} + '\'}' }">
															<points>
																<AreaMicroChartPoint x="{Dimension>@@.MODEL.format}" y="{CriticalityCalculation>ToleranceRangeLowValue@@.MODEL.format}"/>
															</points>
														</AreaMicroChartItem>
													</maxThreshold>
												</template:elseif>
												<template:elseif test="{= ${CriticalityCalculation>ImprovementDirection/$EnumMember} === 'com.sap.vocabularies.UI.v1.ImprovementDirectionType/Target'}">
													<minThreshold>
														<AreaMicroChartItem color="Error" points="{= '{path:\'' + (${collection>$kind} === 'EntitySet' ? '/' : '') + ${collection>@sapui.name} + '\'}' }">
															<points>
																<AreaMicroChartPoint x="{Dimension>@@.MODEL.format}" y="{CriticalityCalculation>DeviationRangeLowValue@@.MODEL.format}"/>
															</points>
														</AreaMicroChartItem>
													</minThreshold>
													<maxThreshold>
														<AreaMicroChartItem color="Error" points="{= '{path:\'' + (${collection>$kind} === 'EntitySet' ? '/' : '') + ${collection>@sapui.name} + '\'}' }">
															<points>
																<AreaMicroChartPoint x="{Dimension>@@.MODEL.format}" y="{CriticalityCalculation>DeviationRangeHighValue@@.MODEL.format}"/>
															</points>
														</AreaMicroChartItem>
													</maxThreshold>
													<innerMinThreshold>
														<AreaMicroChartItem color="Good" points="{= '{path:\'' + (${collection>$kind} === 'EntitySet' ? '/' : '') + ${collection>@sapui.name} + '\'}' }">
															<points>
																<AreaMicroChartPoint x="{Dimension>@@.MODEL.format}" y="{CriticalityCalculation>ToleranceRangeLowValue@@.MODEL.format}"/>
															</points>
														</AreaMicroChartItem>
													</innerMinThreshold>
													<innerMaxThreshold>
														<AreaMicroChartItem color="Good" points="{= '{path:\'' + (${collection>$kind} === 'EntitySet' ? '/' : '') + ${collection>@sapui.name} + '\'}' }">
															<points>
																<AreaMicroChartPoint x="{Dimension>@@.MODEL.format}" y="{CriticalityCalculation>ToleranceRangeHighValue@@.MODEL.format}"/>
															</points>
														</AreaMicroChartItem>
													</innerMaxThreshold>
												</template:elseif>
											</template:if>
										</template:with>
									</template:if>
								</AreaMicroChart>
							</oDataV4MicroChart:MicroChartContainer>
						</template:with>
					</template:with>
				</template:then>
				<template:elseif test="{= MICROCHART.logWarning('Area', { DataPoint_Value : ${DataPoint>Value}, Dimension : ${chartAnnotation>Dimensions/0/$PropertyPath}, CriticalityCalculation : (${DataPoint>CriticalityCalculation} &amp;&amp; ${DataPoint>CriticalityCalculation/ImprovementDirection/$EnumMember}) }) }">
				</template:elseif>
			</template:if>
		</template:with>
	</template:with>

</core:FragmentDefinition>
