@@ -159,8 +151,7 @@ function getStateColour(state) {
| {{ shortHex(content.cid) }} |
|
diff --git a/src/stores/requests.js b/src/stores/requests.js
index a8e0a8e..23f56c9 100644
--- a/src/stores/requests.js
+++ b/src/stores/requests.js
@@ -1,7 +1,8 @@
-import { ref, computed, inject } from 'vue'
+import { ref, inject } from 'vue'
import { defineStore } from 'pinia'
import { slotId } from '../utils/ids'
-import { arrayToObject } from '@/utils/requests'
+import { arrayToObject, requestState } from '@/utils/requests'
+import { slotState } from '@/utils/slots'
export const useRequestsStore = defineStore('request', () => {
// let fetched = false
@@ -50,36 +51,31 @@ export const useRequestsStore = defineStore('request', () => {
// onSlotFreed => update slots[slotId].state with getSlotState
// => add to slotFreedEvents {blockNumber, slotId, slotIdx}
// => add blockNumber to blockNumbers
- const requestState = [
- 'New', // [default] waiting to fill slots
- 'Fulfilled', // all slots filled, accepting regular proofs
- 'Cancelled', // not enough slots filled before expiry
- 'Finished', // successfully completed
- 'Failed' // too many nodes have failed to provide proofs, data lost
- ]
const getRequestState = async (requestId) => {
let stateIdx = await marketplace.requestState(requestId)
return requestState[stateIdx]
}
+ const getSlotState = async (slotId) => {
+ let stateIdx = await marketplace.slotState(slotId)
+ return slotState[stateIdx]
+ }
+
const getSlots = async (requestId, numSlots) => {
- // storageRequestedEvents.value.push({ blockNumber, requestId })
let slots = []
- for (let i = 0; i < numSlots; i++) {
- let id = slotId(requestId, i)
- let state = await marketplace.slotState(id)
- slots.push({ slotId: id, slotIdx: i, state })
+ for (let slotIdx = 0; slotIdx < numSlots; slotIdx++) {
+ let id = slotId(requestId, slotIdx)
+ let state = await getSlotState(id)
+ let proofsMissed = await marketplace.missingProofs(id)
+ let provider = await marketplace.getHost(id)
+ slots.push({ slotId: id, slotIdx, state, proofsMissed, provider })
}
return slots
// blockNumbers.value.add(blockNumber)
}
async function fetch() {
- // if (fetched) {
- // // allow multiple calls without re-fetching
- // return
- // }
// query past events
loading.value = true
try {
diff --git a/src/utils/ids.js b/src/utils/ids.js
index 255e988..85c929b 100644
--- a/src/utils/ids.js
+++ b/src/utils/ids.js
@@ -33,14 +33,14 @@ export function short(long, ellipses = '*', start = 3, stop = 6) {
return short
}
-export function shortHex(long) {
+export function shortHex(long, chars = 4) {
let shortened = ''
let rest = long
if (long.substring(0, 2) === '0x') {
shortened = '0x'
rest = long.substring(2)
}
- shortened += short(rest, '..', 4, 4)
+ shortened += short(rest, '..', chars, chars)
return shortened
}
diff --git a/src/utils/requests.js b/src/utils/requests.js
index e20e548..4350f5d 100644
--- a/src/utils/requests.js
+++ b/src/utils/requests.js
@@ -28,3 +28,23 @@ export function price(request) {
}
return request.ask.reward * request.ask.duration * request.ask.slots
}
+
+export function getStateColour(state) {
+ if (state === 'New') {
+ return 'yellow'
+ } else if (state === 'Fulfilled') {
+ return 'green'
+ } else if (state === 'Finished') {
+ return 'gray'
+ } else {
+ return 'red'
+ }
+}
+
+export const requestState = [
+ 'New', // [default] waiting to fill slots
+ 'Fulfilled', // all slots filled, accepting regular proofs
+ 'Cancelled', // not enough slots filled before expiry
+ 'Finished', // successfully completed
+ 'Failed' // too many nodes have failed to provide proofs, data lost
+]
diff --git a/src/utils/slots.js b/src/utils/slots.js
new file mode 100644
index 0000000..fb86321
--- /dev/null
+++ b/src/utils/slots.js
@@ -0,0 +1,22 @@
+export const slotState = [
+ 'Free', // [default] not filled yet, or host has vacated the slot
+ 'Filled', // host has filled slot
+ 'Finished', // successfully completed
+ 'Failed', // the request has failed
+ 'Paid', // host has been paid
+ 'Cancelled' // when request was cancelled then slot is cancelled as well
+]
+
+export function getStateColour(state) {
+ if (state === 'Free') {
+ return 'yellow'
+ } else if (state === 'Filled') {
+ return 'green'
+ } else if (state === 'Finished') {
+ return 'blue'
+ } else if (state === 'Paid') {
+ return 'gray'
+ } else {
+ return 'red'
+ }
+}
|