Skip to content

Commit

Permalink
Merge pull request #16 from Roky97/TabsOnLocalStorage---1.10.0
Browse files Browse the repository at this point in the history
Tabs on local storage   1.10.0
  • Loading branch information
stefanogermano authored Sep 17, 2019
2 parents 7e1ef17 + 6edca65 commit 19dd213
Show file tree
Hide file tree
Showing 3 changed files with 123 additions and 34 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "LoIDE",
"version": "1.9.0",
"version": "1.10.0",
"description": "Web-based IDE for Logic Programming",
"main": "app.js",
"scripts": {
Expand Down
28 changes: 22 additions & 6 deletions resources/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

</head>

<body class="">
<div class="toast hidden" role="alert" aria-live="assertive" aria-atomic="true">
<body>
<div id="notification" class="toast hidden" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<i class="fa fa-exclamation-circle"></i>
<strong class="mr-auto ml-2">LoIDE</strong>
Expand All @@ -26,7 +26,23 @@
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="toast-body"></div>
<div id="notidication-body" class="toast-body"></div>
</div>
<div id="notification-project" class="toast hidden" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<i class="fa fa-exclamation-circle"></i>
<strong class="mr-auto ml-2">LoIDE - Project found</strong>
<small>Now</small>
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="toast-body">
<p>Maybe you were working on a project.
Do you wish to continue? </p>
<button id="load-project" type="button" class="btn btn-primary btn-sm btn-block">Yes</button>
<button type="button" class="btn btn-secondary btn-sm btn-block" data-dismiss="toast" aria-label="Close">No</button>
</div>
</div>
<nav class="navbar navbar-expand-sm navbar-light ">
<!-- Brand and toggle get grouped for better mobile display -->
Expand Down Expand Up @@ -161,8 +177,8 @@ <h5>Run options</h5>
<div class="pane ui-layout-center" >
<div role="tabpanel">
<!-- Nav tabs -->
<div class="d-flex row-tabpanel-toolbar">
<ul class=" nav nav-tabs" role="tablist">
<div class="d-flex row-tabpanel-toolbar row">
<ul class=" col-xs-12 nav nav-tabs" role="tablist">
<li class="nav-item">
<a data-target="#tab1" role="tab" data-toggle="tab" class="btn-tab nav-link">
<span class="name-tab">Tab1</span>
Expand All @@ -177,7 +193,7 @@ <h5>Run options</h5>
<a role="tab" data-toggle="tab" class="add-tab nav-link btn-light"><i class="fa fa-plus"></i></a>
</li>
</ul>
<div class="ml-auto text-center toolbar">
<div class="col-xs-12 ml-auto text-center toolbar">
<div class="undo-redo btn-group" role="group">
<button id="btn-undo" type="button" class="btn btn-light"><i class="fa fa-arrow-left"></i></button>
<button id="btn-redo" type="button" class="btn btn-light"><i class="fa fa-arrow-right"></i></button>
Expand Down
127 changes: 100 additions & 27 deletions resources/js/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@
* @description Open a container to display the result
*/
function operation_alert(result) {
$(".toast-body").html("<strong>" + result.reason + "</strong>");
$('.toast').toast('show');
$("#notidication-body").html("<strong>" + result.reason + "</strong>");
$('#notification').toast('show');
}

/**
Expand Down Expand Up @@ -129,6 +129,7 @@ $('[data-toggle="tooltip"]').tooltip();

window.onbeforeunload = function () {
$('#save-options').trigger('click');
saveProjectToLocalStorage();
};

$(window).resize(function () {
Expand Down Expand Up @@ -389,6 +390,7 @@ $(document).ready(function () {
});

setLoideStyleMode();
checkProjectOnLocalStorage();
});

/**
Expand Down Expand Up @@ -1110,7 +1112,7 @@ function handleFileSelect(evt) {
if (!setJSONInput(jsontext)) {
editors[idEditor].setValue(JSON.stringify(text)); // set value of the file in text editor
}

inizializeChangeNameContextmenu();
} else {
editors[idEditor].setValue(text);
}
Expand Down Expand Up @@ -1390,29 +1392,31 @@ function setOptions(obj) {
$(this).remove();
});
$(obj.option).each(function (indexInArray, item) { // create option's form
addOption(indexInArray, item.name);
var currentOption;
if (indexInArray !== 0) {
currentOption = $('.row-option').get(indexInArray);
$(currentOption).find('label').empty();
}
if (indexInArray < obj.option.length - 1) { //deletes all 'btn-add' except in the last option
currentOption = $('.row-option').get(indexInArray);
$(currentOption).find('.btn-add-option').empty();
}
if (item['value']) {
currentClass = $('.option-value').eq(indexInArray);
$(item.value).each(function (indexInArray, itemValue) {
if (indexInArray !== 0)
addInpuValue(currentClass);
$('.input-group-value').last().find('.form-control-value').val(itemValue);
if (indexInArray < item.value.length - 1) { //deletes all 'btn-add' except the last in the input type value
$('.input-group-value').last().find('.btn-add').parent().empty();
}
});
}
if (indexInArray != $(obj.option).length - 1) {
$("<hr>").insertAfter($('.row-option').get(indexInArray));
if (item !== null) {
addOption(indexInArray, item.name);
var currentOption;
if (indexInArray !== 0) {
currentOption = $('.row-option').get(indexInArray);
$(currentOption).find('label').empty();
}
if (indexInArray < obj.option.length - 1) { //deletes all 'btn-add' except in the last option
currentOption = $('.row-option').get(indexInArray);
$(currentOption).find('.btn-add-option').empty();
}
if (item['value']) {
currentClass = $('.option-value').eq(indexInArray);
$(item.value).each(function (indexInArray, itemValue) {
if (indexInArray !== 0)
addInpuValue(currentClass);
$('.input-group-value').last().find('.form-control-value').val(itemValue);
if (indexInArray < item.value.length - 1) { //deletes all 'btn-add' except the last in the input type value
$('.input-group-value').last().find('.btn-add').parent().empty();
}
});
}
if (indexInArray != $(obj.option).length - 1) {
$("<hr>").insertAfter($('.row-option').get(indexInArray));
}
}

});
Expand Down Expand Up @@ -2123,15 +2127,23 @@ function setClipboard() {
}

function setNotifications() {
$('.toast').toast({
$('#notification').toast({
delay: 2000,
});
$('#notification-project').toast({
delay: 10000,
});
$('.toast').on('show.bs.toast',function () {
$('.toast').removeClass('hidden');
});
$('.toast').on('hidden.bs.toast',function () {
$('.toast').addClass('hidden');
});

$('#load-project').on('click',function () {
loadProjectFromLocalStorage();
$('#notification-project').toast('hide');
});
}

function setWindowResizeTrigger() {
Expand Down Expand Up @@ -2165,6 +2177,8 @@ function setLoideStyleMode(mode) {
break;

default:
if(localStorage.getItem('mode') == null)
localStorage.setItem('mode','light');
((localStorage.getItem('mode') || 'dark') === 'dark') ? document.querySelector('body').classList.add('dark') : document.querySelector('body').classList.remove('dark');
break;
}
Expand Down Expand Up @@ -2225,4 +2239,63 @@ function setDarkStyleToUIElements() {
editors[idE].setTheme(defaultDarkTheme);
}
$('#output').css('color','white');
}

function saveProjectToLocalStorage() {
var nameTabs = [];
var logicProgEditors = [];

$('.name-tab').each(function () {
nameTabs.push($(this).text());
});
var length = $(".nav-tabs").children().length;
for (var index = 1; index <= length - 1; index++) {
var idE = "editor" + index;
logicProgEditors.push(editors[idE].getValue());
}

saveOption("nameTabs",JSON.stringify(nameTabs));
saveOption("logicProgEditors",JSON.stringify(logicProgEditors));
}

function checkProjectOnLocalStorage() {
if(supportLocalStorage()) {
var nameTabs = [];
var logicProgEditors = [];
if(localStorage.getItem("nameTabs") != undefined && localStorage.getItem("logicProgEditors") != undefined)
{
nameTabs = JSON.parse(localStorage.getItem("nameTabs"));
logicProgEditors = JSON.parse(localStorage.getItem("logicProgEditors"));

if(nameTabs.length > 1 || logicProgEditors[0].trim().length > 0){
$('#notification-project').toast('show');
}
}
}
}

function loadProjectFromLocalStorage() {
if(supportLocalStorage()){
var nameTabs = [];
var logicProgEditors = [];
nameTabs = JSON.parse(localStorage.getItem("nameTabs"));
logicProgEditors = JSON.parse(localStorage.getItem("logicProgEditors"));

for (var index = 1; index <= nameTabs.length ; index++) {
if(index > 1)
$('.add-tab').trigger('click');
var idE = "editor" + index;
editors[idE].setValue(logicProgEditors[index-1]);
}

$('.name-tab').each(function (index) {
$(this).text(nameTabs[index]);
var id = index + 1;
var editor = "editor" + id;
$(':checkbox[value="' + editor + '"]').siblings('span').text(nameTabs[index]);

});

$("a[data-target='#tab1']").trigger('click');
}
}

0 comments on commit 19dd213

Please sign in to comment.