| 
						
						
						
					 | 
				
				 | 
				
					@ -1,21 +1,13 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					<template> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  <section id="Content"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    <div v-if="claimData"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      <canvas ref="claimCanvas"></canvas> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    <div class="flex items-center justify-center h-screen"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      <div v-if="claimData"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        <canvas class="w-full block mx-auto" ref="claimCanvas"></canvas> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  </section> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					</template> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					<style scoped> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					canvas { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  position: absolute; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  top: 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  left: 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  width: 100%; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  height: 100%; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					</style> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					<script lang="ts"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { Component, Vue } from "vue-facing-decorator"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { nextTick } from "vue"; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -116,9 +108,13 @@ export default class ClaimCertificateView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          // Draw claim type | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ctx.font = "bold 20px Arial"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          const claimTypeText = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            this.serverUtil.capitalizeAndInsertSpacesBeforeCaps( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              claimData.claimType || "", | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            claimData.claimType === "GiveAction" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ? "Gift" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            : claimData.claimType === "PlanAction" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              ? "Project" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              : this.serverUtil.capitalizeAndInsertSpacesBeforeCaps( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  claimData.claimType || "", | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          const claimTypeWidth = ctx.measureText(claimTypeText).width; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ctx.fillText( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            claimTypeText, | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -126,8 +122,8 @@ export default class ClaimCertificateView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            CANVAS_HEIGHT * 0.33, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          if (claimData.claim.agent) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            const presentedText = "Presented to "; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          if (claimData.claimType === "GiveAction" && claimData.claim.agent) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            const presentedText = "Thanks To "; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ctx.font = "14px Arial"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            const presentedWidth = ctx.measureText(presentedText).width; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ctx.fillText( | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -146,7 +142,7 @@ export default class ClaimCertificateView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ctx.fillText( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              agentText, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              (CANVAS_WIDTH - agentWidth) / 2, // Center horizontally | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              CANVAS_HEIGHT * 0.4, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              CANVAS_HEIGHT * 0.41, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -162,16 +158,29 @@ export default class ClaimCertificateView extends Vue { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ctx.fillText( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              descriptionLine, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              (CANVAS_WIDTH - descriptionWidth) / 2, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              CANVAS_HEIGHT * 0.45, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              CANVAS_HEIGHT * 0.495, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          if (claimData.claim.object?.amountOfThisGood && claimData.claim.object?.unitCode) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            const amount = claimData.claim.object.amountOfThisGood; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            const unit = claimData.claim.object.unitCode; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            const amountText = serverUtil.displayAmount(unit, amount); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            const amountWidth = ctx.measureText(amountText).width; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            // if there was no description then put this in that spot, otherwise put it below the description | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            const yPos = descriptionText ? CANVAS_HEIGHT * 0.525 : CANVAS_HEIGHT * 0.495; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ctx.font = "14px Arial"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ctx.fillText(amountText, (CANVAS_WIDTH - amountWidth) / 2, yPos); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          // Draw claim issuer & recipient | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          if (claimData.issuer) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ctx.font = "14px Arial"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            const issuerText = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              "Issued by " + | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              serverUtil.didInfoForCertificate(claimData.issuer, allContacts); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            let fullIssuer = serverUtil.didInfoForCertificate(claimData.issuer, allContacts); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (fullIssuer.length > 15) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              fullIssuer = fullIssuer.substring(0, 30) + "..."; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            const issuerText = "Issued by " + fullIssuer; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ctx.fillText(issuerText, CANVAS_WIDTH * 0.3, CANVAS_HEIGHT * 0.6); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          if (confirmerIds.length > 0) { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |