Commit 81f046c3 authored by Alain Takoudjou's avatar Alain Takoudjou Committed by Nicolas Wavrant

keep in mind last opened file and manage favourites files

parent 58044d23
...@@ -22,6 +22,8 @@ $(document).ready(function () { ...@@ -22,6 +22,8 @@ $(document).ready(function () {
pasteMode = null, pasteMode = null,
selection = "", selection = "",
edit_status = "", edit_status = "",
current_file = null,
favourite_list = new Array(),
base_path = function () { base_path = function () {
return softwareDisplay ? currentProject : 'workspace/'; return softwareDisplay ? currentProject : 'workspace/';
}; };
...@@ -45,64 +47,47 @@ $(document).ready(function () { ...@@ -45,64 +47,47 @@ $(document).ready(function () {
} }
send = true; send = true;
edit = false; edit = false;
$("a#option").hide();
if (file.substr(-1) !== "/") { if (file.substr(-1) !== "/") {
$.ajax({ $("#edit_info").empty();
type: "POST", $("#edit_info").append("LOADING FILE... <img src='"+$SCRIPT_ROOT+"/static/images/loading.gif' />");
url: $SCRIPT_ROOT + '/getFileContent', $.ajax({
data: {file: file}, type: "POST",
success: function (data) { url: $SCRIPT_ROOT + '/getFileContent',
var name, start, path = file; data: {file: file},
if (data.code === 1) { success: function (data) {
$("#edit_info").empty(); var name, start, path = file;
name = file.split('/'); if (data.code === 1) {
if (file.length > 75) { $("#edit_info").empty();
//substring title. name = file.split('/');
start = file.length - 75; if (file.length > 75) {
path = "..." + file.substring(file.indexOf("/", (start + 1))); //substring title.
} start = file.length - 75;
$("#edit_info").append(" " + path); path = "..." + file.substring(file.indexOf("/", (start + 1)));
$("a#option").show();
editor.getSession().setValue(data.result);
setEditMode(name[name.length - 1]);
edit = true;
$("input#subfolder").val(file);
$("span#edit_status").html("");
edit_status = "";
} else {
$("#error").Popup(data.result, {type: 'error', duration: 5000});
} }
send = false; $("#edit_info").append(" " + path);
$("a#option").show();
editor.getSession().setValue(data.result);
setEditMode(name[name.length - 1]);
edit = true;
current_file = file;
$("span#edit_status").html("");
edit_status = "";
setCookie("EDIT_CURRENT_FILE", file);
} else {
$("#error").Popup(data.result, {type: 'error', duration: 5000});
} }
}); send = false;
}
});
} else { } else {
$("#edit_info").empty(); $("#edit_info").empty();
$("#edit_info").append("No file in editor"); $("#edit_info").append("No file in editor");
$("a#option").hide();
editor.getSession().setValue(""); editor.getSession().setValue("");
} }
return; return;
} }
function selectFile(file) {
$("#info").empty();
$("#info").append("Current work tree: " + file);
selection = file;
return;
}
/*
function setDetailBox() {
var state = $("#details_box").css("display");
if (state === "none") {
$("#details_box").fadeIn("normal");
$("#details_head").removeClass("hide");
$("#details_head").addClass("show");
} else {
$("#details_box").fadeOut("normal");
$("#details_head").removeClass("show");
$("#details_head").addClass("hide");
}
} */
function switchContent() { function switchContent() {
if (!softwareDisplay) { if (!softwareDisplay) {
$("span.swith_btn").empty(); $("span.swith_btn").empty();
...@@ -127,16 +112,15 @@ $(document).ready(function () { ...@@ -127,16 +112,15 @@ $(document).ready(function () {
return; return;
} }
send = true; send = true;
var filepath = (path) ? path : $("input#subfolder").val(), var filename;
filename;
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: $SCRIPT_ROOT + '/getmd5sum', url: $SCRIPT_ROOT + '/getmd5sum',
data: {file: filepath}, data: {file: path},
success: function (data) { success: function (data) {
if (data.code === 1) { if (data.code === 1) {
filename = filepath.replace(/^.*(\\|\/|\:)/, '') filename = path.replace(/^.*(\\|\/|\:)/, '');
$("#info").empty(); $("#info").empty();
$("#info").html("Md5sum for file [" + filename + "]: " + data.result); $("#info").html("Md5sum for file [" + filename + "]: " + data.result);
} else { } else {
...@@ -297,7 +281,7 @@ $(document).ready(function () { ...@@ -297,7 +281,7 @@ $(document).ready(function () {
success: function (data) { success: function (data) {
$("#inline_content").empty(); $("#inline_content").empty();
$("#inline_content").append('<h2 style="color: #4c6172; font: 18px \'Helvetica Neue\', Helvetica, Arial, sans-serif;">Content of file: ' + $("#inline_content").append('<h2 style="color: #4c6172; font: 18px \'Helvetica Neue\', Helvetica, Arial, sans-serif;">Content of file: ' +
node.title +'</h2>'); node.title +'</h2>');
$("#inline_content").append('<br/><div class="main_content"><pre id="editorViewer"></pre></div>'); $("#inline_content").append('<br/><div class="main_content"><pre id="editorViewer"></pre></div>');
viewer = ace.edit("editorViewer"); viewer = ace.edit("editorViewer");
viewer.setTheme("ace/theme/crimson_editor"); viewer.setTheme("ace/theme/crimson_editor");
...@@ -406,6 +390,11 @@ $(document).ready(function () { ...@@ -406,6 +390,11 @@ $(document).ready(function () {
// return false; // return false;
} }
}, },
dblclick: function(event, data) {
if (!data.node.isFolder()){
openFile(data.node.data.path);
}
},
source: { source: {
url: $SCRIPT_ROOT + "/fileBrowser", url: $SCRIPT_ROOT + "/fileBrowser",
data:{opt: 20, dir: path, key: key, listfiles: 'yes'}, data:{opt: 20, dir: path, key: key, listfiles: 'yes'},
...@@ -467,6 +456,56 @@ $(document).ready(function () { ...@@ -467,6 +456,56 @@ $(document).ready(function () {
}); });
} }
function openOnFavourite($elt){
var index = parseInt($elt.attr('rel')),
file = favourite_list[index];
openFile(file);
$('a[rel=tooltip], span[rel=tooltip], .popup').mouseout();
}
function removeFavourite($elt){
var index = parseInt($elt.attr('rel'));
favourite_list.splice(index, 1);
$elt.parent().remove();
$('#tooltip-filelist ul li[rel="'+index+'"]').remove();
if (favourite_list.length === 0){
$("#tooltip-filelist ul").append("<li>Your favourites files list is <br/>empty for the moment!</li>");
}
deleteCookie("FAV_FILE_LIST");
setCookie("FAV_FILE_LIST", favourite_list.join('#'));
}
function initEditor(){
var tmp, filename;
current_file = getCookie("EDIT_CURRENT_FILE");
if (current_file) {
openFile(current_file);
}
tmp = getCookie("FAV_FILE_LIST");
if(tmp){
favourite_list = tmp.split('#');
if (favourite_list.length !== 0){
$("#tooltip-filelist ul").empty();
}
for (var i=0; i<favourite_list.length; i++){
filename = favourite_list[i].replace(/^.*(\\|\/|\:)/, '');
$("#tooltip-filelist ul").append('<li rel="'+i+
'"><span class="bt_close" title="Remove this element!" rel="'+i+
'">×</span><a href="#" rel="'+i+'">'+ filename +'</a></li>');
}
}
//Click on favorite file in list to open it!
$("#tooltip-filelist ul li a").click(function(){
openOnFavourite($(this));
return false;
});
//Remove favorite file in list
$("#tooltip-filelist ul li span").click(function(){
removeFavourite($(this));
return false;
});
}
editor.setTheme("ace/theme/crimson_editor"); editor.setTheme("ace/theme/crimson_editor");
...@@ -494,7 +533,7 @@ $(document).ready(function () { ...@@ -494,7 +533,7 @@ $(document).ready(function () {
initTree('#fileTree', currentProject, 'pfolder'); initTree('#fileTree', currentProject, 'pfolder');
initTree('#fileTreeFull', 'workspace'); initTree('#fileTreeFull', 'workspace');
$("#info").append("Current work tree: " + base_path()); $("#info").append("Current work tree: " + base_path());
/*setDetailBox();*/ initEditor();
editor.on("change", function (e) { editor.on("change", function (e) {
if (edit_status === "" && edit) { if (edit_status === "" && edit) {
...@@ -523,7 +562,7 @@ $(document).ready(function () { ...@@ -523,7 +562,7 @@ $(document).ready(function () {
type: "POST", type: "POST",
url: $SCRIPT_ROOT + '/saveFileContent', url: $SCRIPT_ROOT + '/saveFileContent',
data: { data: {
file: $("input#subfolder").val(), file: current_file,
content: editor.getSession().getValue() content: editor.getSession().getValue()
}, },
success: function (data) { success: function (data) {
...@@ -549,7 +588,7 @@ $(document).ready(function () { ...@@ -549,7 +588,7 @@ $(document).ready(function () {
return false; return false;
}); });
$("#getmd5").click(function () { $("#getmd5").click(function () {
getmd5sum(); getmd5sum(current_file);
return false; return false;
}); });
...@@ -557,7 +596,6 @@ $(document).ready(function () { ...@@ -557,7 +596,6 @@ $(document).ready(function () {
edit = false; edit = false;
$("#info").empty(); $("#info").empty();
$("#info").append("Current work tree: " + base_path()); $("#info").append("Current work tree: " + base_path());
$("input#subfolder").val("");
$("#edit_info").empty(); $("#edit_info").empty();
$("#edit_info").append("No file in editor"); $("#edit_info").append("No file in editor");
editor.getSession().setValue(""); editor.getSession().setValue("");
...@@ -581,6 +619,34 @@ $(document).ready(function () { ...@@ -581,6 +619,34 @@ $(document).ready(function () {
} }
return false; return false;
}); });
$("a#addflist").click(function(){
var i = favourite_list.length,
filename = current_file.replace(/^.*(\\|\/|\:)/, '');;
if (i === 0){
$("#tooltip-filelist ul").empty();
}
if (favourite_list.indexOf(current_file) !== -1){
$("#error").Popup("<b>Duplicate item!</b><br/>This files already exist in your favourite list", {type: 'alert', duration: 5000});
}
else{
favourite_list.push(current_file);
$("#tooltip-filelist ul").append('<li rel="'+i+
'"><span class="bt_close" title="Remove this element!" rel="'+i+
'">×</span><a href="#" rel="'+i+'">'+ filename +'</a></li>');
deleteCookie("FAV_FILE_LIST");
setCookie("FAV_FILE_LIST", favourite_list.join('#'));
$("#tooltip-filelist ul li a[rel='"+i+"']").bind('click', function() {
openOnFavourite($(this));
return false;
});
$("#tooltip-filelist ul li span[rel='"+i+"']").click(function(){
removeFavourite($(this));
return false;
});
$("#error").Popup("<b>Item added!</b><br/>"+filename+" has been added to your favourite list.", {type: 'confirm', duration: 3000});
}
return false;
});
}); });
...@@ -43,9 +43,10 @@ ...@@ -43,9 +43,10 @@
<ul class='box_header'> <ul class='box_header'>
<li id="switch"><span class="swith_btn" title="Switch between differents file source">This project</span></li> <li id="switch"><span class="swith_btn" title="Switch between differents file source">This project</span></li>
<li id="save"><span class="save_btn" title="Save current file. Hint: Use Ctrl+S">Save</span></li> <li id="save"><span class="save_btn" title="Save current file. Hint: Use Ctrl+S">Save</span></li>
<li id="flist"><span class="flist_btn" id="filelist" title="Recently opened files and favourites" rel='tooltip'>&nbsp;</span></li>
<li> <li>
<h2> <h2>
<a style="display:none" id='option' href='#' rel='tooltip' title='Show more option'>[Current file]</a><span id="edit_info">No file in editor</span> <a style="display:none" id='option' href='#' rel='tooltip' title='Show more option'>[Menu]</a><span id="edit_info">No file in editor</span>
<span id="edit_status"></span> <span id="edit_status"></span>
</h2> </h2>
</li> </li>
...@@ -66,7 +67,7 @@ ...@@ -66,7 +67,7 @@
<pre id="editor"> <pre id="editor">
</pre> </pre>
</div> </div>
<!--<input type=submit value="Save" id="save" class="button">--> <!--<input type=submit value="Save" id="save" class="button">-->
</div> </div>
...@@ -74,18 +75,30 @@ ...@@ -74,18 +75,30 @@
<div class="clear"></div> <div class="clear"></div>
<div id="file_info" class="file_info"><span id="info"></span></div> <div id="file_info" class="file_info"><span id="info"></span></div>
</form> </form>
<div id="tooltip-option" style="display:none"> <div id="tooltip-option" style="display:none">
<span class="list first-list">MD5 SUM for the current file</span> <span class="list first-list">Current file Menu</span>
<a id='getmd5' href="#">Get or Update md5sum</a> <a id='getmd5' href="#">Get or Update md5sum</a>
<div class="sep"></div> <a id='addflist' href="#">Add to favourites</a>
<span class="list">Add project development</span> <div class="sep"></div>
<ul id="plist"> <span class="list">Add project development</span>
{% for name in projectList%} <ul id="plist">
<li><input type="checkbox" name="develop" value="{{name}}" id="{{name}}"> {% for name in projectList%}
<label>{{name}}</label></li> <li><input type="checkbox" name="develop" value="{{name}}" id="{{name}}">
{% endfor %} <label>{{name}}</label></li>
{% endfor %}
</ul>
<a href="#" id="adddevelop" class="lshare">Add to profile</a>
</div>
<div id="tooltip-filelist" style="display:none">
<div style="min-width: 190px; padding-bottom:10px;">
<span class="list first-list">All your favourite files</span>
<ul class="inline">
<li>Your favourites files list is <br/>empty for the moment!</li>
</ul> </ul>
<a href="#" id="adddevelop" class="lshare">Add to profile</a> </div>
</div> </div>
<!-- This contains the hidden content for inline calls --> <!-- This contains the hidden content for inline calls -->
......
...@@ -116,7 +116,7 @@ def editSoftwareProfile(): ...@@ -116,7 +116,7 @@ def editSoftwareProfile():
if profile == "": if profile == "":
flash('Error: can not open profile, please select your project first') flash('Error: can not open profile, please select your project first')
return render_template('updateSoftwareProfile.html', workDir='workspace', return render_template('updateSoftwareProfile.html', workDir='workspace',
profile=profile, projectList=getProjectList(app.config['workspace'])) profile=profile, projectList=listFolder(app.config, 'workspace'))
def inspectSoftware(): def inspectSoftware():
...@@ -159,7 +159,7 @@ def editInstanceProfile(): ...@@ -159,7 +159,7 @@ def editInstanceProfile():
if profile == "": if profile == "":
flash('Error: can not open instance profile for this Software Release') flash('Error: can not open instance profile for this Software Release')
return render_template('updateInstanceProfile.html', workDir='workspace', return render_template('updateInstanceProfile.html', workDir='workspace',
profile=profile, projectList=getProjectList(app.config['workspace'])) profile=profile, projectList=listFolder(app.config, 'workspace'))
# get status of all computer partitions and process state # get status of all computer partitions and process state
...@@ -640,7 +640,7 @@ def fileBrowser(): ...@@ -640,7 +640,7 @@ def fileBrowser():
def editFile(): def editFile():
return render_template('editFile.html', workDir='workspace', return render_template('editFile.html', workDir='workspace',
profile=urllib.unquote(request.args.get('profile', '')), profile=urllib.unquote(request.args.get('profile', '')),
projectList=getProjectList(app.config['workspace']), projectList=listFolder(app.config, 'workspace'),
filename=urllib.unquote(request.args.get('filename', ''))) filename=urllib.unquote(request.args.get('filename', '')))
def shell(): def shell():
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment