diff --git a/scancodeio/static/main.css b/scancodeio/static/main.css index bb1622b852..ceac90a17c 100644 --- a/scancodeio/static/main.css +++ b/scancodeio/static/main.css @@ -530,8 +530,6 @@ body.full-screen #resource-viewer .message-header { flex: 1; min-width: 0; transition: opacity 0.2s ease; - display: flex; - flex-direction: column; height: 100%; } #resource-tree-container .right-pane .table-scroll-area { diff --git a/scanpipe/templates/scanpipe/base_htmx.html b/scanpipe/templates/scanpipe/base_htmx.html new file mode 100644 index 0000000000..093920ac63 --- /dev/null +++ b/scanpipe/templates/scanpipe/base_htmx.html @@ -0,0 +1,5 @@ +{% block partial-content %} +{% endblock %} + +{% block scripts %} +{% endblock %} \ No newline at end of file diff --git a/scanpipe/templates/scanpipe/dependency_detail.html b/scanpipe/templates/scanpipe/dependency_detail.html index 6ccaed1f8b..e89aec3ab1 100644 --- a/scanpipe/templates/scanpipe/dependency_detail.html +++ b/scanpipe/templates/scanpipe/dependency_detail.html @@ -8,6 +8,6 @@ {% include 'scanpipe/includes/navbar_header.html' %}
| 
                   
@@ -73,15 +75,21 @@
                   {% if resource.is_dir %}
                     
+                      hx-push-url="{% url 'project_resource_tree' project.slug %}?path={{ resource.path }}">
                       {{ resource.name }}
                     
                   {% else %}
-                    {{ resource.name }}
+                    
+                      {{ resource.name }}
+                    
                   {% endif %}
                   {% if resource.tag %}
                     {{ resource.tag }}
@@ -110,18 +118,18 @@
         {% if page_obj.has_previous %}
           
+            hx-push-url="{% url 'project_resource_tree' project.slug %}?path={{ path }}&page={{ page_obj.previous_page_number }}">
             Previous
           
         {% endif %}
         {% if page_obj.has_next %}
           
+            hx-push-url="{% url 'project_resource_tree' project.slug %}?path={{ path }}&page={{ page_obj.next_page_number }}">
             Next page
           
         {% endif %}
diff --git a/scanpipe/tests/test_views.py b/scanpipe/tests/test_views.py
index 19829e4ad1..ad2e1c56b4 100644
--- a/scanpipe/tests/test_views.py
+++ b/scanpipe/tests/test_views.py
@@ -1636,7 +1636,7 @@ def test_scanpipe_views_resource_tree_root_path(self):
         make_resource_file(self.project1, path="child1.txt")
         make_resource_file(self.project1, path="dir1")
 
-        url = reverse("codebase_resource_tree", kwargs={"slug": self.project1.slug})
+        url = reverse("project_resource_tree", kwargs={"slug": self.project1.slug})
         response = self.client.get(url)
         children = response.context["children"]
         child1 = children[0]
@@ -1650,7 +1650,7 @@ def test_scanpipe_views_resource_tree_children_path(self):
         make_resource_file(self.project1, path="parent/dir1")
         make_resource_file(self.project1, path="parent/dir1/child2.txt")
 
-        url = reverse("codebase_resource_tree", kwargs={"slug": self.project1.slug})
+        url = reverse("project_resource_tree", kwargs={"slug": self.project1.slug})
         response = self.client.get(url + "?path=parent&tree_panel=true")
         children = response.context["children"]
 
@@ -1663,12 +1663,14 @@ def test_scanpipe_views_resource_tree_children_path(self):
         self.assertFalse(child1.has_children)
         self.assertTrue(dir1.has_children)
 
-    def test_scanpipe_views_codebase_resource_table_view_with_path_directory(self):
+    def test_scanpipe_views_project_resource_tree_table_view_with_path_directory(self):
         make_resource_directory(self.project1, path="parent")
         make_resource_file(self.project1, path="parent/child1.txt")
         make_resource_file(self.project1, path="parent/child2.py")
 
-        url = reverse("codebase_resource_table", kwargs={"slug": self.project1.slug})
+        url = reverse(
+            "project_resource_tree_table", kwargs={"slug": self.project1.slug}
+        )
         response = self.client.get(url + "?path=parent")
 
         self.assertEqual(200, response.status_code)
@@ -1679,10 +1681,12 @@ def test_scanpipe_views_codebase_resource_table_view_with_path_directory(self):
         resource_paths = [r.path for r in resources]
         self.assertEqual(["parent/child1.txt", "parent/child2.py"], resource_paths)
 
-    def test_scanpipe_views_codebase_resource_table_view_with_path_file(self):
+    def test_scanpipe_views_project_resource_tree_table_view_with_path_file(self):
         make_resource_file(self.project1, path="specific_file.txt")
 
-        url = reverse("codebase_resource_table", kwargs={"slug": self.project1.slug})
+        url = reverse(
+            "project_resource_tree_table", kwargs={"slug": self.project1.slug}
+        )
         response = self.client.get(url + "?path=specific_file.txt")
 
         self.assertEqual(200, response.status_code)
@@ -1691,10 +1695,12 @@ def test_scanpipe_views_codebase_resource_table_view_with_path_file(self):
         self.assertEqual(1, len(resources))
         self.assertEqual("specific_file.txt", resources[0].path)
 
-    def test_scanpipe_views_codebase_resource_table_view_empty_directory(self):
+    def test_scanpipe_views_project_resource_tree_table_view_empty_directory(self):
         make_resource_directory(self.project1, path="empty_dir")
 
-        url = reverse("codebase_resource_table", kwargs={"slug": self.project1.slug})
+        url = reverse(
+            "project_resource_tree_table", kwargs={"slug": self.project1.slug}
+        )
         response = self.client.get(url + "?path=empty_dir")
 
         self.assertEqual(200, response.status_code)
@@ -1702,12 +1708,14 @@ def test_scanpipe_views_codebase_resource_table_view_empty_directory(self):
         resources = list(response.context["resources"])
         self.assertEqual(0, len(resources))
 
-    def test_scanpipe_views_codebase_resource_table_view_with_packages(self):
+    def test_scanpipe_views_project_resource_tree_table_view_with_packages(self):
         resource1 = make_resource_file(self.project1, path="file_with_package.txt")
         package1 = DiscoveredPackage.create_from_data(self.project1, package_data1)
         package1.add_resources([resource1])
 
-        url = reverse("codebase_resource_table", kwargs={"slug": self.project1.slug})
+        url = reverse(
+            "project_resource_tree_table", kwargs={"slug": self.project1.slug}
+        )
         response = self.client.get(url + "?path=file_with_package.txt")
 
         self.assertEqual(200, response.status_code)
@@ -1717,14 +1725,16 @@ def test_scanpipe_views_codebase_resource_table_view_with_packages(self):
         resource = resources[0]
         self.assertTrue(resource.discovered_packages.exists())
 
-    @mock.patch("scanpipe.views.CodebaseResourceTableView.paginate_by", 2)
-    def test_scanpipe_views_codebase_resource_table_view_pagination(self):
+    @mock.patch("scanpipe.views.ProjectResourceTreeTableView.paginate_by", 2)
+    def test_scanpipe_views_project_resource_tree_table_view_pagination(self):
         make_resource_directory(self.project1, path="parent")
         make_resource_file(self.project1, path="parent/file1.txt", parent_path="parent")
         make_resource_file(self.project1, path="parent/file2.txt", parent_path="parent")
         make_resource_file(self.project1, path="parent/file3.txt", parent_path="parent")
 
-        url = reverse("codebase_resource_table", kwargs={"slug": self.project1.slug})
+        url = reverse(
+            "project_resource_tree_table", kwargs={"slug": self.project1.slug}
+        )
 
         response = self.client.get(url + "?path=parent")
         self.assertEqual(200, response.status_code)
@@ -1739,7 +1749,7 @@ def test_scanpipe_views_codebase_resource_table_view_pagination(self):
         self.assertFalse(response.context["page_obj"].has_next())
         self.assertTrue(response.context["page_obj"].has_previous())
 
-    def test_scanpipe_views_codebase_resource_table_view_field_selection(self):
+    def test_scanpipe_views_project_resource_tree_table_view_field_selection(self):
         resource = make_resource_file(
             self.project1,
             path="test_file.py",
@@ -1748,7 +1758,9 @@ def test_scanpipe_views_codebase_resource_table_view_field_selection(self):
             detected_license_expression="MIT",
         )
 
-        url = reverse("codebase_resource_table", kwargs={"slug": self.project1.slug})
+        url = reverse(
+            "project_resource_tree_table", kwargs={"slug": self.project1.slug}
+        )
         response = self.client.get(url + "?path=test_file.py")
 
         self.assertEqual(200, response.status_code)
diff --git a/scanpipe/urls.py b/scanpipe/urls.py
index 67a457f94d..0979bb4a5a 100644
--- a/scanpipe/urls.py
+++ b/scanpipe/urls.py
@@ -132,14 +132,14 @@
         name="project_codebase",
     ),
     path(
-        "project/ |