diff --git a/package.json b/package.json index e1ea6dda..0e67c478 100644 --- a/package.json +++ b/package.json @@ -83,13 +83,14 @@ }, "dependencies": { "@fortawesome/fontawesome-svg-core": "^1.2.32", - "@fortawesome/free-solid-svg-icons": "^5.15.1", + "@fortawesome/free-solid-svg-icons": "^6.6.0", "@fortawesome/react-fontawesome": "^0.1.18", "@handsontable/react": "^3.1.2", "handsontable": "^10.0.0", "html2canvas": "^1.4.1", "railroad-diagrams": "^1.0.0", "react-toastify": "^5.5.0", + "react-zoom-pan-pinch": "^3.6.1", "sass": "^1.49.9", "serialize-javascript": "^3.1.0", "svgo": "^1.3.2", diff --git a/src/calc2/components/editorBase.tsx b/src/calc2/components/editorBase.tsx index 881e22d2..bfa48f7c 100644 --- a/src/calc2/components/editorBase.tsx +++ b/src/calc2/components/editorBase.tsx @@ -1173,15 +1173,45 @@ export class EditorBase extends React.Component { switch(mode) { case 'jpg': - const imgDiv = document.getElementsByClassName('ra-tree')[0] as HTMLElement; - if(imgDiv) { - html2canvas(imgDiv).then(canvas => { - const dataUrl = canvas.toDataURL('image/jpeg', 1.0); + const images = document.getElementsByClassName('ra-tree') as HTMLCollectionOf; + let imgDiv; + // Find the visible tree image + for (let i = 0; i < images.length; i++) { + // Check if the element is visible + if (images[i].offsetParent !== null) { + imgDiv = images[i] as HTMLElement; + break; + } + } + if (!imgDiv) { + return; + } + const treeElement = imgDiv.cloneNode(true); + document.body.appendChild(treeElement); + + // const imgDiv = document.getElementsByClassName('tree')[0] as HTMLElement; + if(treeElement) { + // bug fix for html2canvas + const nodes = (treeElement as HTMLElement).querySelectorAll(".tree li:only-child"); + if (nodes && nodes instanceof NodeList) { + for (let i = 1; i < nodes.length; i++) { + const node = nodes[i]; + (node as HTMLElement).style.setProperty("top", "-20px"); + } + } + + html2canvas(treeElement as HTMLElement, { + // better quality + scale: 2, + }).then(canvas => { + document.body.removeChild(treeElement); + const dataUrl = canvas.toDataURL('image/jpeg'); const d = document.createElement('a'); d.href = dataUrl; d.download = 'result.jpg'; document.body.appendChild(d); d.click(); + document.body.removeChild(d) }); } else { diff --git a/src/calc2/components/raTree.tsx b/src/calc2/components/raTree.tsx index 2de8aae1..31b24423 100644 --- a/src/calc2/components/raTree.tsx +++ b/src/calc2/components/raTree.tsx @@ -9,6 +9,11 @@ import classNames from 'classnames'; import { RANode, RANodeBinary, RANodeUnary } from 'db/exec/RANode'; import * as React from 'react'; import { t } from 'calc2/i18n'; +import Button from 'reactstrap/es/Button'; +import { IconProp } from '@fortawesome/fontawesome-svg-core'; +import { faSearchMinus, faSearchPlus, faRefresh, faDownLeftAndUpRightToCenter } from '@fortawesome/free-solid-svg-icons'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { TransformWrapper, TransformComponent, useControls, ReactZoomPanPinchRef } from "react-zoom-pan-pinch"; require('./raTree.scss'); // require('./raTreeFamilyTree.scss'); @@ -145,14 +150,164 @@ export class RaTree extends React.Component { ); }; - return ( -
-
-
    - {rec(root)} -
+ const Controls = () => { + const { zoomIn, zoomOut, resetTransform, centerView } = useControls(); + + return ( +
+ + + + +
-
+ ); + }; + + return ( + { + const containers = document.getElementsByClassName('ra-result') as HTMLCollectionOf; + let containerElement; + // Find the first visible tree + for (let i = 0; i < containers.length; i++) { + // Check if the element is visible + if (containers[i].offsetParent !== null) { + containerElement = containers[i] as HTMLElement; + break; + } + } + + if (containerElement) { + const controlElement = containerElement.querySelector('.pan-zoom-controls'); + const zoom = parseFloat(state.scale.toString())*100; + const minScale = + (containerElement.querySelector('.react-transform-wrapper') as HTMLElement).offsetWidth / + (containerElement.querySelector('.ra-tree') as HTMLElement).offsetWidth; + + if (controlElement) { + const zoomIn = controlElement.querySelector('.zoom-in'); + if (zoomIn) { + if (zoom === 100) { + (zoomIn as HTMLButtonElement).disabled = true; + } + else (zoomIn as HTMLButtonElement).disabled = false; + } + + const zoomOut = controlElement.querySelector('.zoom-out'); + if (zoomOut) { + if (zoom <= minScale*100) { + (zoomOut as HTMLButtonElement).disabled = true; + } + else (zoomOut as HTMLButtonElement).disabled = false; + } + + const zoomReset = controlElement.querySelector('.zoom-reset'); + const zoomCenter = controlElement.querySelector('.center-view'); + if (zoomReset && zoomCenter) { + if (minScale >= 1) { + (zoomReset as HTMLButtonElement).disabled = true; + (zoomCenter as HTMLButtonElement).disabled = true; + } + else { + (zoomReset as HTMLButtonElement).disabled = false; + (zoomCenter as HTMLButtonElement).disabled = false; + } + } + } + } + }} + > + {({ zoomIn, zoomOut, resetTransform, ...rest }) => ( + <> + + +
+
+
    + {rec(root)} +
+
+
+
+ + )} +
); } } diff --git a/src/locales/.json b/src/locales/.json index ff2533d9..e6e4ee4e 100644 --- a/src/locales/.json +++ b/src/locales/.json @@ -1 +1 @@ -{"db.messages.parser.error-duplicate-variable": "", "db.messages.parser.error-invalid-date-format": "", "db.messages.parser.error-group-duplicate-header": "", "db.messages.parser.error-group-unknown-header": "", "db.messages.parser.error-group-header-name-missing": "", "db.messages.parser.error-group-header-name-empty": "", "db.messages.parser.error-group-non-unique-attribute": "", "db.messages.parser.error-group-non-unique-group-name": "", "db.messages.parser.error-sql-string-use-single-quotes": "", "db.messages.parser.error-sql-invalid-relation-name": "", "db.messages.parser.error-sql-invalid-column-name": "", "db.messages.parser.error-sql-group-by-missing": "", "db.messages.parser.error-sql-having-without-group-by": "", "db.messages.parser.error-sql-negative-limit": "", "db.messages.parser.error-sqldump-invalid-column-number": "", "db.messages.parser.error-sqldump-invalid-type": "", "db.messages.parser.error-sqldump-insert-wrong-number-columns": "", "db.messages.parser.error-valueexpr-like-operand-no-string": "", "db.messages.exec.error-column-not-unique": "", "db.messages.exec.error-column-not-found-name": "", "db.messages.exec.error-column-not-found-index": "", "db.messages.exec.error-column-ambiguous": "", "db.messages.exec.error-column-index-out-of-range": "", "db.messages.exec.error-could-not-change-rel-alias-ambiguity": "", "db.messages.exec.error-could-not-rename-ambiguity": "", "db.messages.exec.error-schema-a-not-part-of-schema-b": "", "db.messages.exec.error-schemas-not-unifiable": "", "db.messages.exec.error-column-not-in-both-schemas": "", "db.messages.exec.error-condition-must-be-boolean": "", "db.messages.exec.error-func-not-defined-for-column-type": "", "db.messages.exec.error-join-would-produce-non-unique-columns": " \uc774 \uc5f4\ub4e4\uc740 \ub450 \ub9b4\ub808\uc774\uc158 \uc0ac\uc774\uc5d0\uc11c \ub098\ud0c0\ub0a8: __conflicts__", "db.messages.exec.error-no-columns-match-alias-star": "", "db.messages.exec.error-datatype-not-specified-for-col": "", "db.messages.exec.error-invalid-projection-error": "", "db.messages.exec.error-function-expects-type": "", "db.messages.exec.error-could-not-compare-different-types": "", "db.messages.exec.error-function-expects-arguments-of-same-type": "", "db.messages.exec.error-case-when-condition-must-be-boolean": "", "db.messages.exec.error-case-when-expects-results-of-same-type": "", "db.messages.exec.error-invalid-date-format": "", "db.messages.translate.error-relation-not-found": "", "db.messages.translate.warning-distinct-missing": " \uad00\uacc4 \ub300\uc218\ub294 \uc554\uc2dc\uc801\uc778 \uc911\ubcf5 \uc81c\uac70\ub97c \uc0ac\uc6a9\ud568", "db.messages.translate.warning-ignored-all-on-set-operators": " \uad00\uacc4 \ub300\uc218\ub294 \uc554\uc2dc\uc801\uc778 \uc911\ubcf5 \uc81c\uac70\ub97c \uc0ac\uc6a9\ud568", "db.messages.translate.error-variable-name-conflict": "", "db.messages.translate.error-variable-cyclic-usage": "", "editor.codemirror-placeholder": "", "editor.alert-message-headers.success": "", "editor.alert-message-headers.info": "", "editor.alert-message-headers.warning": "", "editor.alert-message-headers.error": "", "editor.inline-relation-editor.button-ok": "", "editor.inline-relation-editor.button-cancel": "", "editor.inline-relation-editor.placeholder-column-name-and-types": "", "editor.inline-relation-editor.enter-your-data": "", "editor.inline-relation-editor.error-column-name-missing": "", "editor.inline-relation-editor.error-wrong-quoted-string": "", "editor.error-no-query-found": "", "editor.pegjs-error.or": "", "editor.pegjs-error.no-input-found": "", "editor.pegjs-error.end-of-input": "", "editor.pegjs-error.expected-found": "", "editor.error-at-line-x": "", "calc.messages.error-query-missing": "", "calc.messages.error-query-missing-assignments-found": "", "calc.messages.gist-load-success": "", "calc.menu.headline": "", "calc.menu.datasets": "", "calc.menu.load-gist-headline": "", "calc.menu.load-gist-button": "", "calc.menu.load-gist-insert-placeholder": "", "calc.menu.create-own-dataset-headline": "", "calc.menu.create-own-dataset-text": "", "calc.menu.create-own-dataset-text-link": "", "calc.menu.create-own-dataset-button-new": "", "calc.menu.create-own-dataset-button-modify": "", "calc.navigation.take-a-tour": "", "calc.navigation.feedback": "", "calc.navigation.help": "", "calc.navigation.calc": "", "calc.navigation.language": "", "calc.maintainer-groups.misc": "", "calc.maintainer-groups.temp": "", "calc.maintainer-groups.uibk": "", "calc.maintainer-groups.saarland": "", "calc.editors.button-history": "", "calc.editors.insert-relation-title": "", "calc.editors.insert-relation-tooltip": "", "calc.editors.group.tab-name": "", "calc.editors.group.tab-name-short": "", "calc.editors.group.toolbar.import-sql": "", "calc.editors.group.toolbar.import-sql-content": "", "calc.editors.group.toolbar.add-new-relation": "", "calc.editors.group.toolbar.add-new-relation-content": "", "calc.editors.group.button-download": "", "calc.editors.group.button-exec": "", "calc.editors.group.button-use": "", "calc.editors.group.button-use_plural": "", "calc.editors.group.sql-import-group-name-placeholder": "", "calc.editors.group.new-group-example-group": "", "calc.editors.group.modal-sqldump.modal-title": "", "calc.editors.group.modal-sqldump.button-close": "", "calc.editors.group.modal-sqldump.button-cancel": "", "calc.editors.group.modal-sqldump.button-import-sql": "", "calc.editors.group.modal-sqldump.description": "", "calc.editors.ra.tab-name": "", "calc.editors.ra.tab-name-short": "", "calc.editors.bags.tab-name": "", "calc.editors.bags.tab-name-short": "", "calc.editors.ra.button-execute-query": "", "calc.editors.ra.button-execute-selection": "", "calc.editors.ra.button-download": "", "calc.editors.ra.toolbar.duplicate-elimination": "", "calc.editors.ra.toolbar.duplicate-elimination-content": "", "calc.editors.ra.toolbar.projection": "", "calc.editors.ra.toolbar.projection-content": "", "calc.editors.ra.toolbar.selection": "", "calc.editors.ra.toolbar.selection-content": "", "calc.editors.ra.toolbar.rename": "", "calc.editors.ra.toolbar.rename-content": "", "calc.editors.ra.toolbar.right-arrow": "", "calc.editors.ra.toolbar.rename-columns-operator": "", "calc.editors.ra.toolbar.rename-columns-operator-content": "", "calc.editors.ra.toolbar.orderBy": "", "calc.editors.ra.toolbar.orderBy-content": "", "calc.editors.ra.toolbar.groupBy": "", "calc.editors.ra.toolbar.groupBy-content": "", "calc.editors.ra.toolbar.and": "", "calc.editors.ra.toolbar.and-content": "", "calc.editors.ra.toolbar.xor": "", "calc.editors.ra.toolbar.xor-content": "", "calc.editors.ra.toolbar.or": "", "calc.editors.ra.toolbar.or-content": "", "calc.editors.ra.toolbar.not": "", "calc.editors.ra.toolbar.not-content": " \u00ac(a < b) ( A )
", "calc.editors.ra.toolbar.equals": "", "calc.editors.ra.toolbar.equals-content": " a = b ( A )", "calc.editors.ra.toolbar.not-equals": "", "calc.editors.ra.toolbar.not-equals-content": " a \u2260 'text' ( A )", "calc.editors.ra.toolbar.greater-or-equals": "", "calc.editors.ra.toolbar.greater-or-equals-content": " a \u2265 42 ( A )", "calc.editors.ra.toolbar.lesser-or-equals": "", "calc.editors.ra.toolbar.lesser-or-equals-content": " a \u2264 42 ( A )", "calc.editors.ra.toolbar.intersect": "", "calc.editors.ra.toolbar.intersect-content": "", "calc.editors.ra.toolbar.union": "", "calc.editors.ra.toolbar.union-content": "", "calc.editors.ra.toolbar.division": "", "calc.editors.ra.toolbar.division-content": "", "calc.editors.ra.toolbar.subtraction": "", "calc.editors.ra.toolbar.subtraction-content": "", "calc.editors.ra.toolbar.cross-join": "", "calc.editors.ra.toolbar.cross-join-content": "", "calc.editors.ra.toolbar.natural-join": "", "calc.editors.ra.toolbar.natural-join-content": "", "calc.editors.ra.toolbar.left-outer-join": "", "calc.editors.ra.toolbar.left-outer-join-content": "", "calc.editors.ra.toolbar.right-outer-join": "", "calc.editors.ra.toolbar.right-outer-join-content": "", "calc.editors.ra.toolbar.full-outer-join": "", "calc.editors.ra.toolbar.full-outer-join-content": "", "calc.editors.ra.toolbar.left-semi-join": "", "calc.editors.ra.toolbar.left-semi-join-content": "", "calc.editors.ra.toolbar.right-semi-join": "", "calc.editors.ra.toolbar.right-semi-join-content": "", "calc.editors.ra.toolbar.anti-join": "", "calc.editors.ra.toolbar.anti-join-content": "", "calc.editors.ra.toolbar.assignment": "", "calc.editors.ra.toolbar.assignment-content": "", "calc.editors.ra.toolbar.single-line-comment": "", "calc.editors.ra.toolbar.single-line-comment-content": "", "calc.editors.ra.toolbar.multi-line-comment": "", "calc.editors.ra.toolbar.multi-line-comment-content": "", "calc.editors.ra.toolbar.inline-relation": "", "calc.editors.ra.toolbar.inline-relation-content": "", "calc.editors.ra.toolbar.inline-relation-editor": "", "calc.editors.ra.toolbar.inline-relation-editor-content": "", "calc.editors.ra.toolbar.insert-date": "", "calc.editors.ra.toolbar.insert-date-content": "", "calc.editors.ra.toolbar.autoreplace-operators.title": "", "calc.editors.ra.toolbar.autoreplace-operators.header": "", "calc.editors.ra.toolbar.autoreplace-operators.none": "", "calc.editors.ra.toolbar.autoreplace-operators.plain2math": "", "calc.editors.ra.toolbar.autoreplace-operators.math2plain": "", "calc.editors.sql.tab-name": "", "calc.editors.sql.tab-name-short": "", "calc.editors.sql.button-execute-query": "", "calc.editors.sql.button-execute-selection": "", "calc.editors.sql.button-download": "", "calc.editors.sql.toolbar.select": "", "calc.editors.sql.toolbar.select-content": "", "calc.editors.sql.toolbar.from": "", "calc.editors.sql.toolbar.from-content": "", "calc.editors.sql.toolbar.where": "", "calc.editors.sql.toolbar.where-content": "", "calc.editors.sql.toolbar.group-by": "", "calc.editors.sql.toolbar.group-by-content": "", "calc.editors.sql.toolbar.having": "", "calc.editors.sql.toolbar.having-content": "", "calc.editors.sql.toolbar.order-by": "", "calc.editors.sql.toolbar.order-by-content": "", "calc.editors.sql.toolbar.limit": "", "calc.editors.sql.toolbar.limit-content": "", "calc.editors.sql.toolbar.insert-date": "", "calc.editors.sql.toolbar.insert-date-content": "", "calc.result.modal.title": "", "calc.result.modal.close": "", "calc.editors.ra.inline-editor.title": "", "calc.editors.ra.inline-editor.button-download-csv": "", "calc.editors.ra.inline-editor.button-download-jpg": "", "calc.editors.ra.inline-editor.button-upload-csv": "", "calc.editors.ra.inline-editor.button-cancel": "", "calc.editors.ra.inline-editor.button-ok": "", "calc.editors.ra.inline-editor.row-name": "", "calc.editors.ra.inline-editor.row-type": "", "calc.editors.ra.inline-editor.input-relation-name": "", "calc.navigation.imprint": ""} \ No newline at end of file +{"db.messages.parser.error-duplicate-variable": "", "db.messages.parser.error-invalid-date-format": "", "db.messages.parser.error-group-duplicate-header": "", "db.messages.parser.error-group-unknown-header": "", "db.messages.parser.error-group-header-name-missing": "", "db.messages.parser.error-group-header-name-empty": "", "db.messages.parser.error-group-non-unique-attribute": "", "db.messages.parser.error-group-non-unique-group-name": "", "db.messages.parser.error-sql-string-use-single-quotes": "", "db.messages.parser.error-sql-invalid-relation-name": "", "db.messages.parser.error-sql-invalid-column-name": "", "db.messages.parser.error-sql-group-by-missing": "", "db.messages.parser.error-sql-having-without-group-by": "", "db.messages.parser.error-sql-negative-limit": "", "db.messages.parser.error-sqldump-invalid-column-number": "", "db.messages.parser.error-sqldump-invalid-type": "", "db.messages.parser.error-sqldump-insert-wrong-number-columns": "", "db.messages.parser.error-valueexpr-like-operand-no-string": "", "db.messages.exec.error-column-not-unique": "", "db.messages.exec.error-column-not-found-name": "", "db.messages.exec.error-column-not-found-index": "", "db.messages.exec.error-column-ambiguous": "", "db.messages.exec.error-column-index-out-of-range": "", "db.messages.exec.error-could-not-change-rel-alias-ambiguity": "", "db.messages.exec.error-could-not-rename-ambiguity": "", "db.messages.exec.error-schema-a-not-part-of-schema-b": "", "db.messages.exec.error-schemas-not-unifiable": "", "db.messages.exec.error-column-not-in-both-schemas": "", "db.messages.exec.error-condition-must-be-boolean": "", "db.messages.exec.error-func-not-defined-for-column-type": "", "db.messages.exec.error-join-would-produce-non-unique-columns": " \uc774 \uc5f4\ub4e4\uc740 \ub450 \ub9b4\ub808\uc774\uc158 \uc0ac\uc774\uc5d0\uc11c \ub098\ud0c0\ub0a8: __conflicts__", "db.messages.exec.error-no-columns-match-alias-star": "", "db.messages.exec.error-datatype-not-specified-for-col": "", "db.messages.exec.error-invalid-projection-error": "", "db.messages.exec.error-function-expects-type": "", "db.messages.exec.error-could-not-compare-different-types": "", "db.messages.exec.error-function-expects-arguments-of-same-type": "", "db.messages.exec.error-case-when-condition-must-be-boolean": "", "db.messages.exec.error-case-when-expects-results-of-same-type": "", "db.messages.exec.error-invalid-date-format": "", "db.messages.translate.error-relation-not-found": "", "db.messages.translate.warning-distinct-missing": " \uad00\uacc4 \ub300\uc218\ub294 \uc554\uc2dc\uc801\uc778 \uc911\ubcf5 \uc81c\uac70\ub97c \uc0ac\uc6a9\ud568", "db.messages.translate.warning-ignored-all-on-set-operators": " \uad00\uacc4 \ub300\uc218\ub294 \uc554\uc2dc\uc801\uc778 \uc911\ubcf5 \uc81c\uac70\ub97c \uc0ac\uc6a9\ud568", "db.messages.translate.error-variable-name-conflict": "", "db.messages.translate.error-variable-cyclic-usage": "", "editor.codemirror-placeholder": "", "editor.alert-message-headers.success": "", "editor.alert-message-headers.info": "", "editor.alert-message-headers.warning": "", "editor.alert-message-headers.error": "", "editor.inline-relation-editor.button-ok": "", "editor.inline-relation-editor.button-cancel": "", "editor.inline-relation-editor.placeholder-column-name-and-types": "", "editor.inline-relation-editor.enter-your-data": "", "editor.inline-relation-editor.error-column-name-missing": "", "editor.inline-relation-editor.error-wrong-quoted-string": "", "editor.error-no-query-found": "", "editor.pegjs-error.or": "", "editor.pegjs-error.no-input-found": "", "editor.pegjs-error.end-of-input": "", "editor.pegjs-error.expected-found": "", "editor.error-at-line-x": "", "calc.messages.error-query-missing": "", "calc.messages.error-query-missing-assignments-found": "", "calc.messages.gist-load-success": "", "calc.menu.headline": "", "calc.menu.datasets": "", "calc.menu.load-gist-headline": "", "calc.menu.load-gist-button": "", "calc.menu.load-gist-insert-placeholder": "", "calc.menu.create-own-dataset-headline": "", "calc.menu.create-own-dataset-text": "", "calc.menu.create-own-dataset-text-link": "", "calc.menu.create-own-dataset-button-new": "", "calc.menu.create-own-dataset-button-modify": "", "calc.navigation.take-a-tour": "", "calc.navigation.feedback": "", "calc.navigation.help": "", "calc.navigation.calc": "", "calc.navigation.language": "", "calc.maintainer-groups.misc": "", "calc.maintainer-groups.temp": "", "calc.maintainer-groups.uibk": "", "calc.maintainer-groups.saarland": "", "calc.editors.button-history": "", "calc.editors.insert-relation-title": "", "calc.editors.insert-relation-tooltip": "", "calc.editors.group.tab-name": "", "calc.editors.group.tab-name-short": "", "calc.editors.group.toolbar.import-sql": "", "calc.editors.group.toolbar.import-sql-content": "", "calc.editors.group.toolbar.add-new-relation": "", "calc.editors.group.toolbar.add-new-relation-content": "", "calc.editors.group.button-download": "", "calc.editors.group.button-exec": "", "calc.editors.group.button-use": "", "calc.editors.group.button-use_plural": "", "calc.editors.group.sql-import-group-name-placeholder": "", "calc.editors.group.new-group-example-group": "", "calc.editors.group.modal-sqldump.modal-title": "", "calc.editors.group.modal-sqldump.button-close": "", "calc.editors.group.modal-sqldump.button-cancel": "", "calc.editors.group.modal-sqldump.button-import-sql": "", "calc.editors.group.modal-sqldump.description": "", "calc.editors.ra.tab-name": "", "calc.editors.ra.tab-name-short": "", "calc.editors.bags.tab-name": "", "calc.editors.bags.tab-name-short": "", "calc.editors.ra.button-execute-query": "", "calc.editors.ra.button-execute-selection": "", "calc.editors.ra.button-download": "", "calc.editors.ra.toolbar.duplicate-elimination": "", "calc.editors.ra.toolbar.duplicate-elimination-content": "", "calc.editors.ra.toolbar.projection": "", "calc.editors.ra.toolbar.projection-content": "", "calc.editors.ra.toolbar.selection": "", "calc.editors.ra.toolbar.selection-content": "", "calc.editors.ra.toolbar.rename": "", "calc.editors.ra.toolbar.rename-content": "", "calc.editors.ra.toolbar.right-arrow": "", "calc.editors.ra.toolbar.rename-columns-operator": "", "calc.editors.ra.toolbar.rename-columns-operator-content": "", "calc.editors.ra.toolbar.orderBy": "", "calc.editors.ra.toolbar.orderBy-content": "", "calc.editors.ra.toolbar.groupBy": "", "calc.editors.ra.toolbar.groupBy-content": "", "calc.editors.ra.toolbar.and": "", "calc.editors.ra.toolbar.and-content": "", "calc.editors.ra.toolbar.xor": "", "calc.editors.ra.toolbar.xor-content": "", "calc.editors.ra.toolbar.or": "", "calc.editors.ra.toolbar.or-content": "", "calc.editors.ra.toolbar.not": "", "calc.editors.ra.toolbar.not-content": " \u00ac(a < b) ( A )", "calc.editors.ra.toolbar.equals": "", "calc.editors.ra.toolbar.equals-content": " a = b ( A )", "calc.editors.ra.toolbar.not-equals": "", "calc.editors.ra.toolbar.not-equals-content": " a \u2260 'text' ( A )", "calc.editors.ra.toolbar.greater-or-equals": "", "calc.editors.ra.toolbar.greater-or-equals-content": " a \u2265 42 ( A )", "calc.editors.ra.toolbar.lesser-or-equals": "", "calc.editors.ra.toolbar.lesser-or-equals-content": " a \u2264 42 ( A )", "calc.editors.ra.toolbar.intersect": "", "calc.editors.ra.toolbar.intersect-content": "", "calc.editors.ra.toolbar.union": "", "calc.editors.ra.toolbar.union-content": "", "calc.editors.ra.toolbar.division": "", "calc.editors.ra.toolbar.division-content": "", "calc.editors.ra.toolbar.subtraction": "", "calc.editors.ra.toolbar.subtraction-content": "", "calc.editors.ra.toolbar.cross-join": "", "calc.editors.ra.toolbar.cross-join-content": "", "calc.editors.ra.toolbar.natural-join": "", "calc.editors.ra.toolbar.natural-join-content": "", "calc.editors.ra.toolbar.left-outer-join": "", "calc.editors.ra.toolbar.left-outer-join-content": "", "calc.editors.ra.toolbar.right-outer-join": "", "calc.editors.ra.toolbar.right-outer-join-content": "", "calc.editors.ra.toolbar.full-outer-join": "", "calc.editors.ra.toolbar.full-outer-join-content": "", "calc.editors.ra.toolbar.left-semi-join": "", "calc.editors.ra.toolbar.left-semi-join-content": "", "calc.editors.ra.toolbar.right-semi-join": "", "calc.editors.ra.toolbar.right-semi-join-content": "", "calc.editors.ra.toolbar.anti-join": "", "calc.editors.ra.toolbar.anti-join-content": "", "calc.editors.ra.toolbar.assignment": "", "calc.editors.ra.toolbar.assignment-content": "", "calc.editors.ra.toolbar.single-line-comment": "", "calc.editors.ra.toolbar.single-line-comment-content": "", "calc.editors.ra.toolbar.multi-line-comment": "", "calc.editors.ra.toolbar.multi-line-comment-content": "", "calc.editors.ra.toolbar.inline-relation": "", "calc.editors.ra.toolbar.inline-relation-content": "", "calc.editors.ra.toolbar.inline-relation-editor": "", "calc.editors.ra.toolbar.inline-relation-editor-content": "", "calc.editors.ra.toolbar.insert-date": "", "calc.editors.ra.toolbar.insert-date-content": "", "calc.editors.ra.toolbar.autoreplace-operators.title": "", "calc.editors.ra.toolbar.autoreplace-operators.header": "", "calc.editors.ra.toolbar.autoreplace-operators.none": "", "calc.editors.ra.toolbar.autoreplace-operators.plain2math": "", "calc.editors.ra.toolbar.autoreplace-operators.math2plain": "", "calc.editors.sql.tab-name": "", "calc.editors.sql.tab-name-short": "", "calc.editors.sql.button-execute-query": "", "calc.editors.sql.button-execute-selection": "", "calc.editors.sql.button-download": "", "calc.editors.sql.toolbar.select": "", "calc.editors.sql.toolbar.select-content": "", "calc.editors.sql.toolbar.from": "", "calc.editors.sql.toolbar.from-content": "", "calc.editors.sql.toolbar.where": "", "calc.editors.sql.toolbar.where-content": "", "calc.editors.sql.toolbar.group-by": "", "calc.editors.sql.toolbar.group-by-content": "", "calc.editors.sql.toolbar.having": "", "calc.editors.sql.toolbar.having-content": "", "calc.editors.sql.toolbar.order-by": "", "calc.editors.sql.toolbar.order-by-content": "", "calc.editors.sql.toolbar.limit": "", "calc.editors.sql.toolbar.limit-content": "", "calc.editors.sql.toolbar.insert-date": "", "calc.editors.sql.toolbar.insert-date-content": "", "calc.result.modal.title": "", "calc.result.modal.close": "", "calc.editors.ra.inline-editor.title": "", "calc.editors.ra.inline-editor.button-download-csv": "", "calc.editors.ra.inline-editor.button-download-jpg": "", "calc.editors.ra.button-zoom-in": "", "calc.editors.ra.button-zoom-out": "", "calc.editors.ra.button-zoom-reset": "", "calc.editors.ra.button-zoom-center": "", "calc.editors.ra.inline-editor.button-upload-csv": "", "calc.editors.ra.inline-editor.button-cancel": "", "calc.editors.ra.inline-editor.button-ok": "", "calc.editors.ra.inline-editor.row-name": "", "calc.editors.ra.inline-editor.row-type": "", "calc.editors.ra.inline-editor.input-relation-name": "", "calc.navigation.imprint": ""} \ No newline at end of file diff --git a/src/locales/de.json b/src/locales/de.json index 53988755..59e6e28f 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -117,6 +117,10 @@ "calc.editors.ra.button-download-csv": "Ergebnis (CSV)", "calc.editors.ra.button-download-jpg": "Ergebnis (JPG)", "calc.editors.ra.button-download-query": "Query", + "calc.editors.ra.button-zoom-in": "Hereinzoomen", + "calc.editors.ra.button-zoom-out": "Herauszoomen", + "calc.editors.ra.button-zoom-reset": "Auf Standard-Zoomstufe zur\u00fccksetzen", + "calc.editors.ra.button-zoom-center": "Ansicht einpassen", "calc.editors.ra.toolbar.duplicate-elimination": "Eliminierung von Duplikaten", "calc.editors.ra.toolbar.duplicate-elimination-content": " ( A )\n
delta A", "calc.editors.ra.toolbar.projection": "Projektion", @@ -339,6 +343,10 @@ "calc.editors.ra.button-download-csv": "Ergebnis (CSV)", "calc.editors.ra.button-download-jpg": "Ergebnis (JPG)", "calc.editors.ra.button-download-query": "Query", + "calc.editors.ra.button-zoom-in": "Hereinzoomen", + "calc.editors.ra.button-zoom-out": "Herauszoomen", + "calc.editors.ra.button-zoom-reset": "Auf Standard-Zoomstufe zurücksetzen", + "calc.editors.ra.button-zoom-center": "Ansicht einpassen", "calc.editors.ra.toolbar.duplicate-elimination": "Eliminierung von Duplikaten", "calc.editors.ra.toolbar.duplicate-elimination-content": " ( A )\n
delta A", "calc.editors.ra.toolbar.projection": "Projektion", diff --git a/src/locales/de.ts b/src/locales/de.ts index 0de056c5..6e1bbc3b 100644 --- a/src/locales/de.ts +++ b/src/locales/de.ts @@ -129,6 +129,10 @@ export const langDE: Partial = { 'calc.editors.ra.button-download-csv': 'Ergebnis (CSV)', 'calc.editors.ra.button-download-jpg': 'Ergebnis (JPG)', 'calc.editors.ra.button-download-query': 'Query', + 'calc.editors.ra.button-zoom-in': 'Hereinzoomen', + 'calc.editors.ra.button-zoom-out': 'Herauszoomen', + 'calc.editors.ra.button-zoom-reset': 'Auf Standard-Zoomstufe zurücksetzen', + 'calc.editors.ra.button-zoom-center': 'Ansicht einpassen', 'calc.editors.ra.toolbar.duplicate-elimination': 'Eliminierung von Duplikaten', 'calc.editors.ra.toolbar.projection': 'Projektion', 'calc.editors.ra.toolbar.selection': 'Selektion', diff --git a/src/locales/en.json b/src/locales/en.json index 54d33a52..d20b69d7 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -116,6 +116,10 @@ "calc.editors.ra.button-download-csv": "Result (CSV)", "calc.editors.ra.button-download-jpg": "Result (JPG)", "calc.editors.ra.button-download-query": "Query", + "calc.editors.ra.button-zoom-in": "Zoom in", + "calc.editors.ra.button-zoom-out": "Zoom out", + "calc.editors.ra.button-zoom-reset": "Reset zoom", + "calc.editors.ra.button-zoom-center": "Zoom to fit", "calc.editors.ra.toolbar.duplicate-elimination": "duplicate elimination", "calc.editors.ra.toolbar.duplicate-elimination-content": " ( A )\n
delta A", "calc.editors.ra.toolbar.projection": "projection", @@ -337,6 +341,10 @@ "calc.editors.ra.button-download-csv": "Result (CSV)", "calc.editors.ra.button-download-jpg": "Result (JPG)", "calc.editors.ra.button-download-query": "Query", + "calc.editors.ra.button-zoom-in": "Zoom in", + "calc.editors.ra.button-zoom-out": "Zoom out", + "calc.editors.ra.button-zoom-reset": "Reset zoom", + "calc.editors.ra.button-zoom-center": "Zoom to fit", "calc.editors.ra.toolbar.duplicate-elimination": "duplicate elimination", "calc.editors.ra.toolbar.duplicate-elimination-content": " ( A )\n
delta A", "calc.editors.ra.toolbar.projection": "projection", diff --git a/src/locales/en.ts b/src/locales/en.ts index 41620d39..3337f2f4 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -130,6 +130,10 @@ export const langEN = { 'calc.editors.ra.button-download-csv': 'Result (CSV)', 'calc.editors.ra.button-download-jpg': 'Result (JPG)', 'calc.editors.ra.button-download-query': 'Query', + 'calc.editors.ra.button-zoom-in': 'Zoom in', + 'calc.editors.ra.button-zoom-out': 'Zoom out', + 'calc.editors.ra.button-zoom-reset': 'Reset zoom', + 'calc.editors.ra.button-zoom-center': 'Zoom to fit', 'calc.editors.ra.toolbar.duplicate-elimination': 'duplicate elimination', 'calc.editors.ra.toolbar.duplicate-elimination-content': [ ' ( A )', diff --git a/src/locales/es.json b/src/locales/es.json index b2cf8749..1606dd40 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -116,6 +116,10 @@ "calc.editors.ra.button-download-csv": "Resultado (CSV)", "calc.editors.ra.button-download-jpg": "Resultado (JPG)", "calc.editors.ra.button-download-query": "Query", + "calc.editors.ra.button-zoom-in": "Acercar", + "calc.editors.ra.button-zoom-out": "Alejar", + "calc.editors.ra.button-zoom-reset": "Restablecer zoom", + "calc.editors.ra.button-zoom-center": "Ajustar a la vista", "calc.editors.ra.toolbar.duplicate-elimination": "eliminaci\u00f3n de duplicados", "calc.editors.ra.toolbar.duplicate-elimination-content": " ( A )\n
delta A", "calc.editors.ra.toolbar.projection": "proyecci\u00f3n", @@ -338,6 +342,10 @@ "calc.editors.ra.button-download-csv": "Resultado (CSV)", "calc.editors.ra.button-download-jpg": "Resultado (JPG)", "calc.editors.ra.button-download-query": "Query", + "calc.editors.ra.button-zoom-in": "Acercar", + "calc.editors.ra.button-zoom-out": "Alejar", + "calc.editors.ra.button-zoom-reset": "Restablecer zoom", + "calc.editors.ra.button-zoom-center": "Ajustar a la vista", "calc.editors.ra.toolbar.duplicate-elimination": "eliminación de duplicados", "calc.editors.ra.toolbar.duplicate-elimination-content": " ( A )\n
delta A", "calc.editors.ra.toolbar.projection": "proyección", diff --git a/src/locales/es.ts b/src/locales/es.ts index 7ca415d4..39d9d463 100644 --- a/src/locales/es.ts +++ b/src/locales/es.ts @@ -140,6 +140,10 @@ export const langES: Partial = { 'calc.editors.ra.button-download': 'Descargar', 'calc.editors.ra.button-download-csv': 'Resultado (CSV)', 'calc.editors.ra.button-download-query': 'Query', + 'calc.editors.ra.button-zoom-in': 'Acercar', + 'calc.editors.ra.button-zoom-out': 'Alejar', + 'calc.editors.ra.button-zoom-reset': 'Restablecer zoom', + 'calc.editors.ra.button-zoom-center': 'Ajustar a la vista', 'calc.editors.ra.toolbar.duplicate-elimination': 'eliminación de duplicados', 'calc.editors.ra.toolbar.duplicate-elimination-content': [ ' ( A )', diff --git a/src/locales/kr.json b/src/locales/kr.json index a5fd7c0e..5582e4ea 100644 --- a/src/locales/kr.json +++ b/src/locales/kr.json @@ -116,6 +116,10 @@ "calc.editors.ra.button-download-csv": "결과 (CSV)", "calc.editors.ra.button-download-jpg": "결과 (JPG)", "calc.editors.ra.button-download-query": "쿼리", + "calc.editors.ra.button-zoom-in": "줌인", + "calc.editors.ra.button-zoom-out": "줌아웃", + "calc.editors.ra.button-zoom-reset": "줌초기화", + "calc.editors.ra.button-zoom-center": "뷰에 맞추기", "calc.editors.ra.toolbar.duplicate-elimination": "중복 제거", "calc.editors.ra.toolbar.duplicate-elimination-content": " ( A )\n
delta A", "calc.editors.ra.toolbar.projection": "\ud504\ub85c\uc81d\uc158", @@ -336,6 +340,10 @@ "calc.editors.ra.button-download-csv": "결과 (CSV)", "calc.editors.ra.button-download-jpg": "결과 (JPG)", "calc.editors.ra.button-download-query": "쿼리", + "calc.editors.ra.button-zoom-in": "줌인", + "calc.editors.ra.button-zoom-out": "줌아웃", + "calc.editors.ra.button-zoom-reset": "줌초기화", + "calc.editors.ra.button-zoom-center": "뷰에 맞추기", "calc.editors.ra.toolbar.duplicate-elimination": "중복 제거", "calc.editors.ra.toolbar.duplicate-elimination-content": " ( A )\n
delta A", "calc.editors.ra.toolbar.projection": "프로젝션", diff --git a/src/locales/kr.ts b/src/locales/kr.ts index f04c3da7..7bef710a 100644 --- a/src/locales/kr.ts +++ b/src/locales/kr.ts @@ -111,6 +111,10 @@ export const langKR = { 'calc.editors.ra.button-download-csv': '결과 (CSV)', 'calc.editors.ra.button-download-jpg': '결과 (JPG)', 'calc.editors.ra.button-download-query': '쿼리', + 'calc.editors.ra.button-zoom-in': '줌인', + 'calc.editors.ra.button-zoom-out': '줌아웃', + 'calc.editors.ra.button-zoom-reset': '줌리셋', + 'calc.editors.ra.button-zoom-center': '화면에 맞추기', 'calc.editors.ra.toolbar.duplicate-elimination': '중복 제거', 'calc.editors.ra.toolbar.duplicate-elimination-content[0]': ' ( A )', diff --git a/src/locales/pt.json b/src/locales/pt.json index 8e3b9483..f18a1612 100644 --- a/src/locales/pt.json +++ b/src/locales/pt.json @@ -116,6 +116,10 @@ "calc.editors.ra.button-download-csv": "Resultado (CSV)", "calc.editors.ra.button-download-jpg": "Resultado (JPG)", "calc.editors.ra.button-download-query": "Query", + "calc.editors.ra.button-zoom-in": "Aumentar zoom", + "calc.editors.ra.button-zoom-out": "Diminuir zoom", + "calc.editors.ra.button-zoom-reset": "Redefinir zoom", + "calc.editors.ra.button-zoom-center": "Ajustar \u00e0 visualiza\u00e7\u00e3o", "calc.editors.ra.toolbar.duplicate-elimination": "Elimina\u00e7\u00e3o de duplicatas", "calc.editors.ra.toolbar.duplicate-elimination-content": " ( A )\n
delta A", "calc.editors.ra.toolbar.projection": "Proje\u00e7\u00e3o", @@ -337,6 +341,10 @@ "calc.editors.ra.button-download-csv": "Resultado (CSV)", "calc.editors.ra.button-download-jpg": "Resultado (JPG)", "calc.editors.ra.button-download-query": "Query", + "calc.editors.ra.button-zoom-in": "Aumentar zoom", + "calc.editors.ra.button-zoom-out": "Diminuir zoom", + "calc.editors.ra.button-zoom-reset": "Redefinir zoom", + "calc.editors.ra.button-zoom-center": "Ajustar à visualização", "calc.editors.ra.toolbar.duplicate-elimination": "Eliminação de duplicatas", "calc.editors.ra.toolbar.duplicate-elimination-content": " ( A )\n
delta A", "calc.editors.ra.toolbar.projection": "Projeção", diff --git a/src/locales/pt.ts b/src/locales/pt.ts index b9f62873..7aa323f3 100644 --- a/src/locales/pt.ts +++ b/src/locales/pt.ts @@ -103,6 +103,10 @@ export const langPT = { 'calc.editors.ra.button-download': 'Download', 'calc.editors.ra.button-download-csv': 'Resultado', 'calc.editors.ra.button-download-query': 'Query', + 'calc.editors.ra.button-zoom-in': 'Aumentar zoom', + 'calc.editors.ra.button-zoom-out': 'Diminuir zoom', + 'calc.editors.ra.button-zoom-reset': 'Redefinir zoom', + 'calc.editors.ra.button-zoom-center': 'Alinhar à visualização', 'db.messages.parser.error-sql-group-by-missing': 'group by est\u00e1 faltando', 'db.messages.exec.error-could-not-compare-different-types': diff --git a/yarn.lock b/yarn.lock index 4e3f439f..16f141c5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30,10 +30,10 @@ dependencies: regenerator-runtime "^0.13.4" -"@fortawesome/fontawesome-common-types@^0.2.36": - version "0.2.36" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz#b44e52db3b6b20523e0c57ef8c42d315532cb903" - integrity sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg== +"@fortawesome/fontawesome-common-types@6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz#31ab07ca6a06358c5de4d295d4711b675006163f" + integrity sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw== "@fortawesome/fontawesome-common-types@^0.3.0": version "0.3.0" @@ -47,12 +47,12 @@ dependencies: "@fortawesome/fontawesome-common-types" "^0.3.0" -"@fortawesome/free-solid-svg-icons@^5.15.1": - version "5.15.4" - resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz#2a68f3fc3ddda12e52645654142b9e4e8fbb6cc5" - integrity sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w== +"@fortawesome/free-solid-svg-icons@^6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz#061751ca43be4c4d814f0adbda8f006164ec9f3b" + integrity sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA== dependencies: - "@fortawesome/fontawesome-common-types" "^0.2.36" + "@fortawesome/fontawesome-common-types" "6.6.0" "@fortawesome/react-fontawesome@^0.1.18": version "0.1.18" @@ -4808,6 +4808,11 @@ react-transition-group@^4, react-transition-group@^4.4.2: loose-envify "^1.4.0" prop-types "^15.6.2" +react-zoom-pan-pinch@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.6.1.tgz#fb68b879b66f029f1f89986810fc2e0ac34fa48a" + integrity sha512-SdPqdk7QDSV7u/WulkFOi+cnza8rEZ0XX4ZpeH7vx3UZEg7DoyuAy3MCmm+BWv/idPQL2Oe73VoC0EhfCN+sZQ== + react@18: version "18.1.0" resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890"