Compare commits
59 Commits
f140807886
...
kat/pagina
Author | SHA1 | Date | |
---|---|---|---|
8c8dcdd8e1 | |||
5085c9af90 | |||
85bc743c8e | |||
b8efa644e3 | |||
c18628a4ca | |||
535e24c9c2 | |||
04308b1003 | |||
43c626141e | |||
c49266e4c1 | |||
6677b9232f | |||
76e792be88 | |||
5eac3d9d40 | |||
64593f09b7 | |||
e20b68799f | |||
378878967a | |||
251ebe7056 | |||
615e4d5467 | |||
a4f602d651 | |||
c48512fc45 | |||
d75822c465 | |||
4feeba5150 | |||
e1237363f0 | |||
b1550b31c5 | |||
81b9fd9f12 | |||
d3559ede21 | |||
ef6ccca3f9 | |||
f781e9648f | |||
18d2eea029 | |||
a95bdab8bf | |||
eaeb1ed0ea | |||
f9d6377fe4 | |||
30cf72de78 | |||
fd49dec34c | |||
cdd1cdd526 | |||
bce363e8ff | |||
80f609b8a2 | |||
6205e9a353 | |||
12f7e1f115 | |||
296ad969f4 | |||
d25c08447e | |||
7502a75753 | |||
1a14db1a17 | |||
67d8bcac21 | |||
4ca27317b4 | |||
dc214e878f | |||
d669dba320 | |||
235f4a58e9 | |||
03c1d08d8c | |||
cc36a8b51d | |||
d743ad83e3 | |||
194c258dcd | |||
e0e1ae1108 | |||
ee73443374 | |||
88801f9186 | |||
524d469a0d | |||
c7b225ff00 | |||
ba84f6d9c0 | |||
6a72f9f43f | |||
efc0b2d858 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,3 +3,4 @@ dist
|
||||
.direnv
|
||||
/after.txt
|
||||
/before.txt
|
||||
**/__pycache__/**
|
||||
|
1338
src/index.tsx
1338
src/index.tsx
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,7 @@
|
||||
query GetShots(
|
||||
$filterInput: FilterInput!
|
||||
$shotsPagination: GetShotsPagination!
|
||||
$limit: Int
|
||||
$includeCreatedAt: Boolean! = false
|
||||
$includeUpdatedAt: Boolean! = false
|
||||
$includeCueObjectFeatures: Boolean! = false
|
||||
@@ -12,7 +14,11 @@ query GetShots(
|
||||
$includeMake: Boolean! = false
|
||||
$includeIntendedPocketType: Boolean! = false
|
||||
) {
|
||||
getShots(filterInput: $filterInput) {
|
||||
getShots(
|
||||
filterInput: $filterInput
|
||||
shotsPagination: $shotsPagination
|
||||
limit: $limit
|
||||
) {
|
||||
id
|
||||
videoId
|
||||
startFrame
|
||||
@@ -20,6 +26,7 @@ query GetShots(
|
||||
user {
|
||||
id
|
||||
}
|
||||
falsePositiveScore
|
||||
createdAt @include(if: $includeCreatedAt)
|
||||
updatedAt @include(if: $includeUpdatedAt)
|
||||
cueObjectFeatures @include(if: $includeCueObjectFeatures) {
|
||||
@@ -36,3 +43,10 @@ query GetShots(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
query GetShotAnnotationTypes {
|
||||
getShotAnnotationTypes {
|
||||
id
|
||||
name
|
||||
}
|
||||
}
|
||||
|
@@ -24,6 +24,7 @@ query getLoggedInUser {
|
||||
id
|
||||
firebaseUid
|
||||
username
|
||||
isAdmin
|
||||
profileImageUri
|
||||
activeVideoId
|
||||
createdAt
|
||||
@@ -36,3 +37,11 @@ query GetUserPlayTime($userId: Int!) {
|
||||
totalSeconds
|
||||
}
|
||||
}
|
||||
|
||||
query getUsernames(
|
||||
$matchString: String!
|
||||
$limit: Int = null
|
||||
$after: String = null
|
||||
) {
|
||||
getUsernames(matchString: $matchString, limit: $limit, after: $after)
|
||||
}
|
||||
|
@@ -51,6 +51,7 @@ query GetStreamMonitoringDetails($videoId: Int!) {
|
||||
isCompleted
|
||||
uploadCompletionCursor
|
||||
lastIntendedSegmentBound
|
||||
initPlaylistUploadStatus
|
||||
}
|
||||
currentProcessing {
|
||||
errors {
|
||||
@@ -137,12 +138,58 @@ query GetVideo($videoId: Int!) {
|
||||
playlist {
|
||||
segmentDurations
|
||||
}
|
||||
homographyHistory {
|
||||
frameIndex
|
||||
crop {
|
||||
left
|
||||
top
|
||||
width
|
||||
height
|
||||
}
|
||||
pockets {
|
||||
left
|
||||
top
|
||||
width
|
||||
height
|
||||
}
|
||||
sourcePoints {
|
||||
topLeft {
|
||||
x
|
||||
y
|
||||
}
|
||||
topSide {
|
||||
x
|
||||
y
|
||||
}
|
||||
topRight {
|
||||
x
|
||||
y
|
||||
}
|
||||
bottomLeft {
|
||||
x
|
||||
y
|
||||
}
|
||||
bottomSide {
|
||||
x
|
||||
y
|
||||
}
|
||||
bottomRight {
|
||||
x
|
||||
y
|
||||
}
|
||||
}
|
||||
}
|
||||
stream {
|
||||
streamSegmentType
|
||||
segments {
|
||||
segmentIndex
|
||||
endFrameIndex
|
||||
framesPerSecond
|
||||
}
|
||||
resolution {
|
||||
width
|
||||
height
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -165,3 +212,24 @@ query GetMedianRunForVideo($videoId: Int!) {
|
||||
medianRun
|
||||
}
|
||||
}
|
||||
|
||||
query GetVideoForClipTimes($videoId: Int!) {
|
||||
getVideo(videoId: $videoId) {
|
||||
id
|
||||
framesPerSecond
|
||||
playlist {
|
||||
segmentDurations
|
||||
}
|
||||
stream {
|
||||
id
|
||||
streamSegmentType
|
||||
segments {
|
||||
uploaded
|
||||
valid
|
||||
segmentIndex
|
||||
endFrameIndex
|
||||
framesPerSecond
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -14,6 +14,28 @@ mutation GetUploadLink($videoId: Int!, $segmentIndex: Int!) {
|
||||
}
|
||||
}
|
||||
|
||||
mutation GetHlsInitUploadLink($videoId: Int!) {
|
||||
getHlsInitUploadLink(videoId: $videoId) {
|
||||
uploadUrl
|
||||
headers {
|
||||
key
|
||||
value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mutation SetSegmentDuration(
|
||||
$videoId: Int!
|
||||
$segmentIndex: Int!
|
||||
$duration: Float!
|
||||
) {
|
||||
setSegmentDuration(
|
||||
videoId: $videoId
|
||||
segmentIndex: $segmentIndex
|
||||
duration: $duration
|
||||
)
|
||||
}
|
||||
|
||||
mutation EditUploadStream(
|
||||
$videoId: Int!
|
||||
$videoMetadataInput: VideoMetadataInput!
|
||||
|
115
src/schema.gql
115
src/schema.gql
@@ -4,13 +4,24 @@ type Query {
|
||||
): [AggregateResultGQL!]!
|
||||
getBucketSet(keyName: String!): BucketSetGQL
|
||||
getDeployedConfig: DeployedConfigGQL!
|
||||
waitFor(duration: Float!): Float!
|
||||
getVideoMakePercentageIntervals(
|
||||
videoId: ID!
|
||||
intervalDuration: Int! = 300
|
||||
): [MakePercentageIntervalGQL!]!
|
||||
getShots(filterInput: FilterInput!): [ShotGQL!]!
|
||||
getShots(
|
||||
filterInput: FilterInput!
|
||||
shotsPagination: GetShotsPagination = null
|
||||
limit: Int! = 500
|
||||
): [ShotGQL!]!
|
||||
getShotAnnotationTypes: [ShotAnnotationTypeGQL!]!
|
||||
getUser(userId: Int!): UserGQL
|
||||
getLoggedInUser: UserGQL
|
||||
getUsernames(
|
||||
matchString: String = null
|
||||
limit: Int = null
|
||||
after: String = null
|
||||
): [String!]!
|
||||
getPlayTime(userId: Int!): UserPlayTimeGQL!
|
||||
getUserVideos(
|
||||
userId: Int = null
|
||||
@@ -18,6 +29,7 @@ type Query {
|
||||
after: String = null
|
||||
filters: VideoFilterInput = null
|
||||
): VideoHistoryGQL!
|
||||
getUserTags: [TagGQL!]!
|
||||
getVideo(videoId: Int!): VideoGQL!
|
||||
getVideos(videoIds: [Int!]!): [VideoGQL!]!
|
||||
}
|
||||
@@ -65,6 +77,7 @@ input EnumAggregation {
|
||||
input FilterInput @oneOf {
|
||||
andFilters: [FilterInput!]
|
||||
orFilters: [FilterInput!]
|
||||
notFilter: FilterInput
|
||||
cueObjectDistance: RangeFilter
|
||||
targetPocketDistance: RangeFilter
|
||||
cueObjectAngle: RangeFilter
|
||||
@@ -76,11 +89,27 @@ input FilterInput @oneOf {
|
||||
userId: [Int!]
|
||||
make: [Boolean!]
|
||||
tags: [VideoTagInput!]
|
||||
annotations: [ShotAnnotationInput!]
|
||||
isStraight: [Boolean!]
|
||||
isRight: [Boolean!]
|
||||
isLeft: [Boolean!]
|
||||
isLeftMiss: [Boolean!]
|
||||
isRightMiss: [Boolean!]
|
||||
isDirect: [Boolean!]
|
||||
bankAngle: RangeFilter
|
||||
bankDistance: RangeFilter
|
||||
kickAngle: RangeFilter
|
||||
kickDistance: RangeFilter
|
||||
cueAngleAfterObject: RangeFilter
|
||||
cueSpeedAfterObject: RangeFilter
|
||||
spinType: [String!]
|
||||
falsePositiveScore: RangeFilter
|
||||
}
|
||||
|
||||
input RangeFilter {
|
||||
lessThan: Float = null
|
||||
greaterThanEqualTo: Float = null
|
||||
includeOnNone: Boolean! = false
|
||||
}
|
||||
|
||||
enum PocketEnum {
|
||||
@@ -103,6 +132,10 @@ input VideoTagClassInput {
|
||||
name: String!
|
||||
}
|
||||
|
||||
input ShotAnnotationInput {
|
||||
name: String!
|
||||
}
|
||||
|
||||
type BucketSetGQL {
|
||||
keyName: String!
|
||||
feature: String!
|
||||
@@ -138,6 +171,9 @@ type ShotGQL {
|
||||
bankFeatures: BankFeaturesGQL
|
||||
serializedShotPaths: SerializedShotPathsGQL
|
||||
user: UserGQL
|
||||
annotations: [ShotAnnotationGQL!]!
|
||||
falsePositiveScore: Float
|
||||
video: VideoGQL
|
||||
}
|
||||
|
||||
"""
|
||||
@@ -178,19 +214,25 @@ type UserGQL {
|
||||
id: Int!
|
||||
firebaseUid: String!
|
||||
username: String!
|
||||
isAdmin: Boolean!
|
||||
activeVideoId: Int
|
||||
profileImageUri: String
|
||||
createdAt: DateTime
|
||||
updatedAt: DateTime
|
||||
}
|
||||
|
||||
type UserPlayTimeGQL {
|
||||
totalSeconds: Float!
|
||||
type ShotAnnotationGQL {
|
||||
shotId: Int!
|
||||
type: ShotAnnotationTypeGQL!
|
||||
creator: UserGQL!
|
||||
notes: String!
|
||||
createdAt: DateTime
|
||||
updatedAt: DateTime
|
||||
}
|
||||
|
||||
type VideoHistoryGQL {
|
||||
videos: [VideoGQL!]!
|
||||
pageInfo: PageInfoGQL!
|
||||
type ShotAnnotationTypeGQL {
|
||||
id: Int!
|
||||
name: String!
|
||||
}
|
||||
|
||||
type VideoGQL {
|
||||
@@ -224,12 +266,21 @@ type UploadStreamGQL {
|
||||
segmentProcessingCursor: Int!
|
||||
lastIntendedSegmentBound: Int
|
||||
isCompleted: Boolean!
|
||||
initPlaylistUploadStatus: InitPlaylistUploadStatusEnum
|
||||
lowestUnuploadedSegmentIndex: Int!
|
||||
uploadCompletionCursor: Int!
|
||||
errors: [StreamErrorGQL!]!
|
||||
createdAt: DateTime!
|
||||
updatedAt: DateTime!
|
||||
segments: [UploadSegmentGQL!]!
|
||||
resolution: VideoResolutionGQL!
|
||||
streamSegmentType: StreamSegmentTypeEnum!
|
||||
}
|
||||
|
||||
enum InitPlaylistUploadStatusEnum {
|
||||
NOT_APPLICABLE
|
||||
NOT_UPLOADED
|
||||
UPLOADED
|
||||
}
|
||||
|
||||
type StreamErrorGQL {
|
||||
@@ -242,10 +293,20 @@ type UploadSegmentGQL {
|
||||
valid: Boolean!
|
||||
endFrameIndex: Int
|
||||
framesPerSecond: Float
|
||||
durationsInSeconds: Float
|
||||
durationInSeconds: Float
|
||||
linksRequested: Int!
|
||||
}
|
||||
|
||||
type VideoResolutionGQL {
|
||||
width: Int
|
||||
height: Int
|
||||
}
|
||||
|
||||
enum StreamSegmentTypeEnum {
|
||||
FRAGMENTED_MP4
|
||||
RB_CHUNKED_MP4
|
||||
}
|
||||
|
||||
type HLSPlaylistGQL {
|
||||
videoId: Int!
|
||||
m3u8Text: String!
|
||||
@@ -300,6 +361,25 @@ type VideoProcessingErrorGQL {
|
||||
endSegmentIndex: Int
|
||||
}
|
||||
|
||||
input GetShotsPagination {
|
||||
createdAfter: CreatedAfter!
|
||||
startFrameAfter: Int!
|
||||
}
|
||||
|
||||
input CreatedAfter @oneOf {
|
||||
videoId: Int
|
||||
createdAt: DateTime
|
||||
}
|
||||
|
||||
type UserPlayTimeGQL {
|
||||
totalSeconds: Float!
|
||||
}
|
||||
|
||||
type VideoHistoryGQL {
|
||||
videos: [VideoGQL!]!
|
||||
pageInfo: PageInfoGQL!
|
||||
}
|
||||
|
||||
type PageInfoGQL {
|
||||
hasNextPage: Boolean!
|
||||
endCursor: String
|
||||
@@ -310,15 +390,28 @@ input VideoFilterInput {
|
||||
requireCursorCompletion: Boolean! = true
|
||||
}
|
||||
|
||||
type TagGQL {
|
||||
name: String!
|
||||
id: Int!
|
||||
group: String
|
||||
}
|
||||
|
||||
type Mutation {
|
||||
createBucketSet(params: CreateBucketSetInput!): BucketSetGQL!
|
||||
setLoggerLevel(path: String!, level: String!): Boolean!
|
||||
addAnnotationToShot(shotId: Int!, annotationName: String!): Boolean!
|
||||
getProfileImageUploadLink(fileExt: String = ".png"): GetUploadLinkReturn!
|
||||
editProfileImageUri(profileImageUri: String!): UserGQL!
|
||||
createUploadStream(
|
||||
videoMetadata: VideoMetadataInput!
|
||||
): CreateUploadStreamReturn!
|
||||
getUploadLink(videoId: Int!, segmentIndex: Int!): GetUploadLinkReturn!
|
||||
getHlsInitUploadLink(videoId: Int!): GetUploadLinkReturn!
|
||||
setSegmentDuration(
|
||||
videoId: Int!
|
||||
segmentIndex: Int!
|
||||
duration: Float!
|
||||
): Boolean!
|
||||
editUploadStream(videoId: Int!, videoMetadata: VideoMetadataInput!): Boolean!
|
||||
deleteVideo(videoId: Int!): Boolean!
|
||||
}
|
||||
@@ -351,7 +444,10 @@ input VideoMetadataInput {
|
||||
tableSize: String = null
|
||||
uploadStreamMetadataInput: UploadStreamMetadataInput = null
|
||||
lastIntendedSegmentBound: Int = null
|
||||
streamSegmentType: StreamSegmentTypeEnum = null
|
||||
endStream: Boolean! = false
|
||||
resolution: VideoResolution = null
|
||||
framesPerSecond: Float = null
|
||||
}
|
||||
|
||||
input UploadStreamMetadataInput {
|
||||
@@ -371,3 +467,8 @@ enum DeviceTypeEnum {
|
||||
ANDROID
|
||||
BROWSER
|
||||
}
|
||||
|
||||
input VideoResolution {
|
||||
width: Int!
|
||||
height: Int!
|
||||
}
|
||||
|
Reference in New Issue
Block a user