added percent usage
This commit is contained in:
		| @@ -9,11 +9,11 @@ import java.time.format.DateTimeFormatter; | ||||
| import java.util.Date; | ||||
| import java.util.Map; | ||||
|  | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TBillingRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VBillingRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TDoneRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TJobRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TModuleRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TProjectRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VJobRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VModuleRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VProjectRecord; | ||||
|  | ||||
| /** | ||||
|  *  | ||||
| @@ -29,10 +29,10 @@ public class DoneBean implements Serializable, Comparable<DoneBean> { | ||||
| 	private LocalDate day; | ||||
| 	private LocalDateTime timeFrom; | ||||
| 	private LocalDateTime timeUntil; | ||||
| 	private TProjectRecord project; | ||||
| 	private TModuleRecord module; | ||||
| 	private TJobRecord activity; | ||||
| 	private TBillingRecord billing; | ||||
| 	private VProjectRecord project; | ||||
| 	private VModuleRecord module; | ||||
| 	private VJobRecord activity; | ||||
| 	private VBillingRecord billing; | ||||
| 	private Integer fkProject; | ||||
| 	private Integer fkModule; | ||||
| 	private Integer fkJob; | ||||
| @@ -42,8 +42,8 @@ public class DoneBean implements Serializable, Comparable<DoneBean> { | ||||
| 		this.day = null; | ||||
| 	} | ||||
|  | ||||
| 	public DoneBean(TDoneRecord r, Map<Integer, TProjectRecord> projectMap, Map<Integer, TModuleRecord> moduleMap, | ||||
| 			Map<Integer, TJobRecord> jobMap, Map<Integer, TBillingRecord> billingMap) { | ||||
| 	public DoneBean(TDoneRecord r, Map<Integer, VProjectRecord> projectMap, Map<Integer, VModuleRecord> moduleMap, | ||||
| 			Map<Integer, VJobRecord> jobMap, Map<Integer, VBillingRecord> billingMap) { | ||||
| 		this.pk = r.getPk(); | ||||
| 		this.day = r.getTimeFrom() != null ? r.getTimeFrom().toLocalDate() : (r.getTimeUntil() == null ? r.getTimeUntil().toLocalDate() : LocalDate.now());  | ||||
| 		this.timeFrom = r.getTimeFrom(); | ||||
| @@ -260,29 +260,29 @@ public class DoneBean implements Serializable, Comparable<DoneBean> { | ||||
| 		this.timeUntil = timeUntil; | ||||
| 	} | ||||
|  | ||||
| 	public TProjectRecord getProject() { | ||||
| 	public VProjectRecord getProject() { | ||||
| 		return project; | ||||
| 	} | ||||
|  | ||||
| 	public void setProject(TProjectRecord project) { | ||||
| 	public void setProject(VProjectRecord project) { | ||||
| 		this.project = project; | ||||
| 		this.fkProject = project != null ? project.getPk() : null; | ||||
| 	} | ||||
|  | ||||
| 	public TModuleRecord getModule() { | ||||
| 	public VModuleRecord getModule() { | ||||
| 		return module; | ||||
| 	} | ||||
|  | ||||
| 	public void setModule(TModuleRecord module) { | ||||
| 	public void setModule(VModuleRecord module) { | ||||
| 		this.module = module; | ||||
| 		this.fkModule = module != null ? module.getPk() : null; | ||||
| 	} | ||||
|  | ||||
| 	public TJobRecord getActivity() { | ||||
| 	public VJobRecord getActivity() { | ||||
| 		return activity; | ||||
| 	} | ||||
|  | ||||
| 	public void setActivity(TJobRecord activity) { | ||||
| 	public void setActivity(VJobRecord activity) { | ||||
| 		this.activity = activity; | ||||
| 		this.fkJob = activity != null ? activity.getPk() : null; | ||||
| 	} | ||||
| @@ -290,14 +290,14 @@ public class DoneBean implements Serializable, Comparable<DoneBean> { | ||||
| 	/** | ||||
| 	 * @return the billing | ||||
| 	 */ | ||||
| 	public TBillingRecord getBilling() { | ||||
| 	public VBillingRecord getBilling() { | ||||
| 		return billing; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * @param billing the billing to set | ||||
| 	 */ | ||||
| 	public void setBilling(TBillingRecord billing) { | ||||
| 	public void setBilling(VBillingRecord billing) { | ||||
| 		this.billing = billing; | ||||
| 		this.fkBilling = billing != null ? billing.getPk() : null; | ||||
| 	} | ||||
|   | ||||
| @@ -5,10 +5,10 @@ import java.util.List; | ||||
|  | ||||
| import javax.servlet.http.HttpServletRequest; | ||||
|  | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TBillingRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TJobRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TModuleRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TProjectRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VBillingRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VJobRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VModuleRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VProjectRecord; | ||||
|  | ||||
| /** | ||||
|  *  | ||||
| @@ -22,13 +22,13 @@ public interface IDoneService { | ||||
|  | ||||
| 	public String getCurrentUser(HttpServletRequest request); | ||||
|  | ||||
| 	public List<TProjectRecord> getProjects(boolean includeNull); | ||||
| 	public List<VProjectRecord> getProjects(boolean includeNull); | ||||
|  | ||||
| 	public List<TModuleRecord> getModules(boolean includeNull); | ||||
| 	public List<VModuleRecord> getModules(boolean includeNull); | ||||
|  | ||||
| 	public List<TJobRecord> getJobs(boolean includeNull); | ||||
| 	public List<VJobRecord> getJobs(boolean includeNull); | ||||
|  | ||||
| 	public List<TBillingRecord> getBillings(boolean includeNull); | ||||
| 	public List<VBillingRecord> getBillings(boolean includeNull); | ||||
|  | ||||
| 	public Integer doUpsert(DoneBean bean, String username); | ||||
|  | ||||
|   | ||||
| @@ -6,6 +6,10 @@ import static de.jottyfan.timetrack.db.done.Tables.T_JOB; | ||||
| import static de.jottyfan.timetrack.db.done.Tables.T_MODULE; | ||||
| import static de.jottyfan.timetrack.db.done.Tables.T_PROJECT; | ||||
| import static de.jottyfan.timetrack.db.profile.Tables.T_LOGIN; | ||||
| import static de.jottyfan.timetrack.db.done.Tables.V_BILLING; | ||||
| import static de.jottyfan.timetrack.db.done.Tables.V_JOB; | ||||
| import static de.jottyfan.timetrack.db.done.Tables.V_MODULE; | ||||
| import static de.jottyfan.timetrack.db.done.Tables.V_PROJECT; | ||||
|  | ||||
| import java.sql.SQLException; | ||||
| import java.time.LocalDate; | ||||
| @@ -28,11 +32,11 @@ import org.jooq.exception.DataAccessException; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Repository; | ||||
|  | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TBillingRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VBillingRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TDoneRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TJobRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TModuleRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TProjectRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VJobRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VModuleRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VProjectRecord; | ||||
| import de.jottyfan.timetrack.db.profile.tables.records.TLoginRecord; | ||||
| import de.jottyfan.timetrack.spring.done.DoneBean; | ||||
|  | ||||
| @@ -76,12 +80,13 @@ public class DoneGateway { | ||||
| 	 * @throws ClassNotFoundException | ||||
| 	 * @throws SQLException | ||||
| 	 */ | ||||
| 	public List<TProjectRecord> getAllProjects(boolean includeNull) throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		List<TProjectRecord> list = new ArrayList<>(); | ||||
| 	public List<VProjectRecord> getAllProjects(boolean includeNull) | ||||
| 			throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		List<VProjectRecord> list = new ArrayList<>(); | ||||
| 		if (includeNull) { | ||||
| 			list.add(new TProjectRecord(null, null, "---")); | ||||
| 			list.add(new VProjectRecord()); | ||||
| 		} | ||||
| 		list.addAll(getJooq().selectFrom(T_PROJECT).orderBy(T_PROJECT.NAME).fetchInto(TProjectRecord.class)); | ||||
| 		list.addAll(getJooq().selectFrom(V_PROJECT).orderBy(V_PROJECT.NAME).fetchInto(VProjectRecord.class)); | ||||
| 		return list; | ||||
| 	} | ||||
|  | ||||
| @@ -96,12 +101,13 @@ public class DoneGateway { | ||||
| 	 * @throws ClassNotFoundException | ||||
| 	 * @throws SQLException | ||||
| 	 */ | ||||
| 	public List<TModuleRecord> getAllModules(boolean includeNull) throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		List<TModuleRecord> list = new ArrayList<>(); | ||||
| 	public List<VModuleRecord> getAllModules(boolean includeNull) | ||||
| 			throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		List<VModuleRecord> list = new ArrayList<>(); | ||||
| 		if (includeNull) { | ||||
| 			list.add(new TModuleRecord(null, null, "---")); | ||||
| 			list.add(new VModuleRecord()); | ||||
| 		} | ||||
| 		list.addAll(getJooq().selectFrom(T_MODULE).orderBy(T_MODULE.NAME).fetchInto(TModuleRecord.class)); | ||||
| 		list.addAll(getJooq().selectFrom(T_MODULE).orderBy(T_MODULE.NAME).fetchInto(VModuleRecord.class)); | ||||
| 		return list; | ||||
| 	} | ||||
|  | ||||
| @@ -116,12 +122,13 @@ public class DoneGateway { | ||||
| 	 * @throws ClassNotFoundException | ||||
| 	 * @throws SQLException | ||||
| 	 */ | ||||
| 	public List<TJobRecord> getAllJobs(boolean includeNull) throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		List<TJobRecord> list = new ArrayList<>(); | ||||
| 	public List<VJobRecord> getAllJobs(boolean includeNull) | ||||
| 			throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		List<VJobRecord> list = new ArrayList<>(); | ||||
| 		if (includeNull) { | ||||
| 			list.add(new TJobRecord(null, null, "---")); | ||||
| 			list.add(new VJobRecord()); | ||||
| 		} | ||||
| 		list.addAll(getJooq().selectFrom(T_JOB).orderBy(T_JOB.NAME).fetchInto(TJobRecord.class)); | ||||
| 		list.addAll(getJooq().selectFrom(T_JOB).orderBy(T_JOB.NAME).fetchInto(VJobRecord.class)); | ||||
| 		return list; | ||||
| 	} | ||||
|  | ||||
| @@ -136,12 +143,13 @@ public class DoneGateway { | ||||
| 	 * @throws ClassNotFoundException | ||||
| 	 * @throws SQLException | ||||
| 	 */ | ||||
| 	public List<TBillingRecord> getAllBillings(boolean includeNull) throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		List<TBillingRecord> list = new ArrayList<>(); | ||||
| 	public List<VBillingRecord> getAllBillings(boolean includeNull) | ||||
| 			throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		List<VBillingRecord> list = new ArrayList<>(); | ||||
| 		if (includeNull) { | ||||
| 			list.add(new TBillingRecord(null, null, "---", null, null)); | ||||
| 			list.add(new VBillingRecord(null, null, "---", null, null)); | ||||
| 		} | ||||
| 		list.addAll(getJooq().selectFrom(T_BILLING).orderBy(T_BILLING.NAME).fetchInto(TBillingRecord.class)); | ||||
| 		list.addAll(getJooq().selectFrom(T_BILLING).orderBy(T_BILLING.NAME).fetchInto(VBillingRecord.class)); | ||||
| 		return list; | ||||
| 	} | ||||
|  | ||||
| @@ -153,10 +161,10 @@ public class DoneGateway { | ||||
| 	 * @throws ClassNotFoundException | ||||
| 	 * @throws DataAccessException | ||||
| 	 */ | ||||
| 	private Map<Integer, TProjectRecord> getProjectMap() | ||||
| 	private Map<Integer, VProjectRecord> getProjectMap() | ||||
| 			throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		Map<Integer, TProjectRecord> map = new HashMap<>(); | ||||
| 		for (TProjectRecord r : getAllProjects(false)) { | ||||
| 		Map<Integer, VProjectRecord> map = new HashMap<>(); | ||||
| 		for (VProjectRecord r : getAllProjects(false)) { | ||||
| 			map.put(r.getPk(), r); | ||||
| 		} | ||||
| 		return map; | ||||
| @@ -170,9 +178,9 @@ public class DoneGateway { | ||||
| 	 * @throws ClassNotFoundException | ||||
| 	 * @throws DataAccessException | ||||
| 	 */ | ||||
| 	private Map<Integer, TModuleRecord> getModuleMap() throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		Map<Integer, TModuleRecord> map = new HashMap<>(); | ||||
| 		for (TModuleRecord r : getAllModules(false)) { | ||||
| 	private Map<Integer, VModuleRecord> getModuleMap() throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		Map<Integer, VModuleRecord> map = new HashMap<>(); | ||||
| 		for (VModuleRecord r : getAllModules(false)) { | ||||
| 			map.put(r.getPk(), r); | ||||
| 		} | ||||
| 		return map; | ||||
| @@ -186,9 +194,9 @@ public class DoneGateway { | ||||
| 	 * @throws ClassNotFoundException | ||||
| 	 * @throws DataAccessException | ||||
| 	 */ | ||||
| 	private Map<Integer, TJobRecord> getJobMap() throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		Map<Integer, TJobRecord> map = new HashMap<>(); | ||||
| 		for (TJobRecord r : getAllJobs(false)) { | ||||
| 	private Map<Integer, VJobRecord> getJobMap() throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		Map<Integer, VJobRecord> map = new HashMap<>(); | ||||
| 		for (VJobRecord r : getAllJobs(false)) { | ||||
| 			map.put(r.getPk(), r); | ||||
| 		} | ||||
| 		return map; | ||||
| @@ -202,10 +210,10 @@ public class DoneGateway { | ||||
| 	 * @throws ClassNotFoundException | ||||
| 	 * @throws DataAccessException | ||||
| 	 */ | ||||
| 	private Map<Integer, TBillingRecord> getBillingMap() | ||||
| 	private Map<Integer, VBillingRecord> getBillingMap() | ||||
| 			throws DataAccessException, ClassNotFoundException, SQLException { | ||||
| 		Map<Integer, TBillingRecord> map = new HashMap<>(); | ||||
| 		for (TBillingRecord r : getAllBillings(false)) { | ||||
| 		Map<Integer, VBillingRecord> map = new HashMap<>(); | ||||
| 		for (VBillingRecord r : getAllBillings(false)) { | ||||
| 			map.put(r.getPk(), r); | ||||
| 		} | ||||
| 		return map; | ||||
| @@ -241,10 +249,10 @@ public class DoneGateway { | ||||
| 		// @formatter:on | ||||
| 		LOGGER.debug("{}", sql.toString()); | ||||
| 		List<DoneBean> list = new ArrayList<>(); | ||||
| 		Map<Integer, TProjectRecord> projectMap = getProjectMap(); | ||||
| 		Map<Integer, TModuleRecord> moduleMap = getModuleMap(); | ||||
| 		Map<Integer, TJobRecord> jobMap = getJobMap(); | ||||
| 		Map<Integer, TBillingRecord> billingMap = getBillingMap(); | ||||
| 		Map<Integer, VProjectRecord> projectMap = getProjectMap(); | ||||
| 		Map<Integer, VModuleRecord> moduleMap = getModuleMap(); | ||||
| 		Map<Integer, VJobRecord> jobMap = getJobMap(); | ||||
| 		Map<Integer, VBillingRecord> billingMap = getBillingMap(); | ||||
| 		for (Record7<Integer, LocalDateTime, LocalDateTime, Integer, Integer, Integer, Integer> r : sql.fetch()) { | ||||
| 			DoneBean bean = new DoneBean(); | ||||
| 			bean.setPk(r.get(T_DONE.PK)); | ||||
| @@ -303,10 +311,10 @@ public class DoneGateway { | ||||
| 			.where(T_DONE.PK.eq(pk)); | ||||
| 		// @formatter:on | ||||
| 		LOGGER.debug("{}", sql.toString()); | ||||
| 		Map<Integer, TProjectRecord> projectMap = getProjectMap(); | ||||
| 		Map<Integer, TModuleRecord> moduleMap = getModuleMap(); | ||||
| 		Map<Integer, TJobRecord> jobMap = getJobMap(); | ||||
| 		Map<Integer, TBillingRecord> billingMap = getBillingMap(); | ||||
| 		Map<Integer, VProjectRecord> projectMap = getProjectMap(); | ||||
| 		Map<Integer, VModuleRecord> moduleMap = getModuleMap(); | ||||
| 		Map<Integer, VJobRecord> jobMap = getJobMap(); | ||||
| 		Map<Integer, VBillingRecord> billingMap = getBillingMap(); | ||||
| 		for (Record7<Integer, LocalDateTime, LocalDateTime, Integer, Integer, Integer, Integer> r : sql.fetch()) { | ||||
| 			DoneBean bean = new DoneBean(); | ||||
| 			bean.setPk(r.get(T_DONE.PK)); | ||||
|   | ||||
| @@ -14,10 +14,10 @@ import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
|  | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TBillingRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TJobRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TModuleRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.TProjectRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VBillingRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VJobRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VModuleRecord; | ||||
| import de.jottyfan.timetrack.db.done.tables.records.VProjectRecord; | ||||
| import de.jottyfan.timetrack.spring.done.DoneBean; | ||||
| import de.jottyfan.timetrack.spring.done.IDoneService; | ||||
| import de.jottyfan.timetrack.spring.note.impl.NoteService; | ||||
| @@ -68,7 +68,7 @@ public class DoneService implements IDoneService { | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public List<TProjectRecord> getProjects(boolean includeNull) { | ||||
| 	public List<VProjectRecord> getProjects(boolean includeNull) { | ||||
| 		try { | ||||
| 			return new DoneGateway(dsl).getAllProjects(includeNull); | ||||
| 		} catch (Exception e) { | ||||
| @@ -78,7 +78,7 @@ public class DoneService implements IDoneService { | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public List<TModuleRecord> getModules(boolean includeNull) { | ||||
| 	public List<VModuleRecord> getModules(boolean includeNull) { | ||||
| 		try { | ||||
| 			return new DoneGateway(dsl).getAllModules(includeNull); | ||||
| 		} catch (Exception e) { | ||||
| @@ -88,7 +88,7 @@ public class DoneService implements IDoneService { | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public List<TJobRecord> getJobs(boolean includeNull) { | ||||
| 	public List<VJobRecord> getJobs(boolean includeNull) { | ||||
| 		try { | ||||
| 			return new DoneGateway(dsl).getAllJobs(includeNull); | ||||
| 		} catch (Exception e) { | ||||
| @@ -98,7 +98,7 @@ public class DoneService implements IDoneService { | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public List<TBillingRecord> getBillings(boolean includeNull) { | ||||
| 	public List<VBillingRecord> getBillings(boolean includeNull) { | ||||
| 		try { | ||||
| 			return new DoneGateway(dsl).getAllBillings(includeNull); | ||||
| 		} catch (Exception e) { | ||||
|   | ||||
| @@ -78,13 +78,13 @@ | ||||
| 					<thead> | ||||
| 						<tr> | ||||
| 							<th>Name</th> | ||||
| 							<th>Benutzt</th> | ||||
| 							<th>Benutzt in %</th> | ||||
| 						</tr> | ||||
| 					</thead> | ||||
| 					<tbody> | ||||
| 						<tr th:each="project : ${projectList}"> | ||||
| 							<td><span th:text="${project.name}"></span></td> | ||||
| 							<td>TODO</td> | ||||
| 							<td><span th:text="${project.percentUsage}"></span></td> | ||||
| 						</tr> | ||||
| 					</tbody> | ||||
| 				</table> | ||||
| @@ -94,13 +94,13 @@ | ||||
| 					<thead> | ||||
| 						<tr> | ||||
| 							<th>Name</th> | ||||
| 							<th>Benutzt</th> | ||||
| 							<th>Benutzt in %</th> | ||||
| 						</tr> | ||||
| 					</thead> | ||||
| 					<tbody> | ||||
| 						<tr th:each="module : ${moduleList}"> | ||||
| 							<td><span th:text="${module.name}"></span></td> | ||||
| 							<td>TODO</td> | ||||
| 							<td><span th:text="${module.percentUsage}"></span></td> | ||||
| 						</tr> | ||||
| 					</tbody> | ||||
| 				</table> | ||||
| @@ -110,13 +110,13 @@ | ||||
| 					<thead> | ||||
| 						<tr> | ||||
| 							<th>Name</th> | ||||
| 							<th>Benutzt</th> | ||||
| 							<th>Benutzt in %</th> | ||||
| 						</tr> | ||||
| 					</thead> | ||||
| 					<tbody> | ||||
| 						<tr th:each="job : ${jobList}"> | ||||
| 							<td><span th:text="${job.name}"></span></td> | ||||
| 							<td>TODO</td> | ||||
| 							<td><span th:text="${job.percentUsage}"></span></td> | ||||
| 						</tr> | ||||
| 					</tbody> | ||||
| 				</table> | ||||
| @@ -127,14 +127,14 @@ | ||||
| 						<tr> | ||||
| 							<th>Name</th> | ||||
| 							<th>Symbol</th> | ||||
| 							<th>Benutzt</th> | ||||
| 							<th>Benutzt in %</th> | ||||
| 						</tr> | ||||
| 					</thead> | ||||
| 					<tbody> | ||||
| 						<tr th:each="billing : ${billingList}"> | ||||
| 							<td><span th:text="${billing.name}"></span></td> | ||||
| 							<td><span th:text="${billing.shortcut}" th:class="'billing ' + ${billing.csskey}"></span></td> | ||||
| 							<td>TODO</td> | ||||
| 							<td><span th:text="${billing.percentUsage}"></span></td> | ||||
| 						</tr> | ||||
| 					</tbody> | ||||
| 				</table> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user