aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormadelinegr <mgriswold99@gmail.com>2019-06-05 20:04:00 -0400
committermadelinegr <mgriswold99@gmail.com>2019-06-05 20:04:00 -0400
commit36cf1b38e5da3ec948fd85d5d751a65dd8ec44fb (patch)
tree5be29f641219d05c407ec7db93a7120e2d5738d7 /src
parenta54e3b99c2c6d4c39cbdd935978b5e78015956ab (diff)
Grouping With GUIDs is mostly done
Diffstat (limited to 'src')
-rw-r--r--src/client/views/presentationview/PresentationElement.tsx69
-rw-r--r--src/client/views/presentationview/PresentationView.tsx9
2 files changed, 69 insertions, 9 deletions
diff --git a/src/client/views/presentationview/PresentationElement.tsx b/src/client/views/presentationview/PresentationElement.tsx
index 48e740c4b..81be2c49f 100644
--- a/src/client/views/presentationview/PresentationElement.tsx
+++ b/src/client/views/presentationview/PresentationElement.tsx
@@ -1,10 +1,11 @@
import { observer } from "mobx-react";
import React = require("react");
import { Doc } from "../../../new_fields/Doc";
-import { NumCast, BoolCast } from "../../../new_fields/Types";
+import { NumCast, BoolCast, StrCast } from "../../../new_fields/Types";
import { Id } from "../../../new_fields/FieldSymbols";
import { observable, action } from "mobx";
import "./PresentationView.scss";
+import { Utils } from "../../../Utils";
@@ -14,8 +15,9 @@ interface PresentationElementProps {
index: number;
deleteDocument(index: number): void;
gotoDocument(index: number): void;
- groupedMembers: [Doc[]];
+ groupedMembers: Doc[][];
allListElements: Doc[];
+ groupMappings: Map<String, Doc[]>;
}
@@ -34,6 +36,63 @@ export default class PresentationElement extends React.Component<PresentationEle
@observable selectedButtons: boolean[] = new Array(6);
+
+ @action
+ onGroupClick = (document: Doc, index: number, buttonStatus: boolean) => {
+ let p = this.props;
+ if (buttonStatus) {
+ if (index >= 1) {
+ let newGuid = Utils.GenerateGuid();
+ let aboveGuid = StrCast(p.allListElements[index - 1].presentId, undefined);
+ let docGuid = StrCast(document.presentId, undefined);
+ if (aboveGuid !== undefined) {
+ if (p.groupMappings.has(aboveGuid)) {
+ let aboveArray = p.groupMappings.get(aboveGuid)!;
+ if (p.groupMappings.has(docGuid)) {
+ let docsArray = p.groupMappings.get(docGuid)!;
+ docsArray.forEach((doc: Doc) => {
+ if (!aboveArray.includes(doc)) {
+ aboveArray.push(doc);
+ }
+ });
+ } else {
+ if (!aboveArray.includes(document)) {
+ aboveArray.push(document);
+
+ }
+
+ }
+ }
+ document.presentId = aboveGuid;
+ } else {
+ p.allListElements[index - 1].presentId = newGuid;
+ let newAboveArray: Doc[] = [];
+ if (p.groupMappings.has(docGuid)) {
+ let docsArray = p.groupMappings.get(docGuid)!;
+ docsArray.forEach((doc: Doc) => newAboveArray.push(doc));
+ } else {
+ newAboveArray.push(document);
+ }
+ document.presentId = newGuid;
+ p.groupMappings.set(newGuid, newAboveArray);
+
+
+ }
+
+ }
+ } else {
+ let curArray = p.groupMappings.get(StrCast(document.presentId, Utils.GenerateGuid()))!;
+ let targetIndex = curArray.indexOf(document);
+ let firstPart = curArray.slice(0, targetIndex);
+ let secondPart = curArray.slice(targetIndex);
+ p.groupMappings.set(StrCast(p.allListElements[index - 1].presentId, Utils.GenerateGuid()), firstPart);
+ p.groupMappings.set(StrCast(document.presentId, Utils.GenerateGuid()), secondPart);
+
+
+ }
+
+ }
+
@action
onGroupClickRec = (document: Doc, index: number, buttonStatus: boolean) => {
let p = this.props;
@@ -117,7 +176,7 @@ export default class PresentationElement extends React.Component<PresentationEle
}
hideDocumentIfNotPressed = () => {
- this.props.allListElements.forEach((doc: Doc) => doc.opacity = 0);
+ this.props.allListElements.forEach((doc: Doc) => doc.opacity = 1);
}
@@ -158,8 +217,8 @@ export default class PresentationElement extends React.Component<PresentationEle
<button className={this.selectedButtons[buttonIndex.Group] ? "presentation-interaction-selected" : "presentation-interaction"} onClick={(e) => {
e.stopPropagation();
this.changeGroupStatus();
- this.onGroupClickRec(p.document, p.index, this.selectedButtons[buttonIndex.Group]);
- this.printGroupSizes();
+ this.onGroupClick(p.document, p.index, this.selectedButtons[buttonIndex.Group]);
+ //this.printGroupSizes();
}}>F</button>
</div>
diff --git a/src/client/views/presentationview/PresentationView.tsx b/src/client/views/presentationview/PresentationView.tsx
index b41149099..6cf908d01 100644
--- a/src/client/views/presentationview/PresentationView.tsx
+++ b/src/client/views/presentationview/PresentationView.tsx
@@ -19,8 +19,8 @@ export interface PresViewProps {
interface PresListProps extends PresViewProps {
deleteDocument(index: number): void;
gotoDocument(index: number): void;
- groupedMembers: [Doc[]];
-
+ groupedMembers: Doc[][];
+ groupMappings: Map<String, Doc[]>;
}
@@ -112,7 +112,7 @@ class PresentationViewList extends React.Component<PresListProps> {
return (
<div className="presentationView-listCont">
- {children.map((doc: Doc, index: number) => <PresentationElement key={index} mainDocument={this.props.Document} document={doc} index={index} deleteDocument={this.props.deleteDocument} gotoDocument={this.props.gotoDocument} groupedMembers={this.props.groupedMembers} allListElements={children} />)}
+ {children.map((doc: Doc, index: number) => <PresentationElement key={index} mainDocument={this.props.Document} document={doc} index={index} deleteDocument={this.props.deleteDocument} gotoDocument={this.props.gotoDocument} groupedMembers={this.props.groupedMembers} groupMappings={this.props.groupMappings} allListElements={children} />)}
</div>
);
}
@@ -124,6 +124,7 @@ export class PresentationView extends React.Component<PresViewProps> {
public static Instance: PresentationView;
@observable groupedMembers: Doc[][] = [];
+ @observable groupMappings: Map<String, Doc[]> = new Map();
//observable means render is re-called every time variable is changed
@observable
@@ -198,7 +199,7 @@ export class PresentationView extends React.Component<PresViewProps> {
<button className="presentation-button" onClick={this.back}>back</button>
<button className="presentation-button" onClick={this.next}>next</button>
</div>
- <PresentationViewList Document={this.props.Document} deleteDocument={this.RemoveDoc} gotoDocument={this.gotoDocument} groupedMembers={this.groupedMembers} />
+ <PresentationViewList Document={this.props.Document} deleteDocument={this.RemoveDoc} gotoDocument={this.gotoDocument} groupedMembers={this.groupedMembers} groupMappings={this.groupMappings} />
</div>
);
}