Bug fixes and code refactoring
This commit is contained in:
parent
df64ce624a
commit
d7a5c160bf
65
index.html
65
index.html
@ -54,10 +54,11 @@
|
|||||||
//request object data from Supernode
|
//request object data from Supernode
|
||||||
logSheet.init().then(result => {
|
logSheet.init().then(result => {
|
||||||
console.log(result)
|
console.log(result)
|
||||||
|
floGlobals.isSubAdmin = floGlobals.subAdmins.includes(myFloID)
|
||||||
hideLoader()
|
hideLoader()
|
||||||
showPage(window.location.hash, { firstLoad: true })
|
showPage(window.location.hash, { firstLoad: true })
|
||||||
//display add buttons if subAdmin, else hide
|
//display add buttons if subAdmin, else hide
|
||||||
if (floGlobals.subAdmins.includes(myFloID)) {
|
if (floGlobals.isSubAdmin) {
|
||||||
document.querySelectorAll('.sub-admin-option').forEach(option => option.classList.remove('hidden'))
|
document.querySelectorAll('.sub-admin-option').forEach(option => option.classList.remove('hidden'))
|
||||||
} else {
|
} else {
|
||||||
document.querySelectorAll('.sub-admin-option').forEach(option => option.classList.add('hidden'))
|
document.querySelectorAll('.sub-admin-option').forEach(option => option.classList.add('hidden'))
|
||||||
@ -1238,7 +1239,7 @@
|
|||||||
function renderSheetList() {
|
function renderSheetList() {
|
||||||
const sheetList = logSheet.listSheets()
|
const sheetList = logSheet.listSheets()
|
||||||
const list = []
|
const list = []
|
||||||
if (floGlobals.subAdmins.includes(myFloID)) {
|
if (floGlobals.isSubAdmin) {
|
||||||
const firstCard = html`
|
const firstCard = html`
|
||||||
<div id="add_new_sheet" class="sheet-card interactive" onclick="openPopup('new_sheet_popup')">
|
<div id="add_new_sheet" class="sheet-card interactive" onclick="openPopup('new_sheet_popup')">
|
||||||
<div class="sheet-card__icon">
|
<div class="sheet-card__icon">
|
||||||
@ -1260,35 +1261,8 @@
|
|||||||
function renderSheetView(details = {}) {
|
function renderSheetView(details = {}) {
|
||||||
const { sheetId, title, description, editors, attributes, sheet, onlyRenderTable = false, lazyLoad = false } = details
|
const { sheetId, title, description, editors, attributes, sheet, onlyRenderTable = false, lazyLoad = false } = details
|
||||||
const isWriteable = !editors || editors.includes(myFloID)
|
const isWriteable = !editors || editors.includes(myFloID)
|
||||||
const isSubAdmin = floGlobals.subAdmins.includes(myFloID)
|
|
||||||
if (!lazyLoad)
|
if (!lazyLoad)
|
||||||
floGlobals.currentSheet = { sheetId, title, description, editors, attributes, sheet, }
|
floGlobals.currentSheet = { sheetId, title, description, editors, attributes, sheet, }
|
||||||
const parseVectorClock = (vc) => {
|
|
||||||
const [vectorClock, floID] = vc.split('_')
|
|
||||||
let time = new Date(parseInt(vectorClock)).toString().slice(4, 24);
|
|
||||||
return `by ${floID} (${time})`
|
|
||||||
}
|
|
||||||
const createGradeField = (vc, grade) => {
|
|
||||||
let gradeField = document.createElement("input")
|
|
||||||
gradeField.setAttribute("type", "text")
|
|
||||||
gradeField.className = "grade-input"
|
|
||||||
gradeField.value = grade
|
|
||||||
if (!isWriteable || !isSubAdmin || vc.split('_')[1] == myFloID)
|
|
||||||
gradeField.disabled = true;
|
|
||||||
else {
|
|
||||||
gradeField.addEventListener("keydown", (event) => {
|
|
||||||
if (event.key === 'Enter') {
|
|
||||||
event.preventDefault();
|
|
||||||
gradeField.disabled = true;
|
|
||||||
logSheet.gradeLog(sheetId, vc, gradeField.value)
|
|
||||||
.then(result => notify("Graded Log"))
|
|
||||||
.catch(error => notify("Grading failed: " + error, "error"))
|
|
||||||
.finally(_ => gradeField.disabled = false)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return gradeField
|
|
||||||
}
|
|
||||||
if (lazyLoad) {
|
if (lazyLoad) {
|
||||||
startingIndex = sheet.length > endingIndex ? endingIndex : sheet.length
|
startingIndex = sheet.length > endingIndex ? endingIndex : sheet.length
|
||||||
endingIndex = sheet.length - endingIndex > 20 ? endingIndex + 20 : sheet.length
|
endingIndex = sheet.length - endingIndex > 20 ? endingIndex + 20 : sheet.length
|
||||||
@ -1302,13 +1276,13 @@
|
|||||||
getRef('sheet_type').textContent = editors ? 'Private' : 'Public';
|
getRef('sheet_type').textContent = editors ? 'Private' : 'Public';
|
||||||
renderElem(getRef('sheet_editors'), html`${editors ? html`Maintained by: ${editors.map(editor => html`<div class="editor">${editor}</div>`)}` : ''}`)
|
renderElem(getRef('sheet_editors'), html`${editors ? html`Maintained by: ${editors.map(editor => html`<div class="editor">${editor}</div>`)}` : ''}`)
|
||||||
getRef('sheet_description').textContent = description;
|
getRef('sheet_description').textContent = description;
|
||||||
let blockEditingID = (!isSubAdmin && (editors || true));
|
let blockEditingID = (!floGlobals.isSubAdmin && (editors || true));
|
||||||
let addLogRow = null
|
let addLogRow = null
|
||||||
//Add input fields if writable
|
//Add input fields if writable
|
||||||
if (isWriteable && !lazyLoad) {
|
if (isWriteable && !lazyLoad) {
|
||||||
addLogRow = html`
|
addLogRow = html`
|
||||||
<tr>
|
<tr>
|
||||||
<td>${blockEditingID ? myFloID : html`<input form="new-log" class="log-input">`}</td>
|
<td>${html`<input form="new-log" class="log-input" value=${blockEditingID ? myFloID : ''} ?readonly=${blockEditingID}>`}</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
${attributes.map(attr => html`<td><input form="new-log" class="log-input"></td>`)}
|
${attributes.map(attr => html`<td><input form="new-log" class="log-input"></td>`)}
|
||||||
</tr>
|
</tr>
|
||||||
@ -1328,12 +1302,21 @@
|
|||||||
if (!lazyLoad)
|
if (!lazyLoad)
|
||||||
getRef('sheet_container__body').innerHTML = ''
|
getRef('sheet_container__body').innerHTML = ''
|
||||||
}
|
}
|
||||||
|
const parseVectorClock = (vc) => {
|
||||||
|
const [vectorClock, floID] = vc.split('_')
|
||||||
|
let time = getFormattedTime(parseInt(vectorClock));
|
||||||
|
return `by ${floID} (${time})`
|
||||||
|
}
|
||||||
|
const createGradeField = (vc, grade) => {
|
||||||
|
const isDisabled = (!isWriteable || !floGlobals.isSubAdmin || vc.split('_')[1] == myFloID)
|
||||||
|
return html`<input type="number" class="grade-input" min="0" max="100" value=${grade} ?disabled=${isDisabled}>`
|
||||||
|
}
|
||||||
for (let i = startingIndex; i < endingIndex; i++) {
|
for (let i = startingIndex; i < endingIndex; i++) {
|
||||||
const { log, floID, vc, grade } = sheet[i]
|
const { log, floID, vc, grade } = sheet[i]
|
||||||
if (!log || !floID || !vc)
|
if (!log || !floID || !vc)
|
||||||
continue;
|
continue;
|
||||||
frag.append(html.node`
|
frag.append(html.node`
|
||||||
<tr title="${parseVectorClock(vc)}">
|
<tr title="${parseVectorClock(vc)}" .dataset=${{ vc }}>
|
||||||
<td>${floID}</td>
|
<td>${floID}</td>
|
||||||
<td>${createGradeField(vc, grade)}</td>
|
<td>${createGradeField(vc, grade)}</td>
|
||||||
${log.map(l => html`<td>${l}</td>`)}
|
${log.map(l => html`<td>${l}</td>`)}
|
||||||
@ -1348,6 +1331,24 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delegate(getRef('sheet_container'), 'keydown', 'input[type="number"]', e => {
|
||||||
|
if (e.key.length === 1) {
|
||||||
|
if (e.key === '.' && (e.target.value.includes('.') || e.target.value.length === 0)) {
|
||||||
|
e.preventDefault();
|
||||||
|
} else if (!['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.'].includes(e.key)) {
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
} else if (e.key === 'Enter' && floGlobals.isSubAdmin) {
|
||||||
|
e.preventDefault();
|
||||||
|
e.delegateTarget.disabled = true;
|
||||||
|
const vc = e.delegateTarget.closest('tr').dataset.vc;
|
||||||
|
logSheet.gradeLog(floGlobals.currentSheet.sheetId, vc, e.delegateTarget.value.trim())
|
||||||
|
.then(result => notify("Graded Log", 'success'))
|
||||||
|
.catch(error => notify("Grading failed: " + error, "error"))
|
||||||
|
.finally(_ => e.delegateTarget.disabled = false)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
function renderGroupByView(groupName, groupData) {
|
function renderGroupByView(groupName, groupData) {
|
||||||
renderElem(getRef("group_by_view"), html`
|
renderElem(getRef("group_by_view"), html`
|
||||||
<table class="margin-top-1">
|
<table class="margin-top-1">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user