Mercurial > hg > orthanc
diff OrthancExplorer/explorer.js @ 2119:e0517f25919e
Improved robustness of Orthanc Explorer wrt. query/retrieve (maybe fix issue #24)
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sun, 06 Nov 2016 11:39:04 +0100 |
parents | 5cdea1cd2071 |
children | ccd44d546b47 |
line wrap: on
line diff
--- a/OrthancExplorer/explorer.js Wed Nov 02 12:16:03 2016 +0100 +++ b/OrthancExplorer/explorer.js Sun Nov 06 11:39:04 2016 +0100 @@ -30,6 +30,36 @@ }; +function DeepCopy(obj) +{ + return jQuery.extend(true, {}, obj); +} + + +function ChangePage(page, options) +{ + var first = true; + if (options) { + for (var key in options) { + var value = options[key]; + if (first) { + page += '?'; + first = false; + } else { + page += '&'; + } + + page += key + '=' + value; + } + } + + window.location.replace('explorer.html#' + page); + /*$.mobile.changePage('#' + page, { + changeHash: true + });*/ +} + + function Refresh() { if (currentPage == 'patient') @@ -369,8 +399,10 @@ function RefreshPatient() { if ($.mobile.pageData) { - GetResource('/patients/' + $.mobile.pageData.uuid, function(patient) { - GetResource('/patients/' + $.mobile.pageData.uuid + '/studies', function(studies) { + var pageData = DeepCopy($.mobile.pageData); + + GetResource('/patients/' + pageData.uuid, function(patient) { + GetResource('/patients/' + pageData.uuid + '/studies', function(studies) { SortOnDicomTag(studies, 'StudyDate', false, true); $('#patient-info li').remove(); @@ -399,7 +431,7 @@ // Check whether this patient is protected $.ajax({ - url: '../patients/' + $.mobile.pageData.uuid + '/protected', + url: '../patients/' + pageData.uuid + '/protected', type: 'GET', dataType: 'text', async: false, @@ -411,7 +443,7 @@ }); currentPage = 'patient'; - currentUuid = $.mobile.pageData.uuid; + currentUuid = pageData.uuid; }); }); } @@ -421,9 +453,11 @@ function RefreshStudy() { if ($.mobile.pageData) { - GetResource('/studies/' + $.mobile.pageData.uuid, function(study) { + var pageData = DeepCopy($.mobile.pageData); + + GetResource('/studies/' + pageData.uuid, function(study) { GetResource('/patients/' + study.ParentPatient, function(patient) { - GetResource('/studies/' + $.mobile.pageData.uuid + '/series', function(series) { + GetResource('/studies/' + pageData.uuid + '/series', function(series) { SortOnDicomTag(series, 'SeriesDate', false, true); $('#study .patient-link').attr('href', '#patient?uuid=' + patient.ID); @@ -451,7 +485,7 @@ target.listview('refresh'); currentPage = 'study'; - currentUuid = $.mobile.pageData.uuid; + currentUuid = pageData.uuid; }); }); }); @@ -462,10 +496,12 @@ function RefreshSeries() { if ($.mobile.pageData) { - GetResource('/series/' + $.mobile.pageData.uuid, function(series) { + var pageData = DeepCopy($.mobile.pageData); + + GetResource('/series/' + pageData.uuid, function(series) { GetResource('/studies/' + series.ParentStudy, function(study) { GetResource('/patients/' + study.ParentPatient, function(patient) { - GetResource('/series/' + $.mobile.pageData.uuid + '/instances', function(instances) { + GetResource('/series/' + pageData.uuid + '/instances', function(instances) { Sort(instances, function(x) { return x.IndexInSeries; }, true, false); $('#series .patient-link').attr('href', '#patient?uuid=' + patient.ID); @@ -492,7 +528,7 @@ target.listview('refresh'); currentPage = 'series'; - currentUuid = $.mobile.pageData.uuid; + currentUuid = pageData.uuid; }); }); }); @@ -556,7 +592,9 @@ function RefreshInstance() { if ($.mobile.pageData) { - GetResource('/instances/' + $.mobile.pageData.uuid, function(instance) { + var pageData = DeepCopy($.mobile.pageData); + + GetResource('/instances/' + pageData.uuid, function(instance) { GetResource('/series/' + instance.ParentSeries, function(series) { GetResource('/studies/' + series.ParentStudy, function(study) { GetResource('/patients/' + study.ParentPatient, function(patient) { @@ -585,7 +623,7 @@ SetupAnonymizedOrModifiedFrom('#instance-modified-from', instance, 'instance', 'ModifiedFrom'); currentPage = 'instance'; - currentUuid = $.mobile.pageData.uuid; + currentUuid = pageData.uuid; }); }); }); @@ -704,7 +742,9 @@ $('#instance-preview').live('click', function(e) { if ($.mobile.pageData) { - var pdf = '../instances/' + $.mobile.pageData.uuid + '/pdf'; + var pageData = DeepCopy($.mobile.pageData); + + var pdf = '../instances/' + pageData.uuid + '/pdf'; $.ajax({ url: pdf, cache: false, @@ -712,11 +752,11 @@ window.location.assign(pdf); }, error: function() { - GetResource('/instances/' + $.mobile.pageData.uuid + '/frames', function(frames) { + GetResource('/instances/' + pageData.uuid + '/frames', function(frames) { if (frames.length == 1) { // Viewing a single-frame image - jQuery.slimbox('../instances/' + $.mobile.pageData.uuid + '/preview', '', { + jQuery.slimbox('../instances/' + pageData.uuid + '/preview', '', { overlayFadeDuration : 1, resizeDuration : 1, imageFadeDuration : 1 @@ -728,7 +768,7 @@ var images = []; for (var i = 0; i < frames.length; i++) { - images.push([ '../instances/' + $.mobile.pageData.uuid + '/frames/' + i + '/preview' ]); + images.push([ '../instances/' + pageData.uuid + '/frames/' + i + '/preview' ]); } jQuery.slimbox(images, 0, { @@ -748,8 +788,10 @@ $('#series-preview').live('click', function(e) { if ($.mobile.pageData) { - GetResource('/series/' + $.mobile.pageData.uuid, function(series) { - GetResource('/series/' + $.mobile.pageData.uuid + '/instances', function(instances) { + var pageData = DeepCopy($.mobile.pageData); + + GetResource('/series/' + pageData.uuid, function(series) { + GetResource('/series/' + pageData.uuid + '/instances', function(instances) { Sort(instances, function(x) { return x.IndexInSeries; }, true, false); var images = []; @@ -858,6 +900,8 @@ $('#instance-store,#series-store,#study-store,#patient-store').live('click', function(e) { ChooseDicomModality(function(modality, peer) { + var pageData = DeepCopy($.mobile.pageData); + var url; var loading; @@ -878,7 +922,7 @@ url: url, type: 'POST', dataType: 'text', - data: $.mobile.pageData.uuid, + data: pageData.uuid, async: true, // Necessary to block UI beforeSend: function() { $.blockUI({ message: $(loading) });