Skip to content

Commit 1a5ae7e

Browse files
authored
Merge pull request #29 from yahoo/sal/release130
Release 1.3.0
2 parents 19e1d35 + 11a186c commit 1a5ae7e

File tree

2 files changed

+73
-71
lines changed

2 files changed

+73
-71
lines changed

examples/browser/main.js

Lines changed: 72 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -35,94 +35,96 @@ function updateLoginStatus(status) {
3535
}
3636

3737
class LoginExtent extends bg.Extent {
38-
email = new bg.State(this,null);
39-
password = new bg.State(this,null);
40-
emailValid = new bg.State(this,false);
41-
passwordValid = new bg.State(this,false);
42-
loginEnabled = new bg.State(this,false);
43-
loggingIn = new bg.State(this, false);
44-
loginClick = new bg.Moment(this);
45-
loginComplete = new bg.Moment(this);
38+
email = this.state(null);
39+
password = this.state(null);
40+
emailValid = this.state(false);
41+
passwordValid = this.state(false);
42+
loginEnabled = this.state(false);
43+
loggingIn = this.state(false);
44+
loginClick = this.moment();
45+
loginComplete = this.moment(this);
4646

4747
constructor(graph) {
4848
super(graph);
4949

50-
this.makeBehavior([this.email, this.addedToGraph], [this.emailValid], (extent) => {
51-
52-
let email = extent.email.value;
53-
let emailValid = validateEmail(email);
54-
extent.emailValid.update(emailValid);
55-
extent.sideEffect((extent) => {
56-
inputFeedback("emailFeedback", extent.emailValid.value);
57-
}, undefined, null);
58-
59-
});
60-
61-
62-
this.makeBehavior([this.password, this.addedToGraph], [this.passwordValid], (extent) => {
63-
64-
let password = extent.password.value ?? "";
65-
let passwordValid = password.length > 0;
66-
extent.passwordValid.update(passwordValid);
67-
extent.sideEffect((extent) => {
68-
inputFeedback("passwordFeedback", extent.passwordValid.value);
69-
}, undefined, "passwordFeedback");
70-
71-
});
72-
50+
this.behavior()
51+
.supplies(this.emailValid)
52+
.demands(this.email, this.addedToGraph)
53+
.runs(extent => {
54+
let email = extent.email.value;
55+
let emailValid = validateEmail(email);
56+
extent.emailValid.update(emailValid);
57+
extent.sideEffect((extent) => {
58+
inputFeedback("emailFeedback", extent.emailValid.value);
59+
}, undefined, null);
60+
});
61+
62+
this.behavior()
63+
.supplies(this.passwordValid)
64+
.demands(this.password, this.addedToGraph)
65+
.runs(extent => {
66+
let password = extent.password.value ?? "";
67+
let passwordValid = password.length > 0;
68+
extent.passwordValid.update(passwordValid);
69+
extent.sideEffect((extent) => {
70+
inputFeedback("passwordFeedback", extent.passwordValid.value);
71+
}, undefined, "passwordFeedback");
72+
});
7373

74-
this.makeBehavior([this.emailValid, this.passwordValid, this.loggingIn, this.addedToGraph], [this.loginEnabled], (extent) => {
74+
this.behavior()
75+
.supplies(this.loginEnabled)
76+
.demands(this.emailValid, this.passwordValid, this.loggingIn, this.addedToGraph)
77+
.runs(extent => {
7578

76-
let enabled = extent.emailValid.value && extent.passwordValid.value && !extent.loggingIn.value;
77-
extent.loginEnabled.update(enabled)
78-
extent.sideEffect((extent) => {
79-
loginButtonEnable(extent.loginEnabled.value);
80-
}, undefined, "enable login button");
79+
let enabled = extent.emailValid.value && extent.passwordValid.value && !extent.loggingIn.value;
80+
extent.loginEnabled.update(enabled)
81+
extent.sideEffect((extent) => {
82+
loginButtonEnable(extent.loginEnabled.value);
83+
}, undefined, "enable login button");
8184

82-
});
85+
});
8386

87+
this.behavior()
88+
.supplies(this.loggingIn)
89+
.demands(this.loginClick, this.loginComplete, this.addedToGraph)
90+
.runs(extent => {
8491

85-
this.makeBehavior([this.loginClick, this.loginComplete, this.addedToGraph], [this.loggingIn], (extent) => {
92+
if (extent.loginClick.justUpdated && extent.loginEnabled.traceValue) {
93+
extent.loggingIn.update(true);
94+
} else if (extent.loginComplete.justUpdated && extent.loggingIn.value) {
95+
extent.loggingIn.update(false);
96+
}
8697

87-
if (extent.loginClick.justUpdated && extent.loginEnabled.traceValue) {
88-
extent.loggingIn.update(true);
89-
} else if (extent.loginComplete.justUpdated && extent.loggingIn.value) {
90-
extent.loggingIn.update(false);
91-
}
98+
if (extent.loggingIn.justUpdatedTo(true)) {
99+
extent.sideEffect((extent) => {
100+
loginToServer(extent.email.value, extent.password.value);
101+
}, undefined, "login api call");
102+
}
103+
});
92104

93-
if (extent.loggingIn.justUpdatedTo(true)) {
105+
this.behavior()
106+
.demands(this.loggingIn, this.loginComplete, this.addedToGraph)
107+
.runs(extent => {
94108
extent.sideEffect((extent) => {
95-
loginToServer(extent.email.value, extent.password.value);
96-
}, undefined, "login api call");
97-
}
98-
99-
});
100-
101-
102-
this.makeBehavior([this.loggingIn, this.loginComplete, this.addedToGraph], null, (extent) => {
103-
extent.sideEffect((extent) => {
104-
let status = " "
105-
if (extent.loggingIn.value) {
106-
status = "Logging in...";
107-
} else if (extent.loggingIn.justUpdatedTo(false)) {
108-
if (extent.loginComplete.justUpdated && extent.loginComplete.value) {
109-
status = "Login Success";
110-
} else if (extent.loginComplete.justUpdated && !extent.loginComplete.value) {
111-
status = "Login Failed";
109+
let status = " "
110+
if (extent.loggingIn.value) {
111+
status = "Logging in...";
112+
} else if (extent.loggingIn.justUpdatedTo(false)) {
113+
if (extent.loginComplete.justUpdated && extent.loginComplete.value) {
114+
status = "Login Success";
115+
} else if (extent.loginComplete.justUpdated && !extent.loginComplete.value) {
116+
status = "Login Failed";
117+
}
112118
}
113-
}
114-
updateLoginStatus(status);
115-
}, undefined, "login status");
116-
});
117-
119+
updateLoginStatus(status);
120+
}, undefined, "login status");
121+
});
118122
}
119123
}
120124

121125
let graph = new bg.Graph();
122126
let loginExtent = new LoginExtent(graph);
123-
graph.action("startup", () => {
124-
loginExtent.addToGraph()
125-
});
127+
loginExtent.addToGraphWithAction();
126128

127129
document.getElementById("email").addEventListener("input", (event) => {
128130
loginExtent.email.updateWithAction(event.target.value);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "behavior-graph",
3-
"version": "1.2.0",
3+
"version": "1.3.0",
44
"main": "lib/cjs/index.js",
55
"module": "lib/mjs/index.js",
66
"types": "lib/mjs/index.d.ts",

0 commit comments

Comments
 (0)