Skip to content

Commit

Permalink
Scaffold out Campaign pages
Browse files Browse the repository at this point in the history
Refs #69
  • Loading branch information
dhleong committed Nov 12, 2018
1 parent 1ebe135 commit 03789a6
Show file tree
Hide file tree
Showing 9 changed files with 135 additions and 27 deletions.
4 changes: 4 additions & 0 deletions less/site.less
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,10 @@ a {
}
}

.group {
margin: 8px 0;
}

.sections {
.flex(wrap);
.justify-content(center);
Expand Down
17 changes: 13 additions & 4 deletions src/cljs/wish/sheets.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
wish.sheets
(:require [wish.sheets.dnd5e :as dnd5e]
[wish.sheets.dnd5e.builder :as dnd5e-builder]
[wish.sheets.dnd5e.campaign :as dnd5e-campaign]
[wish.sheets.dnd5e.keymaps :as dnd5e-key]
[wish.sheets.dnd5e.util :as dnd5e-util]
[wish.sources.compiler :refer [compiler-version]]
Expand All @@ -20,6 +21,7 @@
{:dnd5e {:name "D&D 5E"
:fn #'dnd5e/sheet
:builder #'dnd5e-builder/view
:campaign #'dnd5e-campaign/view
:v 1
:default-sources [:wish/wdnd5e-srd]

Expand Down Expand Up @@ -169,12 +171,19 @@
[[sheet-id section]]
(ensuring-loaded
sheet-id
(fn [sheet-info]
[(:builder sheet-info) section])))
(fn [{view :builder}]
[view section])))

(defn campaign
[[campaign-id section]]
(ensuring-loaded
campaign-id
(fn [{view :campaign}]
[view section])))

(defn viewer
[sheet-id]
(ensuring-loaded
sheet-id
(fn [sheet-info]
[(:fn sheet-info)])))
(fn [{view :fn}]
[view])))
8 changes: 8 additions & 0 deletions src/cljs/wish/sheets/dnd5e/campaign.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
(ns ^{:author "Daniel Leong"
:doc "Campaign-viewer for D&D 5e"}
wish.sheets.dnd5e.campaign)

(defn view
[section]
[:div
"TODO Campaign"])
6 changes: 6 additions & 0 deletions src/cljs/wish/subs.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,12 @@
(:shared? filters)
(remove :mine? sheets))))

(reg-sub
:known-campaigns
(fn [db]
; TODO
nil))

; if a specific sheet-id is not provided, loads
; for the active sheet id
(reg-sub
Expand Down
32 changes: 23 additions & 9 deletions src/cljs/wish/util/nav.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -75,16 +75,30 @@
(js/window.location.replace
(prefix new-location)))


(defn- base-sheet-url
"Generate the url to a sheet, optionally with
extra path sections after it"
[kind id & extra-sections]
(apply str "/" kind
"/" (namespace id)
"/" (name id)
(when extra-sections
(interleave (repeat "/")
(map
#(if (keyword? %)
(name %)
(str %))
extra-sections)))))

(defn campaign-url
"Generate the url to a campaign, optionally with
extra path sections after it"
[id & extra-sections]
(apply base-sheet-url "campaigns" id extra-sections))

(defn sheet-url
"Generate the url to a sheet, optionally with
extra path sections after it"
[id & extra-sections]
(apply str "/sheets/" (namespace id)
"/" (name id)
(when extra-sections
(interleave (repeat "/")
(map
#(if (keyword? %)
(name %)
(str %))
extra-sections)))))
(apply base-sheet-url "sheets" id extra-sections))
7 changes: 6 additions & 1 deletion src/cljs/wish/views.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
[wish.sheets :as sheets]
[wish.subs :as subs]
[wish.util :refer [<sub click>evt]]
[wish.views.campaign-browser :as campaign-browser]
[wish.views.home :refer [home]]
[wish.views.new-campaign :as new-campaign]
[wish.views.new-sheet :refer [new-sheet-page]]
[wish.views.router :refer [router]]
[wish.views.sheet-browser :as sheet-browser]
Expand All @@ -17,7 +19,10 @@
))

(def pages
{:home #'home
{:campaign #'sheets/campaign
:campaign-browser #'campaign-browser/page
:home #'home
:new-campaign #'new-campaign/page
:new-sheet #'new-sheet-page
:sheet #'sheets/viewer
:sheet-browser #'sheet-browser/page
Expand Down
29 changes: 29 additions & 0 deletions src/cljs/wish/views/campaign_browser.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
(ns ^{:author "Daniel Leong"
:doc "campaign-browser"}
wish.views.campaign-browser
(:require [reagent.core :as r]
[reagent-forms.core :refer [bind-fields]]
[wish.util :refer [>evt <sub]]
[wish.util.nav :refer [campaign-url]]
[wish.views.widgets :refer [icon link]]))

(defn page []
[:div
[:h3
[link {:href "/"}
(icon :home)]
"Campaigns"]

[:div.new-sheet-link
[link {:href "/campaigns/new"}
"Create a new Campaign"]]

(when (<sub [:providers-listing?])
[:div.loading "Loading..."])

[:ul
(for [s (<sub [:known-campaigns])]
^{:key (:id s)}
[:li.sheet-link
[link {:href (campaign-url (:id s))}
(:name s)]])] ])
38 changes: 25 additions & 13 deletions src/cljs/wish/views/home.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,32 @@
[:h3 "Welcome to Wish!"]
[:p "It's not very pretty around here just yet, but feel free to look around."]

[:div
[link {:href "/sheets/new"}
"New sheet"]]
[:div.group
[:div
[link {:href "/sheets/new"}
"New sheet"]]

(when can-use-sheets?
[:div
[link {:href "/sheets"}
"Open a sheet"]] )
(when can-use-sheets?
[:div
[link {:href "/sheets"}
"Open a sheet"]] )]

[:div
[link {:href "/providers/gdrive/config"}
"Configure Google Drive"]]
[:div.group
[:div
[link {:href "/campaigns/new"}
"New Campaign"]]

(when-not can-use-sheets?
[:div.explanation
"Wish does not store your sheets directly, but instead lets you connect Providers, like Google Drive, to ensure you have full control of your data. In order to create or view a sheet, you must configure a Provider."])
(when can-use-sheets?
[:div
[link {:href "/campaigns"}
"Open a Campaign"]])]

[:div.group
[:div
[link {:href "/providers/gdrive/config"}
"Configure Google Drive"]]

(when-not can-use-sheets?
[:div.explanation
"Wish does not store your sheets directly, but instead lets you connect Providers, like Google Drive, to ensure you have full control of your data. In order to create or view a sheet, you must configure a Provider."])]
]))
21 changes: 21 additions & 0 deletions src/cljs/wish/views/new_campaign.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
(ns ^{:author "Daniel Leong"
:doc "new-campaign"}
wish.views.new-campaign
(:require-macros [cljs.core.async.macros :refer [go]]
[wish.util :refer [fn-click]]
[wish.util.log :as log])
(:require [clojure.core.async :refer [chan <!]]
[clojure.string :as str]
[reagent.core :as r]
[wish.providers :as providers]
[wish.sheets :as sheets]
[wish.util :refer [<sub]]
[wish.util.nav :as nav :refer [sheet-url]]
[wish.views.widgets :refer [icon link]]))

(defn page []
[:div
[:h3
[link {:href "/"}
(icon :home)]
"New Campaign"]])

0 comments on commit 03789a6

Please sign in to comment.