@banch0u/core-project-test-repository 2.1.2 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/layout/QuestionnairesSidebar/index.js +19 -3
- package/dist/pages/Questionnnaires/QuestionnairesContractTopicsContent/constant.js +58 -0
- package/dist/pages/Questionnnaires/QuestionnairesContractTopicsContent/index.js +247 -0
- package/dist/pages/Questionnnaires/QuestionnairesContractTypesSubtypesContent/constant.js +58 -0
- package/dist/pages/Questionnnaires/QuestionnairesContractTypesSubtypesContent/index.js +288 -0
- package/dist/pages/Questionnnaires/QuestionnairesVehicleTypesContent/index.js +1 -1
- package/dist/routes/QuestionnaireRoutes.js +13 -1
- package/dist/store/slices/global/index.js +154 -142
- package/dist/store/slices/questionnaire/index.js +695 -277
- package/dist/store/slices/questionnaire/service.js +256 -0
- package/dist/tools/questionnaireGenerator.js +55 -148
- package/dist/utils/path.js +8 -0
- package/package.json +1 -1
|
@@ -7876,4 +7876,260 @@ _defineProperty(Services, "OwnersVisibility", /*#__PURE__*/function () {
|
|
|
7876
7876
|
return _ref416.apply(this, arguments);
|
|
7877
7877
|
};
|
|
7878
7878
|
}());
|
|
7879
|
+
// ---- end generated ----
|
|
7880
|
+
// ---- generated by questionnaireGenerator: ContractTopics ----
|
|
7881
|
+
_defineProperty(Services, "getContractTopics", /*#__PURE__*/function () {
|
|
7882
|
+
var _ref417 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee417(size, page, query, visibility) {
|
|
7883
|
+
var response;
|
|
7884
|
+
return _regeneratorRuntime.wrap(function _callee417$(_context417) {
|
|
7885
|
+
while (1) switch (_context417.prev = _context417.next) {
|
|
7886
|
+
case 0:
|
|
7887
|
+
_context417.next = 2;
|
|
7888
|
+
return api.get("/contracttopics/".concat(size, "/page/").concat(page, "?visibility=").concat(visibility, "&name=").concat(query === null || query === void 0 ? void 0 : query.name));
|
|
7889
|
+
case 2:
|
|
7890
|
+
response = _context417.sent;
|
|
7891
|
+
return _context417.abrupt("return", response === null || response === void 0 ? void 0 : response.data);
|
|
7892
|
+
case 4:
|
|
7893
|
+
case "end":
|
|
7894
|
+
return _context417.stop();
|
|
7895
|
+
}
|
|
7896
|
+
}, _callee417);
|
|
7897
|
+
}));
|
|
7898
|
+
return function (_x635, _x636, _x637, _x638) {
|
|
7899
|
+
return _ref417.apply(this, arguments);
|
|
7900
|
+
};
|
|
7901
|
+
}());
|
|
7902
|
+
_defineProperty(Services, "getContractTopicsAll", /*#__PURE__*/function () {
|
|
7903
|
+
var _ref418 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee418(visibility) {
|
|
7904
|
+
var response;
|
|
7905
|
+
return _regeneratorRuntime.wrap(function _callee418$(_context418) {
|
|
7906
|
+
while (1) switch (_context418.prev = _context418.next) {
|
|
7907
|
+
case 0:
|
|
7908
|
+
_context418.next = 2;
|
|
7909
|
+
return api.get("/contracttopics?visibility=".concat(visibility));
|
|
7910
|
+
case 2:
|
|
7911
|
+
response = _context418.sent;
|
|
7912
|
+
return _context418.abrupt("return", response === null || response === void 0 ? void 0 : response.data);
|
|
7913
|
+
case 4:
|
|
7914
|
+
case "end":
|
|
7915
|
+
return _context418.stop();
|
|
7916
|
+
}
|
|
7917
|
+
}, _callee418);
|
|
7918
|
+
}));
|
|
7919
|
+
return function (_x639) {
|
|
7920
|
+
return _ref418.apply(this, arguments);
|
|
7921
|
+
};
|
|
7922
|
+
}());
|
|
7923
|
+
_defineProperty(Services, "addContractTopics", /*#__PURE__*/function () {
|
|
7924
|
+
var _ref419 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee419(value) {
|
|
7925
|
+
var response;
|
|
7926
|
+
return _regeneratorRuntime.wrap(function _callee419$(_context419) {
|
|
7927
|
+
while (1) switch (_context419.prev = _context419.next) {
|
|
7928
|
+
case 0:
|
|
7929
|
+
_context419.next = 2;
|
|
7930
|
+
return api.post("/contracttopics", value);
|
|
7931
|
+
case 2:
|
|
7932
|
+
response = _context419.sent;
|
|
7933
|
+
return _context419.abrupt("return", response === null || response === void 0 ? void 0 : response.data);
|
|
7934
|
+
case 4:
|
|
7935
|
+
case "end":
|
|
7936
|
+
return _context419.stop();
|
|
7937
|
+
}
|
|
7938
|
+
}, _callee419);
|
|
7939
|
+
}));
|
|
7940
|
+
return function (_x640) {
|
|
7941
|
+
return _ref419.apply(this, arguments);
|
|
7942
|
+
};
|
|
7943
|
+
}());
|
|
7944
|
+
_defineProperty(Services, "editContractTopics", /*#__PURE__*/function () {
|
|
7945
|
+
var _ref420 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee420(data) {
|
|
7946
|
+
var response;
|
|
7947
|
+
return _regeneratorRuntime.wrap(function _callee420$(_context420) {
|
|
7948
|
+
while (1) switch (_context420.prev = _context420.next) {
|
|
7949
|
+
case 0:
|
|
7950
|
+
_context420.next = 2;
|
|
7951
|
+
return api.put("/contracttopics/".concat(data === null || data === void 0 ? void 0 : data.id), data);
|
|
7952
|
+
case 2:
|
|
7953
|
+
response = _context420.sent;
|
|
7954
|
+
return _context420.abrupt("return", response === null || response === void 0 ? void 0 : response.data);
|
|
7955
|
+
case 4:
|
|
7956
|
+
case "end":
|
|
7957
|
+
return _context420.stop();
|
|
7958
|
+
}
|
|
7959
|
+
}, _callee420);
|
|
7960
|
+
}));
|
|
7961
|
+
return function (_x641) {
|
|
7962
|
+
return _ref420.apply(this, arguments);
|
|
7963
|
+
};
|
|
7964
|
+
}());
|
|
7965
|
+
_defineProperty(Services, "deleteContractTopics", /*#__PURE__*/function () {
|
|
7966
|
+
var _ref421 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee421(id) {
|
|
7967
|
+
var response;
|
|
7968
|
+
return _regeneratorRuntime.wrap(function _callee421$(_context421) {
|
|
7969
|
+
while (1) switch (_context421.prev = _context421.next) {
|
|
7970
|
+
case 0:
|
|
7971
|
+
_context421.next = 2;
|
|
7972
|
+
return api["delete"]("/contracttopics/".concat(id));
|
|
7973
|
+
case 2:
|
|
7974
|
+
response = _context421.sent;
|
|
7975
|
+
return _context421.abrupt("return", response === null || response === void 0 ? void 0 : response.data);
|
|
7976
|
+
case 4:
|
|
7977
|
+
case "end":
|
|
7978
|
+
return _context421.stop();
|
|
7979
|
+
}
|
|
7980
|
+
}, _callee421);
|
|
7981
|
+
}));
|
|
7982
|
+
return function (_x642) {
|
|
7983
|
+
return _ref421.apply(this, arguments);
|
|
7984
|
+
};
|
|
7985
|
+
}());
|
|
7986
|
+
_defineProperty(Services, "contractTopicsVisibility", /*#__PURE__*/function () {
|
|
7987
|
+
var _ref422 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee422(data) {
|
|
7988
|
+
var response;
|
|
7989
|
+
return _regeneratorRuntime.wrap(function _callee422$(_context422) {
|
|
7990
|
+
while (1) switch (_context422.prev = _context422.next) {
|
|
7991
|
+
case 0:
|
|
7992
|
+
_context422.next = 2;
|
|
7993
|
+
return api.patch("/contracttopics/".concat(data === null || data === void 0 ? void 0 : data.id, "/visibility/").concat(data === null || data === void 0 ? void 0 : data.checked));
|
|
7994
|
+
case 2:
|
|
7995
|
+
response = _context422.sent;
|
|
7996
|
+
return _context422.abrupt("return", response === null || response === void 0 ? void 0 : response.data);
|
|
7997
|
+
case 4:
|
|
7998
|
+
case "end":
|
|
7999
|
+
return _context422.stop();
|
|
8000
|
+
}
|
|
8001
|
+
}, _callee422);
|
|
8002
|
+
}));
|
|
8003
|
+
return function (_x643) {
|
|
8004
|
+
return _ref422.apply(this, arguments);
|
|
8005
|
+
};
|
|
8006
|
+
}());
|
|
8007
|
+
// ---- end generated ----
|
|
8008
|
+
// ---- generated by questionnaireGenerator: ContractTypesSubtypes ----
|
|
8009
|
+
_defineProperty(Services, "getContractTypesSubtypes", /*#__PURE__*/function () {
|
|
8010
|
+
var _ref423 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee423(size, page, query, visibility, contractTypeId) {
|
|
8011
|
+
var response;
|
|
8012
|
+
return _regeneratorRuntime.wrap(function _callee423$(_context423) {
|
|
8013
|
+
while (1) switch (_context423.prev = _context423.next) {
|
|
8014
|
+
case 0:
|
|
8015
|
+
_context423.next = 2;
|
|
8016
|
+
return api.get("/contracttypes/subtypes/".concat(size, "/page/").concat(page, "?visibility=").concat(visibility, "&contractTypeId=").concat(contractTypeId, "&name=").concat(query === null || query === void 0 ? void 0 : query.name));
|
|
8017
|
+
case 2:
|
|
8018
|
+
response = _context423.sent;
|
|
8019
|
+
return _context423.abrupt("return", response === null || response === void 0 ? void 0 : response.data);
|
|
8020
|
+
case 4:
|
|
8021
|
+
case "end":
|
|
8022
|
+
return _context423.stop();
|
|
8023
|
+
}
|
|
8024
|
+
}, _callee423);
|
|
8025
|
+
}));
|
|
8026
|
+
return function (_x644, _x645, _x646, _x647, _x648) {
|
|
8027
|
+
return _ref423.apply(this, arguments);
|
|
8028
|
+
};
|
|
8029
|
+
}());
|
|
8030
|
+
_defineProperty(Services, "getContractTypesSubtypesAll", /*#__PURE__*/function () {
|
|
8031
|
+
var _ref424 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee424(visibility) {
|
|
8032
|
+
var response;
|
|
8033
|
+
return _regeneratorRuntime.wrap(function _callee424$(_context424) {
|
|
8034
|
+
while (1) switch (_context424.prev = _context424.next) {
|
|
8035
|
+
case 0:
|
|
8036
|
+
_context424.next = 2;
|
|
8037
|
+
return api.get("/contracttypes/subtypes?visibility=".concat(visibility));
|
|
8038
|
+
case 2:
|
|
8039
|
+
response = _context424.sent;
|
|
8040
|
+
return _context424.abrupt("return", response === null || response === void 0 ? void 0 : response.data);
|
|
8041
|
+
case 4:
|
|
8042
|
+
case "end":
|
|
8043
|
+
return _context424.stop();
|
|
8044
|
+
}
|
|
8045
|
+
}, _callee424);
|
|
8046
|
+
}));
|
|
8047
|
+
return function (_x649) {
|
|
8048
|
+
return _ref424.apply(this, arguments);
|
|
8049
|
+
};
|
|
8050
|
+
}());
|
|
8051
|
+
_defineProperty(Services, "addContractTypesSubtypes", /*#__PURE__*/function () {
|
|
8052
|
+
var _ref425 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee425(value) {
|
|
8053
|
+
var response;
|
|
8054
|
+
return _regeneratorRuntime.wrap(function _callee425$(_context425) {
|
|
8055
|
+
while (1) switch (_context425.prev = _context425.next) {
|
|
8056
|
+
case 0:
|
|
8057
|
+
_context425.next = 2;
|
|
8058
|
+
return api.post("/contracttypes/subtypes", value);
|
|
8059
|
+
case 2:
|
|
8060
|
+
response = _context425.sent;
|
|
8061
|
+
return _context425.abrupt("return", response === null || response === void 0 ? void 0 : response.data);
|
|
8062
|
+
case 4:
|
|
8063
|
+
case "end":
|
|
8064
|
+
return _context425.stop();
|
|
8065
|
+
}
|
|
8066
|
+
}, _callee425);
|
|
8067
|
+
}));
|
|
8068
|
+
return function (_x650) {
|
|
8069
|
+
return _ref425.apply(this, arguments);
|
|
8070
|
+
};
|
|
8071
|
+
}());
|
|
8072
|
+
_defineProperty(Services, "editContractTypesSubtypes", /*#__PURE__*/function () {
|
|
8073
|
+
var _ref426 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee426(data) {
|
|
8074
|
+
var response;
|
|
8075
|
+
return _regeneratorRuntime.wrap(function _callee426$(_context426) {
|
|
8076
|
+
while (1) switch (_context426.prev = _context426.next) {
|
|
8077
|
+
case 0:
|
|
8078
|
+
_context426.next = 2;
|
|
8079
|
+
return api.put("/contracttypes/subtypes/".concat(data === null || data === void 0 ? void 0 : data.id), data);
|
|
8080
|
+
case 2:
|
|
8081
|
+
response = _context426.sent;
|
|
8082
|
+
return _context426.abrupt("return", response === null || response === void 0 ? void 0 : response.data);
|
|
8083
|
+
case 4:
|
|
8084
|
+
case "end":
|
|
8085
|
+
return _context426.stop();
|
|
8086
|
+
}
|
|
8087
|
+
}, _callee426);
|
|
8088
|
+
}));
|
|
8089
|
+
return function (_x651) {
|
|
8090
|
+
return _ref426.apply(this, arguments);
|
|
8091
|
+
};
|
|
8092
|
+
}());
|
|
8093
|
+
_defineProperty(Services, "deleteContractTypesSubtypes", /*#__PURE__*/function () {
|
|
8094
|
+
var _ref427 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee427(id) {
|
|
8095
|
+
var response;
|
|
8096
|
+
return _regeneratorRuntime.wrap(function _callee427$(_context427) {
|
|
8097
|
+
while (1) switch (_context427.prev = _context427.next) {
|
|
8098
|
+
case 0:
|
|
8099
|
+
_context427.next = 2;
|
|
8100
|
+
return api["delete"]("/contracttypes/subtypes/".concat(id));
|
|
8101
|
+
case 2:
|
|
8102
|
+
response = _context427.sent;
|
|
8103
|
+
return _context427.abrupt("return", response === null || response === void 0 ? void 0 : response.data);
|
|
8104
|
+
case 4:
|
|
8105
|
+
case "end":
|
|
8106
|
+
return _context427.stop();
|
|
8107
|
+
}
|
|
8108
|
+
}, _callee427);
|
|
8109
|
+
}));
|
|
8110
|
+
return function (_x652) {
|
|
8111
|
+
return _ref427.apply(this, arguments);
|
|
8112
|
+
};
|
|
8113
|
+
}());
|
|
8114
|
+
_defineProperty(Services, "contractTypesSubtypesVisibility", /*#__PURE__*/function () {
|
|
8115
|
+
var _ref428 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee428(data) {
|
|
8116
|
+
var response;
|
|
8117
|
+
return _regeneratorRuntime.wrap(function _callee428$(_context428) {
|
|
8118
|
+
while (1) switch (_context428.prev = _context428.next) {
|
|
8119
|
+
case 0:
|
|
8120
|
+
_context428.next = 2;
|
|
8121
|
+
return api.patch("/contracttypes/subtypes/".concat(data === null || data === void 0 ? void 0 : data.id, "/visibility/").concat(data === null || data === void 0 ? void 0 : data.checked));
|
|
8122
|
+
case 2:
|
|
8123
|
+
response = _context428.sent;
|
|
8124
|
+
return _context428.abrupt("return", response === null || response === void 0 ? void 0 : response.data);
|
|
8125
|
+
case 4:
|
|
8126
|
+
case "end":
|
|
8127
|
+
return _context428.stop();
|
|
8128
|
+
}
|
|
8129
|
+
}, _callee428);
|
|
8130
|
+
}));
|
|
8131
|
+
return function (_x653) {
|
|
8132
|
+
return _ref428.apply(this, arguments);
|
|
8133
|
+
};
|
|
8134
|
+
}());
|
|
7879
8135
|
export default Services;
|
|
@@ -2,7 +2,7 @@ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol
|
|
|
2
2
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
3
3
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
4
4
|
/////////////////////////////// README ///////////////////////////////
|
|
5
|
-
// IN ORDER TO USE THIS SCRIPT YOU
|
|
5
|
+
// IN ORDER TO USE THIS SCRIPT YOU HAVE TO CHANGE DIRECTION INTO
|
|
6
6
|
// /src/ then execute the script
|
|
7
7
|
//////////////////////////////////////////////////////////////////////////
|
|
8
8
|
|
|
@@ -10,25 +10,24 @@ var fs = require("fs");
|
|
|
10
10
|
var path = require("path");
|
|
11
11
|
|
|
12
12
|
////////// === CONFIG === //////////
|
|
13
|
-
var questionnaireName = "
|
|
14
|
-
var constantColumnName = "
|
|
15
|
-
var endpointName = "/
|
|
13
|
+
var questionnaireName = "ContractTypesSubtypes"; // change as needed
|
|
14
|
+
var constantColumnName = "Müqavilə alt növü";
|
|
15
|
+
var endpointName = "/contracttypes/subtypes";
|
|
16
16
|
///////////////////////////////////
|
|
17
17
|
|
|
18
18
|
var upperName = questionnaireName.toUpperCase();
|
|
19
19
|
var pathConstA = "QUESTIONNAIRES_".concat(upperName);
|
|
20
|
-
var pathConstB = "SETTINGS_QUESTIONNAIRES_".concat(upperName);
|
|
21
20
|
|
|
22
21
|
/* ------------------ TEMPLATES ------------------ */
|
|
23
22
|
function lowercaseFirstChar(questionnaireName) {
|
|
24
23
|
if (!questionnaireName) return "";
|
|
25
24
|
return questionnaireName.charAt(0).toLowerCase() + questionnaireName.slice(1);
|
|
26
25
|
}
|
|
27
|
-
var boilerplateTemplate = "import React from \"react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport Cookies from \"js-cookie\";\nimport style from \"../Questionnaires.module.scss\";\nimport { Form, Input, Layout } from \"antd\";\nimport { PlusIcon } from \"../../../assets/icons\";\nimport FormModal from \"../../../components/FormModal\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Delete from \"../../../components/Delete/Delete\";\nimport DeleteModal from \"../../../components/DeleteModal/DeleteModal\";\nimport Success from \"../../../components/Success/Success\";\nimport {\n setDeleteModalVisible,\n setViewModalVisible,\n} from \"../../../store/slices/global\";\nimport ViewModal from \"../../../components/ViewModal\";\nimport { getStreetColumns } from \"./constant\";\n\nimport Pagination from \"../../../components/Pagination\";\nimport ColSort from \"../../../components/ColSort\";\nimport { setPaginationLength } from \"../../../helpers/paginationLength\";\nimport Button from \"../../../components/Button\";\nimport Loading from \"../../../components/Loading\";\nimport Table from \"../../../components/Table\";\nimport Filter from \"../../../components/Filter\";\nimport {\n add".concat(questionnaireName, ",\n delete").concat(questionnaireName, ",\n edit").concat(questionnaireName, ",\n get").concat(questionnaireName, ",\n ").concat(questionnaireName, "Visibility,\n} from \"../../../store/slices/questionnaire\";\n\nconst { Content } = Layout;\nconst { Item } = Form;\nconst Questionnaires").concat(questionnaireName, "Content = () => {\n const [innerW, setInnerW] = useState(null);\n const ref = useRef();\n const dispatch = useDispatch();\n const [id, setId] = useState(0);\n const [page, setPage] = useState(1);\n const [size, setSize] = useState(\n Cookies.get(\"pagination-size-questionnaire-").concat(questionnaireName.toLowerCase(), "\")\n ? JSON.parse(Cookies.get(\"pagination-size-questionnaire-").concat(questionnaireName.toLowerCase(), "\"))\n : 20\n );\n const [query, setQuery] = useState({ name: \"\" });\n const { loading, ").concat(questionnaireName, "Render } = useSelector((state) => state.global);\n\n const ").concat(questionnaireName, " = useSelector(\n (state) => state.questionnaire.").concat(lowercaseFirstChar(questionnaireName), "\n );\n const paginationLength = setPaginationLength(\n ").concat(questionnaireName, "?.count,\n ").concat(questionnaireName, "?.size\n );\n\n const onSubmit = useCallback(\n async (data) => {\n dispatch(add").concat(questionnaireName, "(data));\n },\n [dispatch]\n );\n const onEdit = useCallback(\n (id, record) => {\n const data = {\n id: id,\n name: record?.name,\n };\n dispatch(edit").concat(questionnaireName, "(data));\n },\n [dispatch]\n );\n const onStatusChange = useCallback(\n (data, checked) => {\n const data_ = {\n id: data?.id,\n checked: checked,\n };\n dispatch(").concat(questionnaireName, "Visibility(data_));\n },\n [dispatch]\n );\n const closeOnViewModal = useCallback(() => {\n dispatch(setViewModalVisible(false));\n }, [dispatch]);\n const onClickModal = () => {\n ref?.current?.open();\n };\n const onEditClick = useCallback((data) => {\n ref?.current?.setEdit(data);\n }, []);\n const onDelete = useCallback((id) => {\n setId(id);\n }, []);\n const handleColumnToggle = (checked, dataIndex) => {\n setSelectedColumns((prevSelected) => {\n if (checked) {\n return [...prevSelected, dataIndex];\n } else {\n return prevSelected.filter((col) => col !== dataIndex);\n }\n });\n };\n\n let data = [];\n if (").concat(questionnaireName, "?.items) {\n data = ").concat(questionnaireName, "?.items?.map((dataObj, i) => ({\n num:\n ").concat(questionnaireName, "?.size * ").concat(questionnaireName, "?.page + i + 1 - ").concat(questionnaireName, "?.size,\n id: dataObj?.id,\n name: dataObj?.name,\n isActive: dataObj?.isActive,\n className: \"rowClassName1\",\n }));\n }\n const columns = useMemo(\n () => getStreetColumns(onEditClick, onDelete, onStatusChange, dispatch),\n [onEditClick, onDelete, onStatusChange, dispatch]\n );\n const [selectedColumns, setSelectedColumns] = useState(\n columns.map((col) => col.dataIndex)\n );\n useEffect(() => {\n if (window.innerWidth >= 1900) {\n setInnerW(210);\n } else {\n setInnerW(155);\n }\n const data = {\n page: page,\n size: size,\n query: query,\n visibility: \"nondeleted\",\n };\n dispatch(get").concat(questionnaireName, "(data));\n }, [dispatch, page, ").concat(questionnaireName, "Render, query, size]);\n const updateSize = (newSize) => {\n setSize(newSize)
|
|
26
|
+
var boilerplateTemplate = "import React from \"react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport Cookies from \"js-cookie\";\nimport style from \"../Questionnaires.module.scss\";\nimport { Form, Input, Layout } from \"antd\";\nimport { PlusIcon } from \"../../../assets/icons\";\nimport FormModal from \"../../../components/FormModal\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Delete from \"../../../components/Delete/Delete\";\nimport DeleteModal from \"../../../components/DeleteModal/DeleteModal\";\nimport Success from \"../../../components/Success/Success\";\nimport {\n setDeleteModalVisible,\n setViewModalVisible,\n} from \"../../../store/slices/global\";\nimport ViewModal from \"../../../components/ViewModal\";\nimport { getStreetColumns } from \"./constant\";\n\nimport Pagination from \"../../../components/Pagination\";\nimport ColSort from \"../../../components/ColSort\";\nimport { setPaginationLength } from \"../../../helpers/paginationLength\";\nimport Button from \"../../../components/Button\";\nimport Loading from \"../../../components/Loading\";\nimport Table from \"../../../components/Table\";\nimport Filter from \"../../../components/Filter\";\nimport {\n add".concat(questionnaireName, ",\n delete").concat(questionnaireName, ",\n edit").concat(questionnaireName, ",\n get").concat(questionnaireName, ",\n ").concat(lowercaseFirstChar(questionnaireName), "Visibility,\n} from \"../../../store/slices/questionnaire\";\n\nconst { Content } = Layout;\nconst { Item } = Form;\nconst Questionnaires").concat(questionnaireName, "Content = () => {\n const [innerW, setInnerW] = useState(null);\n const ref = useRef();\n const dispatch = useDispatch();\n const [id, setId] = useState(0);\n const [page, setPage] = useState(1);\n const [size, setSize] = useState(\n Cookies.get(\"pagination-size-questionnaire-").concat(questionnaireName.toLowerCase(), "\")\n ? JSON.parse(Cookies.get(\"pagination-size-questionnaire-").concat(questionnaireName.toLowerCase(), "\"))\n : 20\n );\n const [query, setQuery] = useState({ name: \"\" });\n const { loading, ").concat(questionnaireName, "Render } = useSelector((state) => state.global);\n\n const ").concat(questionnaireName, " = useSelector(\n (state) => state.questionnaire.").concat(lowercaseFirstChar(questionnaireName), "\n );\n const paginationLength = setPaginationLength(\n ").concat(questionnaireName, "?.count,\n ").concat(questionnaireName, "?.size\n );\n\n const onSubmit = useCallback(\n async (data) => {\n dispatch(add").concat(questionnaireName, "(data));\n },\n [dispatch]\n );\n const onEdit = useCallback(\n (id, record) => {\n const data = {\n id: id,\n name: record?.name,\n };\n dispatch(edit").concat(questionnaireName, "(data));\n },\n [dispatch]\n );\n const onStatusChange = useCallback(\n (data, checked) => {\n const data_ = {\n id: data?.id,\n checked: checked,\n };\n dispatch(").concat(lowercaseFirstChar(questionnaireName), "Visibility(data_));\n },\n [dispatch]\n );\n const closeOnViewModal = useCallback(() => {\n dispatch(setViewModalVisible(false));\n }, [dispatch]);\n const onClickModal = () => {\n ref?.current?.open();\n };\n const onEditClick = useCallback((data) => {\n ref?.current?.setEdit(data);\n }, []);\n const onDelete = useCallback((id) => {\n setId(id);\n }, []);\n const handleColumnToggle = (checked, dataIndex) => {\n setSelectedColumns((prevSelected) => {\n if (checked) {\n return [...prevSelected, dataIndex];\n } else {\n return prevSelected.filter((col) => col !== dataIndex);\n }\n });\n };\n\n let data = [];\n if (").concat(questionnaireName, "?.items) {\n data = ").concat(questionnaireName, "?.items?.map((dataObj, i) => ({\n num:\n ").concat(questionnaireName, "?.size * ").concat(questionnaireName, "?.page + i + 1 - ").concat(questionnaireName, "?.size,\n id: dataObj?.id,\n name: dataObj?.name,\n isActive: dataObj?.isActive,\n className: \"rowClassName1\",\n }));\n }\n const columns = useMemo(\n () => getStreetColumns(onEditClick, onDelete, onStatusChange, dispatch),\n [onEditClick, onDelete, onStatusChange, dispatch]\n );\n const [selectedColumns, setSelectedColumns] = useState(\n columns.map((col) => col.dataIndex)\n );\n useEffect(() => {\n if (window.innerWidth >= 1900) {\n setInnerW(210);\n } else {\n setInnerW(155);\n }\n const data = {\n page: page,\n size: size,\n query: query,\n visibility: \"nondeleted\",\n };\n dispatch(get").concat(questionnaireName, "(data));\n }, [dispatch, page, ").concat(questionnaireName, "Render, query, size]);\n const updateSize = (newSize) => {\n setSize(newSize);\n Cookies.set(\n \"pagination-size-questionnaire-").concat(questionnaireName.toLowerCase(), "\",\n JSON.stringify(newSize),\n {\n expires: 7,\n }\n );\n };\n\n return (\n <>\n {loading ? <Loading /> : null}\n <Layout className={style.layout}>\n <Content className={style.content}>\n <header className={style.header}>\n <Button onClick={onClickModal} color=\"green\">\n <PlusIcon /> Soraq\xE7a \u0259lav\u0259 et\n </Button>\n <Filter\n columns={columns}\n selectedColumns={selectedColumns}\n setQuery={setQuery}\n disabledElementCount={3}\n setPage={setPage}\n />\n </header>\n </Content>\n <Layout className={style.layout1}>\n <Content className={style.content}>\n <div className={style.table_header}>\n <h2>").concat(constantColumnName, "</h2>\n <div className={style.buttons}>\n <ColSort\n columns={columns}\n selectedColumns={selectedColumns}\n handleColumnToggle={handleColumnToggle}\n />\n </div>\n </div>\n <div className=\"bigTable\">\n <Table\n selectedColumns={selectedColumns}\n innerW={innerW}\n dataSource={data}\n columns={columns}\n disableDrag={true}\n />\n </div>\n <div className={style.pagination}>\n <Pagination\n size={size}\n setSize={updateSize}\n total={paginationLength}\n page={page}\n onChange={setPage}\n />\n </div>\n <FormModal\n ref={ref}\n width={454}\n title={\"Yeni soraq\xE7a yaratma\"}\n titleEdit={\"Soraq\xE7a redakt\u0259 etm\u0259\"}\n okText={\"Yadda saxla\"}\n cancelText={\"Ba\u011Fla\"}\n onSubmit={onSubmit}\n onEdit={onEdit}\n className={\"absolute\"}\n centered={false}>\n <Item\n rules={[\n { required: true, message: \"\" },\n { min: 3, message: \"\u018Fn az\u0131ndan 3 simvol olmal\u0131d\u0131r\" },\n ]}\n name={\"name\"}\n label={\"Ad\"}>\n <Input className={style.modal_input} />\n </Item>\n </FormModal>\n <DeleteModal\n onCancel={() => dispatch(setDeleteModalVisible(false))}\n width={280}>\n <Delete\n onDelete={() => dispatch(delete").concat(questionnaireName, "(id))}\n onCancel={() => dispatch(setDeleteModalVisible(false))}\n value={\"Soraq\xE7an\u0131\"}\n />\n </DeleteModal>\n <ViewModal onCancel={closeOnViewModal} width={695}>\n {<Success onClick={closeOnViewModal} value={\"Soraq\xE7a\"} />}\n </ViewModal>\n </Content>\n </Layout>\n </Layout>\n </>\n );\n};\n\nexport default Questionnaires").concat(questionnaireName, "Content;\n");
|
|
28
27
|
var constantBoilerplateTemplate = "import * as React from \"react\";\nimport { Switch, Tooltip } from \"antd\";\nimport style from \"../Questionnaires.module.scss\";\nimport { setDeleteModalVisible } from \"../../../store/slices/global\";\nimport { DeleteIconQ, EditIcon } from \"../../../assets/icons\";\n\nexport const getStreetColumns = (\n onEditClick,\n onDelete,\n onStatusChange,\n dispatch,\n innerW\n) => [\n {\n title: \"\u2116\",\n dataIndex: \"num\",\n showCheckbox: false,\n ellipsis: true,\n width: 35,\n },\n {\n title: \"".concat(constantColumnName, "\",\n dataIndex: \"name\",\n width: innerW,\n disabled: true,\n ellipsis: true,\n },\n {\n title: \"Status\",\n key: \"status\",\n disabled: true,\n\n filter: false,\n render: (data) => (\n <Tooltip placement=\"top\" title=\"Statusu d\u0259yi\u015F\">\n <Switch\n size=\"medium\"\n checked={data?.isActive}\n onChange={(checked) => onStatusChange(data, checked, dispatch)}\n />\n </Tooltip>\n ),\n },\n {\n title: \"\",\n key: \"actions\",\n showCheckbox: false,\n width: 80,\n render: (data) => (\n <>\n <div className={style.number}>\n <div className={style.actions}>\n <div onClick={() => onEditClick(data)}>\n <EditIcon />\n </div>\n <div\n onClick={() => {\n onDelete(data?.id);\n dispatch(setDeleteModalVisible(true));\n }}\n >\n <DeleteIconQ />\n </div>\n </div>\n </div>\n </>\n ),\n },\n ];\n");
|
|
29
|
-
var sliceBoilerplateTemplate = "\nexport const get".concat(questionnaireName, " = createAsyncThunk(\n \"/get").concat(questionnaireName, "\",\n async (data, { dispatch }) => {\n try {\n dispatch(setLoading(true));\n const response = await Services.get").concat(questionnaireName, "(\n data.size,\n data.page,\n data.query,\n data.visibility\n );\n dispatch(setLoading(false));\n return response?.data;\n } catch (error) {\n errorMessage(error.response?.data?.message);\n dispatch(setLoading(false));\n }\n }\n);\n\nexport const get").concat(questionnaireName, "All = createAsyncThunk(\n \"/get").concat(questionnaireName, "All\",\n async (visibility, { dispatch }) => {\n try {\n dispatch(setLoading(true));\n const response = await Services.get").concat(questionnaireName, "All(visibility);\n dispatch(setLoading(false));\n return response?.data;\n } catch (error) {\n errorMessage(error.response?.data?.message);\n dispatch(setLoading(false));\n }\n }\n);\n\nexport const add").concat(questionnaireName, " = createAsyncThunk(\n \"/add").concat(questionnaireName, "\",\n async (data, { dispatch }) => {\n try {\n dispatch(setLoading(true));\n await Services.add").concat(questionnaireName, "(data);\n dispatch(setLoading(false));\n dispatch(set").concat(questionnaireName, "Render((prev) => !prev));\n dispatch(setViewModalVisible(true));\n } catch (error) {\n errorMessage(error.response?.data?.message);\n dispatch(setLoading(false));\n }\n }\n);\nexport const edit").concat(questionnaireName, " = createAsyncThunk(\n \"/edit").concat(questionnaireName, "\",\n async (data, { dispatch }) => {\n try {\n dispatch(setLoading(true));\n const response = await Services.edit").concat(questionnaireName, "(data);\n dispatch(setLoading(false));\n dispatch(set").concat(questionnaireName, "Render((prev) => !prev));\n return response?.data;\n } catch (error) {\n errorMessage(error.response?.data?.message);\n dispatch(setLoading(false));\n }\n }\n);\n\nexport const delete").concat(questionnaireName, " = createAsyncThunk(\n \"/delete").concat(questionnaireName, "\",\n async (id, { dispatch }) => {\n try {\n dispatch(setLoading(true));\n await Services.delete").concat(questionnaireName, "(id);\n dispatch(setLoading(false));\n dispatch(setDeleteModalVisible(false));\n dispatch(set").concat(questionnaireName, "Render((prev) => !prev));\n } catch (error) {\n dispatch(setDeleteModalVisible(false));\n errorMessage(error.response?.data?.message);\n dispatch(setLoading(false));\n }\n }\n);\n\nexport const ").concat(questionnaireName, "Visibility = createAsyncThunk(\n \"").concat(questionnaireName, "Visibility\",\n async (data, { dispatch }) => {\n try {\n dispatch(setLoading(true));\n const response = await Services.").concat(questionnaireName, "Visibility(data);\n dispatch(setLoading(false));\n dispatch(set").concat(questionnaireName, "Render((prev) => !prev));\n return response?.data;\n } catch (error) {\n errorMessage(error.response?.data?.message);\n dispatch(setLoading(false));\n }\n }\n);\n\n// ---- end generated ----\n");
|
|
30
|
-
var servicesBoilerplateTemplate = "\n// ---- generated by questionnaireGenerator: ".concat(questionnaireName, " ----\n static get").concat(questionnaireName, " = async (size, page, query, visibility) => {\n const response = await api.get(`").concat(endpointName, "/${size}/page/${page}?visibility=${visibility}&name=${query?.name}`);\n return response?.data;\n };\n static get").concat(questionnaireName, "All = async (visibility) => {\n const response = await api.get(`").concat(endpointName, "?visibility=${visibility}`);\n return response?.data;\n };\n static add").concat(questionnaireName, " = async (value) => {\n const response = await api.post(\"").concat(endpointName, "\", value);\n return response?.data;\n };\n static edit").concat(questionnaireName, " = async (data) => {\n const response = await api.put(`").concat(endpointName, "/${data?.id}`, data);\n return response?.data;\n };\n static delete").concat(questionnaireName, " = async (id) => {\n const response = await api.delete(`").concat(endpointName, "/${id}`);\n return response?.data;\n };\n static ").concat(questionnaireName, "Visibility = async (data) => {\n const response = await api.patch(`").concat(endpointName, "/${data?.id}/visibility/${data?.checked}`);\n return response?.data;\n };\n// ---- end generated ----\n");
|
|
31
|
-
var pathExportsTemplate = "\n// ---- generated by questionnaireGenerator: ".concat(questionnaireName.toUpperCase(), " ----\nexport const ").concat(pathConstA, " = QUESTIONNAIRES + \"").concat(endpointName, "\";\
|
|
28
|
+
var sliceBoilerplateTemplate = "\nexport const get".concat(questionnaireName, " = createAsyncThunk(\n \"/get").concat(questionnaireName, "\",\n async (data, { dispatch }) => {\n try {\n dispatch(setLoading(true));\n const response = await Services.get").concat(questionnaireName, "(\n data.size,\n data.page,\n data.query,\n data.visibility\n );\n dispatch(setLoading(false));\n return response?.data;\n } catch (error) {\n errorMessage(error.response?.data?.message);\n dispatch(setLoading(false));\n }\n }\n);\n\nexport const get").concat(questionnaireName, "All = createAsyncThunk(\n \"/get").concat(questionnaireName, "All\",\n async (visibility, { dispatch }) => {\n try {\n dispatch(setLoading(true));\n const response = await Services.get").concat(questionnaireName, "All(visibility);\n dispatch(setLoading(false));\n return response?.data;\n } catch (error) {\n errorMessage(error.response?.data?.message);\n dispatch(setLoading(false));\n }\n }\n);\n\nexport const add").concat(questionnaireName, " = createAsyncThunk(\n \"/add").concat(questionnaireName, "\",\n async (data, { dispatch }) => {\n try {\n dispatch(setLoading(true));\n await Services.add").concat(questionnaireName, "(data);\n dispatch(setLoading(false));\n dispatch(set").concat(questionnaireName, "Render((prev) => !prev));\n dispatch(setViewModalVisible(true));\n } catch (error) {\n errorMessage(error.response?.data?.message);\n dispatch(setLoading(false));\n }\n }\n);\nexport const edit").concat(questionnaireName, " = createAsyncThunk(\n \"/edit").concat(questionnaireName, "\",\n async (data, { dispatch }) => {\n try {\n dispatch(setLoading(true));\n const response = await Services.edit").concat(questionnaireName, "(data);\n dispatch(setLoading(false));\n dispatch(set").concat(questionnaireName, "Render((prev) => !prev));\n return response?.data;\n } catch (error) {\n errorMessage(error.response?.data?.message);\n dispatch(setLoading(false));\n }\n }\n);\n\nexport const delete").concat(questionnaireName, " = createAsyncThunk(\n \"/delete").concat(questionnaireName, "\",\n async (id, { dispatch }) => {\n try {\n dispatch(setLoading(true));\n await Services.delete").concat(questionnaireName, "(id);\n dispatch(setLoading(false));\n dispatch(setDeleteModalVisible(false));\n dispatch(set").concat(questionnaireName, "Render((prev) => !prev));\n } catch (error) {\n dispatch(setDeleteModalVisible(false));\n errorMessage(error.response?.data?.message);\n dispatch(setLoading(false));\n }\n }\n);\n\nexport const ").concat(lowercaseFirstChar(questionnaireName), "Visibility = createAsyncThunk(\n \"").concat(lowercaseFirstChar(questionnaireName), "Visibility\",\n async (data, { dispatch }) => {\n try {\n dispatch(setLoading(true));\n const response = await Services.").concat(lowercaseFirstChar(questionnaireName), "Visibility(data);\n dispatch(setLoading(false));\n dispatch(set").concat(questionnaireName, "Render((prev) => !prev));\n return response?.data;\n } catch (error) {\n errorMessage(error.response?.data?.message);\n dispatch(setLoading(false));\n }\n }\n);\n\n// ---- end generated ----\n");
|
|
29
|
+
var servicesBoilerplateTemplate = "\n// ---- generated by questionnaireGenerator: ".concat(questionnaireName, " ----\n static get").concat(questionnaireName, " = async (size, page, query, visibility) => {\n const response = await api.get(`").concat(endpointName, "/${size}/page/${page}?visibility=${visibility}&name=${query?.name}`);\n return response?.data;\n };\n static get").concat(questionnaireName, "All = async (visibility) => {\n const response = await api.get(`").concat(endpointName, "?visibility=${visibility}`);\n return response?.data;\n };\n static add").concat(questionnaireName, " = async (value) => {\n const response = await api.post(\"").concat(endpointName, "\", value);\n return response?.data;\n };\n static edit").concat(questionnaireName, " = async (data) => {\n const response = await api.put(`").concat(endpointName, "/${data?.id}`, data);\n return response?.data;\n };\n static delete").concat(questionnaireName, " = async (id) => {\n const response = await api.delete(`").concat(endpointName, "/${id}`);\n return response?.data;\n };\n static ").concat(lowercaseFirstChar(questionnaireName), "Visibility = async (data) => {\n const response = await api.patch(`").concat(endpointName, "/${data?.id}/visibility/${data?.checked}`);\n return response?.data;\n };\n// ---- end generated ----\n");
|
|
30
|
+
var pathExportsTemplate = "\n// ---- generated by questionnaireGenerator: ".concat(questionnaireName.toUpperCase(), " ----\nexport const ").concat(pathConstA, " = QUESTIONNAIRES + \"").concat(endpointName, "\";\n// ---- end generated ----\n");
|
|
32
31
|
|
|
33
32
|
/* ------------------ HELPERS ------------------ */
|
|
34
33
|
|
|
@@ -147,105 +146,51 @@ function insertIntoClassBody(content, classNamePatterns, insertionText, marker)
|
|
|
147
146
|
}
|
|
148
147
|
|
|
149
148
|
/**
|
|
150
|
-
*
|
|
151
|
-
*
|
|
149
|
+
* Robust insertRouteIntoParentBlock that works with multiline <Route ...> tags.
|
|
150
|
+
* It finds the parent <Route ... path="parentPath" ...> and inserts insertionText
|
|
151
|
+
* immediately before that parent's closing </Route>.
|
|
152
152
|
*
|
|
153
|
-
*
|
|
154
|
-
* - Find the regex match for startRegex (which targets the path attribute).
|
|
155
|
-
* - Locate the opening '<Route' tag start (lastIndexOf before the match).
|
|
156
|
-
* - Determine if that opening tag is self-closing — if so, we cannot insert inside.
|
|
157
|
-
* - Otherwise, scan forward from that opening tag, counting nested <Route> openings and </Route> closings
|
|
158
|
-
* until we find the matching closing tag for the found parent, then insert before that closing tag.
|
|
153
|
+
* Returns { updated, inserted, reason }.
|
|
159
154
|
*/
|
|
160
|
-
function insertRouteIntoParentBlock(content,
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
};
|
|
166
|
-
var match = startRegex.exec(content);
|
|
167
|
-
if (!match) return {
|
|
168
|
-
updated: content,
|
|
169
|
-
inserted: false,
|
|
170
|
-
reason: "start_not_found"
|
|
171
|
-
};
|
|
172
|
-
var matchIndex = match.index;
|
|
173
|
-
|
|
174
|
-
// Find the opening "<Route" that contains this match (search backwards)
|
|
175
|
-
var openTagIdx = content.lastIndexOf("<Route", matchIndex);
|
|
176
|
-
if (openTagIdx === -1) return {
|
|
155
|
+
function insertRouteIntoParentBlock(content, parentPath, insertionText) {
|
|
156
|
+
// find <Route ... path="questionnaires" ... >
|
|
157
|
+
var openTagRegex = new RegExp("<Route[^>]*path=\\{?[\"']?".concat(parentPath, "[\"']?\\}?[^>]*>"), "m");
|
|
158
|
+
var openMatch = content.match(openTagRegex);
|
|
159
|
+
if (!openMatch) return {
|
|
177
160
|
updated: content,
|
|
178
161
|
inserted: false,
|
|
179
|
-
reason: "
|
|
162
|
+
reason: "parent_not_found"
|
|
180
163
|
};
|
|
164
|
+
var openIndex = openMatch.index;
|
|
165
|
+
var openEnd = content.indexOf(">", openIndex);
|
|
181
166
|
|
|
182
|
-
//
|
|
183
|
-
var openingTagEnd = content.indexOf(">", openTagIdx);
|
|
184
|
-
if (openingTagEnd === -1) return {
|
|
185
|
-
updated: content,
|
|
186
|
-
inserted: false,
|
|
187
|
-
reason: "opening_tag_end_not_found"
|
|
188
|
-
};
|
|
189
|
-
var openingTagText = content.slice(openTagIdx, openingTagEnd + 1);
|
|
190
|
-
// detect self-closing like '<Route ... />'
|
|
191
|
-
var selfClosing = /\/\s*>$/.test(openingTagText);
|
|
192
|
-
if (selfClosing) return {
|
|
193
|
-
updated: content,
|
|
194
|
-
inserted: false,
|
|
195
|
-
reason: "parent_self_closing"
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
// Now scan forward from openTagIdx and match nested <Route> ... </Route>
|
|
199
|
-
var openRe = /<Route\b/g;
|
|
200
|
-
var closeRe = /<\/Route>/g;
|
|
201
|
-
var idx = openTagIdx;
|
|
167
|
+
// now find the matching closing </Route>
|
|
202
168
|
var depth = 0;
|
|
203
|
-
var
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
openRe.lastIndex = idx;
|
|
207
|
-
closeRe.lastIndex = idx;
|
|
208
|
-
while (true) {
|
|
209
|
-
var nextOpen = openRe.exec(content);
|
|
210
|
-
var nextClose = closeRe.exec(content);
|
|
211
|
-
if (nextOpen && (!nextClose || nextOpen.index < nextClose.index)) {
|
|
212
|
-
// found another opening before the next closing
|
|
169
|
+
var closeIndex = -1;
|
|
170
|
+
for (var i = openEnd + 1; i < content.length; i++) {
|
|
171
|
+
if (content.startsWith("<Route", i)) {
|
|
213
172
|
depth++;
|
|
214
|
-
|
|
215
|
-
openRe.lastIndex = idx;
|
|
216
|
-
closeRe.lastIndex = idx;
|
|
217
|
-
continue;
|
|
218
|
-
} else if (nextClose) {
|
|
219
|
-
// found a closing tag
|
|
220
|
-
depth--;
|
|
221
|
-
idx = nextClose.index + 8; // move past '</Route>'
|
|
222
|
-
// when depth goes to zero we've closed the original open we counted
|
|
173
|
+
} else if (content.startsWith("</Route>", i)) {
|
|
223
174
|
if (depth === 0) {
|
|
224
|
-
|
|
175
|
+
closeIndex = i; // <-- we insert BEFORE this
|
|
225
176
|
break;
|
|
177
|
+
} else {
|
|
178
|
+
depth--;
|
|
226
179
|
}
|
|
227
|
-
openRe.lastIndex = idx;
|
|
228
|
-
closeRe.lastIndex = idx;
|
|
229
|
-
continue;
|
|
230
|
-
} else {
|
|
231
|
-
// no more matches
|
|
232
|
-
break;
|
|
233
180
|
}
|
|
234
181
|
}
|
|
235
|
-
if (
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
};
|
|
241
|
-
}
|
|
182
|
+
if (closeIndex === -1) return {
|
|
183
|
+
updated: content,
|
|
184
|
+
inserted: false,
|
|
185
|
+
reason: "closing_not_found"
|
|
186
|
+
};
|
|
242
187
|
|
|
243
|
-
//
|
|
244
|
-
var
|
|
188
|
+
// insert BEFORE the parent's </Route>
|
|
189
|
+
var updated = content.slice(0, closeIndex) + "\n" + insertionText + "\n" + content.slice(closeIndex);
|
|
245
190
|
return {
|
|
246
|
-
updated:
|
|
191
|
+
updated: updated,
|
|
247
192
|
inserted: true,
|
|
248
|
-
reason: "
|
|
193
|
+
reason: "ok"
|
|
249
194
|
};
|
|
250
195
|
}
|
|
251
196
|
|
|
@@ -484,7 +429,7 @@ try {
|
|
|
484
429
|
console.log("Updated global slice:", globalPath);
|
|
485
430
|
}
|
|
486
431
|
|
|
487
|
-
// 5) update utils/path.js with the
|
|
432
|
+
// 5) update utils/path.js with the route constant (DOCUMENT only)
|
|
488
433
|
var pathUtils = locatePathUtils(root);
|
|
489
434
|
if (!pathUtils) {
|
|
490
435
|
console.warn("utils/path.js not found — skipping path constants insertion.");
|
|
@@ -509,7 +454,7 @@ try {
|
|
|
509
454
|
}
|
|
510
455
|
|
|
511
456
|
// 6) update routes/QuestionnaireRoutes.jsx: add component import, add path constants to utils/path named import,
|
|
512
|
-
// and insert Route entries into Document
|
|
457
|
+
// and insert Route entries into Document parent block.
|
|
513
458
|
var routesPath = locateRoutesFile(root);
|
|
514
459
|
if (!routesPath) {
|
|
515
460
|
console.warn("QuestionnaireRoutes.jsx not found — skipping routes changes.");
|
|
@@ -532,10 +477,6 @@ try {
|
|
|
532
477
|
_names.push(pathConstA);
|
|
533
478
|
changed = true;
|
|
534
479
|
}
|
|
535
|
-
if (!_names.includes(pathConstB)) {
|
|
536
|
-
_names.push(pathConstB);
|
|
537
|
-
changed = true;
|
|
538
|
-
}
|
|
539
480
|
if (changed) {
|
|
540
481
|
// preserve multiline formatting
|
|
541
482
|
var hasMultiline = /\n/.test(_inner);
|
|
@@ -548,7 +489,7 @@ try {
|
|
|
548
489
|
}
|
|
549
490
|
} else {
|
|
550
491
|
// fallback: add a small named import
|
|
551
|
-
var safeImport = "import { ".concat(pathConstA, "
|
|
492
|
+
var safeImport = "import { ".concat(pathConstA, " } from \"../utils/path\";\n");
|
|
552
493
|
// place after first import block
|
|
553
494
|
var firstNonImport = routesContent.indexOf("\n\n");
|
|
554
495
|
if (firstNonImport !== -1 && firstNonImport < 5000) {
|
|
@@ -591,54 +532,24 @@ try {
|
|
|
591
532
|
console.log("Component import already present — skipping import insertion.");
|
|
592
533
|
}
|
|
593
534
|
|
|
594
|
-
// 6.c Insert Route
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
var
|
|
598
|
-
var docRouteMarker = "";
|
|
599
|
-
var setRouteMarker = "";
|
|
600
|
-
var routeEntryDocument = "\n".concat(docRouteMarker, "\n <Route\n path={").concat(pathConstA, "}\n element={<Questionnaires").concat(questionnaireName, "Content />}\n />\n");
|
|
601
|
-
var routeEntrySettings = "\n".concat(setRouteMarker, "\n <Route\n path={").concat(pathConstB, "}\n element={<Questionnaires").concat(questionnaireName, "Content />}\n />\n");
|
|
602
|
-
|
|
603
|
-
// Insert into Document Circulation Routes parent block
|
|
604
|
-
var resDoc = insertRouteIntoParentBlock(routesContent, docStartRegex, routeEntryDocument, docRouteMarker);
|
|
535
|
+
// 6.c Insert Route entry into questionnaires parent
|
|
536
|
+
var routeEntryDocument = "\n <Route \n path={".concat(pathConstA, "} \n element={<Questionnaires").concat(questionnaireName, "Content />} \n />\n");
|
|
537
|
+
// Insert route into <Route path="questionnaires">
|
|
538
|
+
var resDoc = insertRouteIntoParentBlock(routesContent, "questionnaires", routeEntryDocument);
|
|
605
539
|
if (resDoc.inserted) {
|
|
606
540
|
routesContent = resDoc.updated;
|
|
607
|
-
console.log("Inserted
|
|
608
|
-
} else if (resDoc.reason === "marker_present") {
|
|
609
|
-
console.log("Document route marker present — skipping insertion.");
|
|
541
|
+
console.log("Inserted questionnaire route inside questionnaires block.");
|
|
610
542
|
} else {
|
|
611
|
-
|
|
612
|
-
var settingsAnchor = routesContent.indexOf('{/* Settings Routes */}');
|
|
613
|
-
if (settingsAnchor !== -1) {
|
|
614
|
-
routesContent = routesContent.slice(0, settingsAnchor) + routeEntryDocument + routesContent.slice(settingsAnchor);
|
|
615
|
-
console.log("Fallback inserted document route before Settings anchor.");
|
|
616
|
-
} else {
|
|
617
|
-
console.warn("Couldn't reliably insert document route — please add manually. Reason:", resDoc.reason);
|
|
618
|
-
}
|
|
619
|
-
}
|
|
543
|
+
console.warn("⚠ Could not insert questionnaire route:", resDoc.reason);
|
|
620
544
|
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
} else if (resSet.reason === "marker_present") {
|
|
627
|
-
console.log("Settings route marker present — skipping insertion.");
|
|
628
|
-
} else {
|
|
629
|
-
// fallback: find the settings block and append before its closing tag
|
|
630
|
-
var settingsBlockRegex = /<Route\s*\n\s*path="settings\/questionnaires"[\s\S]*?<\/Route>/m;
|
|
631
|
-
if (settingsBlockRegex.test(routesContent)) {
|
|
632
|
-
routesContent = routesContent.replace(settingsBlockRegex, function (m) {
|
|
633
|
-
var idx = m.lastIndexOf("</Route>");
|
|
634
|
-
if (idx !== -1) {
|
|
635
|
-
return m.slice(0, idx) + routeEntrySettings + m.slice(idx);
|
|
636
|
-
}
|
|
637
|
-
return m;
|
|
638
|
-
});
|
|
639
|
-
console.log("Fallback inserted settings route into settings block.");
|
|
545
|
+
// fallback inserting BEFORE the parent closing </Route>
|
|
546
|
+
var parentClose = routesContent.lastIndexOf("</Route>");
|
|
547
|
+
if (parentClose !== -1) {
|
|
548
|
+
routesContent = routesContent.slice(0, parentClose) + routeEntryDocument + routesContent.slice(parentClose);
|
|
549
|
+
console.log("Fallback inserted questionnaire route before closing </Route>.");
|
|
640
550
|
} else {
|
|
641
|
-
console.warn("
|
|
551
|
+
console.warn("⚠ No parent closing </Route> found — appending at bottom.");
|
|
552
|
+
routesContent += "\n" + routeEntryDocument;
|
|
642
553
|
}
|
|
643
554
|
}
|
|
644
555
|
|
|
@@ -669,10 +580,6 @@ try {
|
|
|
669
580
|
_names2.push(pathConstA);
|
|
670
581
|
_changed = true;
|
|
671
582
|
}
|
|
672
|
-
if (!_names2.includes(pathConstB)) {
|
|
673
|
-
_names2.push(pathConstB);
|
|
674
|
-
_changed = true;
|
|
675
|
-
}
|
|
676
583
|
if (_changed) {
|
|
677
584
|
var _hasMultiline = /\n/.test(_inner2);
|
|
678
585
|
var _newInner2 = _hasMultiline ? _names2.join(",\n ") : _names2.join(", ");
|
|
@@ -684,7 +591,7 @@ try {
|
|
|
684
591
|
}
|
|
685
592
|
} else {
|
|
686
593
|
// fallback: add import near top
|
|
687
|
-
var _safeImport = "import { ".concat(pathConstA, "
|
|
594
|
+
var _safeImport = "import { ".concat(pathConstA, " } from \"../../utils/path\";\n");
|
|
688
595
|
var _firstNonImport2 = sidebarContent.indexOf("\n\n");
|
|
689
596
|
if (_firstNonImport2 !== -1 && _firstNonImport2 < 5000) {
|
|
690
597
|
sidebarContent = sidebarContent.slice(0, _firstNonImport2) + "\n" + _safeImport + sidebarContent.slice(_firstNonImport2);
|
|
@@ -700,7 +607,7 @@ try {
|
|
|
700
607
|
// find the items = [ ... ] block
|
|
701
608
|
var itemsArrayRegex = /const\s+items\s*=\s*\[\s*([\s\S]*?)\s*\];/m;
|
|
702
609
|
var itemsMatch = sidebarContent.match(itemsArrayRegex);
|
|
703
|
-
var menuObject = " {\n key: \"".concat(endpointName.replace(/^\//, ""), "\", //delete the \"/\" at the start of string \n label: \"").concat(constantColumnName, "\", \n link
|
|
610
|
+
var menuObject = " {\n key: \"".concat(endpointName.replace(/^\//, ""), "\", //delete the \"/\" at the start of string \n label: \"").concat(constantColumnName, "\", \n link: ").concat(pathConstA, ", \n},\n");
|
|
704
611
|
if (itemsMatch) {
|
|
705
612
|
// insert before closing bracket of the items array
|
|
706
613
|
var _startIdx = itemsMatch.index;
|