PMA.UI Examples 2.43.3by Pathomation

Syncing viewers

basicslide loadersync
Console
PMA.UI version: 2.43.3
Syncing viewers example.
sync_viewers.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/sync_viewers.js"></script>
23    <link href="./css/sync_viewers.css" type="text/css" rel="stylesheet">
24
25    <title>Simple Slide Loader</title>
26</head>
27
28<body>
29    <div class="container-fluid px-0">
30        <div class="row no-gutters">
31            <div class="col">
32                <div class="btn-group-toggle btn-group-sm d-flex justify-content-center" data-toggle="buttons">
33                    <label class="btn btn-light">
34                        <input type="checkbox" id="sync-btn" disabled> Toggle Sync
35                    </label>
36                </div>
37            </div>
38        </div>
39        <div class="row no-gutters">
40            <div class="col">
41                <!-- The element that will host the first slide loader -->
42                <div id="viewer1"></div>
43            </div>
44            <div class="col">
45                <!-- The element that will host the second slide loader -->
46                <div id="viewer2"></div>
47            </div>
48        </div>
49    </div>
50</body>
51
52</html>
sync_viewers.css
1html,
2body
3{
4    height: 100%;
5    padding: 0px;
6    margin: 0px;
7}
8
9#viewer1,
10#viewer2
11{
12    height: calc(100vh - 31px);
13    border: 1px solid gray;
14    box-sizing: border-box;
15}
sync_viewers.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 slideLoaderElementSelector1 = "#viewer1";
7var slideLoaderElementSelector2 = "#viewer2";
8var imagePath1 = "Reference/3DHistech/CMU-1.mrxs";
9var imagePath2 = "Reference/3DHistech/CMU-1.mrxs";
10var slideLoader1 = null;
11var slideLoader2 = null;
12var syncManager = null;
13
14jQuery(function () {
15    console.log(`PMA.UI version: ${PMA.UI.getVersion()}`);
16
17    // Create a context
18    var context = new PMA.UI.Components.Context({ caller: caller });
19
20    // Add an autologin authentication provider
21    new PMA.UI.Authentication.AutoLogin(context, [{ serverUrl: serverUrl, username: serverUsername, password: serverPassword }]);
22
23    // Create an image loader that will allow us to load images easily
24    slideLoader1 = new PMA.UI.Components.SlideLoader(context, {
25        element: slideLoaderElementSelector1,
26    });
27
28    // Create an image loader that will allow us to load images easily
29    slideLoader2 = new PMA.UI.Components.SlideLoader(context, {
30        element: slideLoaderElementSelector2,
31    });
32
33    // Initialize sync manager for both slide loaders
34    syncManager = new PMA.UI.Components.SyncView([slideLoader1, slideLoader2]);
35
36    slideLoader1.load(serverUrl, imagePath1, function () {
37        slideLoader2.load(serverUrl, imagePath2, function () {
38            $("#sync-btn").prop('disabled', false);
39        });
40    });
41
42    $("#sync-btn").on("change", function () {
43        if (syncManager.getStatus()) {
44            syncManager.disableSync();
45            console.log("Syncing is now disabled!");
46        } else {
47            syncManager.enableSync();
48            console.log("Syncing is now enabled!");
49        }
50    });
51});