一键导出静态编辑器功能。

This commit is contained in:
tengge1 2019-03-17 20:51:26 +08:00
parent fc3261e9f3
commit f8de27a135
5 changed files with 436 additions and 487 deletions

View File

@ -1,420 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Results;
using System.Web;
using System.IO;
using MongoDB.Bson;
using MongoDB.Driver;
using Newtonsoft.Json.Linq;
using ShadowEditor.Server.Base;
using ShadowEditor.Server.Helpers;
using Newtonsoft.Json;
namespace ShadowEditor.Server.Controllers.Export
{
/// <summary>
/// 导出所有资源控制器
/// </summary>
public class ExportAllController : ApiBase
{
/// <summary>
/// 发布静态网站
/// </summary>
/// <returns></returns>
[HttpPost]
public JsonResult Run()
{
this.CopyAssets();
this.CreateDataFile();
return Json(new
{
Code = 200,
Msg = "发布成功!"
});
}
/// <summary>
/// 复制资源到示例文件夹
/// </summary>
private void CopyAssets()
{
var server = HttpContext.Current.Server;
// 复制html文件
var sourceName = server.MapPath("~/index.html");
var destName = server.MapPath("~/examples/index.html");
File.Copy(sourceName, destName, true);
var text = File.ReadAllText(destName).Replace("location.origin", "'.'"); // 使api路径变为当前目录
File.WriteAllText(destName, text);
// 复制dist文件夹
var dirName = server.MapPath("~/examples/dist/");
sourceName = server.MapPath("~/dist/ShadowEditor.js");
destName = server.MapPath("~/examples/dist/ShadowEditor.js");
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
File.Copy(sourceName, destName, true);
text = File.ReadAllText(destName).Replace("Load?ID=", "Scene_"); // 转换场景加载路径
File.WriteAllText(destName, text);
// 复制assets文件夹
sourceName = server.MapPath("~/assets");
destName = server.MapPath("~/examples/assets");
DirectoryHelper.Copy(sourceName, destName);
// 复制Upload文件夹
sourceName = server.MapPath("~/Upload");
destName = server.MapPath("~/examples/Upload");
DirectoryHelper.Copy(sourceName, destName);
// 复制网站图标
sourceName = server.MapPath("~/favicon.ico");
destName = server.MapPath("~/examples/favicon.ico");
File.Copy(sourceName, destName, true);
}
/// <summary>
/// 通过调用API接口创建数据文件
/// </summary>
private void CreateDataFile()
{
var server = HttpContext.Current.Server;
var dirName = server.MapPath("~/api/");
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
this.CreateAnimationDataFile();
this.CreateAudioDataFile();
this.CreateCategoryDataFile();
this.CreateMapDataFile();
this.CreateMaterialDataFile();
this.CreateMeshDataFile();
this.CreatePublishDataFile();
this.CreateSceneDataFile();
this.CreateUploadDataFile();
}
/// <summary>
/// 复制动画数据文件
/// </summary>
private void CreateAnimationDataFile()
{
var server = HttpContext.Current.Server;
var request = HttpContext.Current.Request;
var host = request.Url.Host;
var port = request.Url.Port;
var result = HttpHelper.Get($"http://{host}:{port}/api/Animation/List");
var dirName = server.MapPath("~/examples/api/Animation");
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var fileName = server.MapPath("~/examples/api/Animation/List");
File.WriteAllText(fileName, result);
// 其他接口
var apiList = new string[] { "/examples/api/Animation/Add", "/examples/api/Animation/Edit", "/examples/api/Animation/Delete" };
var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" });
foreach (var i in apiList)
{
fileName = server.MapPath($"~{i}");
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建音频数据文件
/// </summary>
private void CreateAudioDataFile()
{
var server = HttpContext.Current.Server;
var request = HttpContext.Current.Request;
var host = request.Url.Host;
var port = request.Url.Port;
var result = HttpHelper.Get($"http://{host}:{port}/api/Audio/List");
var dirName = server.MapPath("~/examples/api/Audio");
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var fileName = server.MapPath("~/examples/api/Audio/List");
File.WriteAllText(fileName, result);
// 其他接口
var apiList = new string[] { "/examples/api/Audio/Add", "/examples/api/Audio/Edit", "/examples/api/Audio/Delete" };
var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" });
foreach (var i in apiList)
{
fileName = server.MapPath($"~{i}");
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建类别数据文件
/// </summary>
private void CreateCategoryDataFile()
{
var server = HttpContext.Current.Server;
var request = HttpContext.Current.Request;
var host = request.Url.Host;
var port = request.Url.Port;
var result = HttpHelper.Get($"http://{host}:{port}/api/Category/List");
var dirName = server.MapPath("~/examples/api/Category");
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var fileName = server.MapPath("~/examples/api/Category/List");
File.WriteAllText(fileName, result);
// 其他接口
var apiList = new string[] { "/examples/api/Category/Save", "/examples/api/Category/Delete" };
var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" });
foreach (var i in apiList)
{
fileName = server.MapPath($"~{i}");
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建贴图数据文件
/// </summary>
private void CreateMapDataFile()
{
var server = HttpContext.Current.Server;
var request = HttpContext.Current.Request;
var host = request.Url.Host;
var port = request.Url.Port;
var result = HttpHelper.Get($"http://{host}:{port}/api/Map/List");
var dirName = server.MapPath("~/examples/api/Map");
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var fileName = server.MapPath("~/examples/api/Map/List");
File.WriteAllText(fileName, result);
// 其他接口
var apiList = new string[] { "/examples/api/Map/Add", "/examples/api/Map/Edit", "/examples/api/Map/Delete" };
var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" });
foreach (var i in apiList)
{
fileName = server.MapPath($"~{i}");
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建材质数据文件
/// </summary>
private void CreateMaterialDataFile()
{
var server = HttpContext.Current.Server;
var request = HttpContext.Current.Request;
var host = request.Url.Host;
var port = request.Url.Port;
var result = HttpHelper.Get($"http://{host}:{port}/api/Material/List");
var dirName = server.MapPath("~/examples/api/Material");
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var fileName = server.MapPath("~/examples/api/Material/List");
File.WriteAllText(fileName, result);
// 其他接口
var apiList = new string[] { "/examples/api/Material/Add", "/examples/api/Material/Edit", "/examples/api/Material/Delete" };
var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" });
foreach (var i in apiList)
{
fileName = server.MapPath($"~{i}");
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建模型数据文件
/// </summary>
private void CreateMeshDataFile()
{
var server = HttpContext.Current.Server;
var request = HttpContext.Current.Request;
var host = request.Url.Host;
var port = request.Url.Port;
var result = HttpHelper.Get($"http://{host}:{port}/api/Mesh/List");
var dirName = server.MapPath("~/examples/api/Mesh");
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var fileName = server.MapPath("~/examples/api/Mesh/List");
File.WriteAllText(fileName, result);
// 其他接口
var apiList = new string[] { "/examples/api/Mesh/Add", "/examples/api/Mesh/Edit", "/examples/api/Mesh/Delete" };
var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" });
foreach (var i in apiList)
{
fileName = server.MapPath($"~{i}");
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建发布数据文件
/// </summary>
private void CreatePublishDataFile()
{
var server = HttpContext.Current.Server;
var dirName = server.MapPath("~/examples/api/Publish/");
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 其他接口
var apiList = new string[] { "/examples/api/Publish/Publish" };
var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" });
foreach (var i in apiList)
{
var fileName = server.MapPath($"~{i}");
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建场景数据文件
/// </summary>
private void CreateSceneDataFile()
{
var server = HttpContext.Current.Server;
var request = HttpContext.Current.Request;
var host = request.Url.Host;
var port = request.Url.Port;
var result = HttpHelper.Get($"http://{host}:{port}/api/Scene/List");
var dirName = server.MapPath("~/examples/api/Scene");
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var fileName = server.MapPath("~/examples/api/Scene/List");
File.WriteAllText(fileName, result);
// 导出场景
var obj = JsonConvert.DeserializeObject<JObject>(result);
var array = obj["Data"] as JArray;
foreach (var i in array)
{
var id = i["ID"].ToString();
result = HttpHelper.Get($"http://{host}:{port}/api/Scene/Load?ID={id}");
fileName = server.MapPath($"~/examples/api/Scene/Scene_{id}");
File.WriteAllText(fileName, result);
}
// 其他接口
var apiList = new string[] { "/examples/api/Scene/Edit", "/examples/api/Scene/Save", "/examples/api/Scene/Delete" };
var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" });
foreach (var i in apiList)
{
fileName = server.MapPath($"~{i}");
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建上传数据文件
/// </summary>
private void CreateUploadDataFile()
{
var server = HttpContext.Current.Server;
var dirName = server.MapPath("~/examples/api/Upload");
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 其他接口
var apiList = new string[] { "/examples/api/Upload/Upload" };
var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "静态网站,操作失败!" });
foreach (var i in apiList)
{
var fileName = server.MapPath($"~{i}");
File.WriteAllText(fileName, data);
}
}
}
}

View File

@ -0,0 +1,410 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Results;
using System.Web;
using System.IO;
using MongoDB.Bson;
using MongoDB.Driver;
using Newtonsoft.Json.Linq;
using ShadowEditor.Server.Base;
using ShadowEditor.Server.Helpers;
using Newtonsoft.Json;
using System.Text;
namespace ShadowEditor.Server.Controllers.Export
{
/// <summary>
/// 导出编辑器控制器
/// </summary>
public class ExportEditorController : ApiBase
{
/// <summary>
/// 发布静态网站
/// </summary>
/// <returns></returns>
[HttpPost]
public JsonResult Run()
{
var now = DateTime.Now;
var path = HttpContext.Current.Server.MapPath($"~/temp/{now.ToString("yyyyMMddHHmmss")}");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
this.CopyAssets(path);
this.CreateDataFile(path);
return Json(new
{
Code = 200,
Msg = "导出成功!",
Url = $"/temp/{now.ToString("yyyyMMddHHmmss")}/editor.html"
});
}
/// <summary>
/// 复制资源到示例文件夹
/// </summary>
/// <param name="path"></param>
private void CopyAssets(string path)
{
// 复制html文件
var sourceName = HttpContext.Current.Server.MapPath("~/index.html");
var destName = $"{path}/editor.html";
File.Copy(sourceName, destName, true);
var text = File.ReadAllText(destName, Encoding.UTF8).Replace("location.origin", "'.'"); // 使api路径变为当前目录
File.WriteAllText(destName, text, Encoding.UTF8);
// 复制build文件夹
var dirName = $"{path}/build/";
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
sourceName = HttpContext.Current.Server.MapPath("~/build/ShadowEditor.js");
destName = $"{path}/build/ShadowEditor.js";
File.Copy(sourceName, destName, true);
// 复制assets文件夹
sourceName = HttpContext.Current.Server.MapPath("~/assets");
destName = $"{path}/assets";
DirectoryHelper.Copy(sourceName, destName);
// 复制语言包
sourceName = HttpContext.Current.Server.MapPath("~/lang");
destName = $"{path}/lang";
DirectoryHelper.Copy(sourceName, destName);
// 复制网站图标
sourceName = HttpContext.Current.Server.MapPath("~/favicon.ico");
destName = $"{path}/favicon.ico";
File.Copy(sourceName, destName, true);
}
/// <summary>
/// 通过调用API接口创建数据文件
/// </summary>
/// <param name="path"></param>
private void CreateDataFile(string path)
{
var dirName = $"{path}/api/";
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
this.CreateAnimationDataFile(path);
this.CreateAudioDataFile(path);
this.CreateCategoryDataFile(path);
this.CreateMapDataFile(path);
this.CreateMaterialDataFile(path);
this.CreateMeshDataFile(path);
this.CreateExportSceneDataFile(path);
this.CreateSceneDataFile(path);
this.CreateUploadDataFile(path);
this.CreateToolsDataFile(path);
}
/// <summary>
/// 复制动画数据文件
/// </summary>
/// <param name="path"></param>
private void CreateAnimationDataFile(string path)
{
var dirName = $"{path}/api/Animation";
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var fileName = $"{path}/api/Animation/List";
var data = JsonConvert.SerializeObject(new { Code = 200, Msg = "获取成功!", Data = new JArray() });
File.WriteAllText(fileName, data);
// 其他接口
var apiList = new string[] { "/api/Animation/Add", "/api/Animation/Edit", "/api/Animation/Delete" };
data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" });
foreach (var i in apiList)
{
fileName = $"{path}{i}";
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建音频数据文件
/// </summary>
/// <param name="path"></param>
private void CreateAudioDataFile(string path)
{
var dirName = $"{path}/api/Audio";
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var fileName = $"{path}/api/Audio/List";
var data = JsonConvert.SerializeObject(new { Code = 200, Msg = "获取成功!", Data = new JArray() });
File.WriteAllText(fileName, data);
// 其他接口
var apiList = new string[] { "/api/Audio/Add", "/api/Audio/Edit", "/api/Audio/Delete" };
data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" });
foreach (var i in apiList)
{
fileName = $"{path}{i}";
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建类别数据文件
/// </summary>
/// <param name="path"></param>
private void CreateCategoryDataFile(string path)
{
var dirName = $"{path}/api/Category";
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var host = HttpContext.Current.Request.Url.Host;
var port = HttpContext.Current.Request.Url.Port;
var result = HttpHelper.Get($"http://{host}:{port}/api/Category/List");
var fileName = $"{path}/api/Category/List";
File.WriteAllText(fileName, result);
// 其他接口
var apiList = new string[] { "/api/Category/Save", "/api/Category/Delete" };
var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" });
foreach (var i in apiList)
{
fileName = $"{path}{i}";
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建贴图数据文件
/// </summary>
/// <param name="path"></param>
private void CreateMapDataFile(string path)
{
var dirName = $"{path}/api/Map";
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var fileName = $"{path}/api/Map/List";
var data = JsonConvert.SerializeObject(new { Code = 200, Msg = "获取成功!", Data = new JArray() });
File.WriteAllText(fileName, data);
// 其他接口
var apiList = new string[] { "/api/Map/Add", "/api/Map/Edit", "/api/Map/Delete" };
data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" });
foreach (var i in apiList)
{
fileName = $"{path}{i}";
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建材质数据文件
/// </summary>
/// <param name="path"></param>
private void CreateMaterialDataFile(string path)
{
var dirName = $"{path}/api/Material";
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var fileName = $"{path}/api/Material/List";
var data = JsonConvert.SerializeObject(new { Code = 200, Msg = "获取成功!", Data = new JArray() });
File.WriteAllText(fileName, data);
// 其他接口
var apiList = new string[] { "/api/Material/Add", "/api/Material/Edit", "/api/Material/Delete" };
data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" });
foreach (var i in apiList)
{
fileName = $"{path}{i}";
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建模型数据文件
/// </summary>
/// <param name="path"></param>
private void CreateMeshDataFile(string path)
{
var dirName = $"{path}/api/Mesh";
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var fileName = $"{path}/api/Mesh/List";
var data = JsonConvert.SerializeObject(new { Code = 200, Msg = "获取成功!", Data = new JArray() });
File.WriteAllText(fileName, data);
// 其他接口
var apiList = new string[] { "/api/Mesh/Add", "/api/Mesh/Edit", "/api/Mesh/Delete" };
data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" });
foreach (var i in apiList)
{
fileName = $"{path}{i}";
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建导出场景数据文件
/// </summary>
/// <param name="path"></param>
private void CreateExportSceneDataFile(string path)
{
var dirName = $"{path}/api/ExportScene";
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 其他接口
var apiList = new string[] { "/api/ExportScene/Run" };
var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" });
foreach (var i in apiList)
{
var fileName = $"{path}{i}";
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建场景数据文件
/// </summary>
/// <param name="path"></param>
private void CreateSceneDataFile(string path)
{
var dirName = $"{path}/api/Scene";
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 获取列表
var fileName = $"{path}/api/Scene/List";
var data = JsonConvert.SerializeObject(new { Code = 200, Msg = "获取成功!", Data = new JArray() });
File.WriteAllText(fileName, data);
// 其他接口
var apiList = new string[] { "/api/Scene/Edit", "/api/Scene/Load", "/api/Scene/Save", "/api/Scene/Delete" };
data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" });
foreach (var i in apiList)
{
fileName = $"{path}{i}";
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建上传数据文件
/// </summary>
/// <param name="path"></param>
private void CreateUploadDataFile(string path)
{
var dirName = $"{path}/api/Upload";
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
// 其他接口
var apiList = new string[] { "/api/Upload/Upload" };
var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" });
foreach (var i in apiList)
{
var fileName = $"{path}{i}";
File.WriteAllText(fileName, data);
}
}
/// <summary>
/// 创建工具数据文件
/// </summary>
/// <param name="path"></param>
private void CreateToolsDataFile(string path)
{
// 其他接口
var apiList = new string[] { "/api/ArrangeMap", "/api/ArrangeMesh", "/api/ArrangeThumbnail" };
var data = JsonConvert.SerializeObject(new { Code = 300, Msg = "演示程序,操作失败!" });
foreach (var i in apiList)
{
var dirName = $"{path}{i}";
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
File.WriteAllText($"{dirName}/Run", data);
}
}
}
}

View File

@ -107,7 +107,7 @@
<Compile Include="Controllers\MeshController.cs" />
<Compile Include="Controllers\AudioController.cs" />
<Compile Include="Controllers\AnimationController.cs" />
<Compile Include="Controllers\Export\ExportAllController.cs" />
<Compile Include="Controllers\Export\ExportEditorController.cs" />
<Compile Include="Controllers\CategoryController.cs" />
<Compile Include="Controllers\MaterialController.cs" />
<Compile Include="Controllers\AssetsController.cs" />

View File

@ -49,14 +49,7 @@ SceneMenu.prototype.render = function () {
html: L_EXPORT_SCENE,
cls: 'option',
onClick: this.exportScene.bind(this)
}
// , {
// xtype: 'div',
// html: L_EXPORT_STATIC_WEBSITE,
// cls: 'option',
// onClick: this.exportAll.bind(this)
// }
]
}]
}]
});
@ -216,62 +209,4 @@ SceneMenu.prototype.exportScene = function () {
});
};
// ------------------------- 导出所有资源 ------------------------------
// SceneMenu.prototype.exportAll = function () {
// UI.confirm(L_PUBLISH_WEBSITE, L_CONFIRM_PUBLISH_WEBSITE, (event, btn) => {
// if (btn === 'ok') {
// Ajax.post(`${this.app.options.server}/api/ExportAll/Run`, function (result) {
// var obj = JSON.parse(result);
// UI.msg(obj.Msg);
// });
// }
// });
// };
// ------------------------ 本地打包发布 ---------------------------------------
// SceneMenu.prototype.publishSceneLocal = function () {
// var editor = this.app.editor;
// var zip = new JSZip();
// //
// var obj = (new Converter()).toJSON({
// options: this.app.options,
// camera: this.app.editor.camera,
// renderer: this.app.editor.renderer,
// scripts: this.app.editor.scripts,
// scene: this.app.editor.scene
// });
// var output = JSON.stringify(obj);
// zip.file('scene.json', output);
// // 保存数据
// var manager = new THREE.LoadingManager(() => {
// this.savePublishScene(zip.generate({
// type: 'blob'
// }), `${editor.sceneName}.zip`);
// });
// var loader = new THREE.FileLoader(manager);
// loader.load('index.html', content => {
// zip.file('index.html', content);
// });
// loader.load('dist/ShadowEditor.js', function (content) {
// zip.file('dist/ShadowEditor.js', content);
// });
// };
// SceneMenu.prototype.savePublishScene = function (text, filename) {
// var blob = new Blob([text], { type: 'text/plain' });
// this.link.href = URL.createObjectURL(blob);
// this.link.download = filename;
// this.link.click();
// };
export default SceneMenu;

View File

@ -42,6 +42,13 @@ ToolMenu.prototype.render = function () {
html: L_ARRANGE_THUMBNAIL,
cls: 'option',
onClick: this.onArrangeThumbnail.bind(this)
}, {
xtype: 'hr'
}, {
xtype: 'div',
html: '导出编辑器',
cls: 'option',
onClick: this.onExportEditor.bind(this)
}]
}]
});
@ -97,4 +104,21 @@ ToolMenu.prototype.onArrangeThumbnail = function () {
});
};
ToolMenu.prototype.onExportEditor = function () {
UI.confirm('询问', '是否导出编辑器?', (event, btn) => {
if (btn === 'ok') {
fetch(`${this.app.options.server}/api/ExportEditor/Run`, {
method: 'POST'
}).then(response => {
if (response.ok) {
response.json().then(json => {
UI.msg(json.Msg);
window.open(`${this.app.options.server}${json.Url}`, 'export');
});
}
});
}
});
};
export default ToolMenu;