diff options
| author | Marius Peter <marius.peter@tutanota.com> | 2025-05-18 19:21:17 +0200 | 
|---|---|---|
| committer | Marius Peter <marius.peter@tutanota.com> | 2025-05-18 19:21:17 +0200 | 
| commit | f0c8906cd19479447ff5d0c1044ecbad6ab845d6 (patch) | |
| tree | b8f837b190099bf05cdc4c81f214b81c5b23c95c /lib | |
| parent | e457b7a8702ae3672cb65d8b3d394dd112594a89 (diff) | |
Good progress today 💯
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/handlers.ml | 2 | ||||
| -rw-r--r-- | lib/views.ml | 28 | 
2 files changed, 20 insertions, 10 deletions
| diff --git a/lib/handlers.ml b/lib/handlers.ml index 321c693..17b9eab 100644 --- a/lib/handlers.ml +++ b/lib/handlers.ml @@ -12,7 +12,7 @@ module Repo = struct    let repo_path req = Dream.param req "repo_name"    let summary req = -    let branches = Git_helpers.Branch.all_branches (repo_path req) in +    let* branches = Git_helpers.Branch.all_branches (repo_path req) in      let* commits = Git_helpers.Commit.recent_commits (repo_path req) 10 in      let authors = [ "John Pork"; "Sebastian Jellybean" ] in      Views.Repo.summary (repo_path req) branches commits authors diff --git a/lib/views.ml b/lib/views.ml index e023236..ccaf73b 100644 --- a/lib/views.ml +++ b/lib/views.ml @@ -3,21 +3,21 @@ type head_data = { page_title : string }  type body_data = {    title : string;    subtitle : string; +  topnav : Dream_html.node;    content : Dream_html.node list;  }  module Components = struct    open Dream_html -  let topnav current_path = +  let topnav repo_path =      let open HTML in +    let () = Dream.log "%s" ("current path is: " ^ repo_path) in      let li_of_a (path, text) = -      let is_active = path = current_path in +      let () = Dream.log "%s" ("and path is: " ^ path) in +      let is_active = String.ends_with ~suffix:path repo_path in        let attrs = if is_active then [ id "active" ] else [] in -      let url = -        if String.equal path "/" then Printf.sprintf "/%s/" current_path -        else Printf.sprintf "/%s/%s" current_path path -      in +      let url = Printf.sprintf "/%s/%s" repo_path path in        li attrs [ a [ href "%s" url ] [ txt text ] ]      in      nav @@ -26,7 +26,7 @@ module Components = struct          ul []          @@ List.map li_of_a               [ -               ("/", "summary"); +               ("", "summary");                 ("refs/", "refs");                 ("log/", "log");                 ("tree/", "tree"); @@ -40,6 +40,10 @@ module Page = struct    open HTML    let header title subtitle = +    let subtitle = +      if String.starts_with ~prefix:"Unnamed repository" subtitle then "" +      else subtitle +    in      null [ h1 [] [ txt "%s" title ]; h2 [] [ txt "%s" subtitle ] ]    let footer () = @@ -63,7 +67,7 @@ module Page = struct          body []            [              header body_data.title body_data.subtitle; -            Components.topnav body_data.title; +            body_data.topnav;              div [ id "main" ] body_data.content;              footer ();            ]; @@ -85,6 +89,7 @@ let root () =      {        title = "Ogit";        subtitle = "Repositories for " ^ Config.author; +      topnav = HTML.null [];        content = [ repositories_in Config.git_directory ];      }    in @@ -126,6 +131,7 @@ module Repo = struct        {          title = repo_path;          subtitle = Git_helpers.repo_description repo_path; +        topnav = Components.topnav repo_path;          content;        } @@ -136,6 +142,7 @@ module Repo = struct          {            title = repo_path;            subtitle = Git_helpers.repo_description repo_path; +          topnav = Components.topnav repo_path;            content = [ null [] ];          } @@ -146,6 +153,7 @@ module Repo = struct          {            title = repo_path;            subtitle = Git_helpers.repo_description repo_path; +          topnav = Components.topnav repo_path;            content = [ null [] ];          } @@ -156,6 +164,7 @@ module Repo = struct          {            title = repo_path;            subtitle = Git_helpers.repo_description repo_path; +          topnav = Components.topnav repo_path;            content = [ null [] ];          } @@ -165,7 +174,8 @@ module Repo = struct      let message = match commit.message with Some msg -> msg | None -> "" in      let content = HTML.[ h3 [] [ txt "%s" message ] ] in      let title = Printf.sprintf "%s : %s" repo_path (short_hash commit.hash) in -    Page.render { title; subtitle = ""; content } +    Page.render +      { title; subtitle = ""; topnav = Components.topnav repo_path; content }  end  let error_page message = | 
