Skip to content

Commit

Permalink
able to remove an added track
Browse files Browse the repository at this point in the history
  • Loading branch information
nathandunn committed Feb 26, 2019
1 parent 7c1d096 commit b007a85
Show file tree
Hide file tree
Showing 5 changed files with 162 additions and 35 deletions.
61 changes: 61 additions & 0 deletions grails-app/controllers/org/bbop/apollo/OrganismController.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,67 @@ class OrganismController {
render returnObject as JSON
}

@RestApiMethod(description = "Removes an added track from an existing organism returning a JSON object containing all tracks for the current organism.", path = "/organism/removeTrackFromOrganism", verb = RestApiVerb.POST)
@RestApiParams(params = [
@RestApiParam(name = "username", type = "email", paramType = RestApiParamType.QUERY)
, @RestApiParam(name = "password", type = "password", paramType = RestApiParamType.QUERY)
, @RestApiParam(name = "organism", type = "string", paramType = RestApiParamType.QUERY, description = "ID or commonName that can be used to uniquely identify an organism")
, @RestApiParam(name = "trackLabel", type = "string", paramType = RestApiParamType.QUERY, description = "Name of track")
])
@Transactional
def removeTrackFromOrganism() {
JSONObject returnObject = new JSONObject()
JSONObject requestObject = permissionService.handleInput(request, params)
println "removing track from organism with ${requestObject}"

if (!requestObject.containsKey(FeatureStringEnum.ORGANISM.value)) {
returnObject.put("error", "/removeTrackFromOrganism requires '${FeatureStringEnum.ORGANISM.value}'.")
response.setStatus(HttpServletResponse.SC_BAD_REQUEST)
render returnObject as JSON
return
}

if (!requestObject.containsKey(FeatureStringEnum.TRACK_LABEL.value)) {
returnObject.put("error", "/removeTrackFromOrganism requires '${FeatureStringEnum.TRACK_LABEL.value}'.")
response.setStatus(HttpServletResponse.SC_BAD_REQUEST)
render returnObject as JSON
return
}

try {
permissionService.checkPermissions(requestObject, PermissionEnum.ADMINISTRATE)
Organism organism = preferenceService.getOrganismForTokenInDB(requestObject.get(FeatureStringEnum.ORGANISM.value)?.id)
println "organism ${organism}"
// find in the extended track list and remove
String extendedDirectoryName = configWrapperService.commonDataDirectory + File.separator + organism.id + "-" + organism.commonName
File extendedDirectory = new File(extendedDirectoryName)
if (!extendedDirectory.exists()) {
returnObject.put("error", "No temporary directory found to remove tracks from ${extendedDirectoryName}")
render returnObject as JSON
return
}
File extendedTrackListJsonFile = new File(extendedDirectoryName + File.separator + EXTENDED_TRACKLIST)
JSONObject extendedTrackListObject = JSON.parse(extendedTrackListJsonFile.text)
JSONArray extendedTracksArray = extendedTrackListObject.getJSONArray(FeatureStringEnum.TRACKS.value)
println "input tracks ${extendedTracksArray as JSON}"

extendedTracksArray = trackService.removeTrackFromArray(extendedTracksArray, requestObject.get(FeatureStringEnum.TRACK_LABEL.value))
println "output tracks ${extendedTracksArray as JSON}"
extendedTrackListObject.put(FeatureStringEnum.TRACKS.value,extendedTracksArray)
extendedTrackListJsonFile.write(extendedTrackListObject.toString())
println "final object ${extendedTrackListObject as JSON}"
println "write to file ${extendedTrackListJsonFile.absolutePath}"
render returnObject as JSON
} catch (Exception ce) {
log.error ce.message
returnObject.put("error", ce.message)
render returnObject as JSON
return
}

}


@RestApiMethod(description = "Adds a track to an existing organism returning a JSON object containing all tracks for the current organism.", path = "/organism/addTrackToOrganism", verb = RestApiVerb.POST)
@RestApiParams(params = [
@RestApiParam(name = "username", type = "email", paramType = RestApiParamType.QUERY)
Expand Down
20 changes: 20 additions & 0 deletions grails-app/services/org/bbop/apollo/TrackService.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -483,6 +483,26 @@ class TrackService {
return null
}

/**
*
* @param tracksArray
* @param trackName
* @return
*/
@NotTransactional
def removeTrackFromArray(JSONArray tracksArray, String trackName) {
JSONArray returnArray = new JSONArray()
for (int i = 0; i < tracksArray.size(); i++) {
JSONObject obj = tracksArray.getJSONObject(i)
println "obj ${obj.label} vs ${trackName}"
if (obj.getString("label") != trackName) {
returnArray.add(obj)
}
}

return returnArray
}

/**
* Removes plugins included in annot.json (which is just WebApollo)
* @param pluginsArray
Expand Down
97 changes: 64 additions & 33 deletions src/gwt/org/bbop/apollo/gwt/client/TrackPanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.bbop.apollo.gwt.client.dto.TrackInfo;
import org.bbop.apollo.gwt.client.event.OrganismChangeEvent;
import org.bbop.apollo.gwt.client.event.OrganismChangeEventHandler;
import org.bbop.apollo.gwt.client.rest.OrganismRestService;
import org.bbop.apollo.gwt.client.rest.RestService;
import org.bbop.apollo.gwt.client.rest.UserRestService;
import org.bbop.apollo.gwt.client.track.TrackConfigurationTemplate;
Expand Down Expand Up @@ -115,7 +116,7 @@ interface TrackUiBinder extends UiBinder<Widget, TrackPanel> {
AnchorListItem selectBamCanvas;
@UiField
AnchorListItem selectBigWigXY;
// @UiField
// @UiField
// AnchorListItem selectGFF3Canvas;
@UiField
AnchorListItem selectVCFCanvas;
Expand Down Expand Up @@ -186,13 +187,13 @@ public void onSubmit(FormPanel.SubmitEvent event) {
@Override
public void onSubmitComplete(FormPanel.SubmitCompleteEvent event) {
loadTracks(300);
resetNewTrackModel();
Bootbox.confirm("Track added successfully. Reload to see?", new ConfirmCallback() {
Bootbox.confirm("Track '"+trackFileName.getText()+"' added successfully. Reload to see?", new ConfirmCallback() {
@Override
public void callback(boolean result) {
if(result){
Window.Location.reload();
}
if (result) {
Window.Location.reload();
}
resetNewTrackModel();
}
});
}
Expand Down Expand Up @@ -310,12 +311,11 @@ private TreeItem generateTreeItem(JSONObject jsonObject) {

private void setTrackTypeAndUpdate(TrackTypeEnum trackType) {
configurationButton.setText(trackType.toString());
configuration.setText(TrackConfigurationTemplate.generateForTypeAndKeyAndCategory(trackType, trackFileName.getText(),categoryName.getText()).toString());
configuration.setText(TrackConfigurationTemplate.generateForTypeAndKeyAndCategory(trackType, trackFileName.getText(), categoryName.getText()).toString());
showFileOptions(trackType);
if (trackType.isIndexed()) {
showIndexOptions(trackType);
}
else{
} else {
hideIndexOptions();
}
}
Expand Down Expand Up @@ -343,7 +343,7 @@ public void uploadTrackFile(ChangeEvent event) {

@UiHandler("trackFileName")
public void updateTrackFileName(KeyUpEvent event) {
configuration.setText(TrackConfigurationTemplate.generateForTypeAndKeyAndCategory(getTrackType(), trackFileName.getText(),categoryName.getText()).toString());
configuration.setText(TrackConfigurationTemplate.generateForTypeAndKeyAndCategory(getTrackType(), trackFileName.getText(), categoryName.getText()).toString());
}

@UiHandler("cancelNewTrack")
Expand Down Expand Up @@ -377,7 +377,7 @@ private void showFileOptions(TrackTypeEnum typeEnum) {
trackFileHTML.setVisible(true);
uploadTrackFile.setVisible(true);

trackFileHTML.setText("*."+typeEnum.getSuffix());
trackFileHTML.setText("*." + typeEnum.getSuffix());
}

private void hideIndexOptions() {
Expand All @@ -390,7 +390,7 @@ private void showIndexOptions(TrackTypeEnum typeEnum) {
trackFileIndexHTML.setVisible(true);
uploadTrackFileIndex.setVisible(true);

trackFileIndexHTML.setText("*."+typeEnum.getSuffixIndex());
trackFileIndexHTML.setText("*." + typeEnum.getSuffixIndex());
}

private void resetNewTrackModel() {
Expand Down Expand Up @@ -496,6 +496,36 @@ static void filterList() {
renderFiltered();
}

static void removeTrack(final String label) {
Bootbox.confirm("Remove track " + label + "?", new ConfirmCallback() {
@Override
public void callback(boolean result) {
if (result) {
OrganismRestService.removeTrack(
new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
Bootbox.confirm("Track '"+label + "' removed, refresh?", new ConfirmCallback() {
@Override
public void callback(boolean result) {
if (result) {
Window.Location.reload();
}
}
});
}

@Override
public void onError(Request request, Throwable exception) {
Bootbox.alert("Error removing track: " + exception.getMessage());
}
}
, MainPanel.getInstance().getCurrentOrganism(), label);
}
}
});
}

static class TrackBodyPanel extends PanelBody {

private final TrackInfo trackInfo;
Expand Down Expand Up @@ -532,30 +562,31 @@ private void decorate() {
removeButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Window.alert("removing");
removeTrack(trackInfo.getName());
// Window.alert("removing");
}
});
label.add(removeButton);
Button editButton = new Button("Edit");
editButton.setPull(Pull.RIGHT);
editButton.addStyleName("track-edit-button");
editButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Window.alert("editing");
}
});
label.add(editButton);
Button hideButton = new Button("Hide");
hideButton.setPull(Pull.RIGHT);
hideButton.addStyleName("track-edit-button");
hideButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Window.alert("hiding from public");
}
});
label.add(hideButton);
// Button editButton = new Button("Edit");
// editButton.setPull(Pull.RIGHT);
// editButton.addStyleName("track-edit-button");
// editButton.addClickHandler(new ClickHandler() {
// @Override
// public void onClick(ClickEvent event) {
// Window.alert("editing");
// }
// });
// label.add(editButton);
// Button hideButton = new Button("Hide");
// hideButton.setPull(Pull.RIGHT);
// hideButton.addStyleName("track-edit-button");
// hideButton.addClickHandler(new ClickHandler() {
// @Override
// public void onClick(ClickEvent event) {
// Window.alert("hiding from public");
// }
// });
// label.add(hideButton);
}

add(inputGroup);
Expand Down
10 changes: 8 additions & 2 deletions src/gwt/org/bbop/apollo/gwt/client/dto/OrganismInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,14 @@ public void setBlatDb(String blatdb) {
this.blatdb = blatdb;
}

public boolean getPublicMode() {
public Boolean getPublicMode() {
if(publicMode==null){
return false ;
}
return publicMode;
}

public void setPublicMode(boolean pm) {
public void setPublicMode(Boolean pm) {
this.publicMode=pm;
}

Expand Down Expand Up @@ -134,6 +137,9 @@ public boolean isCurrent() {


public Boolean getObsolete() {
if(obsolete==null){
return false ;
}
return obsolete;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.bbop.apollo.gwt.client.rest;

import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.*;
import com.google.gwt.json.client.*;
import com.google.gwt.user.client.Window;
Expand Down Expand Up @@ -92,6 +93,14 @@ public static void deleteOrganism(RequestCallback requestCallback, OrganismInfo
RestService.sendRequest(requestCallback,"organism/deleteOrganism", OrganismInfoConverter.convertOrganismInfoToJSONObject(organismInfo));
}

public static void removeTrack(RequestCallback requestCallback, OrganismInfo organismInfo,String trackName) {
JSONObject data = new JSONObject();
JSONObject organismObject = OrganismInfoConverter.convertOrganismInfoToJSONObject(organismInfo);
data.put(FeatureStringEnum.ORGANISM.getValue(),organismObject);
data.put(FeatureStringEnum.TRACK_LABEL.getValue(),new JSONString(trackName));
RestService.sendRequest(requestCallback,"organism/removeTrackFromOrganism", data);
}

public static void switchOrganismById(String newOrganismId) {
final LoadingDialog loadingDialog = new LoadingDialog();

Expand Down

0 comments on commit b007a85

Please sign in to comment.