Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
de5724c
Started react rendering of center panel
will-moore Jan 7, 2016
03efec6
IconTable placeholder with header and footer
will-moore Jan 9, 2016
78ce605
Thumbnail layout and selection working
will-moore Jan 10, 2016
617e49c
New <ImageIcon /> to handle thumbnail clicks
will-moore Jan 11, 2016
890b8b9
Jstree triggers OME.tree_selection_changed() on 'select_node'
will-moore Jan 11, 2016
d068b9d
layout buttons setState(layout)
will-moore Jan 11, 2016
5c1d071
Add other table layout cells to ImageIcon
will-moore Jan 11, 2016
4ce3aa8
Thumbnail width set by zoom slider
will-moore Jan 11, 2016
a7f8044
Make sure icon longest side is set to iconSize
will-moore Jan 12, 2016
d9dc37d
Filter thumbs by string, deselect hidden thumbs
will-moore Jan 12, 2016
022b122
Handle shift-click on thumbnails
will-moore Jan 13, 2016
99c446b
Started on loading plates
will-moore Jan 13, 2016
e956405
Load <Plate /> key as run if only one run
will-moore Jan 13, 2016
6d35dc5
Add api_fields json call to webclient views.py
will-moore Jan 13, 2016
8ee47a8
Render fields select and load plate json
will-moore Jan 13, 2016
eb78dad
Display of plate wells and images
will-moore Jan 14, 2016
e4bc43f
Handle SPW field selection change
will-moore Jan 14, 2016
05ad58b
Rename ThumbTable -> CentrePanel
will-moore Jan 17, 2016
efe324d
Fix react centre panel thumbnail url
will-moore Jan 19, 2016
73a1898
ImageIcon render() does icon.focus() if selected
will-moore Jan 24, 2016
cf7e095
Use $.selectable() jQuery plugin for drag selection
will-moore Jan 25, 2016
8ab2fad
Use componentWillUnmount() to cleanup jQuery plugins
will-moore Jan 25, 2016
3238f9e
Use scrollIntoViewIfNeeded() instead of focus() selected thumbnail
will-moore Jan 25, 2016
97228b2
Temp TODO
will-moore Jan 27, 2016
4e55857
Move icon.scrollIntoViewIfNeeded() out of render()
will-moore Jan 29, 2016
4441201
Move Well code into new component
will-moore Jan 30, 2016
a605495
Shift/meta click multi-selects wells in plate
will-moore Jan 31, 2016
55e5239
Access component refs directly, not via function
will-moore Feb 1, 2016
301a2e9
De-select image still renders previous dataset
will-moore Feb 1, 2016
930b4eb
Cleanup code from previous commit
will-moore Feb 1, 2016
ccf3df1
Fix layout of Plate, without top toolbar
will-moore Feb 2, 2016
62864e6
Use ?show=well-123 to select Well when plate loads
will-moore Feb 4, 2016
fc7a99d
Use webpack to build components into bundle.js
will-moore Feb 5, 2016
6062c66
Start looking at well_selection_change
will-moore Feb 5, 2016
8675e67
Well selection working
will-moore Feb 6, 2016
7be4c8e
Drag-selectable plugin set up for Plates too
will-moore Feb 6, 2016
0db4d46
Keep React in sync with .ui-selected from selectable()
will-moore Feb 6, 2016
6a0a3d2
Merge remote-tracking branch 'origin/develop' into react_centre_panel
will-moore Feb 7, 2016
bfa69fb
Started on filter/search in jsTree
will-moore Feb 8, 2016
37063bc
Basic filter functionality in React, jstree & tree.py
will-moore Feb 9, 2016
c98405c
Don't inst.load_node() on 'changed.jstree'
will-moore Feb 9, 2016
9130eb7
Improved filter plugin
will-moore Feb 10, 2016
033333f
More improvements to filter plugin
will-moore Feb 10, 2016
10674f8
Remove thumbsToDeselect hack
will-moore Feb 10, 2016
abef7bf
Show image count and filtered count in header
will-moore Feb 10, 2016
08b3a8c
Fix refreshThumbnails with thumbVersion
will-moore Feb 10, 2016
0d112e7
Fix bugs in well selection
will-moore Feb 11, 2016
03ddb01
Fix bug in drag-select thumbs
will-moore Feb 11, 2016
bd0165b
thumbnail containers always square
will-moore Feb 11, 2016
68f037a
Server-side counting of filtered images in tree.py
will-moore Feb 17, 2016
9fec1ef
Fix tree.py tests
will-moore Feb 17, 2016
4b8bd06
Experimental extra $.ajax call in jstree 'data' method
will-moore Feb 18, 2016
decf2a2
Parent node updated with filterCount in single ajax call
will-moore Feb 18, 2016
b264b77
Merge remote-tracking branch 'origin/develop' into react_centre_panel
will-moore Feb 18, 2016
3051203
Handle display when filterCount is 0
will-moore Feb 19, 2016
dd59009
Pagination mostly working
will-moore Feb 19, 2016
e8eec87
Fix pagination when images in Dataset are selected
will-moore Feb 21, 2016
3d1dea0
Fix filtered images message when count is undefined
will-moore Feb 21, 2016
3fd3017
Disable Prev/Next pagination buttons when appropriate
will-moore Feb 24, 2016
b75b476
If thumbVersion is -1, use random number for version
will-moore Feb 24, 2016
a97e029
Use 'webindex' url prefix for Dataset thumb urls
will-moore Feb 24, 2016
1076c17
Use well.thumb_url for plate thumbnails src
will-moore Feb 24, 2016
a42776b
Remove css transition from tags
will-moore Feb 24, 2016
419c510
Missing Pagination.jsx for previous commit
will-moore Feb 25, 2016
b3bd588
Double-click handler on Wells, pagination disabled for shares etc
will-moore Feb 25, 2016
ad2bd7d
More fixes for shares page
will-moore Feb 25, 2016
43a6dc4
Handle doubleClick on Dataset thumbs
will-moore Feb 25, 2016
d8ad258
Merge remote-tracking branch 'origin/develop' into react_centre_panel
will-moore Feb 29, 2016
f9a8009
Small fixes to Robot tests
will-moore Feb 29, 2016
c402010
Removing unused code from center_plugin.thumbs.js.html
will-moore Feb 29, 2016
1591484
Delete underscore templates and underscore.js
will-moore Feb 29, 2016
c9c103c
Delete plate.html, containers_icon.html & load_data()
will-moore Feb 29, 2016
df006f1
Delete ome.plateview.css and ome.plateview.js
will-moore Feb 29, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions components/tests/ui/resources/web/tree.txt
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ Wait Until Right Panel Loads Everything
Wait Until Center Panel Loads
[Arguments] ${containerType}
Run Keyword If '${containerType}' == 'Dataset' Wait Until Element Is Visible //*[@id="content_details"]/div[1]
Run Keyword If '${containerType}' == 'Dataset' Wait Until Element Is Visible xpath=//*[@id="filtersearch"]/div/label[contains(text(),'Filter Images')]
Run Keyword If '${containerType}' == 'Dataset' Wait Until Element Is Visible xpath=//*[@id="filtersearch"]
Run Keyword If '${containerType}' == 'Dataset' Wait Until Element Is Visible xpath=//*[@id="icon_layout"][contains(@title,"View as Thumbnails")][contains(@class,"checked")]
Run Keyword If '${containerType}' == 'Dataset' Wait Until Element Is Visible //*[@id="table_layout"][contains(@title,"View as List")]

Expand Down Expand Up @@ -512,9 +512,10 @@ Shift Click Node
[Arguments] ${nodeId}
Shift Click Element "#${nodeId}>a"

Shift Click Thumbnail
[Arguments] ${iid}
Shift Click Element "#image_icon-${iid}"
# Conflicts with similar jQuery events in IconTable.jsx
# Shift Click Thumbnail
# [Arguments] ${iid}
# Shift Click Element "#image_icon-${iid}"

Shift Click Element
[Arguments] ${elementSelector}
Expand All @@ -524,9 +525,10 @@ Meta Click Node
[Arguments] ${nodeId}
Meta Click Element "#${nodeId}>a"

Meta Click Thumbnail
[Arguments] ${iid}
Meta Click Element "#image_icon-${iid}"
# Conflicts with similar jQuery events in IconTable.jsx
# Meta Click Thumbnail
# [Arguments] ${iid}
# Meta Click Element "#image_icon-${iid}"

Meta Click Element
[Arguments] ${elementSelector}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,16 @@ Check Multi Selections
${imageId} Select First Orphaned Image
Click Next Thumbnail
${imageId1} Get Id From Selected Thumbnail
Meta Click Thumbnail ${imageId}
Should Not Be Equal ${imageId} ${imageId1}

# Meta Click Thumbnail uses jQuery - conflicts with similar events in IconTable.jsx
# Meta Click on Node instead
${nodeId}= Wait For Image Node ${imageId}
Meta Click Node ${nodeId}

${numOfObjects} Get Number Of Selected Objects From Tree
${numOfObjects1} Get Number Of Selected Objects From Center Panel

Should Be Equal ${numOfObjects} 2
Should Be Equal ${numOfObjects} ${numOfObjects1}
Wait Until Right Panel Loads For MultiSelection ${numOfObjects}
6 changes: 2 additions & 4 deletions components/tests/ui/testcases/web/spw_test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,8 @@ Suite Teardown Close all browsers

Click Well By Name
[Arguments] ${name}
Wait Until Page Contains Element xpath=//td[contains(@class,'well')]/img[@name='${name}']
# Have to be sure that thumbnail itself has loaded before image is clickable!
Sleep 1
Click Element xpath=//td[contains(@class,'well')]/img[@name='${name}']
Wait Until Page Contains Element xpath=//td[contains(@class,'well')][@title='${name}']
Click Element xpath=//td[contains(@class,'well')][@title='${name}']

Bulk Annotation Should Contain Row
[Arguments] ${key} ${value}
Expand Down
1 change: 1 addition & 0 deletions components/tools/OmeroWeb/omeroweb/.gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
db.sqlite3
django
node_modules/
21 changes: 21 additions & 0 deletions components/tools/OmeroWeb/omeroweb/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"name": "omeroweb",
"version": "1.0.0",
"description": "'OMERO.web application'",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "GPL-3.0",
"devDependencies": {
"babel-core": "^6.4.5",
"babel-loader": "^6.2.2",
"babel-preset-es2015": "^6.3.13",
"babel-preset-react": "^6.3.13",
"jsx-loader": "^0.13.2",
"react": "^0.14.7",
"react-dom": "^0.14.7",
"webpack": "^1.12.13"
}
}
2 changes: 2 additions & 0 deletions components/tools/OmeroWeb/omeroweb/webclient/decorators.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,3 +183,5 @@ def load_settings(self, request, context, conn):
c_plugins.append({
"label": label, "include": include, "plugin_id": plugin_id})
context['ome']['center_plugins'] = c_plugins

context['ome']['page_size'] = settings.PAGE
Original file line number Diff line number Diff line change
Expand Up @@ -930,8 +930,42 @@ button::-moz-focus-inner {



.iconTableHeader, .iconTableFooter, .iconTable, .plateContainer, .centrePanel {
position: absolute;
left: 0;
right: 0;
border-right: 0;
}

.centrePanel {
top: 0;
bottom: 0;
}

.iconTableHeader {
top: 0;
height: 29px;
}

.iconTableFooter {
bottom: 0;
height: 25px;
}

.iconTable, .plateContainer {
bottom:0;
overflow:auto;
margin-top:0px;
}

.iconTable {
top:29px;
}

.plateContainer {
top: 0;

}



Expand Down Expand Up @@ -993,6 +1027,14 @@ button::-moz-focus-inner {
transition: opacity .2s linear;

}

.filterCounter {
padding: 8px 10px;
position: absolute;
left: 170px;
color: #555;
font-size: 13px
}



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1493,6 +1493,7 @@

.iconLayout li {
display: inline-block;
outline: none;
background-color:hsl(0,0%,95%);
margin:5px;
padding:5px;
Expand Down Expand Up @@ -2136,11 +2137,19 @@ div.paging {
margin: 0;
padding: 10px 0px 30px 0px;
}
/* prev/next buttons */
div.paging button {
margin-left: 5px;
}
/* page numbers <input> */
div.paging input.button_pagination {
border: 0;
background-color: transparent;
color: #1b7bc7;
padding: 0;
padding: 2px;
}
div.paging input.button_pagination:disabled {
color: black;
}

#spw {
Expand All @@ -2156,7 +2165,7 @@ div.paging input.button_pagination {
vertical-align: middle;
}
#spw table td {
padding: 1px;
padding: 2px;
border: 1px solid #ccc;
width: 25px;
}
Expand All @@ -2167,8 +2176,8 @@ div.paging input.button_pagination {
vertical-align: top;
}

#spw table td.ui-selecting { border: 1px dashed #555; padding: 1px; background-color:#87ABD2;}
#spw table td.ui-selected { border: 1px dashed #555; padding: 1px; background-color:#87ABD2;}
#spw table td.ui-selecting { border: 1px dashed #555; background-color:#87ABD2;}
#spw table td.ui-selected { border: 1px dashed #555; background-color:#87ABD2;}



Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@


(function ($, undefined) {
"use strict";

$.jstree.plugins.filter = function (options, parent) {

this.filter = function(obj, filterString) {
// we are filtering images within a single parent obj (Dataset)
if (!obj || !obj.id || obj.id === "#") {return false;}
obj = this.get_node(obj);

var selectedNodeIds = [],
inst = this;

// If parent node not selected,
// get IDs of currently selected nodes
if (!this.is_selected(obj)) {
this.get_selected(true).forEach(function(n){
selectedNodeIds.push(n.type + "-" + n.data.obj.id);
});
this.deselect_all(true);
}

// One-time callback when refresh completes (triggers 'load_node')
$("#dataTree").one("load_node.jstree", function reselectNodes() {
// Try to reselect images that have not been filtered
selectedNodeIds.forEach(function(id){
var n = inst.locate_node(id, obj)[0];
if (n) {
inst.select_node(n);
}
});
// if nothing was re-selected, need to trigger refresh
if (inst.get_selected().length === 0) {
inst.select_node(obj, true); // silent
inst.deselect_all();
}
});

// add this to the data object...
obj.data.obj.filter = filterString;

// refresh parent node (will re-load filtered data)
this.refresh_node(obj);
};
};

})(jQuery);
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@

$.jstree.plugins.pagination = function (options, parent) {

this.get_page_size = function(node) {
// nicer way to acces this global variable
return WEBCLIENT.PAGE;
};

this.change_page = function(node, page) {
this._set_page(node, page);
this.refresh_node(node);
Expand Down
Loading