import { FileSystem } from "../Common/FileSystem"; import { ConfigUrls } from "../Common/HostUrl"; import { PostJson, RequestStatus } from "../Common/Request"; import { Command } from "../Editor/CommandMachine"; import { BoardModalType } from "../UI/Components/Board/BoardModal"; import { AppToaster } from "../UI/Components/Toaster"; import { userConfigStore } from "../UI/Store/UserConfigStore"; import { DrillStore } from "../UI/Store/DrillStore"; import { IndexedDbStore, StoreName } from "../IndexedDb/IndexedDbStore"; import { GetIndexDBID } from "../Common/Utils"; import { appCache } from "../Common/AppCache"; import { Intent } from "@blueprintjs/core"; export class DownLoadDConfig implements Command { async exec() { let keys = Object.values(BoardModalType); let allConfigs = {}; for (let key of keys) { allConfigs[key] = await userConfigStore.GetAllConfigs(key, false); } FileSystem.WriteFile("userconfig.json", JSON.stringify(allConfigs)); } } export class UpLoadConfig implements Command { async exec() { FileSystem.ChooseFile({ filter: ".json", callback: async (files) => { let f = files[0]; let fileData = JSON.parse(await FileSystem.ReadFileAsText(f)); for (let i in fileData) { if (fileData.hasOwnProperty(i) && fileData[i]) { let configs = (await userConfigStore.GetAllConfigs(i as BoardModalType, false)) || {}; Object.assign(configs, fileData[i]); await PostJson(ConfigUrls.Edit, { key: i, value: JSON.stringify(configs) }); } } AppToaster.show({ message: "上传完成", timeout: 1000, }); } }); } } export class DownloadHoleOption implements Command { async exec() { let configs = await userConfigStore.GetAllConfigs(BoardModalType.Dr, false); if (configs) { FileSystem.WriteFile("hole.json", JSON.stringify(configs)); } } } export class UploadHoleOption implements Command { async exec() { FileSystem.ChooseFile({ filter: ".json", callback: async (files) => { let f = files[0]; let fileData = JSON.parse(await FileSystem.ReadFileAsText(f)); let configs = await userConfigStore.GetAllConfigs(BoardModalType.Dr, false) || {}; let store = DrillStore.GetInstance() as DrillStore; for (let i in fileData) { if (fileData.hasOwnProperty(i) && fileData[i]) { let key = i + "_" + Date.now(); store.configsNames.push(key); configs[key] = fileData[i]; } } let data = await PostJson(ConfigUrls.Edit, { key: BoardModalType.Dr, value: JSON.stringify(configs) }); if (data.err_code === RequestStatus.Ok) { let dbStore = await IndexedDbStore.CADStore(); await dbStore.Put(StoreName.ConfigData, GetIndexDBID(BoardModalType.Dr), configs); await dbStore.Put(StoreName.ConfigVersion, GetIndexDBID(BoardModalType.Dr), data.version); appCache.set(BoardModalType.Dr, configs); AppToaster.show({ message: "导入排钻配置完成!", timeout: 3000, intent: Intent.SUCCESS }); } } }); } }