2023-03-23 02:52:49 +03:00

175 lines
3.7 KiB
JavaScript

import React from "react";
import Head from 'next/head';
import Image from 'next/image';
import Link from "next/link";
import cookie from 'cookie';
import { connect } from "react-redux";
import numeral from "numeral";
import pluralize from 'pluralize-ru';
import { SpinnerCircular } from 'spinners-react';
import { getAddress } from '../../../../actions';
import debounce from 'debounce-promise';
import { set as _set, get as _get } from 'lodash';
const suggestsAddressDebounce = (text) =>
{
return getAddress(text);
}
const suggestsAddress = debounce(suggestsAddressDebounce, 500);
export default class QuestionnaireForm extends React.Component
{
_handle_onTextFieldChange = (name, value) =>
{
console.log("QuestionnaireForm", "_handle_onTextFieldChange", { name, value });
const update = { ...this.state };
_set(update, name, value);
/*
if(name.indexOf(".") > -1)
{
const names = name.split(".");
if(names.length === 4)
{
update[ names[0] ] = { ...this.state[ names[0] ] };
update[ names[0] ][ names[1] ][ names[2] ][ names[3] ] = value;
}
else if(names.length === 3)
{
update[ names[0] ] = { ...this.state[ names[0] ] };
update[ names[0] ][ names[1] ][ names[2] ] = value;
}
else
{
update[ names[0] ] = { ...this.state[ names[0] ] };
update[ names[0] ][ names[1] ] = value;
}
}
else
{
update[name] = value;
}
*/
this.setState(update);
}
_handle_onCheckboxFieldChange = (name, value) =>
{
console.log("QuestionnaireForm", "_handle_onCheckboxFieldChange", { name, value });
const update = { ...this.state };
_set(update, name, value);
/*
const update = {};
if(name.indexOf(".") > -1)
{
const names = name.split(".");
if(names.length === 4)
{
update[ names[0] ] = { ...this.state[ names[0] ] };
update[ names[0] ][ names[1] ][ names[2] ][ names[3] ] = value;
}
else if(names.length === 3)
{
update[ names[0] ] = { ...this.state[ names[0] ] };
update[ names[0] ][ names[1] ][ names[2] ] = value;
}
else
{
update[ names[0] ] = { ...this.state[ names[0] ] };
update[ names[0] ][ names[1] ] = value;
}
}
else
{
update[name] = value;
}
*/
this.setState(update);
}
_handle_onAddFile = (name, files) =>
{
console.log("QuestionnaireForm", "_handle_onAdd", { name, files });
const existed_files = [ ..._get(this.state, name) ];
for(let nf in files)
{
let e = false;
for(let ef in existed_files)
{
if(existed_files[ef].name === files[nf].name) { e = true; }
}
if(!e)
{
existed_files.push(files[nf]);
}
}
const update = { ...this.state };
_set(update, name, existed_files);
this.setState(update);
}
_handle_onRemoveFile = (name, file_name) =>
{
console.log("QuestionnaireForm", "_handle_onAdd", { name, files });
const existed_files = [ ..._get(this.state, name) ];
const files = [];
for(let i in existed_files)
{
if(existed_files[i].name !== file_name)
{
files.push(existed_files[i]);
}
}
const update = { ...this.state };
_set(update, name, files);
this.setState(update);
}
}
/*
const state = {
foo: {
bar: {
val: []
},
}
};
console.log(state);
console.log(state);
const name = "foo.bar.val";
const names = name.split(".");
console.log(names);
if(names.length > 0)
{
}
if(names.length === 4)
{
update[ names[0] ] = { ...this.state[ names[0] ] };
update[ names[0] ][ names[1] ][ names[2] ][ names[3] ] = value;
}
else if(names.length === 3)
{
update[ names[0] ] = { ...this.state[ names[0] ] };
update[ names[0] ][ names[1] ][ names[2] ] = value;
}
else
{
update[ names[0] ] = { ...this.state[ names[0] ] };
update[ names[0] ][ names[1] ] = value;
}
*/