You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
208 lines
5.5 KiB
208 lines
5.5 KiB
2 years ago
|
/* global DesignerOfflineDB */
|
||
|
// js/designer/database.js
|
||
|
// eslint-disable-next-line no-unused-vars
|
||
|
|
||
|
/* global db, selectedPage:writable */
|
||
|
// js/designer/init.js
|
||
|
|
||
|
/* global DesignerMove */
|
||
|
// js/designer/move.js
|
||
|
|
||
|
/* global DesignerObjects */
|
||
|
// js/designer/objects.js
|
||
|
var DesignerPage = {};
|
||
|
|
||
|
DesignerPage.showTablesInLandingPage = function (db) {
|
||
|
DesignerPage.loadFirstPage(db, function (page) {
|
||
|
if (page) {
|
||
|
DesignerPage.loadHtmlForPage(page.pgNr);
|
||
|
selectedPage = page.pgNr;
|
||
|
} else {
|
||
|
DesignerPage.showNewPageTables(true);
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
DesignerPage.saveToNewPage = function (db, pageName, tablePositions, callback) {
|
||
|
DesignerPage.createNewPage(db, pageName, function (page) {
|
||
|
if (page) {
|
||
|
var tblCords = [];
|
||
|
|
||
|
var saveCallback = function (id) {
|
||
|
tblCords.push(id);
|
||
|
|
||
|
if (tablePositions.length === tblCords.length) {
|
||
|
page.tblCords = tblCords;
|
||
|
DesignerOfflineDB.addObject('pdf_pages', page);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
for (var pos = 0; pos < tablePositions.length; pos++) {
|
||
|
tablePositions[pos].pdfPgNr = page.pgNr;
|
||
|
DesignerPage.saveTablePositions(tablePositions[pos], saveCallback);
|
||
|
}
|
||
|
|
||
|
if (typeof callback !== 'undefined') {
|
||
|
callback(page);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
DesignerPage.saveToSelectedPage = function (db, pageId, pageName, tablePositions, callback) {
|
||
|
DesignerPage.deletePage(pageId);
|
||
|
DesignerPage.saveToNewPage(db, pageName, tablePositions, function (page) {
|
||
|
if (typeof callback !== 'undefined') {
|
||
|
callback(page);
|
||
|
}
|
||
|
|
||
|
selectedPage = page.pgNr;
|
||
|
});
|
||
|
};
|
||
|
|
||
|
DesignerPage.createNewPage = function (db, pageName, callback) {
|
||
|
var newPage = new DesignerObjects.PdfPage(db, pageName);
|
||
|
DesignerOfflineDB.addObject('pdf_pages', newPage, function (pgNr) {
|
||
|
newPage.pgNr = pgNr;
|
||
|
|
||
|
if (typeof callback !== 'undefined') {
|
||
|
callback(newPage);
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
DesignerPage.saveTablePositions = function (positions, callback) {
|
||
|
DesignerOfflineDB.addObject('table_coords', positions, callback);
|
||
|
};
|
||
|
|
||
|
DesignerPage.createPageList = function (db, callback) {
|
||
|
DesignerOfflineDB.loadAllObjects('pdf_pages', function (pages) {
|
||
|
var html = '';
|
||
|
|
||
|
for (var p = 0; p < pages.length; p++) {
|
||
|
var page = pages[p];
|
||
|
|
||
|
if (page.dbName === db) {
|
||
|
html += '<option value="' + page.pgNr + '">';
|
||
|
html += Functions.escapeHtml(page.pageDescr) + '</option>';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (typeof callback !== 'undefined') {
|
||
|
callback(html);
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
DesignerPage.deletePage = function (pageId, callback) {
|
||
|
DesignerOfflineDB.loadObject('pdf_pages', pageId, function (page) {
|
||
|
if (page) {
|
||
|
for (var i = 0; i < page.tblCords.length; i++) {
|
||
|
DesignerOfflineDB.deleteObject('table_coords', page.tblCords[i]);
|
||
|
}
|
||
|
|
||
|
DesignerOfflineDB.deleteObject('pdf_pages', pageId, callback);
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
DesignerPage.loadFirstPage = function (db, callback) {
|
||
|
DesignerOfflineDB.loadAllObjects('pdf_pages', function (pages) {
|
||
|
var firstPage = null;
|
||
|
|
||
|
for (var i = 0; i < pages.length; i++) {
|
||
|
var page = pages[i];
|
||
|
|
||
|
if (page.dbName === db) {
|
||
|
// give preference to a page having same name as the db
|
||
|
if (page.pageDescr === db) {
|
||
|
callback(page);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (firstPage === null) {
|
||
|
firstPage = page;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
callback(firstPage);
|
||
|
});
|
||
|
};
|
||
|
|
||
|
DesignerPage.showNewPageTables = function (check) {
|
||
|
var allTables = $('#id_scroll_tab').find('td input:checkbox');
|
||
|
allTables.prop('checked', check);
|
||
|
|
||
|
for (var tab = 0; tab < allTables.length; tab++) {
|
||
|
var input = allTables[tab];
|
||
|
|
||
|
if (input.value) {
|
||
|
var element = document.getElementById(input.value);
|
||
|
element.style.top = DesignerPage.getRandom(550, 20) + 'px';
|
||
|
element.style.left = DesignerPage.getRandom(700, 20) + 'px';
|
||
|
DesignerMove.visibleTab(input, input.value);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
selectedPage = -1;
|
||
|
$('#page_name').text(Messages.strUntitled);
|
||
|
DesignerMove.markUnsaved();
|
||
|
};
|
||
|
|
||
|
DesignerPage.loadHtmlForPage = function (pageId) {
|
||
|
DesignerPage.showNewPageTables(true);
|
||
|
DesignerPage.loadPageObjects(pageId, function (page, tblCords) {
|
||
|
$('#name-panel').find('#page_name').text(page.pageDescr);
|
||
|
var tableMissing = false;
|
||
|
|
||
|
for (var t = 0; t < tblCords.length; t++) {
|
||
|
var tbId = db + '.' + tblCords[t].tableName;
|
||
|
var table = document.getElementById(tbId);
|
||
|
|
||
|
if (table === null) {
|
||
|
tableMissing = true;
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
table.style.top = tblCords[t].y + 'px';
|
||
|
table.style.left = tblCords[t].x + 'px';
|
||
|
var checkbox = document.getElementById('check_vis_' + tbId);
|
||
|
checkbox.checked = true;
|
||
|
DesignerMove.visibleTab(checkbox, checkbox.value);
|
||
|
}
|
||
|
|
||
|
DesignerMove.markSaved();
|
||
|
|
||
|
if (tableMissing === true) {
|
||
|
DesignerMove.markUnsaved();
|
||
|
Functions.ajaxShowMessage(Messages.strSavedPageTableMissing);
|
||
|
}
|
||
|
|
||
|
selectedPage = page.pgNr;
|
||
|
});
|
||
|
};
|
||
|
|
||
|
DesignerPage.loadPageObjects = function (pageId, callback) {
|
||
|
DesignerOfflineDB.loadObject('pdf_pages', pageId, function (page) {
|
||
|
var tblCords = [];
|
||
|
var count = page.tblCords.length;
|
||
|
|
||
|
for (var i = 0; i < count; i++) {
|
||
|
DesignerOfflineDB.loadObject('table_coords', page.tblCords[i], function (tblCord) {
|
||
|
tblCords.push(tblCord);
|
||
|
|
||
|
if (tblCords.length === count) {
|
||
|
if (typeof callback !== 'undefined') {
|
||
|
callback(page, tblCords);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
DesignerPage.getRandom = function (max, min) {
|
||
|
var val = Math.random() * (max - min) + min;
|
||
|
return Math.floor(val);
|
||
|
};
|