@@ -569,7 +572,8 @@
return acc;
}, {});
- // Sort items from newest to oldest & filter them
+ let filteredGrouped = {};
+
for (let itemId in grouped) {
let movements = grouped[itemId].movements
.sort((a, b) => b.id - a.id); // Newest to oldest
@@ -578,14 +582,27 @@
m.toOther === 'Return' && m.movementComplete == 1
);
+ let nextIndex = movements.findIndex(m =>
+ m.latestStatus === 'Ready To Deploy' && m.movementComplete == 1
+ );
+
if (stopIndex !== -1) {
movements = movements.slice(0, stopIndex);
}
- grouped[itemId].movements = movements;
+ if (nextIndex !== -1) {
+ movements = movements.slice(0, nextIndex);
+ }
+
+ if (movements.length > 0) {
+ filteredGrouped[itemId] = {
+ uniqueID: grouped[itemId].uniqueID,
+ movements: movements,
+ };
+ }
}
- return grouped;
+ return filteredGrouped;
},
groupedByStation() {
@@ -611,11 +628,18 @@
m.toOther === 'Return' && m.movementComplete == 1
);
- // Remove older movements
+ let nextIndex = movements.findIndex(m =>
+ m.latestStatus === 'Ready To Deploy' && m.movementComplete == 1
+ );
+
if (stopIndex !== -1) {
movements = movements.slice(0, stopIndex);
}
+ if (nextIndex !== -1) {
+ movements = movements.slice(0, nextIndex);
+ }
+
if (movements.length > 0) {
let latestMovement = movements[0];
let station = latestMovement.lastStationName || latestMovement.toStationName || "Self Assigned";
@@ -648,11 +672,17 @@
return this.processedGroupedItems;
}
const searchLower = this.searchQuery.toLowerCase();
- return Object.fromEntries(
- Object.entries(this.processedGroupedItems).filter(([_, group]) =>
- group.uniqueID.toLowerCase().includes(searchLower)
- )
- );
+ let grouped = this.processedGroupedItems;
+ let filtered = {};
+
+ Object.keys(grouped).forEach(item => {
+ if (item.toLowerCase().includes(searchLower)) {
+ if (grouped[item] > 0) {
+ filtered[item] = grouped[item];
+ }
+ }
+ });
+ return filtered;
},
filteredStation() {
@@ -720,6 +750,10 @@
}
},
+ handleSorting() {
+ this.renderTables();
+ },
+
renderTables() {
if (this.sortBy === "all") {
this.initAllTables();
@@ -737,7 +771,7 @@
this.stationDatatable.destroy();
}
- // Get latest movement per uniqueID
+ // Get latest movement per uniqueID after filtering
function getLatestMovements(data) {
let latestMovements = {};
data.forEach(movement => {
@@ -749,17 +783,41 @@
return Object.values(latestMovements);
}
- // Distribute items based on priority
+ // Filter movements based on conditions
+ function filterMovements(movements) {
+ let stopIndex = movements.findIndex(m =>
+ m.toOther === 'Return' && m.movementComplete == 1
+ );
+
+ let nextIndex = movements.findIndex(m =>
+ m.latestStatus === 'Ready To Deploy' && m.movementComplete == 1
+ );
+
+ if (stopIndex !== -1) {
+ movements = movements.slice(0, stopIndex);
+ }
+
+ if (nextIndex !== -1) {
+ movements = movements.slice(0, nextIndex);
+ }
+
+ return movements;
+ }
+
let latestMovements = getLatestMovements(this.itemMovements);
+
let notCompleteData = [];
let completeData = [];
- let assignedData = [];
latestMovements.forEach(movement => {
- if (movement.movementComplete == 0) {
- notCompleteData.push(movement);
- } else if (movement.movementComplete == 1) {
- completeData.push(movement);
+ let filteredMovements = filterMovements([movement]);
+
+ if (filteredMovements.length > 0) {
+ if (movement.movementComplete == 0) {
+ notCompleteData.push(movement);
+ } else if (movement.movementComplete == 1) {
+ completeData.push(movement);
+ }
}
});
@@ -818,21 +876,22 @@
var isPdf = /\.pdf$/i.test(data);
if (isImage) {
return `
-
- `;
- } else if (isPdf) {
- return `
-
- View PDF
- `;
+
+ `;
+ } else if (isPdf) {
+ return `
+
+ View PDF
+ `;
} else {
return `Download File`;
}
}
},
+
toggleCategory(itemId) {
this.categoryVisible[itemId] = !this.categoryVisible[itemId];
@@ -857,9 +916,6 @@
this.detailsVisible[movementId] = !this.detailsVisible[movementId];
},
- handleSorting() {
- this.renderTables();
- },
},
});
diff --git a/Areas/Inventory/Views/ItemMovement/ItemRequest.cshtml b/Areas/Inventory/Views/ItemMovement/ItemRequest.cshtml
index 680e829..f4ea3c2 100644
--- a/Areas/Inventory/Views/ItemMovement/ItemRequest.cshtml
+++ b/Areas/Inventory/Views/ItemMovement/ItemRequest.cshtml
@@ -439,242 +439,80 @@
},
- initiateTable() {
- self = this;
- this.requestDatatable = $('#requestDatatable').DataTable({
- "data": this.request.filter(request => request.status == "Requested"),
- "columns": [
- {
- "title": "Request ID",
- "data": "requestID",
- "createdCell": function (td, cellData, rowData, row, col) {
- // Assign a unique ID to the
element
- $(td).attr('id', `qr${cellData}`);
- },
- },
- {
- "title": "Product Name",
- "data": "productName",
- "render": function (data, type, full, meta) {
- if (!data) {
- return "No Document";
- }
+ initiateTable() {
+ let self = this;
- var imageSrc = full.productPicture;
- // Check if the document is an image based on file extension
- var isImage = /\.(jpeg|jpg|png|gif)$/i.test(imageSrc);
- var isPdf = /\.pdf$/i.test(imageSrc);
- // var imageSrc = full.productImage; Fallback to data if imgsrc is unavailable
- console.log(full);
+ function renderDocument(data, full) {
+ if (!data) return "No Document";
- if (isImage) {
- return `