Replaced the custom loading code with reacts build in suspense
This commit is contained in:
parent
7d77ffab73
commit
5e47c8839f
@ -1,17 +0,0 @@
|
|||||||
import React from "react";
|
|
||||||
import LoadingPanel from "./LoadingPanel";
|
|
||||||
|
|
||||||
interface Loading2Props {
|
|
||||||
loaded: boolean;
|
|
||||||
children: React.ReactNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
const Loading: React.FC<Loading2Props> = ({ loaded, children }) => {
|
|
||||||
if (!loaded) {
|
|
||||||
return <LoadingPanel />;
|
|
||||||
}
|
|
||||||
|
|
||||||
return <>{children}</>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Loading;
|
|
||||||
@ -13,7 +13,6 @@ import formsService, {
|
|||||||
import parse, { HTMLReactParserOptions, domToReact } from "html-react-parser";
|
import parse, { HTMLReactParserOptions, domToReact } from "html-react-parser";
|
||||||
import { CustomField } from "../../modules/manager/customfields/services/customFieldsService";
|
import { CustomField } from "../../modules/manager/customfields/services/customFieldsService";
|
||||||
import { toast } from "react-toastify";
|
import { toast } from "react-toastify";
|
||||||
import Loading from "./Loading";
|
|
||||||
import { renderCustomField } from "./formHelpers";
|
import { renderCustomField } from "./formHelpers";
|
||||||
import { CustomFieldValue } from "../../modules/manager/glossary/services/glossaryService";
|
import { CustomFieldValue } from "../../modules/manager/glossary/services/glossaryService";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
@ -259,11 +258,7 @@ const TemplateFiller = forwardRef<TemplateFillerHandle, TemplateFillerProps>(
|
|||||||
parsedDefinition = parseDefinition(template.definition, customFields);
|
parsedDefinition = parseDefinition(template.definition, customFields);
|
||||||
else parsedDefinition = <></>;
|
else parsedDefinition = <></>;
|
||||||
|
|
||||||
return (
|
return <div className="ck-content form-editor">{parsedDefinition}</div>;
|
||||||
<Loading loaded={loaded}>
|
|
||||||
<div className="ck-content form-editor">{parsedDefinition}</div>
|
|
||||||
</Loading>
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,6 @@ import Column from "../../components/common/columns";
|
|||||||
import { Paginated } from "../../services/Paginated";
|
import { Paginated } from "../../services/Paginated";
|
||||||
import AuditTable from "./components/auditTable";
|
import AuditTable from "./components/auditTable";
|
||||||
import auditService, { AuditLogEntry } from "./services/auditService";
|
import auditService, { AuditLogEntry } from "./services/auditService";
|
||||||
import Loading from "../../components/common/Loading";
|
|
||||||
import { useLocation, useParams } from "react-router-dom";
|
import { useLocation, useParams } from "react-router-dom";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { Namespaces } from "../../i18n/i18n";
|
import { Namespaces } from "../../i18n/i18n";
|
||||||
@ -13,7 +12,6 @@ export default function Audit() {
|
|||||||
const params = useParams();
|
const params = useParams();
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
|
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] = useState<Paginated<AuditLogEntry>>({
|
const [pagedData, setPagedData] = useState<Paginated<AuditLogEntry>>({
|
||||||
page: 1,
|
page: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@ -48,9 +46,6 @@ export default function Audit() {
|
|||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
setPagedData(result);
|
setPagedData(result);
|
||||||
setLoaded(true);
|
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
pagedData.page,
|
pagedData.page,
|
||||||
@ -67,12 +62,10 @@ export default function Audit() {
|
|||||||
page,
|
page,
|
||||||
pageSize,
|
pageSize,
|
||||||
}));
|
}));
|
||||||
setLoaded(false);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const onSort = async (column: Column<AuditLogEntry>) => {
|
const onSort = async (column: Column<AuditLogEntry>) => {
|
||||||
setSortColumn(column);
|
setSortColumn(column);
|
||||||
setLoaded(false);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const onSearch = async (name: string, value: string) => {
|
const onSearch = async (name: string, value: string) => {
|
||||||
@ -81,7 +74,6 @@ export default function Audit() {
|
|||||||
updated.set(name, value);
|
updated.set(name, value);
|
||||||
return updated;
|
return updated;
|
||||||
});
|
});
|
||||||
setLoaded(false);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Load data on mount and whenever page/sort/filter changes
|
// Load data on mount and whenever page/sort/filter changes
|
||||||
@ -104,12 +96,10 @@ export default function Audit() {
|
|||||||
label: t("Timing"),
|
label: t("Timing"),
|
||||||
order: "desc",
|
order: "desc",
|
||||||
});
|
});
|
||||||
|
|
||||||
setLoaded(false);
|
|
||||||
}, [location.search, params.auditId, t]);
|
}, [location.search, params.auditId, t]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<div>
|
<div>
|
||||||
<AuditTable
|
<AuditTable
|
||||||
data={pagedData}
|
data={pagedData}
|
||||||
@ -119,6 +109,6 @@ export default function Audit() {
|
|||||||
onSearch={onSearch}
|
onSearch={onSearch}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,10 @@
|
|||||||
import React from "react";
|
import React, { Suspense } from "react";
|
||||||
import TopMenu from "./TopMenu";
|
import TopMenu from "./TopMenu";
|
||||||
import LeftMenu from "./LeftMenu";
|
import LeftMenu from "./LeftMenu";
|
||||||
|
|
||||||
import "../../../Sass/_frame.scss";
|
import "../../../Sass/_frame.scss";
|
||||||
import Sticker from "./Sticker";
|
import Sticker from "./Sticker";
|
||||||
|
import LoadingPanel from "../../../components/common/LoadingPanel";
|
||||||
|
|
||||||
type MainFrameProps = {
|
type MainFrameProps = {
|
||||||
title?: string | null;
|
title?: string | null;
|
||||||
@ -18,7 +19,9 @@ const Mainframe: React.FC<MainFrameProps> = ({ title, children }) => {
|
|||||||
<div className="frame-leftMenu">
|
<div className="frame-leftMenu">
|
||||||
<LeftMenu />
|
<LeftMenu />
|
||||||
</div>
|
</div>
|
||||||
<div className="frame-workArea">{children}</div>
|
<div className="frame-workArea">
|
||||||
|
<Suspense fallback={<LoadingPanel />}>{children}</Suspense>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Sticker />
|
<Sticker />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -26,7 +26,6 @@ import {
|
|||||||
CustomFieldValue,
|
CustomFieldValue,
|
||||||
SystemGlossaries,
|
SystemGlossaries,
|
||||||
} from "../glossary/services/glossaryService";
|
} from "../glossary/services/glossaryService";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import { useFormWithGuard } from "../../../components/common/useFormRouter";
|
import { useFormWithGuard } from "../../../components/common/useFormRouter";
|
||||||
|
|
||||||
interface CustomFieldDetailsProps {
|
interface CustomFieldDetailsProps {
|
||||||
@ -359,7 +358,7 @@ const CustomFieldDetails: React.FC<CustomFieldDetailsProps> = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={form.state.loaded}>
|
<>
|
||||||
<h1>
|
<h1>
|
||||||
{mode} {t("CustomField")}
|
{mode} {t("CustomField")}
|
||||||
</h1>
|
</h1>
|
||||||
@ -637,7 +636,7 @@ const CustomFieldDetails: React.FC<CustomFieldDetailsProps> = ({
|
|||||||
{isEditMode() && renderButton(labelApply, form.state.errors, "apply")}
|
{isEditMode() && renderButton(labelApply, form.state.errors, "apply")}
|
||||||
{renderButton(labelSave, form.state.errors, "save")}
|
{renderButton(labelSave, form.state.errors, "save")}
|
||||||
</form>
|
</form>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import customFieldsService, {
|
|||||||
CustomField,
|
CustomField,
|
||||||
} from "./services/customFieldsService";
|
} from "./services/customFieldsService";
|
||||||
import Button, { ButtonType } from "../../../components/common/Button";
|
import Button, { ButtonType } from "../../../components/common/Button";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import Permission from "../../../components/common/Permission";
|
import Permission from "../../../components/common/Permission";
|
||||||
|
|
||||||
const initialPagedData: Paginated<CustomField> = {
|
const initialPagedData: Paginated<CustomField> = {
|
||||||
@ -21,7 +20,6 @@ const initialPagedData: Paginated<CustomField> = {
|
|||||||
|
|
||||||
const CustomFields: React.FC = () => {
|
const CustomFields: React.FC = () => {
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] =
|
const [pagedData, setPagedData] =
|
||||||
useState<Paginated<CustomField>>(initialPagedData);
|
useState<Paginated<CustomField>>(initialPagedData);
|
||||||
|
|
||||||
@ -47,10 +45,7 @@ const CustomFields: React.FC = () => {
|
|||||||
new Map<string, string>(),
|
new Map<string, string>(),
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -66,10 +61,7 @@ const CustomFields: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -83,11 +75,8 @@ const CustomFields: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
setSortColumn(nextSortColumn);
|
setSortColumn(nextSortColumn);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -104,11 +93,8 @@ const CustomFields: React.FC = () => {
|
|||||||
nextFilters,
|
nextFilters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(nextFilters);
|
setFilters(nextFilters);
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -128,7 +114,7 @@ const CustomFields: React.FC = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<Permission privilegeKey="AddField">
|
<Permission privilegeKey="AddField">
|
||||||
<div>
|
<div>
|
||||||
<Button buttonType={ButtonType.primary} to="add">
|
<Button buttonType={ButtonType.primary} to="add">
|
||||||
@ -145,7 +131,7 @@ const CustomFields: React.FC = () => {
|
|||||||
onSearch={onSearch}
|
onSearch={onSearch}
|
||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
/>
|
/>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import { Paginated } from "../../../services/Paginated";
|
|||||||
import DomainsTable from "./components/domainsTable";
|
import DomainsTable from "./components/domainsTable";
|
||||||
import domainsService, { GetDomain } from "./serrvices/domainsService";
|
import domainsService, { GetDomain } from "./serrvices/domainsService";
|
||||||
import Button, { ButtonType } from "../../../components/common/Button";
|
import Button, { ButtonType } from "../../../components/common/Button";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import Permission from "../../../components/common/Permission";
|
import Permission from "../../../components/common/Permission";
|
||||||
|
|
||||||
const initialPagedData: Paginated<GetDomain> = {
|
const initialPagedData: Paginated<GetDomain> = {
|
||||||
@ -19,7 +18,6 @@ const initialPagedData: Paginated<GetDomain> = {
|
|||||||
|
|
||||||
const Domains: React.FC = () => {
|
const Domains: React.FC = () => {
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] =
|
const [pagedData, setPagedData] =
|
||||||
useState<Paginated<GetDomain>>(initialPagedData);
|
useState<Paginated<GetDomain>>(initialPagedData);
|
||||||
const [sortColumn, setSortColumn] = useState<Column<GetDomain>>({
|
const [sortColumn, setSortColumn] = useState<Column<GetDomain>>({
|
||||||
@ -41,10 +39,7 @@ const Domains: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[filters, sortColumn.key, sortColumn.order],
|
[filters, sortColumn.key, sortColumn.order],
|
||||||
@ -68,11 +63,8 @@ const Domains: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
setSortColumn(nextSortColumn);
|
setSortColumn(nextSortColumn);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -89,11 +81,8 @@ const Domains: React.FC = () => {
|
|||||||
nextFilters,
|
nextFilters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(nextFilters);
|
setFilters(nextFilters);
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -110,7 +99,7 @@ const Domains: React.FC = () => {
|
|||||||
const translatedSortColumn = { ...sortColumn, label: t("Name") };
|
const translatedSortColumn = { ...sortColumn, label: t("Name") };
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<Permission privilegeKey="AddDomain">
|
<Permission privilegeKey="AddDomain">
|
||||||
<div>
|
<div>
|
||||||
<Button buttonType={ButtonType.primary} to="add">
|
<Button buttonType={ButtonType.primary} to="add">
|
||||||
@ -127,7 +116,7 @@ const Domains: React.FC = () => {
|
|||||||
onSearch={onSearch}
|
onSearch={onSearch}
|
||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
/>
|
/>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import { useTranslation } from "react-i18next";
|
|||||||
import { Namespaces } from "../../../../i18n/i18n";
|
import { Namespaces } from "../../../../i18n/i18n";
|
||||||
import { MakeGeneralIdRef } from "../../../../utils/GeneralIdRef";
|
import { MakeGeneralIdRef } from "../../../../utils/GeneralIdRef";
|
||||||
import roleService from "../serrvices/rolesService";
|
import roleService from "../serrvices/rolesService";
|
||||||
import Loading from "../../../../components/common/Loading";
|
|
||||||
import {
|
import {
|
||||||
renderError,
|
renderError,
|
||||||
renderButton,
|
renderButton,
|
||||||
@ -73,21 +72,19 @@ const AddUserToRole: React.FC<LocAddUserToRoleProps> = ({ isEditMode }) => {
|
|||||||
if (redirect) return <Navigate to={redirect} />;
|
if (redirect) return <Navigate to={redirect} />;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<form onSubmit={handleSubmit}>
|
||||||
<form onSubmit={handleSubmit}>
|
{renderError("_general", form.state.errors)}
|
||||||
{renderError("_general", form.state.errors)}
|
{renderUserPicker(
|
||||||
{renderUserPicker(
|
"userId",
|
||||||
"userId",
|
labelUserId,
|
||||||
labelUserId,
|
form.state.data,
|
||||||
form.state.data,
|
form.state.errors,
|
||||||
form.state.errors,
|
form.handleUserPickerChange,
|
||||||
form.handleUserPickerChange,
|
)}
|
||||||
)}
|
|
||||||
|
|
||||||
{isEditMode && renderButton(labelApply, form.state.errors, "apply")}
|
{isEditMode && renderButton(labelApply, form.state.errors, "apply")}
|
||||||
{renderButton(labelSave, form.state.errors, "save")}
|
{renderButton(labelSave, form.state.errors, "save")}
|
||||||
</form>
|
</form>
|
||||||
</Loading>
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import { Namespaces } from "../../../../i18n/i18n";
|
|||||||
import { InputType } from "../../../../components/common/Input";
|
import { InputType } from "../../../../components/common/Input";
|
||||||
import { MakeGeneralIdRef } from "../../../../utils/GeneralIdRef";
|
import { MakeGeneralIdRef } from "../../../../utils/GeneralIdRef";
|
||||||
import domainsService from "../serrvices/domainsService";
|
import domainsService from "../serrvices/domainsService";
|
||||||
import Loading from "../../../../components/common/Loading";
|
|
||||||
import {
|
import {
|
||||||
renderError,
|
renderError,
|
||||||
renderButton,
|
renderButton,
|
||||||
@ -161,91 +160,89 @@ const GeneralTab: React.FC<GeneralTabProps> = ({ isEditMode }) => {
|
|||||||
if (redirect) return <Navigate to={redirect} />;
|
if (redirect) return <Navigate to={redirect} />;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<form onSubmit={handleSubmit}>
|
||||||
<form onSubmit={handleSubmit}>
|
{renderError("_general", form.state.errors)}
|
||||||
{renderError("_general", form.state.errors)}
|
{renderInput(
|
||||||
{renderInput(
|
"name",
|
||||||
"name",
|
labelName,
|
||||||
labelName,
|
form.state.data,
|
||||||
form.state.data,
|
form.state.errors,
|
||||||
form.state.errors,
|
InputType.text,
|
||||||
InputType.text,
|
false,
|
||||||
false,
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
0,
|
||||||
0,
|
true,
|
||||||
true,
|
undefined,
|
||||||
undefined,
|
form.handleChange,
|
||||||
form.handleChange,
|
)}
|
||||||
)}
|
{renderInput(
|
||||||
{renderInput(
|
"sunriseHostName",
|
||||||
"sunriseHostName",
|
labelSunriseHostName,
|
||||||
labelSunriseHostName,
|
form.state.data,
|
||||||
form.state.data,
|
form.state.errors,
|
||||||
form.state.errors,
|
InputType.text,
|
||||||
InputType.text,
|
false,
|
||||||
false,
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
0,
|
||||||
0,
|
true,
|
||||||
true,
|
undefined,
|
||||||
undefined,
|
form.handleChange,
|
||||||
form.handleChange,
|
)}
|
||||||
)}
|
{renderInput(
|
||||||
{renderInput(
|
"sunriseAppId",
|
||||||
"sunriseAppId",
|
labelSunriseAppId,
|
||||||
labelSunriseAppId,
|
form.state.data,
|
||||||
form.state.data,
|
form.state.errors,
|
||||||
form.state.errors,
|
InputType.text,
|
||||||
InputType.text,
|
false,
|
||||||
false,
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
0,
|
||||||
0,
|
true,
|
||||||
true,
|
undefined,
|
||||||
undefined,
|
form.handleChange,
|
||||||
form.handleChange,
|
)}
|
||||||
)}
|
{renderInput(
|
||||||
{renderInput(
|
"sunriseCategoryId",
|
||||||
"sunriseCategoryId",
|
labelSunriseCategoryId,
|
||||||
labelSunriseCategoryId,
|
form.state.data,
|
||||||
form.state.data,
|
form.state.errors,
|
||||||
form.state.errors,
|
InputType.text,
|
||||||
InputType.text,
|
false,
|
||||||
false,
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
0,
|
||||||
0,
|
true,
|
||||||
true,
|
undefined,
|
||||||
undefined,
|
form.handleChange,
|
||||||
form.handleChange,
|
)}
|
||||||
)}
|
{renderSsoProviderPicker(
|
||||||
{renderSsoProviderPicker(
|
"ssoProviderId",
|
||||||
"ssoProviderId",
|
labelSsoProvider,
|
||||||
labelSsoProvider,
|
form.state.data,
|
||||||
form.state.data,
|
form.state.errors,
|
||||||
form.state.errors,
|
form.handleSsoProviderPickerChange,
|
||||||
form.handleSsoProviderPickerChange,
|
)}
|
||||||
)}
|
{renderInput(
|
||||||
{renderInput(
|
"sigmaId",
|
||||||
"sigmaId",
|
labelSigmaId,
|
||||||
labelSigmaId,
|
form.state.data,
|
||||||
form.state.data,
|
form.state.errors,
|
||||||
form.state.errors,
|
InputType.number,
|
||||||
InputType.number,
|
false,
|
||||||
false,
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
0,
|
||||||
0,
|
true,
|
||||||
true,
|
undefined,
|
||||||
undefined,
|
form.handleChange,
|
||||||
form.handleChange,
|
)}
|
||||||
)}
|
|
||||||
|
|
||||||
{isEditMode && renderButton(labelApply, form.state.errors, "apply")}
|
{isEditMode && renderButton(labelApply, form.state.errors, "apply")}
|
||||||
{renderButton(labelSave, form.state.errors, "save")}
|
{renderButton(labelSave, form.state.errors, "save")}
|
||||||
</form>
|
</form>
|
||||||
</Loading>
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
export default GeneralTab;
|
export default GeneralTab;
|
||||||
|
|||||||
@ -2,7 +2,6 @@ import React, { useEffect, useState } from "react";
|
|||||||
import { useParams } from "react-router-dom";
|
import { useParams } from "react-router-dom";
|
||||||
import mailTemplatesService from "../serrvices/mailTemplatesService";
|
import mailTemplatesService from "../serrvices/mailTemplatesService";
|
||||||
import HOCEmailTemplateEditor from "./EmailTemplateEditor";
|
import HOCEmailTemplateEditor from "./EmailTemplateEditor";
|
||||||
import Loading from "../../../../components/common/Loading";
|
|
||||||
import { Namespaces } from "../../../../i18n/i18n";
|
import { Namespaces } from "../../../../i18n/i18n";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { SelectableList } from "../../../../components/common/SelectableList";
|
import { SelectableList } from "../../../../components/common/SelectableList";
|
||||||
@ -43,7 +42,6 @@ const MailTemplatesTabContent: React.FC<{
|
|||||||
};
|
};
|
||||||
|
|
||||||
const MailTemplatesTab: React.FC = () => {
|
const MailTemplatesTab: React.FC = () => {
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [currentMailType, setCurrentMailType] = useState<MailType | null>(null);
|
const [currentMailType, setCurrentMailType] = useState<MailType | null>(null);
|
||||||
const [types, setTypes] = useState<MailType[]>([]);
|
const [types, setTypes] = useState<MailType[]>([]);
|
||||||
|
|
||||||
@ -59,8 +57,6 @@ const MailTemplatesTab: React.FC = () => {
|
|||||||
}
|
}
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
console.error(ex);
|
console.error(ex);
|
||||||
} finally {
|
|
||||||
setLoaded(true);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -74,14 +70,12 @@ const MailTemplatesTab: React.FC = () => {
|
|||||||
const { domainId } = useParams<{ domainId: string }>();
|
const { domainId } = useParams<{ domainId: string }>();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<MailTemplatesTabContent
|
||||||
<MailTemplatesTabContent
|
types={types}
|
||||||
types={types}
|
currentMailType={currentMailType}
|
||||||
currentMailType={currentMailType}
|
domainId={domainId}
|
||||||
domainId={domainId}
|
onClick={onClick}
|
||||||
onClick={onClick}
|
/>
|
||||||
/>
|
|
||||||
</Loading>
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,6 @@ import roleService, {
|
|||||||
GetSecurityAccess,
|
GetSecurityAccess,
|
||||||
} from "../serrvices/rolesService";
|
} from "../serrvices/rolesService";
|
||||||
import RollAccessTable from "./RollAccessTable";
|
import RollAccessTable from "./RollAccessTable";
|
||||||
import Loading from "../../../../components/common/Loading";
|
|
||||||
|
|
||||||
const initialPagedData: Paginated<GetRoleSecurityAccess> = {
|
const initialPagedData: Paginated<GetRoleSecurityAccess> = {
|
||||||
page: 1,
|
page: 1,
|
||||||
@ -33,7 +32,6 @@ interface RoleAccessEditorProps {
|
|||||||
|
|
||||||
const RoleAccessEditor: React.FC<RoleAccessEditorProps> = ({ role }) => {
|
const RoleAccessEditor: React.FC<RoleAccessEditorProps> = ({ role }) => {
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [accessList, setAccessList] =
|
const [accessList, setAccessList] =
|
||||||
useState<Paginated<GetSecurityAccess>>(initialAccessList);
|
useState<Paginated<GetSecurityAccess>>(initialAccessList);
|
||||||
const [pagedData, setPagedData] =
|
const [pagedData, setPagedData] =
|
||||||
@ -114,11 +112,8 @@ const RoleAccessEditor: React.FC<RoleAccessEditorProps> = ({ role }) => {
|
|||||||
accessRightsResponse?.data,
|
accessRightsResponse?.data,
|
||||||
);
|
);
|
||||||
if (nextPagedData) {
|
if (nextPagedData) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(nextPagedData);
|
setPagedData(nextPagedData);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[accessList, compileAccessRightsPagedData, role?.id],
|
[accessList, compileAccessRightsPagedData, role?.id],
|
||||||
@ -173,14 +168,12 @@ const RoleAccessEditor: React.FC<RoleAccessEditorProps> = ({ role }) => {
|
|||||||
const isAdministrator = role?.isAdministrator || role?.isSuperUser;
|
const isAdministrator = role?.isAdministrator || role?.isSuperUser;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<RollAccessTable
|
||||||
<RollAccessTable
|
role={role?.id}
|
||||||
role={role?.id}
|
isAdministrator={isAdministrator}
|
||||||
isAdministrator={isAdministrator}
|
data={pagedData}
|
||||||
data={pagedData}
|
onSave={handleSave}
|
||||||
onSave={handleSave}
|
/>
|
||||||
/>
|
|
||||||
</Loading>
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import { Namespaces } from "../../../../i18n/i18n";
|
|||||||
import { InputType } from "../../../../components/common/Input";
|
import { InputType } from "../../../../components/common/Input";
|
||||||
import { MakeGeneralIdRef } from "../../../../utils/GeneralIdRef";
|
import { MakeGeneralIdRef } from "../../../../utils/GeneralIdRef";
|
||||||
import roleService from "../serrvices/rolesService";
|
import roleService from "../serrvices/rolesService";
|
||||||
import Loading from "../../../../components/common/Loading";
|
|
||||||
import {
|
import {
|
||||||
renderError,
|
renderError,
|
||||||
renderButton,
|
renderButton,
|
||||||
@ -109,7 +108,7 @@ const RolesDetails: React.FC<RolesDetailsProps> = ({ isEditMode }) => {
|
|||||||
if (isEditMode) mode = t("Edit");
|
if (isEditMode) mode = t("Edit");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<h1>
|
<h1>
|
||||||
{mode} {t("Role")}
|
{mode} {t("Role")}
|
||||||
</h1>
|
</h1>
|
||||||
@ -133,7 +132,7 @@ const RolesDetails: React.FC<RolesDetailsProps> = ({ isEditMode }) => {
|
|||||||
{isEditMode && renderButton(labelApply, form.state.errors, "apply")}
|
{isEditMode && renderButton(labelApply, form.state.errors, "apply")}
|
||||||
{renderButton(labelSave, form.state.errors, "save")}
|
{renderButton(labelSave, form.state.errors, "save")}
|
||||||
</form>
|
</form>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
export default RolesDetails;
|
export default RolesDetails;
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import { useParams } from "react-router-dom";
|
|||||||
import roleService, { GetRoleResponse } from "../serrvices/rolesService";
|
import roleService, { GetRoleResponse } from "../serrvices/rolesService";
|
||||||
import RolesTable from "./RolesTable";
|
import RolesTable from "./RolesTable";
|
||||||
import Button, { ButtonType } from "../../../../components/common/Button";
|
import Button, { ButtonType } from "../../../../components/common/Button";
|
||||||
import Loading from "../../../../components/common/Loading";
|
|
||||||
import Permission from "../../../../components/common/Permission";
|
import Permission from "../../../../components/common/Permission";
|
||||||
import { useHashSegment } from "../../../../utils/HashNavigationContext";
|
import { useHashSegment } from "../../../../utils/HashNavigationContext";
|
||||||
|
|
||||||
@ -39,7 +38,6 @@ const RolesEditor: React.FC<RolesEditorProps> = ({
|
|||||||
const hashRoleId = useHashSegment(
|
const hashRoleId = useHashSegment(
|
||||||
hashSegment !== undefined ? hashSegment : -1,
|
hashSegment !== undefined ? hashSegment : -1,
|
||||||
);
|
);
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] =
|
const [pagedData, setPagedData] =
|
||||||
useState<Paginated<GetRoleResponse>>(initialPagedData);
|
useState<Paginated<GetRoleResponse>>(initialPagedData);
|
||||||
const [sortColumn, setSortColumn] = useState<Column<GetRoleResponse>>({
|
const [sortColumn, setSortColumn] = useState<Column<GetRoleResponse>>({
|
||||||
@ -68,10 +66,7 @@ const RolesEditor: React.FC<RolesEditorProps> = ({
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[domainGeneralIdRef, filters, sortColumn.key, sortColumn.order],
|
[domainGeneralIdRef, filters, sortColumn.key, sortColumn.order],
|
||||||
@ -112,11 +107,8 @@ const RolesEditor: React.FC<RolesEditorProps> = ({
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
setSortColumn(nextSortColumn);
|
setSortColumn(nextSortColumn);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -134,11 +126,8 @@ const RolesEditor: React.FC<RolesEditorProps> = ({
|
|||||||
nextFilters,
|
nextFilters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(nextFilters);
|
setFilters(nextFilters);
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -166,7 +155,7 @@ const RolesEditor: React.FC<RolesEditorProps> = ({
|
|||||||
const translatedSortColumn = { ...sortColumn, label: t("Name") };
|
const translatedSortColumn = { ...sortColumn, label: t("Name") };
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<Permission privilegeKey="AddRole">
|
<Permission privilegeKey="AddRole">
|
||||||
<Button
|
<Button
|
||||||
id="btnAddRoleToDomain"
|
id="btnAddRoleToDomain"
|
||||||
@ -190,7 +179,7 @@ const RolesEditor: React.FC<RolesEditorProps> = ({
|
|||||||
canDelete={canDelete}
|
canDelete={canDelete}
|
||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
/>
|
/>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import { MakeGeneralIdRef } from "../../../../utils/GeneralIdRef";
|
|||||||
import UserRolesTable from "./UserRolesTable";
|
import UserRolesTable from "./UserRolesTable";
|
||||||
import roleService, { RoleUser } from "../serrvices/rolesService";
|
import roleService, { RoleUser } from "../serrvices/rolesService";
|
||||||
import Button, { ButtonType } from "../../../../components/common/Button";
|
import Button, { ButtonType } from "../../../../components/common/Button";
|
||||||
import Loading from "../../../../components/common/Loading";
|
|
||||||
import Permission from "../../../../components/common/Permission";
|
import Permission from "../../../../components/common/Permission";
|
||||||
|
|
||||||
const initialPagedData: Paginated<RoleUser> = {
|
const initialPagedData: Paginated<RoleUser> = {
|
||||||
@ -24,7 +23,6 @@ interface UserRoleEditorProps {
|
|||||||
|
|
||||||
const UserRoleEditor: React.FC<UserRoleEditorProps> = ({ role }) => {
|
const UserRoleEditor: React.FC<UserRoleEditorProps> = ({ role }) => {
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] =
|
const [pagedData, setPagedData] =
|
||||||
useState<Paginated<RoleUser>>(initialPagedData);
|
useState<Paginated<RoleUser>>(initialPagedData);
|
||||||
const [sortColumn, setSortColumn] = useState<Column<RoleUser>>({
|
const [sortColumn, setSortColumn] = useState<Column<RoleUser>>({
|
||||||
@ -57,12 +55,9 @@ const UserRoleEditor: React.FC<UserRoleEditorProps> = ({ role }) => {
|
|||||||
nextFilters,
|
nextFilters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(nextFilters);
|
setFilters(nextFilters);
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
setSortColumn(nextSortColumn);
|
setSortColumn(nextSortColumn);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[roleGeneralIdRef],
|
[roleGeneralIdRef],
|
||||||
@ -110,7 +105,7 @@ const UserRoleEditor: React.FC<UserRoleEditorProps> = ({ role }) => {
|
|||||||
const addLink = "editRole/" + role?.id + "/addUserToRole";
|
const addLink = "editRole/" + role?.id + "/addUserToRole";
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<Permission privilegeKey="AddRoleUser">
|
<Permission privilegeKey="AddRoleUser">
|
||||||
<div>
|
<div>
|
||||||
<Button
|
<Button
|
||||||
@ -131,7 +126,7 @@ const UserRoleEditor: React.FC<UserRoleEditorProps> = ({ role }) => {
|
|||||||
onSearch={onSearch}
|
onSearch={onSearch}
|
||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
/>
|
/>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -7,12 +7,10 @@ import Permission from "../../../components/common/Permission";
|
|||||||
import { Paginated } from "../../../services/Paginated";
|
import { Paginated } from "../../../services/Paginated";
|
||||||
import FormsTable from "./components/formsTable";
|
import FormsTable from "./components/formsTable";
|
||||||
import formsService, { GetFormResponse } from "./services/formsService";
|
import formsService, { GetFormResponse } from "./services/formsService";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
|
|
||||||
const Forms: React.FC = () => {
|
const Forms: React.FC = () => {
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
|
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] = useState<Paginated<GetFormResponse>>({
|
const [pagedData, setPagedData] = useState<Paginated<GetFormResponse>>({
|
||||||
page: 1,
|
page: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@ -39,10 +37,7 @@ const Forms: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[filters, sortColumn.key, sortColumn.order],
|
[filters, sortColumn.key, sortColumn.order],
|
||||||
@ -58,11 +53,8 @@ const Forms: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
setSortColumn(newSortColumn);
|
setSortColumn(newSortColumn);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -79,11 +71,8 @@ const Forms: React.FC = () => {
|
|||||||
newFilters,
|
newFilters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(newFilters);
|
setFilters(newFilters);
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -98,10 +87,7 @@ const Forms: React.FC = () => {
|
|||||||
const loadInitial = async () => {
|
const loadInitial = async () => {
|
||||||
const data = await formsService.getForms(1, 10, "name", true, filters);
|
const data = await formsService.getForms(1, 10, "name", true, filters);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -109,7 +95,7 @@ const Forms: React.FC = () => {
|
|||||||
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<Permission privilegeKey="AddFormTemplate">
|
<Permission privilegeKey="AddFormTemplate">
|
||||||
<div>
|
<div>
|
||||||
<Button buttonType={ButtonType.primary} to="add">
|
<Button buttonType={ButtonType.primary} to="add">
|
||||||
@ -126,7 +112,7 @@ const Forms: React.FC = () => {
|
|||||||
onSearch={onSearch}
|
onSearch={onSearch}
|
||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
/>
|
/>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import { Namespaces } from "../../../i18n/i18n";
|
|||||||
import { InputType } from "../../../components/common/Input";
|
import { InputType } from "../../../components/common/Input";
|
||||||
import { MakeGeneralIdRef } from "../../../utils/GeneralIdRef";
|
import { MakeGeneralIdRef } from "../../../utils/GeneralIdRef";
|
||||||
import formsService from "./services/formsService";
|
import formsService from "./services/formsService";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import {
|
import {
|
||||||
renderError,
|
renderError,
|
||||||
renderButton,
|
renderButton,
|
||||||
@ -110,7 +109,7 @@ const FormsDetails: React.FC<{ editMode?: boolean }> = ({
|
|||||||
if (editMode) mode = t("Edit");
|
if (editMode) mode = t("Edit");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<h1>
|
<h1>
|
||||||
{mode} {t("FormTemplate")}
|
{mode} {t("FormTemplate")}
|
||||||
</h1>
|
</h1>
|
||||||
@ -141,7 +140,7 @@ const FormsDetails: React.FC<{ editMode?: boolean }> = ({
|
|||||||
{editMode && renderButton(labelApply, form.state.errors, "apply")}
|
{editMode && renderButton(labelApply, form.state.errors, "apply")}
|
||||||
{renderButton(labelSave, form.state.errors, "save")}
|
{renderButton(labelSave, form.state.errors, "save")}
|
||||||
</form>
|
</form>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,6 @@ import glossariesService, {
|
|||||||
SystemGlossaries,
|
SystemGlossaries,
|
||||||
} from "./services/glossaryService";
|
} from "./services/glossaryService";
|
||||||
import { CustomField } from "../customfields/services/customFieldsService";
|
import { CustomField } from "../customfields/services/customFieldsService";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import {
|
import {
|
||||||
renderError,
|
renderError,
|
||||||
renderButton,
|
renderButton,
|
||||||
@ -226,7 +225,7 @@ const GlossariesDetails: React.FC<GlossariesDetailsProps> = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<h1>
|
<h1>
|
||||||
{mode} {t("GlossaryItem")}
|
{mode} {t("GlossaryItem")}
|
||||||
</h1>
|
</h1>
|
||||||
@ -268,7 +267,7 @@ const GlossariesDetails: React.FC<GlossariesDetailsProps> = ({
|
|||||||
{editMode && renderButton(labelApply, form.state.errors, "apply")}
|
{editMode && renderButton(labelApply, form.state.errors, "apply")}
|
||||||
{renderButton(labelSave, form.state.errors, "save")}
|
{renderButton(labelSave, form.state.errors, "save")}
|
||||||
</form>
|
</form>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -10,19 +10,16 @@ import glossariesService, {
|
|||||||
} from "./services/glossaryService";
|
} from "./services/glossaryService";
|
||||||
import { GeneralIdRef } from "./../../../utils/GeneralIdRef";
|
import { GeneralIdRef } from "./../../../utils/GeneralIdRef";
|
||||||
import Button, { ButtonType } from "../../../components/common/Button";
|
import Button, { ButtonType } from "../../../components/common/Button";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import Permission from "../../../components/common/Permission";
|
import Permission from "../../../components/common/Permission";
|
||||||
|
|
||||||
const Glossaries: React.FC = () => {
|
const Glossaries: React.FC = () => {
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const { glossaryId } = useParams<{ glossaryId: string }>();
|
const { glossaryId } = useParams<{ glossaryId: string }>();
|
||||||
|
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [data, setData] = useState<Glossary | undefined>(undefined);
|
const [data, setData] = useState<Glossary | undefined>(undefined);
|
||||||
const [parentAddress, setParentAddress] = useState("");
|
const [parentAddress, setParentAddress] = useState("");
|
||||||
|
|
||||||
const loadData = useCallback(async () => {
|
const loadData = useCallback(async () => {
|
||||||
setLoaded(false);
|
|
||||||
let parentItem: GeneralIdRef = SystemGlossaries;
|
let parentItem: GeneralIdRef = SystemGlossaries;
|
||||||
|
|
||||||
if (glossaryId !== undefined) {
|
if (glossaryId !== undefined) {
|
||||||
@ -41,9 +38,6 @@ const Glossaries: React.FC = () => {
|
|||||||
|
|
||||||
setData(result);
|
setData(result);
|
||||||
setParentAddress(nextParentAddress);
|
setParentAddress(nextParentAddress);
|
||||||
setLoaded(true);
|
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
}, [glossaryId]);
|
}, [glossaryId]);
|
||||||
|
|
||||||
@ -130,7 +124,7 @@ const Glossaries: React.FC = () => {
|
|||||||
const pathBlock = createPathBlock();
|
const pathBlock = createPathBlock();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<div>
|
<div>
|
||||||
<Permission privilegeKey="ViewGlossary">{upButton}</Permission>
|
<Permission privilegeKey="ViewGlossary">{upButton}</Permission>
|
||||||
<Permission privilegeKey="AddGlossary">
|
<Permission privilegeKey="AddGlossary">
|
||||||
@ -143,7 +137,7 @@ const Glossaries: React.FC = () => {
|
|||||||
<hr />
|
<hr />
|
||||||
{pathBlock}
|
{pathBlock}
|
||||||
{table}
|
{table}
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -9,11 +9,9 @@ import OrganisationsTable from "./components/OrganisationsTable";
|
|||||||
import organisationsService, {
|
import organisationsService, {
|
||||||
ReadOrganisation,
|
ReadOrganisation,
|
||||||
} from "./services/organisationsService";
|
} from "./services/organisationsService";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
|
|
||||||
const Organisations: React.FC = () => {
|
const Organisations: React.FC = () => {
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] = useState<Paginated<ReadOrganisation>>({
|
const [pagedData, setPagedData] = useState<Paginated<ReadOrganisation>>({
|
||||||
page: 1,
|
page: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@ -40,10 +38,7 @@ const Organisations: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[filters, sortColumn.key, sortColumn.order],
|
[filters, sortColumn.key, sortColumn.order],
|
||||||
@ -60,11 +55,8 @@ const Organisations: React.FC = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
setSortColumn(newSortColumn);
|
setSortColumn(newSortColumn);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -81,11 +73,8 @@ const Organisations: React.FC = () => {
|
|||||||
newFilters,
|
newFilters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(newFilters);
|
setFilters(newFilters);
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -109,10 +98,7 @@ const Organisations: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -120,7 +106,7 @@ const Organisations: React.FC = () => {
|
|||||||
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<Permission privilegeKey="AddOrganisation">
|
<Permission privilegeKey="AddOrganisation">
|
||||||
<Button buttonType={ButtonType.primary} to="add">
|
<Button buttonType={ButtonType.primary} to="add">
|
||||||
{t("Add")}
|
{t("Add")}
|
||||||
@ -135,7 +121,7 @@ const Organisations: React.FC = () => {
|
|||||||
onSearch={onSearch}
|
onSearch={onSearch}
|
||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
/>
|
/>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import { InputType } from "../../../components/common/Input";
|
|||||||
import { MakeGeneralIdRef } from "../../../utils/GeneralIdRef";
|
import { MakeGeneralIdRef } from "../../../utils/GeneralIdRef";
|
||||||
import Option from "../../../components/common/option";
|
import Option from "../../../components/common/option";
|
||||||
import organisationsService from "./services/organisationsService";
|
import organisationsService from "./services/organisationsService";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import {
|
import {
|
||||||
renderError,
|
renderError,
|
||||||
renderButton,
|
renderButton,
|
||||||
@ -129,7 +128,7 @@ const OrganisationsDetails: React.FC<{ editMode?: boolean }> = ({
|
|||||||
if (editMode) mode = t("Edit");
|
if (editMode) mode = t("Edit");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<h1>
|
<h1>
|
||||||
{mode} {t("Organisation")}
|
{mode} {t("Organisation")}
|
||||||
</h1>
|
</h1>
|
||||||
@ -174,7 +173,7 @@ const OrganisationsDetails: React.FC<{ editMode?: boolean }> = ({
|
|||||||
{editMode && renderButton(labelApply, form.state.errors, "apply")}
|
{editMode && renderButton(labelApply, form.state.errors, "apply")}
|
||||||
{renderButton(labelSave, form.state.errors, "save")}
|
{renderButton(labelSave, form.state.errors, "save")}
|
||||||
</form>
|
</form>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,6 @@ import {
|
|||||||
import sequenceService from "./services/sequenceService";
|
import sequenceService from "./services/sequenceService";
|
||||||
import Option from "../../../components/common/option";
|
import Option from "../../../components/common/option";
|
||||||
import { MakeGeneralIdRef } from "../../../utils/GeneralIdRef";
|
import { MakeGeneralIdRef } from "../../../utils/GeneralIdRef";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import { useFormWithGuard } from "../../../components/common/useFormRouter";
|
import { useFormWithGuard } from "../../../components/common/useFormRouter";
|
||||||
|
|
||||||
interface SequenceDetailsProps {
|
interface SequenceDetailsProps {
|
||||||
@ -141,7 +140,7 @@ const SequenceDetails: React.FC<SequenceDetailsProps> = ({
|
|||||||
form.handleSubmit(e, doSubmit);
|
form.handleSubmit(e, doSubmit);
|
||||||
};
|
};
|
||||||
|
|
||||||
const { loaded, redirect } = form.state;
|
const { redirect } = form.state;
|
||||||
if (redirect) return <Navigate to={redirect} />;
|
if (redirect) return <Navigate to={redirect} />;
|
||||||
|
|
||||||
const rolloverOptions: Option[] = [
|
const rolloverOptions: Option[] = [
|
||||||
@ -154,7 +153,7 @@ const SequenceDetails: React.FC<SequenceDetailsProps> = ({
|
|||||||
const mode = editMode ? t("Edit") : t("Add");
|
const mode = editMode ? t("Edit") : t("Add");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<h1>
|
<h1>
|
||||||
{mode} {t("Sequence")}
|
{mode} {t("Sequence")}
|
||||||
</h1>
|
</h1>
|
||||||
@ -223,7 +222,7 @@ const SequenceDetails: React.FC<SequenceDetailsProps> = ({
|
|||||||
{editMode && renderButton(labelApply, form.state.errors, "save")}
|
{editMode && renderButton(labelApply, form.state.errors, "save")}
|
||||||
{renderButton(labelSave, form.state.errors, "save")}
|
{renderButton(labelSave, form.state.errors, "save")}
|
||||||
</form>
|
</form>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -6,12 +6,10 @@ import SequenceTable from "./components/squenceTable";
|
|||||||
import Column from "../../../components/common/columns";
|
import Column from "../../../components/common/columns";
|
||||||
import { Paginated } from "../../../services/Paginated";
|
import { Paginated } from "../../../services/Paginated";
|
||||||
import Button, { ButtonType } from "../../../components/common/Button";
|
import Button, { ButtonType } from "../../../components/common/Button";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import Permission from "../../../components/common/Permission";
|
import Permission from "../../../components/common/Permission";
|
||||||
|
|
||||||
const Sequence: React.FC = () => {
|
const Sequence: React.FC = () => {
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] = useState<Paginated<ReadSequence>>({
|
const [pagedData, setPagedData] = useState<Paginated<ReadSequence>>({
|
||||||
page: 1,
|
page: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@ -38,10 +36,7 @@ const Sequence: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[filters, sortColumn.key, sortColumn.order],
|
[filters, sortColumn.key, sortColumn.order],
|
||||||
@ -57,11 +52,8 @@ const Sequence: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
setSortColumn(newSortColumn);
|
setSortColumn(newSortColumn);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -78,11 +70,8 @@ const Sequence: React.FC = () => {
|
|||||||
newFilters,
|
newFilters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(newFilters);
|
setFilters(newFilters);
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -103,10 +92,7 @@ const Sequence: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -114,7 +100,7 @@ const Sequence: React.FC = () => {
|
|||||||
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<Permission privilegeKey="AddSequence">
|
<Permission privilegeKey="AddSequence">
|
||||||
<div>
|
<div>
|
||||||
<Button buttonType={ButtonType.primary} to="add">
|
<Button buttonType={ButtonType.primary} to="add">
|
||||||
@ -131,7 +117,7 @@ const Sequence: React.FC = () => {
|
|||||||
onSearch={onSearch}
|
onSearch={onSearch}
|
||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
/>
|
/>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,6 @@ import {
|
|||||||
import { MakeGeneralIdRef } from "../../../utils/GeneralIdRef";
|
import { MakeGeneralIdRef } from "../../../utils/GeneralIdRef";
|
||||||
import Option from "../../../components/common/option";
|
import Option from "../../../components/common/option";
|
||||||
import siteService from "./services/sitessService";
|
import siteService from "./services/sitessService";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import { useFormWithGuard } from "../../../components/common/useFormRouter";
|
import { useFormWithGuard } from "../../../components/common/useFormRouter";
|
||||||
|
|
||||||
interface SiteDetailsProps {
|
interface SiteDetailsProps {
|
||||||
@ -128,7 +127,7 @@ const SiteDetails: React.FC<SiteDetailsProps> = ({ editMode = false }) => {
|
|||||||
form.handleSubmit(e, doSubmit);
|
form.handleSubmit(e, doSubmit);
|
||||||
};
|
};
|
||||||
|
|
||||||
const { loaded, redirect } = form.state;
|
const { redirect } = form.state;
|
||||||
if (redirect) return <Navigate to={redirect} />;
|
if (redirect) return <Navigate to={redirect} />;
|
||||||
|
|
||||||
const organisationStatusOptions: Option[] = [
|
const organisationStatusOptions: Option[] = [
|
||||||
@ -140,7 +139,7 @@ const SiteDetails: React.FC<SiteDetailsProps> = ({ editMode = false }) => {
|
|||||||
const mode = editMode ? t("Edit") : t("Add");
|
const mode = editMode ? t("Edit") : t("Add");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<h1>
|
<h1>
|
||||||
{mode} {t("Site")}
|
{mode} {t("Site")}
|
||||||
</h1>
|
</h1>
|
||||||
@ -185,7 +184,7 @@ const SiteDetails: React.FC<SiteDetailsProps> = ({ editMode = false }) => {
|
|||||||
{editMode && renderButton(labelApply, form.state.errors, "save")}
|
{editMode && renderButton(labelApply, form.state.errors, "save")}
|
||||||
{renderButton(labelSave, form.state.errors, "save")}
|
{renderButton(labelSave, form.state.errors, "save")}
|
||||||
</form>
|
</form>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import { Paginated } from "../../../services/Paginated";
|
|||||||
import Button, { ButtonType } from "../../../components/common/Button";
|
import Button, { ButtonType } from "../../../components/common/Button";
|
||||||
import siteService, { ReadSite } from "./services/sitessService";
|
import siteService, { ReadSite } from "./services/sitessService";
|
||||||
import SitesTable from "./components/SitesTable";
|
import SitesTable from "./components/SitesTable";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import Permission from "../../../components/common/Permission";
|
import Permission from "../../../components/common/Permission";
|
||||||
|
|
||||||
const initialPagedData: Paginated<ReadSite> = {
|
const initialPagedData: Paginated<ReadSite> = {
|
||||||
@ -22,7 +21,6 @@ const Sites: React.FC = () => {
|
|||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const { organisationId } = useParams<{ organisationId: string }>();
|
const { organisationId } = useParams<{ organisationId: string }>();
|
||||||
|
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] =
|
const [pagedData, setPagedData] =
|
||||||
useState<Paginated<ReadSite>>(initialPagedData);
|
useState<Paginated<ReadSite>>(initialPagedData);
|
||||||
const [sortColumn, setSortColumn] = useState<Column<ReadSite>>({
|
const [sortColumn, setSortColumn] = useState<Column<ReadSite>>({
|
||||||
@ -56,11 +54,8 @@ const Sites: React.FC = () => {
|
|||||||
nextFilters,
|
nextFilters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(nextFilters);
|
setFilters(nextFilters);
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
@ -84,11 +79,8 @@ const Sites: React.FC = () => {
|
|||||||
nextFilters,
|
nextFilters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(nextFilters);
|
setFilters(nextFilters);
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -107,12 +99,9 @@ const Sites: React.FC = () => {
|
|||||||
nextFilters,
|
nextFilters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(nextFilters);
|
setFilters(nextFilters);
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
setSortColumn(nextSortColumn);
|
setSortColumn(nextSortColumn);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
@ -133,11 +122,8 @@ const Sites: React.FC = () => {
|
|||||||
updatedFilters,
|
updatedFilters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(updatedFilters);
|
setFilters(updatedFilters);
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
@ -163,7 +149,7 @@ const Sites: React.FC = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<Permission privilegeKey="AddSite">
|
<Permission privilegeKey="AddSite">
|
||||||
<div>
|
<div>
|
||||||
<Button buttonType={ButtonType.primary} to="add">
|
<Button buttonType={ButtonType.primary} to="add">
|
||||||
@ -180,7 +166,7 @@ const Sites: React.FC = () => {
|
|||||||
onSearch={onSearch}
|
onSearch={onSearch}
|
||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
/>
|
/>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,6 @@ import specificationService, {
|
|||||||
ReadSpecification,
|
ReadSpecification,
|
||||||
} from "./services/specificationService";
|
} from "./services/specificationService";
|
||||||
import SpecificationsTable from "./components/SpecificationsTable";
|
import SpecificationsTable from "./components/SpecificationsTable";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import Permission from "../../../components/common/Permission";
|
import Permission from "../../../components/common/Permission";
|
||||||
|
|
||||||
const initialPagedData: Paginated<ReadSpecification> = {
|
const initialPagedData: Paginated<ReadSpecification> = {
|
||||||
@ -23,8 +22,6 @@ const initialPagedData: Paginated<ReadSpecification> = {
|
|||||||
const Specifications: React.FC = () => {
|
const Specifications: React.FC = () => {
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const { siteId } = useParams<{ siteId: string }>();
|
const { siteId } = useParams<{ siteId: string }>();
|
||||||
|
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] =
|
const [pagedData, setPagedData] =
|
||||||
useState<Paginated<ReadSpecification>>(initialPagedData);
|
useState<Paginated<ReadSpecification>>(initialPagedData);
|
||||||
const [sortColumn, setSortColumn] = useState<Column<ReadSpecification>>({
|
const [sortColumn, setSortColumn] = useState<Column<ReadSpecification>>({
|
||||||
@ -58,11 +55,8 @@ const Specifications: React.FC = () => {
|
|||||||
nextFilters,
|
nextFilters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(nextFilters);
|
setFilters(nextFilters);
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[filters, sortColumn.key, sortColumn.order, updateFiltersWithSiteId],
|
[filters, sortColumn.key, sortColumn.order, updateFiltersWithSiteId],
|
||||||
@ -79,11 +73,8 @@ const Specifications: React.FC = () => {
|
|||||||
nextFilters,
|
nextFilters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(nextFilters);
|
setFilters(nextFilters);
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -102,12 +93,9 @@ const Specifications: React.FC = () => {
|
|||||||
nextFilters,
|
nextFilters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(nextFilters);
|
setFilters(nextFilters);
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
setSortColumn(nextSortColumn);
|
setSortColumn(nextSortColumn);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
@ -128,11 +116,8 @@ const Specifications: React.FC = () => {
|
|||||||
updatedFilters,
|
updatedFilters,
|
||||||
);
|
);
|
||||||
if (pagedDataResult) {
|
if (pagedDataResult) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(updatedFilters);
|
setFilters(updatedFilters);
|
||||||
setPagedData(pagedDataResult);
|
setPagedData(pagedDataResult);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
@ -159,7 +144,7 @@ const Specifications: React.FC = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<Permission privilegeKey="AddSpecification">
|
<Permission privilegeKey="AddSpecification">
|
||||||
<Button buttonType={ButtonType.primary} to="add">
|
<Button buttonType={ButtonType.primary} to="add">
|
||||||
{t("Add")}
|
{t("Add")}
|
||||||
@ -174,7 +159,7 @@ const Specifications: React.FC = () => {
|
|||||||
onSearch={onSearch}
|
onSearch={onSearch}
|
||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
/>
|
/>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,6 @@ import { toast } from "react-toastify";
|
|||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { Namespaces } from "../../../i18n/i18n";
|
import { Namespaces } from "../../../i18n/i18n";
|
||||||
import { InputType } from "../../../components/common/Input";
|
import { InputType } from "../../../components/common/Input";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import TemplateFiller, {
|
import TemplateFiller, {
|
||||||
TemplateFillerHandle,
|
TemplateFillerHandle,
|
||||||
} from "../../../components/common/TemplateFiller";
|
} from "../../../components/common/TemplateFiller";
|
||||||
@ -203,13 +202,13 @@ const SpecificationsDetails: React.FC<SpecificationsDetailsProps> = ({
|
|||||||
form.handleSubmit(e, doSubmit);
|
form.handleSubmit(e, doSubmit);
|
||||||
};
|
};
|
||||||
|
|
||||||
const { loaded, redirect } = form.state;
|
const { redirect } = form.state;
|
||||||
if (redirect && redirect !== "") return <Navigate to={redirect} />;
|
if (redirect && redirect !== "") return <Navigate to={redirect} />;
|
||||||
|
|
||||||
const mode = isEditMode() ? t("Edit") : t("Add");
|
const mode = isEditMode() ? t("Edit") : t("Add");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<h1>
|
<h1>
|
||||||
{mode} {t("Specifications")}
|
{mode} {t("Specifications")}
|
||||||
</h1>
|
</h1>
|
||||||
@ -287,7 +286,7 @@ const SpecificationsDetails: React.FC<SpecificationsDetailsProps> = ({
|
|||||||
true,
|
true,
|
||||||
)}
|
)}
|
||||||
</form>
|
</form>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,6 @@ import {
|
|||||||
renderError,
|
renderError,
|
||||||
} from "../../../components/common/formHelpers";
|
} from "../../../components/common/formHelpers";
|
||||||
import { MakeGeneralIdRef } from "../../../utils/GeneralIdRef";
|
import { MakeGeneralIdRef } from "../../../utils/GeneralIdRef";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import ssoManagerService from "./services/ssoManagerService";
|
import ssoManagerService from "./services/ssoManagerService";
|
||||||
|
|
||||||
interface SsoProviderDetailsProps {
|
interface SsoProviderDetailsProps {
|
||||||
@ -179,7 +178,7 @@ const SsoProviderDetails: React.FC<SsoProviderDetailsProps> = ({
|
|||||||
ssoProviderId;
|
ssoProviderId;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<h1>
|
<h1>
|
||||||
{mode} {t("SsoProvider")}
|
{mode} {t("SsoProvider")}
|
||||||
</h1>
|
</h1>
|
||||||
@ -291,7 +290,7 @@ const SsoProviderDetails: React.FC<SsoProviderDetailsProps> = ({
|
|||||||
{editMode && renderButton(labelApply, form.state.errors, "apply")}
|
{editMode && renderButton(labelApply, form.state.errors, "apply")}
|
||||||
{renderButton(labelSave, form.state.errors, "save")}
|
{renderButton(labelSave, form.state.errors, "save")}
|
||||||
</form>
|
</form>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -8,12 +8,10 @@ import ssoManagerService, {
|
|||||||
GetSsoProvider,
|
GetSsoProvider,
|
||||||
} from "./services/ssoManagerService";
|
} from "./services/ssoManagerService";
|
||||||
import Button, { ButtonType } from "../../../components/common/Button";
|
import Button, { ButtonType } from "../../../components/common/Button";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import Permission from "../../../components/common/Permission";
|
import Permission from "../../../components/common/Permission";
|
||||||
|
|
||||||
const SsoManager: React.FC = () => {
|
const SsoManager: React.FC = () => {
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] = useState<Paginated<GetSsoProvider>>({
|
const [pagedData, setPagedData] = useState<Paginated<GetSsoProvider>>({
|
||||||
page: 1,
|
page: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@ -40,10 +38,7 @@ const SsoManager: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[filters, sortColumn.key, sortColumn.order],
|
[filters, sortColumn.key, sortColumn.order],
|
||||||
@ -59,11 +54,8 @@ const SsoManager: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
setSortColumn(newSortColumn);
|
setSortColumn(newSortColumn);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -80,11 +72,8 @@ const SsoManager: React.FC = () => {
|
|||||||
newFilters,
|
newFilters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(newFilters);
|
setFilters(newFilters);
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -108,10 +97,7 @@ const SsoManager: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -119,7 +105,7 @@ const SsoManager: React.FC = () => {
|
|||||||
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<Permission privilegeKey="AddSsoProvider">
|
<Permission privilegeKey="AddSsoProvider">
|
||||||
<div>
|
<div>
|
||||||
<Button buttonType={ButtonType.primary} to="add">
|
<Button buttonType={ButtonType.primary} to="add">
|
||||||
@ -136,7 +122,7 @@ const SsoManager: React.FC = () => {
|
|||||||
onSearch={onSearch}
|
onSearch={onSearch}
|
||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
/>
|
/>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,6 @@ import { useParams } from "react-router-dom";
|
|||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { toast } from "react-toastify";
|
import { toast } from "react-toastify";
|
||||||
import { Namespaces } from "../../../../i18n/i18n";
|
import { Namespaces } from "../../../../i18n/i18n";
|
||||||
import Loading from "../../../../components/common/Loading";
|
|
||||||
import assignmentCompleteService, {
|
import assignmentCompleteService, {
|
||||||
GetAssignmentForCompletion,
|
GetAssignmentForCompletion,
|
||||||
} from "./services/assignmentCompleteService";
|
} from "./services/assignmentCompleteService";
|
||||||
@ -11,13 +10,11 @@ import assignmentCompleteService, {
|
|||||||
const AssignmentComplete: React.FC = () => {
|
const AssignmentComplete: React.FC = () => {
|
||||||
const { assignmentId } = useParams<{ assignmentId: string }>();
|
const { assignmentId } = useParams<{ assignmentId: string }>();
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [assignment, setAssignment] =
|
const [assignment, setAssignment] =
|
||||||
useState<GetAssignmentForCompletion | null>(null);
|
useState<GetAssignmentForCompletion | null>(null);
|
||||||
|
|
||||||
const loadAssignment = useCallback(async () => {
|
const loadAssignment = useCallback(async () => {
|
||||||
if (assignmentId === undefined) {
|
if (assignmentId === undefined) {
|
||||||
setLoaded(true);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,10 +26,8 @@ const AssignmentComplete: React.FC = () => {
|
|||||||
if (assignmentDetails) {
|
if (assignmentDetails) {
|
||||||
setAssignment(assignmentDetails);
|
setAssignment(assignmentDetails);
|
||||||
}
|
}
|
||||||
setLoaded(true);
|
|
||||||
} catch (ex: any) {
|
} catch (ex: any) {
|
||||||
toast.error(ex.message);
|
toast.error(ex.message);
|
||||||
setLoaded(true);
|
|
||||||
}
|
}
|
||||||
}, [assignmentId]);
|
}, [assignmentId]);
|
||||||
|
|
||||||
@ -41,9 +36,9 @@ const AssignmentComplete: React.FC = () => {
|
|||||||
}, [loadAssignment]);
|
}, [loadAssignment]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
{assignment ? <>{assignment.taskName}</> : <>{t("CompleteAssignment")}</>}
|
{assignment ? <>{assignment.taskName}</> : <>{t("CompleteAssignment")}</>}
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -4,15 +4,12 @@ import { Namespaces } from "../../../i18n/i18n";
|
|||||||
import Column from "../../../components/common/columns";
|
import Column from "../../../components/common/columns";
|
||||||
import { Paginated } from "../../../services/Paginated";
|
import { Paginated } from "../../../services/Paginated";
|
||||||
import Button, { ButtonType } from "../../../components/common/Button";
|
import Button, { ButtonType } from "../../../components/common/Button";
|
||||||
import { toast } from "react-toastify";
|
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import Permission from "../../../components/common/Permission";
|
import Permission from "../../../components/common/Permission";
|
||||||
import tasksService, { GetMyAssignments } from "./services/tasksService";
|
import tasksService, { GetMyAssignments } from "./services/tasksService";
|
||||||
import TasksTable from "./components/tasksTable";
|
import TasksTable from "./components/tasksTable";
|
||||||
|
|
||||||
const Tasks: React.FC = () => {
|
const Tasks: React.FC = () => {
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] = useState<Paginated<GetMyAssignments>>({
|
const [pagedData, setPagedData] = useState<Paginated<GetMyAssignments>>({
|
||||||
page: 1,
|
page: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@ -39,10 +36,7 @@ const Tasks: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[filters, sortColumn.key, sortColumn.order],
|
[filters, sortColumn.key, sortColumn.order],
|
||||||
@ -59,11 +53,8 @@ const Tasks: React.FC = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
setSortColumn(newSortColumn);
|
setSortColumn(newSortColumn);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -80,11 +71,8 @@ const Tasks: React.FC = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(newFilters);
|
setFilters(newFilters);
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -98,10 +86,7 @@ const Tasks: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -115,15 +100,13 @@ const Tasks: React.FC = () => {
|
|||||||
{t("CreateActivity")}
|
{t("CreateActivity")}
|
||||||
</Button>
|
</Button>
|
||||||
</Permission>
|
</Permission>
|
||||||
<Loading loaded={loaded}>
|
<TasksTable
|
||||||
<TasksTable
|
data={pagedData}
|
||||||
data={pagedData}
|
sortColumn={sortColumn}
|
||||||
sortColumn={sortColumn}
|
onChangePage={changePage}
|
||||||
onChangePage={changePage}
|
onSort={onSort}
|
||||||
onSort={onSort}
|
onSearch={onSearch}
|
||||||
onSearch={onSearch}
|
/>
|
||||||
/>
|
|
||||||
</Loading>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import { InputType } from "../../../../components/common/Input";
|
|||||||
import { GeneralIdRef, MakeGeneralIdRef } from "../../../../utils/GeneralIdRef";
|
import { GeneralIdRef, MakeGeneralIdRef } from "../../../../utils/GeneralIdRef";
|
||||||
import authentication from "../../../frame/services/authenticationService";
|
import authentication from "../../../frame/services/authenticationService";
|
||||||
import userService from "../services/usersService";
|
import userService from "../services/usersService";
|
||||||
import Loading from "../../../../components/common/Loading";
|
|
||||||
import { CustomFieldValue } from "../../glossary/services/glossaryService";
|
import { CustomFieldValue } from "../../glossary/services/glossaryService";
|
||||||
import {
|
import {
|
||||||
renderInput,
|
renderInput,
|
||||||
@ -145,7 +144,7 @@ const GeneralTab: React.FC<GeneralTabProps> = ({ isEditMode }) => {
|
|||||||
if (redirect) return <Navigate to={redirect} />;
|
if (redirect) return <Navigate to={redirect} />;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<form onSubmit={handleSubmit}>
|
<form onSubmit={handleSubmit}>
|
||||||
{renderError("_general", form.state.errors)}
|
{renderError("_general", form.state.errors)}
|
||||||
{isEditMode &&
|
{isEditMode &&
|
||||||
@ -235,7 +234,7 @@ const GeneralTab: React.FC<GeneralTabProps> = ({ isEditMode }) => {
|
|||||||
{isEditMode && renderButton(labelApply, form.state.errors, "save")}
|
{isEditMode && renderButton(labelApply, form.state.errors, "save")}
|
||||||
{renderButton(labelSave, form.state.errors, "save")}
|
{renderButton(labelSave, form.state.errors, "save")}
|
||||||
</form>
|
</form>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -7,12 +7,10 @@ import UsersTable from "./components/usersTable";
|
|||||||
import userService, { GetUser } from "./services/usersService";
|
import userService, { GetUser } from "./services/usersService";
|
||||||
import Button, { ButtonType } from "../../../components/common/Button";
|
import Button, { ButtonType } from "../../../components/common/Button";
|
||||||
import { toast } from "react-toastify";
|
import { toast } from "react-toastify";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import Permission from "../../../components/common/Permission";
|
import Permission from "../../../components/common/Permission";
|
||||||
|
|
||||||
const Users: React.FC = () => {
|
const Users: React.FC = () => {
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] = useState<Paginated<GetUser>>({
|
const [pagedData, setPagedData] = useState<Paginated<GetUser>>({
|
||||||
page: 1,
|
page: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@ -39,10 +37,7 @@ const Users: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[filters, sortColumn.key, sortColumn.order],
|
[filters, sortColumn.key, sortColumn.order],
|
||||||
@ -59,11 +54,8 @@ const Users: React.FC = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
setSortColumn(newSortColumn);
|
setSortColumn(newSortColumn);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -80,11 +72,8 @@ const Users: React.FC = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(newFilters);
|
setFilters(newFilters);
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -112,10 +101,7 @@ const Users: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -123,7 +109,7 @@ const Users: React.FC = () => {
|
|||||||
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<Permission privilegeKey="AddUser">
|
<Permission privilegeKey="AddUser">
|
||||||
<div>
|
<div>
|
||||||
<Button buttonType={ButtonType.primary} to="add">
|
<Button buttonType={ButtonType.primary} to="add">
|
||||||
@ -141,7 +127,7 @@ const Users: React.FC = () => {
|
|||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
resendConfirmEmail={resentConfirmEmail}
|
resendConfirmEmail={resentConfirmEmail}
|
||||||
/>
|
/>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,6 @@ import templateVersionsService, {
|
|||||||
ReadWorkflowTemplateVersion,
|
ReadWorkflowTemplateVersion,
|
||||||
TaskDefinition,
|
TaskDefinition,
|
||||||
} from "./services/WorkflowTemplateService";
|
} from "./services/WorkflowTemplateService";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import { toast } from "react-toastify";
|
import { toast } from "react-toastify";
|
||||||
import Joi from "joi";
|
import Joi from "joi";
|
||||||
import {
|
import {
|
||||||
@ -154,7 +153,7 @@ const WorkflowTemplateDetails: React.FC<{ editMode: boolean }> = ({
|
|||||||
});
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const { loaded, redirect, errors: formErrors, data } = form.state;
|
const { redirect, errors: formErrors, data } = form.state;
|
||||||
if (redirect) return <Navigate to={redirect} />;
|
if (redirect) return <Navigate to={redirect} />;
|
||||||
|
|
||||||
let errors = { ...formErrors };
|
let errors = { ...formErrors };
|
||||||
@ -214,32 +213,30 @@ const WorkflowTemplateDetails: React.FC<{ editMode: boolean }> = ({
|
|||||||
];
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<div className="full-height-container">
|
||||||
<div className="full-height-container">
|
<form onSubmit={handleSubmit}>
|
||||||
<form onSubmit={handleSubmit}>
|
<h1>{heading}</h1>
|
||||||
<h1>{heading}</h1>
|
|
||||||
|
|
||||||
<div style={{ marginBottom: "1rem" }}>
|
<div style={{ marginBottom: "1rem" }}>
|
||||||
{editMode && renderButton(t("Save"), errors, "apply")}
|
{editMode && renderButton(t("Save"), errors, "apply")}
|
||||||
{renderButton(t("SaveAndClose"), errors, "save")}
|
{renderButton(t("SaveAndClose"), errors, "save")}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{Object.keys(errors).length > 0 && (
|
{Object.keys(errors).length > 0 && (
|
||||||
<ErrorBlock error={t("ResolveAllValidation")} />
|
<ErrorBlock error={t("ResolveAllValidation")} />
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{renderError("_general", errors)}
|
{renderError("_general", errors)}
|
||||||
|
|
||||||
<HorizontalTabs
|
<HorizontalTabs
|
||||||
hashSegment={0}
|
hashSegment={0}
|
||||||
activeTab={activeTab}
|
activeTab={activeTab}
|
||||||
onTabChange={setActiveTab}
|
onTabChange={setActiveTab}
|
||||||
>
|
>
|
||||||
{tabs}
|
{tabs}
|
||||||
</HorizontalTabs>
|
</HorizontalTabs>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</Loading>
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,6 @@ import Button, { ButtonType } from "../../../components/common/Button";
|
|||||||
import Column from "../../../components/common/columns";
|
import Column from "../../../components/common/columns";
|
||||||
import Permission from "../../../components/common/Permission";
|
import Permission from "../../../components/common/Permission";
|
||||||
import { Paginated } from "../../../services/Paginated";
|
import { Paginated } from "../../../services/Paginated";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import workflowTemplatesService, {
|
import workflowTemplatesService, {
|
||||||
ReadWorkflowTemplate,
|
ReadWorkflowTemplate,
|
||||||
} from "./services/WorkflowTemplateService";
|
} from "./services/WorkflowTemplateService";
|
||||||
@ -13,7 +12,6 @@ import WorkflowTemplateManagerTable from "./components/WorkflowTemplateTable";
|
|||||||
|
|
||||||
const WotkflowTemplateManager: React.FC = () => {
|
const WotkflowTemplateManager: React.FC = () => {
|
||||||
const { t } = useTranslation(Namespaces.Common);
|
const { t } = useTranslation(Namespaces.Common);
|
||||||
const [loaded, setLoaded] = useState(false);
|
|
||||||
const [pagedData, setPagedData] = useState<Paginated<ReadWorkflowTemplate>>({
|
const [pagedData, setPagedData] = useState<Paginated<ReadWorkflowTemplate>>({
|
||||||
page: 1,
|
page: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@ -40,10 +38,7 @@ const WotkflowTemplateManager: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[filters, sortColumn.key, sortColumn.order],
|
[filters, sortColumn.key, sortColumn.order],
|
||||||
@ -60,11 +55,8 @@ const WotkflowTemplateManager: React.FC = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
setSortColumn(newSortColumn);
|
setSortColumn(newSortColumn);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -81,11 +73,8 @@ const WotkflowTemplateManager: React.FC = () => {
|
|||||||
newFilters,
|
newFilters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setFilters(newFilters);
|
setFilters(newFilters);
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -109,10 +98,7 @@ const WotkflowTemplateManager: React.FC = () => {
|
|||||||
filters,
|
filters,
|
||||||
);
|
);
|
||||||
if (data) {
|
if (data) {
|
||||||
setLoaded(true);
|
|
||||||
setPagedData(data);
|
setPagedData(data);
|
||||||
} else {
|
|
||||||
setLoaded(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -120,7 +106,7 @@ const WotkflowTemplateManager: React.FC = () => {
|
|||||||
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<Permission privilegeKey="AddOrganisation">
|
<Permission privilegeKey="AddOrganisation">
|
||||||
<Button buttonType={ButtonType.primary} to="add">
|
<Button buttonType={ButtonType.primary} to="add">
|
||||||
{t("Add")}
|
{t("Add")}
|
||||||
@ -140,7 +126,7 @@ const WotkflowTemplateManager: React.FC = () => {
|
|||||||
onSearch={onSearch}
|
onSearch={onSearch}
|
||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
/>
|
/>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import { Namespaces } from "../../../i18n/i18n";
|
|||||||
import profileService from "../services/profileService";
|
import profileService from "../services/profileService";
|
||||||
import { InputType } from "../../../components/common/Input";
|
import { InputType } from "../../../components/common/Input";
|
||||||
import { TwoFactorAuthenticationSettings } from "../models/TwoFactorAuthenticationSettings";
|
import { TwoFactorAuthenticationSettings } from "../models/TwoFactorAuthenticationSettings";
|
||||||
import Loading from "../../../components/common/Loading";
|
|
||||||
import {
|
import {
|
||||||
renderError,
|
renderError,
|
||||||
renderButton,
|
renderButton,
|
||||||
@ -172,7 +171,6 @@ const InternalProfile: React.FC = () => {
|
|||||||
form.handleSubmit(e, doSubmit);
|
form.handleSubmit(e, doSubmit);
|
||||||
};
|
};
|
||||||
|
|
||||||
const { loaded } = form.state;
|
|
||||||
const { usingTwoFactorAuthentication, newPassword } = form.state.data;
|
const { usingTwoFactorAuthentication, newPassword } = form.state.data;
|
||||||
const passwordMaxLength = 255;
|
const passwordMaxLength = 255;
|
||||||
|
|
||||||
@ -273,7 +271,7 @@ const InternalProfile: React.FC = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Loading loaded={loaded}>
|
<>
|
||||||
<h1>{t("Profile")}</h1>
|
<h1>{t("Profile")}</h1>
|
||||||
<form onSubmit={handleSubmit}>
|
<form onSubmit={handleSubmit}>
|
||||||
{renderError("_general", form.state.errors)}
|
{renderError("_general", form.state.errors)}
|
||||||
@ -345,7 +343,7 @@ const InternalProfile: React.FC = () => {
|
|||||||
<br />
|
<br />
|
||||||
{renderButton(labelApply, form.state.errors, "apply")}
|
{renderButton(labelApply, form.state.errors, "apply")}
|
||||||
</form>
|
</form>
|
||||||
</Loading>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user