From 188286cf448a1b6186c5036688fa46af5f8aefdc Mon Sep 17 00:00:00 2001 From: sairaj mote Date: Sun, 18 Oct 2020 01:37:28 +0530 Subject: [PATCH] 0.0.3 --- index.html | 114 +++++++++++++++++++++++++++++------------------------ 1 file changed, 63 insertions(+), 51 deletions(-) diff --git a/index.html b/index.html index 460dcf9..40f63ac 100644 --- a/index.html +++ b/index.html @@ -656,7 +656,7 @@ document.getElementById('view-group_by').addEventListener("click", function (e) { document.getElementById("group_by").parentNode.classList.remove("hide") - }) + })*/ document.getElementById('group_by_menu').children[0].addEventListener("change", function (e) { try { @@ -689,7 +689,7 @@ } catch (error) { notify(error, "error") } - })*/ + }) function removeElement(element) { element.parentNode.removeChild(element); @@ -778,7 +778,7 @@ logSheet.enterLog(title, floID, log).then(result => { allFormElements.forEach(element => element.disabled = false) form.reset(); - notify('Log Entry Successful', 'success') + notify('Log entry successful', 'success') let row = sheetContainer.getElementsByTagName("tbody")[0].insertRow(1); row.insertCell().textContent = floID row.insertCell().innerHTML = `` @@ -793,7 +793,7 @@ function viewSheet(title) { logSheet.refreshLogs(title).then(result => { let data = logSheet.viewLogs(title) - renderSheetView(data.title, data.description, data.editors, data.attributes, data.sheet, + renderSheetView(data.title, data.description, data.editors, data.attributes, data.sheet.reverse(), !data.editors || data.editors.includes(myFloID), floGlobals.subAdmins.includes(myFloID)) }).catch(error => notify(error, "error")) } @@ -854,18 +854,25 @@ sheetHolder.append(frag) } - function createCell(text){ + function createTh(text){ let cell = document.createElement('th') cell.textContent = text return cell } + function createCell(text){ + let cell = document.createElement('td') + cell.textContent = text + return cell + } const sheetContainer = document.getElementById('sheet_container'), sheetHeading = document.getElementById('sheet_heading'), sheetDescription = document.getElementById('sheet_description'), sheetEditors = document.getElementById('sheet_editors') + let startingIndex = 0, + endingIndex = 0 - function renderSheetView(title, description, editors, attributes, sheet, isWriteable, isSubAdmin, onlyRenderTable = false) { + function renderSheetView(title, description, editors, attributes, sheet, isWriteable, isSubAdmin, onlyRenderTable = false, lazyLoad = false) { floGlobals.currentSheet = { title, description, @@ -873,7 +880,15 @@ attributes, sheet, isWriteable, - isSubAdmin + isSubAdmin, + } + if(lazyLoad){ + startingIndex = sheet.length > endingIndex ? endingIndex : sheet.length + endingIndex = sheet.length - endingIndex > 20 ? endingIndex + 20 : sheet.length + console.log('lazy...') + }else{ + startingIndex = 0 + endingIndex = sheet.length > 20 ? 20 : sheet.length } const parseVectorClock = (vc) => { vc = vc.split('_') @@ -931,17 +946,20 @@ table = document.createElement("table") let thead = table.createTHead() let head = thead.insertRow(0) - head.append(createCell("FLO ID"), createCell("Grade")); - attributes.forEach(a => head.append(createCell(a))) + head.append(createTh("FLO ID"), createTh("Grade")); + attributes.forEach(a => head.append(createTh(a))) } let tbody = document.createElement("tbody") - sheet.forEach(data => { - let row = tbody.insertRow(0); + for(let i = startingIndex; i < endingIndex; i++){ + let data = sheet[i] + let row = document.createElement('tr') row.setAttribute("title", parseVectorClock(data.vc)) - row.insertCell().textContent = data.floID - row.insertCell().appendChild(createGradeField(data.vc, data.grade)); - data.log.forEach(l => row.insertCell().textContent = l) - }) + row.append(createCell(data.floID)) + row.append(createCell().appendChild(createGradeField(data.vc, data.grade))) + data.log.forEach(l => row.append(createCell(l))) + frag.append(row) + } + tbody.append(frag) //Add input fields if writable if (isWriteable) { let row = tbody.insertRow(0); @@ -949,7 +967,6 @@ row.insertCell().textContent = ``; attributes.forEach(a => row.insertCell().innerHTML = ``); } - table.appendChild(tbody); if(!onlyRenderTable){ clearElement(sheetContainer).appendChild(table); @@ -983,16 +1000,10 @@ } function sortTable(n, ascending) { - if(ascending) + console.log(n) + if(ascending){ if(n === 0) - floGlobals.currentSheet.sheet.sort((a, b) => { - if (a.floID.toLowerCase() === b.floID.toLowerCase()) { - return 0; - } - else { - return (a.floID.toLowerCase() < b.floID.toLowerCase()) ? -1 : 1; - } - }) + floGlobals.currentSheet.sheet.sort((a, b) => a.floID.toLowerCase().localeCompare(b.floID.toLowerCase())) else if(n === 1) floGlobals.currentSheet.sheet.sort((a, b) => { if (a.grade === b.grade) { @@ -1004,25 +1015,22 @@ }) else floGlobals.currentSheet.sheet.sort((a, b) => { - let x = a.log[n-2] ? a.log[n-2].toLowerCase() : a.log[n-2] - let y = b.log[n-2] ? b.log[n-2].toLowerCase() : b.log[n-2] - if (x === y) { - return 0; - } - else { - return (x < y) ? -1 : 1; + if(isNaN(a.log[n-2])){ + let x = (a.log[n-2]) ? a.log[n-2].toLowerCase() : a.log[n-2] + let y = (b.log[n-2]) ? b.log[n-2].toLowerCase() : b.log[n-2] + if (x === y) { + return 0; + } + else { + return (x < y) ? -1 : 1; + } } + else + return a.log[n-2] - b.log[n-2] }) - else + }else{ if(n === 0) - floGlobals.currentSheet.sheet.sort((a, b) => { - if (a.floID.toLowerCase() === b.floID.toLowerCase()) { - return 0; - } - else { - return (a.floID.toLowerCase() > b.floID.toLowerCase()) ? -1 : 1; - } - }) + floGlobals.currentSheet.sheet.sort((a, b) => b.floID.toLowerCase().localeCompare(a.floID.toLowerCase())) else if(n === 1) floGlobals.currentSheet.sheet.sort((a, b) => { if (a.grade === b.grade) { @@ -1034,19 +1042,23 @@ }) else floGlobals.currentSheet.sheet.sort((a, b) => { - let x = a.log[n-2] ? a.log[n-2].toLowerCase() : a.log[n-2] - let y = b.log[n-2] ? b.log[n-2].toLowerCase() : b.log[n-2] - if (x === y) { - return 0; - } - else { - return (x > y) ? -1 : 1; + if(isNaN(a.log[n-2])){ + let x = (a.log[n-2]) ? a.log[n-2].toLowerCase() : a.log[n-2] + let y = (b.log[n-2]) ? b.log[n-2].toLowerCase() : b.log[n-2] + if (x === y) { + return 0; + } + else { + return (x > y) ? -1 : 1; + } } + else + return b.log[n-2] - a.log[n-2] }) - - console.log(floGlobals.currentSheet.sheet) + } + console.log(floGlobals.currentSheet.sheet[0]) let {title, description, editors, attributes, sheet, isWriteable, isSubAdmin} = floGlobals.currentSheet - renderSheetView(title, description, editors, attributes, sheet, isWriteable, isSubAdmin, true) + renderSheetView(title, description, editors, attributes, sheet, isWriteable, isSubAdmin, true, false) }