aboutsummaryrefslogtreecommitdiff
path: root/src/Utils.ts
diff options
context:
space:
mode:
authorMonika Hedman <monika_hedman@brown.edu>2019-02-24 16:26:14 -0500
committerMonika Hedman <monika_hedman@brown.edu>2019-02-24 16:26:14 -0500
commitb119b7d4b38c3eada66e4ac49f1d65dfae6b22c0 (patch)
treeae38ab0d33da6354d0777c4f159363d3f3783e45 /src/Utils.ts
parent1447bcdb79425d2e520ca39732d600466deb242c (diff)
parentd9d55e422826da1fe87aa7973c92e54bc0c99f02 (diff)
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web into navigation
Diffstat (limited to 'src/Utils.ts')
-rw-r--r--src/Utils.ts37
1 files changed, 35 insertions, 2 deletions
diff --git a/src/Utils.ts b/src/Utils.ts
index cc1d8f6c6..d4b7da52c 100644
--- a/src/Utils.ts
+++ b/src/Utils.ts
@@ -1,17 +1,22 @@
import v4 = require('uuid/v4');
import v5 = require("uuid/v5");
+import { Socket } from 'socket.io';
+import { Message, Types } from './server/Message';
export class Utils {
public static GenerateGuid(): string {
- return v4();
+ return v4()
}
public static GenerateDeterministicGuid(seed: string): string {
- return v5(seed, v5.URL);
+ return v5(seed, v5.URL)
}
public static GetScreenTransform(ele: HTMLElement): { scale: number, translateX: number, translateY: number } {
+ if (!ele) {
+ return { scale: 1, translateX: 1, translateY: 1 }
+ }
const rect = ele.getBoundingClientRect();
const scale = ele.offsetWidth == 0 && rect.width == 0 ? 1 : rect.width / ele.offsetWidth;
const translateX = rect.left;
@@ -19,4 +24,32 @@ export class Utils {
return { scale, translateX, translateY };
}
+
+ public static CopyText(text: string) {
+ var textArea = document.createElement("textarea");
+ textArea.value = text;
+ document.body.appendChild(textArea);
+ textArea.focus();
+ textArea.select();
+
+ try { document.execCommand('copy'); } catch (err) { }
+
+ document.body.removeChild(textArea);
+ }
+
+ public static Emit<T>(socket: Socket | SocketIOClient.Socket, message: Message<T>, args: T) {
+ socket.emit(message.Message, args);
+ }
+
+ public static EmitCallback<T>(socket: Socket | SocketIOClient.Socket, message: Message<T>, args: T, fn: (args: any) => any) {
+ socket.emit(message.Message, args, fn);
+ }
+
+ public static AddServerHandler<T>(socket: Socket, message: Message<T>, handler: (args: T) => any) {
+ socket.on(message.Message, handler);
+ }
+
+ public static AddServerHandlerCallback<T>(socket: Socket, message: Message<T>, handler: (args: [T, (res: any) => any]) => any) {
+ socket.on(message.Message, (arg: T, fn: (res: any) => any) => handler([arg, fn]));
+ }
} \ No newline at end of file