Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jkmarx/clean up ui grid defaults #1687

Merged
merged 104 commits into from
Apr 25, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
79dc894
Fix spacing
jkmarx Mar 29, 2017
c08e84d
Update partial to view for clarity.
jkmarx Mar 29, 2017
5ac8f4e
Fix typo.
jkmarx Mar 29, 2017
3eb44c2
Swap cart and control panel.
jkmarx Mar 29, 2017
cd4f197
Display control panel tree.
jkmarx Mar 31, 2017
185c9ad
Remove temp selected file display.
jkmarx Mar 31, 2017
4804a41
Add pair styling.
jkmarx Mar 31, 2017
dd620f0
Tweak css.
jkmarx Apr 4, 2017
a3f4266
Add file relationship service and depth.
jkmarx Apr 4, 2017
fe144a8
Fix counters for each group.
jkmarx Apr 5, 2017
3f74156
Display selected nodes.
jkmarx Apr 5, 2017
acf4682
Move input group into control directive.
jkmarx Apr 5, 2017
b80fd38
Fix mapping function.
jkmarx Apr 5, 2017
7612cf6
Fix currentTypes generation.
jkmarx Apr 5, 2017
350d343
Max pairs length.
jkmarx Apr 6, 2017
5a627e9
Remove console logs
jkmarx Apr 6, 2017
751aeb9
Trigger current position change when a new tool is selected.
jkmarx Apr 6, 2017
92de38c
Fix scope bug due to factory.
jkmarx Apr 6, 2017
cc44288
Add comments.
jkmarx Apr 6, 2017
ac57907
Remove cloak.
jkmarx Apr 6, 2017
c559bda
Add unit test.
jkmarx Apr 6, 2017
18b176d
Move attribute generation to service.
jkmarx Apr 6, 2017
f6d4506
Put method calls into activate method per style guide.
jkmarx Apr 6, 2017
fc64a97
Style guide changes.
jkmarx Apr 6, 2017
d47a34d
Add a popover to the selection grid.
jkmarx Apr 6, 2017
3a9aaae
Close popover when not clicking on row.
jkmarx Apr 6, 2017
d1229f7
Add popover with custom template.
jkmarx Apr 7, 2017
b892f80
Modify template to only open one popover at a time.
jkmarx Apr 7, 2017
a8a589a
rename method for clarity.
jkmarx Apr 7, 2017
55f1ed7
Use jqlite instead.
jkmarx Apr 7, 2017
4c6ff67
Add template to ui-grid selection.
jkmarx Apr 10, 2017
1fca5b2
Add checkbox selection.
jkmarx Apr 11, 2017
b348072
Grab current uuids from service and dynamically create obj.
jkmarx Apr 11, 2017
aaa5bea
Move input groups to service.
jkmarx Apr 12, 2017
230d0e0
Add a left float, unstyle list class.
jkmarx Apr 12, 2017
6fea3ac
Show current group.
jkmarx Apr 12, 2017
c858343
Rename variable for clarity.
jkmarx Apr 12, 2017
d1ed2f5
Add data object to track current group's nodes.
jkmarx Apr 12, 2017
f70c4c3
Remove buttons for now.
jkmarx Apr 12, 2017
27a22ae
Refactor according to style guide.
jkmarx Apr 13, 2017
1196b55
Change method and variable name for clarity.
jkmarx Apr 13, 2017
977d36e
Move selection obj to node-service.
jkmarx Apr 13, 2017
2f52eb5
Fix bug which requires deep copy.
jkmarx Apr 13, 2017
d35074d
Fix bug with removing selected nodes.
jkmarx Apr 13, 2017
47ac441
Add comments.
jkmarx Apr 13, 2017
f9976ed
fix button css
jkmarx Apr 13, 2017
bc2cf31
Refactor and added comments.
jkmarx Apr 13, 2017
19721bd
Update title.
jkmarx Apr 13, 2017
f183a1a
Add unit for ctrl.
jkmarx Apr 13, 2017
e889476
Add iffy
jkmarx Apr 13, 2017
0dec4c0
Add directive unit test.
jkmarx Apr 13, 2017
9ddb21b
Add line break for readability.
jkmarx Apr 13, 2017
fd3f0ec
Add another directive unit test and remove unused variable.
jkmarx Apr 13, 2017
08446d2
Merge conflict.
jkmarx Apr 13, 2017
2cb43fd
Update unit test.
jkmarx Apr 13, 2017
3db4b3f
Fix typo in view location.
jkmarx Apr 14, 2017
49a0a7f
Fix unit test.
jkmarx Apr 14, 2017
edcd49e
Add comments.
jkmarx Apr 14, 2017
66a6afa
Fix unit tests.
jkmarx Apr 14, 2017
74e703b
Add file relationship test.
jkmarx Apr 14, 2017
47b42f1
Fix bug due to merge.
jkmarx Apr 14, 2017
37621bc
Update directive with static url method.
jkmarx Apr 14, 2017
1bc6927
Remove unneccessary files.
jkmarx Apr 14, 2017
90c8394
Fix formatting.
jkmarx Apr 14, 2017
63fd1a6
Reflect selection in control panel.
jkmarx Apr 14, 2017
8f03ead
Merge branch 'develop' of https://github.com/refinery-platform/refine…
jkmarx Apr 14, 2017
e7ed6f0
Remove recursive directive and rename for clarity.
jkmarx Apr 18, 2017
85394a0
Reorder and used service for control panel.
jkmarx Apr 18, 2017
0deb51c
Fix indexing.
jkmarx Apr 18, 2017
1de3022
Add css.
jkmarx Apr 18, 2017
13306f9
Add borders to templates.
jkmarx Apr 19, 2017
91511f0
Fix orderby .
jkmarx Apr 19, 2017
2cb50ef
Remove current input group.
jkmarx Apr 19, 2017
76c2b5c
Merge branch 'develop' of https://github.com/refinery-platform/refine…
jkmarx Apr 19, 2017
ec7f84d
Add unit test.
jkmarx Apr 19, 2017
03fd10c
Consolidate components.
jkmarx Apr 19, 2017
8e8288b
Disable remove/removeAll if groups are empty.
jkmarx Apr 19, 2017
acad3fe
Reorder variable and comment.
jkmarx Apr 19, 2017
06a842c
Remove hr to keep styling consistent.
jkmarx Apr 19, 2017
70917e6
Delete obj properties when empty.
jkmarx Apr 19, 2017
eed7b93
Split pair portion.
jkmarx Apr 19, 2017
ad06726
Seperate pair/list section.
jkmarx Apr 20, 2017
ee0c5f1
Update selectionObj reference.
jkmarx Apr 20, 2017
c727cd8
Adjust css.
jkmarx Apr 20, 2017
e941243
Fix merge conflict.
jkmarx Apr 20, 2017
02b6516
Fix deselect checkbox when clearing group.
jkmarx Apr 21, 2017
b6cc9b1
Add list structure to control panel.
jkmarx Apr 21, 2017
303fdc1
Fix bug with popover.
jkmarx Apr 23, 2017
e59211b
Fix remove and deselect bug.
jkmarx Apr 23, 2017
4390ff5
Add comments.
jkmarx Apr 24, 2017
12f82c6
Turn off select all.
jkmarx Apr 24, 2017
24ce9a9
Add comments and unit tests.
jkmarx Apr 24, 2017
ddb4c60
Add comment.
jkmarx Apr 24, 2017
8b4bea1
Remove unused igv and visualization module.
jkmarx Apr 24, 2017
54a09d4
Remove from refinery app.
jkmarx Apr 24, 2017
b49af72
Merge branch 'develop' of https://github.com/refinery-platform/refine…
jkmarx Apr 24, 2017
da9bbcd
Update api endpoint.
jkmarx Apr 24, 2017
8a9de4b
Remove default stylin for selected rows.
jkmarx Apr 24, 2017
499a60b
Remove default selection.
jkmarx Apr 24, 2017
991b7c3
Remove console.log.
jkmarx Apr 24, 2017
6ec162b
Remove reference to the ui-grid node selections.
jkmarx Apr 24, 2017
f42e995
Update unit test.
jkmarx Apr 24, 2017
ca5e4ce
Update name for clarity.
jkmarx Apr 24, 2017
9d87cd8
Merge branch 'develop' of https://github.com/refinery-platform/refine…
jkmarx Apr 24, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion refinery/tool_manager/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def setUp(self):
self.factory = APIRequestFactory()
self.view = ToolDefinitionsViewSet.as_view({'get': 'list'})

self.url_root = '/api/v2/tools/definitions/'
self.url_root = '/api/v2/tool_definitions/'

self.galaxy_instance = Instance.objects.create()
self.workflow_engine = WorkflowEngine.objects.create(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
class="btn btn-primary btn-xs"
rp-analysis-launch-modal
ng-click="open()"
ng-disabled="isLaunchNodesSelectionEmpty() || !currentWorkflow.isAvailable()">
ng-disabled="!currentWorkflow.isAvailable()">
Run Analysis
</button>
</span>
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

function toolsDefinitionsService ($resource, settings) {
var toolsDefinitions = $resource(
settings.appRoot + settings.refineryApiV2 + '/tools/definitions',
settings.appRoot + settings.refineryApiV2 + '/tool_definitions',
{},
{
query: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@
.expectGET(
settings.appRoot +
settings.refineryApiV2 +
'/tools/definitions'
'/tool_definitions'
).respond(200, fakeResponse);
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,6 @@ <h4>Inputs ({{currentWorkflow.getCategory()}})</h4>
</span>
</div>

<div ng-if="dataSet2Flag && currentWorkflow.isSingleInput()">
<rp-file-browser-node-group></rp-file-browser-node-group>
<div class="p-a-1">
<button
class="btn btn-warning"
rp-analysis-launch-modal
ng-click="open()"
ng-disabled="isLaunchNodesSelectionEmpty()">
Launch Analysis
</button>
</div>
</div>

<div ng-if="!dataSet2Flag">
<div ng-controller="NodeSetListApiCtrl" ng-if="currentWorkflow.isSingleInput()">
<ui-select
Expand Down
111 changes: 4 additions & 107 deletions refinery/ui/source/js/file-browser/ctrls/ctrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,9 @@
infiniteScrollUp: true,
infiniteScrollDown: true,
useExternalSorting: true,
enableRowSelection: true,
enableSelectAll: false,
selectionRowHeaderWidth: 35,
rowHeight: 35,
showGridFooter: true,
enableSelectionBatchEvent: true,
multiSelect: true,
columnDefs: fileBrowserFactory.customColumnNames,
data: fileBrowserFactory.assayFiles,
Expand All @@ -94,9 +91,6 @@
vm.refreshSelectedFieldFromQuery = refreshSelectedFieldFromQuery;
vm.reset = reset;
vm.rowCount = maxFileRequest;
vm.selectNodesCount = 0;
vm.setGridSelectedRows = setGridSelectedRows;
vm.setGridUnselectedRows = setGridUnselectedRows;
vm.sortChanged = sortChanged;
vm.totalPages = 1; // variable supporting ui-grid dynamic scrolling
/** Used by ui to select/deselect, attributes have an object of filter fields
Expand All @@ -111,18 +105,6 @@
* -----------------------------------------------------------------------------
*/
function activate () {
// custom icon for ui-grid selection
$templateCache.put('ui-grid/selectionRowHeaderButtons',
'<div>' +
'<a rp-node-selection-popover title="Select Tool Input"' +
'ng-class="{\'ui-grid-row-selected\': row.isSelected}" ' +
'class="ui-grid-selection-row-header-buttons" ' +
'ng-click="selectButtonClick(row, $event); ' +
'grid.appScope.openSelectionPopover(row.entity.uuid);"' +
'id="{{row.entity.uuid}}">' +
'<i class="fa fa-arrow-right ui-grid-checks"' +
' aria-hidden="true"></i></a></div>'
);
// Ensure data owner
checkDataSetOwnership();
// initialize the dataset and updates ui-grid selection, filters, and url
Expand Down Expand Up @@ -252,64 +234,16 @@
// Sort events
vm.gridApi.core.on.sortChanged(null, vm.sortChanged);
vm.sortChanged(vm.gridApi.grid, [vm.gridOptions.columnDefs[1]]);

// Checkbox selection events
vm.gridApi.selection.on.rowSelectionChanged(null, function (row) {
angular.copy(row.entity, nodesService.activeNodeRow);
// When selected All, watching the deselect events for complement nodes
if (nodesService.selectedNodeGroupUuid &&
nodesService.selectedNodeGroupUuid !==
nodesService.defaultCurrentSelectionUuid) {
if (vm.afterNodeGroupUpdate) {
vm.afterNodeGroupUpdate = false;
nodesService.resetNodeGroupSelection(true);
}
}

if (nodesService.selectedAllFlag) {
nodesService.setComplementSeletedNodes(row);
vm.selectNodesCount = vm.assayFilesTotal -
nodesService.complementSelectedNodes.length;
} else {
// add or remove row to list
nodesService.setSelectedNodes(row);
vm.selectNodesCount = nodesService.selectedNodes.length;
}

// when not current selection, check if a new row was deselect/selected
if (nodesService.selectedNodeGroupUuid !==
nodesService.defaultCurrentSelectionUuid &&
nodesService.selectedNodesUuidsFromNodeGroup.length !==
nodesService.selectedNodes.length) {
// Reset the node group selection to current selection
nodesService.resetNodeGroupSelection(true);
}
});

// Event only occurs when checkbox is selected/deselected.
vm.gridApi.selection.on.rowSelectionChangedBatch(null, function
(eventRows) {
// When event all occurs, the node group should be current selection
nodesService.resetNodeGroupSelection(true);
// Checking the first row selected, ensures it's a true select all
if (eventRows[0].isSelected) {
nodesService.setSelectedAllFlags(true);
// Need to manually set vm.selectNodesCount to count of all list
vm.selectNodesCount = vm.assayFilesTotal;
} else {
nodesService.setSelectedAllFlags(false);
vm.selectNodesCount = 0;
}
});
}
}

/** vm method to open the selection popover and disable all popovers, so
* only one shows at a time. Needed in the ctrl due to ui-grid template.
* @param nodeUuid
*/
function openSelectionPopover (nodeUuid) {
angular.element('#' + nodeUuid).popover('show');
function openSelectionPopover (nodeRow) {
angular.copy(nodeRow, nodesService.activeNodeRow);
angular.element('#' + nodeRow.uuid).popover('show');
angular.element('.ui-grid-selection-row-header-buttons').popover('disable');
}

Expand Down Expand Up @@ -383,48 +317,11 @@
// timeout needed allows digest cycle to complete,and grid to ingest the data
vm.gridApi.infiniteScroll.resetScroll(vm.firstPage > 0, vm.lastPage < vm.totalPages);
resetGridService.setResetGridFlag(false);
// Select rows either from node group lists or previously selected
if (nodesService.selectedNodesUuidsFromNodeGroup.length > 0) {
nodesService.setSelectedNodesFromNodeGroup(
nodesService.selectedNodesUuidsFromNodeGroup
);
nodesService.selectNodesCount = nodesService
.selectedNodesUuidsFromNodeGroup.length;
correctRowSelectionInUI();
vm.afterNodeGroupUpdate = true;
} else if (nodesService.selectedNodes.length > 0) {
nodesService.selectNodesCount = nodesService.selectedNodesUuids.length;
correctRowSelectionInUI();
} else {
vm.gridApi.selection.clearSelectedRows();
nodesService.selectNodesCount = 0;
}
});
});
}
}

// Helper function: select rows on the ui-grid
function setGridSelectedRows (uuidsList) {
// If user scrolls quickly, there could be a delay for selected items
angular.forEach(vm.gridApi.grid.rows, function (gridRow) {
if (uuidsList.indexOf(gridRow.entity.uuid) > -1) {
vm.gridApi.selection.selectRow(gridRow.entity);
}
});
}

// Helper function: unselect rows on the ui-grid
function setGridUnselectedRows (uuidsList) {
// If user scrolls quickly, there could be a delay for selected items
angular.forEach(vm.gridApi.grid.rows, function (gridRow) {
// select rows if not in complement list
if (uuidsList.indexOf(gridRow.entity.uuid) === -1) {
vm.gridApi.selection.selectRow(gridRow.entity);
}
});
}

/**
* Generates sort param for api call from ui-grid response and calls grid
* reset
Expand Down Expand Up @@ -481,6 +378,7 @@
});
};

// TODO: Update with the new selected rows and the indicator column.
// Method to select/deselect rows programmically after dynamic
// scroll adds more data, at reset and per 300 rows
var correctRowSelectionInUI = function () {
Expand Down Expand Up @@ -554,7 +452,6 @@
});
selectedFilterService.resetAttributeFilter(fieldsObj);
});
vm.selectNodesCount = 0;
vm.filesParam.filter_attribute = {};
vm.reset();
}
Expand Down
4 changes: 0 additions & 4 deletions refinery/ui/source/js/file-browser/ctrls/node-group-ctrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,6 @@ function NodeGroupCtrl (
resetGridService.setResetGridFlag(true);
};

// helper method checking if any nodes are selected
vm.isNodeGroupSelectionEmpty = function () {
return selectedNodesService.isNodeSelectionEmpty();
};
/*
* -----------------------------------------------------------------------------
* Watchers and Method Calls
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<div id="assay-files-table"
ui-grid="FBCtrl.gridOptions"
ui-grid-selection
ui-grid-infinite-scroll
ui-grid-resize-columns
class="grid">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ <h2>
</span>
<div class="p-l-1-3 p-t-1-2 inline">
<button
ng-disabled="FBNGCtrl.isNodeGroupSelectionEmpty()"
class="btn btn-primary btn-xs p-r-1-3"
rp-file-browser-node-group-modal
refinery-tooltip
Expand Down
27 changes: 27 additions & 0 deletions refinery/ui/source/js/file-browser/services/factory.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ function fileBrowserFactory (
angular.copy(culledAttributes, assayAttributes);
// Add file_download column first
assayAttributes.unshift({ display_name: 'Url', internal_name: 'Url' });
assayAttributes.unshift({ display_name: 'Selection', internal_name: 'Selection' });
// some attributes will be duplicate in different fields, duplicate
// column names will throw an error. This prevents duplicates
for (var ind = 0; ind < assayAttributes.length; ind++) {
Expand Down Expand Up @@ -239,6 +240,30 @@ function fileBrowserFactory (
return internalName;
};

var setCustomSelectColumn = function (columnName) {
var cellTemplate = '<div class="ngCellText text-align-center">' +
'<a rp-node-selection-popover title="Select Tool Input"' +
'class="ui-grid-selection-row-header-buttons" ' +
'ng-click="selectButtonClick(row, $event); ' +
'grid.appScope.openSelectionPopover(row.entity);"' +
'id="{{row.entity.uuid}}">' +
'<i class="fa fa-arrow-right ui-grid-checks"' +
' aria-hidden="true"></i></a></div>';

return {
name: columnName,
field: columnName,
cellTooltip: true,
width: 4 + '%',
displayName: '',
enableFiltering: false,
enableSorting: false,
enableColumnMenu: false,
enableColumnResizing: true,
cellTemplate: cellTemplate
};
};

/**
* Helper method for file download column, requires unique template & fields.
* @param {string} _columnName - column name
Expand Down Expand Up @@ -300,6 +325,8 @@ function fileBrowserFactory (
if (columnName === 'Url') {
// Url requires a custom template for downloading links
tempCustomColumnNames.push(setCustomUrlColumnDef(columnName));
} else if (columnName === 'Selection') {
tempCustomColumnNames.push(setCustomSelectColumn(columnName));
} else if (columnName === 'Analysis Group') {
// Analysis requires a custom template for filtering -1 entries
var _cellTemplate = '<div class="ngCellText text-align-center"' +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,7 @@

function selectedNodesService ($window, selectedFilterService) {
var vm = this;
vm.selectedNodes = [];
vm.selectedNodesUuids = [];
vm.selectedNodesUuidsFromNodeGroup = [];
vm.selectedAllFlag = false;
vm.complementSelectedNodes = [];
vm.complementSelectedNodesUuids = [];
vm.selectedNodeGroupUuid = '';
vm.defaultCurrentSelectionUuid = '';
vm.resetNodeGroup = false;
Expand All @@ -29,29 +24,6 @@ function selectedNodesService ($window, selectedFilterService) {
});
};

/**
* Manually keep track of selected nodes which is neccessary due to dynamic
* scrolling in the ui-grid
* @param {obj} nodeRow - ui-grid row obj
* */
vm.setSelectedNodes = function (nodeRow) {
var ind = vm.selectedNodesUuids.indexOf(nodeRow.entity.uuid);
if (nodeRow.isSelected) {
if (ind === -1) {
vm.selectedNodes.push(nodeRow);
vm.selectedNodesUuids.push(nodeRow.entity.uuid);
}
// Have to set explictly to keep deleted rows from infinite scrolling
} else if (nodeRow.isSelected === false) {
if (ind > -1) {
vm.selectedNodesUuids.splice(ind, 1);
vm.selectedNodes.splice(ind, 1);
}
}
// else nothing because it is not in current block of data
return vm.selectedNodes;
};

/**
* Deep copy of a list of node uuids to the selected uuids from node group
* @param {list} nodesUuidsList - list of uuids
Expand Down Expand Up @@ -99,28 +71,6 @@ function selectedNodesService ($window, selectedFilterService) {
}
};

/**
* These are non-selected nodes uuid, when the select all flag is true
* @param {obj} nodeRow - ui-grid row object or ui-grid structured row objects
*/
vm.setComplementSeletedNodes = function (nodeRow) {
var ind = vm.complementSelectedNodesUuids.indexOf(nodeRow.entity.uuid);
if (nodeRow.isSelected === false) {
if (ind === -1) {
vm.complementSelectedNodes.push(nodeRow);
vm.complementSelectedNodesUuids.push(nodeRow.entity.uuid);
}
// Have to set explictly to keep deleted rows from infinite scrolling
} else if (nodeRow.isSelected === true) {
if (ind > -1) {
vm.complementSelectedNodes.splice(ind, 1);
vm.complementSelectedNodesUuids.splice(ind, 1);
}
}
// else nothing should occur to nodeRow because it is not in assayFiles
return vm.complementSelectedNodes;
};

/**
* Resets Node Group UI-Select menu to default Current Selection
* @param {boolean} flag - resets boolean
Expand Down Expand Up @@ -152,17 +102,6 @@ function selectedNodesService ($window, selectedFilterService) {
}
return params;
};


// Used by ctrls for node-group and launch-analysis partials to designate
// whether any nodes are selected.
vm.isNodeSelectionEmpty = function () {
var params = vm.getNodeGroupParams();
if (params.nodes.length === 0 && !params.use_complement_nodes) {
return true;
}
return false;
};
}

angular.module('refineryFileBrowser')
Expand Down