211 lines
6.7 KiB
JavaScript
211 lines
6.7 KiB
JavaScript
async function fetchItem() {
|
|
const url = new URL('/getItem', window.location.origin);
|
|
url.searchParams.append('id', item_id);
|
|
const response = await fetch(url);
|
|
data = await response.json();
|
|
item = data.item;
|
|
linked_items = data.linked_items;
|
|
};
|
|
|
|
async function fetchZones() {
|
|
const url = new URL('/getZones', window.location.origin);
|
|
const response = await fetch(url);
|
|
data = await response.json();
|
|
zones = data.zones;
|
|
};
|
|
|
|
async function fetchLocations(zone) {
|
|
const url = new URL('/getLocations', window.location.origin);
|
|
url.searchParams.append('zone', zone);
|
|
const response = await fetch(url);
|
|
data = await response.json();
|
|
return data.locations;
|
|
};
|
|
|
|
async function setupLocations(locations, el) {
|
|
let loc_el = document.getElementById(el)
|
|
console.log(locations)
|
|
loc_el.innerHTML = ""
|
|
|
|
let option = document.createElement('option')
|
|
option.value = "undefined"
|
|
option.innerHTML = "Select Location..."
|
|
loc_el.appendChild(option)
|
|
|
|
for (let i = 0; i < locations.length; i++){
|
|
let option = document.createElement('option')
|
|
option.value = locations[i]
|
|
option.innerHTML = locations[i]
|
|
loc_el.appendChild(option)
|
|
};
|
|
};
|
|
|
|
async function setupZones() {
|
|
let primary_zone = document.getElementById('primary_zone')
|
|
|
|
for (let i = 0; i < zones.length; i++){
|
|
let option = document.createElement('option')
|
|
option.value = zones[i]
|
|
option.innerHTML = zones[i]
|
|
primary_zone.appendChild(option)
|
|
};
|
|
|
|
let issue_zone = document.getElementById('issue_zone')
|
|
for (let i = 0; i < zones.length; i++){
|
|
let option = document.createElement('option')
|
|
option.value = zones[i]
|
|
option.innerHTML = zones[i]
|
|
issue_zone.appendChild(option)
|
|
};
|
|
|
|
};
|
|
|
|
async function loadPrimaryLocations() {
|
|
let primary_zone = document.getElementById('primary_zone').value
|
|
primary_locations = await fetchLocations(primary_zone)
|
|
await setupLocations(primary_locations, 'primary_location')
|
|
};
|
|
|
|
async function loadIssueLocations() {
|
|
let issue_zone = document.getElementById('issue_zone').value
|
|
issue_locations = await fetchLocations(issue_zone)
|
|
await setupLocations(issue_locations, 'issue_location')
|
|
};
|
|
|
|
async function addLink(){
|
|
event.preventDefault()
|
|
let key = document.getElementById('link_name').value;
|
|
let link = document.getElementById('link').value;
|
|
links[key] = link;
|
|
console.log(links)
|
|
links_changed = true;
|
|
await propagateLinks()
|
|
};
|
|
|
|
function updatePrimaryLocation(){
|
|
let primary_zone = document.getElementById('primary_zone').value
|
|
let primary_location = document.getElementById('primary_location').value
|
|
|
|
if (primary_location == "undefined"){
|
|
document.getElementById('primary_location').style = "border-color: red;"
|
|
} else {
|
|
document.getElementById('primary_location').style = ""
|
|
logistics_info['primary_location'] = `${primary_zone}@${primary_location}`
|
|
};
|
|
};
|
|
|
|
function updateIssueLocation(){
|
|
let issue_zone = document.getElementById('issue_zone').value
|
|
let issue_location = document.getElementById('issue_location').value
|
|
|
|
if (issue_location == "undefined"){
|
|
document.getElementById('issue_location').style = "border-color: red;"
|
|
} else {
|
|
document.getElementById('issue_location').style = ""
|
|
logistics_info['auto_issue_location'] = `${issue_zone}@${issue_location}`
|
|
};
|
|
};
|
|
|
|
function updateEntryType(){
|
|
updated['row_type'] = document.getElementById('entry_type').value;
|
|
};
|
|
|
|
function updateItemType(){
|
|
updated['item_type'] = document.getElementById('item_type').value;
|
|
};
|
|
|
|
function updatePackaging(){
|
|
let packaging = document.getElementById('packaging').value;
|
|
item_info['packaging'] = packaging;
|
|
};
|
|
|
|
function updateUOM(){
|
|
let uom = document.getElementById('uom').value;
|
|
item_info['uom'] = uom;
|
|
};
|
|
|
|
function updateCost(){
|
|
let cost = document.getElementById('cost').value;
|
|
item_info['cost'] = parseFloat(cost);
|
|
};
|
|
|
|
function updateSafetyStock(){
|
|
let safety_stock = document.getElementById('safety_stock').value;
|
|
item_info['safety_stock'] = parseFloat(safety_stock);
|
|
};
|
|
|
|
function updateLeadTimeDays(){
|
|
let lead_time_days = document.getElementById('lead_time_days').value;
|
|
item_info['lead_time_days'] = parseFloat(lead_time_days);
|
|
};
|
|
|
|
function updateAiPickable(){
|
|
let ai_pick = document.getElementById('ai_pickable');
|
|
item_info['ai_pick'] = ai_pick.checked;
|
|
};
|
|
|
|
function updateExpires(){
|
|
let expires = document.getElementById('expires');
|
|
food_info['expires'] = expires.checked;
|
|
};
|
|
|
|
function updateNutrients(){
|
|
nutrients = {
|
|
serving: document.getElementById('serving').value,
|
|
serving_unit: document.getElementById('serving_unit').value,
|
|
calories: document.getElementById('calories').value,
|
|
calories_unit: document.getElementById('calories_unit').value,
|
|
proteins: document.getElementById('proteins').value,
|
|
proteins_unit: document.getElementById('proteins_unit').value,
|
|
fats: document.getElementById('fats').value,
|
|
fats_unit: document.getElementById('fats_unit').value,
|
|
carbohydrates: document.getElementById('carbohydrates').value,
|
|
carbohydrates_unit: document.getElementById('carbohydrates_unit').value,
|
|
sugars: document.getElementById('sugars').value,
|
|
sugars_unit: document.getElementById('sugars_unit').value,
|
|
sodium: document.getElementById('sodium').value,
|
|
sodium_unit: document.getElementById('sodium_unit').value,
|
|
fibers: document.getElementById('fibers').value,
|
|
fibers_unit: document.getElementById('fibers_unit').value
|
|
};
|
|
nutrients_changed = true;
|
|
}
|
|
|
|
async function saveItem() {
|
|
|
|
// Only add the key, values if something has changed
|
|
if (food_groups_changed){
|
|
food_info['food_groups'] = food_groups;
|
|
};
|
|
if (tags_changed){
|
|
updated['tags'] = tags;
|
|
};
|
|
if (ingrediants_changed){
|
|
food_info['ingrediants'] = ingrediants;
|
|
};
|
|
if (nutrients_changed){
|
|
food_info['nutrients'] = nutrients;
|
|
};
|
|
if (links_changed){
|
|
updated['links'] = links;
|
|
};
|
|
|
|
await fetch(`/updateItem`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
id: item_id,
|
|
logistics_info_id: item[8],
|
|
food_info_id: item[9],
|
|
item_info_id: item[7],
|
|
updated: updated,
|
|
item_info: item_info,
|
|
logistics_info: logistics_info,
|
|
food_info: food_info,
|
|
}),
|
|
});
|
|
M.toast({html: "Item has been saved successfully!", classes: "rounded green lighten-4 black-text"});
|
|
};
|