Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ad1cb70cdc | |||
| ce01b7ad14 | |||
| 02c7b966eb | |||
| a3d9e1ebb9 | |||
| 40e13ec585 | |||
| bb15c55e46 | |||
| 35c2e07c05 | |||
| 92187fd345 | |||
| 0dbab45651 | |||
| 14ac78982f |
@@ -5,7 +5,7 @@ on:
|
|||||||
- '*'
|
- '*'
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: standard-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
name: Deploy
|
name: Deploy
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
tags:
|
branches:
|
||||||
- 'v*'
|
- master
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: standard-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -18,10 +19,10 @@ jobs:
|
|||||||
cache: 'gradle'
|
cache: 'gradle'
|
||||||
|
|
||||||
- name: Build Jar
|
- name: Build Jar
|
||||||
run: ./gradlew bootJar
|
run: ./gradlew bootJar --no-daemon
|
||||||
|
|
||||||
- name: Build Container
|
- name: Build Container
|
||||||
run: docker build --tag gitea.seeseepuff.be/seeseemelk/pcinv:${{github.ref_name}} .
|
run: docker build --tag gitea.seeseepuff.be/seeseemelk/pcinv:latest .
|
||||||
|
|
||||||
- name: Login
|
- name: Login
|
||||||
with: # Set the secret as an input
|
with: # Set the secret as an input
|
||||||
@@ -29,4 +30,4 @@ jobs:
|
|||||||
run: docker login gitea.seeseepuff.be -u seeseemelk -p ${{ secrets.PACKAGE_RW }}
|
run: docker login gitea.seeseepuff.be -u seeseemelk -p ${{ secrets.PACKAGE_RW }}
|
||||||
|
|
||||||
- name: Push Container
|
- name: Push Container
|
||||||
run: docker push gitea.seeseepuff.be/seeseemelk/pcinv:${{github.ref_name}}
|
run: docker push gitea.seeseepuff.be/seeseemelk/pcinv:latest
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package be.seeseepuff.pcinv.controllers;
|
package be.seeseepuff.pcinv.controllers;
|
||||||
|
|
||||||
|
import be.seeseepuff.pcinv.models.Asset;
|
||||||
import be.seeseepuff.pcinv.models.WorkLogEntry;
|
import be.seeseepuff.pcinv.models.WorkLogEntry;
|
||||||
import be.seeseepuff.pcinv.services.AssetService;
|
import be.seeseepuff.pcinv.services.AssetService;
|
||||||
import be.seeseepuff.pcinv.services.BuildService;
|
import be.seeseepuff.pcinv.services.BuildService;
|
||||||
@@ -94,7 +95,12 @@ public class WebController {
|
|||||||
model.addAttribute(DESCRIPTOR, assetService.getAssetDescriptor(type));
|
model.addAttribute(DESCRIPTOR, assetService.getAssetDescriptor(type));
|
||||||
model.addAttribute(DESCRIPTORS, tree);
|
model.addAttribute(DESCRIPTORS, tree);
|
||||||
model.addAttribute(PROPERTIES, tree.stream().flatMap(d -> d.getProperties().stream()).toList());
|
model.addAttribute(PROPERTIES, tree.stream().flatMap(d -> d.getProperties().stream()).toList());
|
||||||
model.addAttribute(ASSETS, assetService.getAssetsByType(type));
|
var assets = assetService.getAssetsByType(type);
|
||||||
|
assets.sort(Comparator
|
||||||
|
.comparing((Asset a) -> a.getAsset().getBrand(), Comparator.nullsFirst(Comparator.naturalOrder()))
|
||||||
|
.thenComparing((Asset a) -> a.getAsset().getModel(), Comparator.nullsFirst(Comparator.naturalOrder()))
|
||||||
|
.thenComparing(Asset::getQr));
|
||||||
|
model.addAttribute(ASSETS, assets);
|
||||||
return "browse_type";
|
return "browse_type";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,10 @@ public class CapacityInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static CapacityUnit idealUnitForCapacity(long capacity, CapacityUnit[] units) {
|
public static CapacityUnit idealUnitForCapacity(long capacity, CapacityUnit[] units) {
|
||||||
|
if (capacity <= 0) {
|
||||||
|
return CapacityUnit.BYTES; // Default to bytes for non-positive capacities
|
||||||
|
}
|
||||||
|
|
||||||
return Arrays.stream(units)
|
return Arrays.stream(units)
|
||||||
.sorted(Comparator.comparing(CapacityUnit::getBytes).reversed())
|
.sorted(Comparator.comparing(CapacityUnit::getBytes).reversed())
|
||||||
.filter(unit -> capacity % unit.getBytes() == 0)
|
.filter(unit -> capacity % unit.getBytes() == 0)
|
||||||
|
|||||||
@@ -57,16 +57,16 @@ public class HddAsset implements Asset
|
|||||||
@InputList
|
@InputList
|
||||||
private String driveType;
|
private String driveType;
|
||||||
|
|
||||||
@Description("Number of heads in the drive.")
|
|
||||||
@Property("Heads")
|
|
||||||
@HideInOverview
|
|
||||||
private Integer heads;
|
|
||||||
|
|
||||||
@Description("Number of cylinders in the drive.")
|
@Description("Number of cylinders in the drive.")
|
||||||
@Property("Cylinders")
|
@Property("Cylinders")
|
||||||
@HideInOverview
|
@HideInOverview
|
||||||
private Integer cylinders;
|
private Integer cylinders;
|
||||||
|
|
||||||
|
@Description("Number of heads in the drive.")
|
||||||
|
@Property("Heads")
|
||||||
|
@HideInOverview
|
||||||
|
private Integer heads;
|
||||||
|
|
||||||
@Description("Number of sectors in the drive.")
|
@Description("Number of sectors in the drive.")
|
||||||
@Property("Sectors")
|
@Property("Sectors")
|
||||||
@HideInOverview
|
@HideInOverview
|
||||||
|
|||||||
@@ -9,7 +9,8 @@
|
|||||||
<tr th:each="a : ${assets}">
|
<tr th:each="a : ${assets}">
|
||||||
<td th:each="p : ${properties}" th:if="${!p.hideInOverview}">
|
<td th:each="p : ${properties}" th:if="${!p.hideInOverview}">
|
||||||
<a th:if="${p.name == 'qr'}" th:href="'/view/'+${a.getQr()}" th:text="${p.renderValue(a)}"></a>
|
<a th:if="${p.name == 'qr'}" th:href="'/view/'+${a.getQr()}" th:text="${p.renderValue(a)}"></a>
|
||||||
<span th:if="${p.name != 'qr'}" th:text="${p.renderValue(a)}"></span>
|
<a th:if="${p.name == 'build' && a.getAsset().getBuild() != null}" th:href="'/build/'+${a.getAsset().getBuild().getId()}" th:text="${p.renderValue(a)}"></a>
|
||||||
|
<span th:if="${p.name != 'qr' && (p.name != 'build' || a.getAsset().getBuild() == null)}" th:text="${p.renderValue(a)}"></span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a th:href="'/view/'+${a.getQr()}">View</a>
|
<a th:href="'/view/'+${a.getQr()}">View</a>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr th:each="p : ${build.getParts()}">
|
<tr th:each="p : ${build.getParts()}">
|
||||||
<td><a th:href="'/view/' + ${p.qr}" th:text="${p.qr}"></a></td>
|
<td><a th:href="'/view/' + ${p.qr}" th:text="${p.qr}"></a></td>
|
||||||
<td th:text="${descriptors.getDescriptorForType(p.type).displayName}"></td>
|
<td><a th:href="'/browse/' + ${p.type}" th:text="${descriptors.getDescriptorForType(p.type).displayName}"></a></td>
|
||||||
<td th:text="${descriptors.getGenericProperty('brand').renderValue(p)}"></td>
|
<td th:text="${descriptors.getGenericProperty('brand').renderValue(p)}"></td>
|
||||||
<td th:text="${descriptors.getGenericProperty('model').renderValue(p)}"></td>
|
<td th:text="${descriptors.getGenericProperty('model').renderValue(p)}"></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -7,7 +7,10 @@
|
|||||||
<table border="1" cellpadding="4">
|
<table border="1" cellpadding="4">
|
||||||
<tr th:each="p : ${d.properties}">
|
<tr th:each="p : ${d.properties}">
|
||||||
<th bgcolor="lightgray"><b th:text="${p.displayName}"></b></th>
|
<th bgcolor="lightgray"><b th:text="${p.displayName}"></b></th>
|
||||||
<td th:if="${p.name == 'build'}"><a th:href="'/build/' + ${asset.getAsset().getBuild().id}" th:text="${p.renderValue(asset)}"></a></td>
|
<td th:if="${p.name == 'build'}">
|
||||||
|
<a th:if="${asset.getAsset().getBuild() != null}" th:href="'/build/' + ${asset.getAsset().getBuild().id}" th:text="${p.renderValue(asset)}"></a>
|
||||||
|
<span th:if="${asset.getAsset().getBuild() == null}" th:text="${p.renderValue(asset)}"></span>
|
||||||
|
</td>
|
||||||
<td th:if="${p.name != 'build'}" th:text="${p.renderValue(asset)}"></td>
|
<td th:if="${p.name != 'build'}" th:text="${p.renderValue(asset)}"></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
Reference in New Issue
Block a user