admin -> src

This commit is contained in:
2020-06-18 15:20:50 +02:00
parent 63fcba9dd9
commit f91567186e
23 changed files with 35 additions and 17 deletions

8
js/admin.min.js vendored
View File

File diff suppressed because one or more lines are too long

View File

View File

View File

View File

File diff suppressed because one or more lines are too long

View File

View File

View File

View File

View File

@@ -10,7 +10,7 @@ export default function Icon(props) {
classes.push(type); classes.push(type);
classes.push("fa-" + icon); classes.push("fa-" + icon);
if (icon === "spinner") { if (icon === "spinner" || icon === "circle-notch") {
classes.push("fa-spin"); classes.push("fa-spin");
} }

View File

View File

View File

View File

View File

@@ -21,7 +21,8 @@ export default class CreateUser extends React.Component {
username: "", username: "",
email: "", email: "",
password: "", password: "",
confirmPassword: "" confirmPassword: "",
isSubmitting: false
} }
} }
@@ -107,7 +108,10 @@ export default class CreateUser extends React.Component {
<Icon icon={"arrow-left"}/> <Icon icon={"arrow-left"}/>
&nbsp;Back &nbsp;Back
</Link> </Link>
<button type={"submit"} className={"btn btn-primary mt-2"}>Submit</button> { this.state.isSubmitting
? <button type={"submit"} className={"btn btn-primary mt-2"} disabled>Loading&nbsp;<Icon icon={"circle-notch"} /></button>
: <button type={"submit"} className={"btn btn-primary mt-2"}>Submit</button>
}
</form> </form>
</div> </div>
</div> </div>
@@ -119,6 +123,10 @@ export default class CreateUser extends React.Component {
submitForm(e) { submitForm(e) {
e.preventDefault(); e.preventDefault();
if (this.state.isSubmitting) {
return;
}
const requiredFields = (this.state.sendInvite ? const requiredFields = (this.state.sendInvite ?
["username", "email"] : ["username", "email"] :
["username", "password", "confirmPassword"]); ["username", "password", "confirmPassword"]);
@@ -137,6 +145,7 @@ export default class CreateUser extends React.Component {
return; return;
} }
this.setState({ ...this.state, isSubmitting: true });
const username = this.state.username; const username = this.state.username;
const email = this.state.email || ""; const email = this.state.email || "";
const password = this.state.password; const password = this.state.password;
@@ -147,21 +156,29 @@ export default class CreateUser extends React.Component {
let errors = this.state.errors.slice(); let errors = this.state.errors.slice();
if (!res.success) { if (!res.success) {
errors.push({ title: "Error inviting User", message: res.msg, type: "danger" }); errors.push({ title: "Error inviting User", message: res.msg, type: "danger" });
this.setState({ ...this.state, errors: errors }); this.setState({ ...this.state, errors: errors, isSubmitting: false });
} else { } else {
errors.push({ title: "Success", message: "The invitation was successfully sent.", type: "success" }); errors.push({ title: "Success", message: "The invitation was successfully sent.", type: "success" });
this.setState({ ...this.state, errors: errors, username: "", email: "" }); this.setState({ ...this.state, errors: errors, username: "", email: "", isSubmitting: false });
} }
}); });
} else { } else {
if (this.state.password !== this.state.confirmPassword) {
let errors = this.state.errors.slice();
errors.push({ title: "Error creating User", message: "The given passwords do not match", type: "danger" });
this.setState({ ...this.state, errors: errors, password: "", confirmPassword: "", isSubmitting: false });
return;
}
this.parent.api.createUser(username, email, password, confirmPassword).then((res) => { this.parent.api.createUser(username, email, password, confirmPassword).then((res) => {
let errors = this.state.errors.slice(); let errors = this.state.errors.slice();
if (!res.success) { if (!res.success) {
errors.push({ title: "Error creating User", message: res.msg, type: "danger" }); errors.push({ title: "Error creating User", message: res.msg, type: "danger" });
this.setState({ ...this.state, errors: errors, password: "", confirmPassword: "" }); this.setState({ ...this.state, errors: errors, password: "", confirmPassword: "", isSubmitting: false });
} else { } else {
errors.push({ title: "Success", message: "The user was successfully created.", type: "success" }); errors.push({ title: "Success", message: "The user was successfully created.", type: "success" });
this.setState({ ...this.state, errors: errors, username: "", email: "", password: "", confirmPassword: "" }); this.setState({ ...this.state, errors: errors, username: "", email: "", password: "", confirmPassword: "", isSubmitting: false });
} }
}); });
} }

View File

@@ -63,8 +63,9 @@ export default class Overview extends React.Component {
for (let date in this.state.visitors) { for (let date in this.state.visitors) {
let month = parseInt(date) % 100 - 1; let month = parseInt(date) % 100 - 1;
if (month >= 0 && month < 12) { if (month >= 0 && month < 12) {
data[month] = this.state.visitors[date]; let count = parseInt(this.state.visitors[date]);
visitorCount += this.state.visitors[date]; data[month] = count;
visitorCount += count;
} }
} }