Web: Changed logic according to layouts.

This commit is contained in:
Tatiana Lopaeva 2021-10-11 09:40:54 +03:00
parent 0badca9ea3
commit 9b2596fe91
5 changed files with 915 additions and 1802 deletions

View File

@ -52,7 +52,9 @@ const StyledAutoBackup = styled.div`
font-size: 13px;
}
}
.backup_toggle-btn {
position: static;
}
.schedule-backup_combobox {
display: inline-block;
margin-right: 8px;

View File

@ -1,166 +1,17 @@
import React from "react";
import { withTranslation } from "react-i18next";
import SelectFolderInput from "files/SelectFolderInput";
import SelectFolderDialog from "files/SelectFolderDialog";
import ScheduleComponent from "./scheduleComponent";
import SaveCancelButtons from "@appserver/components/save-cancel-buttons";
import {
createBackupSchedule,
getBackupSchedule,
} from "@appserver/common/api/portal";
import toastr from "@appserver/components/toast/toastr";
import { saveToSessionStorage, getFromSessionStorage } from "../.././../utils";
import { StyledAutoBackup } from "../styled-backup";
import TextInput from "@appserver/components/text-input";
let numberPeriodFromSessionStorage = null;
let dayFromSessionStorage = "";
let timeFromSessionStorage = "";
let maxCopiesFromSessionStorage = "";
const settingNames = ["day", "time", "maxCopies", "numberPeriod"];
class DocumentsModule extends React.Component {
constructor(props) {
super(props);
const {
t,
selectedWeekdayOption,
defaultSelectedOption,
defaultDay,
defaultHour,
defaultMaxCopies,
weekOptions,
monthlySchedule,
weeklySchedule,
dailySchedule,
periodOptions,
} = this.props;
//debugger;
dayFromSessionStorage = getFromSessionStorage("day");
timeFromSessionStorage = getFromSessionStorage("time");
maxCopiesFromSessionStorage = getFromSessionStorage("maxCopies");
numberPeriodFromSessionStorage = getFromSessionStorage("numberPeriod");
//debugger;
console.log("weekOptions", weekOptions);
console.log("selectedWeekdayOption", selectedWeekdayOption);
//debugger;
const weekName =
(numberPeriodFromSessionStorage === 2 && dayFromSessionStorage) ||
(weeklySchedule && dayFromSessionStorage)
? weekOptions[+dayFromSessionStorage - 1].label
: "";
const periodName = numberPeriodFromSessionStorage
? periodOptions[+numberPeriodFromSessionStorage - 1].label
: "";
const numberMaxCopies = maxCopiesFromSessionStorage
? maxCopiesFromSessionStorage.substring(
0,
maxCopiesFromSessionStorage.indexOf(" ")
)
: "";
const monthNumber = monthlySchedule
? dayFromSessionStorage || `${defaultDay}`
: dayFromSessionStorage || "1";
const weekdayNumber = weeklySchedule
? dayFromSessionStorage || defaultDay
: dayFromSessionStorage || "2";
const dayOption = numberPeriodFromSessionStorage
? numberPeriodFromSessionStorage === 1
: dailySchedule || false;
const weekdayOption = numberPeriodFromSessionStorage
? numberPeriodFromSessionStorage === 2
: weeklySchedule || false;
const monthOption = numberPeriodFromSessionStorage
? numberPeriodFromSessionStorage === 3
: monthlySchedule || false;
this.state = {
isPanelVisible: false,
isChanged: false,
selectedFolder: "",
isError: false,
isLoading: false,
monthlySchedule: monthOption,
dailySchedule: dayOption,
weeklySchedule: weekdayOption,
selectedOption:
periodName || defaultSelectedOption || t("DailyPeriodSchedule"),
selectedWeekdayOption: weekName || selectedWeekdayOption,
selectedNumberWeekdayOption: weekdayNumber,
selectedTimeOption: timeFromSessionStorage || defaultHour || "12:00",
selectedMonthOption: monthNumber,
selectedMaxCopies:
maxCopiesFromSessionStorage || defaultMaxCopies || "10",
selectedNumberMaxCopies: numberMaxCopies || defaultMaxCopies || "10",
isSetDefaultFolderPath: false,
};
this._isMounted = false;
this.folderDocumentsModulePath = "";
}
componentDidMount() {
this._isMounted = true;
const {
defaultStorageType,
defaultSelectedFolder,
onSetLoadingData,
} = this.props;
onSetLoadingData && onSetLoadingData(true);
this.checkChanges();
//debugger;
this.setState({ isLoading: true }, function () {
defaultStorageType && +defaultStorageType === 0
? SelectFolderDialog.getFolderPath(defaultSelectedFolder)
.then((folderPath) => {
this.folderDocumentsModulePath = folderPath;
})
.then(
() =>
this._isMounted &&
this.setState({
selectedFolder: defaultSelectedFolder,
})
)
.finally(
() =>
this.setState({
isLoading: false,
}) &&
onSetLoadingData &&
onSetLoadingData(false)
)
: this.setState({
isLoading: false,
}) &&
onSetLoadingData &&
onSetLoadingData(false);
});
}
componentWillUnmount() {
this._isMounted = false;
}
componentDidUpdate(prevState) {
const { isChanged, isSetDefaultFolderPath } = this.state;
if (isChanged !== prevState.isChanged && isSetDefaultFolderPath) {
this.setState({
isSetDefaultFolderPath: false,
});
}
}
onClickInput = () => {
this.setState({
isPanelVisible: true,
@ -172,477 +23,78 @@ class DocumentsModule extends React.Component {
isPanelVisible: false,
});
};
onSelectPeriod = (options) => {
console.log("options", options);
const key = options.key;
const label = options.label;
//debugger;
saveToSessionStorage("numberPeriod", key);
this.setState({ selectedOption: label });
key === 1
? this.setState(
{
weeklySchedule: false,
monthlySchedule: false,
dailySchedule: true,
},
function () {
this.checkChanges();
}
)
: key === 2
? this.setState(
{
weeklySchedule: true,
monthlySchedule: false,
dailySchedule: false,
},
function () {
this.checkChanges();
}
)
: this.setState(
{
monthlySchedule: true,
weeklySchedule: false,
dailySchedule: false,
},
function () {
this.checkChanges();
}
);
};
onSelectWeekDay = (options) => {
console.log("options", options);
const key = options.key;
const label = options.label;
//debugger;
saveToSessionStorage("day", key);
this.setState(
{
selectedNumberWeekdayOption: key,
selectedWeekdayOption: label,
},
function () {
this.checkChanges();
}
);
};
onSelectMonthNumberAndTimeOptions = (options) => {
const key = options.key;
const label = options.label;
if (key <= 24) {
saveToSessionStorage("time", label);
this.setState({ selectedTimeOption: label }, function () {
this.checkChanges();
});
} else {
saveToSessionStorage("day", label);
this.setState(
{
selectedMonthOption: label,
},
function () {
this.checkChanges();
}
);
}
};
onSelectMaxCopies = (options) => {
const key = options.key;
const label = options.label;
saveToSessionStorage("maxCopies", label);
this.setState(
{
selectedNumberMaxCopies: key,
selectedMaxCopies: label,
},
function () {
this.checkChanges();
}
);
};
onSelectFolder = (folderId) => {
console.log("folderId", folderId);
this._isMounted &&
this.setState({
selectedFolder: folderId,
isChanged: true,
});
};
checkChanges = () => {
const { defaultStorageType } = this.props;
const { isChanged } = this.state;
let changed;
if (defaultStorageType && +defaultStorageType === 0) {
changed = this.checkOptions();
isChanged !== changed &&
this.setState({
isChanged: changed,
});
return;
} else {
isChanged !== changed &&
this.setState({
isChanged: true,
});
return;
}
};
checkOptions = () => {
const {
selectedTimeOption,
dailySchedule,
monthlySchedule,
weeklySchedule,
selectedMonthOption,
selectedNumberMaxCopies,
selectedNumberWeekdayOption,
} = this.state;
const {
defaultHour,
defaultMaxCopies,
defaultPeriod,
defaultDay,
defaultSelectedWeekdayOption,
} = this.props;
//debugger;
if (selectedTimeOption !== defaultHour) {
return true;
}
if (+selectedNumberMaxCopies !== +defaultMaxCopies) {
return true;
}
if (+defaultPeriod === 0 && (monthlySchedule || weeklySchedule)) {
return true;
}
if (+defaultPeriod === 1 && (monthlySchedule || dailySchedule)) {
return true;
}
if (+defaultPeriod === 2 && (weeklySchedule || dailySchedule)) {
return true;
}
if (monthlySchedule) {
if (+selectedMonthOption !== defaultDay) {
return true;
}
}
if (weeklySchedule) {
if (+selectedNumberWeekdayOption !== defaultSelectedWeekdayOption) {
return true;
}
}
return false;
};
onSaveModuleSettings = () => {
const {
selectedFolder,
weeklySchedule,
selectedTimeOption,
monthlySchedule,
selectedMonthOption,
selectedNumberWeekdayOption,
selectedNumberMaxCopies,
isError,
} = this.state;
const {
t,
changedDefaultOptions,
onSetDefaultOptions,
onSetLoadingData,
weekdaysOptions,
} = this.props;
let storageParams = [];
if (!selectedFolder) {
this.setState({
isError: true,
});
return;
}
onSetLoadingData && onSetLoadingData(true);
settingNames.forEach((settingName) => {
saveToSessionStorage(settingName, "");
});
this.setState({ isLoadingData: true }, function () {
let period = weeklySchedule ? "1" : monthlySchedule ? "2" : "0";
let defaultSelectedFolder;
let day = weeklySchedule
? `${selectedNumberWeekdayOption}`
: monthlySchedule
? `${selectedMonthOption}`
: null;
let time = selectedTimeOption.substring(
0,
selectedTimeOption.indexOf(":")
);
let storageType = "0";
storageParams = [
{
key: "folderId",
value: selectedFolder,
},
];
let folderId;
createBackupSchedule(
storageType,
storageParams,
selectedNumberMaxCopies,
period,
time,
day
)
.then(() => getBackupSchedule())
.then((selectedSchedule) => {
if (selectedSchedule) {
folderId = selectedSchedule.storageParams.folderId;
defaultSelectedFolder = folderId;
const defaultStorageType = `${selectedSchedule.storageType}`;
const defaultHour = `${selectedSchedule.cronParams.hour}:00`;
const defaultPeriod = `${selectedSchedule.cronParams.period}`;
const defaultDay = selectedSchedule.cronParams.day;
const defaultMaxCopies = `${selectedSchedule.backupsStored}`;
changedDefaultOptions(
defaultSelectedFolder,
defaultStorageType,
defaultHour,
defaultPeriod,
defaultDay,
defaultMaxCopies
);
//debugger;
this.onSelectFolder(`${folderId}`);
}
})
.then(() => SelectFolderDialog.getFolderPath(folderId))
.then((folderPath) => {
this.folderDocumentsModulePath = folderPath;
})
.then(() => {
this._isMounted && onSetDefaultOptions();
})
.then(() => toastr.success(t("SuccessfullySaveSettingsMessage")))
.catch((error) => console.log("error", error))
.finally(() => {
this._isMounted && onSetLoadingData && onSetLoadingData(false);
if (isError && this._isMounted) this.setState({ isError: false });
this._isMounted &&
this.setState({
isLoadingData: false,
isChanged: false,
selectedFolder: defaultSelectedFolder,
});
});
});
};
onCancelModuleSettings = () => {
const {
onCancelModuleSettings,
periodOptions,
weekdaysOptions,
defaultPeriod,
defaultHour,
defaultMaxCopies,
defaultDay,
lng,
defaultWeekly,
defaultDaily,
defaultMonthly,
defaultStorageType,
onSetLoadingData,
} = this.props;
const {
monthlySchedule,
weeklySchedule,
isError,
} = this.state;
onSetLoadingData && onSetLoadingData(true);
settingNames.forEach((settingName) => {
saveToSessionStorage(settingName, "");
});
if (defaultStorageType) {
this.setState({
isSetDefaultFolderPath: true,
selectedTimeOption: defaultHour,
selectedMaxCopies: defaultMaxCopies,
selectedNumberMaxCopies: defaultMaxCopies,
});
if (
monthlySchedule === defaultWeekly ||
monthlySchedule === defaultDaily
) {
this.setState({
monthlySchedule: false,
});
}
if (
weeklySchedule === defaultMonthly ||
weeklySchedule === defaultDaily
) {
this.setState({
weeklySchedule: false,
});
}
let defaultSelectedOption;
let defaultSelectedWeekdayOption;
if (+defaultPeriod === 1) {
//Every Week option
//debugger;
const arrayIndex = lng === "en" ? defaultDay : defaultDay - 1; //selected number of week
defaultSelectedOption = periodOptions[1].label;
defaultSelectedWeekdayOption = defaultDay;
// defaultWeekly = true;
this.setState({
selectedOption: defaultSelectedOption,
weeklySchedule: true,
selectedWeekdayOption: weekdaysOptions[arrayIndex].label,
selectedNumberWeekdayOption: defaultDay,
});
} else {
if (+defaultPeriod === 2) {
//Every Month option
defaultSelectedOption = periodOptions[2].label;
this.setState({
selectedOption: defaultSelectedOption,
monthlySchedule: true,
selectedMonthOption: `${defaultDay}`, //selected day of month
});
} else {
defaultSelectedOption = periodOptions[0].label;
this.setState({
selectedOption: defaultSelectedOption,
});
}
}
}
if (isError) this.setState({ isError: false });
this.setState({ isChanged: false });
onCancelModuleSettings();
onSetLoadingData && onSetLoadingData(false);
};
render() {
const {
isChanged,
isPanelVisible,
selectedFolder,
selectedWeekdayOption,
selectedTimeOption,
selectedMonthOption,
selectedMaxCopies,
selectedOption,
isError,
isSetDefaultFolderPath,
weeklySchedule,
monthlySchedule,
isLoading,
} = this.state;
const { isPanelVisible, isLoading } = this.state;
const {
isLoadingData,
weekOptions,
periodOptions,
monthNumberOptionsArray,
timeOptionsArray,
maxNumberCopiesArray,
isCopyingToLocal,
t,
onSetLoadingData,
onSelectFolder,
weeklySchedule,
monthlySchedule,
selectedPeriodLabel,
selectedWeekdayLabel,
selectedHour,
selectedMonthDay,
selectedMaxCopies,
onSelectMaxCopies,
onSelectPeriod,
onSelectWeekDay,
onSelectMonthNumber,
onSelectTime,
periodsObject,
weekdaysLabelArray,
monthNumbersArray,
hoursArray,
maxNumberCopiesArray,
defaultSelectedFolder,
isReset,
resourcesModule,
isError,
} = this.props;
return (
<>
{!isLoading ? (
<SelectFolderInput
onSelectFolder={this.onSelectFolder}
name={"thirdParty"}
onClose={this.onClose}
onClickInput={this.onClickInput}
isPanelVisible={isPanelVisible}
folderPath={this.folderDocumentsModulePath}
isSetDefaultFolderPath={isSetDefaultFolderPath}
isError={isError}
onSetLoadingData={onSetLoadingData}
foldersType="common"
withoutProvider
isSavingProcess={isLoadingData}
/>
) : (
<StyledAutoBackup>
<TextInput className="input-with-folder-path" isDisabled={true} />
</StyledAutoBackup>
)}
<SelectFolderInput
onSelectFolder={onSelectFolder}
onClose={this.onClose}
onClickInput={this.onClickInput}
isPanelVisible={isPanelVisible}
isError={isError}
onSetLoadingData={onSetLoadingData}
foldersType="common"
withoutProvider
isSavingProcess={isLoadingData}
id={!resourcesModule ? defaultSelectedFolder : ""}
isReset={isReset}
onSetLoadingData={onSetLoadingData}
/>
<ScheduleComponent
isLoadingData={isLoadingData}
selectedPeriodLabel={selectedPeriodLabel}
selectedWeekdayLabel={selectedWeekdayLabel}
selectedMonthDay={selectedMonthDay}
selectedHour={selectedHour}
selectedMaxCopies={selectedMaxCopies}
monthNumbersArray={monthNumbersArray}
hoursArray={hoursArray}
maxNumberCopiesArray={maxNumberCopiesArray}
periodsObject={periodsObject}
weekdaysLabelArray={weekdaysLabelArray}
onSelectPeriod={onSelectPeriod}
onSelectWeekDay={onSelectWeekDay}
onSelectMonthNumber={onSelectMonthNumber}
onSelectTime={onSelectTime}
onSelectMaxCopies={onSelectMaxCopies}
weeklySchedule={weeklySchedule}
monthlySchedule={monthlySchedule}
weekOptions={weekOptions}
selectedOption={selectedOption}
selectedWeekdayOption={selectedWeekdayOption}
selectedTimeOption={selectedTimeOption}
selectedMonthOption={selectedMonthOption}
selectedMaxCopies={selectedMaxCopies}
isLoadingData={isLoadingData}
periodOptions={periodOptions}
monthNumberOptionsArray={monthNumberOptionsArray}
timeOptionsArray={timeOptionsArray}
maxNumberCopiesArray={maxNumberCopiesArray}
onSelectMaxCopies={this.onSelectMaxCopies}
onSelectMonthNumberAndTimeOptions={
this.onSelectMonthNumberAndTimeOptions
}
onSelectWeekDay={this.onSelectWeekDay}
onSelectPeriod={this.onSelectPeriod}
/>
{isChanged && (
<SaveCancelButtons
className="THIRD-PARTY team-template_buttons"
onSaveClick={this.onSaveModuleSettings}
onCancelClick={this.onCancelModuleSettings}
showReminder={false}
reminderTest={t("YouHaveUnsavedChanges")}
saveButtonLabel={t("Common:SaveButton")}
cancelButtonLabel={t("Common:CancelButton")}
isDisabled={isCopyingToLocal || isLoadingData}
/>
)}
</>
);
}

View File

@ -6,34 +6,39 @@ import Text from "@appserver/components/text";
const ScheduleComponent = ({
weeklySchedule,
monthlySchedule,
weekOptions,
selectedOption,
selectedWeekdayOption,
selectedTimeOption,
selectedMonthOption,
timeOptionsArray,
periodOptions,
monthNumberOptionsArray,
onSelectMonthNumberAndTimeOptions,
selectedPeriodLabel,
selectedWeekdayLabel,
selectedHour,
selectedMonthDay,
selectedMaxCopies,
onSelectMaxCopies,
maxNumberCopiesArray,
onSelectPeriod,
onSelectWeekDay,
onSelectMonthNumber,
onSelectTime,
isLoadingData,
isDisableOptions,
periodsObject,
weekdaysLabelArray,
monthNumbersArray,
hoursArray,
maxNumberCopiesArray,
}) => {
const { t } = useTranslation("Settings");
//console.log("selectedWeekdayOption", selectedWeekdayOption);
return (
<StyledScheduleComponent>
<Text className="schedule_description"> {t("ScheduleDescription")}</Text>
<div className="main_options">
<ComboBox
options={periodOptions}
options={periodsObject}
selectedOption={{
key: 0,
label: selectedOption,
label: selectedPeriodLabel,
}}
onSelect={onSelectPeriod}
isDisabled={isLoadingData || isDisableOptions}
@ -45,27 +50,28 @@ const ScheduleComponent = ({
/>
{weeklySchedule && (
<ComboBox
options={weekOptions}
options={weekdaysLabelArray}
selectedOption={{
key: 0,
label: selectedWeekdayOption,
label: selectedWeekdayLabel,
}}
onSelect={onSelectWeekDay}
isDisabled={isLoadingData || isDisableOptions}
noBorder={false}
scaled={false}
scaledOptions={true}
dropDownMaxHeight={400}
className="schedule-backup_combobox"
/>
)}
{monthlySchedule && (
<ComboBox
options={monthNumberOptionsArray}
options={monthNumbersArray}
selectedOption={{
key: 0,
label: selectedMonthOption,
label: selectedMonthDay,
}}
onSelect={onSelectMonthNumberAndTimeOptions}
onSelect={onSelectMonthNumber}
isDisabled={isLoadingData || isDisableOptions}
noBorder={false}
scaled={false}
@ -75,12 +81,12 @@ const ScheduleComponent = ({
/>
)}
<ComboBox
options={timeOptionsArray}
options={hoursArray}
selectedOption={{
key: 0,
label: selectedTimeOption,
label: selectedHour,
}}
onSelect={onSelectMonthNumberAndTimeOptions}
onSelect={onSelectTime}
isDisabled={isLoadingData || isDisableOptions}
noBorder={false}
scaled={false}

View File

@ -2,162 +2,17 @@ import React from "react";
import { withTranslation } from "react-i18next";
import { inject, observer } from "mobx-react";
import SelectFolderInput from "files/SelectFolderInput";
import SelectFolderDialog from "files/SelectFolderDialog";
import ScheduleComponent from "./scheduleComponent";
import SaveCancelButtons from "@appserver/components/save-cancel-buttons";
import {
createBackupSchedule,
getBackupSchedule,
} from "@appserver/common/api/portal";
import toastr from "@appserver/components/toast/toastr";
import TextInput from "@appserver/components/text-input";
import Box from "@appserver/components/box";
import Link from "@appserver/components/link";
import { saveToSessionStorage, getFromSessionStorage } from "../.././../utils";
import { StyledAutoBackup } from "../styled-backup";
let numberPeriodFromSessionStorage = null;
let dayFromSessionStorage = "";
let timeFromSessionStorage = "";
let maxCopiesFromSessionStorage = "";
const settingNames = ["day", "time", "maxCopies", "numberPeriod"];
class ThirdPartyModule extends React.Component {
constructor(props) {
super(props);
const {
t,
selectedWeekdayOption,
defaultSelectedOption,
defaultDay,
defaultHour,
defaultMaxCopies,
monthlySchedule,
weeklySchedule,
dailySchedule,
weekOptions,
periodOptions,
} = this.props;
dayFromSessionStorage = getFromSessionStorage("day");
timeFromSessionStorage = getFromSessionStorage("time");
maxCopiesFromSessionStorage = getFromSessionStorage("maxCopies");
numberPeriodFromSessionStorage = getFromSessionStorage("numberPeriod");
const weekName =
(numberPeriodFromSessionStorage === 2 && dayFromSessionStorage) ||
(weeklySchedule && dayFromSessionStorage)
? weekOptions[+dayFromSessionStorage - 1].label
: "";
const periodName = numberPeriodFromSessionStorage
? periodOptions[+numberPeriodFromSessionStorage - 1].label
: "";
const numberMaxCopies = maxCopiesFromSessionStorage
? maxCopiesFromSessionStorage.substring(
0,
maxCopiesFromSessionStorage.indexOf(" ")
)
: "";
const monthNumber = monthlySchedule
? dayFromSessionStorage || `${defaultDay}`
: dayFromSessionStorage || "1";
const weekdayNumber = weeklySchedule
? dayFromSessionStorage || defaultDay
: dayFromSessionStorage || "2";
const weekdayOption = numberPeriodFromSessionStorage
? numberPeriodFromSessionStorage === 2
: weeklySchedule || false;
const dayOption = numberPeriodFromSessionStorage
? numberPeriodFromSessionStorage === 1
: dailySchedule || false;
const monthOption = numberPeriodFromSessionStorage
? numberPeriodFromSessionStorage === 3
: monthlySchedule || false;
this.state = {
isPanelVisible: false,
isChanged: false,
selectedFolder: "",
isError: false,
isLoading: false,
monthlySchedule: monthOption,
dailySchedule: dayOption,
weeklySchedule: weekdayOption,
selectedOption:
periodName || defaultSelectedOption || t("DailyPeriodSchedule"),
selectedWeekdayOption: weekName || selectedWeekdayOption,
selectedNumberWeekdayOption: weekdayNumber,
selectedTimeOption: timeFromSessionStorage || defaultHour || "12:00",
selectedMonthOption: monthNumber,
selectedMaxCopies:
maxCopiesFromSessionStorage || defaultMaxCopies || "10",
selectedNumberMaxCopies: numberMaxCopies || defaultMaxCopies || "10",
isSetDefaultFolderPath: false,
};
this._isMounted = false;
}
componentDidMount() {
this._isMounted = true;
const {
defaultStorageType,
defaultSelectedFolder,
onSetLoadingData,
} = this.props;
onSetLoadingData && onSetLoadingData(true);
this.checkChanges();
//debugger;
this.setState({ isLoading: true }, function () {
+defaultStorageType === 1
? SelectFolderDialog.getFolderPath(defaultSelectedFolder)
.then(
(folderPath) => (this.folderThirdPartyModulePath = folderPath)
)
.then(
() =>
this._isMounted &&
this.setState({
selectedFolder: defaultSelectedFolder,
})
)
.finally(
() =>
this.setState({
isLoading: false,
}) &&
onSetLoadingData &&
onSetLoadingData(false)
)
: this.setState({
isLoading: false,
}) &&
onSetLoadingData &&
onSetLoadingData(false);
});
}
componentWillUnmount() {
this._isMounted = false;
}
componentDidUpdate(prevState) {
const { isChanged, isSetDefaultFolderPath } = this.state;
if (isChanged !== prevState.isChanged && isSetDefaultFolderPath) {
this.setState({
isSetDefaultFolderPath: false,
});
}
}
onClickInput = () => {
this.setState({
isPanelVisible: true,
@ -169,422 +24,47 @@ class ThirdPartyModule extends React.Component {
isPanelVisible: false,
});
};
onSelectPeriod = (options) => {
console.log("options", options);
const key = options.key;
const label = options.label;
//debugger;
saveToSessionStorage("numberPeriod", key);
this.setState({ selectedOption: label });
key === 1
? this.setState(
{
weeklySchedule: false,
monthlySchedule: false,
dailySchedule: true,
},
function () {
this.checkChanges();
}
)
: key === 2
? this.setState(
{
weeklySchedule: true,
monthlySchedule: false,
dailySchedule: false,
},
function () {
this.checkChanges();
}
)
: this.setState(
{
monthlySchedule: true,
weeklySchedule: false,
dailySchedule: false,
},
function () {
this.checkChanges();
}
);
};
onSelectWeekDay = (options) => {
console.log("options", options);
const key = options.key;
const label = options.label;
//debugger;
saveToSessionStorage("day", key);
this.setState(
{
selectedNumberWeekdayOption: key,
selectedWeekdayOption: label,
},
function () {
this.checkChanges();
}
);
};
onSelectMonthNumberAndTimeOptions = (options) => {
const key = options.key;
const label = options.label;
if (key <= 24) {
saveToSessionStorage("time", label);
this.setState({ selectedTimeOption: label }, function () {
this.checkChanges();
});
} else {
saveToSessionStorage("day", label);
this.setState(
{
selectedMonthOption: label,
},
function () {
this.checkChanges();
}
);
}
};
onSelectMaxCopies = (options) => {
const key = options.key;
const label = options.label;
saveToSessionStorage("maxCopies", label);
this.setState(
{
selectedNumberMaxCopies: key,
selectedMaxCopies: label,
},
function () {
this.checkChanges();
}
);
};
onSelectFolder = (folderId) => {
console.log("folderId", folderId);
this._isMounted &&
this.setState({
selectedFolder: folderId,
isChanged: true,
});
};
checkChanges = () => {
const { defaultStorageType } = this.props;
const { isChanged } = this.state;
//debugger;
let changed;
if (+defaultStorageType === 1) {
changed = this.checkOptions();
isChanged !== changed &&
this.setState({
isChanged: changed,
});
return;
} else {
isChanged !== changed &&
this.setState({
isChanged: true,
});
return;
}
};
checkOptions = () => {
const {
selectedTimeOption,
dailySchedule,
monthlySchedule,
weeklySchedule,
selectedMonthOption,
selectedNumberMaxCopies,
selectedNumberWeekdayOption,
} = this.state;
const {
defaultHour,
defaultMaxCopies,
defaultPeriod,
defaultDay,
defaultSelectedWeekdayOption,
} = this.props;
//debugger;
if (selectedTimeOption !== defaultHour) {
return true;
}
if (+selectedNumberMaxCopies !== +defaultMaxCopies) {
return true;
}
if (+defaultPeriod === 0 && (monthlySchedule || weeklySchedule)) {
return true;
}
if (+defaultPeriod === 1 && (monthlySchedule || dailySchedule)) {
return true;
}
if (+defaultPeriod === 2 && (weeklySchedule || dailySchedule)) {
return true;
}
if (monthlySchedule) {
if (+selectedMonthOption !== defaultDay) {
return true;
}
}
if (weeklySchedule) {
if (+selectedNumberWeekdayOption !== defaultSelectedWeekdayOption) {
return true;
}
}
return false;
};
onSaveModuleSettings = () => {
const {
selectedFolder,
weeklySchedule,
selectedTimeOption,
monthlySchedule,
selectedMonthOption,
selectedNumberWeekdayOption,
selectedNumberMaxCopies,
isError,
} = this.state;
const {
t,
changedDefaultOptions,
onSetDefaultOptions,
onSetLoadingData,
} = this.props;
let storageParams = [];
if (!selectedFolder) {
this.setState({
isError: true,
});
return;
}
onSetLoadingData && onSetLoadingData(true);
settingNames.forEach((settingName) => {
saveToSessionStorage(settingName, "");
});
this.setState({ isLoadingData: true }, function () {
let period = weeklySchedule ? "1" : monthlySchedule ? "2" : "0";
let defaultSelectedFolder;
let day = weeklySchedule
? `${selectedNumberWeekdayOption}`
: monthlySchedule
? `${selectedMonthOption}`
: null;
let time = selectedTimeOption.substring(
0,
selectedTimeOption.indexOf(":")
);
let storageType = "1";
storageParams = [
{
key: "folderId",
value: selectedFolder,
},
];
let folderId;
createBackupSchedule(
storageType,
storageParams,
selectedNumberMaxCopies,
period,
time,
day
)
.then(() => getBackupSchedule())
.then((selectedSchedule) => {
if (selectedSchedule) {
folderId = selectedSchedule.storageParams.folderId;
defaultSelectedFolder = folderId;
const defaultStorageType = `${selectedSchedule.storageType}`;
const defaultHour = `${selectedSchedule.cronParams.hour}:00`;
const defaultPeriod = `${selectedSchedule.cronParams.period}`;
const defaultDay = selectedSchedule.cronParams.day;
const defaultMaxCopies = `${selectedSchedule.backupsStored}`;
changedDefaultOptions(
defaultSelectedFolder,
defaultStorageType,
defaultHour,
defaultPeriod,
defaultDay,
defaultMaxCopies
);
this.onSelectFolder(`${folderId}`);
}
})
.then(() => SelectFolderDialog.getFolderPath(folderId))
.then((folderPath) => {
this.folderThirdPartyModulePath = folderPath;
})
.then(() => {
this._isMounted && onSetDefaultOptions();
})
.then(() => toastr.success(t("SuccessfullySaveSettingsMessage")))
.catch((error) => console.log("error", error))
.finally(() => {
this._isMounted && onSetLoadingData && onSetLoadingData(false);
if (isError && this._isMounted) this.setState({ isError: false });
this._isMounted &&
this.setState({
isLoadingData: false,
isChanged: false,
selectedFolder: defaultSelectedFolder,
});
});
});
};
onCancelModuleSettings = () => {
const {
onCancelModuleSettings,
periodOptions,
weekdaysOptions,
defaultPeriod,
defaultHour,
defaultMaxCopies,
defaultDay,
lng,
defaultWeekly,
defaultDaily,
defaultMonthly,
defaultStorageType,
onSetLoadingData,
} = this.props;
const {
monthlySchedule,
weeklySchedule,
isError,
} = this.state;
onSetLoadingData && onSetLoadingData(true);
settingNames.forEach((settingName) => {
saveToSessionStorage(settingName, "");
});
if (defaultStorageType) {
this.setState({
isSetDefaultFolderPath: true,
selectedTimeOption: defaultHour,
selectedMaxCopies: defaultMaxCopies,
selectedNumberMaxCopies: defaultMaxCopies,
});
if (
monthlySchedule === defaultWeekly ||
monthlySchedule === defaultDaily
) {
this.setState({
monthlySchedule: false,
});
}
if (
weeklySchedule === defaultMonthly ||
weeklySchedule === defaultDaily
) {
this.setState({
weeklySchedule: false,
});
}
let defaultSelectedOption;
let defaultSelectedWeekdayOption;
if (+defaultPeriod === 1) {
//Every Week option
//debugger;
const arrayIndex = lng === "en" ? defaultDay : defaultDay - 1; //selected number of week
defaultSelectedOption = periodOptions[1].label;
defaultSelectedWeekdayOption = defaultDay;
// defaultWeekly = true;
this.setState({
selectedOption: defaultSelectedOption,
weeklySchedule: true,
selectedWeekdayOption: weekdaysOptions[arrayIndex].label,
selectedNumberWeekdayOption: defaultDay,
});
} else {
if (+defaultPeriod === 2) {
//Every Month option
defaultSelectedOption = periodOptions[2].label;
this.setState({
selectedOption: defaultSelectedOption,
monthlySchedule: true,
selectedMonthOption: `${defaultDay}`, //selected day of month
});
} else {
defaultSelectedOption = periodOptions[0].label;
this.setState({
selectedOption: defaultSelectedOption,
});
}
}
}
if (isError) this.setState({ isError: false });
this.setState({ isChanged: false });
onCancelModuleSettings();
onSetLoadingData && onSetLoadingData(false);
};
render() {
const {
isChanged,
isPanelVisible,
selectedFolder,
selectedWeekdayOption,
selectedTimeOption,
selectedMonthOption,
selectedMaxCopies,
selectedOption,
isError,
isSetDefaultFolderPath,
weeklySchedule,
monthlySchedule,
isLoading,
} = this.state;
const { isPanelVisible } = this.state;
const {
isLoadingData,
weekOptions,
periodOptions,
monthNumberOptionsArray,
timeOptionsArray,
maxNumberCopiesArray,
isCopyingToLocal,
t,
onSetLoadingData,
helpUrlCreatingBackup,
onSelectFolder,
weeklySchedule,
monthlySchedule,
selectedPeriodLabel,
selectedWeekdayLabel,
selectedHour,
selectedMonthDay,
selectedMaxCopies,
onSelectMaxCopies,
onSelectPeriod,
onSelectWeekDay,
onSelectMonthNumber,
onSelectTime,
periodsObject,
weekdaysLabelArray,
monthNumbersArray,
hoursArray,
maxNumberCopiesArray,
defaultSelectedFolder,
isReset,
resourcesModule,
isError,
//helpUrlCreatingBackup,
// t,
} = this.props;
//console.log("selectedFolder THRDPARTY", selectedFolder);
// console.log("third-party module render", this.folderThirdPartyModulePath);
//console.log("selectedWeekdayOption", selectedWeekdayOption);
return (
<>
<Box marginProp="16px 0 16px 0">
{/* <Box marginProp="16px 0 16px 0">
<Link
color="#316DAA"
target="_blank"
@ -593,61 +73,42 @@ class ThirdPartyModule extends React.Component {
>
{t("Common:LearnMore")}
</Link>
</Box>
</Box> */}
<SelectFolderInput
onSelectFolder={onSelectFolder}
onClose={this.onClose}
onClickInput={this.onClickInput}
isPanelVisible={isPanelVisible}
isError={isError}
onSetLoadingData={onSetLoadingData}
foldersType="third-party"
isSavingProcess={isLoadingData}
id={resourcesModule ? defaultSelectedFolder : ""}
isReset={isReset}
onSetLoadingData={onSetLoadingData}
/>
{!isLoading ? (
<SelectFolderInput
onSelectFolder={this.onSelectFolder}
name={"thirdParty"}
onClose={this.onClose}
onClickInput={this.onClickInput}
isPanelVisible={isPanelVisible}
folderPath={this.folderThirdPartyModulePath}
isSetDefaultFolderPath={isSetDefaultFolderPath}
isError={isError}
onSetLoadingData={onSetLoadingData}
foldersType="third-party"
isSavingProcess={isLoadingData}
/>
) : (
<StyledAutoBackup>
<TextInput className="input-with-folder-path" isDisabled={true} />
</StyledAutoBackup>
)}
<ScheduleComponent
isLoadingData={isLoadingData}
selectedPeriodLabel={selectedPeriodLabel}
selectedWeekdayLabel={selectedWeekdayLabel}
selectedMonthDay={selectedMonthDay}
selectedHour={selectedHour}
selectedMaxCopies={selectedMaxCopies}
monthNumbersArray={monthNumbersArray}
hoursArray={hoursArray}
maxNumberCopiesArray={maxNumberCopiesArray}
periodsObject={periodsObject}
weekdaysLabelArray={weekdaysLabelArray}
onSelectPeriod={onSelectPeriod}
onSelectWeekDay={onSelectWeekDay}
onSelectMonthNumber={onSelectMonthNumber}
onSelectTime={onSelectTime}
onSelectMaxCopies={onSelectMaxCopies}
weeklySchedule={weeklySchedule}
monthlySchedule={monthlySchedule}
weekOptions={weekOptions}
selectedOption={selectedOption}
selectedWeekdayOption={selectedWeekdayOption}
selectedTimeOption={selectedTimeOption}
selectedMonthOption={selectedMonthOption}
selectedMaxCopies={selectedMaxCopies}
isLoadingData={isLoadingData}
periodOptions={periodOptions}
monthNumberOptionsArray={monthNumberOptionsArray}
timeOptionsArray={timeOptionsArray}
maxNumberCopiesArray={maxNumberCopiesArray}
//onClickCheckbox={onClickCheckbox}
onSelectMaxCopies={this.onSelectMaxCopies}
onSelectMonthNumberAndTimeOptions={
this.onSelectMonthNumberAndTimeOptions
}
onSelectWeekDay={this.onSelectWeekDay}
onSelectPeriod={this.onSelectPeriod}
/>
{isChanged && (
<SaveCancelButtons
className="THIRD-PARTY team-template_buttons"
onSaveClick={this.onSaveModuleSettings}
onCancelClick={this.onCancelModuleSettings}
showReminder={false}
reminderTest={t("YouHaveUnsavedChanges")}
saveButtonLabel={t("Common:SaveButton")}
cancelButtonLabel={t("Common:CancelButton")}
isDisabled={isCopyingToLocal || isLoadingData}
/>
)}
</>
);
}