mirror of https://gitee.com/cf-fz/WebCAD.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.7 KiB
102 lines
3.7 KiB
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
|
|
});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|