Skip to content

Commit 21cd384

Browse files
committed
Update www - mustache broken/disabled for now
1 parent e33b0f8 commit 21cd384

File tree

14 files changed

+108
-91
lines changed

14 files changed

+108
-91
lines changed

www/Cargo.toml

+7-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ authors = ["Anthony Nowell <[email protected]>"]
55

66
[dependencies]
77
rustc-serialize = "0.3.18"
8-
maud = "0.16.0"
9-
maud_macros = "0.16.0"
8+
maud = { version = "0.16.2", optional = true }
9+
maud_macros = { version = "0.16.2", optional = true }
1010

1111
[dependencies.bart]
1212
git = "https://github.com/maghoff/bart"
@@ -17,3 +17,8 @@ git = "https://github.com/maghoff/bart"
1717
[dependencies.quasar]
1818
version = "*"
1919
path = ".."
20+
21+
22+
[features]
23+
default = []
24+
with-maud = ["maud", "maud_macros"]

www/src/code/examples.rs

+4
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ impl Renderable for Example {
5454
}
5555
}
5656

57+
impl Component for Example {
58+
fn onload(view: &View<Self>) {}
59+
}
60+
5761

5862
#[derive(BartDisplay)]
5963
#[template = "src/code/code.html"]

www/src/code/mod.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,17 @@ use quasar::*;
22
mod examples;
33
use self::examples::{Example, Template};
44

5-
pub fn init(app: &mut QuasarApp) {
5+
pub fn init(app: &mut QuasarApp) {
66
app.data_set("template", Template::new("bart"));
77

88
app.bind("#counter-code", Example::Counter);
99
app.bind("#todo-code", Example::Todo);
1010

11-
for template_selector in app.query_all("input[name=\"template\"]") {
11+
for template_selector in app.query_all(r#"input[name="template"]"#) {
1212
template_selector.on(EventType::Change, |mut evt| {
1313
let template = Template::new(&evt.target.get_attr("data-template"));
1414
println!("template selector change: {}", &template);
1515
evt.app.data_mut("template").map(|mut t| *t = template);
1616
});
1717
}
1818
}
19-

www/src/counter/bart/mod.rs

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
use quasar::*;
22

3-
#[derive(BartDisplay)]
3+
#[derive(Default, BartDisplay)]
44
#[template = "src/counter/bart/counter.html"]
5-
struct CounterData { count: u32 }
5+
pub struct CounterData { count: u32 }
66

7-
pub fn init(app: &QuasarApp) {
8-
let component = CounterData { count: 0 };
9-
10-
app.bind("#counter-bart", component)
11-
.query("button").unwrap()
12-
.on(EventType::Click, |mut evt| {
7+
impl Component for CounterData {
8+
fn onload(view: &View<Self>) {
9+
view.on_each(EventType::Click, "button", |mut evt| {
1310
evt.binding.data_mut().count += 1;
1411
});
12+
}
1513
}

www/src/counter/maud/counter.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use quasar::*;
22

3+
#[derive(Default)]
34
pub struct CounterData {
45
pub count: u32,
56
}

www/src/counter/maud/mod.rs

+5-8
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
use quasar::*;
2-
use self::counter::CounterData;
2+
pub use self::counter::CounterData;
33
mod counter;
44

5-
pub fn init(app: &QuasarApp) {
6-
let component = CounterData {
7-
count: 0
8-
};
9-
10-
app.bind("#counter", component)
11-
.on_each(EventType::Click, "button", |mut evt| {
5+
impl Component for CounterData {
6+
fn onload(view: &View<Self>) {
7+
view.on_each(EventType::Click, "button", |mut evt| {
128
evt.binding.data_mut().count += 1;
139
});
10+
}
1411
}

www/src/counter/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
pub mod bart;
2-
pub mod maud;
3-
pub mod mustache;
2+
#[cfg(feature="with-maud")] pub mod maud;
3+
// pub mod mustache;

www/src/counter/mustache/mod.rs

+11-8
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
11
use quasar::*;
22

3-
#[derive(Debug, RustcEncodable)]
3+
#[derive(Debug, Default, RustcEncodable)]
44
struct CounterData {
55
count: u32,
66
}
77

8-
pub fn init(app: &QuasarApp) {
9-
let component = Component {
8+
type CounterComponent = RuntimeComponent<CounterData, ::mustache::Template>;
9+
pub fn init() -> CounterComponent {
10+
let component = RuntimeComponent {
1011
data: CounterData { count: 0 },
1112
props: vec![],
1213
template: compile_str(r##"
1314
<p>Count: {{count}}</p>
1415
<button>+1</button>
1516
"##).expect("failed to compile counter template")
1617
};
18+
}
1719

18-
let view = app.bind("#counter", component);
19-
20-
view.on_each(EventType::Click, "button", |mut evt| {
21-
evt.binding.data_mut().count += 1;
22-
});
20+
impl Component for CounterComponent {
21+
fn onload(view: &View<Self>) {
22+
view.on_each(EventType::Click, "button", |mut evt| {
23+
evt.binding.data_mut().count += 1;
24+
});
25+
}
2326
}

www/src/main.rs

+14-6
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,29 @@
11
#![feature(plugin)]
2-
#![plugin(maud_macros)]
2+
#![cfg_attr(feature="with-maud", plugin(maud_macros))]
33

4-
extern crate quasar;
4+
#[cfg(feature="with-maud")]
55
extern crate maud;
6+
7+
#[macro_use]
8+
extern crate bart_derive;
9+
10+
extern crate quasar;
611
extern crate rustc_serialize;
7-
#[macro_use] extern crate bart_derive;
812

913
mod code;
1014
mod counter;
1115
mod todo;
1216

17+
use quasar::Queryable;
18+
1319
fn main() {
1420
let mut app = quasar::init();
1521
println!("Starting...");
1622

17-
code::init(&mut app);
18-
counter::bart::init(&app);
19-
todo::bart::init(&app);
23+
// unused bindings just to avoid dropping until after app.spin()
24+
let _code_views = code::init(&mut app);
25+
app.bind("#counter-bart", counter::bart::CounterData::default());
26+
app.bind("#todo-bart", todo::bart::TodoList::new());
27+
2028
app.spin();
2129
}

www/src/todo/bart/mod.rs

+19-26
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,24 @@
11
use quasar::*;
2-
use self::todo::{TodoItem, TodoList};
2+
pub use self::todo::{TodoItem, TodoList};
33
mod todo;
44

5-
pub fn init(app: &QuasarApp) {
6-
let todo_list = TodoList {
7-
items: vec![
8-
TodoItem::new("Blog about Quasar"),
9-
]
10-
};
11-
12-
let view = app.bind("#todo-bart", todo_list);
13-
14-
view.query("button").expect("missing todo list button")
15-
.on(EventType::Click, |mut evt| {
16-
match evt.app.query("#message") {
17-
Some(node) => {
18-
let item = TodoItem::new(&node.get("value"));
19-
evt.binding.data_mut().items.push(item);
5+
impl Component for TodoList {
6+
fn onload(view: &View<Self>) {
7+
view.query("button").expect("missing todo list button")
8+
.on(EventType::Click, |mut evt| {
9+
match evt.app.query("#message") {
10+
Some(node) => {
11+
let item = TodoItem::new(&node.get("value"));
12+
evt.binding.data_mut().items.push(item);
13+
}
14+
None => println!("Query #message returned nothing.")
2015
}
21-
None => println!("Query #message returned nothing.")
22-
}
23-
});
16+
});
2417

25-
view.on_each(EventType::Change, ".todo-item input", |mut evt| {
26-
let state = evt.target.checked();
27-
let mut item_list = evt.binding.data_mut();
28-
item_list.items[evt.index].complete = state;
29-
});
30-
31-
}
18+
view.on_each(EventType::Change, ".todo-item input", |mut evt| {
19+
let state = evt.target.checked();
20+
let mut item_list = evt.binding.data_mut();
21+
item_list.items[evt.index].complete = state;
22+
});
23+
}
24+
}

www/src/todo/bart/todo.rs

+9-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ pub struct TodoList {
44
pub items: Vec<TodoItem>,
55
}
66

7+
impl TodoList {
8+
pub fn new() -> TodoList {
9+
TodoList {
10+
items: vec![TodoItem::new("Blog about Quasar")]
11+
}
12+
}
13+
}
14+
715
pub struct TodoItem {
816
pub label: String,
917
pub complete: bool,
@@ -13,4 +21,4 @@ impl TodoItem {
1321
pub fn new(label: &str) -> TodoItem {
1422
TodoItem { label: label.to_string(), complete: false }
1523
}
16-
}
24+
}

www/src/todo/maud/mod.rs

+18-25
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,24 @@
11
use quasar::*;
2-
use self::todo::{TodoItem, TodoList};
2+
pub use self::todo::{TodoItem, TodoList};
33
mod todo;
44

5-
pub fn init(app: &QuasarApp) {
6-
let todo_list = TodoList {
7-
items: vec![
8-
TodoItem::new("Blog about Quasar"),
9-
]
10-
};
11-
12-
let view = app.bind("#todo-bart", todo_list);
13-
14-
view.query("button").expect("missing todo list button")
15-
.on(EventType::Click, |mut evt| {
16-
match evt.app.query("#message") {
17-
Some(node) => {
18-
let item = TodoItem::new(&node.get("value"));
19-
evt.binding.data_mut().items.push(item);
5+
impl Component for TodoList {
6+
fn onload(view: &View<Self>) {
7+
view.query("button").expect("missing todo list button")
8+
.on(EventType::Click, |mut evt| {
9+
match evt.app.query("#message") {
10+
Some(node) => {
11+
let item = TodoItem::new(&node.get("value"));
12+
evt.binding.data_mut().items.push(item);
13+
}
14+
None => println!("Query #message returned nothing.")
2015
}
21-
None => println!("Query #message returned nothing.")
22-
}
23-
});
24-
25-
view.on_each(EventType::Change, ".todo-item input", |mut evt| {
26-
let state = evt.target.checked();
27-
let mut item_list = evt.binding.data_mut();
28-
item_list.items[evt.index].complete = state;
29-
});
16+
});
3017

18+
view.on_each(EventType::Change, ".todo-item input", |mut evt| {
19+
let state = evt.target.checked();
20+
let mut item_list = evt.binding.data_mut();
21+
item_list.items[evt.index].complete = state;
22+
});
23+
}
3124
}

www/src/todo/maud/todo.rs

+8
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ pub struct TodoList {
99
pub items: Vec<TodoItem>,
1010
}
1111

12+
impl TodoList{
13+
fn new() -> TodoList {
14+
TodoList {
15+
items: vec![TodoItem::new("Blog about Quasar")]
16+
}
17+
}
18+
}
19+
1220
impl TodoItem {
1321
pub fn new(label: &str) -> TodoItem {
1422
TodoItem { label: label.to_string(), complete: false }

www/src/todo/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
pub mod bart;
2-
pub mod maud;
3-
pub mod mustache;
2+
#[cfg(feature="with-maud")] pub mod maud;
3+
// pub mod mustache;

0 commit comments

Comments
 (0)