1<template>
2  <BasicInfo
3    :zipFile="zipFile"
4    :payload="payload"
5    class="mb-5"
6  />
7  <v-divider />
8  <div v-if="payload">
9    <h3>Partition List</h3>
10    <v-row
11      v-if="payload.manifest"
12      class="mb-5"
13    >
14      <v-col
15        v-for="partition in payload.manifest.partitions"
16        :key="partition.partitionName"
17        cols="12"
18        md="4"
19      >
20        <v-card
21          elevation="5"
22          hover
23          shaped
24          class="partial-info"
25        >
26          <PartitionDetail :partition="partition" />
27        </v-card>
28      </v-col>
29    </v-row>
30    <v-divider />
31    <div
32      v-if="payload.metadata_signature && !payload.manifest.nonAB"
33      class="signature"
34    >
35      <h3>Metadata Signature</h3>
36      <span style="white-space: pre-wrap">
37        {{ octToHex(payload.metadata_signature.signatures[0].data) }}
38      </span>
39    </div>
40  </div>
41</template>
42
43<script>
44import PartitionDetail from './PartitionDetail.vue'
45import BasicInfo from '@/components/BasicInfo.vue'
46import { Payload, octToHex } from '@/services/payload.js'
47
48export default {
49  components: {
50    PartitionDetail,
51    BasicInfo,
52  },
53  props: {
54    zipFile: {
55      type: File,
56      default: null,
57    },
58    payload: {
59      type: Payload,
60      default: null,
61    },
62  },
63  methods: {
64    octToHex: octToHex,
65  },
66}
67</script>
68
69<style scoped>
70.signature {
71  overflow: scroll;
72  height: 200px;
73  width: 100%;
74  word-break: break-all;
75  text-align: center;
76}
77
78.partial-info {
79  padding: 5px;
80}
81</style>