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