From aa0470a3076f5ac65a0311c76e58254547f3eae0 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sat, 3 Nov 2018 17:29:49 +0100 Subject: begin client --- client/common/classifier.component.js | 99 +++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 client/common/classifier.component.js (limited to 'client/common/classifier.component.js') diff --git a/client/common/classifier.component.js b/client/common/classifier.component.js new file mode 100644 index 00000000..af6a4934 --- /dev/null +++ b/client/common/classifier.component.js @@ -0,0 +1,99 @@ +import React, { Component } from 'react' +import { courtesyS } from '../util' + +import { TableTuples, DetectionList, Keyframe } from '.' + +export default class Classifier extends Component { + render() { + const { + tag, + sha256, + verified, + keyframes = {}, + labels, + summary, + aspectRatio = 1.777, + showAll, + } = this.props + let totalDetections = 0 + const keys = Object + .keys(keyframes) + .map(s => parseInt(s, 10)) + const validKeyframes = keys + .sort((a, b) => a - b) + .map(frame => { + const detections = keyframes[frame] + if (detections.length || showAll) { + totalDetections += detections.length + return { frame, detections } + } + return null + }) + .filter(f => !!f) + const detectionLookup = validKeyframes + .reduce((a, b) => { + b.detections.reduce((aa, { idx }) => { + if (!(idx in aa)) aa[idx] = [labels[idx], 0] + aa[idx][1] += 1 + return aa + }, a) + return a + }, {}) + const detectionCounts = Object.keys(detectionLookup) + .map(idx => detectionLookup[idx]) + .sort((a, b) => b[1] - a[1]) + + if (summary) { + return ( +
+

{tag}{' Detections'}

+ +
+ ) + } + return ( +
+

{tag}

+

Detections

+ +

Frames

+
    +
  • + {'Displaying '}{validKeyframes.length}{' / '}{courtesyS(keys.length, 'frame')} +
  • +
  • + {courtesyS(totalDetections, 'detection')}{' found'} +
  • +
+
+ {validKeyframes.map(({ frame, detections }) => ( + + + + ))} +
+
+ ) + } +} -- cgit v1.2.3-70-g09d2