crobi 9年前
コミット
8afdd9a9d9
4個のファイルの変更46行の追加4行の削除
  1. 6
    3
      client/src/routes.ts
  2. 36
    0
      client/src/views/deck.ts
  3. 3
    1
      client/src/views/ui.ts
  4. 1
    0
      client/tsconfig.json

+ 6
- 3
client/src/routes.ts ファイルの表示

@@ -5,13 +5,16 @@
5 5
 module rpgcards {
6 6
     
7 7
     export function setupRoutes(actions: Actions) {
8
-        page('/', () => {
8
+        page('/', (ctx) => {
9 9
             actions.setView(ViewState.MainMenu, []);
10 10
         });
11
-        page('/decks', () => {
11
+        page('/decks/:deckid', (ctx) => {
12
+            actions.setView(ViewState.DeckEdit, [ctx.params.deckid]);
13
+        });
14
+        page('/decks', (ctx) => {
12 15
             actions.setView(ViewState.DeckList, []);
13 16
         });
14
-        page('*', () => {
17
+        page('*', (ctx) => {
15 18
             actions.setView(ViewState.Unknown, []);
16 19
         });
17 20
         

+ 36
- 0
client/src/views/deck.ts ファイルの表示

@@ -0,0 +1,36 @@
1
+/// <reference path="../external/react/react.d.ts"/>
2
+/// <reference path="../stores/store.ts"/>
3
+/// <reference path="./header.ts"/>
4
+
5
+module rpgcards {
6
+
7
+	function deckInfo(deck: Deck): React.ReactElement<any> {
8
+		return React.DOM.div({}
9
+            , "Name: " + deck.name
10
+			, "Description: " + deck.description
11
+			, "Datasets: " + deck.datasetIds.join(", ")
12
+		);
13
+	}
14
+	
15
+	var loading = React.DOM.div({ className: "error" }
16
+            , "Loading..."
17
+		);
18
+	
19
+	var error = React.DOM.div({ className: "error" }
20
+            , "Could not load deck."
21
+		);
22
+	 
23
+    export function renderDeck(id: EntityId, store: Store): React.ReactElement<any> {
24
+		var deck = store.getDeck(id).caseOf({
25
+			just: (deck) => deckInfo(deck),
26
+			nothing: (e) => error,
27
+			pending: () => loading
28
+		});
29
+		
30
+        return React.DOM.div({}
31
+            , renderHeader(store)
32
+            , React.DOM.div({}
33
+                , deck
34
+            ));
35
+    }
36
+}

+ 3
- 1
client/src/views/ui.ts ファイルの表示

@@ -1,15 +1,17 @@
1 1
 /// <reference path="./view.ts"/>
2 2
 /// <reference path="./decks.ts"/>
3
+/// <reference path="./deck.ts"/>
3 4
 /// <reference path="./notfound.ts"/>
4 5
 /// <reference path="./main.ts"/>
5 6
 
6 7
 module rpgcards {
7 8
 	
8 9
 	export function renderUI(store: Store): React.ReactElement<any> {
10
+		var ids = store.getViewParams();
9 11
 		switch(store.getViewState()) {
10 12
 			case ViewState.MainMenu: return renderMain(store);
11 13
 			case ViewState.DeckList: return renderDecks(store);
12
-			case ViewState.DeckEdit: return renderNotFound(store);
14
+			case ViewState.DeckEdit: return renderDeck(ids[0], store);
13 15
 			case ViewState.DeckAddDataset: return renderNotFound(store);
14 16
 			case ViewState.TemplateList: return renderNotFound(store);
15 17
 			case ViewState.TemplateEdit: return renderNotFound(store);

+ 1
- 0
client/tsconfig.json ファイルの表示

@@ -38,6 +38,7 @@
38 38
         "./src/views/components/deck.ts",
39 39
         "./src/views/view.ts",
40 40
         "./src/views/decks.ts",
41
+        "./src/views/deck.ts",
41 42
         "./src/views/header.ts",
42 43
         "./src/views/notfound.ts",
43 44
         "./src/views/main.ts",

読み込み中…
キャンセル
保存