关闭 tab 按入栈顺序设置当前 tab
This commit is contained in:
parent
86e1d6ecc7
commit
a7b5fb1bcd
|
@ -3,7 +3,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>
|
<title>
|
||||||
{{.i18n.wide}}
|
{{.i18n.wide}}
|
||||||
|
|
||||||
</title>
|
</title>
|
||||||
<link rel="stylesheet" href="{{.conf.StaticServer}}/static/js/lib/codemirror-4.5/codemirror.css">
|
<link rel="stylesheet" href="{{.conf.StaticServer}}/static/js/lib/codemirror-4.5/codemirror.css">
|
||||||
<link rel="stylesheet" href="{{.conf.StaticServer}}/static/js/lib/codemirror-4.5/addon/hint/show-hint.css">
|
<link rel="stylesheet" href="{{.conf.StaticServer}}/static/js/lib/codemirror-4.5/addon/hint/show-hint.css">
|
||||||
|
@ -24,25 +25,29 @@
|
||||||
<ul class="fn-cleaer">
|
<ul class="fn-cleaer">
|
||||||
<li>
|
<li>
|
||||||
<span>
|
<span>
|
||||||
{{.i18n.file}}
|
{{.i18n.file}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
<div class="frame">
|
<div class="frame">
|
||||||
<ul>
|
<ul>
|
||||||
<li class="save-all disabled" onclick="wide.saveAllFiles()">
|
<li class="save-all disabled" onclick="wide.saveAllFiles()">
|
||||||
<span>
|
<span>
|
||||||
{{.i18n.save_all_files}}
|
{{.i18n.save_all_files}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="close-all disabled" onclick="wide.closeAllFiles()">
|
<li class="close-all disabled" onclick="wide.closeAllFiles()">
|
||||||
<span>
|
<span>
|
||||||
{{.i18n.close_all_files}}
|
{{.i18n.close_all_files}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="hr">
|
<li class="hr">
|
||||||
</li>
|
</li>
|
||||||
<li onclick="wide.exit()">
|
<li onclick="wide.exit()">
|
||||||
<span>
|
<span>
|
||||||
{{.i18n.exit}}
|
{{.i18n.exit}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -50,25 +55,29 @@
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span>
|
<span>
|
||||||
{{.i18n.run}}
|
{{.i18n.run}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
<div class="frame">
|
<div class="frame">
|
||||||
<ul>
|
<ul>
|
||||||
<li class="run disabled" onclick="wide.run()">
|
<li class="run disabled" onclick="wide.run()">
|
||||||
<span>
|
<span>
|
||||||
{{.i18n.build_n_run}}
|
{{.i18n.build_n_run}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="hr">
|
<li class="hr">
|
||||||
</li>
|
</li>
|
||||||
<li class="go-get disabled" onclick="wide.goget()">
|
<li class="go-get disabled" onclick="wide.goget()">
|
||||||
<span>
|
<span>
|
||||||
{{.i18n.goget}}
|
{{.i18n.goget}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="go-install disabled" onclick="wide.goinstall()">
|
<li class="go-install disabled" onclick="wide.goinstall()">
|
||||||
<span>
|
<span>
|
||||||
{{.i18n.goinstall}}
|
{{.i18n.goinstall}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -88,29 +97,34 @@
|
||||||
-->
|
-->
|
||||||
<li>
|
<li>
|
||||||
<span>
|
<span>
|
||||||
{{.i18n.help}}
|
{{.i18n.help}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
<div class="frame">
|
<div class="frame">
|
||||||
<ul>
|
<ul>
|
||||||
<li onclick="window.open('https://www.gitbook.io/book/88250/wide-user-guide')">
|
<li onclick="window.open('https://www.gitbook.io/book/88250/wide-user-guide')">
|
||||||
<span>
|
<span>
|
||||||
{{.i18n.wide_doc}}
|
{{.i18n.wide_doc}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li onclick="window.open('https://github.com/b3log/wide/issues/new')">
|
<li onclick="window.open('https://github.com/b3log/wide/issues/new')">
|
||||||
{{.i18n.report_issues}}
|
{{.i18n.report_issues}}
|
||||||
|
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
<li class="hr">
|
<li class="hr">
|
||||||
</li>
|
</li>
|
||||||
<li onclick="editors.openStartPage()">
|
<li onclick="editors.openStartPage()">
|
||||||
<span>
|
<span>
|
||||||
{{.i18n.start_page}}
|
{{.i18n.start_page}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li onclick="wide.openAbout()">
|
<li onclick="wide.openAbout()">
|
||||||
<span>
|
<span>
|
||||||
{{.i18n.about}}
|
{{.i18n.about}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -125,7 +139,8 @@
|
||||||
<div class="tabs">
|
<div class="tabs">
|
||||||
<div class="current" data-index="filreTree">
|
<div class="current" data-index="filreTree">
|
||||||
<span title="{{.i18n.file}}">
|
<span title="{{.i18n.file}}">
|
||||||
{{.i18n.file}}
|
{{.i18n.file}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -137,13 +152,16 @@
|
||||||
<div id="dirRMenu" class="frame">
|
<div id="dirRMenu" class="frame">
|
||||||
<ul>
|
<ul>
|
||||||
<li onclick="tree.newFile();">
|
<li onclick="tree.newFile();">
|
||||||
{{.i18n.create_file}}
|
{{.i18n.create_file}}
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
<li onclick="tree.newDir();">
|
<li onclick="tree.newDir();">
|
||||||
{{.i18n.create_dir}}
|
{{.i18n.create_dir}}
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
<li onclick="tree.removeIt();">
|
<li onclick="tree.removeIt();">
|
||||||
{{.i18n.delete}}
|
{{.i18n.delete}}
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -151,7 +169,8 @@
|
||||||
<div id="fileRMenu" class="frame">
|
<div id="fileRMenu" class="frame">
|
||||||
<ul>
|
<ul>
|
||||||
<li onclick="tree.removeIt();">
|
<li onclick="tree.removeIt();">
|
||||||
{{.i18n.delete}}
|
{{.i18n.delete}}
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -180,17 +199,20 @@
|
||||||
<div class="tabs">
|
<div class="tabs">
|
||||||
<div class="current" data-index="output">
|
<div class="current" data-index="output">
|
||||||
<span title="{{.i18n.output}}">
|
<span title="{{.i18n.output}}">
|
||||||
{{.i18n.output}}
|
{{.i18n.output}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div data-index="search">
|
<div data-index="search">
|
||||||
<span title="{{.i18n.search}}">
|
<span title="{{.i18n.search}}">
|
||||||
{{.i18n.search}}
|
{{.i18n.search}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div data-index="notification">
|
<div data-index="notification">
|
||||||
<span title="{{.i18n.notification}}">
|
<span title="{{.i18n.notification}}">
|
||||||
{{.i18n.notification}}
|
{{.i18n.notification}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -235,15 +257,18 @@
|
||||||
<span class="cursor">
|
<span class="cursor">
|
||||||
</span>
|
</span>
|
||||||
<span class="notification-count" title="{{.i18n.unread_notification}}">
|
<span class="notification-count" title="{{.i18n.unread_notification}}">
|
||||||
{{.i18n.notification}}!
|
{{.i18n.notification}}!
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="dialogRemoveConfirm" class="fn-none">
|
<div id="dialogRemoveConfirm" class="fn-none">
|
||||||
{{.i18n.isDelete}}
|
{{.i18n.isDelete}}
|
||||||
|
|
||||||
<b>
|
<b>
|
||||||
</b>
|
</b>
|
||||||
?
|
?
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="dialogAlert" class="fn-none">
|
<div id="dialogAlert" class="fn-none">
|
||||||
|
@ -262,44 +287,45 @@
|
||||||
<input placeholder="{{.i18n.file_format}}" />
|
<input placeholder="{{.i18n.file_format}}" />
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var config = {
|
var config = {
|
||||||
"pathSeparator": {{.pathSeparator}},
|
"pathSeparator": {{.pathSeparator}},
|
||||||
"latestSessionContent": {{.latestSessionContent}},
|
"latestSessionContent": {{.latestSessionContent}},
|
||||||
"label": {
|
"label": {
|
||||||
"restore_editor": "{{.i18n.restore_editor}}",
|
"restore_editor": "{{.i18n.restore_editor}}",
|
||||||
"max_editor": "{{.i18n.max_editor}}",
|
"max_editor": "{{.i18n.max_editor}}",
|
||||||
"delete": "{{.i18n.delete}}",
|
"delete": "{{.i18n.delete}}",
|
||||||
"cancel": "{{.i18n.cancel}}",
|
"cancel": "{{.i18n.cancel}}",
|
||||||
"goto_line": "{{.i18n.goto_line}}",
|
"goto_line": "{{.i18n.goto_line}}",
|
||||||
"goto": "{{.i18n.goto}}",
|
"goto": "{{.i18n.goto}}",
|
||||||
"create": "{{.i18n.create}}",
|
"create": "{{.i18n.create}}",
|
||||||
"create_file": "{{.i18n.create_file}}",
|
"create_file": "{{.i18n.create_file}}",
|
||||||
"create_dir": "{{.i18n.create_dir}}",
|
"create_dir": "{{.i18n.create_dir}}",
|
||||||
"tip": "{{.i18n.tip}}",
|
"tip": "{{.i18n.tip}}",
|
||||||
"confirm": "{{.i18n.confirm}}",
|
"confirm": "{{.i18n.confirm}}",
|
||||||
"build_n_run": "{{.i18n.build_n_run}}",
|
"build_n_run": "{{.i18n.build_n_run}}",
|
||||||
"stop": "{{.i18n.stop}}",
|
"stop": "{{.i18n.stop}}",
|
||||||
"usages": "{{.i18n.usages}}",
|
"usages": "{{.i18n.usages}}",
|
||||||
"search_text": "{{.i18n.search_text}}",
|
"search_text": "{{.i18n.search_text}}",
|
||||||
"search": "{{.i18n.search}}",
|
"search": "{{.i18n.search}}",
|
||||||
"initialise": "{{.i18n.initialise}}",
|
"initialise": "{{.i18n.initialise}}",
|
||||||
"confirm_save": "{{.i18n.confirm_save}}"
|
"confirm_save": "{{.i18n.confirm_save}}"
|
||||||
},
|
},
|
||||||
"channel": {
|
"channel": {
|
||||||
"editor": '{{.conf.EditorChannel}}',
|
"editor": '{{.conf.EditorChannel}}',
|
||||||
"shell": '{{.conf.ShellChannel}}',
|
"shell": '{{.conf.ShellChannel}}',
|
||||||
"output": '{{.conf.OutputChannel}}',
|
"output": '{{.conf.OutputChannel}}',
|
||||||
"session": '{{.conf.SessionChannel}}'
|
"session": '{{.conf.SessionChannel}}'
|
||||||
},
|
},
|
||||||
"wideSessionId": '{{.session.Id}}'
|
"wideSessionId": '{{.session.Id}}'
|
||||||
};
|
};
|
||||||
// 发往 Wide 的所有 AJAX 请求需要使用该函数创建请求参数.
|
// 发往 Wide 的所有 AJAX 请求需要使用该函数创建请求参数.
|
||||||
function newWideRequest() {
|
function newWideRequest() {
|
||||||
var ret = {
|
var ret = {
|
||||||
sid: config.wideSessionId
|
sid: config.wideSessionId
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -6,11 +6,6 @@
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startPage .workspace {
|
|
||||||
line-height: 16px;
|
|
||||||
margin-bottom: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#startPage a {
|
#startPage a {
|
||||||
color: #4183c4;
|
color: #4183c4;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
@ -44,6 +39,14 @@
|
||||||
border-bottom: 1px solid #f1f1f1;
|
border-bottom: 1px solid #f1f1f1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#startPage .details li.border.workspace {
|
||||||
|
line-height: 18px;
|
||||||
|
padding-bottom: 10px !important;
|
||||||
|
word-wrap: break-word;
|
||||||
|
white-space: normal;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
#startPage .news {
|
#startPage .news {
|
||||||
height: 300px;
|
height: 300px;
|
||||||
width: 60%;
|
width: 60%;
|
||||||
|
|
|
@ -4,6 +4,7 @@ var Tabs = function (obj) {
|
||||||
obj._stack = [];
|
obj._stack = [];
|
||||||
|
|
||||||
this.obj = obj;
|
this.obj = obj;
|
||||||
|
this.obj.STACKSIZE = 64;
|
||||||
|
|
||||||
this._init(obj);
|
this._init(obj);
|
||||||
};
|
};
|
||||||
|
@ -60,25 +61,26 @@ $.extend(Tabs.prototype, {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
del: function (id) {
|
del: function (id) {
|
||||||
// TODO:
|
|
||||||
var $tabsPanel = this.obj._$tabsPanel,
|
var $tabsPanel = this.obj._$tabsPanel,
|
||||||
$tabs = this.obj._$tabs,
|
$tabs = this.obj._$tabs,
|
||||||
prevId = undefined,
|
stack = this.obj._stack,
|
||||||
currentId = $tabs.children(".current").data("index");
|
prevId = null;
|
||||||
$tabs.children("div[data-index='" + id + "']").remove();
|
$tabs.children("div[data-index='" + id + "']").remove();
|
||||||
$tabsPanel.children("div[data-index='" + id + "']").remove();
|
$tabsPanel.children("div[data-index='" + id + "']").remove();
|
||||||
|
|
||||||
if (this.obj._prevId === id) {
|
// 移除堆栈中该 id
|
||||||
this.obj._prevId = $tabs.children("div:first").data("index");
|
for (var i = 0; i < stack.length; i++) {
|
||||||
|
if (id === stack[i]) {
|
||||||
|
stack.splice(i, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentId !== id) {
|
prevId = stack[stack.length - 1];
|
||||||
prevId = currentId;
|
|
||||||
} else {
|
if (typeof this.obj.removeAfter === 'function') {
|
||||||
prevId = this.obj._prevId;
|
this.obj.removeAfter(id, prevId);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.obj.removeAfter(id, prevId);
|
|
||||||
this.setCurrent(prevId);
|
this.setCurrent(prevId);
|
||||||
},
|
},
|
||||||
getCurrentId: function () {
|
getCurrentId: function () {
|
||||||
|
@ -98,9 +100,12 @@ $.extend(Tabs.prototype, {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.obj._stack.length === 1024) {
|
// tab 顺序入栈,如栈满则清除
|
||||||
this.obj._stack.splice(1023, 1);
|
var stack = this.obj._stack;
|
||||||
} else {
|
if (stack.length === this.obj.STACKSIZE) {
|
||||||
|
stack.splice(0, 1);
|
||||||
|
}
|
||||||
|
if (stack[stack.length - 1] !== id) {
|
||||||
this.obj._stack.push(id);
|
this.obj._stack.push(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,26 +2,27 @@
|
||||||
<ul class="details">
|
<ul class="details">
|
||||||
<li class="title">Wide</li>
|
<li class="title">Wide</li>
|
||||||
<li>
|
<li>
|
||||||
<label>{{.i18n.current_user}}</label>{{.i18n.colon}}
|
<label>{{.i18n.current_user}}{{.i18n.colon}}</label>
|
||||||
{{.username}}
|
{{.username}}
|
||||||
</li>
|
</li>
|
||||||
<li class="border">
|
<li class="border workspace">
|
||||||
<label>{{.i18n.workspace}}</label>{{.i18n.colon}}
|
<label>{{.i18n.workspace}}{{.i18n.colon}}</label>
|
||||||
<div class="workspace">{{.workspace}}</div>
|
<span>{{.workspace}}</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="border">
|
<li class="border">
|
||||||
<label><a href="http://88250.gitbooks.io/wide-user-guide" target="_blank">{{.i18n.user_guide}}</a></label> &
|
<label><a href="http://88250.gitbooks.io/wide-user-guide" target="_blank">{{.i18n.user_guide}}</a></label> &
|
||||||
<label><a href="http://88250.gitbooks.io/wide-dev-guide" target="_blank">{{.i18n.dev_guide}}</a></label>
|
<label><a href="http://88250.gitbooks.io/wide-dev-guide" target="_blank">{{.i18n.dev_guide}}</a></label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label>{{.i18n.current_ver}}</label>{{.i18n.colon}}{{.ver}}<br/>
|
<label>{{.i18n.current_ver}}{{.i18n.colon}}</label>
|
||||||
<label>{{.i18n.dev_team}}</label>{{.i18n.colon}}
|
{{.ver}}<br/>
|
||||||
|
<label>{{.i18n.dev_team}}{{.i18n.colon}}</label>
|
||||||
<a href="https://github.com/b3log/b3log-solo/wiki/About_us" target="_blank">B3log</a><br/>
|
<a href="https://github.com/b3log/b3log-solo/wiki/About_us" target="_blank">B3log</a><br/>
|
||||||
<label>{{.i18n.project_address}}</label>{{.i18n.colon}}
|
<label>{{.i18n.project_address}}{{.i18n.colon}} </label>
|
||||||
<a href="https://github.com/b3log/wide" target="_blank">github.com/b3log/wide</a>
|
<a href="https://github.com/b3log/wide" target="_blank">github.com/b3log/wide</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label>{{.i18n.donate_us}}</label>{{.i18n.colon}}
|
<label>{{.i18n.donate_us}}{{.i18n.colon}}</label>
|
||||||
<a href="http://b3log.org/donate.html" target="_blank">b3log.org/donate.html</a>
|
<a href="http://b3log.org/donate.html" target="_blank">b3log.org/donate.html</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
Loading…
Reference in New Issue