UNPKG

tav-ui

Version:
220 lines (217 loc) 7.57 kB
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