",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=s++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var a=!1;e(document).mouseup(function(){a=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!a){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),a=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),a=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("
").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left
i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;
7 | this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable});
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cornerstoneDemo",
3 | "version": "0.1.0",
4 | "description": "Cornerstone Demo",
5 | "keywords": [
6 | "DICOM",
7 | "WADO",
8 | "cornerstone",
9 | "medical",
10 | "imaging"
11 | ],
12 | "author": "Chris Hafey",
13 | "homepage": "https://github.com/chafey/cornerstoneDemo",
14 | "licnense": "MIT",
15 | "repository": {
16 | "type": "git",
17 | "url": "https://github.com/chafey/cornerstoneDemo.git"
18 | },
19 | "scripts": {
20 | "test": "echo \"Error: no test specified\" && exit 1"
21 | },
22 | "devDependencies": {
23 | "grunt-contrib-copy": "0.4.x",
24 | "grunt-contrib-qunit": "^0.4.0",
25 | "grunt-contrib-concat": "^0.3.0",
26 | "grunt-contrib-watch": "^0.6.1",
27 | "grunt-contrib-clean": "^0.5.0",
28 | "grunt-contrib-jshint": "^0.8.0",
29 | "grunt-contrib-uglify": "^0.4.0",
30 | "load-grunt-tasks": "^0.2.1"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/studies/crstudy.json:
--------------------------------------------------------------------------------
1 | {
2 | "patientName": "MISTER^CR",
3 | "patientId": "9227465",
4 | "studyDate": "20010109",
5 | "modality": "CR",
6 | "studyDescription": "pelvis",
7 | "numImages": 2,
8 | "studyId": "crstudy",
9 | "seriesList": [{
10 | "seriesDescription": "Pelvis PA",
11 | "seriesNumber": "1",
12 | "instanceList": [{
13 | "imageId": "1.5191KB.DCM"
14 | }]
15 | },
16 | {
17 | "seriesDescription": "PELVIS LAT",
18 | "seriesNumber": "1",
19 | "instanceList": [{
20 | "imageId": "2.516KB.DCM"
21 | }]
22 | }
23 | ]
24 | }
--------------------------------------------------------------------------------
/studies/ctstudy.json:
--------------------------------------------------------------------------------
1 | {
2 | "patientName": "MISTER^CT",
3 | "patientId": "2178309",
4 | "studyDate": "20010105",
5 | "modality": "CT",
6 | "studyDescription": "CHEST",
7 | "numImages": 111,
8 | "studyId": "ctstudy",
9 | "seriesList": [{
10 | "seriesUid": "1.5191",
11 | "seriesDescription": "HELICAL CHEST",
12 | "seriesNumber": "2",
13 | "instanceList": [{
14 | "imageId": "CTStudy/1.5191KB.DCM"
15 | },
16 | {
17 | "imageId": "CTStudy/2.516KB.DCM"
18 | },
19 | {
20 | "imageId": "CTStudy/3.79KB.DCM"
21 | },
22 | {
23 | "imageId": "CTStudy/test.dcm"
24 | }
25 | ]
26 | },
27 | {
28 | "seriesUid": "2.516",
29 | "seriesDescription": "SCOUT PA",
30 | "seriesNumber": "1",
31 | "instanceList": [{
32 | "imageId": "CTStudy/2.516KB.DCM"
33 | }]
34 | },
35 | {
36 | "seriesUid": "3.79",
37 | "seriesDescription": "SCOUT LAT",
38 | "seriesNumber": "1.1",
39 | "instanceList": [{
40 | "imageId": "CTStudy/3.79KB.DCM"
41 | }]
42 | },
43 | {
44 | "seriesUid": "5",
45 | "seriesDescription": "PATHOLOGY",
46 | "seriesNumber": "5",
47 | "instanceList": [{
48 | "imageId": "http://127.0.0.1/testDICOM/JPG/1.jpg"
49 | }]
50 | }
51 | ]
52 | }
--------------------------------------------------------------------------------
/studies/dermatology.json:
--------------------------------------------------------------------------------
1 | {
2 | "patientName": "Dermatology",
3 | "patientId": "922746522",
4 | "studyDate": "20010109",
5 | "modality": "DERM",
6 | "studyDescription": "Skin Rash",
7 | "numImages": 2,
8 | "studyId": "dermatology",
9 | "seriesList": [{
10 | "seriesDescription": "Back",
11 | "seriesNumber": "28858",
12 | "instanceList": [{
13 | "imageId": "http://127.0.0.1/testDICOM/JPG/1.jpg"
14 | }]
15 | }]
16 | }
--------------------------------------------------------------------------------
/studies/dxstudy.json:
--------------------------------------------------------------------------------
1 | {
2 | "patientName": "MISTER^CR",
3 | "patientId": "9227465",
4 | "studyDate": "20010109",
5 | "modality": "DX",
6 | "studyDescription": "CHEST",
7 | "numImages": 2,
8 | "studyId": "dxstudy",
9 | "seriesList": [{
10 | "seriesDescription": "PA",
11 | "seriesNumber": "28858",
12 | "instanceList": [{
13 | "imageId": "DXStudy/3.79KB.DCM"
14 | }]
15 | },
16 | {
17 | "seriesDescription": "LAT",
18 | "seriesNumber": "28860",
19 | "instanceList": [{
20 | "imageId": "DXStudy/2.516KB.DCM"
21 | }]
22 | }
23 | ]
24 | }
--------------------------------------------------------------------------------
/studies/mgstudy.json:
--------------------------------------------------------------------------------
1 | {
2 | "patientName": "MS^MG",
3 | "patientId": "1346269",
4 | "studyDate": "20010109",
5 | "modality": "MG",
6 | "studyDescription": "MAMMOGRAM",
7 | "numImages": 8,
8 | "studyId": "mgstudy",
9 | "seriesList": [{
10 | "seriesDescription": "MAMMOGRAM",
11 | "seriesNumber": "700",
12 | "instanceList": [{
13 | "imageId": "MGStudy/1.5191KB.DCM"
14 | }]
15 | },
16 | {
17 | "seriesDescription": "MAMMOGRAM",
18 | "seriesNumber": "700",
19 | "instanceList": [{
20 | "imageId": "MGStudy/2.516KB.DCM"
21 | }]
22 | },
23 | {
24 | "seriesDescription": "MAMMOGRAM",
25 | "seriesNumber": "700",
26 | "instanceList": [{
27 | "imageId": "MGStudy/3.79KB.DCM"
28 | }]
29 | },
30 | {
31 | "seriesDescription": "MAMMOGRAM",
32 | "seriesNumber": "700",
33 | "instanceList": [{
34 | "imageId": "MGStudy/3.79KB.DCM"
35 | }]
36 | },
37 | {
38 | "seriesDescription": "BILATERAL",
39 | "seriesNumber": "699",
40 | "instanceList": [{
41 | "imageId": "MGStudy/3.79KB.DCM"
42 | }]
43 | },
44 | {
45 | "seriesDescription": "BILATERAL",
46 | "seriesNumber": "699",
47 | "instanceList": [{
48 | "imageId": "MGStudy/1.5191KB.DCM"
49 | }]
50 | },
51 | {
52 | "seriesDescription": "BILATERAL",
53 | "seriesNumber": "699",
54 | "instanceList": [{
55 | "imageId": "MGStudy/1.5191KB.DCM"
56 | }]
57 | },
58 | {
59 | "seriesDescription": "BILATERAL",
60 | "seriesNumber": "699",
61 | "instanceList": [{
62 | "imageId": "MGStudy/1.5191KB.DCM"
63 | }]
64 | },
65 | {
66 | "seriesDescription": "BILATERAL",
67 | "seriesNumber": "699",
68 | "instanceList": [{
69 | "imageId": "MGStudy/test.dcm"
70 | }]
71 | }
72 | ]
73 | }
--------------------------------------------------------------------------------
/studies/mrstudy.json:
--------------------------------------------------------------------------------
1 | {
2 | "patientName": "MISTER^MR",
3 | "patientId": "832040",
4 | "studyDate": "20010108",
5 | "modality": "MR",
6 | "studyDescription": "BRAIN SELLA",
7 | "numImages": 17,
8 | "studyId": "mrstudy",
9 | "seriesList": [{
10 | "seriesDescription": "3-PLANE LOC",
11 | "seriesNumber": "1",
12 | "instanceList": [{
13 | "imageId": "MRStudy/MR000000.dcm"
14 | },
15 | {
16 | "imageId": "MRStudy/MR000001.dcm"
17 | },
18 | {
19 | "imageId": "MRStudy/MR000002.dcm"
20 | },
21 | {
22 | "imageId": "MRStudy/MR000003.dcm"
23 | },
24 | {
25 | "imageId": "MRStudy/MR000003.dcm"
26 | },
27 | {
28 | "imageId": "MRStudy/MR000004.dcm"
29 | },
30 | {
31 | "imageId": "MRStudy/MR000005.dcm"
32 | },
33 | {
34 | "imageId": "MRStudy/MR000006.dcm"
35 | },
36 | {
37 | "imageId": "MRStudy/MR000007.dcm"
38 | },
39 | {
40 | "imageId": "MRStudy/MR000008.dcm"
41 | }
42 | ]
43 | },
44 | {
45 | "seriesDescription": "SAG T-1",
46 | "seriesNumber": "2",
47 | "instanceList": [{
48 | "imageId": "MRStudy/MR000009.dcm"
49 | },
50 | {
51 | "imageId": "MRStudy/MR000010.dcm"
52 | },
53 | {
54 | "imageId": "MRStudy/MR000011.dcm"
55 | },
56 | {
57 | "imageId": "MRStudy/MR000012.dcm"
58 | }
59 | ]
60 | }
61 | ]
62 | }
--------------------------------------------------------------------------------
/studies/ptctstudy.json:
--------------------------------------------------------------------------------
1 | {
2 | "patientName": "Patient^Anonymous",
3 | "patientId": "12345678",
4 | "studyDate": "20100510",
5 | "modality": "PTCT",
6 | "studyDescription": "Neck^HeadNeckPETCT",
7 | "numImages": 261,
8 | "studyId": "ptctstudy",
9 | "seriesList": [{
10 | "seriesUid": "1.3.6.1.4.1.25403.52237031786.3872.20100510032220.2",
11 | "seriesDescription": "CT HeadNeck 5.0 H30s",
12 | "seriesNumber": "2",
13 | "instanceList": [{
14 | "imageId": "PTCTStudy/1.5191KB.DCM"
15 | },
16 | {
17 | "imageId": "PTCTStudy/2.516KB.DCM"
18 | },
19 | {
20 | "imageId": "PTCTStudy/3.79KB.DCM"
21 | },
22 | {
23 | "imageId": "PTCTStudy/test.dcm"
24 | }
25 | ]
26 | },
27 | {
28 | "seriesUid": "1.3.6.1.4.1.25403.52237031786.3872.20100510032225.14",
29 | "seriesDescription": "PET WB-uncorrected",
30 | "seriesNumber": "605",
31 | "instanceList": [{
32 | "imageId": "PTCTStudy/1.5191KB.DCM"
33 | },
34 | {
35 | "imageId": "PTCTStudy/2.516KB.DCM"
36 | },
37 | {
38 | "imageId": "PTCTStudy/3.79KB.DCM"
39 | },
40 | {
41 | "imageId": "PTCTStudy/test.dcm"
42 | }
43 | ]
44 | },
45 | {
46 |
47 | "seriesUid": "1.3.6.1.4.1.25403.52237031786.3872.20100510032227.20",
48 | "seriesDescription": "PET WB",
49 | "seriesNumber": "606",
50 | "instanceList": [{
51 | "imageId": "PTCTStudy/1.5191KB.DCM"
52 | },
53 | {
54 | "imageId": "PTCTStudy/2.516KB.DCM"
55 | },
56 | {
57 | "imageId": "PTCTStudy/3.79KB.DCM"
58 | },
59 | {
60 | "imageId": "PTCTStudy/test.dcm"
61 | }
62 | ]
63 | }
64 | ]
65 | }
--------------------------------------------------------------------------------
/studies/usdopplerstudy.json:
--------------------------------------------------------------------------------
1 | {
2 | "patientName": "US Echo",
3 | "patientId": "",
4 | "studyDate": "20120418",
5 | "modality": "US",
6 | "studyDescription": "US Dopler",
7 | "numImages": 22,
8 | "studyId": "usdopplerstudy",
9 | "seriesList": [{
10 | "seriesDescription": "Image #1",
11 | "seriesNumber": "1",
12 | "instanceList": [{
13 | "imageId": "USDoppler/1.5191KB.DCM"
14 | }]
15 | },
16 | {
17 | "seriesDescription": "Image #2",
18 | "seriesNumber": "2",
19 | "instanceList": [{
20 | "imageId": "USDoppler/2.516KB.DCM"
21 | }]
22 | },
23 | {
24 | "seriesDescription": "Image #3",
25 | "seriesNumber": "3",
26 | "instanceList": [{
27 | "imageId": "USDoppler/3.79KB.DCM"
28 | }]
29 | }
30 | ]
31 | }
--------------------------------------------------------------------------------
/studies/usjpeg.json:
--------------------------------------------------------------------------------
1 | {
2 | "patientName": "US JPEG",
3 | "patientId": "123454321",
4 | "studyDate": "20120418",
5 | "modality": "US",
6 | "studyDescription": "US FETAL SURVEY",
7 | "numImages": 22,
8 | "studyId": "usjpeg",
9 | "seriesList": [{
10 | "seriesDescription": "Image #1",
11 | "seriesNumber": "1",
12 | "instanceList": [{
13 | "imageId": "GEOB/1.5191KB.DCM"
14 | }]
15 | },
16 | {
17 | "seriesDescription": "Image #2",
18 | "seriesNumber": "2",
19 | "instanceList": [{
20 | "imageId": "GEOB/2.516KB.DCM"
21 | }]
22 | },
23 | {
24 | "seriesDescription": "Image #3 (clip)",
25 | "seriesNumber": "3",
26 | "numberOfFrames": 96,
27 | "frameRate": 31,
28 | "instanceList": [{
29 | "imageId": "GEOB/3.79KB.DCM"
30 | }]
31 | }
32 | ]
33 | }
--------------------------------------------------------------------------------
/studyList.json:
--------------------------------------------------------------------------------
1 | {
2 | "studyList": [{
3 | "patientName": "患者^MR",
4 | "patientId": "832040",
5 | "studyDate": "20010108",
6 | "modality": "MR",
7 | "studyDescription": "BRAIN SELLA",
8 | "numImages": 17,
9 | "studyId": "mrstudy"
10 | },
11 | {
12 | "patientName": "患者^CT",
13 | "patientId": "2178309",
14 | "studyDate": "20010105",
15 | "modality": "CT",
16 | "studyDescription": "CHEST",
17 | "numImages": 111,
18 | "studyId": "ctstudy"
19 | },
20 | {
21 | "patientName": "患者^CR",
22 | "patientId": "9227465",
23 | "studyDate": "20010109",
24 | "modality": "CR",
25 | "studyDescription": "pelvis",
26 | "numImages": 2,
27 | "studyId": "crstudy"
28 | },
29 | {
30 | "patientName": "患者^DX",
31 | "patientId": "3524578",
32 | "studyDate": "20010109",
33 | "modality": "DX",
34 | "studyDescription": "CHEST",
35 | "numImages": 2,
36 | "studyId": "dxstudy"
37 | },
38 | {
39 | "patientName": "患者^MG",
40 | "patientId": "1346269",
41 | "studyDate": "20010109",
42 | "modality": "MG",
43 | "studyDescription": "MAMMOGRAM",
44 | "numImages": 8,
45 | "studyId": "mgstudy"
46 | },
47 | {
48 | "patientName": "患者^Anonymous",
49 | "patientId": "12345678",
50 | "studyDate": "20100510",
51 | "modality": "PTCT",
52 | "studyDescription": "Neck^HeadNeckPETCT",
53 | "numImages": 261,
54 | "studyId": "ptctstudy"
55 | },
56 | {
57 | "patientName": "US Echo",
58 | "patientId": "",
59 | "studyDate": "20120418",
60 | "modality": "US",
61 | "studyDescription": "US Dopler",
62 | "numImages": 22,
63 | "studyId": "usdopplerstudy"
64 | },
65 | {
66 | "patientName": "Dermatology",
67 | "patientId": "922746522",
68 | "studyDate": "20010109",
69 | "modality": "DERM",
70 | "studyDescription": "Skin Rash",
71 | "numImages": 2,
72 | "studyId": "dermatology"
73 | },
74 | {
75 | "patientName": "US JPEG",
76 | "patientId": "123454321",
77 | "studyDate": "20120418",
78 | "modality": "US",
79 | "studyDescription": "US FETAL SURVEY",
80 | "numImages": 22,
81 | "studyId": "usjpeg"
82 | }
83 | ]
84 | }
--------------------------------------------------------------------------------
/studyViewer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
59 |
60 |
61 |
62 |
63 |
64 |
Patient Name
65 |
Patient Id
66 |
67 |
68 |
69 |
Study Description
70 |
Study Date
71 |
72 |
73 |
74 |
FPS:
75 |
Render Time:
76 |
Image #:
77 |
78 |
79 |
80 |
Zoom:
81 |
WW/WC:
82 |
83 |
84 |
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/templates/about.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 | This demo is based on the Cornerstone open source project. All 2D image rendering is done on the client side
11 | side using HTML5 and JavaScript. DICOM P10 Instances are retrieved via WADO, parsed and displayed by the viewer -
12 | the server side performs no processing.
13 |
14 |
15 |
Click here to learn more about cornerstone
16 |
17 |
18 |
Click here to read about the architecture
19 |
20 |
21 | Hosting of demo images provided by
Lury
22 |
23 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/templates/help.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 | Select a study in the study list to view its images, a new tab will be created for each study.
11 | Interact with the image using your mouse: left click drag - ww/wl, middle click drag - pan, right click drag - zoom, mouse wheel - scroll through stack
12 | Select another series to display by left click the series list on the left
13 | Select another tool to use with the left mouse button by selecting the tool button
14 |
15 |
16 | This demo requires a HTLM5 browser, Google Chrome is recommended.
17 |
18 |
19 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/templates/studyViewer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/templates/viewport.html:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 |
12 |
Patient Name
13 |
Patient Id
14 |
15 |
16 |
17 |
Study Description
18 |
Study Date
19 |
20 |
21 |
22 |
FPS:
23 |
Render Time:
24 |
Image #:
25 |
26 |
27 |
28 |
Zoom:
29 |
WW/WC:
30 |
31 |
32 |
--------------------------------------------------------------------------------