PMA.UI Examples 2.43.3by Pathomation

Snapshot

basicsnapshotslide loader
Console
PMA.UI version: 2.43.3
Snapshot example.
snapshot.html
1<!doctype html>
2<html lang="en">
3
4<head>
5    <meta charset="utf-8">
6    <meta http-equiv="X-UA-Compatible" content="IE=10">
7    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
8
9    <!-- Include PMA.UI required libraries downloaded or from CDN -->
10    <script src="./pma.ui/jquery-3.1.0.js"></script>
11    <link href="./pma.ui/font-awesome.min.css" type="text/css" rel="stylesheet">
12
13    <!-- Include optional libraries downloaded or from CDN -->
14    <link rel="stylesheet" href="./pma.ui/bootstrap.min.css">
15    <script src="./pma.ui/bootstrap.bundle.min.js"></script>
16
17    <!-- Include PMA.UI script & css -->
18    <script src="./pma.ui/pma.ui.js"></script>
19    <link href="./pma.ui/pma.ui.css" type="text/css" rel="stylesheet">
20
21    <!-- Include custom script & css -->
22    <script src="./js/snapshot.js"></script>
23    <link href="./css/snapshot.css" type="text/css" rel="stylesheet">
24
25    <title>Snapshot</title>
26</head>
27
28<body>
29    <div class="container-fluid">
30        <div class="row">
31            <div class="col-4 py-1 border-right" style="max-height: 100vh; overflow-y: auto">
32                <legend class="text-center">Snapshot options
33                    <button type="button" class="btn btn-outline-secondary btn-sm" id="snapshot-btn"
34                        title="Click to take snapshot" disabled>
35                        <i class="fas fa-camera"></i>
36                    </button>
37                </legend>
38                <form>
39                    <div class="form-group row">
40                        <label for="inputFormat" class="col-6 col-form-label col-form-label-sm">Format</label>
41                        <div class="col-6">
42                            <select class="form-control form-control-sm" id="inputFormat">
43                                <option value="png" selected>png</option>
44                                <option value="jpg">jpg</option>
45                                <option value="blob">blob</option>
46                            </select>
47                        </div>
48                    </div>
49                    <div class="form-group row">
50                        <label for="inputTitle" class="col-6 col-form-label col-form-label-sm">Title</label>
51                        <div class="col-6">
52                            <input type="text" class="form-control form-control-sm" id="inputTitle">
53                        </div>
54                    </div>
55                    <div class="form-group row">
56                        <label for="inputTitleLocation" class="col-6 col-form-label col-form-label-sm">Title
57                            location</label>
58                        <div class="col-6">
59                            <select class="form-control form-control-sm" id="inputTitleLocation">
60                                <option value="Top" selected>Top</option>
61                                <option value="Bottom">Bottom</option>
62                            </select>
63                        </div>
64                    </div>
65                    <div class="form-group row">
66                        <label for="inputTitleFont" class="col-6 col-form-label col-form-label-sm">Title
67                            font</label>
68                        <div class="col-6">
69                            <input type="text" class="form-control form-control-sm" id="inputTitleFont"
70                                placeholder="32px serif">
71                        </div>
72                    </div>
73                    <div class="form-group row">
74                        <label for="inputTitleFontColor" class="col-6 col-form-label col-form-label-sm">Title
75                            color</label>
76                        <div class="col-6">
77                            <input type="color" class="form-control form-control-sm" id="inputTitleFontColor"
78                                value="#000000">
79                        </div>
80                    </div>
81                    <div class="form-group row">
82                        <label for="inputScalebar" class="col-6 col-form-label col-form-label-sm">Scalebar</label>
83                        <div class="col-6">
84                            <select class="form-control form-control-sm" id="inputScalebar">
85                                <option value="true" selected>True</option>
86                                <option value="false">False</option>
87                            </select>
88                        </div>
89                    </div>
90                    <div class="form-group row">
91                        <label for="inputScalebarLocation" class="col-6 col-form-label col-form-label-sm">Scalebar
92                            location</label>
93                        <div class="col-6">
94                            <select class="form-control form-control-sm" id="inputScalebarLocation">
95                                <option value="TopLeft" selected>TopLeft</option>
96                                <option value="TopRight">TopRight</option>
97                                <option value="BottomLeft">BottomLeft</option>
98                                <option value="BottomRight">BottomRight</option>
99                            </select>
100                        </div>
101                    </div>
102                    <div class="form-group row">
103                        <label for="inputScalebarFont" class="col-6 col-form-label col-form-label-sm">Scalebar
104                            font</label>
105                        <div class="col-6">
106                            <input type="text" class="form-control form-control-sm" id="inputScalebarFont"
107                                placeholder="24px serif">
108                        </div>
109                    </div>
110                    <div class="form-group row">
111                        <label for="inputScalebarFontColor" class="col-6 col-form-label col-form-label-sm">Scalebar
112                            color</label>
113                        <div class="col-6">
114                            <input type="color" class="form-control form-control-sm" id="inputScalebarFontColor"
115                                value="#ff0000">
116                        </div>
117                    </div>
118                    <div class="form-group row">
119                        <label for="inputBarcode" class="col-6 col-form-label col-form-label-sm">Barcode</label>
120                        <div class="col-6">
121                            <select class="form-control form-control-sm" id="inputBarcode">
122                                <option value="true">True</option>
123                                <option value="false" selected>False</option>
124                            </select>
125                        </div>
126                    </div>
127                    <div class="form-group row">
128                        <label for="inputOverview" class="col-6 col-form-label col-form-label-sm">Overview</label>
129                        <div class="col-6">
130                            <select class="form-control form-control-sm" id="inputOverview">
131                                <option value="true">True</option>
132                                <option value="false" selected>False</option>
133                            </select>
134                        </div>
135                    </div>
136                    <div class="form-group row">
137                        <label for="inputDPI" class="col-6 col-form-label col-form-label-sm">DPI</label>
138                        <div class="col-6">
139                            <input type="number" min="0" step="1" class="form-control form-control-sm" id="inputDPI">
140                        </div>
141                    </div>
142                    <div class="form-group row">
143                        <label for="inputFilename" class="col-6 col-form-label col-form-label-sm">Filename</label>
144                        <div class="col-6">
145                            <input type="text" class="form-control form-control-sm" id="inputFilename"
146                                placeholder="snapshot">
147                        </div>
148                    </div>
149                    <div class="form-group row">
150                        <label for="inputAction" class="col-6 col-form-label col-form-label-sm">Action</label>
151                        <div class="col-6">
152                            <select class="form-control form-control-sm" id="inputAction">
153                                <option value="download" selected>download</option>
154                                <option value="open-tab">open-tab</option>
155                            </select>
156                        </div>
157                    </div>
158                </form>
159            </div>
160            <div class="col-8">
161                <!-- The element that will host the viewport -->
162                <div id="viewer"></div>
163            </div>
164        </div>
165    </div>
166</body>
167
168</html>
snapshot.css
1html,
2body
3{
4    height: 100%;
5    padding: 0px;
6    margin: 0px;
7}
8
9#viewer
10{
11    height: 100vh;
12}
snapshot.js
1// Initial declarations
2var serverUrl = "https://host.pathomation.com/pma.core.2/";
3var serverUsername = "PMA_UI_demo";
4var serverPassword = "PMA_UI_demo";
5var caller = "DemoPortal";
6var slideLoaderElementSelector = "#viewer";
7var imagePath = "Reference/3DHistech/CMU-1.mrxs";
8var slideLoader = null;
9
10jQuery(function () {
11    console.log(`PMA.UI version: ${PMA.UI.getVersion()}`);
12
13    // Create a context
14    var context = new PMA.UI.Components.Context({ caller: caller });
15
16    // Add an autologin authentication provider
17    new PMA.UI.Authentication.AutoLogin(context, [{ serverUrl: serverUrl, username: serverUsername, password: serverPassword }]);
18
19    // Create an image loader that will allow us to load images easily
20    slideLoader = new PMA.UI.Components.SlideLoader(context, {
21        element: slideLoaderElementSelector,
22        annotations: {},
23        filename: false,
24    });
25
26    // Listen for the slide loaded event by the slide loader
27    slideLoader.listen(PMA.UI.Components.Events.SlideLoaded, function (args) {
28        console.log("Slide loaded");
29        console.log(args);
30        $("#snapshot-btn").attr("disabled", false);
31    });
32
33    // Listen for the slide info error event by slide loader
34    slideLoader.listen(PMA.UI.Components.Events.SlideInfoError, function (args) {
35        console.log("Slide info error");
36        console.log(args);
37    });
38
39    // Load the image with the context
40    slideLoader.load(serverUrl, imagePath);
41
42    $("#snapshot-btn").on("click", function () {
43        var format = $("#inputFormat").val();
44        var title = $("#inputTitle").val();
45        var titleLocation = $("#inputTitleLocation").val();
46        var titleFont = $("#inputTitleFont").val();
47        var titleFontColor = $("#inputTitleFontColor").val();
48        var showScalebar = $("#inputScalebar").val() === "true";
49        var scalebarLocation = $("#inputScalebarLocation").val();
50        var scalebarFont = $("#inputScalebarFont").val();
51        var scalebarFontColor = $("#inputScalebarFontColor").val();
52        var showBarcode = $("#inputBarcode").val() === "true";
53        var showOverview = $("#inputOverview").val() === "true";
54        var dpi = parseInt($("#inputDPI").val()) || "";
55        var filename = $("#inputFilename").val();
56        var action = $("#inputAction").val();
57
58        var snapshotOptions = Object.assign({},
59            title && { title: title },
60            titleLocation && { titleLocation: titleLocation },
61            titleFont && { titleFont: titleFont },
62            titleFontColor && { titleFontColor: titleFontColor },
63            showScalebar !== true && { scalebar: showScalebar },
64            scalebarLocation && { scalebarLocation: scalebarLocation },
65            scalebarFont && { scalebarFont: scalebarFont },
66            scalebarFontColor && { scalebarFontColor: scalebarFontColor },
67            showBarcode && { barcode: showBarcode },
68            showOverview && { overview: showOverview },
69            dpi && { dpi: dpi },
70            filename && { filename: filename },
71            action && { action: action },
72        );
73
74        console.log("Snapshot requested as " + format, snapshotOptions);
75
76        // Get snapshot with parameters
77        slideLoader.mainViewport.getSnapshot(format, snapshotOptions)
78            .then(function (data) {
79                console.log(data);
80            })
81    });
82});