304 lines
10 KiB
HTML
304 lines
10 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html lang="zh">
|
|||
|
<head>
|
|||
|
<meta charset="UTF-8">
|
|||
|
<title>Title</title>
|
|||
|
<link rel="stylesheet" href="./css/index.css">
|
|||
|
</head>
|
|||
|
<style>
|
|||
|
html,
|
|||
|
body {
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
margin: 0;
|
|||
|
padding: 0;
|
|||
|
overflow: hidden;
|
|||
|
}
|
|||
|
|
|||
|
body {
|
|||
|
border-top: 1px solid #FFF2F2F2;
|
|||
|
}
|
|||
|
|
|||
|
/*---滚动条默认显示样式--*/
|
|||
|
.custom-scroll-bar::-webkit-scrollbar-thumb {
|
|||
|
background-color: #018EE8;
|
|||
|
height: 50px;
|
|||
|
outline-offset: -2px;
|
|||
|
outline: 2px solid #fff;
|
|||
|
-webkit-border-radius: 4px;
|
|||
|
border: 2px solid #fff;
|
|||
|
}
|
|||
|
|
|||
|
/*---鼠标点击滚动条显示样式--*/
|
|||
|
.custom-scroll-bar::-webkit-scrollbar-thumb:hover {
|
|||
|
background-color: #FB4446;
|
|||
|
height: 50px;
|
|||
|
-webkit-border-radius: 4px;
|
|||
|
}
|
|||
|
|
|||
|
/*---滚动条大小--*/
|
|||
|
.custom-scroll-bar::-webkit-scrollbar {
|
|||
|
width: 8px;
|
|||
|
height: 8px;
|
|||
|
}
|
|||
|
|
|||
|
/*---滚动框背景样式--*/
|
|||
|
.custom-scroll-bar::-webkit-scrollbar-track-piece {
|
|||
|
background-color: #fff;
|
|||
|
-webkit-border-radius: 0;
|
|||
|
}
|
|||
|
|
|||
|
.custom-scroll-bar::-webkit-scrollbar-thumb:active {
|
|||
|
height: 50px;
|
|||
|
background-color: #000;
|
|||
|
-webkit-border-radius: 4px;
|
|||
|
}
|
|||
|
|
|||
|
.wrap {
|
|||
|
/* border: 1px solid #006DB7; */
|
|||
|
overflow: hidden;
|
|||
|
}
|
|||
|
|
|||
|
.wrap:hover {
|
|||
|
overflow-y: auto;
|
|||
|
}
|
|||
|
|
|||
|
.yu-alert {
|
|||
|
margin: 0;
|
|||
|
width: auto;
|
|||
|
}
|
|||
|
|
|||
|
.yu-header {
|
|||
|
background-color: antiquewhite;
|
|||
|
}
|
|||
|
|
|||
|
.yu-sidebar {
|
|||
|
background-color: #FFFFFFFF;
|
|||
|
}
|
|||
|
|
|||
|
.yu-content {
|
|||
|
background-color: #FFFFFFFF;
|
|||
|
border-left: 1px solid #FFF2F2F2;
|
|||
|
}
|
|||
|
|
|||
|
.web-container {}
|
|||
|
|
|||
|
#log_output_ctrl {
|
|||
|
width: -webkit-calc(100% - 5px);
|
|||
|
height: 100%;
|
|||
|
}
|
|||
|
</style>
|
|||
|
<body>
|
|||
|
<div class="yu-layout">
|
|||
|
<div class="yu-layout-inline">
|
|||
|
<div class="yu-sidebar custom-scroll-bar wrap">
|
|||
|
<div class="yu-alert primary" style="width:200px"><i class="iconfont icon-tag"></i>项目名</div>
|
|||
|
<div class="web-container">
|
|||
|
<div id="menu" class="yu-menu light vertical">
|
|||
|
<!--菜单、子菜单-->
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="yu-layout-block">
|
|||
|
<div id="header-title" class="yu-alert primary">···</div>
|
|||
|
|
|||
|
<div class="yu-button-group">
|
|||
|
<button id="new" class="yu-button primary plain" onclick="generateCompileCommand(this.id)">new</button>
|
|||
|
<button id="app" class="yu-button primary plain" onclick="generateCompileCommand(this.id)">app</button>
|
|||
|
<button id="simulator" class="yu-button primary plain" onclick="generateCompileCommand(this.id)">simulator</button>
|
|||
|
<button id="resource" class="yu-button primary plain" onclick="generateCompileCommand(this.id)">resource</button>
|
|||
|
<button id="sim-res" class="yu-button primary plain" onclick="generateCompileCommand(this.id)">simulator + resource</button>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="yu-input">
|
|||
|
<input id="build-input" value="ping baidu.com" type="text" class="append"
|
|||
|
style="width:-webkit-calc(100% - 90px);" placeholder="编译命令">
|
|||
|
<button class="yu-button append primary" style="width:90px" onclick="goBuild()">Build</button>
|
|||
|
</div>
|
|||
|
|
|||
|
<div id="log_output_ctrl"></div>
|
|||
|
|
|||
|
<div class="yu-alert primary"><i class="iconfont icon-check-circle"></i>
|
|||
|
Hello<p style="float:right; margin:0;">World</p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</body>
|
|||
|
<script src="./js/index.js"></script>
|
|||
|
<script src="./js/ace/ace.js" type="text/javascript" charset="utf-8"></script>
|
|||
|
<!-- log窗口初始化,log回显 -->
|
|||
|
<script type="text/javascript">
|
|||
|
var logOutputCtrl = ace.edit("log_output_ctrl");
|
|||
|
logOutputCtrl.setTheme("ace/theme/terminal"); // 设置主题
|
|||
|
logOutputCtrl.getSession().setMode("ace/mode/log"); // 设置程序语言模式
|
|||
|
logOutputCtrl.setReadOnly(false); // 设置只读
|
|||
|
logOutputCtrl.renderer.setShowGutter(false); // 设置行号
|
|||
|
logOutputCtrl.setShowPrintMargin(false); // 设置打印边距
|
|||
|
logOutputCtrl.setHighlightActiveLine(false); // 设置选中高亮
|
|||
|
logOutputCtrl.setOption("wrap", "free"); // 自动换行,free:开,off:关
|
|||
|
document.getElementById('log_output_ctrl').style.fontSize='14px';
|
|||
|
|
|||
|
|
|||
|
function insertAtTheEndOfEditor(string) {
|
|||
|
var customPosition = {
|
|||
|
row: logOutputCtrl.session.getLength(),
|
|||
|
column: 0
|
|||
|
};
|
|||
|
logOutputCtrl.session.insert(customPosition, string);
|
|||
|
logOutputCtrl.renderer.scrollToLine(Number.POSITIVE_INFINITY)
|
|||
|
}
|
|||
|
|
|||
|
goBuild = async () => {
|
|||
|
var sBuildCommandValue = document.getElementById("build-input").value;
|
|||
|
if (null == sBuildCommandValue) {
|
|||
|
return false;
|
|||
|
}
|
|||
|
console.log(sBuildCommandValue)
|
|||
|
await cmdSpecial(sBuildCommandValue);
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<!-- 菜单初始化 -->
|
|||
|
<script type="text/javascript">
|
|||
|
function generateCompileCommand(compileType) {
|
|||
|
var str = document.getElementById("header-title").innerText;
|
|||
|
if ("···" == str) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
async function checkPlatform() {
|
|||
|
return await isT117();
|
|||
|
}
|
|||
|
checkPlatform().then(result=>insertCommandStr(result))
|
|||
|
|
|||
|
function insertCommandStr(isT117) {
|
|||
|
var sCommand;
|
|||
|
var project = str.match("project_(.*?).mk")[1];
|
|||
|
|
|||
|
if ("new" == compileType) {
|
|||
|
sCommand = "make p=" + project + " new job=8 -j4";
|
|||
|
}
|
|||
|
if ("app" == compileType) {
|
|||
|
sCommand = "make p=" + project + " m=app image update job=8 -j4";
|
|||
|
}
|
|||
|
if ("simulator" == compileType) {
|
|||
|
sCommand = "make p=" + project + " m=simulator job=8 -j4";
|
|||
|
}
|
|||
|
if ("resource" == compileType) {
|
|||
|
sCommand = "make p=" + project + " m=resource job=8 -j4";
|
|||
|
}
|
|||
|
if ("sim-res" == compileType) {
|
|||
|
sCommand = "make p=" + project + " m=simulator job=8 -j4 && ";
|
|||
|
sCommand += "make p=" + project + " m=resource job=8 -j4";
|
|||
|
}
|
|||
|
if (isT117){
|
|||
|
sCommand = sCommand.replace(/app/g,"app_main");
|
|||
|
sCommand = sCommand.replace(/simulator/g,"simulator_main");
|
|||
|
sCommand = sCommand.replace(/resource/g,"resource_main");
|
|||
|
}
|
|||
|
document.getElementById("build-input").value = sCommand;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function addEventListener2Menu(){
|
|||
|
var menuActivedSub = -1;
|
|||
|
var menuItemActivedSub = -1;
|
|||
|
var menus = document.querySelectorAll('.vertical .menu-title');
|
|||
|
var menuItems = document.querySelectorAll('.sub-menu .menu-item');
|
|||
|
|
|||
|
function menuShow(e) {
|
|||
|
var menuHeight = e.currentTarget.nextElementSibling.getElementsByClassName("menu-item").length * 40;
|
|||
|
e.currentTarget.classList.toggle('active', true);
|
|||
|
e.currentTarget.nextElementSibling.style.height = menuHeight + 'px';
|
|||
|
e.currentTarget.getElementsByClassName("iconfont")[0].classList.toggle('icon-f-text', false);
|
|||
|
e.currentTarget.getElementsByClassName("iconfont")[0].classList.toggle('icon-eye', true);
|
|||
|
}
|
|||
|
|
|||
|
function menuHide() {
|
|||
|
menus[menuActivedSub].classList.toggle('active', false);
|
|||
|
menus[menuActivedSub].nextElementSibling.style.height = '0';
|
|||
|
menus[menuActivedSub].getElementsByClassName("iconfont")[0].classList.toggle('icon-f-text', true);
|
|||
|
menus[menuActivedSub].getElementsByClassName("iconfont")[0].classList.toggle('icon-eye', false);
|
|||
|
}
|
|||
|
|
|||
|
Array.from(menus).forEach((item) => {
|
|||
|
item.addEventListener('click', function(e) {
|
|||
|
if (-1 == menuActivedSub) {
|
|||
|
//显示当前点击的菜单
|
|||
|
menuShow(e);
|
|||
|
} else if (-1 != menuActivedSub && e.currentTarget.classList.contains("active")) {
|
|||
|
//隐藏之前显示的菜单
|
|||
|
menuHide();
|
|||
|
} else if (-1 != menuActivedSub) {
|
|||
|
//隐藏之前显示的菜单
|
|||
|
menuHide();
|
|||
|
//显示当前点击的菜单
|
|||
|
menuShow(e);
|
|||
|
} else {
|
|||
|
alert("菜单显示/隐藏逻辑错误!");
|
|||
|
}
|
|||
|
//记录当前为显示状态的菜单下标
|
|||
|
for (var i = 0; i < menus.length; i++) {
|
|||
|
if (item == menus[i]) {
|
|||
|
menuActivedSub = i;
|
|||
|
}
|
|||
|
}
|
|||
|
})
|
|||
|
})
|
|||
|
|
|||
|
Array.from(menuItems).forEach((item) => {
|
|||
|
item.addEventListener('click', function(e) {
|
|||
|
//选中当前点击的菜单子项
|
|||
|
e.currentTarget.classList.add('active');
|
|||
|
|
|||
|
//隐藏非当前点击的、上一次选中的菜单子项
|
|||
|
if (-1 != menuItemActivedSub && e.currentTarget != menuItems[menuItemActivedSub]) {
|
|||
|
menuItems[menuItemActivedSub].classList.remove("active");
|
|||
|
}
|
|||
|
document.getElementById("header-title").innerText = e.currentTarget.id;
|
|||
|
//记录当前为选中状态的菜单子项下标
|
|||
|
for (var i = 0; i < menuItems.length; i++) {
|
|||
|
if (item == menuItems[i]) {
|
|||
|
menuItemActivedSub = i;
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
})
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
async function createMenus() {
|
|||
|
var allPrjName = await getAllPrjName();
|
|||
|
var para = document.getElementById("menu");
|
|||
|
for(i in allPrjName){
|
|||
|
var menu = ``;
|
|||
|
var menu_item = ``;
|
|||
|
var allMakefile = await getAllMakefile(allPrjName[i]);
|
|||
|
|
|||
|
for(j in allMakefile){
|
|||
|
var makefilePath = await getMakefilePath(allMakefile[j]);
|
|||
|
var marketName = await getMarketName(allMakefile[j]);
|
|||
|
menu_item += `<div id="`+ makefilePath +`" class="menu-item" style="padding-left: 30px">`+ marketName +`</div>`;
|
|||
|
}
|
|||
|
|
|||
|
menu += `
|
|||
|
<div class="sub-menu">
|
|||
|
<div class="menu-title"><i class="iconfont icon-f-text"></i>`+ allPrjName[i] +`
|
|||
|
<i class="iconfont icon-angle-down"></i></div>
|
|||
|
<div class="sub-menu" style="height: 0;overflow: hidden">
|
|||
|
`;
|
|||
|
menu += menu_item;
|
|||
|
menu += `
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
`;
|
|||
|
para.innerHTML += menu;
|
|||
|
}
|
|||
|
return "Create menus done."
|
|||
|
}
|
|||
|
|
|||
|
createMenus().then(result=>addEventListener2Menu())
|
|||
|
</script>
|
|||
|
</html>
|