Merge branch 'master' into 'production'
API modifications See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!11
This commit is contained in:
@@ -16,7 +16,7 @@ class AdminSidebar extends React.Component<AdminSidebarProps, AdminSidebarState>
|
|||||||
<AdminSidebarLink to="/admin/events" path={path}>Events</AdminSidebarLink>
|
<AdminSidebarLink to="/admin/events" path={path}>Events</AdminSidebarLink>
|
||||||
<AdminSidebarLink to="/admin/feed" path={path}>Feed</AdminSidebarLink>
|
<AdminSidebarLink to="/admin/feed" path={path}>Feed</AdminSidebarLink>
|
||||||
<AdminSidebarLink to="/admin/signups" path={path}>Signup forms</AdminSidebarLink>
|
<AdminSidebarLink to="/admin/signups" path={path}>Signup forms</AdminSidebarLink>
|
||||||
<AdminSidebarLink to="https:https://static.sika.sik.party/admin" path={path}>Files</AdminSidebarLink>
|
<AdminSidebarLink to="https://static.sika.sik.party/admin" path={path}>Files</AdminSidebarLink>
|
||||||
<AdminSidebarLink id="admin-sidebar-logout" to="/admin/logout" path={path}>Logout</AdminSidebarLink>
|
<AdminSidebarLink id="admin-sidebar-logout" to="/admin/logout" path={path}>Logout</AdminSidebarLink>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -17,9 +17,7 @@ export interface Event {
|
|||||||
end_time: string;
|
end_time: string;
|
||||||
image: string;
|
image: string;
|
||||||
tags: Tag[];
|
tags: Tag[];
|
||||||
tag_id?: number[];
|
|
||||||
visible: boolean;
|
visible: boolean;
|
||||||
signup_id: number[];
|
|
||||||
signupForm: SignupForm[];
|
signupForm: SignupForm[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ export interface Post {
|
|||||||
content_en: string;
|
content_en: string;
|
||||||
publish_time: string;
|
publish_time: string;
|
||||||
autohide: string;
|
autohide: string;
|
||||||
tag_id: number[];
|
|
||||||
tags: number[];
|
tags: number[];
|
||||||
visible: boolean;
|
visible: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,8 +52,8 @@ class EventCreatePage extends React.Component<EventCreatePageProps, EventCreateP
|
|||||||
fetchInitialFormData = async (id) => {
|
fetchInitialFormData = async (id) => {
|
||||||
try {
|
try {
|
||||||
const data = await getEvent(id, true);
|
const data = await getEvent(id, true);
|
||||||
data.tags = data.tag_id as any;
|
data.tags = (data.tags as any).map(inst => inst.id);
|
||||||
data.signupForm = data.signup_id as any;
|
data.signupForm = (data.signupForm as any).map(inst => inst.id);
|
||||||
this.setState({
|
this.setState({
|
||||||
formData: data,
|
formData: data,
|
||||||
});
|
});
|
||||||
@@ -98,24 +98,33 @@ class EventCreatePage extends React.Component<EventCreatePageProps, EventCreateP
|
|||||||
const { history } = this.props;
|
const { history } = this.props;
|
||||||
try {
|
try {
|
||||||
const payload = data.formData;
|
const payload = data.formData;
|
||||||
if (typeof payload.image === "string" && payload.image.startsWith("http")) payload.image = undefined;
|
|
||||||
payload.signup_id = payload.signupForm;
|
payload.signup_id = payload.signupForm;
|
||||||
payload.tag_id = payload.tags;
|
payload.tag_id = payload.tags;
|
||||||
|
if (typeof payload.image === "string" && payload.image.startsWith("http")) payload.image = undefined;
|
||||||
|
|
||||||
if (payload.id === undefined) {
|
if (payload.id === undefined) {
|
||||||
const resp = await createEvent(payload);
|
const resp = await createEvent(payload);
|
||||||
resp.tags = resp.tag_id as any;
|
// TODO: Backend return old data because of Prefetch (used for filtering invisble signupForms from GET)
|
||||||
resp.signupForm = resp.signup_id as any;
|
// Copy from old state instead...
|
||||||
|
// resp.tags = (resp.tags as any).map(inst => inst.id);
|
||||||
|
// resp.signupForm = (resp.signupForm as any).map(inst => inst.id);
|
||||||
|
resp.tags = data.formData.tags;
|
||||||
|
resp.signupForm = data.formData.signupForm;
|
||||||
this.setState({
|
this.setState({
|
||||||
formData: resp,
|
formData: resp,
|
||||||
statusMessage: "Event created successfully",
|
statusMessage: "Event created successfully",
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
const resp = await updateEvent(payload);
|
const resp = await updateEvent(payload);
|
||||||
resp.tags = resp.tag_id as any;
|
// TODO: Backend return old data because of Prefetch (used for filtering invisble signupForms from GET)
|
||||||
resp.signupForm = resp.signup_id as any;
|
// Copy from old state instead...
|
||||||
|
// resp.tags = (resp.tags as any).map(inst => inst.id);
|
||||||
|
// resp.signupForm = (resp.signupForm as any).map(inst => inst.id);
|
||||||
|
resp.tags = data.formData.tags;
|
||||||
|
resp.signupForm = data.formData.signupForm;
|
||||||
this.setState({
|
this.setState({
|
||||||
formData: resp,
|
formData: resp,
|
||||||
statusMessage: "Event updated successfully.",
|
statusMessage: "Event updated successfully",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ class FeedCreatePage extends React.Component<FeedCreatePageProps, FeedCreatePage
|
|||||||
fetchInitialFormData = async (id) => {
|
fetchInitialFormData = async (id) => {
|
||||||
try {
|
try {
|
||||||
const data = await getPost(id);
|
const data = await getPost(id);
|
||||||
data.tags = data.tag_id;
|
// data.tags = data.tag_id;
|
||||||
this.setState({
|
this.setState({
|
||||||
formData: data,
|
formData: data,
|
||||||
});
|
});
|
||||||
@@ -84,14 +84,14 @@ class FeedCreatePage extends React.Component<FeedCreatePageProps, FeedCreatePage
|
|||||||
|
|
||||||
if (payload.id === undefined) {
|
if (payload.id === undefined) {
|
||||||
const resp = await createPost(payload);
|
const resp = await createPost(payload);
|
||||||
resp.tags = resp.tag_id;
|
// resp.tags = resp.tags;
|
||||||
this.setState({
|
this.setState({
|
||||||
formData: resp,
|
formData: resp,
|
||||||
statusMessage: "Post created successfully",
|
statusMessage: "Post created successfully",
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
const resp = await updatePost(payload);
|
const resp = await updatePost(payload);
|
||||||
resp.tags = resp.tag_id;
|
// resp.tags = resp.tag_id;
|
||||||
this.setState({
|
this.setState({
|
||||||
formData: resp,
|
formData: resp,
|
||||||
statusMessage: "Post updated successfully.",
|
statusMessage: "Post updated successfully.",
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
import { Question } from "@components/SignupQuestionsWidget";
|
import { Question } from "@components/SignupQuestionsWidget";
|
||||||
import { SignupForm } from "@models/SignupForm";
|
import { SignupForm } from "@models/SignupForm";
|
||||||
import { EMAIL_REGEX } from "@utils/regexes";
|
import { EMAIL_REGEX } from "@utils/regexes";
|
||||||
|
import escapeRegExp from "lodash/escapeRegExp";
|
||||||
|
|
||||||
const questionToUISchemaProp = (question: Question): {} => {
|
const questionToUISchemaProp = (question: Question): {} => {
|
||||||
let obj = {};
|
let obj = {};
|
||||||
@@ -52,7 +53,7 @@ const questionToValidationSchema = (question: Question) => {
|
|||||||
obj = {
|
obj = {
|
||||||
type: "string",
|
type: "string",
|
||||||
title: question.name,
|
title: question.name,
|
||||||
pattern: question.options.map(x => `^${x}$`).join("|"),
|
pattern: question.options.map(x => `^${escapeRegExp(x)}$`).join("|"),
|
||||||
enum: question.options,
|
enum: question.options,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -65,7 +66,7 @@ const questionToValidationSchema = (question: Question) => {
|
|||||||
items: {
|
items: {
|
||||||
type: "string",
|
type: "string",
|
||||||
enum: question.options,
|
enum: question.options,
|
||||||
pattern: question.options.map(x => `^${x}$`).join("|"),
|
pattern: question.options.map(x => `^${escapeRegExp(x)}$`).join("|"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user