264 lines
7.0 KiB
JavaScript
264 lines
7.0 KiB
JavaScript
async function fetch_history() {
|
|
try {
|
|
const response = await fetch(`${currentUrl}app/datahistory`);
|
|
const rawData = await response.json();
|
|
var dateFormat = d3.timeParse("%a, %d %b %Y %H:%M:%S GMT");
|
|
// SELECT uuid, quantity, discount_percentage, price, currency, h_timestamp
|
|
let historyData = rawData.map(d => ({
|
|
uuid: d[0],
|
|
value: parseFloat(d[3].replace('$', '')),
|
|
currency: d[4],
|
|
date: dateFormat(d[5]),
|
|
}));
|
|
return historyData;
|
|
} catch (error) {
|
|
console.error('Error fetching data history: ', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
async function fetch_item() {
|
|
try {
|
|
// SELECT uuid, itemid, skuid, choice, attributes, image, show
|
|
const response = await fetch(`${currentUrl}app/dataitem`);
|
|
const rawData = await response.json();
|
|
const items = rawData.reduce((item, row) => {
|
|
const uuid = row[0];
|
|
|
|
const itemid = row[1];
|
|
const skuid = row[2];
|
|
const choice = row[3];
|
|
const attributes = row[4];
|
|
const image = row[5];
|
|
const show = row[6];
|
|
|
|
const values = {
|
|
itemid: itemid,
|
|
skuid: skuid,
|
|
choice: choice,
|
|
attributes: attributes,
|
|
image: image,
|
|
show: show,
|
|
};
|
|
|
|
item[uuid] = values;
|
|
|
|
return item;
|
|
}, {});
|
|
|
|
return items;
|
|
} catch (error) {
|
|
console.error('Error fetching data item: ', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
async function fetch_history_filtered(id_array) {
|
|
try {
|
|
// SELECT uuid, itemid, skuid, choice, attributes, image, show
|
|
const apiUrl = `${currentUrl}app/datahistory-filtered`;
|
|
filters_string = id_array.join('#');
|
|
const postData = {
|
|
filters: filters_string
|
|
};
|
|
|
|
const requestOptions = {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify(postData)
|
|
};
|
|
|
|
const response = await fetch(apiUrl, requestOptions)
|
|
.catch(error => {
|
|
console.error('Error during POST request:', error);
|
|
});
|
|
|
|
if (response.ok) {
|
|
const rawData = await response.json();
|
|
var dateFormat = d3.timeParse("%a, %d %b %Y %H:%M:%S GMT");
|
|
// SELECT uuid, quantity, discount_percentage, price, currency, h_timestamp
|
|
let historyData = rawData.map(d => ({
|
|
uuid: d[0],
|
|
value: parseFloat(d[3].replace('$', '')),
|
|
currency: d[4],
|
|
date: dateFormat(d[5]),
|
|
}));
|
|
return historyData;
|
|
} else {
|
|
throw new Error('Error in server response');
|
|
}
|
|
} catch (error) {
|
|
console.error('Error fetching data item: ', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
async function fetch_item_filtered(id_array) {
|
|
try {
|
|
// SELECT uuid, itemid, skuid, choice, attributes, image, show
|
|
const apiUrl = `${currentUrl}app/dataitem-filtered`;
|
|
filters_string = id_array.join('#');
|
|
const postData = {
|
|
filters: filters_string
|
|
};
|
|
|
|
const requestOptions = {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify(postData)
|
|
};
|
|
|
|
const response = await fetch(apiUrl, requestOptions)
|
|
.catch(error => {
|
|
console.error('Error during POST request:', error);
|
|
});
|
|
|
|
if (response.ok) {
|
|
const rawData = await response.json();
|
|
const items = rawData.reduce((item, row) => {
|
|
const uuid = row[0];
|
|
|
|
const itemid = row[1];
|
|
const skuid = row[2];
|
|
const choice = row[3];
|
|
const attributes = row[4];
|
|
const image = row[5];
|
|
const show = row[6];
|
|
|
|
const values = {
|
|
itemid: itemid,
|
|
skuid: skuid,
|
|
choice: choice,
|
|
attributes: attributes,
|
|
image: image,
|
|
show: show,
|
|
};
|
|
|
|
item[uuid] = values;
|
|
|
|
return item;
|
|
}, {});
|
|
|
|
return items;
|
|
} else {
|
|
throw new Error('Error in server response');
|
|
}
|
|
} catch (error) {
|
|
console.error('Error fetching data item: ', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
async function fetch_list() {
|
|
try {
|
|
const response = await fetch(`${currentUrl}app/datalist`);
|
|
const rawData = await response.json();
|
|
// SELECT uuid, name, description
|
|
let listData = rawData.map(d => ({
|
|
uuid: d[0],
|
|
name: d[1],
|
|
description: d[2],
|
|
}));
|
|
return listData;
|
|
} catch (error) {
|
|
console.error('Error fetching data history: ', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
async function get_data() {
|
|
items_data = await fetch_item();
|
|
history_data = await fetch_history();
|
|
return Array(items_data, history_data);
|
|
}
|
|
|
|
async function get_data_filtered(id_array) {
|
|
items_data = await fetch_item_filtered(id_array);
|
|
history_data = await fetch_history_filtered(id_array);
|
|
return Array(items_data, history_data);
|
|
}
|
|
|
|
async function get_list_details(list_uuid) {
|
|
try {
|
|
// SELECT name, description
|
|
const apiUrl = `${currentUrl}app/datalist`;
|
|
const postData = {
|
|
uuid: list_uuid
|
|
};
|
|
|
|
const requestOptions = {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify(postData)
|
|
};
|
|
|
|
const response = await fetch(apiUrl, requestOptions)
|
|
.catch(error => {
|
|
console.error('Error during POST request:', error);
|
|
});
|
|
|
|
if (response.ok) {
|
|
const rawData = await response.json();
|
|
const listData = {
|
|
name: rawData[0],
|
|
description: rawData[1],
|
|
};
|
|
return listData;
|
|
} else {
|
|
throw new Error('Error in server response');
|
|
}
|
|
} catch (error) {
|
|
console.error('Error fetching data item: ', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
async function fetch_all() {
|
|
try {
|
|
const response = await fetch(`${currentUrl}app/data-all`);
|
|
const rawData = await response.json();
|
|
// tables = ['item', 'itemlist', 'listcontent', 'history']
|
|
let data = Object();
|
|
// uuid, itemid, skuid, choice, attributes, image, show
|
|
data.item = rawData[0].map(d => ({
|
|
uuid: d[0],
|
|
itemid: d[1],
|
|
skuid: d[2],
|
|
choice: d[3],
|
|
attributes: d[4],
|
|
image: d[5],
|
|
show: d[6],
|
|
}));
|
|
// uuid, name, description
|
|
data.itemlist = rawData[1].map(d => ({
|
|
uuid: d[0],
|
|
name: d[1],
|
|
description: d[2],
|
|
}));
|
|
// list_uuid, item_uuid
|
|
data.listcontent = rawData[2].map(d => ({
|
|
list_uuid: d[0],
|
|
item_uuid: d[1],
|
|
}));
|
|
// uuid, quantity, discount_percentage, price, currency, h_timestamp
|
|
data.history = rawData[3].map(d => ({
|
|
uuid: d[0],
|
|
quantity: d[1],
|
|
discount_percentage: d[2],
|
|
price: d[3],
|
|
currency: d[4],
|
|
h_timestamp: d[5],
|
|
}));
|
|
return data;
|
|
} catch (error) {
|
|
console.error('Error fetching data history: ', error);
|
|
throw error;
|
|
}
|
|
}
|