123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- const utils = Editor.require('packages://build-helper/core/libs/utils.js');
- let ListItem;
- (() => {
- 'use strict';
- return function init ( panel ) {
- let viewEL = panel.$.view;
- let tmpl = 'packages://build-helper/panel/assets-hotupdate-setting.tmpl';
- Editor.import(tmpl).then(content => {
- viewEL.innerHTML = content;
- let assetsHotUpdate = `assetsHotUpdate`;
- let update = panel.getSettingItem(assetsHotUpdate) || {};
- // 热更开关
- let enableCheckboxEle = viewEL.querySelector('#enableCheckbox');
- enableCheckboxEle.value = update.enable;
- enableCheckboxEle.addEventListener('change', (event) => {
- update.enable = event.target.value;
- panel.setSettingItem(assetsHotUpdate, update);
- });
- // 热更远程URL
- let remoteUrlEle = viewEL.querySelector('#remoteUrl');
- remoteUrlEle.value = update.remoteUrl;
- remoteUrlEle.addEventListener('confirm', e => {
- if (!utils.isURL(event.target.value)) {
- Editor.error('请输入正确的URL');
- return;
- }
- update.remoteUrl = event.target.value;
- panel.setSettingItem(assetsHotUpdate, update);
- });
- // 支持平台
- let platformEle = viewEL.querySelector('#platform');
- platformEle.value = update.platform;
- platformEle.addEventListener('confirm', e => {
- update.platform = event.target.value;
- panel.setSettingItem(assetsHotUpdate, update);
- });
- // 检查manifest文件
- function checkManifest (relative) {
- let root = Editor.Project.path + '/' + relative;
- let assetsdb = 'db://';
- let assetsIdx = root.indexOf('assets');
- if (assetsIdx !== -1) {
- assetsdb += root.substr(assetsIdx, root.length);
- } else {
- assetsdb += '/assets';
- }
- let host = remoteUrlEle.value || 'http://localhost';
- let projectManifestPath = root + '/project.manifest';
- utils.accessPath(projectManifestPath, (err)=> {
- if (err && err.code === 'ENOENT') {
- let assetsdbProjectManifestPath = assetsdb + '/project.manifest';
- utils.createProjectManifestAssets(assetsdbProjectManifestPath, host, (err, results) => {
- if (err) {
- Editor.error(err);
- return;
- }
- });
- }
- });
- let versionManifestPath = root + '/version.manifest';
- utils.accessPath(versionManifestPath, (err)=> {
- if (err && err.code === 'ENOENT') {
- let assetsdbVersionManifestPath = assetsdb + '/version.manifest';
- utils.createVersionManifestAssets(assetsdbVersionManifestPath, host, (err, results) => {
- if (err) {
- Editor.error(err);
- return;
- }
- });
- }
- });
- }
- // 源码目录
- let srcEle = viewEL.querySelector('#src');
- srcEle.value = update.src;
- if (update.src) {
- checkManifest(update.src);
- }
- // 源码目录选择按钮
- let srcSelectBtnEle = viewEL.querySelector('#srcSelectBtn');
- srcSelectBtnEle.addEventListener('click', (event) => {
- let res = Editor.Dialog.openFile({
- title: '选择源码根目录',
- defaultPath: Editor.Project.path + '/assets',
- properties: ['openDirectory', 'createDirectory']
- });
- if (res !== -1) {
- let newPath = res[0];
- let projectPathIdx = newPath.indexOf(Editor.Project.path);
- if (projectPathIdx === -1) {
- srcEle.value = '';
- update.src = '';
- update.versionManifestUUID = '';
- Editor.warn('源码目录必须在本工程' + Editor.Project.path + '中');
- return;
- }
- let assetsIdx = newPath.indexOf('assets');
- if (assetsIdx === -1) {
- srcEle.value = '';
- update.src = '';
- update.versionManifestUUID = '';
- Editor.warn('源码目录必须在' + Editor.Project.path + '/assets中');
- return;
- }
- let relative = utils.getRelative(Editor.Project.path, newPath);
- srcEle.value = relative;
- checkManifest(relative);
- update.src = relative;
- panel.setSettingItem(assetsHotUpdate, update);
- }
- });
- // 目标目录
- let destEle = viewEL.querySelector('#dest');
- if (update.dest) {
- destEle.value = update.dest;
- }
- // 目标目录选择按钮
- let destSelectBtnEle = viewEL.querySelector('#destSelectBtn');
- destSelectBtnEle.addEventListener('click', (event) => {
- let res = Editor.Dialog.openFile({
- title: '选择目标根目录',
- defaultPath: Editor.Project.path,
- properties: ['openDirectory', 'createDirectory']
- });
- if (res !== -1) {
- let newPath = res[0];
- let relative = utils.getRelative(Editor.Project.path, newPath);
- destEle.value = relative;
- update.dest = relative;
- panel.setSettingItem(assetsHotUpdate, update);
- }
- });
- let ignores = update.ignores || [];
- let listEle = viewEL.querySelector('#list');
- if (!ListItem) {
- ListItem = Editor.UI.registerElement('update-ignore-list-item', {
- template: `
- <div class="item"">
- <ui-input id="path" class="path" disabled></ui-input>
- <ui-button id="del" class="tiny red">删除</ui-button>
- </div>
- `,
- style: `
- .item {
- display: flex;
- background-color: black;
- padding: 2px;
- }
- .path {
- flex: 1;
- }
- `,
- factoryImpl ( text ) {
- this.$ = {
- path: this.shadowRoot.querySelector('#path'),
- del: this.shadowRoot.querySelector('#del')
- };
- this.$.path.value = text;
- this.$.del.addEventListener('click', (event) => {
- listEle.removeChild(this);
- // 配置中删除
- for (let i = 0; i < ignores.length; i++) {
- const path = ignores[i];
- if (path == text) {
- ignores.splice(i, 1);
- break;
- }
- }
- });
- }
- });
- }
- // 资源列表
- ignores.forEach(path => {
- let el = new ListItem(path);
- listEle.appendChild(el);
- });
- // 添加资源
- let addEle = viewEL.querySelector('#add');
- addEle.addEventListener('click', (event) => {
- event.stopPropagation();
- let res = Editor.Dialog.openFile({
- title: '选择需要忽略的资源目录文件',
- defaultPath: Editor.Project.path + '/assets',
- properties: ['openDirectory', 'openFile']
- });
- if (res !== -1) {
- let newPath = res[0];
- let relative = utils.getRelative(Editor.Project.path, newPath);
- for (const path of ignores) {
- if (path === relative) {
- Editor.log(relative + '已经存在!');
- return;
- }
- }
- let el = new ListItem(relative);
- listEle.appendChild(el);
- ignores.push(relative);
- update.ignores = ignores;
- panel.setSettingItem(assetsHotUpdate, update);
- }
- });
- });
- };
- })();
|