zero-ui/frontend/src/utils/ChangeHelper.js
2021-12-16 15:19:28 +03:00

73 lines
1.4 KiB
JavaScript

import { pull } from "lodash";
export function parseValue(
event,
mode = "text",
data = null,
key1 = null,
key2 = null,
id = null
) {
let value;
if (mode === "json") {
value = JSON.parse(event.target.value);
} else if (mode === "checkbox") {
value = event.target.checked;
} else if (mode === "arrayDel") {
value = data[key1][key2];
if (id !== null) {
value.splice(id, 1);
}
} else if (mode === "arrayAdd") {
value = data[key1][key2];
if (id) {
value.push(id);
}
} else if (mode === "custom") {
value = data;
} else if (mode === "capChange") {
value = data[key1][key2];
if (event.target.checked) {
value.push(id);
} else {
pull(value, id);
}
} else if (mode === "tagChange") {
value = data[key1][key2];
let tagValue = event.target.value;
let tagIndex = value.findIndex((item) => {
return item[0] === id;
});
if (tagIndex !== -1) {
value.splice(tagIndex, 1);
}
if (tagValue !== "") {
value.push([id, tagValue]);
}
} else {
value = event.target.value;
}
return value;
}
export function replaceValue(data, key1, key2, value) {
if (key2) {
data[key1][key2] = value;
} else {
data[key1] = value;
}
return data;
}
export function setValue(data, key1, key2, value) {
if (key2) {
data = {
[key1]: { [key2]: value },
};
} else {
data = {
[key1]: value,
};
}
return data;
}