aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormonoguitari <113245090+monoguitari@users.noreply.github.com>2023-08-24 14:34:16 -0400
committermonoguitari <113245090+monoguitari@users.noreply.github.com>2023-08-24 14:34:16 -0400
commit6297cd58741f39ce7f6510e0a4cc634d62d4778e (patch)
treef4f5527c5e40adadd7dc4a173c30972e62c11103 /src
parent049cb46931301ba30ab19c95c607c42ca3198d06 (diff)
before meeting with Andy
Diffstat (limited to 'src')
-rw-r--r--src/client/util/CurrentUserUtils.ts3
-rw-r--r--src/client/views/nodes/RecordingBox/RecordingBox.tsx295
-rw-r--r--src/client/views/nodes/RecordingBox/RecordingView.tsx1
-rw-r--r--src/client/views/nodes/trails/PresBox.tsx1
-rw-r--r--src/client/views/nodes/trails/PresElementBox.tsx4
5 files changed, 163 insertions, 141 deletions
diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts
index 919c56fe2..7b11e59eb 100644
--- a/src/client/util/CurrentUserUtils.ts
+++ b/src/client/util/CurrentUserUtils.ts
@@ -715,13 +715,14 @@ export class CurrentUserUtils {
{ title: "View", icon: "View", toolTip: "View tools", subMenu: CurrentUserUtils.viewTools(), expertMode: false, toolType:CollectionViewType.Freeform, funcs: {hidden: `!SelectionManager_selectedDocType(self.toolType, self.expertMode)`, linearView_IsOpen: `SelectionManager_selectedDocType(self.toolType, self.expertMode)`} }, // Always available
{ title: "Web", icon: "Web", toolTip: "Web functions", subMenu: CurrentUserUtils.webTools(), expertMode: false, toolType:DocumentType.WEB, funcs: {hidden: `!SelectionManager_selectedDocType(self.toolType, self.expertMode)`, linearView_IsOpen: `SelectionManager_selectedDocType(self.toolType, self.expertMode)`} }, // Only when Web is selected
{ title: "Schema", icon: "Schema",linearBtnWidth:58,toolTip: "Schema functions",subMenu: CurrentUserUtils.schemaTools(), expertMode: false, toolType:CollectionViewType.Schema, funcs: {hidden: `!SelectionManager_selectedDocType(self.toolType, self.expertMode)`, linearView_IsOpen: `SelectionManager_selectedDocType(self.toolType, self.expertMode)`} }, // Only when Schema is selected
- { title: "Audio", icon: 'video', toolTip: "Dictate", btnType: ButtonType.ToggleButton, expertMode: false, funcs: {hidden: `getIsRecording()`}, ignoreClick: true, scripts: { onClick: 'return toggleRecording(_readOnly_)'}},
+ { title: "Video", icon: 'video', toolTip: "Dictate", btnType: ButtonType.ToggleButton, expertMode: false, funcs: {hidden: `getIsRecording()`}, ignoreClick: true, scripts: { onClick: 'return toggleRecording(_readOnly_)'}},
{ title: "StopRec", icon: "stop", toolTip: "Stop", btnType: ButtonType.ToggleButton, expertMode: false, funcs: {hidden: `!getIsRecording()`}, ignoreClick: true, scripts: { onClick: `return toggleRecording(_readOnly_)`}},
{ title: "Dropdown", toolTip: "Workspace Recordings", btnType: ButtonType.DropdownList, expertMode: false, funcs: {btnList: `getWorkspaceRecordings()`}, ignoreClick: true, scripts: { script: `toggleRecPlayback(value)`}},
{ title: "Play Rec",icon: "play", toolTip: "Play recording", btnType: ButtonType.ToggleButton, expertMode: false, funcs: {hidden: `!getIsWorkspaceRecPlaying()`}, ignoreClick: true, scripts: { onClick: `return playWorkspaceRec(getCurrentRecording())`}},
{ title: "Pause Rec",icon: "pause", toolTip: "Pause recording", btnType: ButtonType.ToggleButton, expertMode: false, funcs: {hidden: `!getIsWorkspaceRecPaused()`}, ignoreClick: true, scripts: { onClick: `return pauseWorkspaceRec(getCurrentRecording())`}},
{ title: "Stop Rec", icon: "stop", toolTip: "Stop recording", btnType: ButtonType.ToggleButton, expertMode: false, funcs: {hidden: `!getIsRecPlayback()`}, ignoreClick: true, scripts: { onClick: `return closeWorkspaceRec(getCurrentRecording())`}},
{ title: "Add doc", icon: "down", toolTip: "add to doc", btnType: ButtonType.ToggleButton, expertMode: false, funcs: {hidden: `!getIsRecPlayback()`}, ignoreClick: true, scripts: { onClick: `addRectoWorkspace(getCurrentRecording())`}},
+ { title: "Delete Rec", icon: "trash", toolTip: "delete selected recording", btnType: ButtonType.ToggleButton, expertMode: false, funcs: {hidden: `!getIsRecPlayback()`}, ignoreClick: true, scripts: { onClick: `removeWorkspaceRec(getCurrentRecording())`}}
];
}
diff --git a/src/client/views/nodes/RecordingBox/RecordingBox.tsx b/src/client/views/nodes/RecordingBox/RecordingBox.tsx
index 429fc60c2..c73082f78 100644
--- a/src/client/views/nodes/RecordingBox/RecordingBox.tsx
+++ b/src/client/views/nodes/RecordingBox/RecordingBox.tsx
@@ -1,4 +1,4 @@
-import { action, observable } from 'mobx';
+import { action, observable, runInAction } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react';
import { VideoField } from '../../../../fields/URLField';
@@ -26,6 +26,7 @@ import { listSpec } from '../../../../fields/Schema';
import { DragManager } from '../../../util/DragManager';
import { SelectionManager } from '../../../util/SelectionManager';
import { AudioBox } from '../AudioBox';
+import { UndoManager, undoBatch } from '../../../util/UndoManager';
@observer
export class RecordingBox extends ViewBoxBaseComponent<FieldViewProps>() {
@@ -66,6 +67,146 @@ export class RecordingBox extends ViewBoxBaseComponent<FieldViewProps>() {
}
};
+ /**
+ * This method toggles whether or not we are currently using the RecordingBox to record with the topbar button
+ * @param _readOnly_
+ * @returns
+ */
+ @undoBatch
+ @action
+ public static toggleWorkspaceRecording(_readOnly_: boolean) {
+ if (_readOnly_) return RecordingBox.screengrabber ? true : false;
+ if (RecordingBox.screengrabber) {
+ //if recordingbox is true; when we press the stop button. changed vals temporarily to see if changes happening
+ console.log('grabbing screen!')
+ RecordingBox.screengrabber.Pause?.();
+ const remDoc = RecordingBox.screengrabber.rootDoc;
+ setTimeout(() => {
+ RecordingBox.screengrabber?.Finish?.();
+ RecordingBox.screengrabber!.rootDoc.overlayX = 70; //was 100
+ RecordingBox.screengrabber!.rootDoc.overlayY = 590;
+ console.log(RecordingBox.screengrabber)
+ RecordingBox.screengrabber = undefined;
+ }, 100);
+ //could break if recording takes too long to turn into videobox. If so, either increase time on setTimeout below or find diff place to do this
+ setTimeout(() => {
+ Doc.RemFromMyOverlay(remDoc);
+
+ }, 1000)
+ Doc.UserDoc().isRecording = false;
+ Doc.AddDocToList(Doc.UserDoc(), "workspaceRecordings", RecordingBox.screengrabber.rootDoc);
+ } else {
+ //when we first press mic
+ const screengrabber = Docs.Create.WebCamDocument('', {
+ _width: 205,
+ _height: 115,
+ });
+ screengrabber.overlayX = 70; //was -400
+ screengrabber.overlayY = 590; //was 0
+ screengrabber[Doc.LayoutFieldKey(screengrabber) + '_trackScreen'] = true;
+ Doc.AddToMyOverlay(screengrabber); //just adds doc to overlay
+ DocumentManager.Instance.AddViewRenderedCb(screengrabber, docView => {
+ RecordingBox.screengrabber = docView.ComponentView as RecordingBox;
+ RecordingBox.screengrabber.Record?.();
+ });
+ Doc.UserDoc().isRecording = true;
+ }
+ }
+
+ /**
+ * This method changes the menu depending on whether or not we are in playback mode
+ * @param value RecordingBox rootdoc
+ */
+ @undoBatch
+ @action
+ public static toggleWorkspaceRecPlayback(value: Doc) {
+ let docval = undefined;
+ Doc.UserDoc().currentRecording = value;
+ console.log(value)
+ value.overlayX =70;
+ value.overlayY = 590;
+ if (!Doc.UserDoc().isAddRecToDocMode) {
+ Doc.UserDoc().isRecPlayback = true;
+ Doc.UserDoc().isWorkspaceRecPlaying = true;
+ Doc.AddToMyOverlay(value);
+ DocumentManager.Instance.AddViewRenderedCb(value, docView => {
+ Doc.UserDoc().currentRecording = docView.ComponentView as RecordingBox;
+ SelectionManager.SelectSchemaViewDoc(value);
+ })} else {
+ let recordingIndex = Array.from(Doc.UserDoc().workspaceRecordings).indexOf(value);
+ DragManager.StartDropdownDrag([document.createElement('div')],new DragManager.DocumentDragData([value]), 1, 1, recordingIndex);
+ }
+ }
+
+ /**
+ * Adds the recording box to the canvas
+ * @param value current recordingbox
+ */
+ @undoBatch
+ @action
+ public static addRecToWorkspace(value: RecordingBox) {
+ console.log("adding rec to doc");
+ console.log(value);
+ let ffView = Array.from(DocumentManager.Instance.DocumentViews).find(view => view.ComponentView instanceof CollectionFreeFormView);
+ (ffView?.ComponentView as CollectionFreeFormView).props.addDocument?.(value.rootDoc);
+ let recordingIndex = Array.from(Doc.UserDoc().workspaceRecordings).indexOf(value.rootDoc);
+ console.log(recordingIndex);
+ Cast(Doc.UserDoc().workspaceRecordings, listSpec(Doc), null)?.splice(recordingIndex, 1);
+ Doc.UserDoc().isAddRecToDocMode = false;
+ Doc.RemFromMyOverlay(value.rootDoc);
+ Doc.UserDoc().currentRecording = undefined;
+ Doc.UserDoc().isRecPlayback = false;
+ Doc.UserDoc().isAddRecToDocMode = false;
+ Doc.UserDoc().isWorkspaceRecPlaying = false;
+ Doc.UserDoc().isWorkspaceRecPaused = false;
+ }
+
+ @undoBatch
+ @action
+ public static playWorkspaceRec(value: VideoBox) {
+ value.Play();
+ Doc.UserDoc().isWorkspaceRecPlaying = false;
+ Doc.UserDoc().isWorkspaceRecPaused = true;
+ }
+
+ @undoBatch
+ @action
+ public static pauseWorkspaceRec(value: VideoBox) {
+ value.Pause();
+ Doc.UserDoc().isWorkspaceRecPlaying = true;
+ Doc.UserDoc().isWorkspaceRecPaused = false;
+ }
+
+ @undoBatch
+ @action
+ public static closeWorkspaceRec(value: VideoBox) {
+ value.Pause();
+ Doc.RemFromMyOverlay(value.rootDoc);
+ Doc.UserDoc().currentRecording = undefined;
+ Doc.UserDoc().isRecPlayback = false;
+ Doc.UserDoc().isWorkspaceRecPlaying = false;
+ Doc.UserDoc().isWorkspaceRecPaused = false;
+ Doc.RemFromMyOverlay(value.rootDoc);
+
+ }
+
+ @undoBatch
+ @action
+ public static removeWorkspaceRec(value: VideoBox) {
+ let recordingIndex = Array.from(Doc.UserDoc().workspaceRecordings).indexOf(value.rootDoc);
+ Cast(Doc.UserDoc().workspaceRecordings, listSpec(Doc), null)?.splice(recordingIndex, 1);
+ Doc.UserDoc().isAddRecToDocMode = false;
+ Doc.RemFromMyOverlay(value.rootDoc);
+ Doc.UserDoc().currentRecording = undefined;
+ Doc.UserDoc().isRecPlayback = false;
+ Doc.UserDoc().isAddRecToDocMode = false;
+ Doc.UserDoc().isWorkspaceRecPlaying = false;
+ Doc.UserDoc().isWorkspaceRecPaused = false;
+
+ }
+
+
+
Record: undefined | (() => void);
Pause: undefined | (() => void);
Finish: undefined | (() => void);
@@ -92,143 +233,21 @@ export class RecordingBox extends ViewBoxBaseComponent<FieldViewProps>() {
}
static screengrabber: RecordingBox | undefined;
}
-ScriptingGlobals.add(function toggleRecording(_readOnly_: boolean) {
- console.log(_readOnly_)
- console.log(RecordingBox.screengrabber)
- if (_readOnly_) return RecordingBox.screengrabber ? true : false;
- if (RecordingBox.screengrabber) {
- //if recordingbox is true; when we press the stop button. changed vals temporarily to see if changes happening
- console.log('grabbing screen!')
- RecordingBox.screengrabber.Pause?.();
- const remDoc = RecordingBox.screengrabber.rootDoc;
- setTimeout(() => {
- RecordingBox.screengrabber?.Finish?.();
- RecordingBox.screengrabber!.rootDoc.overlayX = 70; //was 100
- RecordingBox.screengrabber!.rootDoc.overlayY = 610;
- // DocListCast(Doc.MyOverlayDocs.data)
- // .filter(doc => doc.slides === RecordingBox.screengrabber!.rootDoc)
- // .forEach(Doc.RemFromMyOverlay);
- console.log(RecordingBox.screengrabber)
- RecordingBox.screengrabber = undefined;
- }, 100);
- //could break if recording takes too long to turn into videobox. If so, either increase time on setTimeout below or find diff place to do this
- setTimeout(() => {
- Doc.RemFromMyOverlay(remDoc);
-
- }, 1000)
- Doc.UserDoc().isRecording = false;
-
- // Doc.AddDocToList(Doc.UserDoc(), "workspaceRecordings", RecordingBox.screengrabber.dataDoc);
- Doc.AddDocToList(Doc.UserDoc(), "workspaceRecordings", RecordingBox.screengrabber.rootDoc);
-
- // let recView = Array.from(DocumentManager.Instance.DocumentViews).find(view => view.ComponentView instanceof CollectionFreeFormView);
- // console.log(recView)
- } else {
- //when we first press mic
- const screengrabber = Docs.Create.WebCamDocument('', {
- _width: 205,
- _height: 115,
- });
- // Doc.UserDoc().currentScreenGrab = screengrabber;
- screengrabber.overlayX = 70; //was -400
- screengrabber.overlayY = 610; //was 0
- screengrabber[Doc.LayoutFieldKey(screengrabber) + '_trackScreen'] = true;
- Doc.AddToMyOverlay(screengrabber); //just adds doc to overlay
- DocumentManager.Instance.AddViewRenderedCb(screengrabber, docView => {
- RecordingBox.screengrabber = docView.ComponentView as RecordingBox;
- RecordingBox.screengrabber.Record?.();
- });
- // Doc.AddDocToList(Doc.UserDoc(), "workspaceRecordings", screengrabber);
- Doc.UserDoc().isRecording = true;
-
- }
-}, 'toggle recording');
-ScriptingGlobals.add(function toggleRecPlayback(value: Doc) {
- let docval = undefined;
- Doc.UserDoc().currentRecording = value;
- console.log(value)
- value.overlayX =70;
- value.overlayY = 610;
- if (!Doc.UserDoc().isAddRecToDocMode) {
- Doc.UserDoc().isRecPlayback = true;
- Doc.UserDoc().isWorkspaceRecPlaying = true;
- Doc.AddToMyOverlay(value);
- DocumentManager.Instance.AddViewRenderedCb(value, docView => {
- // docval =
- Doc.UserDoc().currentRecording = docView.ComponentView as RecordingBox;
- SelectionManager.SelectSchemaViewDoc(value);
-
- // docval.Play();
-
- })} else {
- let recordingIndex = Array.from(Doc.UserDoc().workspaceRecordings).indexOf(value);
- DragManager.StartDropdownDrag([document.createElement('div')],new DragManager.DocumentDragData([value]), 1, 1, recordingIndex);
- }
-
- // let ffView = Array.from(DocumentManager.Instance.DocumentViews).find(view => view.ComponentView instanceof CollectionFreeFormView);
- // (ffView?.ComponentView as CollectionFreeFormView).props.addDocument?.(value);
-});
-ScriptingGlobals.add(function addRectoWorkspace(value: RecordingBox) {
- console.log("adding rec to doc");
- console.log(value);
- let ffView = Array.from(DocumentManager.Instance.DocumentViews).find(view => view.ComponentView instanceof CollectionFreeFormView);
- (ffView?.ComponentView as CollectionFreeFormView).props.addDocument?.(value.rootDoc);
- let recordingIndex = Array.from(Doc.UserDoc().workspaceRecordings).indexOf(value.rootDoc);
- console.log(recordingIndex);
- Cast(Doc.UserDoc().workspaceRecordings, listSpec(Doc), null)?.splice(recordingIndex, 1);
- Doc.UserDoc().isAddRecToDocMode = false;
- Doc.RemFromMyOverlay(value.rootDoc);
- Doc.UserDoc().currentRecording = undefined;
- Doc.UserDoc().isRecPlayback = false;
- Doc.UserDoc().isAddRecToDocMode = false;
- // Doc.UserDoc().isAddRecToDocMode = true;
- Doc.UserDoc().isWorkspaceRecPlaying = false;
- Doc.UserDoc().isWorkspaceRecPaused = false;
- // let audiodoc: Doc = Docs.Create.AudioDocument(value.dataDoc.data, {
- // x: 100,
- // y: 100
- // });
-
- // (ffView?.ComponentView as CollectionFreeFormView).props.addDocument?.(audiodoc);
-
-})
-ScriptingGlobals.add(function playWorkspaceRec(value: VideoBox) {
- value.Play();
- Doc.UserDoc().isWorkspaceRecPlaying = false;
- Doc.UserDoc().isWorkspaceRecPaused = true;
-})
-ScriptingGlobals.add(function pauseWorkspaceRec(value: VideoBox) {
- value.Pause();
- Doc.UserDoc().isWorkspaceRecPlaying = true;
- Doc.UserDoc().isWorkspaceRecPaused = false;
-})
-ScriptingGlobals.add(function closeWorkspaceRec(value: VideoBox) {
- value.Pause();
- Doc.RemFromMyOverlay(value.rootDoc);
- Doc.UserDoc().currentRecording = undefined;
- Doc.UserDoc().isRecPlayback = false;
- Doc.UserDoc().isWorkspaceRecPlaying = false;
- Doc.UserDoc().isWorkspaceRecPaused = false;
-})
-
-ScriptingGlobals.add(function getWorkspaceRecordings() {
- return Doc.UserDoc().workspaceRecordings
-});
-ScriptingGlobals.add(function getIsRecording() {
- return Doc.UserDoc().isRecording;
-})
-ScriptingGlobals.add(function getIsRecPlayback() {
- return Doc.UserDoc().isRecPlayback;
-})
-ScriptingGlobals.add(function getCurrentRecording() {
- return Doc.UserDoc().currentRecording;
-})
-ScriptingGlobals.add(function getIsWorkspaceRecPlaying() {
- return Doc.UserDoc().isWorkspaceRecPlaying;
-})
-ScriptingGlobals.add(function getIsWorkspaceRecPaused() {
- return Doc.UserDoc().isWorkspaceRecPaused;
-})
+ScriptingGlobals.add(function toggleRecording(_readOnly_: boolean) { RecordingBox.toggleWorkspaceRecording(_readOnly_); });
+ScriptingGlobals.add(function toggleRecPlayback(value: Doc) { RecordingBox.toggleWorkspaceRecPlayback(value); });
+ScriptingGlobals.add(function addRectoWorkspace(value: RecordingBox) { RecordingBox.addRecToWorkspace(value); });
+
+ScriptingGlobals.add(function playWorkspaceRec(value: VideoBox) { RecordingBox.playWorkspaceRec(value); });
+ScriptingGlobals.add(function pauseWorkspaceRec(value: VideoBox) { RecordingBox.pauseWorkspaceRec(value); });
+ScriptingGlobals.add(function closeWorkspaceRec(value: VideoBox) { RecordingBox.closeWorkspaceRec(value); });
+ScriptingGlobals.add(function removeWorkspaceRec(value: VideoBox) { RecordingBox.removeWorkspaceRec(value) });
+
+ScriptingGlobals.add(function getWorkspaceRecordings() { return Doc.UserDoc().workspaceRecordings });
+ScriptingGlobals.add(function getIsRecording() { return Doc.UserDoc().isRecording; })
+ScriptingGlobals.add(function getIsRecPlayback() { return Doc.UserDoc().isRecPlayback; })
+ScriptingGlobals.add(function getCurrentRecording() { return Doc.UserDoc().currentRecording; })
+ScriptingGlobals.add(function getIsWorkspaceRecPlaying() { return Doc.UserDoc().isWorkspaceRecPlaying; })
+ScriptingGlobals.add(function getIsWorkspaceRecPaused() { return Doc.UserDoc().isWorkspaceRecPaused; })
diff --git a/src/client/views/nodes/RecordingBox/RecordingView.tsx b/src/client/views/nodes/RecordingBox/RecordingView.tsx
index 8c0f5efef..755f1adc0 100644
--- a/src/client/views/nodes/RecordingBox/RecordingView.tsx
+++ b/src/client/views/nodes/RecordingBox/RecordingView.tsx
@@ -9,6 +9,7 @@ import { Networking } from '../../../Network';
import { Presentation, TrackMovements } from '../../../util/TrackMovements';
import { ProgressBar } from './ProgressBar';
import './RecordingView.scss';
+import { ScriptingGlobals } from '../../../util/ScriptingGlobals';
export interface MediaSegment {
videoChunks: any[];
diff --git a/src/client/views/nodes/trails/PresBox.tsx b/src/client/views/nodes/trails/PresBox.tsx
index b9585b132..dd91660ec 100644
--- a/src/client/views/nodes/trails/PresBox.tsx
+++ b/src/client/views/nodes/trails/PresBox.tsx
@@ -298,6 +298,7 @@ export class PresBox extends ViewBoxBaseComponent<FieldViewProps>() {
// Called when the user activates 'next' - to move to the next part of the pres. trail
@action
next = () => {
+ console.log("next");
const progressiveReveal = (first: boolean) => {
const presIndexed = Cast(this.activeItem?.presentation_indexed, 'number', null);
if (presIndexed !== undefined) {
diff --git a/src/client/views/nodes/trails/PresElementBox.tsx b/src/client/views/nodes/trails/PresElementBox.tsx
index ee4498e53..d90f96249 100644
--- a/src/client/views/nodes/trails/PresElementBox.tsx
+++ b/src/client/views/nodes/trails/PresElementBox.tsx
@@ -481,9 +481,9 @@ export class PresElementBox extends ViewBoxBaseComponent<FieldViewProps>() {
style={{fontWeight: 700, display: 'flex'}}
>
<MultiToggle type={Type.PRIM} items={[
- {icon: <FontAwesomeIcon icon="rotate-left" color="white" size='sm'/>, tooltip: "Save data to presentation", val: 'floppy',
+ {icon: <FontAwesomeIcon icon="rotate-left" color="white" size='sm'/>, tooltip: "Save data to presentation", val: 'revert',
onPointerDown: e => setupMoveUpEvents(this, e, returnFalse, emptyFunction, () => this.updateCapturedViewContents(targetDoc, activeItem))},
- {icon: <FontAwesomeIcon icon="floppy-disk" color="white" size='sm'/>, tooltip: "Continously update content", val: "revert",
+ {icon: <FontAwesomeIcon icon="floppy-disk" color="white" size='sm'/>, tooltip: "Continously update content", val: "floppy-disk",
onPointerDown: e => setupMoveUpEvents(this, e, returnFalse, emptyFunction, () => this.revertToPreviouslySaved(targetDoc, activeItem))},
]} />
</div>