aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client/util/CurrentUserUtils.ts7
-rw-r--r--src/client/util/DragManager.ts3
-rw-r--r--src/client/views/nodes/RecordingBox/RecordingBox.tsx53
-rw-r--r--src/client/views/nodes/VideoBox.tsx5
-rw-r--r--src/client/views/nodes/trails/PresBox.tsx9
-rw-r--r--src/client/views/nodes/trails/PresElementBox.tsx48
6 files changed, 106 insertions, 19 deletions
diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts
index 0c2b235cb..6cdc2956c 100644
--- a/src/client/util/CurrentUserUtils.ts
+++ b/src/client/util/CurrentUserUtils.ts
@@ -715,11 +715,11 @@ 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: 'microphone', toolTip: "Dictate", btnType: ButtonType.ToggleButton, expertMode: false, funcs: {hidden: `getIsRecording()`}, ignoreClick: true, scripts: { onClick: 'return toggleRecording(_readOnly_)'},},
+ { title: "Audio", icon: 'microphone', 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: `!getIsRecPlayback()`}, ignoreClick: true, scripts: { onClick: `return playWorkspaceRec(getCurrentRecording())`}},
- { title: "Pause Rec",icon: "pause", toolTip: "Pause recording", btnType: ButtonType.ToggleButton, expertMode: false, funcs: {hidden: `!getIsRecPlayback()`}, ignoreClick: true, scripts: { onClick: `return pauseWorkspaceRec(getCurrentRecording())`}},
+ { 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())`}},
];
@@ -748,6 +748,7 @@ export class CurrentUserUtils {
Doc.UserDoc().isRecording = false;
Doc.UserDoc().isRecPlayback = false;
Doc.UserDoc().currentRecording = undefined;
+ Doc.UserDoc().isPlaybackPlaying = false;
if (!subMenu) { // button does not have a sub menu
return this.setupContextMenuButton(params, menuBtnDoc);
}
diff --git a/src/client/util/DragManager.ts b/src/client/util/DragManager.ts
index f06d4a0e7..306092ee4 100644
--- a/src/client/util/DragManager.ts
+++ b/src/client/util/DragManager.ts
@@ -254,6 +254,9 @@ export namespace DragManager {
Doc.RemFromMyOverlay(Doc.UserDoc().currentRecording);
Doc.UserDoc().currentRecording = undefined;
Doc.UserDoc().isRecPlayback = false;
+ Doc.UserDoc().isWorkspaceRecPlaying = false;
+ Doc.UserDoc().isWorkspaceRecPaused = false;
+ Doc.UserDoc().isAddRecToDocMode = false;
Cast(Doc.UserDoc().workspaceRecordings, listSpec(Doc), null)?.splice(recordingIndex, 1);
const docDragData = e.docDragData;
dropEvent?.(); // glr: optional additional function to be called - in this case with presentation trails
diff --git a/src/client/views/nodes/RecordingBox/RecordingBox.tsx b/src/client/views/nodes/RecordingBox/RecordingBox.tsx
index fdb00c552..ade8d0d45 100644
--- a/src/client/views/nodes/RecordingBox/RecordingBox.tsx
+++ b/src/client/views/nodes/RecordingBox/RecordingBox.tsx
@@ -24,6 +24,8 @@ import { PropertiesSection } from '../../PropertiesSection';
import { PropertiesDocContextSelector } from '../../PropertiesDocContextSelector';
import { listSpec } from '../../../../fields/Schema';
import { DragManager } from '../../../util/DragManager';
+import { SelectionManager } from '../../../util/SelectionManager';
+import { AudioBox } from '../AudioBox';
@observer
export class RecordingBox extends ViewBoxBaseComponent<FieldViewProps>() {
@@ -143,44 +145,71 @@ ScriptingGlobals.add(function toggleRecording(_readOnly_: boolean) {
}, 'toggle recording');
ScriptingGlobals.add(function toggleRecPlayback(value: Doc) {
let docval = undefined;
- Doc.UserDoc().isRecPlayback = true;
Doc.UserDoc().currentRecording = value;
console.log(value)
value.overlayX = 100;
value.overlayY = 100;
if (!Doc.UserDoc().isAddRecToDocMode) {
- Doc.AddToMyOverlay(value);
+ Doc.UserDoc().isRecPlayback = true;
+ Doc.UserDoc().isWorkspaceRecPlaying = true;
+ Doc.AddToMyOverlay(value);
DocumentManager.Instance.AddViewRenderedCb(value, docView => {
- docval =
- Doc.UserDoc().currentRecording = docView.ComponentView as VideoBox;
+ // docval =
+ Doc.UserDoc().currentRecording = docView.ComponentView as RecordingBox;
+ SelectionManager.SelectSchemaViewDoc(value);
+
// docval.Play();
+
})} else {
- let recordingIndex = Array.from(Doc.UserDoc().workspaceRecordings).indexOf(Doc);
+ 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: VideoBox) {
+ScriptingGlobals.add(function addRectoWorkspace(value: RecordingBox) {
console.log("adding rec to doc");
- console.log(value.rootDoc);
- Doc.UserDoc().isAddRecToDocMode = true;
+ 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() {
@@ -195,5 +224,11 @@ ScriptingGlobals.add(function getIsRecPlayback() {
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/VideoBox.tsx b/src/client/views/nodes/VideoBox.tsx
index 2177adeff..1bd98a3eb 100644
--- a/src/client/views/nodes/VideoBox.tsx
+++ b/src/client/views/nodes/VideoBox.tsx
@@ -192,7 +192,10 @@ export class VideoBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProp
this._finished = false;
start = this.timeline.trimStart;
}
-
+ if (this.dataDoc._data_presentation) {
+ console.log("ninja")
+ }
+ console.log(this.dataDoc.data_presentation)
try {
this._audioPlayer && this.player && (this._audioPlayer.currentTime = this.player?.currentTime);
update && this.player && this.playFrom(start, undefined, true);
diff --git a/src/client/views/nodes/trails/PresBox.tsx b/src/client/views/nodes/trails/PresBox.tsx
index ee85287ed..b9585b132 100644
--- a/src/client/views/nodes/trails/PresBox.tsx
+++ b/src/client/views/nodes/trails/PresBox.tsx
@@ -702,6 +702,15 @@ export class PresBox extends ViewBoxBaseComponent<FieldViewProps>() {
pinDoc.config_viewBounds = new List<number>([bounds.left, bounds.top, bounds.left + bounds.width, bounds.top + bounds.height]);
}
}
+
+ @action
+ static reversePin(pinDoc: Doc, targetDoc: Doc) {
+ // const fkey = Doc.LayoutFieldKey(targetDoc);
+ pinDoc.config_data = targetDoc.data;
+
+ console.log(pinDoc.presData);
+ }
+
/**
* This method makes sure that cursor navigates to the element that
* has the option open and last in the group.
diff --git a/src/client/views/nodes/trails/PresElementBox.tsx b/src/client/views/nodes/trails/PresElementBox.tsx
index 711c9cab9..ee4498e53 100644
--- a/src/client/views/nodes/trails/PresElementBox.tsx
+++ b/src/client/views/nodes/trails/PresElementBox.tsx
@@ -27,6 +27,7 @@ import { PresMovement } from './PresEnums';
import React = require('react');
import { TreeView } from '../../collections/TreeView';
import { BranchingTrailManager } from '../../../util/BranchingTrailManager';
+import { MultiToggle, Type } from 'browndash-components';
/**
* This class models the view a document added to presentation will have in the presentation.
* It involves some functionality for its buttons and options.
@@ -303,8 +304,28 @@ export class PresElementBox extends ViewBoxBaseComponent<FieldViewProps>() {
activeItem.config_rotation = NumCast(targetDoc.rotation);
activeItem.config_width = NumCast(targetDoc.width);
activeItem.config_height = NumCast(targetDoc.height);
- activeItem.config_pinLayout = true;
+ activeItem.config_pinLayout = !activeItem.config_pinLayout;
+ // activeItem.config_pinLayout = true;
};
+
+ //wait i dont think i have to do anything here since by default it'll revert to the previously saved if I don't save
+ //so basically, don't have an onClick for this, just let it do nada for now
+ @undoBatch
+ @action
+ revertToPreviouslySaved = (presTargetDoc: Doc, activeItem: Doc) => {
+ console.log('reverting');
+ // console.log("reverting to previosly saved\n");
+ // console.log(this.prevTarget);
+ console.log("Content continuously updating");
+ const target = DocCast(activeItem.annotationOn) ?? activeItem;
+ console.log(presTargetDoc.pinData)
+ PresBox.reversePin(activeItem, target);
+ // console.log("new target\n");
+ // console.log(target);
+ // PresBox.pinDocView(activeItem, { pinData: PresBox.pinDataTypes(this.prevTarget) }, this.prevTarget ? this.prevTarget : target);
+ //figure out how to make it go back to the previously saved one
+ }
+
/**
* Method called for updating the view of the currently selected document
*
@@ -443,16 +464,31 @@ export class PresElementBox extends ViewBoxBaseComponent<FieldViewProps>() {
</div>
</Tooltip>
);
+ // items.push(
+ // <Tooltip key="flex" title={<div className="dash-tooltip">Update captured doc content</div>}>
+ // <div
+ // className="slideButton"
+ // onPointerDown={e => setupMoveUpEvents(this, e, returnFalse, emptyFunction, () => this.updateCapturedViewContents(targetDoc, activeItem))}
+ // style={{ opacity: activeItem.config_pinData || activeItem.config_pinView ? 1 : 0.5, fontWeight: 700, display: 'flex' }}>
+ // C
+ // </div>
+ // </Tooltip>
+ // );
items.push(
<Tooltip key="flex" title={<div className="dash-tooltip">Update captured doc content</div>}>
<div
- className="slideButton"
- onPointerDown={e => setupMoveUpEvents(this, e, returnFalse, emptyFunction, () => this.updateCapturedViewContents(targetDoc, activeItem))}
- style={{ opacity: activeItem.config_pinData || activeItem.config_pinView ? 1 : 0.5, fontWeight: 700, display: 'flex' }}>
- C
+ className="slideButton"
+ 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',
+ 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",
+ onPointerDown: e => setupMoveUpEvents(this, e, returnFalse, emptyFunction, () => this.revertToPreviouslySaved(targetDoc, activeItem))},
+ ]} />
</div>
</Tooltip>
- );
+ )
items.push(
<Tooltip key="slash" title={<div className="dash-tooltip">{this.recordingIsInOverlay ? 'Hide Recording' : `${PresElementBox.videoIsRecorded(activeItem) ? 'Show' : 'Start'} recording`}</div>}>
<div className="slideButton" onClick={e => (this.recordingIsInOverlay ? this.hideRecording(e, true) : this.startRecording(e, activeItem))} style={{ fontWeight: 700 }}>