Mercurial > hg > orthanc
comparison OrthancExplorer/explorer.js @ 80:6212bf978584
status of series
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 20 Sep 2012 15:18:12 +0200 |
parents | 4bc019d2f969 |
children | 9eb40cad7935 |
comparison
equal
deleted
inserted
replaced
79:297bad4e1019 | 80:6212bf978584 |
---|---|
83 else | 83 else |
84 return d.toString('dddd, MMMM d, yyyy'); | 84 return d.toString('dddd, MMMM d, yyyy'); |
85 } | 85 } |
86 | 86 |
87 | 87 |
88 | 88 function Sort(arr, fieldExtractor, isInteger, reverse) |
89 function SortOnDicomTag(arr, tag, isInteger, reverse) | |
90 { | 89 { |
91 var defaultValue; | 90 var defaultValue; |
92 if (isInteger) | 91 if (isInteger) |
93 defaultValue = 0; | 92 defaultValue = 0; |
94 else | 93 else |
95 defaultValue = ''; | 94 defaultValue = ''; |
96 | 95 |
97 arr.sort(function(a, b) { | 96 arr.sort(function(a, b) { |
98 var ta = a.MainDicomTags[tag]; | 97 var ta = fieldExtractor(a); |
99 var tb = b.MainDicomTags[tag]; | 98 var tb = fieldExtractor(b); |
100 var order; | 99 var order; |
101 | 100 |
102 if (ta == undefined) | 101 if (ta == undefined) |
103 ta = defaultValue; | 102 ta = defaultValue; |
104 | 103 |
124 if (reverse) | 123 if (reverse) |
125 return -order; | 124 return -order; |
126 else | 125 else |
127 return order; | 126 return order; |
128 }); | 127 }); |
128 } | |
129 | |
130 | |
131 function SortOnDicomTag(arr, tag, isInteger, reverse) | |
132 { | |
133 return Sort(arr, function(a) { | |
134 return a.MainDicomTags[tag]; | |
135 }, isInteger, reverse); | |
129 } | 136 } |
130 | 137 |
131 | 138 |
132 | 139 |
133 function GetSingleResource(type, uuid, callback) | 140 function GetSingleResource(type, uuid, callback) |
264 | 271 |
265 | 272 |
266 | 273 |
267 function FormatSeries(series, link, isReverse) | 274 function FormatSeries(series, link, isReverse) |
268 { | 275 { |
269 var s = ('<h3>{0}</h3>{1}' + | 276 var c; |
270 '<span class="ui-li-count">{2}</span>').format | 277 if (series.Instances.length == series.ExpectedNumberOfInstances) |
278 { | |
279 c = series.ExpectedNumberOfInstances; | |
280 } | |
281 else | |
282 { | |
283 c = series.Instances.length + '/' + series.ExpectedNumberOfInstances; | |
284 } | |
285 | |
286 var s = ('<h3>{0}</h3>' + | |
287 '<p><em>Status: <strong>{1}</strong></em></p>{2}' + | |
288 '<span class="ui-li-count">{3}</span>').format | |
271 (series.MainDicomTags.SeriesDescription, | 289 (series.MainDicomTags.SeriesDescription, |
290 series.Status, | |
272 FormatMainDicomTags(series.MainDicomTags, [ | 291 FormatMainDicomTags(series.MainDicomTags, [ |
273 "SeriesDescription", | 292 "SeriesDescription", |
274 "SeriesTime", | 293 "SeriesTime", |
275 "Manufacturer", | 294 "Manufacturer", |
276 "ImagesInAcquisition", | 295 "ImagesInAcquisition", |
277 "SeriesDate" | 296 "SeriesDate" |
278 ]), | 297 ]), |
279 series.Instances.length | 298 c |
280 ); | 299 ); |
281 | 300 |
282 return CompleteFormatting(s, link, isReverse); | 301 return CompleteFormatting(s, link, isReverse); |
283 } | 302 } |
284 | 303 |
285 | 304 |
286 function FormatInstance(instance, link, isReverse) | 305 function FormatInstance(instance, link, isReverse) |
287 { | 306 { |
288 var s = ('<h3>Instance {0}</h3>{1}').format | 307 var s = ('<h3>Instance {0}</h3>{1}').format |
289 (instance.MainDicomTags.InstanceNumber, | 308 (instance.IndexInSeries, |
290 FormatMainDicomTags(instance.MainDicomTags, [ | 309 FormatMainDicomTags(instance.MainDicomTags, [ |
291 "AcquisitionNumber", | 310 "AcquisitionNumber", |
292 "InstanceNumber", | 311 "InstanceNumber", |
293 "InstanceCreationDate", | 312 "InstanceCreationDate", |
294 "InstanceCreationTime" | 313 "InstanceCreationTime" |
388 if ($.mobile.pageData) { | 407 if ($.mobile.pageData) { |
389 GetSingleResource('series', $.mobile.pageData.uuid, function(series) { | 408 GetSingleResource('series', $.mobile.pageData.uuid, function(series) { |
390 GetSingleResource('studies', series.ParentStudy, function(study) { | 409 GetSingleResource('studies', series.ParentStudy, function(study) { |
391 GetSingleResource('patients', study.ParentPatient, function(patient) { | 410 GetSingleResource('patients', study.ParentPatient, function(patient) { |
392 GetMultipleResources('instances', series.Instances, function(instances) { | 411 GetMultipleResources('instances', series.Instances, function(instances) { |
393 SortOnDicomTag(instances, 'InstanceNumber', true, false); | 412 Sort(instances, function(x) { return x.IndexInSeries; }, true, false); |
394 | 413 |
395 $('#series-info li').remove(); | 414 $('#series-info li').remove(); |
396 $('#series-info') | 415 $('#series-info') |
397 .append('<li data-role="list-divider">Patient</li>') | 416 .append('<li data-role="list-divider">Patient</li>') |
398 .append(FormatPatient(patient, '#patient?uuid=' + patient.ID, true)) | 417 .append(FormatPatient(patient, '#patient?uuid=' + patient.ID, true)) |
620 | 639 |
621 $('#series-preview').live('click', function(e) { | 640 $('#series-preview').live('click', function(e) { |
622 if ($.mobile.pageData) { | 641 if ($.mobile.pageData) { |
623 GetSingleResource('series', $.mobile.pageData.uuid, function(series) { | 642 GetSingleResource('series', $.mobile.pageData.uuid, function(series) { |
624 GetMultipleResources('instances', series.Instances, function(instances) { | 643 GetMultipleResources('instances', series.Instances, function(instances) { |
625 SortOnDicomTag(instances, 'InstanceNumber', true, false); | 644 Sort(instances, function(x) { return x.IndexInSeries; }, true, false); |
626 | 645 |
627 var images = []; | 646 var images = []; |
628 for (var i = 0; i < instances.length; i++) { | 647 for (var i = 0; i < instances.length; i++) { |
629 images.push([ '/instances/' + instances[i].ID + '/preview', | 648 images.push([ '/instances/' + instances[i].ID + '/preview', |
630 '{0}/{1}'.format(i + 1, instances.length) ]) | 649 '{0}/{1}'.format(i + 1, instances.length) ]) |