Compare commits
25 Commits
v1.4.0
...
9f31be7c04
| Author | SHA1 | Date | |
|---|---|---|---|
| 9f31be7c04 | |||
| 6c9f2346d1 | |||
| 76008065bf | |||
| be9aeeae33 | |||
| 93976751ca | |||
| dd9bef7855 | |||
| aa7785472b | |||
| 9f642a65dd | |||
| d002f4655e | |||
| e006f01b8e | |||
| 4c89789601 | |||
| 5359209956 | |||
| 6b63f75070 | |||
| 164f7fe3a6 | |||
| 312ab74ead | |||
| ad1cb70cdc | |||
| ce01b7ad14 | |||
| 02c7b966eb | |||
| a3d9e1ebb9 | |||
| 40e13ec585 | |||
| bb15c55e46 | |||
| 35c2e07c05 | |||
| 92187fd345 | |||
| 0dbab45651 | |||
| 14ac78982f |
@@ -1,17 +1,18 @@
|
|||||||
name: Build
|
name: Build
|
||||||
on:
|
on:
|
||||||
push:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- '*'
|
- 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
|
||||||
|
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin' # See 'Supported distributions' for available options
|
distribution: 'temurin' # See 'Supported distributions' for available options
|
||||||
java-version: '21'
|
java-version: '21'
|
||||||
|
|||||||
@@ -1,27 +1,28 @@
|
|||||||
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
|
||||||
|
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin' # See 'Supported distributions' for available options
|
distribution: 'temurin' # See 'Supported distributions' for available options
|
||||||
java-version: '21'
|
java-version: '21'
|
||||||
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,6 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
java
|
java
|
||||||
id("org.springframework.boot") version "3.5.0"
|
id("org.springframework.boot") version "4.0.6"
|
||||||
id("io.spring.dependency-management") version "1.1.7"
|
id("io.spring.dependency-management") version "1.1.7"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ dependencies {
|
|||||||
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
|
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-web")
|
implementation("org.springframework.boot:spring-boot-starter-web")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-actuator")
|
implementation("org.springframework.boot:spring-boot-starter-actuator")
|
||||||
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.8")
|
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:3.0.3")
|
||||||
implementation("org.modelmapper:modelmapper:3.2.3")
|
implementation("org.modelmapper:modelmapper:3.2.3")
|
||||||
compileOnly("org.projectlombok:lombok")
|
compileOnly("org.projectlombok:lombok")
|
||||||
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
||||||
|
|||||||
6
renovate.json
Normal file
6
renovate.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
|
"extends": [
|
||||||
|
"local>seeseemelk/renovate"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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