diff --git a/apps/heatmap/heatmap.html b/apps/heatmap/heatmap.html
index 9c2a04bd8..6bed0baa9 100644
--- a/apps/heatmap/heatmap.html
+++ b/apps/heatmap/heatmap.html
@@ -189,7 +189,7 @@
}
else if(!$D.params.execId){
- redirect($D.pages.table,'execId is undefined. Redirecting to Table.');
+ redirect($D.pages.table,'ExecId Is Undefined. Redirecting To Table.');
}
else if ($D.params && ($D.params.slide || $D.params.specimen ||$D.params.study || $D.params.location)){
@@ -197,7 +197,7 @@
STORE.findSlide($D.params.slide, $D.params.study, $D.params.specimen, $D.params.location).then(x=>{
let offset = parseInt($D.params.offset,10) || 0;
if(x.length == 0 || offset >= x.length){
- redirect($D.pages.table,'No Slide Found. Redirecting to Table.');
+ redirect($D.pages.table,'No Slide Found. Redirecting To Table.');
} else {
newParams = $D.params
delete newParams.data
@@ -210,13 +210,13 @@
}
}).catch(e=>{
console.warn(e)
- redirect($D.pages.table,'Redirecting to Table.');
+ redirect($D.pages.table,'Redirecting To Table.');
})
// find the associated slideID
// open viewer with that slideID
}
else {
- redirect($D.pages.table,'Slide is undefined. Redirecting to Table.');
+ redirect($D.pages.table,'Slide Is Undefined. Redirecting To Table.');
}
// get states parameters
diff --git a/apps/heatmap/init.js b/apps/heatmap/init.js
index 9825460e3..a612e4ac2 100644
--- a/apps/heatmap/init.js
+++ b/apps/heatmap/init.js
@@ -89,7 +89,7 @@ function initCore(){
if(!$D.heatMapData){
- redirect($D.pages.table,`No Heatmap's data Found. Redirecting to Table.`);
+ redirect($D.pages.table,`No Heatmap's Data Found. Redirecting To Table.`);
}
@@ -185,7 +185,7 @@ function initCore(){
// editedDate:$D.
onFieldChange: editorPenChange,
onReset: function(){
- if(confirm('Do you want to clear edited data?')){
+ if(confirm('Do You Want To Clear Edited Data?')){
$CAMIC.viewer.canvasDrawInstance.clear();
}
}, // clearEditData
diff --git a/apps/heatmap/uicallbacks.js b/apps/heatmap/uicallbacks.js
index aa9aeaa7c..55b676eae 100644
--- a/apps/heatmap/uicallbacks.js
+++ b/apps/heatmap/uicallbacks.js
@@ -371,7 +371,7 @@ function heatmapEditorOff(){
2. Analytics
*/
async function onUpdateHeatmapFields(){
- if(!confirm('Do you want to update Threshold values?')) return;
+ if(!confirm('Do You Want To Update Threshold?')) return;
Loading.open(document.body,'Saving Threshold ... ');
const fields = $D.heatMapData.provenance.analysis.fields;
const subject = $D.heatMapData.provenance.image.subject_id;
@@ -384,7 +384,7 @@ async function onUpdateHeatmapFields(){
async function onExportEditData(){
if($D.editedDataClusters.isEmpty()){
- alert('There are no edit data to export...');
+ alert('No Edit Data ... ');
return;
}
const user = getUserId();
@@ -548,8 +548,8 @@ async function onDeleteEditData(data){
const cluster = data.cluster;
const idx = data.index;
- if(!confirm(`Do you want to delete { ${cluster.name} - ${cluster.value==0?'Negative':'Positive'} index:${idx} }?`)) return;
- Loading.open(document.body,`deleting Edit Data ...`);
+ if(!confirm(`Do You Want To Delete { ${cluster.name} - ${cluster.value==0?'Negative':'Positive'} Index:${idx} }?`)) return;
+ Loading.open(document.body,`Deleting Edit Data ...`);
// UPDATE EDIT DATA
$D.editedDataClusters.removeEditDataForCluster(cluster.index, cluster.name, cluster.value, cluster.color, idx);
diff --git a/apps/labeling/labeling.html b/apps/labeling/labeling.html
index a03997c0c..273a458ee 100644
--- a/apps/labeling/labeling.html
+++ b/apps/labeling/labeling.html
@@ -91,7 +91,7 @@
createWarningText('You are using an IE/Edge browser that may be lead to erratic behavior on caMicroscope. Please switch to Chrome, Firefox or Safari browser to improve your experience.');
}
- Loading.open(document.body, 'CaMicroscope is initializing...');
+ Loading.open(document.body, 'CaMicroscope Is Initializing...');
// get slide id from url
const url = new URL(window.location.href);
$D.params = getUrlVars();
@@ -105,7 +105,7 @@
STORE.findSlide($D.params.slide, $D.params.study, $D.params.specimen, $D.params.location).then(x=>{
let offset = parseInt($D.params.offset,10) || 0;
if(x.length == 0 || offset >= x.length){
- redirect($D.pages.table,'No Slide Found. Redirecting to Table.');
+ redirect($D.pages.table,'No Slide Found. Redirecting To Table.');
} else {
newParams = $D.params
delete newParams.data
@@ -118,12 +118,12 @@
}
}).catch(e=>{
console.warn(e)
- redirect($D.pages.table,'Redirecting to Table.');
+ redirect($D.pages.table,'Redirecting To Table.');
})
// find the associated slideID
// open viewer with that slideID
}else{
- redirect($D.pages.table,'Slide Id is undefined. Redirecting to Flex Table.');
+ redirect($D.pages.table,'Slide Id Is Undefined. Redirecting To Flex Table.');
}
// get states parameters
diff --git a/apps/labeling/labeling.js b/apps/labeling/labeling.js
index 68b146ae8..1409b7cab 100644
--- a/apps/labeling/labeling.js
+++ b/apps/labeling/labeling.js
@@ -154,7 +154,7 @@ function initCore(){
}
function downloadLabel(){
if(!$CAMIC.viewer.pmanager.hasPatches()){
- alert('There is no patches');
+ alert('There Is No Patches');
return;
}
diff --git a/apps/segment/segment.html b/apps/segment/segment.html
index 8ac6ae76b..da9ecdc29 100755
--- a/apps/segment/segment.html
+++ b/apps/segment/segment.html
@@ -163,7 +163,7 @@
STORE.findSlide($D.params.slide, $D.params.study, $D.params.specimen, $D.params.location).then(x=>{
let offset = parseInt($D.params.offset,10) || 0;
if(x.length == 0 || offset >= x.length){
- redirect($D.pages.table,'No Slide Found. Redirecting to Table.');
+ redirect($D.pages.table,'No Slide Found. Redirecting To Table.');
} else {
newParams = $D.params
delete newParams.data
@@ -176,13 +176,13 @@
}
}).catch(e=>{
console.warn(e)
- redirect($D.pages.table,'Redirecting to Table.');
+ redirect($D.pages.table,'Redirecting To Table.');
})
// find the associated slideID
// open viewer with that slideID
}
else {
- redirect($D.pages.table,'Slide is undefined. Redirecting to Table.');
+ redirect($D.pages.table,'Slide Is Undefined. Redirecting To Table.');
}
// get states parameters
diff --git a/apps/segment/segment.js b/apps/segment/segment.js
index 5ecbba4b7..577f3f5b8 100644
--- a/apps/segment/segment.js
+++ b/apps/segment/segment.js
@@ -290,7 +290,7 @@ function checkSize(imgColl, imagingHelper) {
// check that image size is ok
if (width * height > 8000000) {
- alert("Selected ROI too large, current version is limited to 4 megapixels");
+ alert("Selected ROI Too Large, Current Version Is Limited To 4 Megapixels");
// Clear the rectangle canvas-draw-overlay.clear()
$CAMIC.viewer.canvasDrawInstance.clear();
return {}; //throw('image too large')
diff --git a/apps/segment/segmentpanel/segmentpanel.js b/apps/segment/segmentpanel/segmentpanel.js
index 47cf9c3af..96cc4159c 100644
--- a/apps/segment/segmentpanel/segmentpanel.js
+++ b/apps/segment/segmentpanel/segmentpanel.js
@@ -111,7 +111,7 @@ SegmentPanel.prototype.close = function(){
};
SegmentPanel.prototype.save = function(){
- alert('Saving Image and Mask!');
+ alert('Saving Image And Mask!');
};
SegmentPanel.prototype.showThreshBar = function(){
diff --git a/apps/table.html b/apps/table.html
index 7057787c3..38f6fa236 100644
--- a/apps/table.html
+++ b/apps/table.html
@@ -306,7 +306,7 @@
if(i==0) default_btn.push("NO DATA")
else default_btn.push('')
});
- const btn = ``
+ const btn = ``
default_btn.push(btn);
return [default_btn];
}
diff --git a/apps/viewer/uicallbacks.js b/apps/viewer/uicallbacks.js
index 888353688..0508103fb 100644
--- a/apps/viewer/uicallbacks.js
+++ b/apps/viewer/uicallbacks.js
@@ -187,7 +187,7 @@ label.style.width = 0;
function draw(e){
if(!$CAMIC.viewer.canvasDrawInstance){
- alert('draw doesn\'t initialize');
+ alert('Draw Doesn\'t Initialize');
return;
}
const state = +e.state;
@@ -252,7 +252,7 @@ function annotationOff(){
if(!$CAMIC.viewer.canvasDrawInstance) return;
const canvasDraw = $CAMIC.viewer.canvasDrawInstance;
- if(canvasDraw._draws_data_.length && confirm(`Do you want to save annotation before you leave?`)){
+ if(canvasDraw._draws_data_.length && confirm(`Do You Want To Save Annotation Before You Leave?`)){
saveAnnotation();
}else{
canvasDraw.clear();
@@ -389,9 +389,9 @@ function anno_delete(data){
const annotationData = $D.overlayers.find(d=>d.data && d.data._id.$oid == data.oid);
let message;
if(annotationData.data.geometries){
- message = `Are you sure you want to delete this Annotation {ID:${data.id}} with ${annotationData.data.geometries.features.length} mark(s)?`;
+ message = `Are You Sure You Want To Delete This Annotation {ID:${data.id}} With ${annotationData.data.geometries.features.length} Mark(s)?`;
}else{
- message = `Are you sure you want to delete this markup {ID:${data.id}}?`;
+ message = `Are You Sure You Want To Delete This Markup {ID:${data.id}}?`;
}
$UI.annotPopup.close();
if(!confirm(message)) return;
@@ -499,7 +499,7 @@ function anno_callback(data){
// has Path?
if($CAMIC.viewer.canvasDrawInstance._path_index===0){
- alert('No Markup on Annotation.');
+ alert('No Markup On Annotation.');
return;
}
// save
@@ -652,7 +652,7 @@ function loadAnnotationById(camic, layerData ,callback){
layerData.item.loading = true;
const item = layerData.item;
- Loading.open(document.body,'loading layers...');
+ Loading.open(document.body,'Loading Layers...');
$CAMIC.store.getMarkByIds([item.id],$D.params.data.name)
.then(data =>{
@@ -692,9 +692,10 @@ function loadAnnotationById(camic, layerData ,callback){
return [Math.round(point[0]*imgWidth),Math.round(point[1]*imgHeight)];
});
d.properties.style = {
- color: "#7CFC00",
+ color: "#000080",
lineCap: "round",
- lineJoin: "round"
+ lineJoin: "round",
+ isFill:false
};
return {
_id:d._id,
@@ -705,6 +706,8 @@ function loadAnnotationById(camic, layerData ,callback){
});
// if(item) data[0].isShow = item.isShow;
item.render = old_anno_render;
+ item.clickable = false;
+ item.hoverable = false;
}else{
data[0].geometries = VieweportFeaturesToImageFeatures(camic.viewer, data[0].geometries);
item.data = data[0];
@@ -796,7 +799,7 @@ function hostedHeatmap(){
if (typeof list === "undefined") { list = [] }
// get heatmap data
if(!list.length){
- alert(`${slide} has No heatmap data.`);
+ alert(`${slide} Has No Heatmap Data.`);
return;
}
createHeatMapList(list);
@@ -849,7 +852,7 @@ function imgboxHeatmap(){
data.provenance.image.slide = slide
const execId = data.provenance.analysis.execution_id;
- Loading.open(document.body,'loading Heatmap...');
+ Loading.open(document.body,'Loading Heatmap...');
$CAMIC.store.addHeatmap(data).then(rs=>{
window.location.href = `../heatmap/heatmap.html${window.location.search}&execId=${execId}`;
}).catch(e=>{
@@ -892,6 +895,9 @@ function anno_render(ctx,data){
//DrawHelper.draw(this._canvas_ctx, this.data.canvasData);
}
function old_anno_render(ctx,data){
+ const imagingHelper = this.viewer.imagingHelper;
+ const lineWidth = (imagingHelper.physicalToDataX(1) - imagingHelper.physicalToDataX(0))>> 0;
+ ctx.lineWidth = lineWidth;
DrawHelper.draw(ctx, data);
}
diff --git a/apps/viewer/viewer.html b/apps/viewer/viewer.html
index 6aae684ea..a5ac0b7a2 100644
--- a/apps/viewer/viewer.html
+++ b/apps/viewer/viewer.html
@@ -186,7 +186,7 @@
STORE.findSlide($D.params.slide, $D.params.study, $D.params.specimen, $D.params.location).then(x=>{
let offset = parseInt($D.params.offset,10) || 0;
if(x.length == 0 || offset >= x.length){
- redirect($D.pages.table,'No Slide Found. Redirecting to Table.');
+ redirect($D.pages.table,'No Slide Found. Redirecting To Table.');
} else {
newParams = $D.params
delete newParams.data
diff --git a/components/loading/loading.js b/components/loading/loading.js
index e69d8632f..e939b5823 100644
--- a/components/loading/loading.js
+++ b/components/loading/loading.js
@@ -15,7 +15,7 @@ Loading.instance = null;
* @property {Element} the text element of Loading page.
*/
Loading.text = null;
-Loading.open = function(parentNode ,text = 'loading...',zIndex=999){
+Loading.open = function(parentNode ,text = 'Loading...',zIndex=999){
if(!Loading.instance) Loading.instance = Loading.createInstance();
if(parentNode !== Loading.instance.parentNode) Loading.close();
Loading.instance.style.zIndex = zIndex;
diff --git a/core/CaMic.js b/core/CaMic.js
index 3d12418ca..4b9f1a5b3 100644
--- a/core/CaMic.js
+++ b/core/CaMic.js
@@ -18,7 +18,7 @@ class CaMic{
*
*/
constructor(divId, slideQuery, options){
- Loading.open(document.body, 'CaMicroscope is initializing...');
+ Loading.open(document.body, 'CaMicroscope Is Initializing...');
// initalize viewer
this.setting = {
id: divId,
@@ -141,7 +141,7 @@ class CaMic{
* Loads the staged image
*/
loadImg(func){
- Loading.open(document.body, 'CaMicroscope is loading images ...');
+ Loading.open(document.body, 'CaMicroscope Is Loading Images ...');
// loads current image
// if id is set, use id
var slidePromise;
@@ -154,7 +154,7 @@ class CaMic{
slidePromise
.then((x)=>{
if(!x || !OpenSeadragon.isArray(x) || !x.length || !x[0].location){
- redirect($D.pages.table,`Can't find the slide information`);
+ redirect($D.pages.table,`Can't Find The Slide Information`);
return;
}
let data = x[0];
@@ -166,8 +166,8 @@ class CaMic{
}.bind(this),
error: function ( xhr, exc ) {
console.log(xhr, exc);
- Loading.text.textContent = 'Something wrong with this Slide... X_X';
- if(func && typeof func === 'function') func.call(null,{hasError:true,isServiceError:true,message:'Something wrong with this Slide... X_X'});
+ Loading.text.textContent = 'Something Wrong With This Slide... X_X';
+ if(func && typeof func === 'function') func.call(null,{hasError:true,isServiceError:true,message:'Something Wrong With This Slide... X_X'});
}.bind(this),
});
@@ -211,7 +211,7 @@ class CaMic{
imagingHelper.setMaxZoom(1);
data.url = "../../img/IIP/raw/?DeepZoom="+ data["location"] + ".dzi";
if(func && typeof func === 'function') func.call(null,data);
- Loading.text.textContent = `loading slide's tiles...`;
+ Loading.text.textContent = `Loading Slide's Tiles...`;
}
/**
@@ -252,7 +252,7 @@ class CaMic{
this.drawContextmenu.addHandler('clear',function(e){
if(this.viewer.canvasDrawInstance._draws_data_.length == 0) return;
- if(confirm("Do you want to clear all markups?")) this.viewer.canvasDrawInstance.clear();
+ if(confirm("Do You Want To Clear All Markups?")) this.viewer.canvasDrawInstance.clear();
}.bind(this));
// this.drawContextmenu.addHandler('draw-mode-changed',function(e){
diff --git a/core/Store.js b/core/Store.js
index 6bc857fb7..e9f1d0112 100644
--- a/core/Store.js
+++ b/core/Store.js
@@ -266,14 +266,19 @@ class Store {
**/
findMarkTypes(slide, name) {
let suffix = "Mark/types"
-
+
var query = {}
- //
+ //
if(!slide) {
console.error('Store.findMarkTypes needs slide ... ');
return null;
}
- query.slide = slide
+ // numeric->str coerce
+ if ((parseInt(slide)==slide)||(parseFloat(slide)==slide)){
+ query.slide = '"' + slide + '"'
+ } else {
+ query.slide = slide
+ }
if (name) {
query.name = name
suffix = "Mark/typesExec"
@@ -402,11 +407,11 @@ class Store {
var suffix = "Heatmap/threshold"
var url = this.base + suffix;
var query = {}
-
+
if (subject) {
query.subject = subject
}
-
+
if (caseid) {
query.case = caseid
}
@@ -430,7 +435,7 @@ class Store {
* add a Heatmap Edit Data
* @param {object} json - the heatmap edit data
* @returns {promise} - promise which resolves with response
- *
+ *
**/
addHeatmapEdit(json) {
var suffix = "HeatmapEdit/post"
@@ -455,15 +460,15 @@ class Store {
var suffix = "HeatmapEdit/update"
var url = this.base + suffix;
var query = {}
-
+
if (user) {
query.user = user
}
-
+
if (subject) {
query.subject = subject
}
-
+
if (caseid) {
query.case = caseid
}
@@ -486,15 +491,15 @@ class Store {
var suffix = "HeatmapEdit/find"
var url = this.base + suffix;
var query = {}
-
+
if (user) {
query.user = user
}
-
+
if (subject) {
query.subject = subject
}
-
+
if (caseid) {
query.case = caseid
}
@@ -520,11 +525,11 @@ class Store {
if (user) {
query.user = user
}
-
+
if (subject) {
query.subject = subject
}
-
+
if (caseid) {
query.case = caseid
}
diff --git a/core/extension/openseadragon-canvas-draw-overlay.js b/core/extension/openseadragon-canvas-draw-overlay.js
index aec48092d..94f5f1110 100644
--- a/core/extension/openseadragon-canvas-draw-overlay.js
+++ b/core/extension/openseadragon-canvas-draw-overlay.js
@@ -579,7 +579,7 @@
if(!(this.drawMode === 'line' ||this.drawMode == 'grid')){
let isIntersect = false;
if(isSelfIntersect(this._current_path_.geometry.coordinates[0])){
- alert('A Self-Intersecting Polygon will cause inaccurate Area and circumference.');
+ alert('A Self-Intersecting Polygon Will Cause Inaccurate Area and Circumference.');
isIntersect = true;
}
let sqmpsqp = null; // square microns per square pixels
diff --git a/core/extension/openseadragon-labeling/openseadragon-labeling.css b/core/extension/openseadragon-labeling/openseadragon-labeling.css
index 2bbf9b4eb..b8e07fc9d 100644
--- a/core/extension/openseadragon-labeling/openseadragon-labeling.css
+++ b/core/extension/openseadragon-labeling/openseadragon-labeling.css
@@ -97,14 +97,9 @@
z-index:999;
box-sizing:border-box;
top:0;
- left:calc(100% + 5px);
- /*min-width: 150px;*/
- width:100%;
- height:100%;
- min-height:100px;
- min-width:100px;
+ left:calc(100% + 3px);
+
background:rgb(0,0,0);
- padding:3px;
display:none;
}
@@ -116,8 +111,18 @@
width:100%;
height:100%;
min-height:100px;
+ max-height:250px;
min-width:100px;
- resize: none;
+ max-width:300px;
+ /*resize: none;*/
+}
+.patch .note_panel select {
+ overflow: hidden;
+}
+
+.patch .note_panel select option {
+ font-weight: bold;
+ padding:5px 10px;
}
.patch .corner {
diff --git a/core/extension/openseadragon-labeling/openseadragon-labeling.js b/core/extension/openseadragon-labeling/openseadragon-labeling.js
index 75e189ef3..ce26d7879 100644
--- a/core/extension/openseadragon-labeling/openseadragon-labeling.js
+++ b/core/extension/openseadragon-labeling/openseadragon-labeling.js
@@ -37,14 +37,17 @@
this.isPoint = false;
this.isCreatePatch = true;
this.viewer = options.viewer;
-
-
+ const {x, y, width, height} = this.viewer.viewport.imageToViewportRectangle(new OpenSeadragon.Rect(0, 0, 1024, 1024));
+ this.width = width;
+ this.height = height;
//this.status
this.patches = [];
this.activePatch = null;
+ this.selection = options.selection || null;
+
// save key handler
this.keyHandler = this.viewer.innerTracker.keyHandler;
@@ -120,11 +123,13 @@
}
function _click(e){
+ // if(this.activePatch){
+ // this.activePatch.deactive();
+ // return
+ // }
+
const img_point = this.viewer.viewport.windowToImageCoordinates(new $.Point(e.originalEvent.clientX,e.originalEvent.clientY));
const view_point = this.viewer.viewport.windowToViewportCoordinates(new $.Point(e.originalEvent.clientX,e.originalEvent.clientY));
- //const img_point = this.viewer.viewport.windowToImageCoordinates(new $.Point(e.clientX,e.clientY));
- //const view_point = this.viewer.viewport.windowToViewportCoordinates(new $.Point(e.clientX,e.clientY));
-
if(0 > img_point.x || this.imgWidth < img_point.x || 0 > img_point.y || this.imgHeight < img_point.y || !this.isCreatePatch) return;
@@ -136,7 +141,7 @@
// create new one
let options = {
data:'',
- //size:new $.Point(width,height),
+ size:new $.Point(this.width, this.height),
center:view_point,
viewer:this.viewer,
color:'#7cfc00'
@@ -146,19 +151,16 @@
options = this.activePatch.templateOptions(options);
options.center = view_point;
if(!this.isPoint && this.activePatch.isPoint){
- const viewer_bounds = this.viewer.viewport.getBounds();
- const width = viewer_bounds.width * 0.1;
- const height = viewer_bounds.height * 0.1;
- options.size = new $.Point(width,height);
+ options.size = new $.Point(this.width, this.height);
}
- }else {
- const viewer_bounds = this.viewer.viewport.getBounds();
- const width = viewer_bounds.width * 0.1;
- const height = viewer_bounds.height * 0.1;
- options.size = new $.Point(width,height);
- }
- options.isPoint = this.isPoint;
+ }else if(this.patches[this.patches.length-1]){
+ options = this.patches[this.patches.length-1].templateOptions(options);
+ options.center = view_point;
+ }
+ options.isPoint = this.isPoint;
+ options.manager = this;
+ console.log('options:',options);
this.patches.push(new $.Patch(options));
}
@@ -216,11 +218,20 @@
// element
this.element = document.createElement('div');
this.element.id = this.id;
+ this.manager = options.manager;
+
const rect = getRect(options.center, options.size, options.viewer, options.isPoint);
this.color = options.color;
+
+ // only for note is list (select)
+ this.selIdx = options.selIdx || 0;
+ if(this.manager&&this.manager.selection&&this.manager.selection[0]&&this.manager.selection[0].color){
+ options.color = this.color = this.manager.selection[this.selIdx].color;
+ }
+
this.data = options.data || '';
- // create ui part
+ // create ui part
if(options.isPoint){
createPointElement(this.element, options);
}else{
@@ -258,6 +269,24 @@
if(ctrl) ctrl.style.borderColor = color;
})
+ // create selector event
+ if(this.manager&&this.manager.selection){
+ const hasColor = this.manager.selection[0].color?true:false;
+ const sel = element.querySelector('.note_panel select');
+ sel.selectedIndex = +this.selIdx;
+ sel.addEventListener('change',function(e){
+ // set color
+ if(!hasColor) return;
+ const color = this.manager.selection[sel.selectedIndex].color;
+ box.style.background = color;
+ input.value = color;
+ element.style.borderColor = color;
+ const ctrl = element.querySelector('.controls');
+ if(ctrl) ctrl.style.borderColor = color;
+ }.bind(this))
+ if(hasColor&&!this.isPoint) this.element.querySelector('.color').style.display = 'none';
+ }
+
// trackers
this.patchTrackers = {};
@@ -280,17 +309,25 @@
releaseHandler: clickOnRemove.bind(this)
});
+
this.patchTrackers['color'] = new $.MouseTracker({
element: colorIcon,
pressHandler: press.bind(this),
releaseHandler: clickOnColor.bind(this)
});
+ if(this.manager&&this.manager.selection&&this.manager&&this.manager.selection[0].color&&this.isPoint) this.patchTrackers['color'].setTracking(false);
+
this.patchTrackers['note'] = new $.MouseTracker({
element: noteIcon,
pressHandler: press.bind(this),
releaseHandler: clickOnNote.bind(this)
});
+ const notePanel = this.element.querySelector('.note_panel');
+ this.patchTrackers['note_panel'] = new $.MouseTracker({
+ element: notePanel
+ });
+
// adjust the size of patch
if(!options.isPoint){
const resizeIcon = this.element.querySelector('.corner');
@@ -311,6 +348,17 @@
this.element.querySelector('.info_block').textContent = `${Math.round(rect.width)}x${Math.round(rect.height)}px`;
}
+ function createSelector(options){
+ const sel = document.createElement('select');
+ sel.size = options.length;
+ options.forEach((opt,idx) => {
+ const option = document.createElement('option');
+ option.text = opt.text;
+ option.value = opt.value!=undefined?opt.value:idx;
+ sel.appendChild(option);
+ });
+ return sel;
+ }
@@ -401,7 +449,11 @@
$.Patch.prototype.openNotePanel = function(e){
this.viewer.innerTracker.keyHandler = null;
this.element.querySelector('.note_panel').style.display = 'block';
- this.element.querySelector('.note_panel textarea').focus();
+ if(this.manager.selection){
+ this.element.querySelector('.note_panel select').focus();
+ }else{
+ this.element.querySelector('.note_panel textarea').focus();
+ }
}
$.Patch.prototype.closeNotePanel = function(e){
@@ -433,12 +485,18 @@
}
$.Patch.prototype.templateOptions = function(){
- return {
- data:this.element.querySelector('.note_panel textarea').value,
- size:new $.Point(this.overlay.width,this.overlay.height),
- viewer:this.viewer,
- color:this.element.querySelector('.color input').value
- }
+ const options = {
+ size:new $.Point(this.overlay.width,this.overlay.height),
+ viewer:this.viewer,
+ color:this.element.querySelector('.color input').value
+ }
+ if(this.manager&&this.manager.selection){
+ options.data = this.element.querySelector('.note_panel select option:checked').text;
+ options.selIdx = +this.element.querySelector('.note_panel select').selectedIndex;
+ }else{
+ options.data = this.element.querySelector('.note_panel textarea').value;
+ }
+ return options;
}
$.Patch.prototype.toJSON = function(coordinates = 'normalize'){ // l/image
@@ -538,11 +596,17 @@
// note panel
const note_panel = document.createElement('div');
note_panel.classList.add('note_panel');
- const textarea = document.createElement('textarea');
- textarea.textContent = options.data;
- note_panel.appendChild(textarea);
- elt.appendChild(note_panel);
+ if(options.manager&&options.manager.selection && Array.isArray(options.manager.selection)){
+ const selector = createSelector(options.manager.selection);
+ note_panel.appendChild(selector);
+ }else{
+ const textarea = document.createElement('textarea');
+ textarea.textContent = options.data;
+ note_panel.appendChild(textarea);
+ }
+
+ elt.appendChild(note_panel);
// corner
const corner = document.createElement('div');
corner.classList.add('material-icons');
@@ -579,20 +643,11 @@
dot.style.background = options.color;
dot.appendChild(input);
elt.appendChild(dot);
-
- // const dot = document.createElement('div');
- // dot.classList.add('dot');
- // elt.appendChild(dot);
const controls = document.createElement('div');
controls.classList.add('controls');
controls.style.borderColor = options.color;
elt.appendChild(controls);
-
- // const info = document.createElement('div');
- // info.classList.add('info_block');
- // controls.appendChild(info);
- // controls
// remove
const clear = document.createElement('div');
@@ -611,9 +666,15 @@
// note panel
const note_panel = document.createElement('div');
note_panel.classList.add('note_panel');
- const textarea = document.createElement('textarea');
- textarea.textContent = options.data;
- note_panel.appendChild(textarea);
+
+ if(options.manager&&options.manager.selection && Array.isArray(options.manager.selection)){
+ const selector = createSelector(options.manager.selection);
+ note_panel.appendChild(selector);
+ }else{
+ const textarea = document.createElement('textarea');
+ textarea.textContent = options.data;
+ note_panel.appendChild(textarea);
+ }
controls.appendChild(note_panel);
}
diff --git a/core/extension/openseadragon-overlays-manage.js b/core/extension/openseadragon-overlays-manage.js
index 3a95214b4..878eb7fae 100644
--- a/core/extension/openseadragon-overlays-manage.js
+++ b/core/extension/openseadragon-overlays-manage.js
@@ -163,7 +163,7 @@
for(let j = 0;j < layer.data.length;j++){
const path = layer.data[j].geometry.path;
const style = layer.data[j].properties.style;
- if(path.contains(img_point.x,img_point.y)){
+ if(layer.hoverable&&path.contains(img_point.x,img_point.y)){
this.resize();
this.highlightPath = path;
this.highlightStyle = style;
@@ -187,7 +187,7 @@
const path = features[j].geometry.path;
const style = features[j].properties.style;
this.subIndex = null;
- if(path.contains(img_point.x,img_point.y)){
+ if(layer.hoverable&&path.contains(img_point.x,img_point.y)){
this.resize();
this.highlightPath = path;
this.highlightStyle = style;
@@ -210,7 +210,8 @@
* @param {Event} e the event
*/
pathClick:function(e){
- this._viewer.raiseEvent('canvas-lay-click',{position:{x:e.clientX, y:e.clientY},data:this.highlightLayer?this.highlightLayer.data:null});
+ if(this.highlightLayer&&this.highlightLayer.clickable)
+ this._viewer.raiseEvent('canvas-lay-click',{position:{x:e.clientX, y:e.clientY},data:this.highlightLayer?this.highlightLayer.data:null});
},
/**
@@ -320,7 +321,17 @@
ctx.fillStyle = hexToRgbA(style.color,0.5);
ctx.strokeStyle = style.color;
ctx.lineWidth = style.lineWidth;
- path.fill(this._hover_ctx_);
+
+
+ if(style.isFill ==undefined || style.isFill){
+ path.fill(this._hover_ctx_);
+ }else{
+ const imagingHelper = this._viewer.imagingHelper;
+ const lineWidth = (imagingHelper.physicalToDataX(2) - imagingHelper.physicalToDataX(0))>> 0;
+ ctx.lineWidth = lineWidth;
+ path.stroke(this._hover_ctx_);
+ }
+
},
/**
@@ -335,7 +346,7 @@
return;
};
this.drawOnCanvas(this.drawOnDisplay,[this._display_ctx_]);
- if(this.highlightPath)this.drawOnCanvas(this.drawOnHover,[this._hover_ctx_,this._div,this.highlightPath,this.highlightStyle]);
+ if(this.highlightPath&& this.highlightLayer&& this.highlightLayer.hoverable)this.drawOnCanvas(this.drawOnHover,[this._hover_ctx_,this._div,this.highlightPath,this.highlightStyle]);
},
@@ -357,7 +368,7 @@
console.warn('duplicate overlay ID');
return;
}
-
+ options.viewer = this._viewer
const lay = new Overlay(options)
this.overlays.push(lay);
// TODO redraw
@@ -472,8 +483,19 @@
this.id = options.id;
this.data = options.data;
this.render = options.render;
- this.clickable = options.clickable || false;
- this.hoverable = options.hoverable || false;
+ //this.clickable = options.clickable || true;
+ //this.hoverable = options.hoverable || true;
+ this.viewer = options.viewer;
+ if(options.clickable!=null && options.clickable == false){
+ this.clickable = options.clickable
+ }else{
+ this.clickable = true;
+ }
+ if(options.hoverable!=null && options.hoverable == false){
+ this.hoverable = options.hoverable
+ }else{
+ this.hoverable = true;
+ }
if(options.isShow!=null && options.isShow == false){
this.isShow = options.isShow
}else{
diff --git a/dist/pathdb_package.js b/dist/pathdb_package.js
index 058f9cf58..b936fc4a9 100644
--- a/dist/pathdb_package.js
+++ b/dist/pathdb_package.js
@@ -1,4 +1,4 @@
parcelRequire=function(e,r,n,t){var i="function"==typeof parcelRequire&&parcelRequire,o="function"==typeof require&&require;function u(n,t){if(!r[n]){if(!e[n]){var f="function"==typeof parcelRequire&&parcelRequire;if(!t&&f)return f(n,!0);if(i)return i(n,!0);if(o&&"string"==typeof n)return o(n);var c=new Error("Cannot find module '"+n+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[n][1][r]||r};var l=r[n]=new u.Module(n);e[n][0].call(l.exports,p,l,l.exports,this)}return r[n].exports;function p(e){return u(p.resolve(e))}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.exports={}},u.modules=e,u.cache=r,u.parent=i,u.register=function(r,n){e[r]=[function(e,r){r.exports=n},{}]};for(var f=0;f0&&void 0!==arguments[0]&&arguments[0],t=StatesHelper.getCurrentStates(e);if(t)return console.log(t),t=StatesHelper.encodeStates(t),""+location.origin+location.pathname+"?slideId="+$D.params.slideId+"&states="+$D.params.states+"&mode="+$D.params.mode},CaMic.prototype.default_loadImg=CaMic.prototype.loadImg,CaMic.prototype.loadImg=function(e){var t=this,r=new URLSearchParams(window.location.search).get("slideId");this.slideId=r,this.slideName=r,this.study="",this.specimen="",this.subject_id="",this.case_id="",this.image_id="",this.study_id="",this.store.getSlide(r).then(function(r){if(r=r[0],console.log(r),t.mpp=1e9,r.field_mpp_y&&r.field_mpp_y.length>=1&&(t.mpp_y=r.field_mpp_y[0].value,t.mpp=t.mpp_y),r.field_mpp_x&&r.field_mpp_x.length>=1&&(t.mpp_x=r.field_mpp_x[0].value,t.mpp=t.mpp_x),r.field_subject_id&&(t.subject_id=r.field_subject_id[0].value),r.field_case_id&&(t.case_id=r.field_case_id[0].value),r.field_image_id&&(t.image_id=r.field_image_id[0].value),r.field_study_id&&(t.study_id=r.field_study_id[0].value),!(r.field_iip_path&&r.field_iip_path.length>=1))throw"No image location --could be token";t.location=r.field_iip_path[0].value,t.url="../../img/IIP/raw/?DeepZoom="+t.location+".dzi",t.viewer.open(t.url),t.viewer.mpp=t.mpp,t.viewer.mpp_x=t.mpp_x,t.viewer.mpp_y=t.mpp_y,t.mpp&&1e9!=t.mpp&&t.createScalebar(t.mpp),new OpenSeadragonImaging.ImagingHelper({viewer:t.viewer}).setMaxZoom(1);var o={};o._id=t.slideId,o.name=t.slideName,o.subject_id=t.subject_id,o.case_id=t.case_id,o.image_id=t.image_id,o.study_id=t.study_id,o.study=t.study,o.specimen=t.specimen,o.mpp=t.mpp,o.mpp_x=t.mpp_x,o.mpp_y=t.mpp_y,o.location=t.location,o.url=t.url,e&&"function"==typeof e&&e.call(null,o),Loading.text.textContent="loading slide's tiles..."}).catch(function(e){console.error(e),Loading.text.textContent="ERROR - PathDB Image Error (Try a refresh)"})}}e(),console.warn("This setup is intended for pathdb");
+function e(){function e(e){var t=RegExp(e+"[^;]+").exec(document.cookie);return decodeURIComponent(t?t.toString().replace(/^[^=]+./,""):"")}console.log("PathDbMods()..."),fetch("/jwt/token",{method:"GET",credentials:"include"}).then(function(e){return e.json()}).then(function(e){console.log(e),e.hasOwnProperty("token")&&e.token&&(document.cookie="token="+e.token+";")}),console.warn("{PathDB mods enabled}"),Store.prototype.default_findMark=Store.prototype.findMark,Store.prototype.findMark=function(e,t,r,o,i,n,a,d,s,p){var l=this,c=this.base+"Mark/find",u={};return e&&(u.slide=e),t&&(u.name=t),r&&(u.specimen=r),o&&(u.study=o),i&&(u.footprint=i),n&&(u.source=n),a&&(u.x0=a),d&&(u.x1=d),s&&(u.y0=s),p&&(u.y1=p),fetch(c+"?"+objToParamStr(u),{credentials:"same-origin",mode:"cors"}).then(this.errorHandler).then(function(e){return l.filterBroken(e,"mark")})},Store.prototype.getMarkByIds=function(e,t,r,o,i,n,a,d,s,p){var l=this;if(!Array.isArray(e)||!t)return{hasError:!0,message:"args are illegal"};var c=this.base+"Mark/multi",u={},f=e.map(function(e){return'"'+e+'"'}).join(",");return u.name="["+f+"]",u.slide=t,r&&(u.study=r),o&&(u.specimen=o),i&&(u.source=i),n&&(u.footprint=n),a&&(u.x0=a),d&&(u.x1=d),s&&(u.y0=s),p&&(u.y1=p),fetch(c+"?"+objToParamStr(u),{credentials:"same-origin",mode:"cors"}).then(this.errorHandler).then(function(e){return l.filterBroken(e,"mark")})},Store.prototype.findMarkTypes=function(e,t){var r="Mark/types",o=this.base+r,i={};return e?(parseInt(e)==e||parseFloat(e)==e?i.slide='"'+e+'"':i.slide=e,t&&(i.name=t,r="Mark/typesExec"),fetch(o+"?"+objToParamStr(i),{credentials:"same-origin",mode:"cors"}).then(this.errorHandler)):(console.error("Store.findMarkTypes needs slide ... "),null)},Store.prototype.default_findSlide=Store.prototype.findSlide,Store.prototype.findSlide=function(t,r,o,i){return fetch("/node/"+t+"?_format=json",{mode:"cors",headers:new Headers({Authorization:"Bearer "+e("token")})}).then(function(e){return e.ok?e.json().then(function(e){return[e]}):{error:!e.ok,text:e.statusText,url:e.url}})},Store.prototype.default_getSlide=Store.prototype.getSlide,Store.prototype.getSlide=function(t){return fetch("/node/"+t+"?_format=json",{mode:"cors",headers:new Headers({Authorization:"Bearer "+e("token")})}).then(function(e){return e.ok?e.json().then(function(e){return[e]}):{error:!e.ok,text:e.statusText,url:e.url}})},Store.prototype.default_findHeatmapType=Store.prototype.findHeatmapType,Store.prototype.findHeatmapType=function(e,t){var r=this;return this.getSlide(e).then(function(e){var t=r.base+"Heatmap/types",o={};return(e=e[0]).field_subject_id&&(o.subject=e.field_subject_id[0].value),e.field_case_id&&(o.case=e.field_case_id[0].value,o.slide=e.field_case_id[0].value),fetch(t+"?"+objToParamStr(o),{credentials:"include",mode:"cors"}).then(r.errorHandler).then(function(e){return r.filterBroken(e,"heatmap")})}).catch(function(e){console.error(e)})},Store.prototype.default_findHeatmap=Store.prototype.findHeatmap,Store.prototype.findHeatmap=function(e,t){var r=this;return this.getSlide(e).then(function(e){var o=r.base+"Heatmap/find",i={};return(e=e[0]).field_subject_id&&(i.subject=e.field_subject_id[0].value),e.field_case_id&&(i.case=e.field_case_id[0].value,i.slide=e.field_case_id[0].value),t&&(i.name=t),fetch(o+"?"+objToParamStr(i),{credentials:"include",mode:"cors"}).then(r.errorHandler).then(function(e){return r.filterBroken(e,"heatmap")})}).catch(function(e){console.error(e)})},Store.prototype.default_getHeatmap=Store.prototype.getHeatmap,Store.prototype.getHeatmap=function(e,t){var r=this;return this.getSlide(e).then(function(e){var o=r.base+"Heatmap/get",i={};return(e=e[0]).field_subject_id&&(i.subject=e.field_subject_id[0].value),e.field_case_id&&(i.case=e.field_case_id[0].value),t&&(i.exec=t),fetch(o+"?"+objToParamStr(i),{credentials:"include",mode:"cors"}).then(r.errorHandler).then(function(e){return r.filterBroken(e,"heatmap")})}).catch(function(e){console.error(e)})},StatesHelper.prototype.default_getCurrentStatesURL=StatesHelper.prototype.getCurrentStatesURL,getCurrentStatesURL=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=StatesHelper.getCurrentStates(e);if(t)return console.log(t),t=StatesHelper.encodeStates(t),""+location.origin+location.pathname+"?slideId="+$D.params.slideId+"&states="+$D.params.states+"&mode="+$D.params.mode},CaMic.prototype.default_loadImg=CaMic.prototype.loadImg,CaMic.prototype.loadImg=function(e){var t=this,r=new URLSearchParams(window.location.search).get("slideId");this.slideId=r,this.slideName=r,this.study="",this.specimen="",this.subject_id="",this.case_id="",this.image_id="",this.study_id="",this.store.getSlide(r).then(function(r){if(r=r[0],console.log(r),t.mpp=1e9,r.field_mpp_y&&r.field_mpp_y.length>=1&&(t.mpp_y=r.field_mpp_y[0].value,t.mpp=t.mpp_y),r.field_mpp_x&&r.field_mpp_x.length>=1&&(t.mpp_x=r.field_mpp_x[0].value,t.mpp=t.mpp_x),r.field_subject_id&&(t.subject_id=r.field_subject_id[0].value),r.field_case_id&&(t.case_id=r.field_case_id[0].value),r.field_image_id&&(t.image_id=r.field_image_id[0].value),r.field_study_id&&(t.study_id=r.field_study_id[0].value),!(r.field_iip_path&&r.field_iip_path.length>=1))throw"No image location --could be token";t.location=r.field_iip_path[0].value,t.url="../../img/IIP/raw/?DeepZoom="+t.location+".dzi",t.viewer.open(t.url),t.viewer.mpp=t.mpp,t.viewer.mpp_x=t.mpp_x,t.viewer.mpp_y=t.mpp_y,t.mpp&&1e9!=t.mpp&&t.createScalebar(t.mpp),new OpenSeadragonImaging.ImagingHelper({viewer:t.viewer}).setMaxZoom(1);var o={};o._id=t.slideId,o.name=t.slideName,o.subject_id=t.subject_id,o.case_id=t.case_id,o.image_id=t.image_id,o.study_id=t.study_id,o.study=t.study,o.specimen=t.specimen,o.mpp=t.mpp,o.mpp_x=t.mpp_x,o.mpp_y=t.mpp_y,o.location=t.location,o.url=t.url,e&&"function"==typeof e&&e.call(null,o),Loading.text.textContent="Loading Slide's Tiles..."}).catch(function(e){console.error(e),Loading.text.textContent="ERROR - PathDB Image Error (Try A Refresh)"})}}e(),console.warn("This Setup Is Intended For Pathdb");
},{}]},{},["aJmB"], null)
//# sourceMappingURL=/pathdb_package.map
\ No newline at end of file
diff --git a/dist/pathdb_package.map b/dist/pathdb_package.map
index 1e36fcc1b..06a0c6a03 100644
--- a/dist/pathdb_package.map
+++ b/dist/pathdb_package.map
@@ -1 +1 @@
-{"version":3,"sources":["pathdb_package.js"],"names":["PathDbMods","getCookie","key","cookiestring","RegExp","exec","document","cookie","decodeURIComponent","toString","replace","log","then","x","json","hasOwnProperty","token","warn","prototype","default_findMark","Store","findMark","slide","name","specimen","study","footprint","source","x0","x1","y0","y1","url","base","query","bySlide","fetch","objToParamStr","errorHandler","filterBroken","getMarkByIds","ids","Array","isArray","suffix","stringifiedIds","map","id","join","findMarkTypes","error","default_findSlide","findSlide","location","Headers","response","ok","statusText","default_getSlide","getSlide","default_findHeatmapType","findHeatmapType","data","field_subject_id","subject","value","field_case_id","case","catch","e","default_findHeatmap","findHeatmap","default_getHeatmap","getHeatmap","default_getCurrentStatesURL","StatesHelper","getCurrentStatesURL","isImageCoordinate","states","getCurrentStates","encodeStates","origin","pathname","$D","params","slideId","mode","default_loadImg","CaMic","loadImg","func","pathdb_id","URLSearchParams","window","search","get","slideName","subject_id","case_id","image_id","study_id","store","mpp","field_mpp_y","length","mpp_y","field_mpp_x","mpp_x","field_image_id","field_study_id","field_iip_path","viewer","open","createScalebar","OpenSeadragonImaging","ImagingHelper","setMaxZoom","call","text","textContent","console"],"mappings":"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","file":"pathdb_package.map","sourceRoot":"../package","sourcesContent":["function PathDbMods() {\n console.log(\"PathDbMods()...\");\n // put the auth jwt in cookie as token\n fetch(\"/jwt/token\", {\n method: 'GET',\n credentials: 'include'\n }).then(x => x.json()).then(x => {\n console.log(x)\n if (x.hasOwnProperty('token') && x.token) {\n document.cookie = \"token=\" + x.token + \";\"\n }\n })\n /**\n Gets a named cookie value\n * @param {string} key - the key to get from the cookie\n **/\n function getCookie(key) {\n var cookiestring = RegExp(\"\" + key + \"[^;]+\").exec(document.cookie);\n return decodeURIComponent(!!cookiestring ? cookiestring.toString().replace(/^[^=]+./, \"\") : \"\");\n }\n console.warn(\"{PathDB mods enabled}\")\n Store.prototype.default_findMark = Store.prototype.findMark\n Store.prototype.findMark = function(slide, name, specimen, study, footprint, source, x0, x1, y0, y1) {\n var suffix = \"Mark/find\"\n var url = this.base + suffix;\n var query = {}\n var bySlideId\n if (slide) {\n query.slide = slide\n }\n if (name) {\n query.name = name\n }\n if (specimen) {\n query.specimen = specimen\n }\n if (study) {\n query.study = study\n }\n if (footprint) {\n query.footprint = footprint\n }\n if (source) {\n query.source = source\n }\n if (x0) {\n query.x0 = x0;\n }\n if (x1) {\n query.x1 = x1;\n }\n if (y0) {\n query.y0 = y0;\n }\n if (y1) {\n query.y1 = y1;\n }\n let bySlide = fetch(url + \"?\" + objToParamStr(query), {\n credentials: \"same-origin\",\n mode: \"cors\"\n }).then(this.errorHandler).then(x => this.filterBroken(x, \"mark\"))\n return bySlide\n }\n Store.prototype.getMarkByIds = function(ids, slide, study, specimen, source, footprint, x0, x1, y0, y1) {\n if (!Array.isArray(ids) || !slide) {\n return {\n hasError: true,\n message: 'args are illegal'\n }\n }\n var bySlideId\n var suffix = \"Mark/multi\"\n var url = this.base + suffix;\n var query = {}\n var stringifiedIds = ids.map(id => `\"${id}\"`).join(',');\n query.name = `[${stringifiedIds}]`;\n query.slide = slide;\n if (study) {\n query.study = study;\n }\n if (specimen) {\n query.specimen = specimen;\n }\n if (source) {\n query.source = source;\n }\n if (footprint) {\n query.footprint = footprint;\n }\n if (x0) {\n query.x0 = x0;\n }\n if (x1) {\n query.x1 = x1;\n }\n if (y0) {\n query.y0 = y0;\n }\n if (y1) {\n query.y1 = y1;\n }\n let bySlide = fetch(url + \"?\" + objToParamStr(query), {\n credentials: \"same-origin\",\n mode: \"cors\"\n }).then(this.errorHandler).then(x => this.filterBroken(x, \"mark\"))\n return bySlide\n }\n Store.prototype.findMarkTypes = function(slide, name) {\n var suffix = \"Mark/types\"\n var url = this.base + suffix;\n var query = {}\n if(!slide) {\n console.error('Store.findMarkTypes needs slide ... ');\n return null;\n }\n query.slide = slide\n if (name) {\n query.name = name\n suffix = \"Mark/typesExec\"\n }\n return fetch(url + \"?\" + objToParamStr(query), {\n credentials: \"same-origin\",\n mode: \"cors\"\n }).then(this.errorHandler)\n return bySlide\n }\n Store.prototype.default_findSlide = Store.prototype.findSlide;\n Store.prototype.findSlide = function(slide, specimen, study, location) {\n var url = \"/node/\" + slide + \"?_format=json\"\n return fetch(url, {\n mode: \"cors\",\n headers: new Headers({\n 'Authorization': 'Bearer ' + getCookie(\"token\"),\n })\n }).then(function(response) {\n if (!response.ok) return {\n error: !response.ok,\n text: response.statusText,\n url: response.url\n };\n return response.json().then(x => [x]);\n })\n }\n Store.prototype.default_getSlide = Store.prototype.getSlide\n Store.prototype.getSlide = function(id) {\n var url = \"/node/\" + id + \"?_format=json\"\n return fetch(url, {\n mode: \"cors\",\n headers: new Headers({\n 'Authorization': 'Bearer ' + getCookie(\"token\"),\n })\n }).then(function(response) {\n if (!response.ok) return {\n error: !response.ok,\n text: response.statusText,\n url: response.url\n };\n return response.json().then(x => [x]);\n })\n }\n\n\n Store.prototype.default_findHeatmapType = Store.prototype.findHeatmapType;\n Store.prototype.findHeatmapType = function(slide, name) {\n return this.getSlide(slide).then(data => {\n\n var suffix = \"Heatmap/types\"\n var url = this.base + suffix;\n var query = {}\n\n data = data[0]\n if (data.field_subject_id) {\n query.subject = data.field_subject_id[0].value\n }\n if (data.field_case_id) {\n query.case = data.field_case_id[0].value\n query.slide = data.field_case_id[0].value\n }\n\n return fetch(url + \"?\" + objToParamStr(query), {\n credentials: \"include\",\n mode: \"cors\"\n }).then(this.errorHandler).then(x=>this.filterBroken(x, \"heatmap\"))\n }).catch(function(e){\n console.error(e);\n })\n\n };\n\n Store.prototype.default_findHeatmap = Store.prototype.findHeatmap;\n Store.prototype.findHeatmap = function(slide, name) {\n return this.getSlide(slide).then(data => {\n\n var suffix = \"Heatmap/find\"\n var url = this.base + suffix;\n var query = {}\n\n data = data[0]\n if (data.field_subject_id) {\n query.subject = data.field_subject_id[0].value\n }\n if (data.field_case_id) {\n query.case = data.field_case_id[0].value\n query.slide = data.field_case_id[0].value\n }\n if(name) query.name = name;\n\n return fetch(url + \"?\" + objToParamStr(query), {\n credentials: \"include\",\n mode: \"cors\"\n }).then(this.errorHandler).then(x=>this.filterBroken(x, \"heatmap\"))\n }).catch(function(e){\n console.error(e);\n })\n };\n Store.prototype.default_getHeatmap = Store.prototype.getHeatmap;\n Store.prototype.getHeatmap = function(slide, exec) {\n return this.getSlide(slide).then(data => {\n\n var suffix = \"Heatmap/get\"\n var url = this.base + suffix;\n var query = {}\n\n data = data[0]\n if (data.field_subject_id) {\n query.subject = data.field_subject_id[0].value\n }\n if (data.field_case_id) {\n query.case = data.field_case_id[0].value\n }\n if(exec) query.exec = exec;\n\n return fetch(url + \"?\" + objToParamStr(query), {\n credentials: \"include\",\n mode: \"cors\"\n }).then(this.errorHandler).then(x=>this.filterBroken(x, \"heatmap\"))\n }).catch(function(e){\n console.error(e);\n })\n };\n\n StatesHelper.prototype.default_getCurrentStatesURL = StatesHelper.prototype.getCurrentStatesURL;\n getCurrentStatesURL = function(isImageCoordinate=false){\n let states = StatesHelper.getCurrentStates(isImageCoordinate);\n if(!states)return;\n console.log(states);\n states = StatesHelper.encodeStates(states);\n return `${location.origin}${location.pathname}?slideId=${$D.params.slideId}&states=${$D.params.states}&mode=${$D.params.mode}`\n };\n\n\n CaMic.prototype.default_loadImg = CaMic.prototype.loadImg\n CaMic.prototype.loadImg = function(func) {\n var urlParams = new URLSearchParams(window.location.search);\n var pathdb_id = urlParams.get('slideId');\n this.slideId = pathdb_id // default value\n this.slideName = pathdb_id\n this.study = \"\"\n this.specimen = \"\"\n this.subject_id = \"\"\n this.case_id = \"\"\n this.image_id = \"\"\n this.study_id = \"\"\n this.store.getSlide(pathdb_id).then(data => {\n data = data[0]\n console.log(data)\n // set mpp\n this.mpp = 1e9\n\n if (data.field_mpp_y && data.field_mpp_y.length >= 1) {\n this.mpp_y = data.field_mpp_y[0].value\n this.mpp = this.mpp_y\n }\n if (data.field_mpp_x && data.field_mpp_x.length >= 1) {\n this.mpp_x = data.field_mpp_x[0].value\n this.mpp = this.mpp_x\n }\n // identifier fields\n if(data.field_subject_id){\n this.subject_id = data.field_subject_id[0].value\n }\n if(data.field_case_id){\n this.case_id = data.field_case_id[0].value\n }\n if(data.field_image_id){\n this.image_id = data.field_image_id[0].value\n }\n if(data.field_study_id){\n this.study_id = data.field_study_id[0].value\n }\n\n if (data.field_iip_path && data.field_iip_path.length >= 1) {\n this.location = data.field_iip_path[0].value\n // MAKE URL FOR IIP\n this.url = \"../../img/IIP/raw/?DeepZoom=\" + this.location + \".dzi\"\n this.viewer.open(this.url);\n } else {\n throw \"No image location --could be token\"\n }\n\n this.viewer.mpp = this.mpp;\n this.viewer.mpp_x = this.mpp_x;\n this.viewer.mpp_y = this.mpp_y;\n\n //set scalebar\n if (this.mpp && this.mpp != 1e9) this.createScalebar(this.mpp)\n var imagingHelper = new OpenSeadragonImaging.ImagingHelper({\n viewer: this.viewer\n });\n imagingHelper.setMaxZoom(1);\n // create item to pass to the callback function, previously x[0] (slide data)\n let x = {}\n x['_id'] = this.slideId\n x.name = this.slideName\n\n // identifier field\n x.subject_id = this.subject_id\n x.case_id = this.case_id\n x.image_id = this.image_id\n x.study_id = this.study_id\n\n x.study = this.study\n x.specimen = this.specimen\n x.mpp = this.mpp;\n x.mpp_x = this.mpp_x;\n x.mpp_y = this.mpp_y;\n x.location = this.location;\n x.url = this.url;\n if (func && typeof func === 'function') {\n func.call(null, x);\n }\n Loading.text.textContent = `loading slide's tiles...`;\n // we may want another init.js or our own callback\n }).catch(e => {\n console.error(e)\n Loading.text.textContent = \"ERROR - PathDB Image Error (Try a refresh)\"\n //if(func && typeof func === 'function') func.call(null,{hasError:true,message:e});\n })\n\n }\n}\n\n\nPathDbMods()\nconsole.warn(\"This setup is intended for pathdb\")\n"]}
\ No newline at end of file
+{"version":3,"sources":["pathdb_package.js"],"names":["PathDbMods","getCookie","key","cookiestring","RegExp","exec","document","cookie","decodeURIComponent","toString","replace","log","then","x","json","hasOwnProperty","token","warn","prototype","default_findMark","Store","findMark","slide","name","specimen","study","footprint","source","x0","x1","y0","y1","url","base","query","fetch","objToParamStr","errorHandler","filterBroken","getMarkByIds","ids","Array","isArray","suffix","stringifiedIds","map","id","join","findMarkTypes","parseInt","parseFloat","error","default_findSlide","findSlide","location","Headers","response","ok","statusText","default_getSlide","getSlide","default_findHeatmapType","findHeatmapType","data","field_subject_id","subject","value","field_case_id","case","catch","e","default_findHeatmap","findHeatmap","default_getHeatmap","getHeatmap","default_getCurrentStatesURL","StatesHelper","getCurrentStatesURL","isImageCoordinate","states","getCurrentStates","encodeStates","origin","pathname","$D","params","slideId","mode","default_loadImg","CaMic","loadImg","func","pathdb_id","URLSearchParams","window","search","get","slideName","subject_id","case_id","image_id","study_id","store","mpp","field_mpp_y","length","mpp_y","field_mpp_x","mpp_x","field_image_id","field_study_id","field_iip_path","viewer","open","createScalebar","OpenSeadragonImaging","ImagingHelper","setMaxZoom","call","text","textContent","console"],"mappings":"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","file":"pathdb_package.map","sourceRoot":"../package","sourcesContent":["function PathDbMods() {\n console.log(\"PathDbMods()...\");\n // put the auth jwt in cookie as token\n fetch(\"/jwt/token\", {\n method: 'GET',\n credentials: 'include'\n }).then(x => x.json()).then(x => {\n console.log(x)\n if (x.hasOwnProperty('token') && x.token) {\n document.cookie = \"token=\" + x.token + \";\"\n }\n })\n /**\n Gets a named cookie value\n * @param {string} key - the key to get from the cookie\n **/\n function getCookie(key) {\n var cookiestring = RegExp(\"\" + key + \"[^;]+\").exec(document.cookie);\n return decodeURIComponent(!!cookiestring ? cookiestring.toString().replace(/^[^=]+./, \"\") : \"\");\n }\n console.warn(\"{PathDB mods enabled}\")\n Store.prototype.default_findMark = Store.prototype.findMark\n Store.prototype.findMark = function(slide, name, specimen, study, footprint, source, x0, x1, y0, y1) {\n var suffix = \"Mark/find\"\n var url = this.base + suffix;\n var query = {}\n if (slide) {\n query.slide = slide\n }\n if (name) {\n query.name = name\n }\n if (specimen) {\n query.specimen = specimen\n }\n if (study) {\n query.study = study\n }\n if (footprint) {\n query.footprint = footprint\n }\n if (source) {\n query.source = source\n }\n if (x0) {\n query.x0 = x0;\n }\n if (x1) {\n query.x1 = x1;\n }\n if (y0) {\n query.y0 = y0;\n }\n if (y1) {\n query.y1 = y1;\n }\n return fetch(url + \"?\" + objToParamStr(query), {\n credentials: \"same-origin\",\n mode: \"cors\"\n }).then(this.errorHandler).then(x => this.filterBroken(x, \"mark\"))\n }\n Store.prototype.getMarkByIds = function(ids, slide, study, specimen, source, footprint, x0, x1, y0, y1) {\n if (!Array.isArray(ids) || !slide) {\n return {\n hasError: true,\n message: 'args are illegal'\n }\n }\n var suffix = \"Mark/multi\"\n var url = this.base + suffix;\n var query = {}\n var stringifiedIds = ids.map(id => `\"${id}\"`).join(',');\n query.name = `[${stringifiedIds}]`;\n query.slide = slide;\n if (study) {\n query.study = study;\n }\n if (specimen) {\n query.specimen = specimen;\n }\n if (source) {\n query.source = source;\n }\n if (footprint) {\n query.footprint = footprint;\n }\n if (x0) {\n query.x0 = x0;\n }\n if (x1) {\n query.x1 = x1;\n }\n if (y0) {\n query.y0 = y0;\n }\n if (y1) {\n query.y1 = y1;\n }\n return fetch(url + \"?\" + objToParamStr(query), {\n credentials: \"same-origin\",\n mode: \"cors\"\n }).then(this.errorHandler).then(x => this.filterBroken(x, \"mark\"))\n }\n Store.prototype.findMarkTypes = function(slide, name) {\n var suffix = \"Mark/types\"\n var url = this.base + suffix;\n var query = {}\n if(!slide) {\n console.error('Store.findMarkTypes needs slide ... ');\n return null;\n }\n // pathdb numeric->str coerce\n if ((parseInt(slide)==slide)||(parseFloat(slide)==slide)){\n query.slide = '\"' + slide + '\"'\n } else {\n query.slide = slide\n }\n\n if (name) {\n query.name = name\n suffix = \"Mark/typesExec\"\n }\n return fetch(url + \"?\" + objToParamStr(query), {\n credentials: \"same-origin\",\n mode: \"cors\"\n }).then(this.errorHandler)\n }\n Store.prototype.default_findSlide = Store.prototype.findSlide;\n Store.prototype.findSlide = function(slide, specimen, study, location) {\n var url = \"/node/\" + slide + \"?_format=json\"\n return fetch(url, {\n mode: \"cors\",\n headers: new Headers({\n 'Authorization': 'Bearer ' + getCookie(\"token\"),\n })\n }).then(function(response) {\n if (!response.ok) return {\n error: !response.ok,\n text: response.statusText,\n url: response.url\n };\n return response.json().then(x => [x]);\n })\n }\n Store.prototype.default_getSlide = Store.prototype.getSlide\n Store.prototype.getSlide = function(id) {\n var url = \"/node/\" + id + \"?_format=json\"\n return fetch(url, {\n mode: \"cors\",\n headers: new Headers({\n 'Authorization': 'Bearer ' + getCookie(\"token\"),\n })\n }).then(function(response) {\n if (!response.ok) return {\n error: !response.ok,\n text: response.statusText,\n url: response.url\n };\n return response.json().then(x => [x]);\n })\n }\n\n\n Store.prototype.default_findHeatmapType = Store.prototype.findHeatmapType;\n Store.prototype.findHeatmapType = function(slide, name) {\n return this.getSlide(slide).then(data => {\n\n var suffix = \"Heatmap/types\"\n var url = this.base + suffix;\n var query = {}\n\n data = data[0]\n if (data.field_subject_id) {\n query.subject = data.field_subject_id[0].value\n }\n if (data.field_case_id) {\n query.case = data.field_case_id[0].value\n query.slide = data.field_case_id[0].value\n }\n\n return fetch(url + \"?\" + objToParamStr(query), {\n credentials: \"include\",\n mode: \"cors\"\n }).then(this.errorHandler).then(x=>this.filterBroken(x, \"heatmap\"))\n }).catch(function(e){\n console.error(e);\n })\n\n };\n\n Store.prototype.default_findHeatmap = Store.prototype.findHeatmap;\n Store.prototype.findHeatmap = function(slide, name) {\n return this.getSlide(slide).then(data => {\n\n var suffix = \"Heatmap/find\"\n var url = this.base + suffix;\n var query = {}\n\n data = data[0]\n if (data.field_subject_id) {\n query.subject = data.field_subject_id[0].value\n }\n if (data.field_case_id) {\n query.case = data.field_case_id[0].value\n query.slide = data.field_case_id[0].value\n }\n if(name) query.name = name;\n\n return fetch(url + \"?\" + objToParamStr(query), {\n credentials: \"include\",\n mode: \"cors\"\n }).then(this.errorHandler).then(x=>this.filterBroken(x, \"heatmap\"))\n }).catch(function(e){\n console.error(e);\n })\n };\n Store.prototype.default_getHeatmap = Store.prototype.getHeatmap;\n Store.prototype.getHeatmap = function(slide, exec) {\n return this.getSlide(slide).then(data => {\n\n var suffix = \"Heatmap/get\"\n var url = this.base + suffix;\n var query = {}\n\n data = data[0]\n if (data.field_subject_id) {\n query.subject = data.field_subject_id[0].value\n }\n if (data.field_case_id) {\n query.case = data.field_case_id[0].value\n }\n if(exec) query.exec = exec;\n\n return fetch(url + \"?\" + objToParamStr(query), {\n credentials: \"include\",\n mode: \"cors\"\n }).then(this.errorHandler).then(x=>this.filterBroken(x, \"heatmap\"))\n }).catch(function(e){\n console.error(e);\n })\n };\n\n StatesHelper.prototype.default_getCurrentStatesURL = StatesHelper.prototype.getCurrentStatesURL;\n getCurrentStatesURL = function(isImageCoordinate=false){\n let states = StatesHelper.getCurrentStates(isImageCoordinate);\n if(!states)return;\n console.log(states);\n states = StatesHelper.encodeStates(states);\n return `${location.origin}${location.pathname}?slideId=${$D.params.slideId}&states=${$D.params.states}&mode=${$D.params.mode}`\n };\n\n\n CaMic.prototype.default_loadImg = CaMic.prototype.loadImg\n CaMic.prototype.loadImg = function(func) {\n var urlParams = new URLSearchParams(window.location.search);\n var pathdb_id = urlParams.get('slideId');\n this.slideId = pathdb_id // default value\n this.slideName = pathdb_id\n this.study = \"\"\n this.specimen = \"\"\n this.subject_id = \"\"\n this.case_id = \"\"\n this.image_id = \"\"\n this.study_id = \"\"\n this.store.getSlide(pathdb_id).then(data => {\n data = data[0]\n console.log(data)\n // set mpp\n this.mpp = 1e9\n\n if (data.field_mpp_y && data.field_mpp_y.length >= 1) {\n this.mpp_y = data.field_mpp_y[0].value\n this.mpp = this.mpp_y\n }\n if (data.field_mpp_x && data.field_mpp_x.length >= 1) {\n this.mpp_x = data.field_mpp_x[0].value\n this.mpp = this.mpp_x\n }\n // identifier fields\n if(data.field_subject_id){\n this.subject_id = data.field_subject_id[0].value\n }\n if(data.field_case_id){\n this.case_id = data.field_case_id[0].value\n }\n if(data.field_image_id){\n this.image_id = data.field_image_id[0].value\n }\n if(data.field_study_id){\n this.study_id = data.field_study_id[0].value\n }\n\n if (data.field_iip_path && data.field_iip_path.length >= 1) {\n this.location = data.field_iip_path[0].value\n // MAKE URL FOR IIP\n this.url = \"../../img/IIP/raw/?DeepZoom=\" + this.location + \".dzi\"\n this.viewer.open(this.url);\n } else {\n throw \"No image location --could be token\"\n }\n\n this.viewer.mpp = this.mpp;\n this.viewer.mpp_x = this.mpp_x;\n this.viewer.mpp_y = this.mpp_y;\n\n //set scalebar\n if (this.mpp && this.mpp != 1e9) this.createScalebar(this.mpp)\n var imagingHelper = new OpenSeadragonImaging.ImagingHelper({\n viewer: this.viewer\n });\n imagingHelper.setMaxZoom(1);\n // create item to pass to the callback function, previously x[0] (slide data)\n let x = {}\n x['_id'] = this.slideId\n x.name = this.slideName\n\n // identifier field\n x.subject_id = this.subject_id\n x.case_id = this.case_id\n x.image_id = this.image_id\n x.study_id = this.study_id\n\n x.study = this.study\n x.specimen = this.specimen\n x.mpp = this.mpp;\n x.mpp_x = this.mpp_x;\n x.mpp_y = this.mpp_y;\n x.location = this.location;\n x.url = this.url;\n if (func && typeof func === 'function') {\n func.call(null, x);\n }\n Loading.text.textContent = `Loading Slide's Tiles...`;\n // we may want another init.js or our own callback\n }).catch(e => {\n console.error(e)\n Loading.text.textContent = \"ERROR - PathDB Image Error (Try A Refresh)\"\n //if(func && typeof func === 'function') func.call(null,{hasError:true,message:e});\n })\n\n }\n}\n\n\nPathDbMods()\nconsole.warn(\"This Setup Is Intended For Pathdb\")\n"]}
\ No newline at end of file
diff --git a/package/ImgBoxMods.js b/package/ImgBoxMods.js
index 1421bd2e5..43805f3db 100644
--- a/package/ImgBoxMods.js
+++ b/package/ImgBoxMods.js
@@ -66,7 +66,7 @@ function ImgBoxMods() {
if (func && typeof func === 'function'){
func.call(null, x);
}
- Loading.text.textContent = `loading slide's tiles...`;
+ Loading.text.textContent = `Loading Slide's Tiles...`;
// WARN; note that spyglass isn't working due to semi-hardcoded value at init.js line 140
// we may want another init.js or our own callback
}).catch(e=>{
diff --git a/package/pathdb_package.js b/package/pathdb_package.js
index cbfcbbf9a..5f20ca3a7 100644
--- a/package/pathdb_package.js
+++ b/package/pathdb_package.js
@@ -24,7 +24,6 @@ function PathDbMods() {
var suffix = "Mark/find"
var url = this.base + suffix;
var query = {}
- var bySlideId
if (slide) {
query.slide = slide
}
@@ -55,11 +54,10 @@ function PathDbMods() {
if (y1) {
query.y1 = y1;
}
- let bySlide = fetch(url + "?" + objToParamStr(query), {
+ return fetch(url + "?" + objToParamStr(query), {
credentials: "same-origin",
mode: "cors"
}).then(this.errorHandler).then(x => this.filterBroken(x, "mark"))
- return bySlide
}
Store.prototype.getMarkByIds = function(ids, slide, study, specimen, source, footprint, x0, x1, y0, y1) {
if (!Array.isArray(ids) || !slide) {
@@ -68,7 +66,6 @@ function PathDbMods() {
message: 'args are illegal'
}
}
- var bySlideId
var suffix = "Mark/multi"
var url = this.base + suffix;
var query = {}
@@ -99,11 +96,10 @@ function PathDbMods() {
if (y1) {
query.y1 = y1;
}
- let bySlide = fetch(url + "?" + objToParamStr(query), {
+ return fetch(url + "?" + objToParamStr(query), {
credentials: "same-origin",
mode: "cors"
}).then(this.errorHandler).then(x => this.filterBroken(x, "mark"))
- return bySlide
}
Store.prototype.findMarkTypes = function(slide, name) {
var suffix = "Mark/types"
@@ -113,7 +109,13 @@ function PathDbMods() {
console.error('Store.findMarkTypes needs slide ... ');
return null;
}
- query.slide = slide
+ // pathdb numeric->str coerce
+ if ((parseInt(slide)==slide)||(parseFloat(slide)==slide)){
+ query.slide = '"' + slide + '"'
+ } else {
+ query.slide = slide
+ }
+
if (name) {
query.name = name
suffix = "Mark/typesExec"
@@ -122,7 +124,6 @@ function PathDbMods() {
credentials: "same-origin",
mode: "cors"
}).then(this.errorHandler)
- return bySlide
}
Store.prototype.default_findSlide = Store.prototype.findSlide;
Store.prototype.findSlide = function(slide, specimen, study, location) {
@@ -329,11 +330,11 @@ function PathDbMods() {
if (func && typeof func === 'function') {
func.call(null, x);
}
- Loading.text.textContent = `loading slide's tiles...`;
+ Loading.text.textContent = `Loading Slide's Tiles...`;
// we may want another init.js or our own callback
}).catch(e => {
console.error(e)
- Loading.text.textContent = "ERROR - PathDB Image Error (Try a refresh)"
+ Loading.text.textContent = "ERROR - PathDB Image Error (Try A Refresh)"
//if(func && typeof func === 'function') func.call(null,{hasError:true,message:e});
})
@@ -342,4 +343,4 @@ function PathDbMods() {
PathDbMods()
-console.warn("This setup is intended for pathdb")
+console.warn("This Setup Is Intended For Pathdb")