').attr('data-key', rowData.id).appendTo(tbody);
var lockStatus = 'locked'; // Assume the row is unlocked by default
var previousLockStatus = 'locked'; // Initialize previous lock status
var lockCell = $('').text(lockStatus).appendTo(row);
var toggleButton = $('').text('Toggle Lock').click(function () {
lockStatus = lockStatus === 'locked' ? 'unlocked' : 'locked'; // Toggle lock status
lockCell.text(lockStatus); // Update lock status in the cell
// Update editable status of cells based on lock status
var cells = row.find('td:not(:first-child)');
cells.prop('contenteditable', lockStatus !== 'locked');
if (lockStatus == 'unlocked') {
cells.css("background", "yellow");
} else {
cells.css("background", "");
}
// Update IndexedDB when row is toggled from unlocked to locked
if (previousLockStatus === 'unlocked' && lockStatus === 'locked') {
cells.each(function (index) {
var newValue = $(this).text();
var field = $(this).closest('table').find('th').eq(index + 1).text();
var rowKey = $(this).closest('tr').attr('data-key');
updateIndexedDB(db, rowKey, field, newValue);
});
}
// Update previous lock status
previousLockStatus = lockStatus;
});
$('').append(toggleButton).appendTo(row);
aFields.forEach(function (header) {
var cell;
if (rowData.hasOwnProperty(header)) {
cell = $(' ').text(rowData[header]).appendTo(row);
} else {
cell = $(' ').appendTo(row);
}
// Set initial editable status of cells based on lock status
cell.prop('contenteditable', lockStatus !== 'locked');
});
// Add delete button to each row with data-key attribute
var deleteButton = $('').text('Delete')
.attr('data-key', rowData.id) // Add data-key attribute with primary key value
.click(deleteButtonClickHandler);
$('').append(deleteButton).appendTo(row);
});
$('#artifact-table').find('tbody').remove();
$('#artifact-table').append(tbody);
}
// Function to update data in IndexedDB
function updateIndexedDB(db, primaryKey, field, newValue) {
var transaction = db.transaction(['formData'], 'readwrite');
var objectStore = transaction.objectStore('formData');
// Retrieve the existing record by its primary key
var getRequest = objectStore.get(Number(primaryKey));
getRequest.onsuccess = function (event) {
var existingRecord = event.target.result;
// Update the field value with the new value
existingRecord[field] = newValue;
var putRequest = objectStore.put(existingRecord);
putRequest.onsuccess = function (event) {
console.log("Record updated successfully");
};
putRequest.onerror = function (event) {
console.error("Error updating record: " + event.target.errorCode);
};
};
getRequest.onerror = function (event) {
console.error("Error fetching record: " + event.target.errorCode);
};
}
// Define click event handler for delete buttons
function deleteButtonClickHandler() {
var primaryKey = $(this).attr('data-key'); // Retrieve primary key from data-key attribute
deleteRowFromIndexedDB(db, primaryKey); // Pass db and primaryKey as parameters
}
};
function deleteRowFromIndexedDB(db, primaryKey) {
var confirmDelete = confirm('Are you sure you want to delete this row?');
if (confirmDelete) {
let transaction = db.transaction(['formData'], 'readwrite');
let request = transaction.objectStore('formData').delete(Number(primaryKey));
console.log(request);
transaction.oncomplete = () => {
// Remove row from table if deletion is successful
$('#artifact-table tbody tr[data-key="' + primaryKey + '"]').remove();
};
}
}
doDB = function () {
var formData = {};
var siteData = {};
var exitval = 0;
function resetFormDat(mat, subt) {
var formData = {};
formData['Material'] = mat;
if (subt) {
formData['Subtype'] = subt;
}
return formData;
}
$('.site-data').each(function () {
// Within each .site-data, find inputs and select elements
$(this).find('input, select').each(function () {
var id = $(this).attr('id'); // Get the id attribute
if (id == "Database date") {
const dateParts = $(this).val().split('-');
const formattedDate = `${dateParts[1]}/${dateParts[2]}/${dateParts[0]}`;
value = formattedDate;
} else {
var value = $(this).val();
} // Get the value
siteData[id] = value; // Add to siteData object
});
});
//commenting this out for now
if (exitval > 0) {
alert("All information in the top section should be filled in!");
return;
}
var request = indexedDB.open('artifact_database', 3);
request.onerror = function (event) {
//Handle errors
console.error("Database error: " + event.target.errorCode);
};
request.onsuccess = function (event) {
var db = event.target.result;
var transaction = db.transaction(['formData'], 'readwrite');
var objectStore = transaction.objectStore('formData');
// Get form data
//metals section
if ($("#fe-nails-wire").val() > 0) {
formData = resetFormDat("Metal", "FE Alloy");
formData['Form'] = "nail, wire";
formData['Count'] = $("#fe-nails-wire").val();
addRow(siteData, formData, objectStore);
}
if ($("#fe-nails-frags-wire").val() > 0) {
formData = resetFormDat("Metal", "FE Alloy");
formData['Form'] = "nail, wire frag";
formData['Count'] = $("#fe-nails-frags-wire").val();
addRow(siteData, formData, objectStore);
}
if ($("#fe-nails-cut").val() > 0) {
formData = resetFormDat("Metal", "FE Alloy");
formData['Form'] = "nail, cut";
formData['Count'] = $("#fe-nails-cut").val();
addRow(siteData, formData, objectStore);
}
if ($("#fe-nails-frags-cut").val() > 0) {
formData = resetFormDat("Metal", "FE Alloy");
formData['Form'] = "nail, cut frag";
formData['Count'] = $("#fe-nails-frags-cut").val();
addRow(siteData, formData, objectStore);
}
if ($("#fe-frags-flat").val() > 0) {
formData = resetFormDat("Metal", "FE Alloy");
formData['Form'] = "frag, flat";
formData['Count'] = $("#fe-frags-flat").val();
addRow(siteData, formData, objectStore);
}
if ($("#fe-frags-unident").val() > 0) {
formData = resetFormDat("Metal", "FE Alloy");
formData['Form'] = "frag, unident";
formData['Count'] = $("#fe-frags-unident").val();
addRow(siteData, formData, objectStore);
}
if ($("#cu-nails").val() > 0) {
formData = resetFormDat("Metal", "CU Alloy");
formData['Form'] = "nail";
formData['Count'] = $("#cu-nails").val();
addRow(siteData, formData, objectStore);
}
if ($("#cu-nail-frags").val() > 0) {
formData = resetFormDat("Metal", "CU Alloy");
formData['Form'] = "nail, cut frag";
formData['Count'] = $("#cu-nail-frags").val();
addRow(siteData, formData, objectStore);
}
$('.metal-selector').each(function () {
if ($(this).find('.metal-other-cnt').val() > 0) {
formData = resetFormDat("Metal");
db.onerror = (event) => {
// Generic error handler for all errors targeted at this database's
// requests!
console.error(`Database error: ${event.target.errorCode}`);
};
formData['Subtype'] = $(this).find('.metal-other').val();
formData['Form'] = $(this).find('.metal-form').val();
formData['Count'] = $(this).find('.metal-other-cnt').val();
formData['Notes'] = $(this).find('.metal-other-note').val();
addRow(siteData, formData, objectStore);
}
});
//glass section
if ($("#gl-clear-curved").val() > 0) {
formData = resetFormDat("Glass", "Clear");
formData['Form'] = "frag, curved";
formData['Count'] = $("#gl-clear-curved").val();
addRow(siteData, formData, objectStore);
}
if ($("#gl-clear-flat").val() > 0) {
formData = resetFormDat("Glass", "Clear");
formData['Form'] = "frag, flat";
formData['Count'] = $("#gl-clear-flat").val();
addRow(siteData, formData, objectStore);
}
if ($("#gl-dkgreen-curved").val() > 0) {
formData = resetFormDat("Glass", "Green, dk");
formData['Form'] = "frag, curved";
formData['Count'] = $("#gl-dkgreen-curved").val();
addRow(siteData, formData, objectStore);
}
if ($("#gl-dkgreen-flat").val() > 0) {
formData = resetFormDat("Glass", "Green, dk");
formData['Form'] = "frag, flat";
formData['Count'] = $("#gl-dkgreen-flat").val();
addRow(siteData, formData, objectStore);
}
if ($("#gl-ltgreen-curved").val() > 0) {
formData = resetFormDat("Glass");
formData['Subtype'] = "Green, lt";
formData['Form'] = "frag, curved";
formData['Count'] = $("#gl-ltgreen-curved").val();
addRow(siteData, formData, objectStore);
}
if ($("#gl-ltgreen-flat").val() > 0) {
formData = resetFormDat("Glass");
formData['Subtype'] = "Green, lt";
formData['Form'] = "frag, flat";
formData['Count'] = $("#gl-ltgreen-flat").val();
addRow(siteData, formData, objectStore);
}
if ($("#gl-aqua-curved").val() > 0) {
formData = resetFormDat("Glass");
formData['Subtype'] = "Aqua";
formData['Form'] = "frag, curved";
formData['Count'] = $("#gl-aqua-curved").val();
addRow(siteData, formData, objectStore);
}
if ($("#gl-aqua-flat").val() > 0) {
formData = resetFormDat("Glass");
formData['Subtype'] = "Aqua";
formData['Form'] = "frag, flat";
formData['Count'] = $("#gl-aqua-flat").val();
addRow(siteData, formData, objectStore);
}
if ($("#gl-brown-curved").val() > 0) {
formData = resetFormDat("Glass");
formData['Subtype'] = "Brown";
formData['Form'] = "frag, curved";
formData['Count'] = $("#gl-brown-curved").val();
addRow(siteData, formData, objectStore);
}
if ($("#gl-brown-flat").val() > 0) {
formData = resetFormDat("Glass");
formData['Subtype'] = "Brown";
formData['Form'] = "frag, flat";
formData['Count'] = $("#gl-brown-flat").val();
addRow(siteData, formData, objectStore);
}
if ($("#gl-blue-curved").val() > 0) {
formData = resetFormDat("Glass");
formData['Subtype'] = "Blue";
formData['Form'] = "frag, curved";
formData['Count'] = $("#gl-blue-curved").val();
addRow(siteData, formData, objectStore);
}
if ($("#gl-blue-flat").val() > 0) {
formData = resetFormDat("Glass");
formData['Subtype'] = "Blue";
formData['Form'] = "frag, flat";
formData['Count'] = $("#gl-blue-flat").val();
addRow(siteData, formData, objectStore);
}
$('.glass-selector').each(function () {
if ($(this).find('.Count').val() > 0) {
formData = resetFormDat("Glass");
$(this).find('input').each(function () {
var className = $(this).attr('class');
var value = $(this).val();
formData[className] = value;
});
console.log(siteData);
addRow(siteData, formData, objectStore);
}
});
//tobacco and pipes
if ($("#tb_bowl").val() > 0) {
formData = resetFormDat("Ceramic", "Kaolin Pipe");
formData['Form'] = "pipe bowl frag";
formData['Count'] = $("#tb_bowl").val();
addRow(siteData, formData, objectStore);
}
if ($("#tb_bowl_stem").val() > 0) {
formData = resetFormDat("Ceramic", "Kaolin Pipe");
formData['Form'] = "pipe bowl & stem";
formData['Count'] = $("#tb_bowl_stem").val();
addRow(siteData, formData, objectStore);
}
if ($("#tb_stem_frags").val() > 0) {
formData = resetFormDat("Ceramic", "Kaolin Pipe");
formData['Form'] = "pipe stem frag";
formData['Count'] = $("#tb_stem_frags").val();
addRow(siteData, formData, objectStore);
}
if ($("#tb_stem_964").val() > 0) {
formData = resetFormDat("Ceramic", "Kaolin Pipe");
formData['Form'] = "pipe stem frag";
formData['Ware_Type (Ceramic)'] = '9/64" dia';
formData['Pipestem Size (x/64)'] = '9/64';
formData['Pipestem x/64'] = '9';
formData['Count'] = $("#tb_stem_964").val();
addRow(siteData, formData, objectStore);
}
if ($("#tb_stem_864").val() > 0) {
formData = resetFormDat("Ceramic", "Kaolin Pipe");
formData['Form'] = "pipe stem frag";
formData['Ware_Type (Ceramic)'] = '8/64" dia';
formData['Pipestem Size (x/64)'] = '8/64';
formData['Pipestem x/64'] = '8';
formData['Count'] = $("#tb_stem_864").val();
addRow(siteData, formData, objectStore);
}
if ($("#tb_stem_764").val() > 0) {
formData = resetFormDat("Ceramic", "Kaolin Pipe");
formData['Form'] = "pipe stem frag";
formData['Ware_Type (Ceramic)'] = '7/64" dia';
formData['Pipestem Size (x/64)'] = '7/64';
formData['Pipestem x/64'] = '7';
formData['Count'] = $("#tb_stem_764").val();
addRow(siteData, formData, objectStore);
}
if ($("#tb_stem_664").val() > 0) {
formData = resetFormDat("Ceramic", "Kaolin Pipe");
formData['Form'] = "pipe stem frag";
formData['Ware_Type (Ceramic)'] = '6/64" dia';
formData['Pipestem Size (x/64)'] = '6/64';
formData['Pipestem x/64'] = '6';
formData['Count'] = $("#tb_stem_664").val();
addRow(siteData, formData, objectStore);
}
if ($("#tb_stem_564").val() > 0) {
formData = resetFormDat("Ceramic", "Kaolin Pipe");
formData['Form'] = "pipe stem frag";
formData['Ware_Type (Ceramic)'] = '5/64" dia';
formData['Pipestem Size (x/64)'] = '5/64';
formData['Pipestem x/64'] = '5';
formData['Count'] = $("#tb_stem_564").val();
addRow(siteData, formData, objectStore);
}
if ($("#tb_stem_464").val() > 0) {
formData = resetFormDat("Ceramic", "Kaolin Pipe");
formData['Form'] = "pipe stem frag";
formData['Ware_Type (Ceramic)'] = '4/64" dia';
formData['Pipestem Size (x/64)'] = '4/64';
formData['Pipestem x/64'] = '4';
formData['Count'] = $("#tb_stem_464").val();
addRow(siteData, formData, objectStore);
}
$('.tb-selector').each(function () {
if ($(this).find('.tb-other-cnt').val() > 0) {
formData = resetFormDat("Ceramic", "Kaolin Pipe");
formData['Form'] = $(this).find('.tb-form').val();
formData['Ware_Type (Ceramic)'] = $(this).find('.tb-ware').val();
formData['Pipestem Size (x/64)'] = $(this).find('.tb-ware').val().split('"')[0];
formData['Pipestem x/64'] = $(this).find('.tb-ware').val().split('/')[0];;
formData['Count'] = $(this).find('.tb-other-cnt').val();
formData['Notes'] = $(this).find('.tb-other-note').val();
addRow(siteData, formData, objectStore);
}
});
//faunal
if ($("#bone").val() > 0) {
formData = resetFormDat("Bone");
formData['Subtype'] = "Faunal";
formData['Count'] = $("#bone").val();
addRow(siteData, formData, objectStore);
}
if ($("#teeth").val() > 0) {
formData = resetFormDat("Bone");
formData['Subtype'] = "Tooth/tusk";
formData['Count'] = $("#teeth").val();
addRow(siteData, formData, objectStore);
}
if ($("#shell").val() > 0) {
formData = resetFormDat("Shell");
formData['Subtype'] = "Seashell";
formData['Count'] = $("#shell").val();
addRow(siteData, formData, objectStore);
}
if ($("#coral").val() > 0) {
formData = resetFormDat("Coral");
formData['Count'] = $("#coral").val();
addRow(siteData, formData, objectStore);
}
$('.faunal-selector').each(function () {
if ($(this).find('.faunal-other-cnt').val() > 0) {
formData = resetFormDat($(this).find('.faunal-material').val());
formData['Subtype'] = $(this).find('.faunal-subtype').val();
formData['Form'] = $(this).find('.faunal-form').val();
formData['Count'] = $(this).find('.faunal-other-cnt').val();
formData['Notes'] = $(this).find('.faunal-other-note').val();
addRow(siteData, formData, objectStore);
}
});
//plastics
if ($("#plastic_flat").val() > 0) {
formData = resetFormDat("Plastic", "flat");
formData['Count'] = $("#plastic_flat").val();
addRow(siteData, formData, objectStore);
}
if ($("#plastic_tarp").val() > 0) {
formData = resetFormDat("Plastic", "tarp");
formData['Count'] = $("#plastic_tarp").val();
addRow(siteData, formData, objectStore);
}
if ($("#plastic_styrofoam").val() > 0) {
formData = resetFormDat("Plastic", "styrofoam");
formData['Count'] = $("#plastic_styrofoam").val();
addRow(siteData, formData, objectStore);
}
if ($("#plastic_string").val() > 0) {
formData = resetFormDat("Plastic", "string");
formData['Count'] = $("#plastic_string").val();
addRow(siteData, formData, objectStore);
}
if ($("#plastic_melted").val() > 0) {
formData = resetFormDat("Plastic", "melted");
formData['Count'] = $("#plastic_melted").val();
addRow(siteData, formData, objectStore);
}
$('.plastic-selector').each(function () {
if ($(this).find('.plastic-other-cnt').val() > 0) {
//formData['Material'] = $(this).find('.stone-material').val();
formData = resetFormDat("Plastic", $(this).find('.plastic-subtype').val());
formData['Count'] = $(this).find('.plastic-other-cnt').val();
formData['Notes'] = $(this).find('.plastic-other-note').val();
addRow(siteData, formData, objectStore);
}
});
//stone
if ($("#stone_nonbda").val() > 0) {
formData = resetFormDat("Stone");
formData['Subtype'] = "non-native";
formData['Count'] = $("#stone_nonbda").val();
addRow(siteData, formData, objectStore);
}
if ($("#stone_flint").val() > 0) {
formData = resetFormDat("Stone");
formData['Subtype'] = "Flint";
formData['Count'] = $("#stone_flint").val();
addRow(siteData, formData, objectStore);
}
if ($("#stone_chert").val() > 0) {
formData = resetFormDat("Stone");
formData['Subtype'] = "chert";
formData['Count'] = $("#stone_chert").val();
addRow(siteData, formData, objectStore);
}
if ($("#stone_coal").val() > 0) {
formData = resetFormDat("Coal");
formData['Count'] = $("#stone_coal").val();
addRow(siteData, formData, objectStore);
}
if ($("#stone_slate").val() > 0) {
formData = resetFormDat("Stone", "slate");
formData['Count'] = $("#stone_slate").val();
addRow(siteData, formData, objectStore);
}
$('.stone-selector').each(function () {
if ($(this).find('.stone-other-cnt').val() > 0) {
//formData['Material'] = $(this).find('.stone-material').val();
formData = resetFormDat($(this).find('.stone-material').val());
formData['Subtype'] = $(this).find('.stone-subtype').val();
formData['Form'] = $(this).find('.stone-form').val();
formData['Count'] = $(this).find('.stone-other-cnt').val();
formData['Notes'] = $(this).find('.stone-other-note').val();
addRow(siteData, formData, objectStore);
}
});
if ($("#bw_red").val() > 0) {
formData = resetFormDat("Brick");
formData['Color (Stone)'] = "Red";
formData['Form'] = "Whole";
formData['Count'] = $("#bw_red").val();
addRow(siteData, formData, objectStore);
}
if ($("#bw_dkred").val() > 0) {
formData = resetFormDat("Brick");
formData['Color (Stone)'] = "Dark Red";
formData['Form'] = "Whole";
formData['Count'] = $("#bw_dkred").val();
addRow(siteData, formData, objectStore);
}
if ($("#bw_orange").val() > 0) {
formData = resetFormDat("Brick");
formData['Color (Stone)'] = "Orange";
formData['Form'] = "Whole";
formData['Count'] = $("#bw_orange").val();
addRow(siteData, formData, objectStore);
}
if ($("#bw_yellow").val() > 0) {
formData = resetFormDat("Brick");
formData['Color (Stone)'] = "Yellow";
formData['Form'] = "Whole";
formData['Count'] = $("#bw_yellow").val();
addRow(siteData, formData, objectStore);
}
if ($("#bp_red").val() > 0) {
formData = resetFormDat("Brick");
formData['Color (Stone)'] = "Red";
formData['Form'] = "Partial";
formData['Count'] = $("#bp_red").val();
addRow(siteData, formData, objectStore);
}
if ($("#bp_dkred").val() > 0) {
formData = resetFormDat("Brick");
formData['Color (Stone)'] = "Dark Red";
formData['Form'] = "Partial";
formData['Count'] = $("#bp_dkred").val();
addRow(siteData, formData, objectStore);
}
if ($("#bp_orange").val() > 0) {
formData = resetFormDat("Brick");
formData['Color (Stone)'] = "Orange";
formData['Form'] = "Partial";
formData['Count'] = $("#bp_orange").val();
addRow(siteData, formData, objectStore);
}
if ($("#bp_yellow").val() > 0) {
formData = resetFormDat("Brick");
formData['Color (Stone)'] = "Yellow";
formData['Form'] = "Partial";
formData['Count'] = $("#bp_yellow").val();
addRow(siteData, formData, objectStore);
}
if ($("#bf_red").val() > 0) {
formData = resetFormDat("Brick");
formData['Color (Stone)'] = "Red";
formData['Form'] = "Fragment";
formData['Count'] = $("#bf_red").val();
addRow(siteData, formData, objectStore);
}
if ($("#bf_dkred").val() > 0) {
formData = resetFormDat("Brick");
formData['Color (Stone)'] = "Dark Red";
formData['Form'] = "Fragment";
formData['Count'] = $("#bf_dkred").val();
addRow(siteData, formData, objectStore);
}
if ($("#bf_orange").val() > 0) {
formData = resetFormDat("Brick");
formData['Color (Stone)'] = "Orange";
formData['Form'] = "Fragment";
formData['Count'] = $("#bf_orange").val();
addRow(siteData, formData, objectStore);
}
if ($("#bf_yellow").val() > 0) {
formData = resetFormDat("Brick");
formData['Color (Stone)'] = "Yellow";
formData['Form'] = "Fragment";
formData['Count'] = $("#bf_yellow").val();
addRow(siteData, formData, objectStore);
}
if ($("#stone_mortar").val() > 0) {
formData = resetFormDat("Brick");
formData['Material'] = "Stone";
formData['Subtype'] = "mortar";
formData['Form'] = "mortar";
formData['Count'] = $("#stone_mortar").val();
addRow(siteData, formData, objectStore);
}
if ($("#bda_stone_frag").val() > 0) {
formData = resetFormDat("Brick");
formData['Material'] = "Stone";
formData['Subtype'] = "BDA stone";
formData['Form'] = "frag";
formData['Count'] = $("#bda_stone_frag").val();
addRow(siteData, formData, objectStore);
}
if ($("#wood").val() > 0) {
formData = resetFormDat("Brick");
formData['Material'] = "Wood";
formData['Subtype'] = "architectural";
formData['Form'] = "";
formData['Count'] = $("#wood").val();
addRow(siteData, formData, objectStore);
}
//porcelain
$('.Porcelain-selector').each(function () {
if ($(this).find('.Porcelain-cnt').val() > 0) {
formData = resetFormDat("Ceramic", "Porcelain");
formData['Ware_Type (Ceramic)'] = $(this).find('.Ware_Type').val();
formData['Surface'] = $(this).find('.Surface').val();
formData['Body (Ceramic/glass)'] = $(this).find('.Body').val();
formData['Decoration (Ceramic)'] = $(this).find('.Decoration').val();
formData['Count'] = $(this).find('.Porcelain-cnt').val();
formData['Notes'] = $(this).find('.Porcelain-note').val();
addRow(siteData, formData, objectStore);
}
});
$('.Stoneware-selector').each(function () {
if ($(this).find('.Stoneware-cnt').val() > 0) {
formData = resetFormDat("Ceramic", "Stoneware");
formData['Ware_Type (Ceramic)'] = $(this).find('.Ware_Type').val();
formData['Surface'] = $(this).find('.Surface').val();
formData['Body (Ceramic/glass)'] = $(this).find('.Body').val();
formData['Decoration (Ceramic)'] = $(this).find('.Decoration').val();
formData['Form'] = $(this).find('.Form').val();
formData['Count'] = $(this).find('.Stoneware-cnt').val();
formData['Notes'] = $(this).find('.Stoneware-note').val();
addRow(siteData, formData, objectStore);
}
});
$('.CEW-selector').each(function () {
if ($(this).find('.CEW-cnt').val() > 0) {
formData = resetFormDat("Ceramic", "CEW");
formData['Ware_Type (Ceramic)'] = $(this).find('.Ware_Type').val();
formData['Surface'] = $(this).find('.Surface').val();
formData['Body (Ceramic/glass)'] = $(this).find('.Body').val();
formData['Decoration (Ceramic)'] = $(this).find('.Decoration').val();
formData['Form'] = $(this).find('.Form').val();
formData['Count'] = $(this).find('.CEW-cnt').val();
formData['Notes'] = $(this).find('.CEW-note').val();
addRow(siteData, formData, objectStore);
}
});
$('.REW-selector').each(function () {
if ($(this).find('.REW-cnt').val() > 0) {
formData = resetFormDat("Ceramic", "REW");
formData['Ware_Type (Ceramic)'] = $(this).find('.Ware_Type').val();
formData['Surface'] = $(this).find('.Surface').val();
formData['Body (Ceramic/glass)'] = $(this).find('.Body').val();
formData['Decoration (Ceramic)'] = $(this).find('.Decoration').val();
formData['Form'] = $(this).find('.Form').val();
formData['Count'] = $(this).find('.REW-cnt').val();
formData['Notes'] = $(this).find('.REW-note').val();
setTimeout(addRow(siteData, formData, objectStore), 100);
}
});
}
$('#saving').show();
setTimeout(function () {
location.reload();
$('#saving').hide();
}
, 1000)
}
function addRow(siteData, formData, objectStore) {
const updatedRow = { ...siteData, ...formData };
// Add the data object to the object store
// var requestAdd = objectStore.add(updatedRow, kd);
var requestAdd = objectStore.add(updatedRow);
requestAdd.onsuccess = function (event) {
console.log('Data added successfully');
//resolve(); // Resolve the Promise when data is added successfully
};
requestAdd.onerror = function (event) {
// Handle errors
console.log("Error adding data: " + event.target.errorCode);
//reject(event.target.errorCode); // Reject the Promise with the error code
};
};
saveTableAsTabDelimited = function (tableId, filename) {
// Select the table by ID
filename = filename + "_" + Date.now() + ".txt";
var table = document.getElementById(tableId);
// Initialize tab-delimited string with column headers
var tabDelimited = [];
var headers = [];
for (var i = 0; i < table.rows[0].cells.length; i++) {
if (table.rows[0].cells[i].innerText != "Toggle" && table.rows[0].cells[i].innerText != "Locked?" && table.rows[0].cells[i].innerText != "") {
headers.push(table.rows[0].cells[i].innerText);
}
}
tabDelimited.push(headers.join('\t'));
// Add rows to the tab-delimited string
for (var i = 1; i < table.rows.length; i++) {
var row = [];
for (var j = 2; j < table.rows[i].cells.length - 1; j++) {
row.push(table.rows[i].cells[j].innerText);
}
tabDelimited.push(row.join('\t'));
}
// Trigger download of tab-delimited file
var tabDelimitedContent = tabDelimited.join('\n');
var blob = new Blob([tabDelimitedContent], { type: 'text/tab-separated-values;charset=utf-8;' });
if (navigator.msSaveBlob) { // IE 10+
navigator.msSaveBlob(blob, filename);
} else {
var link = document.createElement('a');
if (link.download !== undefined) {
var url = URL.createObjectURL(blob);
link.setAttribute('href', url);
link.setAttribute('download', filename);
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
}
deleteTable = function () {
var confirmClear = confirm('Are you sure you want to clear this table?');
if (confirmClear) {
saveTableAsTabDelimited('artifact-table', 'table');
var request = indexedDB.open('artifact_database', 3);
request.onerror = function (event) {
// Handle errors
console.error("Database error: " + event.target.errorCode);
};
request.onsuccess = function (event) {
var db = event.target.result;
var transaction = db.transaction(['formData'], 'readwrite');
// Get a reference to the object store
var objectStore = transaction.objectStore('formData');
// Clear all data from the object store
var clearRequest = objectStore.clear();
// Handle the success or error of the clear request
clearRequest.onsuccess = function () {
console.log('Data cleared successfully');
location.reload()
};
clearRequest.onerror = function (event) {
console.error('Error clearing data:', event.target.error);
};
}
}
}//end
})