diff Resources/OrthancExplorer.js @ 0:95226b754d9e

initial release
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 17 Sep 2018 11:34:55 +0200
parents
children 1ed03945c057
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Resources/OrthancExplorer.js	Mon Sep 17 11:34:55 2018 +0200
@@ -0,0 +1,111 @@
+function TransferAcceleratorSelectPeer(callback)
+{
+  var items = $('<ul>')
+    .attr('data-divider-theme', 'd')
+    .attr('data-role', 'listview');
+
+  items.append('<li data-role="list-divider">Orthanc peers</li>');
+
+  $.ajax({
+    url: '../transfers/peers',
+    type: 'GET',
+    dataType: 'json',
+    async: false,
+    cache: false,
+    success: function(peers) {
+      for (var i = 0; i < peers.length; i++) {
+        var name = peers[i];
+        var item = $('<li>')
+          .html('<a href="#" rel="close">' + name + '</a>')
+          .attr('name', name)
+          .click(function() { 
+            clickedPeer = $(this).attr('name');
+          });
+        items.append(item);
+      }
+
+      // Launch the dialog
+      $('#dialog').simpledialog2({
+        mode: 'blank',
+        animate: false,
+        headerText: 'Choose target',
+        headerClose: true,
+        forceInput: false,
+        width: '100%',
+        blankContent: items,
+        callbackClose: function() {
+          var timer;
+          function WaitForDialogToClose() {
+            if (!$('#dialog').is(':visible')) {
+              clearInterval(timer);
+              callback(clickedPeer);
+            }
+          }
+          timer = setInterval(WaitForDialogToClose, 100);
+        }
+      });
+    }
+  });
+}
+
+
+function TransferAcceleratorAddSendButton(level, siblingButton)
+{
+  var b = $('<a>')
+    .attr('data-role', 'button')
+    .attr('href', '#')
+    .attr('data-icon', 'search')
+    .attr('data-theme', 'e')
+    .text('Transfer accelerator');
+
+  b.insertBefore($(siblingButton).parent().parent());
+
+  b.click(function() {
+    if ($.mobile.pageData) {
+      var uuid = $.mobile.pageData.uuid;
+      TransferAcceleratorSelectPeer(function(peer) {
+        console.log('Sending ' + level + ' ' + uuid + ' to peer ' + peer);
+
+        var query = {
+          'Resources' : [
+            {
+              'Level' : level,
+              'ID' : uuid
+            }
+          ], 
+          'Compression' : 'gzip',
+          'Peer' : peer
+        };
+
+        $.ajax({
+          url: '../transfers/send',
+          type: 'POST',
+          dataType: 'json',
+          data: JSON.stringify(query),
+          success: function(job) {
+            if (!(typeof job.ID === 'undefined')) {
+              $.mobile.changePage('#job?uuid=' + job.ID);
+            }
+          },
+          error: function() {
+            alert('Error while creating the transfer job');
+          }
+        });  
+      });
+    }
+  });
+}
+
+
+
+$('#patient').live('pagebeforecreate', function() {
+  TransferAcceleratorAddSendButton('Patient', '#patient-delete');
+});
+
+$('#study').live('pagebeforecreate', function() {
+  TransferAcceleratorAddSendButton('Study', '#study-delete');
+});
+
+$('#series').live('pagebeforecreate', function() {
+  TransferAcceleratorAddSendButton('Series', '#series-delete');
+});