@vitrosoftware/common-ui-ts 1.1.97 → 1.1.99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/std/controls/action-handler/action-result-list.css +86 -0
- package/css/std/controls/action-handler/confirm-dialog.css +25 -0
- package/css/std/controls/action-handler/img/question.svg +39 -8
- package/css/std/controls/action-handler/img/save-blue.svg +5 -0
- package/css/std/controls/action-handler/result-dialog.css +124 -0
- package/css/std/controls/bottom-align-control-group/bottom-align-control-group.css +4 -0
- package/css/std/controls/button-cancel/button-cancel.css +12 -0
- package/css/std/controls/button-group/button-group.css +1 -0
- package/css/std/controls/checkbox/checkbox.css +4 -4
- package/css/std/controls/checkbox/img/checkbox-active.svg +4 -0
- package/css/std/controls/checkbox/img/checkbox-empty.svg +3 -0
- package/css/std/controls/criterion/criterion.css +1 -1
- package/css/std/controls/date-picker/date-picker.css +1 -4
- package/css/std/controls/dialog/dialog-content.css +12 -0
- package/css/std/controls/dialog/dialog-footer.css +52 -4
- package/css/std/controls/dialog/dialog-header.css +14 -17
- package/css/std/controls/dialog/dialog.css +45 -9
- package/css/std/controls/dialog/img/cancel-white.svg +9 -2
- package/css/std/controls/dialog/img/collapse-bottom-grey.svg +3 -0
- package/css/std/controls/dialog/img/collapse-up-grey.svg +3 -0
- package/css/std/controls/expand-collapse-button/expand-collapse-button.css +33 -0
- package/css/std/controls/expand-control-group/expand-control-group.css +1 -10
- package/css/std/controls/field-iterator/field-iterator.css +4 -0
- package/css/std/controls/file-version-select/file-version-select.css +8 -4
- package/css/std/controls/flex-box/flex-box.css +4 -0
- package/css/std/controls/header/header-nav-bar.css +8 -1
- package/css/std/controls/heading/heading.css +49 -0
- package/css/std/controls/input/input.css +2 -7
- package/css/std/controls/lookup-picker/lookup-picker.css +1 -4
- package/css/std/controls/main/main.css +2 -2
- package/css/std/controls/pdf-viewer/custom.css +25 -2
- package/css/std/controls/pdf-viewer/img/cancel-black.svg +3 -0
- package/css/std/controls/pdf-viewer/img/create-issue-black.svg +5 -0
- package/css/std/controls/pdf-viewer/img/delete-black.svg +11 -0
- package/css/std/controls/pdf-viewer/img/hide-measures.svg +16 -0
- package/css/std/controls/pdf-viewer/img/measures-area.svg +17 -0
- package/css/std/controls/pdf-viewer/img/measures-area_active.svg +17 -0
- package/css/std/controls/pdf-viewer/img/measures-line.svg +8 -0
- package/css/std/controls/pdf-viewer/img/measures-line_active.svg +8 -0
- package/css/std/controls/pdf-viewer/img/measures-settings.svg +4 -0
- package/css/std/controls/pdf-viewer/img/measures-settings_active.svg +4 -0
- package/css/std/controls/pdf-viewer/img/measures-toolbar.svg +15 -0
- package/css/std/controls/pdf-viewer/img/show-measures.svg +16 -0
- package/css/std/controls/pdf-viewer/measure.css +137 -0
- package/css/std/controls/pdf-viewer/pdf-viewer-index.css +2570 -236
- package/css/std/controls/pdf-viewer/pdf-viewer.css +124 -87
- package/css/std/controls/pdf-viewer/viewer.css +158 -147
- package/css/std/controls/product-title/product-title.css +1 -0
- package/css/std/controls/progress-bar/progress-bar.css +25 -0
- package/css/std/controls/scrollbar/scrollbar.css +2 -2
- package/css/std/controls/search/checkbox-list.css +3 -9
- package/css/std/controls/search/search.css +22 -0
- package/css/std/controls/{search/input.css → search-input/search-input.css} +25 -40
- package/css/std/controls/search-value-list/search-value-list.css +13 -0
- package/css/std/controls/sidebar/sidebar-item.css +9 -28
- package/css/std/controls/site-select/img/collapse-bottom-triangle.svg +3 -0
- package/css/std/controls/site-select/img/collapse-up-triangle.svg +3 -0
- package/css/std/controls/site-select/img/default-site-image.svg +7 -0
- package/css/std/controls/site-select/img/dropdown-menu-arrow.svg +1 -0
- package/css/std/controls/site-select/img/search-grey.svg +3 -0
- package/css/std/controls/site-select/img/search.svg +5 -0
- package/css/std/controls/site-select/site-item.css +52 -0
- package/css/std/controls/site-select/site-select.css +163 -0
- package/css/std/controls/slide-up-panel/slide-up-panel.css +39 -0
- package/css/std/controls/star-button/img/star-active.svg +3 -0
- package/css/std/controls/star-button/img/star.svg +3 -0
- package/css/std/controls/star-button/star-button.css +22 -0
- package/css/std/controls/system-exception-dialog/img/error.svg +40 -0
- package/css/std/controls/system-exception-dialog/system-exception-dialog.css +119 -0
- package/css/std/controls/time-picker/time-picker.css +1 -4
- package/css/std/controls/tree-view/tree-view.css +4 -0
- package/css/std/controls/uploader/uploader.css +1 -12
- package/css/std/controls/view/view.css +8 -1
- package/css/std/controls/view-part/view-part.css +0 -5
- package/css/third-party/jquery-contextMenu/jquery.contextMenu.min.css +1 -1
- package/dist/index.css +1117 -680
- package/dist/index.js +1579 -1237
- package/dist/index.js.map +1 -1
- package/dist/src/constants/KeyCode.d.ts +1 -0
- package/dist/src/controls/ActionHandler/ActionHandler.d.ts +15 -11
- package/dist/src/controls/ActionHandler/ActionHandlerConstants.d.ts +7 -28
- package/dist/src/controls/ActionHandler/ActionHandlerItem.d.ts +6 -0
- package/dist/src/controls/ActionHandler/ActionHandlerResult.d.ts +3 -0
- package/dist/src/controls/ActionHandler/ActionResultItem.d.ts +11 -0
- package/dist/src/controls/ActionHandler/ActionResultList.d.ts +9 -0
- package/dist/src/controls/ActionHandler/ConfirmDialog.d.ts +11 -0
- package/dist/src/controls/ActionHandler/ResultDialog.d.ts +17 -0
- package/dist/src/controls/BottomAlignControlGroup/BottomAlignControlGroup.d.ts +6 -0
- package/dist/src/controls/ButtonCancel/ButtonCancel.d.ts +3 -0
- package/dist/src/controls/ButtonGroup/ButtonGroup.d.ts +1 -0
- package/dist/src/controls/Checkbox/Checkbox.d.ts +4 -3
- package/dist/src/controls/Checkbox/CheckboxRef.d.ts +4 -0
- package/dist/src/controls/Dialog/Dialog.d.ts +7 -3
- package/dist/src/controls/Dialog/DialogComponent.d.ts +1 -0
- package/dist/src/controls/Dialog/DialogConstants.d.ts +3 -1
- package/dist/src/controls/Dialog/DialogDetailExpandButton.d.ts +6 -0
- package/dist/src/controls/Dialog/DialogFooter.d.ts +5 -3
- package/dist/src/controls/Dialog/DialogHeader.d.ts +4 -2
- package/dist/src/controls/ExpandCollapseButton/ExpandCollapseButton.d.ts +12 -0
- package/dist/src/controls/FlexBox/FlexBox.d.ts +7 -0
- package/dist/src/controls/Heading/Heading.d.ts +11 -0
- package/dist/src/controls/Heading/HeadingConstants.d.ts +7 -0
- package/dist/src/controls/Input/Input.d.ts +2 -1
- package/dist/src/controls/Input/InputRef.d.ts +5 -0
- package/dist/src/controls/ProgressBar/ProgressBar.d.ts +7 -0
- package/dist/src/controls/ScrollBar/ScrollBar.d.ts +1 -0
- package/dist/src/controls/Search/CheckboxList.d.ts +1 -1
- package/dist/src/controls/SearchInput/SearchInput.d.ts +19 -0
- package/dist/src/controls/SearchInput/SearchInputConstants.d.ts +4 -0
- package/dist/src/controls/SearchValueList/SearchValueList.d.ts +13 -0
- package/dist/src/controls/SearchValueList/SearchValueListConstants.d.ts +3 -0
- package/dist/src/controls/SiteSelect/SiteItem.d.ts +13 -0
- package/dist/src/controls/SiteSelect/SiteSelect.d.ts +12 -0
- package/dist/src/controls/SlideUpPanel/SlideUpPanel.d.ts +10 -0
- package/dist/src/controls/StarButton/StarButton.d.ts +8 -0
- package/dist/src/controls/SystemExceptionDialog/SystemExceptionDialog.d.ts +11 -0
- package/dist/src/controls/SystemExceptionDialog/SystemExceptionDialogConstants.d.ts +11 -0
- package/dist/src/controls/SystemExceptionDialog/SystemExceptionDialogData.d.ts +7 -0
- package/dist/src/controls/TelerikUploader/TelerikUploaderContextImpl.d.ts +2 -1
- package/dist/src/controls/TelerikUploader/TelerikUploaderSettings.d.ts +4 -1
- package/dist/src/controls/UpdatingPopover/UpdatingPopover.d.ts +2 -0
- package/dist/src/index.d.ts +29 -2
- package/lib/screen.dpi.detector/screen.dpi.detector.js +92 -0
- package/lib/third-party.js +92 -0
- package/package.json +1 -1
- package/src/controls/BimViewer/js/bim-viewer.js +2 -2
- package/src/controls/PdfViewer/js/pdf-viewer.js +1104 -58
- package/css/std/controls/action-handler/action-handler-info.css +0 -99
- package/css/std/controls/action-handler/action-handler.css +0 -265
- package/css/std/controls/action-handler/img/cancel-red-big.svg +0 -5
- package/css/std/controls/action-handler/img/progress.svg +0 -1
- package/css/std/controls/action-handler/img/warning.svg +0 -10
- package/css/std/controls/checkbox/img/checkbox-big-active.svg +0 -4
- package/css/std/controls/checkbox/img/checkbox-big-empty.svg +0 -5
- package/css/std/controls/dialog/dialog-button-close.css +0 -34
- package/css/std/controls/dialog/dialog-button.css +0 -7
- package/css/std/controls/expand-control-group/img/collapse-bottom.svg +0 -5
- package/css/std/controls/expand-control-group/img/collapse-up.svg +0 -3
- package/css/std/controls/pdf-viewer/img/delete-active.svg +0 -11
- package/css/std/controls/pdf-viewer/img/delete.svg +0 -11
- /package/css/std/controls/{action-handler → expand-collapse-button}/img/collapse-bottom.svg +0 -0
- /package/css/std/controls/{action-handler → expand-collapse-button}/img/collapse-up.svg +0 -0
- /package/css/std/controls/{search → search-input}/img/cancel-black.svg +0 -0
- /package/css/std/controls/{search → search-input}/img/cancel-dark-grey.svg +0 -0
- /package/css/std/controls/{search → search-input}/img/search.svg +0 -0
|
@@ -602,30 +602,37 @@ const PDFViewerApplication = {
|
|
|
602
602
|
get initializedPromise() {
|
|
603
603
|
return this._initializedCapability.promise;
|
|
604
604
|
},
|
|
605
|
-
|
|
605
|
+
// @TODO.SA - changed
|
|
606
|
+
//zoomIn(steps, scaleFactor) {
|
|
607
|
+
zoomIn(steps, scaleFactor, isMouseEvt) {
|
|
606
608
|
if (this.pdfViewer.isInPresentationMode) {
|
|
607
609
|
return;
|
|
608
610
|
}
|
|
609
611
|
this.pdfViewer.increaseScale({
|
|
610
612
|
drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"),
|
|
611
613
|
steps,
|
|
612
|
-
scaleFactor
|
|
614
|
+
scaleFactor,
|
|
615
|
+
isMouseEvt // @TODO.SA - changed. Fix Zoom - mouse
|
|
613
616
|
});
|
|
614
617
|
},
|
|
615
|
-
|
|
618
|
+
// @TODO.SA - changed
|
|
619
|
+
//zoomOut(steps, scaleFactor) {
|
|
620
|
+
zoomOut(steps, scaleFactor, isMouseEvt) {
|
|
616
621
|
if (this.pdfViewer.isInPresentationMode) {
|
|
617
622
|
return;
|
|
618
623
|
}
|
|
619
624
|
this.pdfViewer.decreaseScale({
|
|
620
625
|
drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"),
|
|
621
626
|
steps,
|
|
622
|
-
scaleFactor
|
|
627
|
+
scaleFactor,
|
|
628
|
+
isMouseEvt // @TODO.SA - changed. Fix Zoom - mouse
|
|
623
629
|
});
|
|
624
630
|
},
|
|
625
631
|
zoomReset() {
|
|
626
632
|
if (this.pdfViewer.isInPresentationMode) {
|
|
627
633
|
return;
|
|
628
634
|
}
|
|
635
|
+
$(document).trigger('zoomResetStart'); // @TODO.SA - changed
|
|
629
636
|
this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
|
|
630
637
|
},
|
|
631
638
|
get pagesCount() {
|
|
@@ -2000,7 +2007,7 @@ function webViewerWheel(evt) {
|
|
|
2000
2007
|
const isPinchToZoom = evt.ctrlKey && !PDFViewerApplication._isCtrlKeyDown && deltaMode === WheelEvent.DOM_DELTA_PIXEL && evt.deltaX === 0 && (Math.abs(scaleFactor - 1) < 0.05 || isBuiltInMac) && evt.deltaZ === 0;
|
|
2001
2008
|
/* @TODO.SA - fix Zoom */
|
|
2002
2009
|
if (isPinchToZoom || evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey || evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey) {
|
|
2003
|
-
|
|
2010
|
+
hidePageZoomCanvas();
|
|
2004
2011
|
hideNotesLayer();
|
|
2005
2012
|
/* *** */
|
|
2006
2013
|
evt.preventDefault();
|
|
@@ -2021,7 +2028,7 @@ function webViewerWheel(evt) {
|
|
|
2021
2028
|
/* *** */
|
|
2022
2029
|
PDFViewerApplication.zoomIn(null, scaleFactor);
|
|
2023
2030
|
} else {
|
|
2024
|
-
/* @TODO.SA - zoom
|
|
2031
|
+
/* @TODO.SA - zoom */
|
|
2025
2032
|
showPageZoomCanvas();
|
|
2026
2033
|
showNotesLayer();
|
|
2027
2034
|
/* *** */
|
|
@@ -2044,12 +2051,14 @@ function webViewerWheel(evt) {
|
|
|
2044
2051
|
/* @TODO.SA - fix Zoom Scale factor */
|
|
2045
2052
|
ticks = -1;
|
|
2046
2053
|
/* *** */
|
|
2047
|
-
PDFViewerApplication.zoomOut(-ticks);
|
|
2054
|
+
//PDFViewerApplication.zoomOut(-ticks);
|
|
2055
|
+
PDFViewerApplication.zoomOut(-ticks, null, true);
|
|
2048
2056
|
} else if (ticks > 0) {
|
|
2049
2057
|
/* @TODO.SA - fix Zoom Scale factor */
|
|
2050
2058
|
ticks = 1;
|
|
2051
2059
|
/* *** */
|
|
2052
|
-
PDFViewerApplication.zoomIn(ticks);
|
|
2060
|
+
//PDFViewerApplication.zoomIn(ticks);
|
|
2061
|
+
PDFViewerApplication.zoomIn(ticks, null, true);
|
|
2053
2062
|
} else {
|
|
2054
2063
|
/* @TODO.SA - zoom without Ctrl-key */
|
|
2055
2064
|
showPageZoomCanvas();
|
|
@@ -3213,7 +3222,7 @@ const defaultOptions = {
|
|
|
3213
3222
|
kind: OptionKind.WORKER
|
|
3214
3223
|
},
|
|
3215
3224
|
workerSrc: {
|
|
3216
|
-
value: "resource/pdfViewer/js/pdf.worker.js?version=1.1.
|
|
3225
|
+
value: "resource/pdfViewer/js/pdf.worker.js?version=1.1.99",
|
|
3217
3226
|
kind: OptionKind.WORKER
|
|
3218
3227
|
}
|
|
3219
3228
|
};
|
|
@@ -9094,6 +9103,12 @@ class PDFViewer {
|
|
|
9094
9103
|
return 1;
|
|
9095
9104
|
}
|
|
9096
9105
|
#setScale(value, options) {
|
|
9106
|
+
// @TODO.SA - changed
|
|
9107
|
+
if(this._currentScale != value) {
|
|
9108
|
+
$(document).trigger('setScaleStart');
|
|
9109
|
+
}
|
|
9110
|
+
//
|
|
9111
|
+
|
|
9097
9112
|
let scale = parseFloat(value);
|
|
9098
9113
|
if (scale > 0) {
|
|
9099
9114
|
options.preset = false;
|
|
@@ -9688,7 +9703,9 @@ class PDFViewer {
|
|
|
9688
9703
|
increaseScale({
|
|
9689
9704
|
drawingDelay,
|
|
9690
9705
|
scaleFactor,
|
|
9691
|
-
steps
|
|
9706
|
+
steps,
|
|
9707
|
+
// @TODO.SA - changed
|
|
9708
|
+
isMouseEvt
|
|
9692
9709
|
} = {}) {
|
|
9693
9710
|
if (!this.pdfDocument) {
|
|
9694
9711
|
return;
|
|
@@ -9699,9 +9716,12 @@ class PDFViewer {
|
|
|
9699
9716
|
} else {
|
|
9700
9717
|
steps ??= 1;
|
|
9701
9718
|
do {
|
|
9702
|
-
|
|
9703
|
-
|
|
9704
|
-
|
|
9719
|
+
/* @TODO.SA - fix Zoom Scale factor */
|
|
9720
|
+
if(isMouseEvt) {
|
|
9721
|
+
newScale = Math.round((newScale+getZoomOutScaleFactor()).toFixed(2) * 100) / 100;
|
|
9722
|
+
} else {
|
|
9723
|
+
newScale = Math.ceil((newScale * _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2) * 10) / 10;
|
|
9724
|
+
}
|
|
9705
9725
|
/* *** */
|
|
9706
9726
|
} while (--steps > 0 && newScale < _ui_utils.MAX_SCALE);
|
|
9707
9727
|
}
|
|
@@ -9713,7 +9733,9 @@ class PDFViewer {
|
|
|
9713
9733
|
decreaseScale({
|
|
9714
9734
|
drawingDelay,
|
|
9715
9735
|
scaleFactor,
|
|
9716
|
-
steps
|
|
9736
|
+
steps,
|
|
9737
|
+
// @TODO.SA - changed
|
|
9738
|
+
isMouseEvt
|
|
9717
9739
|
} = {}) {
|
|
9718
9740
|
if (!this.pdfDocument) {
|
|
9719
9741
|
return;
|
|
@@ -9724,9 +9746,12 @@ class PDFViewer {
|
|
|
9724
9746
|
} else {
|
|
9725
9747
|
steps ??= 1;
|
|
9726
9748
|
do {
|
|
9727
|
-
|
|
9728
|
-
|
|
9729
|
-
|
|
9749
|
+
/* @TODO.SA - fix Zoom Scale factor */
|
|
9750
|
+
if(isMouseEvt) {
|
|
9751
|
+
newScale = Math.round((newScale-getZoomOutScaleFactor()).toFixed(2) * 100) / 100;
|
|
9752
|
+
} else {
|
|
9753
|
+
newScale = Math.floor((newScale / _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2) * 10) / 10;
|
|
9754
|
+
}
|
|
9730
9755
|
/* *** */
|
|
9731
9756
|
} while (--steps > 0 && newScale > _ui_utils.MIN_SCALE);
|
|
9732
9757
|
}
|
|
@@ -12072,7 +12097,7 @@ class Toolbar {
|
|
|
12072
12097
|
});
|
|
12073
12098
|
});
|
|
12074
12099
|
scaleSelect.addEventListener("change", function (e) {
|
|
12075
|
-
|
|
12100
|
+
if (e.detail.value === "custom") {
|
|
12076
12101
|
return;
|
|
12077
12102
|
}
|
|
12078
12103
|
self.eventBus.dispatch("scalechanged", {
|
|
@@ -13899,6 +13924,7 @@ function initContextMenuCanvas() {
|
|
|
13899
13924
|
var pages = '#viewer .page';
|
|
13900
13925
|
$.contextMenu({
|
|
13901
13926
|
selector: pages,
|
|
13927
|
+
trigger: 'right',
|
|
13902
13928
|
items: {
|
|
13903
13929
|
"addNote": {
|
|
13904
13930
|
name: "Add Note",
|
|
@@ -13917,11 +13943,15 @@ function initContextMenuCanvas() {
|
|
|
13917
13943
|
}
|
|
13918
13944
|
},
|
|
13919
13945
|
build: function($triggerElement, e){
|
|
13920
|
-
|
|
13921
|
-
|
|
13922
|
-
|
|
13923
|
-
|
|
13924
|
-
|
|
13946
|
+
if($('.svgsketch-wrap').hasClass('measures')) {
|
|
13947
|
+
return false;
|
|
13948
|
+
} else {
|
|
13949
|
+
return {
|
|
13950
|
+
callback: function(key, options){
|
|
13951
|
+
$(document).trigger(key, [options, $triggerElement, e]);
|
|
13952
|
+
}
|
|
13953
|
+
};
|
|
13954
|
+
}
|
|
13925
13955
|
}
|
|
13926
13956
|
});
|
|
13927
13957
|
}
|
|
@@ -14694,6 +14724,9 @@ function normalizeNoteLabel270dg(pos, pageH) {
|
|
|
14694
14724
|
}
|
|
14695
14725
|
|
|
14696
14726
|
|
|
14727
|
+
var label_deleteMeasure = "Delete Measure";
|
|
14728
|
+
var label_cancel = "Cancel";
|
|
14729
|
+
|
|
14697
14730
|
/* *** Sketchpad *** */
|
|
14698
14731
|
var fillVal = 'none';
|
|
14699
14732
|
var strokeColorVal = 'yellowgreen';
|
|
@@ -14707,25 +14740,342 @@ var offset = null;
|
|
|
14707
14740
|
|
|
14708
14741
|
var isSketchpadActive = false;
|
|
14709
14742
|
|
|
14743
|
+
var measuresNodes = {};
|
|
14744
|
+
var isSketchpadMeasureActive = false;
|
|
14745
|
+
var measureStrokeColorVal = 'red';
|
|
14746
|
+
var measureStrokeWidthVal = 3;
|
|
14747
|
+
var measureFillVal = 'none';
|
|
14748
|
+
var measureBlockStrokeColorVal = 'blue'; // TODO
|
|
14749
|
+
var measureBlockStrokeWidthVal = 3; // TODO
|
|
14750
|
+
var measureFontSize = 16;
|
|
14751
|
+
var measureFontFamily = 'Arial';
|
|
14752
|
+
var measureOutlineText = null;
|
|
14753
|
+
var measureOutlineTextBg = null;
|
|
14754
|
+
var measurePrecision = 0; // decimal symbols. TODO - calibration!
|
|
14755
|
+
var measureUnit = 'mm'; // TODO - calibration!
|
|
14756
|
+
var measurePxScale = 1; // TODO - calibration!
|
|
14757
|
+
var measureLast = null;
|
|
14758
|
+
|
|
14710
14759
|
var arrowMarkerAngle = 45;
|
|
14711
14760
|
var arrowMarkerSize = 30;
|
|
14712
14761
|
|
|
14713
14762
|
function initSketchpadCanvasByPageNr(pageNr) {
|
|
14714
14763
|
$('#svgsketch-'+pageNr).svg({onLoad: function(svg) {
|
|
14715
|
-
|
|
14716
|
-
|
|
14717
|
-
|
|
14718
|
-
|
|
14719
|
-
|
|
14720
|
-
|
|
14721
|
-
|
|
14722
|
-
|
|
14723
|
-
|
|
14724
|
-
|
|
14764
|
+
sketchpad[pageNr] = svg;
|
|
14765
|
+
var surface = svg.rect(0, 0, '100%', '100%', {id: 'surface-'+pageNr, fill: 'transparent'});
|
|
14766
|
+
|
|
14767
|
+
createMeasureLineMarker(pageNr);
|
|
14768
|
+
createMeasureTxtFilterBg(pageNr);
|
|
14769
|
+
|
|
14770
|
+
$(surface).mousedown(function(eMousedown) {
|
|
14771
|
+
sketchpadCanvasMousedownHandler(eMousedown, pageNr);
|
|
14772
|
+
}).mousemove(function(eMousemove) {
|
|
14773
|
+
sketchpadCanvasMousemoveHandler(eMousemove, pageNr)
|
|
14774
|
+
}).mouseup(function(eMouseup) {
|
|
14775
|
+
sketchpadCanvasMouseupHandler(eMouseup, pageNr);
|
|
14776
|
+
});
|
|
14777
|
+
|
|
14778
|
+
resetSize(svg, '100%', '100%');
|
|
14725
14779
|
}
|
|
14726
14780
|
});
|
|
14727
14781
|
}
|
|
14728
14782
|
|
|
14783
|
+
function sketchpadCanvasMouseupHandler(eMouseup, pageNr) {
|
|
14784
|
+
if(isSketchpadActive) {
|
|
14785
|
+
endDrag(eMouseup, pageNr);
|
|
14786
|
+
} else if(isSketchpadMeasureActive) {
|
|
14787
|
+
endDragMeasure(eMouseup, pageNr);
|
|
14788
|
+
}
|
|
14789
|
+
}
|
|
14790
|
+
|
|
14791
|
+
function sketchpadCanvasMousemoveHandler(eMousemove, pageNr) {
|
|
14792
|
+
if(isSketchpadActive) {
|
|
14793
|
+
dragging(eMousemove, pageNr);
|
|
14794
|
+
} else if(isSketchpadMeasureActive) {
|
|
14795
|
+
draggingMeasure(eMousemove, pageNr);
|
|
14796
|
+
}
|
|
14797
|
+
}
|
|
14798
|
+
|
|
14799
|
+
function sketchpadCanvasMousedownHandler(eMousedown, pageNr) {
|
|
14800
|
+
if(isSketchpadActive) {
|
|
14801
|
+
startDrag(eMousedown, pageNr);
|
|
14802
|
+
} else if(isSketchpadMeasureActive) {
|
|
14803
|
+
startDragMeasure(eMousedown, pageNr);
|
|
14804
|
+
}
|
|
14805
|
+
}
|
|
14806
|
+
|
|
14807
|
+
function startDragMeasure(event, pageNr) {
|
|
14808
|
+
startDrag(event, pageNr);
|
|
14809
|
+
}
|
|
14810
|
+
|
|
14811
|
+
function isMeasureLine() {
|
|
14812
|
+
return $('#btnMeasureLine').hasClass('active');
|
|
14813
|
+
}
|
|
14814
|
+
|
|
14815
|
+
function isMeasureArea() {
|
|
14816
|
+
return $('#btnMeasureArea').hasClass('active');
|
|
14817
|
+
}
|
|
14818
|
+
|
|
14819
|
+
function getOutlineMeasureSettings() {
|
|
14820
|
+
var settings = {
|
|
14821
|
+
fill: measureFillVal,
|
|
14822
|
+
stroke: measureStrokeColorVal,
|
|
14823
|
+
strokeWidth: measureStrokeWidthVal,
|
|
14824
|
+
id: 'tmpOutlineMeasure'
|
|
14825
|
+
};
|
|
14826
|
+
|
|
14827
|
+
return settings;
|
|
14828
|
+
}
|
|
14829
|
+
|
|
14830
|
+
function getMeasureTextSettings() {
|
|
14831
|
+
var settings = {
|
|
14832
|
+
fontFamily: measureFontFamily,
|
|
14833
|
+
fontSize: measureFontSize,
|
|
14834
|
+
fill: measureStrokeColorVal,
|
|
14835
|
+
id: 'tmpOutlineMeasureTxt',
|
|
14836
|
+
'font-weight': 'bold',
|
|
14837
|
+
'text-anchor': 'middle'
|
|
14838
|
+
};
|
|
14839
|
+
|
|
14840
|
+
return settings;
|
|
14841
|
+
}
|
|
14842
|
+
|
|
14843
|
+
function getMeasureLineMarkerSettings() {
|
|
14844
|
+
var settings = {
|
|
14845
|
+
fill: measureFillVal,
|
|
14846
|
+
stroke: measureStrokeColorVal
|
|
14847
|
+
};
|
|
14848
|
+
|
|
14849
|
+
return settings;
|
|
14850
|
+
}
|
|
14851
|
+
|
|
14852
|
+
function createMeasureLineMarker(pageNr) {
|
|
14853
|
+
var measureLineMarkerStart = sketchpad[pageNr].marker('measureLineMarker'+pageNr, 2, 2, 4, 4, 'auto', getMeasureLineMarkerSettings());
|
|
14854
|
+
sketchpad[pageNr].path(measureLineMarkerStart, 'M 2 0 L 2 4 M 0 4 L 4 0');
|
|
14855
|
+
}
|
|
14856
|
+
|
|
14857
|
+
function createMeasureTxtFilterBg(pageNr) {
|
|
14858
|
+
var defs = sketchpad[pageNr].defs();
|
|
14859
|
+
var filter = sketchpad[pageNr].filter(defs, 'txtFilterBg', 0, 0, 1, 1);
|
|
14860
|
+
var filterHtml = '<feFlood flood-color="rgba(255,255,255, 0.85)" result="bg" />' +
|
|
14861
|
+
' <feMerge>' +
|
|
14862
|
+
' <feMergeNode in="bg"/>' +
|
|
14863
|
+
' <feMergeNode in="SourceGraphic"/>' +
|
|
14864
|
+
' </feMerge>';
|
|
14865
|
+
$(filter).html(filterHtml);
|
|
14866
|
+
}
|
|
14867
|
+
|
|
14868
|
+
function draggingMeasure(event, pageNr) {
|
|
14869
|
+
if (!drawStart) {
|
|
14870
|
+
return;
|
|
14871
|
+
}
|
|
14872
|
+
|
|
14873
|
+
if (!outline) {
|
|
14874
|
+
var outlineSettings = getOutlineMeasureSettings();
|
|
14875
|
+
var outlineTextSettings = getMeasureTextSettings();
|
|
14876
|
+
outlineTextSettings.style = 'pointer-events: none; user-select: none;';
|
|
14877
|
+
outlineTextSettings.filter = 'url(#txtFilterBg)';
|
|
14878
|
+
|
|
14879
|
+
if(isMeasureLine()) {
|
|
14880
|
+
// TODO: Path? - connectors for edit mode
|
|
14881
|
+
// Measure Line
|
|
14882
|
+
outlineSettings.markerStart = 'url(#measureLineMarker'+pageNr+')';
|
|
14883
|
+
outlineSettings.markerEnd = 'url(#measureLineMarker'+pageNr+')';
|
|
14884
|
+
outline = sketchpad[pageNr].line(0, 0, 0, 0, outlineSettings);
|
|
14885
|
+
// Measure Text
|
|
14886
|
+
measureOutlineText = sketchpad[pageNr].text(0, 0, '', outlineTextSettings);
|
|
14887
|
+
} else if(isMeasureArea()) {
|
|
14888
|
+
outline = sketchpad[pageNr].rect(0, 0, 0, 0, outlineSettings);
|
|
14889
|
+
measureOutlineText = sketchpad[pageNr].text('', outlineTextSettings);
|
|
14890
|
+
}
|
|
14891
|
+
|
|
14892
|
+
$(outline).mouseup(function(e) {
|
|
14893
|
+
endDragMeasure(e, pageNr);
|
|
14894
|
+
});
|
|
14895
|
+
}
|
|
14896
|
+
|
|
14897
|
+
var otlineMeasureLabel;
|
|
14898
|
+
var textWidth;
|
|
14899
|
+
var textHeight;
|
|
14900
|
+
|
|
14901
|
+
if(isMeasureLine()) {
|
|
14902
|
+
sketchpad[pageNr].change(outline, {
|
|
14903
|
+
x1: drawStart.X,
|
|
14904
|
+
y1: drawStart.Y,
|
|
14905
|
+
x2: (event.clientX - offset.left),
|
|
14906
|
+
y2: (event.clientY - offset.top)
|
|
14907
|
+
});
|
|
14908
|
+
|
|
14909
|
+
otlineMeasureLabel = getMeasureLineLabelByCoords(event.clientX, event.clientY);
|
|
14910
|
+
$(sketchpad[pageNr].getElementById('tmpOutlineMeasureTxt')).html(otlineMeasureLabel);
|
|
14911
|
+
|
|
14912
|
+
textWidth = measureOutlineText.getBBox().width;
|
|
14913
|
+
textHeight = measureOutlineText.getBBox().height;
|
|
14914
|
+
|
|
14915
|
+
textX = (drawStart.X + event.clientX - offset.left)/2;
|
|
14916
|
+
textY = (drawStart.Y + event.clientY - offset.top)/2 + getMeasureLineTxtShiftY(drawStart.Y, event.clientY-offset.top);
|
|
14917
|
+
|
|
14918
|
+
} else if(isMeasureArea()) {
|
|
14919
|
+
var outlineWidth = Math.abs(event.clientX - offset.left - drawStart.X);
|
|
14920
|
+
var outlineHeight = Math.abs(event.clientY - offset.top - drawStart.Y);
|
|
14921
|
+
|
|
14922
|
+
sketchpad[pageNr].change(outline, {
|
|
14923
|
+
x: Math.min(event.clientX - offset.left, drawStart.X),
|
|
14924
|
+
y: Math.min(event.clientY - offset.top, drawStart.Y),
|
|
14925
|
+
width: outlineWidth,
|
|
14926
|
+
height: outlineHeight
|
|
14927
|
+
});
|
|
14928
|
+
|
|
14929
|
+
otlineMeasureLabel = getMeasureAreaLabelBySize(outlineWidth, outlineHeight);
|
|
14930
|
+
$(sketchpad[pageNr].getElementById('tmpOutlineMeasureTxt')).html(otlineMeasureLabel);
|
|
14931
|
+
|
|
14932
|
+
textWidth = measureOutlineText.getBBox().width;
|
|
14933
|
+
textHeight = measureOutlineText.getBBox().height;
|
|
14934
|
+
|
|
14935
|
+
textX = (drawStart.X + event.clientX - offset.left)/2;
|
|
14936
|
+
if(textWidth+10 > outlineWidth || textHeight+10 > outlineHeight) {
|
|
14937
|
+
textY = Math.min(event.clientY - offset.top, drawStart.Y) - 10;
|
|
14938
|
+
} else {
|
|
14939
|
+
textY = (drawStart.Y + event.clientY - offset.top)/2 + 5;
|
|
14940
|
+
}
|
|
14941
|
+
}
|
|
14942
|
+
|
|
14943
|
+
sketchpad[pageNr].change(measureOutlineText, {x:textX, y:textY});
|
|
14944
|
+
|
|
14945
|
+
if(isMeasureLine()) {
|
|
14946
|
+
setMeasureLast(textX, textY, textWidth, textHeight, otlineMeasureLabel, getMeasureLinePxVal(event.clientX, event.clientY), 'line');
|
|
14947
|
+
} else if(isMeasureArea()) {
|
|
14948
|
+
setMeasureLast(textX, textY, textWidth, textHeight, otlineMeasureLabel, getMeasureAreaPxVal(outlineWidth, outlineHeight), 'rect');
|
|
14949
|
+
}
|
|
14950
|
+
|
|
14951
|
+
event.preventDefault();
|
|
14952
|
+
}
|
|
14953
|
+
|
|
14954
|
+
function getMeasureAreaLabelBySize(width, height) {
|
|
14955
|
+
var measureVal = getMeasureAreaPxVal(width, height);
|
|
14956
|
+
measureVal = getMeasureValSq(measureVal);
|
|
14957
|
+
var measureLabel = getMeasureAreaLabel(measureVal);
|
|
14958
|
+
return measureLabel;
|
|
14959
|
+
}
|
|
14960
|
+
|
|
14961
|
+
function getMeasureAreaPxVal(width, height) {
|
|
14962
|
+
var areaVal = (width*height)/Math.pow(getPdfCanvasScale(), 2);
|
|
14963
|
+
return areaVal;
|
|
14964
|
+
}
|
|
14965
|
+
|
|
14966
|
+
function setMeasureLast(textX, textY, textW, textH, otlineMeasureLabel, pxVal, measureType) {
|
|
14967
|
+
measureLast = {
|
|
14968
|
+
txt: {
|
|
14969
|
+
x: textX,
|
|
14970
|
+
y: textY,
|
|
14971
|
+
label: otlineMeasureLabel,
|
|
14972
|
+
width: textW,
|
|
14973
|
+
height: textH
|
|
14974
|
+
},
|
|
14975
|
+
pxVal: pxVal,
|
|
14976
|
+
type: measureType
|
|
14977
|
+
};
|
|
14978
|
+
}
|
|
14979
|
+
|
|
14980
|
+
function getMeasureLineTxtShiftY(yStart, y) {
|
|
14981
|
+
if(Math.abs(y - yStart) > 10) {
|
|
14982
|
+
return 5;
|
|
14983
|
+
} else {
|
|
14984
|
+
return -10;
|
|
14985
|
+
}
|
|
14986
|
+
}
|
|
14987
|
+
|
|
14988
|
+
function getMeasureLineLabel(measureVal) {
|
|
14989
|
+
var measureTxtVal = ' <tspan class="measure-val-lbl">' + measureVal + '</tspan>' + ' <tspan class="measure-unit-lbl">' + measureUnit + '</tspan>';
|
|
14990
|
+
return measureTxtVal;
|
|
14991
|
+
}
|
|
14992
|
+
|
|
14993
|
+
function getMeasureAreaLabel(measureVal) {
|
|
14994
|
+
var measureTxtVal = ' <tspan class="measure-val-lbl">' + measureVal + '</tspan>'
|
|
14995
|
+
+ ' <tspan class="measure-unit-lbl">' + measureUnit + '<tspan font-size="'+(measureFontSize-4)+'" dy="-6">2</tspan></tspan>';
|
|
14996
|
+
return measureTxtVal;
|
|
14997
|
+
}
|
|
14998
|
+
|
|
14999
|
+
function getMeasureLineLabelByCoords(clientX, clientY) {
|
|
15000
|
+
var measureVal = getMeasureLinePxVal(clientX, clientY);
|
|
15001
|
+
measureVal = getMeasureVal(measureVal);
|
|
15002
|
+
var measureLabel = getMeasureLineLabel(measureVal);
|
|
15003
|
+
return measureLabel;
|
|
15004
|
+
}
|
|
15005
|
+
|
|
15006
|
+
function getMeasureLinePxVal(clientX, clientY) {
|
|
15007
|
+
var measureVal = Math.sqrt(Math.pow(Math.abs(clientX - offset.left - drawStart.X), 2) + Math.pow(Math.abs(clientY - offset.top - drawStart.Y), 2))/getPdfCanvasScale();
|
|
15008
|
+
return measureVal;
|
|
15009
|
+
}
|
|
15010
|
+
|
|
15011
|
+
function getMeasureValSqWithPxScale(measurePxVal) {
|
|
15012
|
+
var measureVal = measurePxVal*Math.pow(measurePxScale, 2);
|
|
15013
|
+
return measureVal;
|
|
15014
|
+
}
|
|
15015
|
+
|
|
15016
|
+
function getMeasureValWithPxScale(measurePxVal) {
|
|
15017
|
+
var measureVal = measurePxVal*measurePxScale;
|
|
15018
|
+
return measureVal;
|
|
15019
|
+
}
|
|
15020
|
+
|
|
15021
|
+
function getMeasureValWithPrecision(measureVal) {
|
|
15022
|
+
if(measurePrecision) {
|
|
15023
|
+
measureVal = measureVal.toFixed(measurePrecision);
|
|
15024
|
+
} else {
|
|
15025
|
+
measureVal = Math.round(measureVal);
|
|
15026
|
+
}
|
|
15027
|
+
|
|
15028
|
+
return measureVal;
|
|
15029
|
+
}
|
|
15030
|
+
|
|
15031
|
+
function getMeasureValSq(measurePxVal) {
|
|
15032
|
+
var measureVal = getMeasureValSqByPx(measurePxVal);
|
|
15033
|
+
measureVal = getMeasureValSqWithPxScale(measureVal);
|
|
15034
|
+
measureVal = getMeasureValWithPrecision(measureVal);
|
|
15035
|
+
return measureVal;
|
|
15036
|
+
}
|
|
15037
|
+
|
|
15038
|
+
function getMeasureVal(measurePxVal) {
|
|
15039
|
+
var measureVal = getMeasureValByPx(measurePxVal);
|
|
15040
|
+
measureVal = getMeasureValWithPxScale(measureVal);
|
|
15041
|
+
measureVal = getMeasureValWithPrecision(measureVal);
|
|
15042
|
+
return measureVal;
|
|
15043
|
+
}
|
|
15044
|
+
|
|
15045
|
+
function getMeasureType() {
|
|
15046
|
+
if(isMeasureArea()) {
|
|
15047
|
+
return 'rect';
|
|
15048
|
+
} else {
|
|
15049
|
+
return 'line';
|
|
15050
|
+
}
|
|
15051
|
+
}
|
|
15052
|
+
|
|
15053
|
+
function endDragMeasure(event, pageNr) {
|
|
15054
|
+
if (!drawStart) {
|
|
15055
|
+
return;
|
|
15056
|
+
}
|
|
15057
|
+
|
|
15058
|
+
removeMeasureOutlineItems();
|
|
15059
|
+
|
|
15060
|
+
if(measureLast?.pxVal > 0) {
|
|
15061
|
+
var shape = getMeasureType();
|
|
15062
|
+
drawMeasure(drawStart.X, drawStart.Y, event.clientX - offset.left, event.clientY - offset.top, pageNr, shape);
|
|
15063
|
+
}
|
|
15064
|
+
|
|
15065
|
+
drawStart = null;
|
|
15066
|
+
event.preventDefault();
|
|
15067
|
+
}
|
|
15068
|
+
|
|
15069
|
+
function removeMeasureOutlineItems() {
|
|
15070
|
+
$(measureOutlineText).remove();
|
|
15071
|
+
$(measureOutlineTextBg).remove();
|
|
15072
|
+
$(outline).remove();
|
|
15073
|
+
|
|
15074
|
+
outline = null;
|
|
15075
|
+
measureOutlineText = null;
|
|
15076
|
+
measureOutlineTextBg = null;
|
|
15077
|
+
}
|
|
15078
|
+
|
|
14729
15079
|
function resetSize(svg, width, height) {
|
|
14730
15080
|
svg.configure({width: width || $(svg._container).width(),
|
|
14731
15081
|
height: height || $(svg._container).height()});
|
|
@@ -14818,6 +15168,209 @@ function isShapeTypeArrow() {
|
|
|
14818
15168
|
return ($('#btnDrawArrow').length && $('#btnDrawArrow').hasClass('toggled'));
|
|
14819
15169
|
}
|
|
14820
15170
|
|
|
15171
|
+
function getMeasureGrpId() {
|
|
15172
|
+
// TODO
|
|
15173
|
+
var id = 'measure_'+Date.now();
|
|
15174
|
+
return id;
|
|
15175
|
+
}
|
|
15176
|
+
|
|
15177
|
+
function getMeasureShapeId(measureGrpId) {
|
|
15178
|
+
var id = measureGrpId + '_shape';
|
|
15179
|
+
return id;
|
|
15180
|
+
}
|
|
15181
|
+
|
|
15182
|
+
function getMeasureTxtId(measureGrpId) {
|
|
15183
|
+
var id = measureGrpId + '_txt';
|
|
15184
|
+
return id;
|
|
15185
|
+
}
|
|
15186
|
+
|
|
15187
|
+
function drawMeasure(x1, y1, x2, y2, pageNr, shape) {
|
|
15188
|
+
var left = Math.min(x1, x2);
|
|
15189
|
+
var top = Math.min(y1, y2);
|
|
15190
|
+
var right = Math.max(x1, x2);
|
|
15191
|
+
var bottom = Math.max(y1, y2);
|
|
15192
|
+
|
|
15193
|
+
var measureGrpId = getMeasureGrpId();
|
|
15194
|
+
var measureGrp = sketchpad[pageNr].group(measureGrpId);
|
|
15195
|
+
|
|
15196
|
+
var measureNode = null;
|
|
15197
|
+
var measureText = null;
|
|
15198
|
+
|
|
15199
|
+
var measureSettings = getOutlineMeasureSettings();
|
|
15200
|
+
measureSettings.id = getMeasureShapeId(measureGrpId);
|
|
15201
|
+
|
|
15202
|
+
var measureTextSettings = getMeasureTextSettings();
|
|
15203
|
+
measureTextSettings.id = getMeasureTxtId(measureGrpId);
|
|
15204
|
+
measureTextSettings.filter = 'url(#txtFilterBg)';
|
|
15205
|
+
|
|
15206
|
+
if (shape == 'rect') {
|
|
15207
|
+
measureNode = sketchpad[pageNr].rect(measureGrp, left, top, right - left, bottom - top, measureSettings);
|
|
15208
|
+
} else if (shape == 'line') {
|
|
15209
|
+
measureSettings.markerStart = 'url(#measureLineMarker'+pageNr+')';
|
|
15210
|
+
measureSettings.markerEnd = 'url(#measureLineMarker'+pageNr+')';
|
|
15211
|
+
measureNode = sketchpad[pageNr].line(measureGrp, x1, y1, x2, y2, measureSettings);
|
|
15212
|
+
}
|
|
15213
|
+
|
|
15214
|
+
//measureTextSettings.fontSize = measureTextSettings.fontSize*getPdfCanvasScale(); // ?
|
|
15215
|
+
measureText = sketchpad[pageNr].text(measureGrp, measureLast.txt.x, measureLast.txt.y, '', measureTextSettings);
|
|
15216
|
+
$(measureText).html(measureLast.txt.label);
|
|
15217
|
+
|
|
15218
|
+
// Bind context menu
|
|
15219
|
+
bindMeasureContextMenu(measureSettings.id);
|
|
15220
|
+
bindMeasureContextMenu(measureTextSettings.id);
|
|
15221
|
+
|
|
15222
|
+
var width = right - left;
|
|
15223
|
+
var height = bottom - top;
|
|
15224
|
+
var pagesRotation = getPdfPagesRotation();
|
|
15225
|
+
var direction = getDrawDirectionByPagesRotation(x1, y1, x2, y2, pagesRotation);
|
|
15226
|
+
|
|
15227
|
+
if(pagesRotation > 0) {
|
|
15228
|
+
var measureData = {
|
|
15229
|
+
pageNr: pageNr,
|
|
15230
|
+
position: {
|
|
15231
|
+
x: left,
|
|
15232
|
+
y: top
|
|
15233
|
+
},
|
|
15234
|
+
width: width,
|
|
15235
|
+
height: height
|
|
15236
|
+
};
|
|
15237
|
+
var measureSvgData = getNormalizedSvgData(measureData, pagesRotation);
|
|
15238
|
+
|
|
15239
|
+
var measureTxtSvgData = getMeasureTxtNormalizedSvgData(measureSvgData.position.x, measureSvgData.position.y, measureSvgData.width, measureSvgData.height,
|
|
15240
|
+
shape, measureLast.txt.width, measureLast.txt.height);
|
|
15241
|
+
setMeasure(pageNr, measureGrpId, measureGrp, measureSvgData.position.x, measureSvgData.position.y, measureSvgData.width, measureSvgData.height,
|
|
15242
|
+
shape, direction, measureLast.txt.label, {x:measureTxtSvgData.x, y:measureTxtSvgData.y, width:measureLast.txt.width, height: measureLast.txt.height},
|
|
15243
|
+
measureLast.pxVal);
|
|
15244
|
+
} else {
|
|
15245
|
+
setMeasure(pageNr, measureGrpId, measureGrp, left, top, width, height, shape, direction,
|
|
15246
|
+
measureLast.txt.label, {x:measureLast.txt.x, y:measureLast.txt.y, width:measureLast.txt.width, height: measureLast.txt.height},
|
|
15247
|
+
measureLast.pxVal);
|
|
15248
|
+
}
|
|
15249
|
+
|
|
15250
|
+
measureLast = null;
|
|
15251
|
+
|
|
15252
|
+
// TODO - save measure data to server
|
|
15253
|
+
saveMeasure(pageNr, measureGrpId);
|
|
15254
|
+
|
|
15255
|
+
$('#svgsketch-'+[pageNr]).focus();
|
|
15256
|
+
}
|
|
15257
|
+
|
|
15258
|
+
function getMeasureTxtNormalizedSvgData(measureX, measureY, measureW, measureH, measureType, txtW, txtH) {
|
|
15259
|
+
var textY;
|
|
15260
|
+
var textX = (2*measureX + measureW)/2;
|
|
15261
|
+
|
|
15262
|
+
if(measureType == 'line') {
|
|
15263
|
+
textY = (2*measureY + measureH)/2 + getMeasureLineTxtShiftY(measureY, measureY + measureH);
|
|
15264
|
+
} else if(measureType == 'rect') {
|
|
15265
|
+
if(txtW+10 > measureW || txtH+10 > measureH) {
|
|
15266
|
+
textY = measureY - 10;
|
|
15267
|
+
} else {
|
|
15268
|
+
textY = (2*measureY + measureH)/2 + 5;
|
|
15269
|
+
}
|
|
15270
|
+
}
|
|
15271
|
+
|
|
15272
|
+
var txtPosition = {
|
|
15273
|
+
x: textX,
|
|
15274
|
+
y: textY,
|
|
15275
|
+
width: txtW,
|
|
15276
|
+
height: txtH
|
|
15277
|
+
};
|
|
15278
|
+
|
|
15279
|
+
return txtPosition;
|
|
15280
|
+
}
|
|
15281
|
+
|
|
15282
|
+
// TODO - save measure data to server
|
|
15283
|
+
function saveMeasure(pageNr, measureGrpId) {
|
|
15284
|
+
// measuresNodes[pageNr][measureGrpId]
|
|
15285
|
+
}
|
|
15286
|
+
|
|
15287
|
+
function bindMeasureContextMenu(measureElmId) {
|
|
15288
|
+
$.contextMenu({
|
|
15289
|
+
selector: '.svgsketch-wrap.active.measures #'+measureElmId,
|
|
15290
|
+
trigger: 'left', // mouse button
|
|
15291
|
+
callback: function(key, options, e) {
|
|
15292
|
+
e.preventDefault();
|
|
15293
|
+
e.stopPropagation();
|
|
15294
|
+
$(document).trigger(key, [options.$trigger]);
|
|
15295
|
+
},
|
|
15296
|
+
items: {
|
|
15297
|
+
"deleteMeasure": {
|
|
15298
|
+
name: label_deleteMeasure,
|
|
15299
|
+
icon: 'delete'
|
|
15300
|
+
},
|
|
15301
|
+
"sep1": "---------",
|
|
15302
|
+
"quit": {
|
|
15303
|
+
name: label_cancel,
|
|
15304
|
+
icon: function(){
|
|
15305
|
+
return 'context-menu-icon context-menu-icon-quit';
|
|
15306
|
+
}
|
|
15307
|
+
}
|
|
15308
|
+
}
|
|
15309
|
+
});
|
|
15310
|
+
}
|
|
15311
|
+
|
|
15312
|
+
function bindDeleteMeasureEventHandler() {
|
|
15313
|
+
$(document).on('deleteMeasure', function(e, item) {
|
|
15314
|
+
var measureId = item.closest('g').attr('id');
|
|
15315
|
+
var pageNr = item.closest('.page').attr('data-page-number');
|
|
15316
|
+
|
|
15317
|
+
// TODO -> Ajax -> send data to server
|
|
15318
|
+
// ...
|
|
15319
|
+
// on success -> deleteMeasure
|
|
15320
|
+
deleteMeasure(measureId, pageNr);
|
|
15321
|
+
});
|
|
15322
|
+
}
|
|
15323
|
+
|
|
15324
|
+
function deleteMeasure(measureId, pageNr) {
|
|
15325
|
+
delete measuresNodes[pageNr][measureId];
|
|
15326
|
+
sketchpad[pageNr].getElementById(measureId).remove();
|
|
15327
|
+
}
|
|
15328
|
+
|
|
15329
|
+
function setMeasure(pageNr, measureGrpId, measureGrp, posX, posY, width, height, shapeType, direction, measureLabel, txtOptions, measurePxVal) {
|
|
15330
|
+
var scale = getPdfCanvasScale();
|
|
15331
|
+
if(!measuresNodes[pageNr]) {
|
|
15332
|
+
measuresNodes[pageNr] = {};
|
|
15333
|
+
}
|
|
15334
|
+
|
|
15335
|
+
measuresNodes[pageNr][measureGrpId] = {
|
|
15336
|
+
data: {
|
|
15337
|
+
id: measureGrpId,
|
|
15338
|
+
pageNr: pageNr,
|
|
15339
|
+
type: shapeType,
|
|
15340
|
+
position: {
|
|
15341
|
+
x: posX/scale,
|
|
15342
|
+
y: posY/scale,
|
|
15343
|
+
},
|
|
15344
|
+
direction: direction,
|
|
15345
|
+
width: width/scale,
|
|
15346
|
+
height: height/scale,
|
|
15347
|
+
stroke: {
|
|
15348
|
+
color: measureStrokeColorVal,
|
|
15349
|
+
width: measureStrokeWidthVal
|
|
15350
|
+
},
|
|
15351
|
+
fill: measureFillVal,
|
|
15352
|
+
measureLabel: {
|
|
15353
|
+
position: {
|
|
15354
|
+
x: txtOptions.x/scale,
|
|
15355
|
+
y: txtOptions.y/scale,
|
|
15356
|
+
},
|
|
15357
|
+
width: txtOptions.width,
|
|
15358
|
+
height: txtOptions.height,
|
|
15359
|
+
fontSize: measureFontSize,
|
|
15360
|
+
fontFamily: measureFontFamily,
|
|
15361
|
+
txt: measureLabel
|
|
15362
|
+
},
|
|
15363
|
+
measure: {
|
|
15364
|
+
pxVal: measurePxVal,
|
|
15365
|
+
pxScale: measurePxScale,
|
|
15366
|
+
unit: measureUnit,
|
|
15367
|
+
precision: measurePrecision
|
|
15368
|
+
}
|
|
15369
|
+
},
|
|
15370
|
+
nodeObj: measureGrp
|
|
15371
|
+
};
|
|
15372
|
+
}
|
|
15373
|
+
|
|
14821
15374
|
/* Draw the selected element on the canvas */
|
|
14822
15375
|
function drawShape(x1, y1, x2, y2, pageNr, shape) {
|
|
14823
15376
|
|
|
@@ -15196,6 +15749,68 @@ function loadSvgShape(svgData) {
|
|
|
15196
15749
|
|
|
15197
15750
|
setDrawNodes(svgData.pageNr, svgData.id, node, svgData.position.x, svgData.position.y, svgData.width, svgData.height, svgData.type, direction);
|
|
15198
15751
|
// }, 50);
|
|
15752
|
+
showNotesLayer();
|
|
15753
|
+
}
|
|
15754
|
+
}
|
|
15755
|
+
|
|
15756
|
+
|
|
15757
|
+
function loadMeasureShape(measure) {
|
|
15758
|
+
if(typeof measure === 'object' && measure !== null && measure !== false) {
|
|
15759
|
+
|
|
15760
|
+
var scale = getPdfCanvasScale();
|
|
15761
|
+
var pageNr = measure.data.pageNr;
|
|
15762
|
+
var shape = measure.data.type;
|
|
15763
|
+
var measureId = measure.data.id;
|
|
15764
|
+
var measureObj = $('#'+measureId);
|
|
15765
|
+
|
|
15766
|
+
var pagesRotation = getPdfPagesRotation();
|
|
15767
|
+
var nodeSvgData = measure.data;
|
|
15768
|
+
|
|
15769
|
+
if(pagesRotation > 0) {
|
|
15770
|
+
nodeSvgData = getSvgDataWithRotation(measure.data, pagesRotation, scale);
|
|
15771
|
+
}
|
|
15772
|
+
|
|
15773
|
+
if(measureObj.length) {
|
|
15774
|
+
sketchpad[pageNr].remove(measureObj);
|
|
15775
|
+
}
|
|
15776
|
+
|
|
15777
|
+
var x1 = nodeSvgData.position.x*scale;
|
|
15778
|
+
var x2 = x1 + nodeSvgData.width*scale;
|
|
15779
|
+
var y1 = nodeSvgData.position.y*scale;
|
|
15780
|
+
var y2 = y1 + nodeSvgData.height*scale;
|
|
15781
|
+
|
|
15782
|
+
var direction = ('direction' in measure.data) ? measure.data.direction : false;
|
|
15783
|
+
|
|
15784
|
+
var measureGrp = sketchpad[pageNr].group(measureId);
|
|
15785
|
+
|
|
15786
|
+
var measureNode = null;
|
|
15787
|
+
var measureText = null;
|
|
15788
|
+
|
|
15789
|
+
var measureSettings = getOutlineMeasureSettings();
|
|
15790
|
+
measureSettings.id = getMeasureShapeId(measureId);
|
|
15791
|
+
|
|
15792
|
+
var measureTextSettings = getMeasureTextSettings();
|
|
15793
|
+
measureTextSettings.id = getMeasureTxtId(measureId);
|
|
15794
|
+
measureTextSettings.filter = 'url(#txtFilterBg)';
|
|
15795
|
+
|
|
15796
|
+
if (shape == 'rect') {
|
|
15797
|
+
measureNode = sketchpad[pageNr].rect(measureGrp, x1, y1, nodeSvgData.width*scale, nodeSvgData.height*scale, measureSettings);
|
|
15798
|
+
} else if (shape == 'line') {
|
|
15799
|
+
measureSettings.markerStart = 'url(#measureLineMarker'+pageNr+')';
|
|
15800
|
+
measureSettings.markerEnd = 'url(#measureLineMarker'+pageNr+')';
|
|
15801
|
+
var linePos = getLinePosByPagesRotation(x1, y1, x2, y2, direction, pagesRotation);
|
|
15802
|
+
measureNode = sketchpad[pageNr].line(measureGrp, linePos[0], linePos[1], linePos[2], linePos[3], measureSettings);
|
|
15803
|
+
}
|
|
15804
|
+
|
|
15805
|
+
var measureTxtData = getMeasureTxtNormalizedSvgData(x1, y1, nodeSvgData.width*scale, nodeSvgData.height*scale,
|
|
15806
|
+
shape, measure.data.measureLabel.width, measure.data.measureLabel.height);
|
|
15807
|
+
|
|
15808
|
+
//measureTextSettings.fontSize = measureTextSettings.fontSize*getPdfCanvasScale(); // ?
|
|
15809
|
+
measureText = sketchpad[pageNr].text(measureGrp, measureTxtData.x, measureTxtData.y, '', measureTextSettings);
|
|
15810
|
+
|
|
15811
|
+
$(measureText).html(nodeSvgData.measureLabel.txt);
|
|
15812
|
+
|
|
15813
|
+
measuresNodes[pageNr][measureId].nodeObj = measureGrp;
|
|
15199
15814
|
}
|
|
15200
15815
|
}
|
|
15201
15816
|
|
|
@@ -15345,6 +15960,9 @@ function initSketchpadButtons() {
|
|
|
15345
15960
|
initSketchpadBtnDrawCloud();
|
|
15346
15961
|
initSketchpadBtnDrawLine();
|
|
15347
15962
|
initSketchpadBtnDrawArrow();
|
|
15963
|
+
|
|
15964
|
+
initSketchpadMeasureButtons();
|
|
15965
|
+
bindDeactivateMenuSketchpadDrawButtons();
|
|
15348
15966
|
}
|
|
15349
15967
|
|
|
15350
15968
|
function initBtnDrawAnnotation() {
|
|
@@ -15353,6 +15971,8 @@ function initBtnDrawAnnotation() {
|
|
|
15353
15971
|
btn.on('click', function() {
|
|
15354
15972
|
$(this).toggleClass('toggled');
|
|
15355
15973
|
if($(this).hasClass('toggled')) {
|
|
15974
|
+
untoggleBtnsMeasure();
|
|
15975
|
+
hideMeasureToolbar();
|
|
15356
15976
|
activateDrawAnnotation();
|
|
15357
15977
|
} else {
|
|
15358
15978
|
deactivateDrawAnnotation();
|
|
@@ -15363,7 +15983,6 @@ function initBtnDrawAnnotation() {
|
|
|
15363
15983
|
|
|
15364
15984
|
function initBtnDrawAnnotationToolbar() {
|
|
15365
15985
|
var btnDrawAnnotationToolbar = $('#btnDrawAnnotationToolbarToggle');
|
|
15366
|
-
var btnDrawAnnotation = $('#btnDrawAnnotation');
|
|
15367
15986
|
btnDrawAnnotationToolbar.on('click', function() {
|
|
15368
15987
|
$(this).toggleClass('toggled');
|
|
15369
15988
|
if($(this).hasClass('toggled')) {
|
|
@@ -15372,17 +15991,6 @@ function initBtnDrawAnnotationToolbar() {
|
|
|
15372
15991
|
hideDrawAnnotationToolbar();
|
|
15373
15992
|
}
|
|
15374
15993
|
});
|
|
15375
|
-
$(document).on('click', '#btnCompare, #presentationMode, #print, #btnToggleNotes', function(e) {
|
|
15376
|
-
hideDrawAnnotationToolbar();
|
|
15377
|
-
btnDrawAnnotation.removeClass('toggled');
|
|
15378
|
-
btnDrawAnnotationToolbar.removeClass('toggled');
|
|
15379
|
-
if(($(this).attr('id') == 'btnToggleNotes' && !$(this).hasClass('show')) || $(this).attr('id') != 'btnToggleNotes') {
|
|
15380
|
-
deactivateDrawAnnotation();
|
|
15381
|
-
btnDrawAnnotation.prop('disabled', false);
|
|
15382
|
-
} else if($(this).attr('id') == 'btnToggleNotes' && $(this).hasClass('show')) {
|
|
15383
|
-
btnDrawAnnotation.prop('disabled', true);
|
|
15384
|
-
}
|
|
15385
|
-
});
|
|
15386
15994
|
$(document).on('click', '#secondaryToolbarToggle', function(e) {
|
|
15387
15995
|
hideDrawAnnotationToolbar();
|
|
15388
15996
|
btnDrawAnnotationToolbar.removeClass('toggled');
|
|
@@ -15390,6 +15998,45 @@ function initBtnDrawAnnotationToolbar() {
|
|
|
15390
15998
|
bindDrawAnnotationToolbarPositionOnWindowResize();
|
|
15391
15999
|
}
|
|
15392
16000
|
|
|
16001
|
+
function bindDeactivateMenuSketchpadDrawButtons() {
|
|
16002
|
+
$(document).on('click', '#btnCompare, #presentationMode, #print, #btnToggleNotes, #btnToggleMeasures', function(e) {
|
|
16003
|
+
deactivateMenuSketchpadDrawAnnotationsButtons($(this));
|
|
16004
|
+
deactivateMenuSketchpadDrawMeasuresButtons($(this));
|
|
16005
|
+
});
|
|
16006
|
+
}
|
|
16007
|
+
|
|
16008
|
+
function deactivateMenuSketchpadDrawAnnotationsButtons(elm) {
|
|
16009
|
+
var btnDrawAnnotation = $('#btnDrawAnnotation');
|
|
16010
|
+
var btnDrawAnnotationToolbar = $('#btnDrawAnnotationToolbarToggle');
|
|
16011
|
+
|
|
16012
|
+
hideDrawAnnotationToolbar();
|
|
16013
|
+
if(elm.attr('id') != 'btnToggleMeasures') {
|
|
16014
|
+
btnDrawAnnotation.removeClass('toggled');
|
|
16015
|
+
}
|
|
16016
|
+
btnDrawAnnotationToolbar.removeClass('toggled');
|
|
16017
|
+
|
|
16018
|
+
if((elm.attr('id') == 'btnToggleNotes' && !elm.hasClass('show')) || elm.attr('id') != 'btnToggleNotes') {
|
|
16019
|
+
deactivateDrawAnnotation();
|
|
16020
|
+
btnDrawAnnotation.prop('disabled', false);
|
|
16021
|
+
} else if(elm.attr('id') == 'btnToggleNotes' && elm.hasClass('show')) {
|
|
16022
|
+
btnDrawAnnotation.prop('disabled', true);
|
|
16023
|
+
}
|
|
16024
|
+
}
|
|
16025
|
+
|
|
16026
|
+
function deactivateMenuSketchpadDrawMeasuresButtons(elm) {
|
|
16027
|
+
var btnMeasuresToolbar = $('#btnMeasure');
|
|
16028
|
+
if( elm.attr('id') != 'btnToggleNotes') {
|
|
16029
|
+
untoggleBtnsMeasure();
|
|
16030
|
+
hideMeasureToolbar();
|
|
16031
|
+
}
|
|
16032
|
+
|
|
16033
|
+
if((elm.attr('id') == 'btnToggleMeasures' && !elm.hasClass('show')) || elm.attr('id') != 'btnToggleMeasures') {
|
|
16034
|
+
btnMeasuresToolbar.prop('disabled', false);
|
|
16035
|
+
} else if(elm.attr('id') == 'btnToggleMeasures' && elm.hasClass('show')) {
|
|
16036
|
+
btnMeasuresToolbar.prop('disabled', true);
|
|
16037
|
+
}
|
|
16038
|
+
}
|
|
16039
|
+
|
|
15393
16040
|
function activateDrawAnnotation() {
|
|
15394
16041
|
var svgsketchWrap = $('.svgsketch-wrap');
|
|
15395
16042
|
svgsketchWrap.addClass('active');
|
|
@@ -15469,9 +16116,92 @@ function bindSketchpadBtnOnclilckHandler(btnId, typeCssClass) {
|
|
|
15469
16116
|
$('.btn-draw-annotation').not('#'+t_.attr('id')).removeClass('toggled');
|
|
15470
16117
|
$('#btnDrawAnnotation').removeClass('rect ellipse polygon cloud line arrow').addClass(typeCssClass);
|
|
15471
16118
|
hideDrawAnnotationToolbar();
|
|
16119
|
+
$('#btnDrawAnnotation').addClass('toggled');
|
|
16120
|
+
activateDrawAnnotation();
|
|
15472
16121
|
});
|
|
15473
16122
|
}
|
|
15474
16123
|
|
|
16124
|
+
function initSketchpadMeasureButtons() {
|
|
16125
|
+
bindToggleMeasures();
|
|
16126
|
+
bindMeasureToolbarBtnOnclickHandler();
|
|
16127
|
+
bindMeasureLineBtnOnclickHandler();
|
|
16128
|
+
bindMeasureAreaBtnOnclickHandler();
|
|
16129
|
+
}
|
|
16130
|
+
|
|
16131
|
+
function bindMeasureToolbarBtnOnclickHandler() {
|
|
16132
|
+
$(document).on('click', '#btnMeasure', function() {
|
|
16133
|
+
$(this).toggleClass('toggled');
|
|
16134
|
+
toggleMeasureToolbar();
|
|
16135
|
+
if($(this).hasClass('toggled')) {
|
|
16136
|
+
untoggleBtnsDrawNote();
|
|
16137
|
+
activateMeasuresSketchpad();
|
|
16138
|
+
} else {
|
|
16139
|
+
$('.svgsketch-wrap').removeClass('active').removeClass('measures');
|
|
16140
|
+
$('.measure-toolbar-btn').removeClass('active');
|
|
16141
|
+
}
|
|
16142
|
+
});
|
|
16143
|
+
}
|
|
16144
|
+
|
|
16145
|
+
function hideMeasureToolbar() {
|
|
16146
|
+
$('.measure-toolbar').removeClass('active');
|
|
16147
|
+
}
|
|
16148
|
+
|
|
16149
|
+
function toggleMeasureToolbar() {
|
|
16150
|
+
$('.measure-toolbar').toggleClass('active');
|
|
16151
|
+
}
|
|
16152
|
+
|
|
16153
|
+
function untoggleBtnsMeasure() {
|
|
16154
|
+
$('.measure-toolbar-btn').removeClass('active');
|
|
16155
|
+
$('#btnMeasure').removeClass('toggled');
|
|
16156
|
+
$('.svgsketch-wrap').removeClass('measures');
|
|
16157
|
+
isSketchpadMeasureActive = false;
|
|
16158
|
+
}
|
|
16159
|
+
|
|
16160
|
+
// TODO - перепроверить!!!!!
|
|
16161
|
+
function untoggleBtnsDrawNote() {
|
|
16162
|
+
//$('.btn-draw-annotation').removeClass('toggled');
|
|
16163
|
+
hideDrawAnnotationToolbar();
|
|
16164
|
+
$('#btnDrawAnnotation').removeClass('toggled');
|
|
16165
|
+
isSketchpadActive = false;
|
|
16166
|
+
}
|
|
16167
|
+
//
|
|
16168
|
+
|
|
16169
|
+
function getSvgSketchWrap() {
|
|
16170
|
+
return $('.svgsketch-wrap');
|
|
16171
|
+
}
|
|
16172
|
+
|
|
16173
|
+
function activateMeasuresSketchpad() {
|
|
16174
|
+
$('.svgsketch-wrap').addClass('active').addClass('measures');
|
|
16175
|
+
$('#cursorSelectTool').click();
|
|
16176
|
+
}
|
|
16177
|
+
|
|
16178
|
+
function bindMeasureBtnOnclickHandler(btnId, fnActive) {
|
|
16179
|
+
$(document).on('click', '#'+btnId, function() {
|
|
16180
|
+
$(this).toggleClass('active');
|
|
16181
|
+
if($(this).hasClass('active')) {
|
|
16182
|
+
var t_ = $(this);
|
|
16183
|
+
$('.measure-toolbar-btn').not('#'+t_.attr('id')).removeClass('active');
|
|
16184
|
+
|
|
16185
|
+
isSketchpadMeasureActive = true;
|
|
16186
|
+
$('.svgsketch-wrap').addClass('active');
|
|
16187
|
+
if($.isFunction(fnActive)) {
|
|
16188
|
+
fnActive();
|
|
16189
|
+
}
|
|
16190
|
+
} else {
|
|
16191
|
+
$('.svgsketch-wrap').removeClass('active');
|
|
16192
|
+
isSketchpadMeasureActive = false;
|
|
16193
|
+
}
|
|
16194
|
+
});
|
|
16195
|
+
}
|
|
16196
|
+
|
|
16197
|
+
function bindMeasureLineBtnOnclickHandler() {
|
|
16198
|
+
bindMeasureBtnOnclickHandler('btnMeasureLine', false);
|
|
16199
|
+
}
|
|
16200
|
+
|
|
16201
|
+
function bindMeasureAreaBtnOnclickHandler() {
|
|
16202
|
+
bindMeasureBtnOnclickHandler('btnMeasureArea', false);
|
|
16203
|
+
}
|
|
16204
|
+
|
|
15475
16205
|
function rotateRect90dg(rectPos, rectW, rectH, pageW) {
|
|
15476
16206
|
var result = {
|
|
15477
16207
|
position: {
|
|
@@ -15548,6 +16278,242 @@ function normalizeRect270dg(rectPos, rectW, rectH, pageH) {
|
|
|
15548
16278
|
};
|
|
15549
16279
|
|
|
15550
16280
|
return result;
|
|
16281
|
+
}
|
|
16282
|
+
|
|
16283
|
+
function initMeasures() {
|
|
16284
|
+
bindDeleteMeasureEventHandler();
|
|
16285
|
+
|
|
16286
|
+
// TODO -> load and set measures settings
|
|
16287
|
+
initMeasuresSettings();
|
|
16288
|
+
// TODO - load and set measures data
|
|
16289
|
+
initMeasuresData();
|
|
16290
|
+
|
|
16291
|
+
$(document).on('webViewerPageRendered', function(e, pageNr) {
|
|
16292
|
+
initMeasuresByPageNr(pageNr);
|
|
16293
|
+
|
|
16294
|
+
if($('#btnMeasure').hasClass('toggled')) {
|
|
16295
|
+
$('.svgsketch-wrap').addClass('active').addClass('measures');
|
|
16296
|
+
}
|
|
16297
|
+
});
|
|
16298
|
+
|
|
16299
|
+
initDlgMeasures();
|
|
16300
|
+
}
|
|
16301
|
+
|
|
16302
|
+
// TODO - load and set measures data
|
|
16303
|
+
function initMeasuresData() {
|
|
16304
|
+
// measuresNodes = ...;
|
|
16305
|
+
}
|
|
16306
|
+
|
|
16307
|
+
// TODO -> load and set measures settings
|
|
16308
|
+
function initMeasuresSettings() {
|
|
16309
|
+
// measurePrecision = ...; // TODO
|
|
16310
|
+
// measureUnit = ...; // TODO
|
|
16311
|
+
// measurePxScale = ...; // TODO
|
|
16312
|
+
}
|
|
16313
|
+
|
|
16314
|
+
function initMeasuresByPageNr(pageNr) {
|
|
16315
|
+
doInitMeasuresByPageNr(pageNr);
|
|
16316
|
+
}
|
|
16317
|
+
|
|
16318
|
+
function doInitMeasuresByPageNr(pageNr) {
|
|
16319
|
+
var measuresList = measuresNodes[pageNr];
|
|
16320
|
+
$.each(measuresList, function(index, options) {
|
|
16321
|
+
loadMeasureShape(options);
|
|
16322
|
+
});
|
|
16323
|
+
}
|
|
16324
|
+
|
|
16325
|
+
function getMeasureValSqByPx(px) {
|
|
16326
|
+
if(measureUnit == 'mm') {
|
|
16327
|
+
return getMeasureMmValSqByPx(px);
|
|
16328
|
+
} else if(measureUnit == 'cm') {
|
|
16329
|
+
return getMeasureCmValSqByPx(px);
|
|
16330
|
+
} else if(measureUnit == 'm') {
|
|
16331
|
+
return getMeasureMValSqByPx(px);
|
|
16332
|
+
}
|
|
16333
|
+
}
|
|
16334
|
+
|
|
16335
|
+
function getMeasureMmValSqByPx(pxSq) {
|
|
16336
|
+
var pixelRatio = getDevicePixelRatio();
|
|
16337
|
+
var dpi = getDeviceDpi();
|
|
16338
|
+
var mmValSq = (pxSq*Math.pow(25.4, 2))/Math.pow((dpi/pixelRatio), 2);
|
|
16339
|
+
|
|
16340
|
+
return mmValSq;
|
|
16341
|
+
}
|
|
16342
|
+
|
|
16343
|
+
function getMeasureCmValSqByPx(pxSq) {
|
|
16344
|
+
var cmValSq = getMeasureMmValSqByPx(pxSq)*0.01;
|
|
16345
|
+
|
|
16346
|
+
return cmValSq;
|
|
16347
|
+
}
|
|
16348
|
+
|
|
16349
|
+
function getMeasureMValSqByPx(pxSq) {
|
|
16350
|
+
var mValSq = getMeasureMmValSqByPx(pxSq)*0.000001;
|
|
16351
|
+
|
|
16352
|
+
return mValSq;
|
|
16353
|
+
}
|
|
16354
|
+
|
|
16355
|
+
function getMeasureValByPx(px) {
|
|
16356
|
+
if(measureUnit == 'mm') {
|
|
16357
|
+
return getMeasureMmValByPx(px);
|
|
16358
|
+
} else if(measureUnit == 'cm') {
|
|
16359
|
+
return getMeasureCmValByPx(px);
|
|
16360
|
+
} else if(measureUnit == 'm') {
|
|
16361
|
+
return getMeasureMValByPx(px);
|
|
16362
|
+
}
|
|
16363
|
+
}
|
|
16364
|
+
|
|
16365
|
+
function getMeasureMmValByPx(px) {
|
|
16366
|
+
var pixelRatio = getDevicePixelRatio();
|
|
16367
|
+
var dpi = getDeviceDpi();
|
|
16368
|
+
var mmVal = (px * 25.4) / (dpi/pixelRatio);
|
|
16369
|
+
|
|
16370
|
+
return mmVal;
|
|
16371
|
+
}
|
|
16372
|
+
|
|
16373
|
+
function getMeasureCmValByPx(px) {
|
|
16374
|
+
var cmVal = getMeasureMmValByPx(px)*0.1;
|
|
16375
|
+
return cmVal;
|
|
16376
|
+
}
|
|
16377
|
+
|
|
16378
|
+
function getMeasureMValByPx(px) {
|
|
16379
|
+
var mVal = getMeasureMmValByPx(px)*0.001;
|
|
16380
|
+
return mVal;
|
|
16381
|
+
}
|
|
16382
|
+
|
|
16383
|
+
function getDevicePixelRatio() {
|
|
16384
|
+
var devicePixelRatio = window.devicePixelRatio;
|
|
16385
|
+
if(devicePixelRatio) {
|
|
16386
|
+
return devicePixelRatio;
|
|
16387
|
+
} else {
|
|
16388
|
+
return 1;
|
|
16389
|
+
}
|
|
16390
|
+
}
|
|
16391
|
+
|
|
16392
|
+
function getDeviceDpi() {
|
|
16393
|
+
var dpi = Detector.dpi;
|
|
16394
|
+
if(dpi) {
|
|
16395
|
+
return dpi;
|
|
16396
|
+
} else {
|
|
16397
|
+
return 96;
|
|
16398
|
+
}
|
|
16399
|
+
}
|
|
16400
|
+
|
|
16401
|
+
function initDlgMeasures() {
|
|
16402
|
+
bindBtnMeasureSettingsOnclickHandler();
|
|
16403
|
+
bindButtonsDlgMeasuresOnclickHandler();
|
|
16404
|
+
}
|
|
16405
|
+
function bindBtnMeasureSettingsOnclickHandler() {
|
|
16406
|
+
$('#btnMeasuresSettings').on('click', function() {
|
|
16407
|
+
showDlgOverlay();
|
|
16408
|
+
showDlgMeasureSettings();
|
|
16409
|
+
});
|
|
16410
|
+
}
|
|
16411
|
+
|
|
16412
|
+
function showDlgMeasureSettings() {
|
|
16413
|
+
$('.measures-dlg-wrap').show();
|
|
16414
|
+
}
|
|
16415
|
+
|
|
16416
|
+
function hideDlgMeasureSettings() {
|
|
16417
|
+
$('.measures-dlg-wrap').hide();
|
|
16418
|
+
}
|
|
16419
|
+
|
|
16420
|
+
function bindButtonsDlgMeasuresOnclickHandler() {
|
|
16421
|
+
bindDlgMeasuresBtnSave();
|
|
16422
|
+
bindBtnDlgMeasuresCancel();
|
|
16423
|
+
bindBtnDlgMeasuresClose();
|
|
16424
|
+
}
|
|
16425
|
+
|
|
16426
|
+
function bindDlgMeasuresBtnSave() {
|
|
16427
|
+
$('#btnMeasuresSettingsSave').on('click', function() {
|
|
16428
|
+
saveMeasuresSettings();
|
|
16429
|
+
});
|
|
16430
|
+
}
|
|
16431
|
+
|
|
16432
|
+
function saveMeasuresSettings() {
|
|
16433
|
+
var scaleNew = parseInt($('#measuresScale').val());
|
|
16434
|
+
var unitsNew = $('#measuresUnits').val();
|
|
16435
|
+
var precisionNew = parseInt($('#measuresPrecision').val());
|
|
16436
|
+
|
|
16437
|
+
if(scaleNew != measurePxScale || unitsNew != measureUnit || precisionNew != measurePrecision) {
|
|
16438
|
+
measurePxScale = scaleNew;
|
|
16439
|
+
measureUnit = unitsNew;
|
|
16440
|
+
measurePrecision = precisionNew;
|
|
16441
|
+
|
|
16442
|
+
// TODO
|
|
16443
|
+
doSaveMeasuresSettings();
|
|
16444
|
+
// TODO
|
|
16445
|
+
updateMeasuresData();
|
|
16446
|
+
}
|
|
16447
|
+
hideDlgOverlay();
|
|
16448
|
+
hideDlgMeasureSettings();
|
|
16449
|
+
}
|
|
16450
|
+
|
|
16451
|
+
// TODO - save to server
|
|
16452
|
+
function doSaveMeasuresSettings() {
|
|
16453
|
+
// measurePxScale
|
|
16454
|
+
// measureUnit
|
|
16455
|
+
// measurePrecision
|
|
16456
|
+
}
|
|
16457
|
+
|
|
16458
|
+
// TODO - update measures data and save to server
|
|
16459
|
+
function updateMeasuresData() {
|
|
16460
|
+
$.each(measuresNodes, function(indexPage, measuresNodesPage) {
|
|
16461
|
+
$.each(measuresNodesPage, function(indexItem, measuresNodesPageItem){
|
|
16462
|
+
updateMeasure(measuresNodesPageItem);
|
|
16463
|
+
// TODO - save to server
|
|
16464
|
+
// measuresNodesPageItem['data']
|
|
16465
|
+
});
|
|
16466
|
+
});
|
|
16467
|
+
}
|
|
16468
|
+
|
|
16469
|
+
function updateMeasure(measure) {
|
|
16470
|
+
measure['data']['measure']['pxScale'] = measurePxScale;
|
|
16471
|
+
measure['data']['measure']['unit'] = measureUnit;
|
|
16472
|
+
measure['data']['measure']['precision'] = measurePrecision;
|
|
16473
|
+
|
|
16474
|
+
var measureVal;
|
|
16475
|
+
var measureLabel;
|
|
16476
|
+
|
|
16477
|
+
if(measure['data']['type'] == 'line') {
|
|
16478
|
+
measureVal = getMeasureVal(measure['data']['measure']['pxVal']);
|
|
16479
|
+
measureLabel = getMeasureLineLabel(measureVal);
|
|
16480
|
+
} else if(measure['data']['type'] == 'rect') {
|
|
16481
|
+
measureVal = getMeasureValSq(measure['data']['measure']['pxVal']);
|
|
16482
|
+
measureLabel = getMeasureAreaLabel(measureVal);
|
|
16483
|
+
}
|
|
16484
|
+
|
|
16485
|
+
measure['data']['measureLabel']['txt'] = measureLabel;
|
|
16486
|
+
|
|
16487
|
+
var pageNr = measure['data']['pageNr'];
|
|
16488
|
+
|
|
16489
|
+
if(sketchpad[pageNr] && sketchpad[pageNr].getElementById(getMeasureTxtId(measure['data']['id']))
|
|
16490
|
+
&& $(sketchpad[pageNr].getElementById(getMeasureTxtId(measure['data']['id']))).length) {
|
|
16491
|
+
|
|
16492
|
+
var measureTxt = sketchpad[pageNr].getElementById(getMeasureTxtId(measure['data']['id']));
|
|
16493
|
+
$(measureTxt).html(measureLabel);
|
|
16494
|
+
measure['data']['measureLabel']['width'] = measureTxt.getBBox().width;
|
|
16495
|
+
}
|
|
16496
|
+
}
|
|
16497
|
+
|
|
16498
|
+
function bindBtnDlgMeasuresCancel() {
|
|
16499
|
+
$('#btnMeasuresSettingsCancel').click(function() {
|
|
16500
|
+
hideDlgOverlay();
|
|
16501
|
+
hideDlgMeasureSettings();
|
|
16502
|
+
});
|
|
16503
|
+
}
|
|
16504
|
+
|
|
16505
|
+
function bindBtnDlgMeasuresClose() {
|
|
16506
|
+
$('.measures-dlg-header .close').click(function() {
|
|
16507
|
+
hideDlgOverlay();
|
|
16508
|
+
hideDlgMeasureSettings();
|
|
16509
|
+
});
|
|
16510
|
+
}
|
|
16511
|
+
|
|
16512
|
+
function bindToggleMeasures() {
|
|
16513
|
+
$(document).on('click', '#btnToggleMeasures', function() {
|
|
16514
|
+
$('#viewer').toggleClass('hide-measures');
|
|
16515
|
+
$(this).toggleClass('show');
|
|
16516
|
+
});
|
|
15551
16517
|
}
|
|
15552
16518
|
var needZoomEventsTimeout = 250; // ms
|
|
15553
16519
|
var scrollStoppedEventsTimeout = 200; // ms
|
|
@@ -15563,10 +16529,34 @@ var firstTimeRendered = false; // for first check
|
|
|
15563
16529
|
var pages = {};
|
|
15564
16530
|
|
|
15565
16531
|
function initZoomPage() {
|
|
16532
|
+
bindViewerZoomEventsHandler();
|
|
15566
16533
|
bindZoomPageHandler();
|
|
15567
16534
|
initZoomPageEvent();
|
|
15568
16535
|
}
|
|
15569
16536
|
|
|
16537
|
+
function bindViewerZoomEventsHandler() {
|
|
16538
|
+
bindViewerSetScaleStartEventHandler();
|
|
16539
|
+
bindViewerZoomResetStartEventHandler();
|
|
16540
|
+
}
|
|
16541
|
+
|
|
16542
|
+
function bindViewerSetScaleStartEventHandler() {
|
|
16543
|
+
$(document).on('setScaleStart', function() {
|
|
16544
|
+
setZoomCanvasTransparent();
|
|
16545
|
+
hideNotesLayer();
|
|
16546
|
+
});
|
|
16547
|
+
}
|
|
16548
|
+
|
|
16549
|
+
function bindViewerZoomResetStartEventHandler() {
|
|
16550
|
+
$(document).on('zoomResetStart', function() {
|
|
16551
|
+
setZoomCanvasTransparent();
|
|
16552
|
+
hideNotesLayer();
|
|
16553
|
+
});
|
|
16554
|
+
}
|
|
16555
|
+
|
|
16556
|
+
function setZoomCanvasTransparent() {
|
|
16557
|
+
$('canvas.zoom').addClass('transparent');
|
|
16558
|
+
}
|
|
16559
|
+
|
|
15570
16560
|
function initZoomPageEvent() {
|
|
15571
16561
|
PDFViewerApplication.initializedPromise.then(function() {
|
|
15572
16562
|
// PDFViewerApplication.eventBus.on('webviewerloaded', function(e) {
|
|
@@ -17445,15 +18435,22 @@ lbl_hide = context.createLocale('app.viewer.pdf.compare.panel.hide');
|
|
|
17445
18435
|
lbl_comparisonWarning = context.createLocale('app.viewer.pdf.compare.warning');
|
|
17446
18436
|
|
|
17447
18437
|
|
|
18438
|
+
var label_deleteMeasure = context.createLocale('app.viewer.pdf.contextMenu.deleteMeasure');
|
|
18439
|
+
var label_cancel = context.createLocale('app.viewer.pdf.contextMenu.cancel');
|
|
17448
18440
|
function initContextMenuCanvas() {
|
|
17449
18441
|
var pages = '#viewer .page';
|
|
17450
18442
|
$.contextMenu({
|
|
17451
18443
|
selector: pages,
|
|
18444
|
+
trigger: 'right',
|
|
17452
18445
|
items: {
|
|
17453
18446
|
"addNote": {
|
|
17454
18447
|
name: context.createLocale('app.viewer.pdf.contextMenu.addNote'),
|
|
17455
18448
|
icon: "add"
|
|
17456
18449
|
},
|
|
18450
|
+
/*"showTxt": {
|
|
18451
|
+
name: "Show / Hide Text",
|
|
18452
|
+
icon: "page-facing-up",
|
|
18453
|
+
},*/
|
|
17457
18454
|
"sep1": "---------",
|
|
17458
18455
|
"quit": {
|
|
17459
18456
|
name: context.createLocale('app.viewer.pdf.contextMenu.cancel'),
|
|
@@ -17463,11 +18460,15 @@ function initContextMenuCanvas() {
|
|
|
17463
18460
|
}
|
|
17464
18461
|
},
|
|
17465
18462
|
build: function ($triggerElement, e) {
|
|
17466
|
-
|
|
17467
|
-
|
|
17468
|
-
|
|
17469
|
-
|
|
17470
|
-
|
|
18463
|
+
if ($('.svgsketch-wrap').hasClass('measures')) {
|
|
18464
|
+
return false;
|
|
18465
|
+
} else {
|
|
18466
|
+
return {
|
|
18467
|
+
callback: function (key, options) {
|
|
18468
|
+
$(document).trigger(key, [options, $triggerElement, e]);
|
|
18469
|
+
}
|
|
18470
|
+
};
|
|
18471
|
+
}
|
|
17471
18472
|
}
|
|
17472
18473
|
});
|
|
17473
18474
|
}
|
|
@@ -17786,6 +18787,7 @@ function bindSelect(select) {
|
|
|
17786
18787
|
let value = $(e.target).attr('value');
|
|
17787
18788
|
let text = $(e.target).text();
|
|
17788
18789
|
$(input).val(text);
|
|
18790
|
+
$(input).data('value', value)
|
|
17789
18791
|
input.dispatchEvent(new CustomEvent('change', { detail: { value: value } }));
|
|
17790
18792
|
$(select).removeClass('active');
|
|
17791
18793
|
}
|
|
@@ -17817,6 +18819,7 @@ function bindBtnToggleSidebarNotes() {
|
|
|
17817
18819
|
|
|
17818
18820
|
if ($(this).hasClass('toggled')) {
|
|
17819
18821
|
if (!$('.body__sidebar').is(':visible')) {
|
|
18822
|
+
$('#outerContainer').addClass('sidebarNotesOpen');
|
|
17820
18823
|
context.toggleIssueDetail(false);
|
|
17821
18824
|
if ($('#btnDrawAnnotation').hasClass('toggled')) {
|
|
17822
18825
|
$('#btnDrawAnnotation').click();
|
|
@@ -17825,11 +18828,20 @@ function bindBtnToggleSidebarNotes() {
|
|
|
17825
18828
|
expandSidebarNotes();
|
|
17826
18829
|
}
|
|
17827
18830
|
} else {
|
|
18831
|
+
$('#outerContainer').removeClass('sidebarNotesOpen');
|
|
17828
18832
|
$('.body__sidebar').hide();
|
|
17829
18833
|
}
|
|
17830
18834
|
});
|
|
17831
18835
|
}
|
|
17832
18836
|
|
|
18837
|
+
function bindSidebarNotesClose() {
|
|
18838
|
+
$('.body__sidebar-close').on('click', function () {
|
|
18839
|
+
$('#outerContainer').removeClass('sidebarNotesOpen');
|
|
18840
|
+
$('.body__sidebar').hide();
|
|
18841
|
+
$('#btnToggleSidebarNotes').removeClass('toggled');
|
|
18842
|
+
});
|
|
18843
|
+
}
|
|
18844
|
+
|
|
17833
18845
|
function saveNote(pageNr, $triggerElement, clickEvent, hasSvg, svgData) {
|
|
17834
18846
|
var noteOptions = getNoteOptionsForSave('', pageNr, $triggerElement, clickEvent, hasSvg, svgData);
|
|
17835
18847
|
|
|
@@ -17977,7 +18989,7 @@ function initDlgForSvg(svgData) {
|
|
|
17977
18989
|
saveNote(false, false, false, true, svgData);
|
|
17978
18990
|
}
|
|
17979
18991
|
|
|
17980
|
-
function setDrawNodes(pageNr, nodeId, node, posX, posY, width, height, shapeType, color) {
|
|
18992
|
+
function setDrawNodes(pageNr, nodeId, node, posX, posY, width, height, shapeType, direction, color) {
|
|
17981
18993
|
var scale = getPdfCanvasScale();
|
|
17982
18994
|
drawNodes[nodeId] = {
|
|
17983
18995
|
data: {
|
|
@@ -17988,6 +19000,7 @@ function setDrawNodes(pageNr, nodeId, node, posX, posY, width, height, shapeType
|
|
|
17988
19000
|
x: posX / scale,
|
|
17989
19001
|
y: posY / scale,
|
|
17990
19002
|
},
|
|
19003
|
+
direction: direction,
|
|
17991
19004
|
width: width / scale,
|
|
17992
19005
|
height: height / scale,
|
|
17993
19006
|
stroke: {
|
|
@@ -18060,7 +19073,7 @@ function loadSvgShape(svgData) {
|
|
|
18060
19073
|
|
|
18061
19074
|
var direction = ('direction' in svgData) ? svgData.direction : false;
|
|
18062
19075
|
|
|
18063
|
-
setDrawNodes(svgData.pageNr, svgData.id, node, svgData.position.x, svgData.position.y, svgData.width, svgData.height, svgData.type, svgData.stroke.color);
|
|
19076
|
+
setDrawNodes(svgData.pageNr, svgData.id, node, svgData.position.x, svgData.position.y, svgData.width, svgData.height, svgData.type, direction, svgData.stroke.color);
|
|
18064
19077
|
}
|
|
18065
19078
|
}
|
|
18066
19079
|
|
|
@@ -18075,12 +19088,12 @@ function bindUpdatePage() {
|
|
|
18075
19088
|
}
|
|
18076
19089
|
|
|
18077
19090
|
function updatePage(e) {
|
|
18078
|
-
|
|
18079
|
-
|
|
18080
|
-
|
|
19091
|
+
const item = e.detail.itemList[0];
|
|
19092
|
+
const markup = JSON.parse(item.fieldValueMap.markup);
|
|
19093
|
+
const page = markup ? markup.pageNr : null;
|
|
18081
19094
|
|
|
18082
19095
|
if (e.type === context.deleteIssueEvent && markup) {
|
|
18083
|
-
|
|
19096
|
+
const markupData = { id: item.fieldValueMap.item_id, pageNr: page };
|
|
18084
19097
|
removeSvg(markupData);
|
|
18085
19098
|
context.initIssueList();
|
|
18086
19099
|
}
|
|
@@ -18094,7 +19107,7 @@ function updatePage(e) {
|
|
|
18094
19107
|
siteId: item.siteId
|
|
18095
19108
|
};
|
|
18096
19109
|
|
|
18097
|
-
|
|
19110
|
+
const event = new CustomEvent('vitro.item.changed', {
|
|
18098
19111
|
detail: {
|
|
18099
19112
|
itemIdList: [itemId],
|
|
18100
19113
|
listId: item.listId
|
|
@@ -18238,8 +19251,38 @@ function drawShape(x1, y1, x2, y2, pageNr, shape) {
|
|
|
18238
19251
|
initDlgForSvg(drawNodes[nodeId]);
|
|
18239
19252
|
|
|
18240
19253
|
deactivateDrawAnnotation();
|
|
19254
|
+
}
|
|
19255
|
+
|
|
19256
|
+
function saveMeasuresSettings() {
|
|
19257
|
+
var scaleNew = parseInt($('#measuresScale').data('value'));
|
|
19258
|
+
var unitsNew = $('#measuresUnits').data('value');
|
|
19259
|
+
var precisionNew = parseInt($('#measuresPrecision').data('value'));
|
|
19260
|
+
|
|
19261
|
+
let isChanged = false;
|
|
19262
|
+
if (scaleNew && scaleNew != measurePxScale) {
|
|
19263
|
+
measurePxScale = scaleNew;
|
|
19264
|
+
isChanged = true;
|
|
19265
|
+
}
|
|
19266
|
+
|
|
19267
|
+
if (unitsNew && unitsNew != measureUnit) {
|
|
19268
|
+
measureUnit = unitsNew;
|
|
19269
|
+
isChanged = true;
|
|
19270
|
+
}
|
|
19271
|
+
|
|
19272
|
+
if (precisionNew && precisionNew != measurePrecision) {
|
|
19273
|
+
measurePrecision = precisionNew;
|
|
19274
|
+
isChanged = true;
|
|
19275
|
+
}
|
|
19276
|
+
|
|
19277
|
+
if (isChanged) {
|
|
19278
|
+
// TODO
|
|
19279
|
+
doSaveMeasuresSettings();
|
|
19280
|
+
// TODO
|
|
19281
|
+
updateMeasuresData();
|
|
19282
|
+
}
|
|
19283
|
+
hideDlgOverlay();
|
|
19284
|
+
hideDlgMeasureSettings();
|
|
18241
19285
|
}
|
|
18242
|
-
|
|
18243
19286
|
$(document).ready(function() {
|
|
18244
19287
|
context.openFile();
|
|
18245
19288
|
|
|
@@ -18252,6 +19295,9 @@ $(document).ready(function() {
|
|
|
18252
19295
|
initSketchpadButtons();
|
|
18253
19296
|
|
|
18254
19297
|
initNotes();
|
|
19298
|
+
|
|
19299
|
+
initMeasures();
|
|
19300
|
+
|
|
18255
19301
|
bindSidebarNotesClose();
|
|
18256
19302
|
bindBtnToggleSidebarNotes();
|
|
18257
19303
|
|