More export events (#2441)

This commit is contained in:
Lipis 2020-12-03 12:03:29 +02:00 committed by GitHub
parent abde1daba4
commit 0ef60dce2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 47 additions and 32 deletions

View File

@ -1,6 +1,7 @@
| Excalidraw | Name | Category | Label | Value | | Excalidraw | Name | Category | Label | Value |
| ------------------ | ------ | ---------------------------------- | ----------------------- | --------- | | -------------------- | ------ | ---------------------------------- | ------------------------ | --------- |
| Shape / Selection | shape | selection, rectangle, diamond, etc | `toolbar` or `shortcut` | | Shape / Selection | shape | selection, rectangle, diamond, etc | `toolbar` or `shortcut` |
| Text on double click | shape | text | `double-click` |
| Lock selection | shape | lock | `on` or `off` | | Lock selection | shape | lock | `on` or `off` |
| Load file | action | load | `MIME type` | | Load file | action | load | `MIME type` |
| Import from URL | action | import | | Import from URL | action | import |
@ -11,6 +12,10 @@
| Zoom out | action | zoom | out | `zoom` | | Zoom out | action | zoom | out | `zoom` |
| Zoom fit | action | zoom | fit | `zoom` | | Zoom fit | action | zoom | fit | `zoom` |
| Zoom reset | action | zoom | reset | `zoom` | | Zoom reset | action | zoom | reset | `zoom` |
| Export dialog | action | export | dialog |
| Export to backend | action | export | backend |
| Export as SVG | action | export | `svg` or `clipboard-svg` |
| Export to PNG | action | export | `png` or `clipboard-png` |
| Open shortcut menu | action | keyboard shortcuts | | Open shortcut menu | action | keyboard shortcuts |
| Canvas color | change | canvas color | `color` | | Canvas color | change | canvas color | `color` |
| Background color | change | background color | `color` | | Background color | change | background color | `color` |

View File

@ -2029,6 +2029,7 @@ class App extends React.Component<ExcalidrawProps, AppState> {
resetCursor(); resetCursor();
if (!event[KEYS.CTRL_OR_CMD]) { if (!event[KEYS.CTRL_OR_CMD]) {
trackEvent(EVENT_SHAPE, "text", "double-click");
this.startTextEditing({ this.startTextEditing({
sceneX, sceneX,
sceneY, sceneY,

View File

@ -18,6 +18,7 @@ import useIsMobile from "../is-mobile";
import { Dialog } from "./Dialog"; import { Dialog } from "./Dialog";
import { canvasToBlob } from "../data/blob"; import { canvasToBlob } from "../data/blob";
import { CanvasError } from "../errors"; import { CanvasError } from "../errors";
import { EVENT_ACTION, trackEvent } from "../analytics";
const scales = [1, 2, 3]; const scales = [1, 2, 3];
const defaultScale = scales.includes(devicePixelRatio) ? devicePixelRatio : 1; const defaultScale = scales.includes(devicePixelRatio) ? devicePixelRatio : 1;
@ -250,7 +251,10 @@ export const ExportDialog = ({
return ( return (
<> <>
<ToolButton <ToolButton
onClick={() => setModalIsShown(true)} onClick={() => {
trackEvent(EVENT_ACTION, "export", "dialog");
setModalIsShown(true);
}}
icon={exportFile} icon={exportFile}
type="button" type="button"
aria-label={t("buttons.export")} aria-label={t("buttons.export")}

View File

@ -218,6 +218,7 @@ export const exportToBackend = async (
url.hash = `json=${json.id},${exportedKey.k!}`; url.hash = `json=${json.id},${exportedKey.k!}`;
const urlString = url.toString(); const urlString = url.toString();
window.prompt(`🔒${t("alerts.uploadedSecurly")}`, urlString); window.prompt(`🔒${t("alerts.uploadedSecurly")}`, urlString);
trackEvent(EVENT_ACTION, "export", "backend");
} else if (json.error_class === "RequestTooLargeError") { } else if (json.error_class === "RequestTooLargeError") {
window.alert(t("alerts.couldNotCreateShareableLinkTooBig")); window.alert(t("alerts.couldNotCreateShareableLinkTooBig"));
} else { } else {
@ -321,8 +322,10 @@ export const exportCanvas = async (
fileName: `${name}.svg`, fileName: `${name}.svg`,
extensions: [".svg"], extensions: [".svg"],
}); });
trackEvent(EVENT_ACTION, "export", "svg");
return; return;
} else if (type === "clipboard-svg") { } else if (type === "clipboard-svg") {
trackEvent(EVENT_ACTION, "export", "clipboard-svg");
copyTextToSystemClipboard(tempSvg.outerHTML); copyTextToSystemClipboard(tempSvg.outerHTML);
return; return;
} }
@ -354,9 +357,11 @@ export const exportCanvas = async (
fileName, fileName,
extensions: [".png"], extensions: [".png"],
}); });
trackEvent(EVENT_ACTION, "export", "png");
} else if (type === "clipboard") { } else if (type === "clipboard") {
try { try {
await copyCanvasToClipboardAsPng(tempCanvas); await copyCanvasToClipboardAsPng(tempCanvas);
trackEvent(EVENT_ACTION, "export", "clipboard-png");
} catch (error) { } catch (error) {
if (error.name === "CANVAS_POSSIBLY_TOO_BIG") { if (error.name === "CANVAS_POSSIBLY_TOO_BIG") {
throw error; throw error;