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; } }