tav-ui
Version:
220 lines (217 loc) • 7.57 kB
JavaScript
import { nextTick } from 'vue';
import '../../../../../locales/index2.mjs';
import '../../utils/index2.mjs';
import { tavI18n } from '../../../../../locales/transfer2.mjs';
import { validateVersionCachesHasApiFile } from '../../utils/validate2.mjs';
function useMode(options) {
const { mergedProps, VersionCachesController, handleApiDataSource, hasEmptyDataSource } = options;
function rowEditorApiOptions(apiParams, changeEventPayload) {
if (!mergedProps.value.apiUpdateFileNameAndLink) {
console.warn("[tavui TaFileCard] apiUpdateFileNameAndLink is undefined");
return;
}
const options2 = {
api: mergedProps.value.apiUpdateFileNameAndLink,
beforeApi: mergedProps.value.beforeApiUpdateFileNameAndLink,
afterApi: mergedProps.value.afterApiUpdateFileNameAndLink,
apiParams: {
appId: apiParams.appId,
...changeEventPayload
},
failureMessage: () => {
return tavI18n("Tav.common.httpError");
},
useSuccessPassRes: true
};
return options2;
}
function historyApiOptions(apiParams, file) {
if (!mergedProps.value.apiQueryFileHistory) {
console.warn("[tavui TaFileCard] apiQueryFileHistory is undefined");
return;
}
const options2 = {
api: mergedProps.value.apiQueryFileHistory,
apiParams: {
actualIds: [file.actualId]
},
failureMessage: () => {
return tavI18n("Tav.common.httpError");
}
};
return options2;
}
function deleteApiOptions(apiParams, row) {
if (!mergedProps.value.apiDeleteFile) {
console.warn("[tavui TaFileCard] apiDeleteFile is undefined");
return;
}
const options2 = {
api: mergedProps.value.apiDeleteFile,
beforeApi: mergedProps.value.beforeApiDeleteFile,
afterApi: mergedProps.value.afterApiDeleteFile,
apiParams: {
appId: apiParams.appId
},
failureMessage: () => {
return tavI18n("Tav.common.httpError");
},
useSuccessPassRes: true
};
if (mergedProps.value.mode === "read") {
} else if (mergedProps.value.mode === "create") {
} else if (mergedProps.value.mode === "update") {
} else {
options2["apiParams"] = {
...options2["apiParams"],
actualIds: [row.actualId]
};
}
return options2;
}
async function reloadRows(params) {
if (!mergedProps.value.visible)
return;
await nextTick();
const handleReload = async () => {
await handleApiDataSource(params);
};
if (mergedProps.value.mode === "read") {
if (!hasEmptyDataSource.value) {
console.warn('[tavui TaFileCard] "reload" not working in mode "read" combine with "dataSource"');
} else {
await handleReload();
}
} else if (mergedProps.value.mode === "create") {
if (!hasEmptyDataSource.value) {
console.warn('[tavui TaFileCard] "reload" not working in mode "create" combine with "dataSource"');
} else {
console.warn('[tavui TaFileCard] "reload" not working in mode "create"');
}
} else if (mergedProps.value.mode === "update") {
if (!hasEmptyDataSource.value) {
console.warn('[tavui TaFileCard] "reload" not working in mode "update" combine with "dataSource"');
} else {
await handleReload();
}
} else {
if (!hasEmptyDataSource.value) {
console.warn('[tavui TaFileCard] "reload" not working in mode "updateInstantly" combine with "dataSource"');
} else {
await handleReload();
}
}
}
async function editRow(changeEventPayload, _row, cardUpdateRows, editRowApiAction, hasEmptyDataSource2, refreshCardDataApiAction) {
const mode = mergedProps.value.mode;
const row = JSON.parse(JSON.stringify(_row));
function createNewRow() {
const newrow = { ...row };
if (changeEventPayload.name)
newrow.name = changeEventPayload.name;
if (newrow.hyperlink) {
if (changeEventPayload.address)
newrow.address = changeEventPayload.address;
} else {
if (changeEventPayload.name)
newrow.fullName = `${changeEventPayload.name}.${newrow.suffix}`;
}
return newrow;
}
async function action(newrow) {
await cardUpdateRows({
rows: [newrow],
deleteRows: [row]
});
}
if (mode === "read") {
} else if (mode === "create") {
const newrow = createNewRow();
VersionCachesController.updateFileCaches(newrow);
await editRowApiAction(changeEventPayload);
await action(newrow);
} else if (mode === "update") {
const newrow = createNewRow();
VersionCachesController.updateFileCaches(newrow);
!validateVersionCachesHasApiFile(VersionCachesController["caches"][row.actualId]) && await editRowApiAction(changeEventPayload);
await action(newrow);
} else {
const newrow = createNewRow();
VersionCachesController.updateFileCaches(newrow);
await editRowApiAction(changeEventPayload);
if (hasEmptyDataSource2.value) {
await refreshCardDataApiAction({ typeCodes: [mergedProps.value.value] });
} else {
await action(newrow);
}
}
}
async function updateRow(_row, _clickedRow, cardUpdateRows, hasEmptyDataSource2, refreshCardDataApiAction) {
const mode = mergedProps.value.mode;
const row = JSON.parse(JSON.stringify(_row));
const clickedRow = JSON.parse(JSON.stringify(_clickedRow));
async function action(updatedVersionRow) {
await cardUpdateRows({
rows: [{ ...clickedRow, ...updatedVersionRow ?? row }],
deleteRows: [clickedRow]
});
}
if (mode === "read") {
} else if (mode === "create") {
await action();
} else if (mode === "update") {
VersionCachesController.createFileCache(row, mode);
const latestVersionFileCache = VersionCachesController.readFileCacheLatestVersion(row.actualId);
await action(latestVersionFileCache);
} else {
VersionCachesController.createFileCache(row, mode);
if (hasEmptyDataSource2.value) {
await refreshCardDataApiAction({ typeCodes: [mergedProps.value.value] });
} else {
await action();
}
}
}
async function deleteRow(_clickedRow, cardDeleteRows, deleteRowApiAction, hasEmptyDataSource2, refreshCardDataApiAction, validate) {
const mode = mergedProps.value.mode;
const clickedRow = JSON.parse(JSON.stringify(_clickedRow));
async function action() {
await cardDeleteRows({
rows: [clickedRow]
});
}
if (mode === "read") {
} else if (mode === "create") {
await action();
mergedProps.value.autoValidate && await validate("change");
} else if (mode === "update") {
VersionCachesController.deleteFileCaches(clickedRow.actualId);
await action();
mergedProps.value.autoValidate && await validate("change");
} else {
VersionCachesController.deleteFileCaches(clickedRow.actualId);
if (hasEmptyDataSource2.value) {
await deleteRowApiAction();
await refreshCardDataApiAction({ typeCodes: [mergedProps.value.value] });
} else {
await action();
}
mergedProps.value.autoValidate && await validate("change");
}
}
return {
apiActions: {
rowEditorApiOptions,
historyApiOptions,
deleteApiOptions
},
dataActions: {
reloadRows,
editRow,
updateRow,
deleteRow
}
};
}
export { useMode };
//# sourceMappingURL=use-mode2.mjs.map