prettier config

This commit is contained in:
Victor Batischev
2023-12-19 17:36:30 +03:00
parent a143e274f4
commit 5d03502e5c
69 changed files with 536 additions and 536 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
module.exports = {
"postcss-preset-env": {
browsers: "last 2 versions",
},
browsers: "last 2 versions"
}
};
+1 -1
View File
@@ -1,5 +1,5 @@
import axios from "axios";
export default axios.create({
baseURL: process.env.REACT_APP_API_URL,
baseURL: process.env.REACT_APP_API_URL
});
+4 -4
View File
@@ -6,7 +6,7 @@ const instance = axios.create({
baseURL: process.env.REACT_APP_API_URL,
validateStatus(status) {
return status;
},
}
});
export const apiRequest = (
@@ -17,8 +17,8 @@ export const apiRequest = (
data,
headers = {
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json",
},
"Content-Type": "application/json"
}
} = {}
) => {
const fullHeaders = { ...headers, ...getToken() };
@@ -30,7 +30,7 @@ export const apiRequest = (
method,
params,
data,
headers: { ...fullHeaders },
headers: { ...fullHeaders }
})
.then(
(response) =>
@@ -12,7 +12,7 @@ const ArchiveTasksItem = ({ task, index }) => {
<p
className="date"
dangerouslySetInnerHTML={{
__html: task.description,
__html: task.description
}}
/>
</td>
+1 -1
View File
@@ -51,7 +51,7 @@ export const AuthBox = ({ title }) => {
dispatch(loading(true));
apiRequest("/user/login", {
method: "POST",
data: formData,
data: formData
}).then((res) => {
if (!res.access_token) {
setError("Введены некорректные данные для входа");
+1 -1
View File
@@ -86,7 +86,7 @@ export function getCorrectDate(day) {
"сентября",
"октября",
"ноября",
"декабря",
"декабря"
];
return `${new Date(day).getDate()} ${
months[new Date(day).getMonth()]
+5 -5
View File
@@ -4,7 +4,7 @@ import { Link, Navigate, useNavigate, useParams } from "react-router-dom";
import {
currentCandidate,
selectCurrentCandidate,
selectCurrentCandidate
} from "@redux/outstaffingSlice";
import { LEVELS, SKILLS } from "@utils/constants";
@@ -58,7 +58,7 @@ const Candidate = () => {
const styles = {
classes: "",
header: "",
img: "",
img: ""
};
switch (Number(position_id)) {
@@ -100,14 +100,14 @@ const Candidate = () => {
{ name: "Главная", link: "/profile" },
{
name: "Каталог свободных специалистов",
link: "/profile/catalog",
link: "/profile/catalog"
},
{
name: `${currentCandidateObj.specification} ${
SKILLS[currentCandidateObj.position_id]
}, ${LEVELS[currentCandidateObj.level]}`,
link: `/candidate/${currentCandidateObj.id}`,
},
link: `/candidate/${currentCandidateObj.id}`
}
]}
/>
@@ -34,7 +34,7 @@ const CandidateSidebar = ({ candidate, setActiveSnippet, activeSnippet }) => {
let levelAspt = {
spec: candidate.specification,
skils: SKILLS[candidate.position_id],
level: LEVELS[candidate.level],
level: LEVELS[candidate.level]
};
return (
+2 -2
View File
@@ -15,8 +15,8 @@ const FileTracker = ({ file, setDeletedTask, taskId }) => {
file_id: file.id,
entity_type: 2,
entity_id: taskId,
status: 0,
},
status: 0
}
}).then(() => {
setDeletedTask(file);
});
+5 -5
View File
@@ -22,7 +22,7 @@ const Form = () => {
const [data, setData] = useState({
email: "",
phone: "",
comment: "",
comment: ""
});
const [isFetching, setIsFetching] = useState(false);
@@ -40,7 +40,7 @@ const Form = () => {
: () => {
setStatus(null);
navigate(`/candidate/${urlParams.id}`);
},
}
});
};
@@ -55,7 +55,7 @@ const Form = () => {
setData((prev) => ({
...prev,
[id]: value,
[id]: value
}));
};
@@ -73,8 +73,8 @@ const Form = () => {
method: "POST",
params: {
profile_id: urlParams.id,
...data,
},
...data
}
}).then((res) => {
setStatus(res);
setIsFetching(false);
@@ -23,7 +23,7 @@ export const FreeDevelopers = () => {
<ProfileBreadcrumbs
links={[
{ name: "Главная", link: "/auth" },
{ name: "Свободные разработчики", link: "/worker" },
{ name: "Свободные разработчики", link: "/worker" }
]}
/>
@@ -18,13 +18,13 @@ export const ModalRegistration = ({ active, setActive }) => {
const [inputsValue, setInputsValue] = useState({
userName: "",
email: "",
password: "",
password: ""
});
const [inputsError, setInputsError] = useState({
name: false,
email: false,
password: false,
password: false
});
const [loader, setLoader] = useState(false);
@@ -68,22 +68,22 @@ export const ModalRegistration = ({ active, setActive }) => {
data: {
username: inputsValue.userName,
email: inputsValue.email,
password: inputsValue.password,
},
password: inputsValue.password
}
}).then((data) => {
setLoader(false);
if (!data) {
showNotification({
show: true,
text: "Аккаунт с таким логином или email уже существует",
type: "error",
type: "error"
});
} else {
closeModal();
showNotification({
show: true,
text: "Аккаунт успешно создан",
type: "success",
type: "success"
});
}
});
@@ -93,12 +93,12 @@ export const ModalRegistration = ({ active, setActive }) => {
setInputsValue({
userName: "",
email: "",
password: "",
password: ""
});
setInputsError({
name: false,
email: false,
password: false,
password: false
});
setActive(false);
};
@@ -122,11 +122,11 @@ export const ModalRegistration = ({ active, setActive }) => {
setInputsError({
name: false,
email: false,
password: false,
password: false
});
setInputsValue((prevValue) => ({
...prevValue,
userName: e.target.value,
userName: e.target.value
}));
}}
value={inputsValue.userName}
@@ -143,11 +143,11 @@ export const ModalRegistration = ({ active, setActive }) => {
setInputsError({
name: false,
email: false,
password: false,
password: false
});
setInputsValue((prevValue) => ({
...prevValue,
email: e.target.value,
email: e.target.value
}));
}}
value={inputsValue.email}
@@ -167,11 +167,11 @@ export const ModalRegistration = ({ active, setActive }) => {
setInputsError({
name: false,
email: false,
password: false,
password: false
});
setInputsValue((prevValue) => ({
...prevValue,
password: e.target.value,
password: e.target.value
}));
}}
value={inputsValue.password}
@@ -188,11 +188,11 @@ export const ModalRegistration = ({ active, setActive }) => {
setInputsError({
name: false,
email: false,
password: false,
password: false
});
setInputsValue((prevValue) => ({
...prevValue,
password: e.target.value,
password: e.target.value
}));
}}
value={inputsValue.password}
@@ -17,13 +17,13 @@ export const ModalResetPassword = ({ active, setActive }) => {
const [inputsValue, setInputsValue] = useState({
email: "",
token: "",
password: "",
password: ""
});
const [inputsError, setInputsError] = useState({
email: false,
password: false,
token: false,
token: false
});
const validateEmail = (email) => {
@@ -40,7 +40,7 @@ export const ModalResetPassword = ({ active, setActive }) => {
setInputsValue({
email: "",
token: "",
password: "",
password: ""
});
};
@@ -51,22 +51,22 @@ export const ModalResetPassword = ({ active, setActive }) => {
return showNotification({
show: true,
text: "Введите корректный e-mail",
type: "error",
type: "error"
});
}
setLoader(true);
apiRequest("/register/request-password-reset", {
method: "POST",
data: {
email: inputsValue.email,
},
email: inputsValue.email
}
}).then((data) => {
setLoader(false);
if (data) {
showNotification({
show: true,
text: "Письмо отправлено Вам на почту",
type: "success",
type: "success"
});
setStep(true);
}
@@ -77,12 +77,12 @@ export const ModalResetPassword = ({ active, setActive }) => {
setInputsError((prevValue) => ({
...prevValue,
password: true,
token: true,
token: true
}));
return showNotification({
show: true,
text: "Введите данные",
type: "error",
type: "error"
});
}
if (inputsValue.password.length < 6) {
@@ -94,15 +94,15 @@ export const ModalResetPassword = ({ active, setActive }) => {
method: "POST",
data: {
token: inputsValue.token,
password: inputsValue.password,
},
password: inputsValue.password
}
}).then((data) => {
setLoader(false);
if (data.code === 0) {
showNotification({
show: true,
text: "Введите корректные данные",
type: "error",
type: "error"
});
} else {
setActive(false);
@@ -110,7 +110,7 @@ export const ModalResetPassword = ({ active, setActive }) => {
showNotification({
show: true,
text: "Пароль изменён",
type: "success",
type: "success"
});
}
});
@@ -133,12 +133,12 @@ export const ModalResetPassword = ({ active, setActive }) => {
onChange={(e) => {
setInputsValue((prevValue) => ({
...prevValue,
email: e.target.value,
email: e.target.value
}));
setInputsError({
email: false,
password: false,
token: false,
token: false
});
}}
placeholder="E-mail"
@@ -173,11 +173,11 @@ export const ModalResetPassword = ({ active, setActive }) => {
setInputsError({
email: false,
password: false,
token: false,
token: false
});
setInputsValue((prevValue) => ({
...prevValue,
token: e.target.value,
token: e.target.value
}));
}}
value={inputsValue.token}
@@ -193,12 +193,12 @@ export const ModalResetPassword = ({ active, setActive }) => {
onChange={(e) => {
setInputsValue((prevValue) => ({
...prevValue,
password: e.target.value,
password: e.target.value
}));
setInputsError({
email: false,
password: false,
token: false,
token: false
});
}}
placeholder="password"
@@ -15,7 +15,7 @@ import {
caseOfNum,
getCorrectRequestDate,
getToken,
urlForLocal,
urlForLocal
} from "@utils/helper";
import { apiRequest } from "@api/request";
@@ -56,7 +56,7 @@ export const ModalTiсket = ({
projectName,
projectUsers,
projectOwnerId,
projectMarks,
projectMarks
}) => {
const dispatch = useDispatch();
const [addSubtask, setAddSubtask] = useState(false);
@@ -64,7 +64,7 @@ export const ModalTiсket = ({
const [inputsValue, setInputsValue] = useState({
title: task.title,
description: task.description,
comment: "",
comment: ""
});
const [comments, setComments] = useState([]);
const [deadLine, setDeadLine] = useState(task.dead_line);
@@ -85,7 +85,7 @@ export const ModalTiсket = ({
const [currentTimerCount, setCurrentTimerCount] = useState({
hours: 0,
minute: 0,
seconds: 0,
seconds: 0
});
const [timerId, setTimerId] = useState(null);
const [taskFiles, setTaskFiles] = useState([]);
@@ -104,15 +104,15 @@ export const ModalTiсket = ({
method: "PUT",
data: {
task_id: task.id,
status: 0,
},
status: 0
}
}).then(() => {
setActive(false);
dispatch(setProjectBoardFetch(projectId));
showNotification({
show: true,
text: "Задача успешно была перемещена в архив",
type: "archive",
type: "archive"
});
});
}
@@ -120,22 +120,22 @@ export const ModalTiсket = ({
const priority = {
2: "Высокий",
1: "Средний",
0: "Низкий",
0: "Низкий"
};
const priorityTypes = [
{
name: "Высокий",
key: 2,
key: 2
},
{
name: "Средний",
key: 1,
key: 1
},
{
name: "Низкий",
key: 0,
},
key: 0
}
];
function archiveTask() {
@@ -147,7 +147,7 @@ export const ModalTiсket = ({
return showNotification({
show: true,
text: "Заполните поля",
type: "error",
type: "error"
});
}
apiRequest("/task/update-task", {
@@ -155,15 +155,15 @@ export const ModalTiсket = ({
data: {
task_id: task.id,
title: inputsValue.title,
description: inputsValue.description,
},
description: inputsValue.description
}
}).then((res) => {
setEditOpen(!editOpen);
dispatch(setProjectBoardFetch(projectId));
showNotification({
show: true,
text: "Изменения сохранены",
type: "success",
type: "success"
});
});
}
@@ -176,8 +176,8 @@ export const ModalTiсket = ({
data: {
text: inputsValue.comment,
entity_type: 2,
entity_id: task.id,
},
entity_id: task.id
}
}).then((res) => {
let newComment = res;
setCommentSendDisable(false);
@@ -199,8 +199,8 @@ export const ModalTiсket = ({
method: "PUT",
data: {
comment_id: subComment.id,
status: 0,
},
status: 0
}
}).then(() => {});
});
}
@@ -234,8 +234,8 @@ export const ModalTiсket = ({
data: {
entity_type: 2,
entity_id: task.id,
created_at: getCorrectRequestDate(new Date()),
},
created_at: getCorrectRequestDate(new Date())
}
}).then((res) => {
setTimerStart(true);
setTimerInfo(res);
@@ -248,8 +248,8 @@ export const ModalTiсket = ({
method: "PUT",
data: {
timer_id: timerInfo.id,
stopped_at: getCorrectRequestDate(new Date()),
},
stopped_at: getCorrectRequestDate(new Date())
}
}).then(() => {
setTimerStart(false);
clearInterval(timerId);
@@ -261,8 +261,8 @@ export const ModalTiсket = ({
method: "PUT",
data: {
task_id: task.id,
executor_id: person.user_id,
},
executor_id: person.user_id
}
}).then((res) => {
setExecutorId(person.user_id);
setDropListOpen(false);
@@ -276,8 +276,8 @@ export const ModalTiсket = ({
method: "PUT",
data: {
task_id: task.id,
executor_id: 0,
},
executor_id: 0
}
}).then(() => {
setExecutorId(null);
setExecutor(null);
@@ -291,8 +291,8 @@ export const ModalTiсket = ({
method: "PUT",
data: {
task_id: task.id,
execution_priority: key,
},
execution_priority: key
}
}).then(() => {
dispatch(setProjectBoardFetch(projectId));
});
@@ -303,8 +303,8 @@ export const ModalTiсket = ({
method: "POST",
data: {
task_id: task.id,
user_id: person.user_id,
},
user_id: person.user_id
}
}).then((res) => {
setDropListMembersOpen(false);
setMembers((prevValue) => [...prevValue, res]);
@@ -317,8 +317,8 @@ export const ModalTiсket = ({
method: "DELETE",
data: {
task_id: task.id,
user_id: person.user_id,
},
user_id: person.user_id
}
}).then(() => {
setMembers(members.filter((item) => item.user_id !== person.user_id));
dispatch(setProjectBoardFetch(projectId));
@@ -351,7 +351,7 @@ export const ModalTiсket = ({
setCurrentTimerCount({
hours: Math.floor(timerSeconds / 60 / 60),
minute: Math.floor((timerSeconds / 60) % 60),
seconds: timerSeconds % 60,
seconds: timerSeconds % 60
});
updateTimerHours = Math.floor(timerSeconds / 60 / 60);
updateTimerMinute = Math.floor((timerSeconds / 60) % 60);
@@ -386,10 +386,10 @@ export const ModalTiсket = ({
{
user: {
avatar: profileInfo.photo,
fio: profileInfo.fio,
fio: profileInfo.fio
},
user_id: profileInfo.id_user,
},
user_id: profileInfo.id_user
}
]);
}
}, []);
@@ -410,7 +410,7 @@ export const ModalTiсket = ({
const res = await fetch("https://itguild.info/api/file/upload", {
method: "POST",
body: formData,
headers: { ...getToken() },
headers: { ...getToken() }
});
const data = await res.json();
@@ -430,8 +430,8 @@ export const ModalTiсket = ({
file_id: id,
entity_type: 2,
entity_id: task.id,
status: 1,
},
status: 1
}
}).then((res) => {
setTaskFiles((prevValue) => [...prevValue, res]);
// setUploadedFile(null);
@@ -470,7 +470,7 @@ export const ModalTiсket = ({
return setCurrentTimerCount({
hours: updateTimerHours,
minute: updateTimerMinute,
seconds: updateTimerSec,
seconds: updateTimerSec
});
}
@@ -496,7 +496,7 @@ export const ModalTiсket = ({
showNotification({
show: true,
text: "Ссылка скопирована в буфер обмена",
type: "copy",
type: "copy"
});
}
@@ -505,8 +505,8 @@ export const ModalTiсket = ({
method: "PUT",
data: {
task_id: task.id,
dead_line: getCorrectRequestDate(date),
},
dead_line: getCorrectRequestDate(date)
}
}).then(() => {
dispatch(setProjectBoardFetch(projectId));
});
@@ -518,8 +518,8 @@ export const ModalTiсket = ({
data: {
mark_id: tagId,
entity_type: 2,
entity_id: task.id,
},
entity_id: task.id
}
}).then((data) => {
setSelectTagsOpen(false);
setTaskTags((prevValue) => [...prevValue, data.mark]);
@@ -533,8 +533,8 @@ export const ModalTiсket = ({
data: {
mark_id: tagId,
entity_type: 2,
entity_id: task.id,
},
entity_id: task.id
}
}).then(() => {
setTaskTags((prevValue) => prevValue.filter((tag) => tag.id !== tagId));
dispatch(setProjectBoardFetch(projectId));
@@ -617,7 +617,7 @@ export const ModalTiсket = ({
onChange={(e) => {
setInputsValue((prevValue) => ({
...prevValue,
title: e.target.value,
title: e.target.value
}));
}}
/>
@@ -640,14 +640,14 @@ export const ModalTiсket = ({
"ImageToolbar",
"ImageUpload",
"MediaEmbed",
"BlockQuote",
],
"BlockQuote"
]
}}
onChange={(event, editor) => {
const data = editor.getData();
setInputsValue((prevValue) => ({
...prevValue,
description: data,
description: data
}));
}}
/>
@@ -729,7 +729,7 @@ export const ModalTiсket = ({
onChange={(e) => {
setInputsValue((prevValue) => ({
...prevValue,
comment: e.target.value,
comment: e.target.value
}));
}}
/>
@@ -12,7 +12,7 @@ import {
getBoarderLoader,
modalToggle,
setProjectBoardFetch,
setToggleTab,
setToggleTab
} from "@redux/projectsTrackerSlice";
import {
@@ -20,7 +20,7 @@ import {
caseOfNum,
getCorrectRequestDate,
getToken,
urlForLocal,
urlForLocal
} from "@utils/helper";
import { apiRequest } from "@api/request";
@@ -77,7 +77,7 @@ export const TicketFullScreen = () => {
const [currentTimerCount, setCurrentTimerCount] = useState({
hours: 0,
minute: 0,
seconds: 0,
seconds: 0
});
const profileInfo = useSelector(getProfileInfo);
const [timerId, setTimerId] = useState(null);
@@ -102,22 +102,22 @@ export const TicketFullScreen = () => {
const priority = {
2: "Высокий",
1: "Средний",
0: "Низкий",
0: "Низкий"
};
const priorityTypes = [
{
name: "Высокий",
key: 2,
key: 2
},
{
name: "Средний",
key: 1,
key: 1
},
{
name: "Низкий",
key: 0,
},
key: 0
}
];
useEffect(() => {
@@ -133,7 +133,7 @@ export const TicketFullScreen = () => {
setInputsValue({
title: taskInfo.title,
description: taskInfo.description,
comment: "",
comment: ""
});
setTaskTags(taskInfo.mark);
apiRequest(
@@ -168,7 +168,7 @@ export const TicketFullScreen = () => {
setCurrentTimerCount({
hours: Math.floor(timerSeconds / 60 / 60),
minute: Math.floor((timerSeconds / 60) % 60),
seconds: timerSeconds % 60,
seconds: timerSeconds % 60
});
updateTimerHours = Math.floor(timerSeconds / 60 / 60);
updateTimerMinute = Math.floor((timerSeconds / 60) % 60);
@@ -208,8 +208,8 @@ export const TicketFullScreen = () => {
method: "PUT",
data: {
task_id: ticketId.id,
status: 0,
},
status: 0
}
}).then(() => {
navigate(`/tracker/project/${taskInfo.project_id}`);
});
@@ -224,7 +224,7 @@ export const TicketFullScreen = () => {
return showNotification({
show: true,
text: "Заполните поля",
type: "error",
type: "error"
});
}
apiRequest("/task/update-task", {
@@ -232,13 +232,13 @@ export const TicketFullScreen = () => {
data: {
task_id: taskInfo.id,
title: inputsValue.title,
description: inputsValue.description,
},
description: inputsValue.description
}
}).then(() => {
showNotification({
show: true,
text: "Изменения сохранены",
type: "success",
type: "success"
});
setEditOpen(!editOpen);
});
@@ -252,8 +252,8 @@ export const TicketFullScreen = () => {
data: {
text: inputsValue.comment,
entity_type: 2,
entity_id: taskInfo.id,
},
entity_id: taskInfo.id
}
}).then((res) => {
let newComment = res;
setCommentSendDisable(false);
@@ -270,8 +270,8 @@ export const TicketFullScreen = () => {
data: {
entity_type: 2,
entity_id: taskInfo.id,
created_at: getCorrectRequestDate(new Date()),
},
created_at: getCorrectRequestDate(new Date())
}
}).then((res) => {
setTimerStart(true);
setTimerInfo(res);
@@ -284,8 +284,8 @@ export const TicketFullScreen = () => {
method: "PUT",
data: {
timer_id: timerInfo.id,
stopped_at: getCorrectRequestDate(new Date()),
},
stopped_at: getCorrectRequestDate(new Date())
}
}).then(() => {
setTimerStart(false);
clearInterval(timerId);
@@ -297,8 +297,8 @@ export const TicketFullScreen = () => {
method: "DELETE",
data: {
project_id: projectInfo.id,
user_id: userId,
},
user_id: userId
}
}).then(() => {
dispatch(deletePersonOnProject(userId));
});
@@ -314,8 +314,8 @@ export const TicketFullScreen = () => {
method: "PUT",
data: {
comment_id: subComment.id,
status: 0,
},
status: 0
}
}).then(() => {});
});
}
@@ -391,7 +391,7 @@ export const TicketFullScreen = () => {
return setCurrentTimerCount({
hours: updateTimerHours,
minute: updateTimerMinute,
seconds: updateTimerSec,
seconds: updateTimerSec
});
}
@@ -405,13 +405,13 @@ export const TicketFullScreen = () => {
method: "PUT",
data: {
task_id: taskInfo.id,
executor_id: 0,
},
executor_id: 0
}
}).then(() => {
setTaskInfo((prevState) => ({
...prevState,
executor_id: null,
executor: null,
executor: null
}));
});
}
@@ -421,14 +421,14 @@ export const TicketFullScreen = () => {
method: "PUT",
data: {
task_id: taskInfo.id,
executor_id: person.user_id,
},
executor_id: person.user_id
}
}).then((res) => {
setDropListOpen(false);
setTaskInfo((prevState) => ({
...prevState,
executor_id: res.executor_id,
executor: res.executor,
executor: res.executor
}));
});
}
@@ -438,14 +438,14 @@ export const TicketFullScreen = () => {
method: "DELETE",
data: {
task_id: taskInfo.id,
user_id: person.user_id,
},
user_id: person.user_id
}
}).then(() => {
setTaskInfo((prevState) => ({
...prevState,
taskUsers: taskInfo.taskUsers.filter(
(item) => item.user_id !== person.user_id
),
)
}));
});
}
@@ -455,13 +455,13 @@ export const TicketFullScreen = () => {
method: "POST",
data: {
task_id: taskInfo.id,
user_id: person.user_id,
},
user_id: person.user_id
}
}).then((res) => {
setDropListMembersOpen(false);
setTaskInfo((prevValue) => ({
...prevValue,
taskUsers: [...prevValue.taskUsers, res],
taskUsers: [...prevValue.taskUsers, res]
}));
});
}
@@ -471,8 +471,8 @@ export const TicketFullScreen = () => {
method: "PUT",
data: {
task_id: taskInfo.id,
dead_line: getCorrectRequestDate(date),
},
dead_line: getCorrectRequestDate(date)
}
}).then(() => {});
}
@@ -482,7 +482,7 @@ export const TicketFullScreen = () => {
const res = await fetch("https://itguild.info/api/file/upload", {
method: "POST",
body: formData,
headers: { ...getToken() },
headers: { ...getToken() }
});
const data = await res.json();
@@ -497,8 +497,8 @@ export const TicketFullScreen = () => {
file_id: uploadedFile[0].id,
entity_type: 2,
entity_id: taskInfo.id,
status: 1,
},
status: 1
}
}).then((res) => {
setTaskFiles((prevValue) => [...prevValue, res]);
setUploadedFile(null);
@@ -515,8 +515,8 @@ export const TicketFullScreen = () => {
method: "PUT",
data: {
task_id: taskInfo.id,
execution_priority: key,
},
execution_priority: key
}
}).then(() => {});
}
@@ -552,8 +552,8 @@ export const TicketFullScreen = () => {
data: {
mark_id: tagId,
entity_type: 2,
entity_id: taskInfo.id,
},
entity_id: taskInfo.id
}
}).then(() => {
setTaskTags((prevValue) => prevValue.filter((tag) => tag.id !== tagId));
});
@@ -565,8 +565,8 @@ export const TicketFullScreen = () => {
data: {
mark_id: tagId,
entity_type: 2,
entity_id: taskInfo.id,
},
entity_id: taskInfo.id
}
}).then((data) => {
setSelectTagsOpen(false);
setTaskTags((prevValue) => [...prevValue, data.mark]);
@@ -639,7 +639,7 @@ export const TicketFullScreen = () => {
<ProfileBreadcrumbs
links={[
{ name: "Главная", link: "/profile" },
{ name: "Трекер", link: "/profile/tracker" },
{ name: "Трекер", link: "/profile/tracker" }
]}
/>
<h2 className="tracker__title">Управление проектами с трекером</h2>
@@ -794,7 +794,7 @@ export const TicketFullScreen = () => {
onChange={(e) => {
setInputsValue((prevValue) => ({
...prevValue,
title: e.target.value,
title: e.target.value
}));
}}
/>
@@ -819,14 +819,14 @@ export const TicketFullScreen = () => {
"ImageToolbar",
"ImageUpload",
"MediaEmbed",
"BlockQuote",
],
"BlockQuote"
]
}}
onChange={(event, editor) => {
const data = editor.getData();
setInputsValue((prevValue) => ({
...prevValue,
description: data,
description: data
}));
}}
/>
@@ -834,7 +834,7 @@ export const TicketFullScreen = () => {
<p
className="fullDescription fullScreenDescription"
dangerouslySetInnerHTML={{
__html: inputsValue.description,
__html: inputsValue.description
}}
/>
)}
@@ -917,7 +917,7 @@ export const TicketFullScreen = () => {
onChange={(e) => {
setInputsValue((prevValue) => ({
...prevValue,
comment: e.target.value,
comment: e.target.value
}));
}}
/>
@@ -19,7 +19,7 @@ import {
setColumnName,
setColumnPriority,
setProject,
setProjectBoardFetch,
setProjectBoardFetch
} from "@redux/projectsTrackerSlice";
import { getCorrectRequestDate, urlForLocal } from "@utils/helper";
@@ -52,7 +52,7 @@ export const TrackerModal = ({
projectId,
priorityTask,
projectUsers,
projectMarks,
projectMarks
}) => {
const dispatch = useDispatch();
const projectBoard = useSelector(getProjectBoard);
@@ -93,16 +93,16 @@ export const TrackerModal = ({
const priority = [
{
name: "Высокий",
key: 2,
key: 2
},
{
name: "Средний",
key: 1,
key: 1
},
{
name: "Низкий",
key: 0,
},
key: 0
}
];
function createTab() {
@@ -118,8 +118,8 @@ export const TrackerModal = ({
priority: projectBoard.columns.length
? projectBoard.columns.at(-1).priority + 1
: 1,
title: valueColumn,
},
title: valueColumn
}
}).then(() => {
dispatch(setProjectBoardFetch(projectBoard.id));
});
@@ -132,7 +132,7 @@ export const TrackerModal = ({
showNotification({
show: true,
text: "Введите название и описание",
type: "error",
type: "error"
});
return;
}
@@ -148,14 +148,14 @@ export const TrackerModal = ({
column_id: selectedTab,
execution_priority: selectedPriority ? selectedPriority.key : "",
priority: priorityTask,
dead_line: deadLineDate ? getCorrectRequestDate(deadLineDate) : "",
},
dead_line: deadLineDate ? getCorrectRequestDate(deadLineDate) : ""
}
}).then((res) => {
if (res.status === 500) {
showNotification({
show: true,
text: "Задача с таким именем уже существует",
type: "error",
type: "error"
});
} else {
for (let i = 0; i < taskTags.length; i++) {
@@ -164,8 +164,8 @@ export const TrackerModal = ({
data: {
mark_id: taskTags[i].id,
entity_type: 2,
entity_id: res.id,
},
entity_id: res.id
}
}).then(() => {
setTaskTags([]);
});
@@ -175,8 +175,8 @@ export const TrackerModal = ({
method: "PUT",
data: {
task_id: res.id,
executor_id: selectedExecutorTask.user_id,
},
executor_id: selectedExecutorTask.user_id
}
}).then(() => {
dispatch(setProjectBoardFetch(projectBoard.id));
setActive(false);
@@ -195,7 +195,7 @@ export const TrackerModal = ({
showNotification({
show: true,
text: "Задача создана",
type: "success",
type: "success"
});
}
});
@@ -206,8 +206,8 @@ export const TrackerModal = ({
method: "PUT",
data: {
project_id: projectId,
name: projectName,
},
name: projectName
}
}).then(() => {
setActive(false);
dispatch(editProjectName({ id: projectId, name: projectName }));
@@ -220,20 +220,20 @@ export const TrackerModal = ({
const priorityColumns = [
{
column_id: column.id,
priority: Number(columnPriority),
},
priority: Number(columnPriority)
}
];
for (let i = column.priority; i < columnPriority; i++) {
const currentColumn = {
column_id: projectBoard.columns[i].id,
priority: i,
priority: i
};
priorityColumns.push(currentColumn);
}
for (let i = column.priority; i > columnPriority; i--) {
const currentColumn = {
column_id: projectBoard.columns[i - 2].id,
priority: i,
priority: i
};
priorityColumns.push(currentColumn);
}
@@ -241,8 +241,8 @@ export const TrackerModal = ({
method: "POST",
data: {
project_id: projectBoard.id,
data: JSON.stringify(priorityColumns),
},
data: JSON.stringify(priorityColumns)
}
}).then(() => {
dispatch(setProjectBoardFetch(projectBoard.id));
});
@@ -256,8 +256,8 @@ export const TrackerModal = ({
method: "PUT",
data: {
column_id: columnId,
title: columnName,
},
title: columnName
}
}).then(() => {
setActive(false);
dispatch(editColumnName({ id: columnId, title: columnName }));
@@ -273,8 +273,8 @@ export const TrackerModal = ({
data: {
user_id: localStorage.getItem("id"),
name: nameProject,
status: 19,
},
status: 19
}
}).then((res) => {
if (!Array.isArray(res.name)) {
const result = { ...res, columns: [] };
@@ -285,7 +285,7 @@ export const TrackerModal = ({
showNotification({
show: true,
text: "Проект с таким именем уже существует",
type: "error",
type: "error"
});
}
});
@@ -297,8 +297,8 @@ export const TrackerModal = ({
method: "POST",
data: {
user_id: selectedWorker.user_id,
project_id: projectBoard.id,
},
project_id: projectBoard.id
}
}).then((el) => {
dispatch(addPersonToProject(el));
setActive(false);
@@ -332,10 +332,10 @@ export const TrackerModal = ({
{
user: {
avatar: profileInfo.photo,
fio: profileInfo.fio,
fio: profileInfo.fio
},
user_id: profileInfo.id_user,
},
user_id: profileInfo.id_user
}
]);
} else {
setCorrectProjectUsers(projectUsers);
@@ -525,10 +525,10 @@ export const TrackerModal = ({
"italic",
"link",
"bulletedList",
"numberedList",
"numberedList"
],
removePlugins: ["BlockQuote"],
placeholder: "Описание задачи",
placeholder: "Описание задачи"
}}
onChange={(event, editor) => {
const data = editor.getData();
+15 -15
View File
@@ -22,55 +22,55 @@ export const Navigation = () => {
developer: [
{
path: "/summary",
name: "Резюме",
name: "Резюме"
},
{
path: "/calendar",
name: "Отчеты",
name: "Отчеты"
},
{
path: "/tracker",
name: "Трекер",
name: "Трекер"
},
{
path: "/payouts",
name: "Выплаты",
name: "Выплаты"
},
{
path: "/quiz",
name: "Тесты",
name: "Тесты"
},
{
path: "/settings",
name: "Настройки",
},
name: "Настройки"
}
],
partner: [
{
path: "/catalog",
name: "Каталог",
name: "Каталог"
},
{
path: "/requests",
name: "Запросы",
name: "Запросы"
},
{
path: "/categories",
name: "Персонал",
name: "Персонал"
},
{
path: "/tracker",
name: "Трекер",
name: "Трекер"
},
{
path: "/treaties",
name: "Договора",
name: "Договора"
},
{
path: "/settings",
name: "Настройки",
},
],
name: "Настройки"
}
]
});
useEffect(() => {
+1 -1
View File
@@ -15,7 +15,7 @@ const images = {
archive: archive,
error: error,
copy: copy,
success: success,
success: success
};
export const Notification = () => {
+2 -2
View File
@@ -4,7 +4,7 @@ import { useDispatch, useSelector } from "react-redux";
import {
getPositionId,
selectTags,
setPositionId,
setPositionId
} from "@redux/outstaffingSlice";
import OutstaffingBlock from "@components/OutstaffingBlock/OutstaffingBlock";
@@ -34,7 +34,7 @@ const Outstaffing = () => {
const onSelectPosition = createSelectPositionHandler({
positionId,
setPositionId,
dispatch,
dispatch
});
return (
<>
@@ -13,13 +13,13 @@ const handlePositionClick = ({
positionId,
isSelected,
onSelect,
apiRequest,
apiRequest
}) => {
if (isSelected) {
apiRequest("/profile", {
params: {
limit: 1000,
},
limit: 1000
}
}).then((profileArr) => {
dispatch(profiles(profileArr));
dispatch(selectedItems([]));
@@ -29,8 +29,8 @@ const handlePositionClick = ({
apiRequest("/profile", {
params: {
limit: "1000",
position_id: positionId,
},
position_id: positionId
}
}).then((res) => {
dispatch(profiles(res));
dispatch(selectedItems([]));
@@ -46,7 +46,7 @@ const OutstaffingBlock = ({
header,
positionId,
isSelected,
onSelect,
onSelect
}) => {
const dispatch = useDispatch();
@@ -87,7 +87,7 @@ const OutstaffingBlock = ({
positionId,
isSelected,
onSelect,
apiRequest,
apiRequest
})
}
>
@@ -8,7 +8,7 @@ import { getProfileInfo } from "@redux/outstaffingSlice";
import {
getRequestDates,
setReportDate,
setRequestDate,
setRequestDate
} from "@redux/reportSlice";
import { urlForLocal } from "@utils/helper";
@@ -89,7 +89,7 @@ export const ProfileCalendar = () => {
<ProfileBreadcrumbs
links={[
{ name: "Главная", link: "/profile" },
{ name: "Отчеты", link: "/profile/calendar" },
{ name: "Отчеты", link: "/profile/calendar" }
]}
/>
<h2 className="summary__title">Ваши отчеты</h2>
@@ -7,7 +7,7 @@ import { Link } from "react-router-dom";
import {
setReportDate,
setRequestDate,
setSendRequest,
setSendRequest
} from "@redux/reportSlice";
import { getCorrectYYMMDD } from "@utils/helper";
@@ -20,7 +20,7 @@ import {
currentMonthAndDay,
getCorrectDate,
getReports,
hourOfNum,
hourOfNum
} from "@components/Calendar/calendarHelper";
import BaseButton from "@components/Common/BaseButton/BaseButton";
import ShortReport from "@components/ShortReport/ShortReport";
@@ -40,7 +40,7 @@ export const ProfileCalendarComponent = React.memo(
startRangeDays,
toggleRangeDays,
startDate,
setStartDateRange,
setStartDateRange
}) => {
const dispatch = useDispatch();
@@ -58,7 +58,7 @@ export const ProfileCalendarComponent = React.memo(
calendarHelper(value).map((array) => {
setSelectedRangeDays((prevState) => ({
...prevState,
[array[0]]: false,
[array[0]]: false
}));
});
if (endDate) {
@@ -196,7 +196,7 @@ export const ProfileCalendarComponent = React.memo(
calendarHelper(value).map((array) => {
setSelectedRangeDays((prevState) => ({
...prevState,
[array[0]]: false,
[array[0]]: false
}));
});
}
@@ -316,15 +316,15 @@ export const ProfileCalendarComponent = React.memo(
? `${getCorrectDate(startDate)} - ${getCorrectDate(endDate)}`
: `${getCorrectDate(endDate)} - ${getCorrectDate(startDate)}`
: activePeriod
? "Выберите диапазон на календаре"
: "Выбрать диапазон"}
? "Выберите диапазон на календаре"
: "Выбрать диапазон"}
</span>
<span>
{totalRangeHours
? `${totalRangeHours} ${hourOfNum(totalRangeHours)}`
: endDate
? "0 часов"
: ""}
? "0 часов"
: ""}
</span>
{endDate && (
<BaseButton
+3 -3
View File
@@ -58,14 +58,14 @@ export const ProjectTiket = ({ project, index }) => {
method: "PUT",
data: {
project_id: project.id,
status: 10,
},
status: 10
}
}).then(() => {
dispatch(deleteProject(project));
showNotification({
show: true,
text: "Проект успешно была перемещена в архив",
type: "archive",
type: "archive"
});
});
}
+8 -8
View File
@@ -23,7 +23,7 @@ import remove from "assets/icons/remove.svg";
import {
getCorrectDate,
getCreatedDate,
hourOfNum,
hourOfNum
} from "../Calendar/calendarHelper";
import "./reportForm.scss";
@@ -48,7 +48,7 @@ const ReportForm = () => {
const [datePickerOpen, setDatePickerOpen] = useState(false);
const [inputs, setInputs] = useState([
{ task: "", hours_spent: "", minutes_spent: 0 },
{ task: "", hours_spent: "", minutes_spent: 0 }
]);
const [troublesInputValue, setTroublesInputValue] = useState("");
const [scheduledInputValue, setScheduledInputValue] = useState("");
@@ -56,7 +56,7 @@ const ReportForm = () => {
const addInput = () => {
setInputs((prev) => [
...prev,
{ task: "", hours_spent: "", minutes_spent: 0 },
{ task: "", hours_spent: "", minutes_spent: 0 }
]);
};
@@ -101,8 +101,8 @@ const ReportForm = () => {
difficulties: troublesInputValue,
tomorrow: scheduledInputValue,
created_at: getCreatedDate(startDate),
status: 1,
},
status: 1
}
}).then(() => {
setReportSuccess("Отчет отправлен");
setTimeout(() => {
@@ -126,7 +126,7 @@ const ReportForm = () => {
links={[
{ name: "Главная", link: "/profile" },
{ name: "Отчеты", link: "/profile/calendar" },
{ name: "Добавить отчет", link: "/report" },
{ name: "Добавить отчет", link: "/report" }
]}
/>
<h2 className="summary__title">
@@ -207,7 +207,7 @@ const ReportForm = () => {
return index === inputIndex
? {
...input,
task: e.target.value,
task: e.target.value
}
: input;
})
@@ -233,7 +233,7 @@ const ReportForm = () => {
return index === inputIndex
? {
...input,
hours_spent: Number(e.target.value),
hours_spent: Number(e.target.value)
}
: input;
})
+3 -3
View File
@@ -7,7 +7,7 @@ import {
selectItems,
selectTags,
selectedItems,
setPositionId,
setPositionId
} from "@redux/outstaffingSlice";
import { apiRequest } from "@api/request";
@@ -31,7 +31,7 @@ const TagSelect = () => {
const params = filterItemsId ? { skill: filterItemsId } : "";
apiRequest("/profile", {
params: { ...params, limit: 1000 },
params: { ...params, limit: 1000 }
}).then((res) => {
dispatch(profiles(res));
setSearchLoading(false);
@@ -58,7 +58,7 @@ const TagSelect = () => {
return {
id: item.id,
value: item.value,
label: item.value,
label: item.value
};
})
}
+3 -3
View File
@@ -5,7 +5,7 @@ import { Link } from "react-router-dom";
import {
getReportDate,
getSendRequest,
setSendRequest,
setSendRequest
} from "@redux/reportSlice";
import { apiRequest } from "@api/request";
@@ -13,7 +13,7 @@ import { apiRequest } from "@api/request";
import {
getCorrectDate,
getCreatedDate,
hourOfNum,
hourOfNum
} from "@components/Calendar/calendarHelper";
import { Loader } from "@components/Common/Loader/Loader";
@@ -56,7 +56,7 @@ export const ShortReport = () => {
const taskInfo = {
hours: task.hours_spent,
task: task.task,
id: task.id,
id: task.id
};
if (task.hours_spent) {
spendTime += Number(task.hours_spent);
@@ -18,24 +18,24 @@ export const SliderWorkers = ({ title, titleInfo, subTitle }) => {
const [workers] = useState([
{
avatar: mockWorker,
skils: "React / Vue Front end, Middle разработчик",
skils: "React / Vue Front end, Middle разработчик"
},
{
avatar: avatarMockFirst,
skils: "Vue / React Front end, Senior разработчик",
skils: "Vue / React Front end, Senior разработчик"
},
{
avatar: avatarMockSecond,
skils: "NodeJs Fullstack, Middle разработчик",
skils: "NodeJs Fullstack, Middle разработчик"
},
{
avatar: avatarMockThird,
skils: "React / Vue Front end, Middle разработчик",
skils: "React / Vue Front end, Middle разработчик"
},
{
avatar: avatarMockFourth,
skils: "React / PHP Fullstack, Middle разработчик",
},
skils: "React / PHP Fullstack, Middle разработчик"
}
]);
const settings = {
@@ -44,7 +44,7 @@ export const SliderWorkers = ({ title, titleInfo, subTitle }) => {
slidesToShow: 3,
slidesToScroll: 1,
autoplay: true,
autoplaySpeed: 4500,
autoplaySpeed: 4500
};
if (window.innerWidth < 575) {
+4 -4
View File
@@ -6,7 +6,7 @@ const StarRating = ({
countStars = 1,
countActiveStars = 1,
color = "#52B709",
size = 61,
size = 61
}) => {
const [shadedStars, setShadedStars] = useState([]);
const [noShadedStars, setNoShadedStars] = useState([]);
@@ -22,16 +22,16 @@ const StarRating = ({
}, []);
const ratingStyle = {
"--size": size + "px",
"--size": size + "px"
};
const activeStyle = {
"--width": percent + "%",
"--color": color,
"--content": shadedStars.join(""),
"--content": shadedStars.join("")
};
const bodyStyle = {
"--content": noShadedStars.join(""),
"--color": color,
"--color": color
};
return (
@@ -27,7 +27,7 @@ export const TrackerSelectColumn = ({ columns, task, currentColumn }) => {
dispatch(
moveProjectTask({
startWrapperIndex: { index: currentColumn.id, task },
columnId: column.id,
columnId: column.id
})
);
}}
@@ -19,7 +19,7 @@ export const TrackerTaskComment = ({
comment,
commentDelete,
addSubComment,
subCommentDelete,
subCommentDelete
}) => {
const [commentsEditOpen, setCommentsEditOpen] = useState(false);
const [commentsEditText, setCommentsEditText] = useState(comment.text);
@@ -32,8 +32,8 @@ export const TrackerTaskComment = ({
method: "PUT",
data: {
comment_id: comment.id,
text: commentsEditText,
},
text: commentsEditText
}
}).then(() => {});
}
@@ -42,8 +42,8 @@ export const TrackerTaskComment = ({
method: "PUT",
data: {
comment_id: comment.id,
status: 0,
},
status: 0
}
}).then(() => {
if (comment.parent_id) {
subCommentDelete(comment);
@@ -62,8 +62,8 @@ export const TrackerTaskComment = ({
text: subCommentsCreateText,
entity_type: 2,
entity_id: taskId,
parent_id: comment.id,
},
parent_id: comment.id
}
}).then((res) => {
let newSubComment = res;
newSubComment.created_at = new Date();
@@ -80,7 +80,7 @@ export const TrackerTaskComment = ({
: "",
"comments__list__item",
commentsEditOpen ? "comment__edit--open" : "",
comment.parent_id ? "comments__list__item__subComment" : "",
comment.parent_id ? "comments__list__item__subComment" : ""
].join(" ")}
>
<div className="comments__list__item__info">
@@ -131,8 +131,8 @@ export const TrackerTaskComment = ({
"ImageToolbar",
"ImageUpload",
"MediaEmbed",
"BlockQuote",
],
"BlockQuote"
]
}}
onChange={(event, editor) => {
const data = editor.getData();
@@ -16,7 +16,7 @@ export const Instruction = () => {
useEffect(() => {
apiRequest("/user-questionnaire/get-question-number", {
params: { user_questionnaire_uuid: test.uuid },
params: { user_questionnaire_uuid: test.uuid }
}).then((res) => setCountQuestions(res.question_number));
}, []);
@@ -28,7 +28,7 @@ export const QuizPassingInformation = ({ setStartTest, uuid, timer }) => {
showNotification({
show: true,
text: res?.message || "",
type: "error",
type: "error"
});
return;
}
@@ -54,7 +54,7 @@ export const QuizPassingInformation = ({ setStartTest, uuid, timer }) => {
const completeTest = () =>
apiRequest("/user-questionnaire/questionnaire-completed", {
method: "POST",
method: "POST"
});
const finishQuiz = async () => {
+4 -4
View File
@@ -29,7 +29,7 @@ export const TaskQuiz = ({ timer }) => {
const { userResponses, handleChange } = useHandlerFieldTest({
questions,
indexQuestion: index,
indexQuestion: index
});
const nextQuestion = async (e) => {
@@ -50,13 +50,13 @@ export const TaskQuiz = ({ timer }) => {
data: {
user_id: userId,
user_questionnaire_uuid: uuid,
userResponses: JSON.stringify(userResponses),
},
userResponses: JSON.stringify(userResponses)
}
}).then(() => {
showNotification({
show: true,
text: "Тест успешно пройден",
type: "success",
type: "success"
});
navigate("/quiz");
// if (String(res?.status)[0] !== "2") {
+1 -1
View File
@@ -2,7 +2,7 @@ import React, { Component } from "react";
class ErrorBoundary extends Component {
state = {
error: null,
error: null
};
static getDerivedStateFromError(error) {
+2 -2
View File
@@ -10,8 +10,8 @@ export const useHandlerFieldTest = ({ questions, indexQuestion }) => {
{
question_id: questions[indexQuestion].id,
response_body: e.target.value,
answer_id: e.target.id ? e.target.id : questions[indexQuestion].id,
},
answer_id: e.target.id ? e.target.id : questions[indexQuestion].id
}
]);
};
+6 -6
View File
@@ -22,18 +22,18 @@ export const Article = () => {
{
image: cardImg1,
title: "Аутстаффинг джунов: почему это выгодно",
data: "1 марта, 2023",
data: "1 марта, 2023"
},
{
image: cardImg2,
title: "Аутстаффинг джунов: почему это выгодно",
data: "1 марта, 2023",
data: "1 марта, 2023"
},
{
image: cardImg3,
title: "Аутстаффинг джунов: почему это выгодно",
data: "1 марта, 2023",
},
data: "1 марта, 2023"
}
]);
return (
@@ -48,8 +48,8 @@ export const Article = () => {
{ name: "Блог", link: "/blog" },
{
name: "Аутстаффинг джунов: почему это выгодно",
link: "/blog",
},
link: "/blog"
}
]}
/>
</div>
+10 -10
View File
@@ -44,7 +44,7 @@ export const AuthForCandidate = () => {
description:
"Java PHP Python C# React Vue.js NodeJs Golang Ruby JavaScript",
available: true,
img: BackEndImg,
img: BackEndImg
},
{
title: "Frontend разработчики",
@@ -52,14 +52,14 @@ export const AuthForCandidate = () => {
description:
"Java PHP Python C# React Vue.js NodeJs Golang Ruby JavaScript",
available: true,
img: FrontendImg,
img: FrontendImg
},
{
title: "Архитектура проектов",
link: "/registration-candidate",
description: "Потоки данных ER ERP CRM CQRS UML BPMN",
available: true,
img: ArchitectureImg,
img: ArchitectureImg
},
{
title: "Дизайн проектов",
@@ -67,35 +67,35 @@ export const AuthForCandidate = () => {
description:
"Java PHP Python C# React Vue.js NodeJs Golang Ruby JavaScript",
available: true,
img: DesignImg,
img: DesignImg
},
{
title: "Тестирование проектов",
link: "/registration-candidate",
description: "SQL Postman TestRail Kibana Ручное тестирование",
available: false,
img: TestImg,
img: TestImg
},
{
title: "Администрирование проектов",
link: "/registration-candidate",
description: "DevOps ELK Kubernetes Docker Bash Apache Oracle Git",
available: false,
img: AdminImg,
img: AdminImg
},
{
title: "Управление проектом",
link: "/registration-candidate",
description: "Scrum Kanban Agile Miro CustDev",
available: false,
img: ManageImg,
img: ManageImg
},
{
title: "Копирайтинг проектов",
link: "/registration-candidate",
description: "Теги Заголовок H1 Дескриптор Абзац Сценарий",
available: false,
img: CopyImg,
img: CopyImg
},
{
title: "Реклама и SMM",
@@ -103,8 +103,8 @@ export const AuthForCandidate = () => {
description:
"Java PHP Python C# React Vue.js NodeJs Golang Ruby JavaScript",
available: false,
img: SmmImg,
},
img: SmmImg
}
]);
useEffect(() => {
+8 -8
View File
@@ -21,33 +21,33 @@ export const Blog = () => {
{
image: cardImg1,
title: "Аутстаффинг джунов: почему это выгодно",
data: "1 марта, 2023",
data: "1 марта, 2023"
},
{
image: cardImg2,
title: "Аутстаффинг джунов: почему это выгодно",
data: "1 марта, 2023",
data: "1 марта, 2023"
},
{
image: cardImg3,
title: "Аутстаффинг джунов: почему это выгодно",
data: "1 марта, 2023",
data: "1 марта, 2023"
},
{
image: cardImg4,
title: "Аутстаффинг джунов: почему это выгодно",
data: "1 марта, 2023",
data: "1 марта, 2023"
},
{
image: cardImg5,
title: "Аутстаффинг джунов: почему это выгодно",
data: "1 марта, 2023",
data: "1 марта, 2023"
},
{
image: cardImg6,
title: "Аутстаффинг джунов: почему это выгодно",
data: "1 марта, 2023",
},
data: "1 марта, 2023"
}
]);
return (
@@ -60,7 +60,7 @@ export const Blog = () => {
<ProfileBreadcrumbs
links={[
{ name: "Главная", link: "/auth" },
{ name: "Блог", link: "/blog" },
{ name: "Блог", link: "/blog" }
]}
/>
</div>
+2 -2
View File
@@ -5,7 +5,7 @@ import { Navigate, useNavigate, useParams } from "react-router-dom";
import {
currentCandidate,
selectCurrentCandidate,
selectCurrentCandidate
} from "@redux/outstaffingSlice";
import { LEVELS, SKILLS } from "@utils/constants";
@@ -39,7 +39,7 @@ const FormPage = () => {
useEffect(() => {
if (!candidate.id) {
apiRequest("/profile", {
params: Number(params.id),
params: Number(params.id)
}).then((el) => dispatch(currentCandidate(el)));
}
}, []);
@@ -17,7 +17,7 @@ export const FrequentlyAskedQuestion = () => {
id: params.id,
title: "Это фриланс-платформа?",
answer:
"Нет, мы работаем только с юридическими лицами и индивидуальными предпринимателями и тщательно проверяем своих партнеров. Партнерами являются агентства, которые специализируются на оказании услуг в формате аутстафф-модели и обладают глубокой экспертизой в разработке и внедрении IT-проектов.",
"Нет, мы работаем только с юридическими лицами и индивидуальными предпринимателями и тщательно проверяем своих партнеров. Партнерами являются агентства, которые специализируются на оказании услуг в формате аутстафф-модели и обладают глубокой экспертизой в разработке и внедрении IT-проектов."
});
useEffect(() => {
@@ -34,12 +34,12 @@ export const FrequentlyAskedQuestion = () => {
{ name: "Главная", link: "/auth" },
{
name: "FAQ (часто задаваемые вопросы)",
link: "/frequently-asked-questions",
link: "/frequently-asked-questions"
},
{
name: question.title,
link: `/frequently-asked-question/${params.id}`,
},
link: `/frequently-asked-question/${params.id}`
}
]}
/>
<div className="frequently-asked-question__title">{question.title}</div>
@@ -17,55 +17,55 @@ export const FrequentlyAskedQuestions = () => {
questions: [
{
id: 1,
title: "Это фриланс-платформа?",
title: "Это фриланс-платформа?"
},
{
id: 2,
title:
"Чем вы отличаетесь от традиционного процесса выбора исполнителя?",
"Чем вы отличаетесь от традиционного процесса выбора исполнителя?"
},
{
id: 3,
title: "Это фриланс-платформа?",
title: "Это фриланс-платформа?"
},
{
id: 4,
title:
"Чем вы отличаетесь от традиционного процесса выбора исполнителя?",
},
],
"Чем вы отличаетесь от традиционного процесса выбора исполнителя?"
}
]
},
{
title: "Поиск специалиста",
questions: [
{
id: 11,
title: "Это фриланс-платформа?",
title: "Это фриланс-платформа?"
},
{
id: 22,
title:
"Чем вы отличаетесь от традиционного процесса выбора исполнителя?",
"Чем вы отличаетесь от традиционного процесса выбора исполнителя?"
},
{
id: 33,
title: "Это фриланс-платформа?",
title: "Это фриланс-платформа?"
},
{
id: 44,
title:
"Чем вы отличаетесь от традиционного процесса выбора исполнителя?",
},
],
"Чем вы отличаетесь от традиционного процесса выбора исполнителя?"
}
]
},
{
title: "Бронирование специалиста",
questions: [
{
id: 11,
title: "Это фриланс-платформа?",
},
],
title: "Это фриланс-платформа?"
}
]
},
{
title: "Работа с выбранным специалистом",
@@ -73,10 +73,10 @@ export const FrequentlyAskedQuestions = () => {
{
id: 11,
title:
"Чем вы отличаетесь от традиционного процесса выбора исполнителя?",
},
],
},
"Чем вы отличаетесь от традиционного процесса выбора исполнителя?"
}
]
}
];
return (
@@ -90,8 +90,8 @@ export const FrequentlyAskedQuestions = () => {
{ name: "Главная", link: "/auth" },
{
name: "FAQ (часто задаваемые вопросы)",
link: "/frequently-asked-questions",
},
link: "/frequently-asked-questions"
}
]}
/>
<div className="frequently-asked-questions__about">
+2 -2
View File
@@ -26,7 +26,7 @@ const Home = () => {
useEffect(() => {
setIsLoadingMore(true);
apiRequest("/profile", {
params: { limit: 1000 },
params: { limit: 1000 }
}).then((profileArr) => {
dispatch(profiles(profileArr));
setIsLoadingMore(false);
@@ -63,7 +63,7 @@ const Home = () => {
links={[
{ name: "Главная", link: "/profile" },
{ name: "Запросы и открытые позиции", link: "/profile/requests" },
{ name: "Каталог", link: "/profile/catalog" },
{ name: "Каталог", link: "/profile/catalog" }
]}
/>
<h2 className="catalog__title">Каталог специалистов</h2>
@@ -73,12 +73,12 @@ export const PartnerAddRequest = () => {
) {
setInputs({
title: partnerRequestInfo.title,
description: partnerRequestInfo.descr,
description: partnerRequestInfo.descr
});
setSelectedSpecialization(partnerRequestInfo.position);
setSelectedLevel({
name: partnerRequestInfo.level,
id: partnerRequestInfo.knowledge_level_id,
id: partnerRequestInfo.knowledge_level_id
});
setSelectedCount(partnerRequestInfo.specialist_count);
setSelectedSkills(partnerRequestInfo.skills);
@@ -115,8 +115,8 @@ export const PartnerAddRequest = () => {
descr: inputs.description,
skill_ids: selectedSkills.map((skill) => {
return skill.id;
}),
},
})
}
}).then(() => {
navigate("/profile/requests");
});
@@ -133,8 +133,8 @@ export const PartnerAddRequest = () => {
descr: inputs.description,
skill_ids: selectedSkills.map((skill) => {
return skill.id;
}),
},
})
}
}).then(() => {
navigate("/profile/requests");
});
@@ -154,8 +154,8 @@ export const PartnerAddRequest = () => {
name: `${
editRequest ? "Редактирование заявки" : "Создание новой заявки"
}`,
link: "/profile/add-request",
},
link: "/profile/add-request"
}
]}
/>
<h2 className="partnerAddRequest__title">
@@ -175,7 +175,7 @@ export const PartnerAddRequest = () => {
onChange={(e) =>
setInputs((prevValue) => ({
...prevValue,
title: e.target.value,
title: e.target.value
}))
}
type="text"
@@ -242,7 +242,7 @@ export const PartnerAddRequest = () => {
setSkills((prevArray) => [...prevArray, skill]);
setFilteredSkills((prevArray) => [
...prevArray,
skill,
skill
]);
setSelectedSkills(
selectedSkills.filter((skill, indexSkill) => {
@@ -277,7 +277,7 @@ export const PartnerAddRequest = () => {
onClick={() => {
setSelectedSkills((prevArray) => [
...prevArray,
skill,
skill
]);
setFilteredSkills(
filteredSkills.filter((skill, skillIndex) => {
@@ -343,7 +343,7 @@ export const PartnerAddRequest = () => {
onChange={(e) =>
setInputs((prevValue) => ({
...prevValue,
description: e.target.value,
description: e.target.value
}))
}
/>
+5 -5
View File
@@ -6,7 +6,7 @@ import {
getPartnerRequestId,
getPartnerRequests,
setPartnerRequestId,
setPartnerRequestInfo,
setPartnerRequestInfo
} from "@redux/outstaffingSlice";
import { urlForLocal } from "@utils/helper";
@@ -57,8 +57,8 @@ export const PartnerBid = () => {
data: {
user_id: localStorage.getItem("id"),
request_id: requestId,
status: 0,
},
status: 0
}
}).then(() => {
navigate("/profile/requests");
});
@@ -71,7 +71,7 @@ export const PartnerBid = () => {
1: "Junior",
2: "Middle",
3: "Middle+",
4: "Senior",
4: "Senior"
});
return (
<div className="partnerBid">
@@ -107,7 +107,7 @@ export const PartnerBid = () => {
links={[
{ name: "Главная", link: "/profile" },
{ name: "Запросы и открытые позиции", link: "/profile/requests" },
{ name: "Просмотр заявки - PHP разработчик", link: "/profile/bid" },
{ name: "Просмотр заявки - PHP разработчик", link: "/profile/bid" }
]}
/>
<h2 className="partnerBid__title">Страница заявки </h2>
@@ -33,8 +33,8 @@ export const PartnerEmployees = () => {
{ name: "Данные моего персонала", link: "/profile/categories" },
{
name: "Backend разработчики",
link: "/profile/categories/employees",
},
link: "/profile/categories/employees"
}
]}
/>
<h2 className="partnerEmployees__title">Backend разработчики</h2>
@@ -4,7 +4,7 @@ import { Link, Navigate } from "react-router-dom";
import {
setPartnerRequestId,
setPartnerRequests,
setPartnerRequests
} from "@redux/outstaffingSlice";
import { apiRequest } from "@api/request";
@@ -48,7 +48,7 @@ export const PartnerRequests = () => {
<ProfileBreadcrumbs
links={[
{ name: "Главная", link: "/profile" },
{ name: "Запросы и открытые позиции", link: "/profile/requests" },
{ name: "Запросы и открытые позиции", link: "/profile/requests" }
]}
/>
<h2 className="partnerRequests__title">Запросы</h2>
+17 -17
View File
@@ -21,12 +21,12 @@ export const PartnerSettings = () => {
const [inputsValue, setInputsValue] = useState({
name: "",
oldPassword: "",
password: "",
password: ""
});
const [inputsError, setInputsError] = useState({
name: false,
password: false,
password: false
});
const [loader, setLoader] = useState(false);
@@ -44,37 +44,37 @@ export const PartnerSettings = () => {
apiRequest("/user/change-personal-data", {
method: "PUT",
data: {
newUsername: inputsValue.name,
},
newUsername: inputsValue.name
}
}).then((data) => {
apiRequest("/user/change-password", {
method: "PUT",
data: {
password: inputsValue.oldPassword,
newPassword: inputsValue.password,
},
newPassword: inputsValue.password
}
}).then((data) => {
setLoader(false);
if (data.status === "success") {
setInputsError({
name: false,
password: false,
password: false
});
setInputsValue({
name: "",
oldPassword: "",
password: "",
password: ""
});
showNotification({
show: true,
text: "Данные изменены",
type: "success",
type: "success"
});
} else {
showNotification({
show: true,
text: "Неверные данные",
type: "error",
type: "error"
});
}
});
@@ -88,7 +88,7 @@ export const PartnerSettings = () => {
<ProfileBreadcrumbs
links={[
{ name: "Главная", link: "/profile" },
{ name: "Настройки", link: "/profile/settings" },
{ name: "Настройки", link: "/profile/settings" }
]}
/>
<div className="partner-settings">
@@ -105,11 +105,11 @@ export const PartnerSettings = () => {
onChange={(e) => {
setInputsValue((prevValue) => ({
...prevValue,
name: e.target.value,
name: e.target.value
}));
setInputsError((prevValue) => ({
...prevValue,
name: false,
name: false
}));
}}
value={inputsValue.name}
@@ -128,11 +128,11 @@ export const PartnerSettings = () => {
onChange={(e) => {
setInputsValue((prevValue) => ({
...prevValue,
oldPassword: e.target.value,
oldPassword: e.target.value
}));
setInputsError((prevValue) => ({
...prevValue,
password: false,
password: false
}));
}}
value={inputsValue.oldPassword}
@@ -149,11 +149,11 @@ export const PartnerSettings = () => {
onChange={(e) => {
setInputsValue((prevValue) => ({
...prevValue,
password: e.target.value,
password: e.target.value
}));
setInputsError((prevValue) => ({
...prevValue,
password: false,
password: false
}));
}}
value={inputsValue.password}
+1 -1
View File
@@ -31,7 +31,7 @@ export const PartnerTreaties = () => {
<ProfileBreadcrumbs
links={[
{ name: "Главная", link: "/profile" },
{ name: "Договора и отчетность", link: "/profile/treaties" },
{ name: "Договора и отчетность", link: "/profile/treaties" }
]}
/>
<h2 className="treaties__title">Договора и отчетность</h2>
@@ -37,7 +37,7 @@ export const PartnerCategories = () => {
description:
"Java PHP Python C# React Vue.js NodeJs Golang Ruby JavaScript",
available: true,
img: BackEndImg,
img: BackEndImg
},
{
title: "Frontend разработчики",
@@ -45,14 +45,14 @@ export const PartnerCategories = () => {
description:
"Java PHP Python C# React Vue.js NodeJs Golang Ruby JavaScript",
available: true,
img: FrontendImg,
img: FrontendImg
},
{
title: "Архитектура проектов",
link: "/profile/categories/employees",
description: "Потоки данных ER ERP CRM CQRS UML BPMN",
available: true,
img: ArchitectureImg,
img: ArchitectureImg
},
{
title: "Дизайн проектов",
@@ -60,35 +60,35 @@ export const PartnerCategories = () => {
description:
"Java PHP Python C# React Vue.js NodeJs Golang Ruby JavaScript",
available: true,
img: DesignImg,
img: DesignImg
},
{
title: "Тестирование проектов",
link: "/profile/add-request",
description: "SQL Postman TestRail Kibana Ручное тестирование",
available: false,
img: TestImg,
img: TestImg
},
{
title: "Администрирование проектов",
link: "/profile/add-request",
description: "DevOps ELK Kubernetes Docker Bash Apache Oracle Git",
available: false,
img: AdminImg,
img: AdminImg
},
{
title: "Управление проектом",
link: "/profile/add-request",
description: "Scrum Kanban Agile Miro CustDev",
available: false,
img: ManageImg,
img: ManageImg
},
{
title: "Копирайтинг проектов",
link: "/profile/add-request",
description: "Теги Заголовок H1 Дескриптор Абзац Сценарий",
available: false,
img: CopyImg,
img: CopyImg
},
{
title: "Реклама и SMM",
@@ -96,8 +96,8 @@ export const PartnerCategories = () => {
description:
"Java PHP Python C# React Vue.js NodeJs Golang Ruby JavaScript",
available: false,
img: SmmImg,
},
img: SmmImg
}
]);
const [mokPersons] = useState([
@@ -109,7 +109,7 @@ export const PartnerCategories = () => {
project: "Админка НВД Консалтинг",
tasks_in_progress: 5,
month_hours: 140,
id: 1,
id: 1
},
{
personAvatar: avatarImg,
@@ -119,7 +119,7 @@ export const PartnerCategories = () => {
project: "Админка НВД Консалтинг",
tasks_in_progress: 5,
month_hours: 140,
id: 2,
id: 2
},
{
personAvatar: avatarImg,
@@ -129,8 +129,8 @@ export const PartnerCategories = () => {
project: "Админка НВД Консалтинг",
tasks_in_progress: 5,
month_hours: 140,
id: 3,
},
id: 3
}
]);
return (
<div className="partnerCategories">
@@ -140,7 +140,7 @@ export const PartnerCategories = () => {
<ProfileBreadcrumbs
links={[
{ name: "Главная", link: "/profile" },
{ name: "Данные моего персонала", link: "/profile/categories" },
{ name: "Данные моего персонала", link: "/profile/categories" }
]}
/>
<h2 className="partnerCategories__title">Данные персонала</h2>
+13 -13
View File
@@ -31,32 +31,32 @@ export const Profile = () => {
path: "profile/calendar",
img: reportsIcon,
title: "Ваша отчетность",
description: "<span></span>Отработанных в этом месяце часов",
description: "<span></span>Отработанных в этом месяце часов"
},
{
path: "profile/summary",
img: summaryIcon,
title: "Резюме",
description: "Ваше резюме<br/><span>заполнено</span>",
description: "Ваше резюме<br/><span>заполнено</span>"
},
{
path: "profile/tracker",
img: timerIcon,
title: "Трекер времени",
description: "Сколько времени занимает<br/> выполнение задач",
description: "Сколько времени занимает<br/> выполнение задач"
},
{
path: "profile/payouts",
img: paymentIcon,
title: "Выплаты",
description: "У вас <span>подтвержден</span><br/> статус самозанятого",
description: "У вас <span>подтвержден</span><br/> статус самозанятого"
},
{
path: "profile/settings",
img: settingIcon,
title: "Настройки профиля",
description: "Перейдите чтобы начать<br/> редактирование",
},
description: "Перейдите чтобы начать<br/> редактирование"
}
],
partner: [
{
@@ -64,33 +64,33 @@ export const Profile = () => {
img: reportsIcon,
title: "Запросы и открытые позиции",
description:
"<span>У вас 2 вакансии<br/></span>открытые от лица компании",
"<span>У вас 2 вакансии<br/></span>открытые от лица компании"
},
{
path: "profile/categories",
img: summaryIcon,
title: "Данные персонала",
description: "Наши специалисты <br/><span>уже работающие у вас</span>",
description: "Наши специалисты <br/><span>уже работающие у вас</span>"
},
{
path: "profile/tracker",
img: timerIcon,
title: "Трекер времени",
description: "Контроль времени и<br/> выполнение задач",
description: "Контроль времени и<br/> выполнение задач"
},
{
path: "profile/treaties",
img: paymentIcon,
title: "Договора и отчетность",
description: "Ключевые условия<br/> договора",
description: "Ключевые условия<br/> договора"
},
{
path: "profile/settings",
img: settingIcon,
title: "Настройки профиля",
description: "Перейдите чтобы начать<br/> редактирование",
},
],
description: "Перейдите чтобы начать<br/> редактирование"
}
]
});
return (
@@ -20,14 +20,14 @@ export const ProfileCandidate = () => {
path: "quiz",
img: reportsIcon,
title: "Мои тесты",
description: "<span>У вас 122 часа<br/></span>отработанных в этом месяце",
description: "<span>У вас 122 часа<br/></span>отработанных в этом месяце"
},
{
path: "profile/settings",
img: settingIcon,
title: "Настройки профиля",
description: "Перейдите чтобы начать редактирование",
},
description: "Перейдите чтобы начать редактирование"
}
]);
return (
<div className="profile-candidate">
+41 -41
View File
@@ -20,7 +20,7 @@ import {
setColumnName,
setColumnPriority,
setProjectBoardFetch,
setToggleTab,
setToggleTab
} from "@redux/projectsTrackerSlice";
import { urlForLocal } from "@utils/helper";
@@ -73,7 +73,7 @@ export const ProjectTracker = () => {
const [tags, setTags] = useState({
open: false,
add: false,
edit: false,
edit: false
});
const [acceptModalOpen, setAcceptModalOpen] = useState(false);
const [currentColumnDelete, setCurrentColumnDelete] = useState(null);
@@ -93,13 +93,13 @@ export const ProjectTracker = () => {
const priority = {
2: "Высокий",
1: "Средний",
0: "Низкий",
0: "Низкий"
};
const priorityClass = {
2: "high",
1: "middle",
0: "low",
0: "low"
};
useEffect(() => {
@@ -117,7 +117,7 @@ export const ProjectTracker = () => {
if (column.tasks.length) columnsTasksEmpty = false;
setOpenColumnSelect((prevState) => ({
...prevState,
[column.id]: false,
[column.id]: false
}));
columnHover[column.id] = false;
column.tasks.forEach((task) => (tasksHover[task.id] = false));
@@ -154,7 +154,7 @@ export const ProjectTracker = () => {
function dragEndTaskHandler() {
setTaskHover((prevState) => ({ [prevState]: false }));
setWrapperHover((prevState) => ({
[prevState]: false,
[prevState]: false
}));
}
@@ -168,7 +168,7 @@ export const ProjectTracker = () => {
movePositionProjectTask({
startTask: startWrapperIndexTest.current.task,
finishTask: task,
finishIndex: finishTask,
finishIndex: finishTask
})
);
}
@@ -184,7 +184,7 @@ export const ProjectTracker = () => {
setWrapperHover((prevState) => ({
[prevState]: false,
[columnId]: true,
[columnId]: true
}));
}
@@ -192,7 +192,7 @@ export const ProjectTracker = () => {
e.preventDefault();
setWrapperHover((prevState) => ({
[prevState]: false,
[prevState]: false
}));
if (
@@ -206,7 +206,7 @@ export const ProjectTracker = () => {
dispatch(
moveProjectTask({
startWrapperIndex: startWrapperIndexTest.current,
columnId,
columnId
})
);
}
@@ -234,14 +234,14 @@ export const ProjectTracker = () => {
data: {
column_id: column.id,
project_id: projectBoard.id,
status: 0,
},
status: 0
}
}).then(() => {
if (column.priority < projectBoard.columns.length) {
for (let i = column.priority; i < projectBoard.columns.length; i++) {
const currentColumn = {
column_id: projectBoard.columns[i].id,
priority: i,
priority: i
};
priorityColumns.push(currentColumn);
}
@@ -249,8 +249,8 @@ export const ProjectTracker = () => {
method: "POST",
data: {
project_id: projectBoard.id,
data: JSON.stringify(priorityColumns),
},
data: JSON.stringify(priorityColumns)
}
}).then(() => {
dispatch(setProjectBoardFetch(projectBoard.id));
});
@@ -266,8 +266,8 @@ export const ProjectTracker = () => {
method: "DELETE",
data: {
project_id: projectBoard.id,
user_id: userId,
},
user_id: userId
}
}).then(() => {
dispatch(deletePersonOnProject(userId));
});
@@ -316,21 +316,21 @@ export const ProjectTracker = () => {
title: tagInfo.description,
slug: tagInfo.name,
color: color,
status: 1,
},
status: 1
}
}).then((data) => {
apiRequest("/mark/attach", {
method: "POST",
data: {
mark_id: data.id,
entity_type: 1,
entity_id: projectId.id,
},
entity_id: projectId.id
}
}).then((data) => {
dispatch(addNewTagToProject(data.mark));
setTags((prevState) => ({
...prevState,
add: false,
add: false
}));
});
});
@@ -343,13 +343,13 @@ export const ProjectTracker = () => {
mark_id: tagInfo.editMarkId,
title: tagInfo.description,
slug: tagInfo.name,
color: color,
},
color: color
}
}).then(() => {
dispatch(setProjectBoardFetch(projectId.id));
setTags((prevState) => ({
...prevState,
edit: false,
edit: false
}));
setTagInfo({ description: "", name: "" });
setColor("#aabbcc");
@@ -362,8 +362,8 @@ export const ProjectTracker = () => {
data: {
mark_id: tagId,
entity_type: 1,
entity_id: projectId.id,
},
entity_id: projectId.id
}
}).then(() => {
dispatch(deleteTagProject(tagId));
});
@@ -412,11 +412,11 @@ export const ProjectTracker = () => {
setTags({
open: false,
add: false,
edit: false,
edit: false
});
setTagInfo({
description: "",
name: "",
name: ""
});
setColor("#aabbcc");
}
@@ -453,7 +453,7 @@ export const ProjectTracker = () => {
<ProfileBreadcrumbs
links={[
{ name: "Главная", link: "/profile" },
{ name: "Трекер", link: "/profile/tracker" },
{ name: "Трекер", link: "/profile/tracker" }
]}
/>
<h2 className="tracker__title">Управление проектами с трекером</h2>
@@ -705,7 +705,7 @@ export const ProjectTracker = () => {
onClick={() => {
setTags((prevState) => ({
...prevState,
open: !tags.open,
open: !tags.open
}));
}}
>
@@ -719,7 +719,7 @@ export const ProjectTracker = () => {
onClick={() =>
setTags((prevState) => ({
...prevState,
add: true,
add: true
}))
}
>
@@ -751,12 +751,12 @@ export const ProjectTracker = () => {
onClick={() => {
setTags((prevState) => ({
...prevState,
edit: true,
edit: true
}));
setTagInfo({
description: tag.title,
name: tag.slug,
editMarkId: tag.id,
editMarkId: tag.id
});
setColor(tag.color);
}}
@@ -784,11 +784,11 @@ export const ProjectTracker = () => {
setTags((prevState) => ({
...prevState,
add: false,
edit: false,
edit: false
}));
setTagInfo({
description: "",
name: "",
name: ""
});
setColor("#aabbcc");
}}
@@ -801,7 +801,7 @@ export const ProjectTracker = () => {
onChange={(e) =>
setTagInfo((prevState) => ({
...prevState,
description: e.target.value,
description: e.target.value
}))
}
/>
@@ -813,7 +813,7 @@ export const ProjectTracker = () => {
onChange={(e) =>
setTagInfo((prevState) => ({
...prevState,
name: e.target.value,
name: e.target.value
}))
}
/>
@@ -890,7 +890,7 @@ export const ProjectTracker = () => {
onClick={() => {
setOpenColumnSelect((prevState) => ({
...prevState,
[column.id]: true,
[column.id]: true
}));
}}
className="more"
@@ -906,7 +906,7 @@ export const ProjectTracker = () => {
onClick={() => {
setOpenColumnSelect((prevState) => ({
...prevState,
[column.id]: false,
[column.id]: false
}));
dispatch(modalToggle("editColumn"));
dispatch(setColumnName(column.title));
@@ -970,7 +970,7 @@ export const ProjectTracker = () => {
</div>
<p
dangerouslySetInnerHTML={{
__html: task.description,
__html: task.description
}}
className="tasks__board__item__description"
></p>
@@ -15,13 +15,13 @@ const tasks = [
{
index: 1,
text: "Задача «67 – Навигационная система – Главное меню – Обновить иконки» заблокирована из-за отсутствия новых иконок",
hours: 3,
hours: 3
},
{
index: 2,
text: "Задача «83 – Навигационная система – Поиск по почтовому индексу – Добавить экран поиска по почтовому индексу» не может быть завершена, т.к. работа над задачей «82 – Навигационная система – Разработать модуль поиска по почтовому индексу» ещё не начата",
hours: 3,
},
hours: 3
}
];
const SingleReportPage = () => {
+6 -6
View File
@@ -29,29 +29,29 @@ const Statistics = () => {
name: "Дмитрий Рогов",
email: "dmitryi.zavadskyi@yandex.ru",
role: "Программист",
status: true,
status: true
},
{
avatar: mockAvatar,
name: "Марина Орехова",
email: "dmitryi.zavadskyi@yandex.ru",
role: "Менеджер",
status: true,
status: true
},
{
avatar: mockAvatar,
name: "Тамара Доценко",
email: "dmitryi.zavadskyi@yandex.ru51515188151",
role: "Тестировщик",
status: false,
status: false
},
{
avatar: mockAvatar,
name: "Кек Лолов",
email: "dm4124gmail.com",
role: "PM",
status: false,
},
status: false
}
];
const toggleTabs = (index) => {
@@ -66,7 +66,7 @@ const Statistics = () => {
<ProfileBreadcrumbs
links={[
{ name: "Главная", link: "/profile" },
{ name: "Трекер", link: "/profile/tracker" },
{ name: "Трекер", link: "/profile/tracker" }
]}
/>
<h2 className="tracker__title">Управление проектами с трекером</h2>
+9 -9
View File
@@ -60,9 +60,9 @@ export const Summary = () => {
method: "PUT",
data: {
UserCard: {
skill: selectedSkills.map((item) => item.skill_id),
},
},
skill: selectedSkills.map((item) => item.skill_id)
}
}
}).then(() => {});
}
@@ -70,8 +70,8 @@ export const Summary = () => {
apiRequest("/resume/edit-text", {
method: "PUT",
data: {
resume: summery,
},
resume: summery
}
}).then(() => {});
}
return (
@@ -83,7 +83,7 @@ export const Summary = () => {
<ProfileBreadcrumbs
links={[
{ name: "Главная", link: "/profile" },
{ name: "Резюме", link: "/profile/summary" },
{ name: "Резюме", link: "/profile/summary" }
]}
/>
<h2 className="summary__title">
@@ -175,7 +175,7 @@ export const Summary = () => {
onClick={() =>
setSelectedSkills((prevValue) => [
...prevValue,
{ skill: skill, skill_id: skill.id },
{ skill: skill, skill_id: skill.id }
])
}
key={skill.id}
@@ -235,8 +235,8 @@ export const Summary = () => {
"ImageToolbar",
"ImageUpload",
"MediaEmbed",
"BlockQuote",
],
"BlockQuote"
]
}}
onChange={(event, editor) => {
const data = editor.getData();
+2 -2
View File
@@ -6,7 +6,7 @@ import {
getToggleTab,
modalToggle,
setAllProjects,
setToggleTab,
setToggleTab
} from "@redux/projectsTrackerSlice";
import { caseOfNum } from "@utils/helper";
@@ -134,7 +134,7 @@ export const Tracker = () => {
<ProfileBreadcrumbs
links={[
{ name: "Главная", link: "/profile" },
{ name: "Трекер", link: "/profile/tracker" },
{ name: "Трекер", link: "/profile/tracker" }
]}
/>
<h2 className="tracker__title">Управление проектами с трекером</h2>
+3 -3
View File
@@ -6,7 +6,7 @@ import { apiRequest } from "@api/request";
import {
getCorrectDate,
getCreatedDate,
hourOfNum,
hourOfNum
} from "@components/Calendar/calendarHelper";
import { Footer } from "@components/Common/Footer/Footer";
import { Loader } from "@components/Common/Loader/Loader";
@@ -57,7 +57,7 @@ export const ViewReport = () => {
const taskInfo = {
hours: task.hours_spent,
task: task.task,
id: task.id,
id: task.id
};
if (task.hours_spent) {
spendTime += Number(task.hours_spent);
@@ -96,7 +96,7 @@ export const ViewReport = () => {
links={[
{ name: "Главная", link: "/profile" },
{ name: "Ваша отчетность", link: "/profile/calendar" },
{ name: "Просмотр отчета за день", link: "/profile/view" },
{ name: "Просмотр отчета за день", link: "/profile/view" }
]}
/>
<h2 className="viewReport__title">
+6 -6
View File
@@ -27,7 +27,7 @@ export const PassingTests = () => {
autoStart: false,
onExpire: () => {
navigate("/quiz");
},
}
});
const onCloseWindow = (e) => {
@@ -43,18 +43,18 @@ export const PassingTests = () => {
{
title: "Зачем?",
description:
"Тесты itguild предназначены для того, чтобы подтверждать навыки, которые вы указали у себя.",
"Тесты itguild предназначены для того, чтобы подтверждать навыки, которые вы указали у себя."
},
{
title: "Почему именно тестирование?",
description:
"Тесты itguild заменяют первое техническое собеседование по любой вакансии.",
"Тесты itguild заменяют первое техническое собеседование по любой вакансии."
},
{
title: "Какие тесты нужно проходить?",
description:
"Здесь все довольно просто — следует проходить тесты по инструментам и навыкам, которыми вы владеете.",
},
"Здесь все довольно просто — следует проходить тесты по инструментам и навыкам, которыми вы владеете."
}
];
function onSwitchTab(e) {
@@ -86,7 +86,7 @@ export const PassingTests = () => {
links={[
{ name: "Главная", link: "/profile-candidate" },
{ name: "Тестирование", link: "/quiz" },
{ name: "Прохождение тестов", link: "/quiz/test" },
{ name: "Прохождение тестов", link: "/quiz/test" }
]}
/>
<div className="passing-tests-page__title main-title">
+11 -11
View File
@@ -36,7 +36,7 @@ export const QuizPage = () => {
description:
"Java PHP Python C# React Vue.js NodeJs Golang Ruby JavaScript",
available: true,
img: BackEndImg,
img: BackEndImg
},
{
title: "Frontend разработчики",
@@ -44,14 +44,14 @@ export const QuizPage = () => {
description:
"Java PHP Python C# React Vue.js NodeJs Golang Ruby JavaScript",
available: true,
img: FrontendImg,
img: FrontendImg
},
{
title: "Архитектура проектов",
link: "/registration-candidate",
description: "Потоки данных ER ERP CRM CQRS UML BPMN",
available: true,
img: ArchitectureImg,
img: ArchitectureImg
},
{
title: "Дизайн проектов",
@@ -59,35 +59,35 @@ export const QuizPage = () => {
description:
"Java PHP Python C# React Vue.js NodeJs Golang Ruby JavaScript",
available: true,
img: DesignImg,
img: DesignImg
},
{
title: "Тестирование проектов",
link: "/registration-candidate",
description: "SQL Postman TestRail Kibana Ручное тестирование",
available: false,
img: TestImg,
img: TestImg
},
{
title: "Администрирование проектов",
link: "/registration-candidate",
description: "DevOps ELK Kubernetes Docker Bash Apache Oracle Git",
available: false,
img: AdminImg,
img: AdminImg
},
{
title: "Управление проектом",
link: "/registration-candidate",
description: "Scrum Kanban Agile Miro CustDev",
available: false,
img: ManageImg,
img: ManageImg
},
{
title: "Копирайтинг проектов",
link: "/registration-candidate",
description: "Теги Заголовок H1 Дескриптор Абзац Сценарий",
available: false,
img: CopyImg,
img: CopyImg
},
{
title: "Реклама и SMM",
@@ -95,8 +95,8 @@ export const QuizPage = () => {
description:
"Java PHP Python C# React Vue.js NodeJs Golang Ruby JavaScript",
available: false,
img: SmmImg,
},
img: SmmImg
}
]);
const userId = localStorage.getItem("id");
const [selectedCategory, setSetSelectedCategory] = useState(false);
@@ -116,7 +116,7 @@ export const QuizPage = () => {
<ProfileBreadcrumbs
links={[
{ name: "Главная", link: "/profile-candidate" },
{ name: "Тестирование", link: "/quiz" },
{ name: "Тестирование", link: "/quiz" }
]}
/>
<div className="quiz-page__title main-title">
+1 -1
View File
@@ -43,7 +43,7 @@ export const QuizReportPage = () => {
links={[
{ name: "Главная", link: "/profile-candidate" },
{ name: "Тестирование", link: "/quiz" },
{ name: "Отчет по тестированию", link: "/quiz/report" },
{ name: "Отчет по тестированию", link: "/quiz/report" }
]}
/>
<div className="quiz-report-page__title main-title">
+3 -3
View File
@@ -1,7 +1,7 @@
import { createSlice } from "@reduxjs/toolkit";
const initialState = {
isLoading: false,
isLoading: false
};
export const loaderSlice = createSlice({
@@ -10,8 +10,8 @@ export const loaderSlice = createSlice({
reducers: {
loading: (state, action) => {
state.isLoading = action.payload;
},
},
}
}
});
export const { loading } = loaderSlice.actions;
+5 -5
View File
@@ -17,8 +17,8 @@ const initialState = {
notification: {
show: false,
text: "",
type: "",
},
type: ""
}
};
export const outstaffingSlice = createSlice({
@@ -72,8 +72,8 @@ export const outstaffingSlice = createSlice({
},
closeNotification: (state) => {
state.notification.show = false;
},
},
}
}
});
export const {
@@ -92,7 +92,7 @@ export const {
setPartnerRequests,
setPartnerRequestInfo,
setNotification,
closeNotification,
closeNotification
} = outstaffingSlice.actions;
export const selectProfiles = (state) => state.outstaffing.profiles;
+14 -14
View File
@@ -10,7 +10,7 @@ const initialState = {
boardLoader: false,
columnName: "",
columnId: 0,
columnPriority: 0,
columnPriority: 0
};
export const setProjectBoardFetch = createAsyncThunk("userInfo", (id) =>
@@ -61,15 +61,15 @@ export const projectsTrackerSlice = createSlice({
if (column.id === action.payload.columnId) {
column.tasks.push({
...action.payload.startWrapperIndex.task,
column_id: column.id,
column_id: column.id
});
apiRequest(`/task/update-task`, {
method: "PUT",
data: {
task_id: action.payload.startWrapperIndex.task.id,
column_id: column.id,
priority: column.tasks.length - 1,
},
priority: column.tasks.length - 1
}
}).then(() => {});
}
if (column.id === action.payload.startWrapperIndex.index) {
@@ -89,20 +89,20 @@ export const projectsTrackerSlice = createSlice({
if (column.id === action.payload.finishTask.column_id) {
column.tasks.splice(action.payload.finishIndex, 0, {
...action.payload.startTask,
column_id: column.id,
column_id: column.id
});
apiRequest(`/task/update-task`, {
method: "PUT",
data: {
task_id: action.payload.startTask.id,
column_id: column.id,
},
column_id: column.id
}
}).then(() => {});
const priorityTasks = [];
column.tasks.forEach((task, index) => {
const curTask = {
task_id: task.id,
priority: index,
priority: index
};
priorityTasks.push(curTask);
});
@@ -110,8 +110,8 @@ export const projectsTrackerSlice = createSlice({
method: "POST",
data: {
data: JSON.stringify(priorityTasks),
column_id: column.id,
},
column_id: column.id
}
}).then(() => {});
}
});
@@ -162,14 +162,14 @@ export const projectsTrackerSlice = createSlice({
},
modalToggle: (state, action) => {
state.modalType = action.payload;
},
}
},
extraReducers: {
[setProjectBoardFetch.fulfilled]: (state, action) => {
state.projectBoard = action.payload;
state.boardLoader = false;
},
},
}
}
});
export const {
@@ -192,7 +192,7 @@ export const {
filterCreatedByMe,
filteredParticipateTasks,
filteredExecutorTasks,
movePositionProjectTask,
movePositionProjectTask
} = projectsTrackerSlice.actions;
export const getProjects = (state) => state.tracker.projects;
+4 -4
View File
@@ -8,7 +8,7 @@ const initialState = {
questionnaires: [],
completedTest: false,
selectedTest: {},
result: null,
result: null
};
export const fetchResultTest = createAsyncThunk("result", (uuid) =>
@@ -26,13 +26,13 @@ export const quizSlice = createSlice({
},
setCompleteTest: (state) => {
state.completedTest = true;
},
}
},
extraReducers: {
[fetchResultTest.fulfilled]: (state, action) => {
state.result = action.payload;
},
},
}
}
});
export const { setQuestions } = quizSlice.actions;
+3 -3
View File
@@ -4,7 +4,7 @@ const initialState = {
dateSelected: "",
reportDate: "",
requestDates: "",
sendRequest: "",
sendRequest: ""
};
export const reportSlice = createSlice({
@@ -22,8 +22,8 @@ export const reportSlice = createSlice({
},
setSendRequest: (state, action) => {
state.sendRequest = action.payload;
},
},
}
}
});
export const { dateSelected, setReportDate, setRequestDate, setSendRequest } =
+3 -3
View File
@@ -1,7 +1,7 @@
import { createSlice } from "@reduxjs/toolkit";
const initialState = {
role: null,
role: null
};
export const roleSlice = createSlice({
@@ -10,8 +10,8 @@ export const roleSlice = createSlice({
reducers: {
setRole: (state, action) => {
state.role = action.payload;
},
},
}
}
});
export const { setRole } = roleSlice.actions;
+3 -3
View File
@@ -14,10 +14,10 @@ export const store = configureStore({
role: roleReducer,
report: reportReducer,
tracker: projectsTrackerSlice,
quiz: quizSlice,
quiz: quizSlice
},
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware({
serializableCheck: false,
}),
serializableCheck: false
})
});
+2 -2
View File
@@ -2,7 +2,7 @@ export const LEVELS = {
1: "Junior",
2: "Middle",
3: "Middle+",
4: "Senior",
4: "Senior"
};
export const SKILLS = {
@@ -11,5 +11,5 @@ export const SKILLS = {
3: "Маркетолог",
4: "Smm - специалист",
5: "Дизайнер",
6: "Копирайтер",
6: "Копирайтер"
};
+2 -2
View File
@@ -50,7 +50,7 @@ export const backendImg = (url) => `https://back.itguild.info${url}`;
export function scrollToForm() {
window.scrollTo({
top: 850,
behavior: "smooth",
behavior: "smooth"
});
}
@@ -77,7 +77,7 @@ export function caseOfNum(number, type) {
files: ["файл", "файла", "файлов"],
persons: ["участник", "участника", "участников"],
tasks: ["задача", "задачи", "задач"],
projects: ["проект", "проекта", "проектов"],
projects: ["проект", "проекта", "проектов"]
};
const cases = [2, 0, 1, 1, 1, 2];
return allTypes[type][