Commit d9c98fa2 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Replaced action buttons with dots menu. Added modal for renaming files (WIP)

parent 93879b16
Loading
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.concurrent.CompletionException;
import java.util.concurrent.ForkJoinPool;
+16 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import net.ivoa.xml.uws.v1.JobSummary;
import net.ivoa.xml.vospace.v2.ContainerNode;
import net.ivoa.xml.vospace.v2.Node;
import net.ivoa.xml.vospace.v2.Property;
@@ -134,6 +135,21 @@ public class NodesController extends BaseController {
        return ResponseEntity.noContent().build();
    }

    @PostMapping(value = "/move")
    public void moveNode(@RequestBody Map<String, Object> params) {

        String target = getRequiredParam(params, "target");
        String direction = getRequiredParam(params, "direction");

        Transfer transfer = new Transfer();
        transfer.setTarget(target);
        transfer.setDirection(direction);
        
        JobSummary job = client.startTransferJob(transfer);
        
        // TODO: polling
    }

    protected String getPath(String prefix) {
        String requestURL = servletRequest.getRequestURL().toString();
        return NodeUtils.getPathFromRequestURLString(requestURL, prefix);
+25 −7
Original line number Diff line number Diff line
@@ -130,18 +130,36 @@ public class NodesHtmlGenerator {

    private void addActionsCell(NodeInfo nodeInfo, Element row) {
        Element cell = row.appendElement("td");

        Element dotsMenu = cell.appendElement("span");
        dotsMenu.attr("class", "dots-menu icon dots-menu-icon pointer");

        Element dropdown = dotsMenu.appendElement("span");
        dropdown.attr("class", "dots-menu-content dropdown-menu");

        String nodePathJs = makeJsArg(nodeInfo.getPath());

        if (nodeInfo.isWritable()) {
            Element shareIcon = cell.appendElement("span");
            shareIcon.attr("class", "icon share-icon pointer");
            shareIcon.attr("onclick", "shareNode(" + makeJsArg(nodeInfo.getPath())
            Element shareBtn = dropdown.appendElement("button");
            shareBtn.text("Share");
            shareBtn.attr("type", "button");
            shareBtn.attr("class", "dropdown-item");
            shareBtn.attr("onclick", "shareNode(" + nodePathJs
                    + "," + makeJsArg(nodeInfo.getGroupRead())
                    + "," + makeJsArg(nodeInfo.getGroupWrite()) + ")");
        }
        if (nodeInfo.isDeletable()) {
            cell.append("&nbsp;");
            Element deleteIcon = cell.appendElement("span");
            deleteIcon.attr("class", "icon trash-icon pointer");
            deleteIcon.attr("onclick", "deleteNode(" + makeJsArg(nodeInfo.getPath()) + ")");
            Element renameBtn = dropdown.appendElement("button");
            renameBtn.text("Rename");
            renameBtn.attr("type", "button");
            renameBtn.attr("class", "dropdown-item");
            renameBtn.attr("onclick", "renameNode(" + nodePathJs + ")");

            Element deleteBtn = dropdown.appendElement("button");
            deleteBtn.text("Delete");
            deleteBtn.attr("type", "button");
            deleteBtn.attr("class", "dropdown-item");
            deleteBtn.attr("onclick", "deleteNode(" + nodePathJs + ")");
        }
    }

+31 −0
Original line number Diff line number Diff line
@@ -47,6 +47,19 @@ export default {
        self.$store.dispatch('checkJobs');
      }
    }, 1000);

    // Add event listener for dots menus
    document.addEventListener('click', function(event) {
      if (event.target.classList.contains('dots-menu')) {
        event.target.classList.toggle('active')
      } else {
        if (event.target.closest('.dots-menu') === null) {
          for (let menu of document.querySelectorAll('.dots-menu')) {
            menu.classList.remove('active');
          }
        }
      }
    });
  }
}
</script>
@@ -111,4 +124,22 @@ export default {
.node-busy+.icon {
  margin-right: 3px;
}

.dots-menu {
  position: relative;
}

.dots-menu-content {
  display: none;
  position: absolute;
  /*background-color: #f9f9f9;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  padding: 12px 16px;
  z-index: 1;*/
}

.dots-menu.active .dots-menu-content {
  display: block;
}
</style>
+12 −0
Original line number Diff line number Diff line
@@ -180,5 +180,17 @@ export default {
      },
      data
    }, true, true);
  },
  moveNode(data) {
    let url = BASE_API_URL + 'move';
    return apiRequest({
      method: 'POST',
      url: url,
      withCredentials: true,
      headers: {
        'Cache-Control': 'no-cache'
      },
      data
    }, true, true);
  }
}
Loading