Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quantum-kittens
GitHub Repository: quantum-kittens/platypus
Path: blob/main/frontend/vue/components/AmplitudeDisk/AmplitudeAdditionDiskWithValues.vue
3376 views
<template>
  <div class="amplitude-disk-with-values">
    <AmplitudeAdditionDisk
      ref="disk"
      :magnitude-a="magnitudeA"
      :phase-a="phaseA"
      :magnitude-b="magnitudeB"
      :phase-b="phaseB"
    />
    <AmplitudeValues
      :magnitude="amplitudeResult.magnitude"
      :phase="amplitudeResult.phase"
      :is-interactive="false"
    />
  </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue-demi'
import AmplitudeValues from './AmplitudeValues.vue'
import AmplitudeAdditionDisk from './AmplitudeAdditionDisk.vue'

export default defineComponent({
  name: 'AmplitudeDiskWithValues',
  components: {
    AmplitudeAdditionDisk,
    AmplitudeValues
  },
  props: {
    magnitudeA: {
      type: Number,
      required: false,
      default: 0.7071
    },
    phaseA: {
      type: Number,
      required: false,
      default: 30
    },
    magnitudeB: {
      type: Number,
      required: false,
      default: 0.7071
    },
    phaseB: {
      type: Number,
      required: false,
      default: 30
    }
  },
  data () {
    return {
      amplitudeResult: { phase: 0, magnitude: 1 }
    }
  },
  updated () {
    this.updateAmplitudeResult()
  },
  methods: {
    updateAmplitudeResult () {
      const diskRef = (this.$refs.disk as any)
      if (diskRef) {
        this.amplitudeResult = diskRef.amplitudeResult
      }
    }
  }
})
</script>

<style lang="scss" scoped>
@import 'carbon-components/scss/globals/scss/typography';
@import '~/../scss/variables/colors.scss';

.amplitude-disk-with-values {
  display: flex;
  flex-direction: var(--display-direction, column);
  align-items: center;
}
</style>