diff --git a/examples/demo/app.css b/examples/demo/app.css index 6f710546..7fa565c3 100644 --- a/examples/demo/app.css +++ b/examples/demo/app.css @@ -18,6 +18,14 @@ width: 100%; } +.left-thing .counter span { + color: white; +} + +.left-thing .counter button { + width: 40px; +} + .right-thing { padding: 20px; overflow: auto; diff --git a/examples/demo/app.js b/examples/demo/app.js index 1d704fd4..ebe8fc36 100644 --- a/examples/demo/app.js +++ b/examples/demo/app.js @@ -4,15 +4,22 @@ import { messages } from "./data.js"; const template = `
+
+ + Value: + +
- + + +
- +
@@ -35,8 +42,14 @@ export class App extends odoo.core.Component { } removeMessage(data) { - const index = this.state.messages.findIndex(m => m.id === data.id); - this.state.messages.splice(index, 1); - this.setState({ messages: this.state.messages }); + const index = messages.findIndex(m => m.id === data.id); + const n = this.state.messages.length; + messages.splice(index, 1); + this.setState({ messages: messages.slice(0, n - 1) }); + } + + increment(delta) { + const n = this.state.messages.length + delta; + this.setMessageCount(n); } } diff --git a/examples/demo/counter.js b/examples/demo/counter.js index 1fcffa5f..b89afea4 100644 --- a/examples/demo/counter.js +++ b/examples/demo/counter.js @@ -1,14 +1,12 @@ -const template = ` +export class Counter extends odoo.core.Component { + inlineTemplate = `
Value:
`; - -export class Counter extends odoo.core.Component { constructor(parent, props) { super(parent, props); - this.inlineTemplate = template; this.state = { counter: props.initialState || 0 }; diff --git a/examples/demo/data.js b/examples/demo/data.js index e9ddb5aa..220d42e0 100644 --- a/examples/demo/data.js +++ b/examples/demo/data.js @@ -12,7 +12,7 @@ function chooseRandomly(array) { return array[index]; } -for (let i = 1; i < 6000; i++) { +for (let i = 1; i < 16000; i++) { messages.push({ id: i, author: chooseRandomly(authors), diff --git a/examples/demo/main.js b/examples/demo/main.js index d4467137..00fee608 100644 --- a/examples/demo/main.js +++ b/examples/demo/main.js @@ -1,10 +1,13 @@ import { App } from "./app.js"; -import { Counter } from "./counter.js"; -document.addEventListener("DOMContentLoaded", function() { +function createApp(el) { const env = { qweb: new odoo.core.QWeb() }; const app = new App(env, { initialState: 13 }); - app.mount(document.body); + app.mount(el); +} + +document.addEventListener("DOMContentLoaded", function() { + createApp(document.body); }); diff --git a/examples/demo/message.js b/examples/demo/message.js index 9238dfd7..3efec87b 100644 --- a/examples/demo/message.js +++ b/examples/demo/message.js @@ -1,14 +1,17 @@ -const template = ` +import { Counter } from "./counter.js"; + +export class Message extends odoo.core.Component { + inlineTemplate = `
+
`; -export class Message extends odoo.core.Component { constructor(parent, props) { super(parent, props); - this.inlineTemplate = template; + this.widgets = { Counter }; } removeMessage() {