added datatable and dateTime with luxon
This commit is contained in:
parent
1e37988e71
commit
0c8c03c30d
@ -12,6 +12,7 @@
|
|||||||
"@primevue/themes": "^4.2.5",
|
"@primevue/themes": "^4.2.5",
|
||||||
"axios": "^1.7.9",
|
"axios": "^1.7.9",
|
||||||
"js-cookie": "^3.0.5",
|
"js-cookie": "^3.0.5",
|
||||||
|
"luxon": "^3.5.0",
|
||||||
"primeicons": "^7.0.0",
|
"primeicons": "^7.0.0",
|
||||||
"primevue": "^4.2.5",
|
"primevue": "^4.2.5",
|
||||||
"swagger-ui": "^5.18.2",
|
"swagger-ui": "^5.18.2",
|
||||||
|
9
pnpm-lock.yaml
generated
9
pnpm-lock.yaml
generated
@ -17,6 +17,9 @@ importers:
|
|||||||
js-cookie:
|
js-cookie:
|
||||||
specifier: ^3.0.5
|
specifier: ^3.0.5
|
||||||
version: 3.0.5
|
version: 3.0.5
|
||||||
|
luxon:
|
||||||
|
specifier: ^3.5.0
|
||||||
|
version: 3.5.0
|
||||||
primeicons:
|
primeicons:
|
||||||
specifier: ^7.0.0
|
specifier: ^7.0.0
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
@ -674,6 +677,10 @@ packages:
|
|||||||
lowlight@1.20.0:
|
lowlight@1.20.0:
|
||||||
resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==}
|
resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==}
|
||||||
|
|
||||||
|
luxon@3.5.0:
|
||||||
|
resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
magic-string@0.30.17:
|
magic-string@0.30.17:
|
||||||
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
|
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
|
||||||
|
|
||||||
@ -1809,6 +1816,8 @@ snapshots:
|
|||||||
fault: 1.0.4
|
fault: 1.0.4
|
||||||
highlight.js: 10.7.3
|
highlight.js: 10.7.3
|
||||||
|
|
||||||
|
luxon@3.5.0: {}
|
||||||
|
|
||||||
magic-string@0.30.17:
|
magic-string@0.30.17:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/sourcemap-codec': 1.5.0
|
'@jridgewell/sourcemap-codec': 1.5.0
|
||||||
|
@ -53,6 +53,13 @@ export const createProduct = async (productData) => {
|
|||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getProducts = async () => {
|
||||||
|
const response = await api.get('/products/', {
|
||||||
|
headers: {Authorization: `Bearer ${sessionStorage.getItem('access_token')}`},
|
||||||
|
});
|
||||||
|
return response.data;
|
||||||
|
};
|
||||||
|
|
||||||
const refreshAccessToken = async () => {
|
const refreshAccessToken = async () => {
|
||||||
try {
|
try {
|
||||||
const response = await api.post('/token/refresh', {'refresh': Cookies.get('refresh')}, {
|
const response = await api.post('/token/refresh', {'refresh': Cookies.get('refresh')}, {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { createProduct } from '../api.js';
|
import { createProduct,getProducts } from '../api.js';
|
||||||
import { useToast } from 'primevue/usetoast';
|
import { useToast } from 'primevue/usetoast';
|
||||||
|
import { DateTime } from 'luxon';
|
||||||
import InputText from 'primevue/inputtext';
|
import InputText from 'primevue/inputtext';
|
||||||
import Button from 'primevue/button';
|
import Button from 'primevue/button';
|
||||||
import PMessage from 'primevue/message';
|
import PMessage from 'primevue/message';
|
||||||
@ -9,18 +9,19 @@ import InputNumber from 'primevue/inputnumber';
|
|||||||
import InputGroup from 'primevue/inputgroup';
|
import InputGroup from 'primevue/inputgroup';
|
||||||
import InputGroupAddon from 'primevue/inputgroupaddon';
|
import InputGroupAddon from 'primevue/inputgroupaddon';
|
||||||
import Checkbox from 'primevue/checkbox';
|
import Checkbox from 'primevue/checkbox';
|
||||||
|
import DataTable from 'primevue/datatable';
|
||||||
|
import Column from 'primevue/column';
|
||||||
|
|
||||||
|
import { ref, onMounted} from 'vue';
|
||||||
import { ref } from 'vue';
|
|
||||||
|
|
||||||
const toast = useToast();
|
const toast = useToast();
|
||||||
|
const formatDate = (date) => DateTime.fromISO(date).toLocaleString(DateTime.DATETIME_MED);
|
||||||
|
|
||||||
|
const products = ref([]);
|
||||||
const productName = ref('');
|
const productName = ref('');
|
||||||
const productDescription = ref('');
|
const productDescription = ref('');
|
||||||
const productQuantity = ref('');
|
const productQuantity = ref('');
|
||||||
const productAlert = ref(false);
|
const productAlert = ref(false);
|
||||||
const productStockLimit = ref(null);
|
const productStockLimit = ref(null);
|
||||||
|
|
||||||
const registerErrors = ref({name:'',description:'',quantity:'',alert_enabled:'',stock_limit:'',});
|
const registerErrors = ref({name:'',description:'',quantity:'',alert_enabled:'',stock_limit:'',});
|
||||||
|
|
||||||
async function create_product() {
|
async function create_product() {
|
||||||
@ -37,6 +38,7 @@ async function create_product() {
|
|||||||
alert_enabled: productAlert.value,
|
alert_enabled: productAlert.value,
|
||||||
stock_limit: productStockLimit.value,
|
stock_limit: productStockLimit.value,
|
||||||
})
|
})
|
||||||
|
products.value = await getProducts();
|
||||||
toast.add({ severity: 'success', life: 2500, summary:`${productName.value} crée`});
|
toast.add({ severity: 'success', life: 2500, summary:`${productName.value} crée`});
|
||||||
} catch (error){
|
} catch (error){
|
||||||
if (error.response && error.response.data) {
|
if (error.response && error.response.data) {
|
||||||
@ -64,6 +66,24 @@ async function create_product() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
onMounted(async () => {
|
||||||
|
try {
|
||||||
|
products.value = await getProducts();
|
||||||
|
products.value.forEach((product) => {
|
||||||
|
product.creation_date = formatDate(product.creation_date);
|
||||||
|
product.modification_date = formatDate(product.modification_date);
|
||||||
|
});
|
||||||
|
} catch (error){
|
||||||
|
if (error.response && error.response.data) {
|
||||||
|
const data = error.response.data;
|
||||||
|
if (data.detail) {
|
||||||
|
toast.add({ severity: 'error',life: 2500, summary: 'Erreur', detail: data.detail });
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
toast.add({ severity: 'error',life: 2500, summary: 'Erreur', detail: 'Une erreur est survenue.' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@ -117,5 +137,15 @@ async function create_product() {
|
|||||||
<Button label="Créer" type="submit" class="p-button-primary" />
|
<Button label="Créer" type="submit" class="p-button-primary" />
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<DataTable :value="products" tableStyle="min-width: 50rem">
|
||||||
|
<Column field="name" header="Name"></Column>
|
||||||
|
<Column field="description" header="description"></Column>
|
||||||
|
<Column field="quantity" header="Quantity"></Column>
|
||||||
|
<Column field="is_stock_low" header="is_stock_low"></Column>
|
||||||
|
<Column field="creation_date" header="creation_date"></Column>
|
||||||
|
<Column field="modification_date" header="modification_date"></Column>
|
||||||
|
</DataTable>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user