ich soll eine Ansicht entwickeln, auf welcher man die Daten von zwei Entities "mergen" kann. Die Oberfläche sieht momentan ungefähr so aus, wie im Anhang (Wenn jemand ne bessere Idee hat, nehme ich gern!).
Ich habe so ungefähr 25 verschiedene Felder und bin nicht so scharf drauf, das alles per Hand zu schreiben und zu pflegen. Grade Änderungen am Styling (z.B. neue HTML-Klassen) sind so relativ mühsam.
Der simpelste Ansatz ist dieser:
<trng-repeat="(prop, value) in update"><td><label>{{prop}}</label></td><td><inputtype="text"ng-model="update[prop]"/><label>{{backup[prop]}}</label></td><td><input type="button" value="<" ng-click="copyToLeft(prop)" /</td><td><label>{{toDelete.prop}}</label></td></tr>
"Update" ist die Entity, die momentan bearbeitet wird und in welche die Daten "hineingemerged" werden. Backup ist eine Kopie davon, die links neben den Buttons eingeblendet wird, damit der Benutzer abgleichen kann, wie es vorher war. Rechts neben den Buttons is "toDelete", da dieser Datensatz nach dem Mergen gelöscht wird. Problem: Bei booleans wird "true" angezeigt, bei Arrays "[]", was zwar korrekt, aber so für einen Laien nicht benutzbar ist. Es gibt insgesamt 3 Arten von Datentypen in den Feldern: Strings, Booleans und Arrays von Objekte. Wobei die Objekte alle nur die beiden Felder id und title haben.
Soviel zu den Anforderungen. Ich habe einen Code, der macht, was er soll. Aber naja... es ist verdammt hässlich und hat einige Wiederholungen und potentielle Fehlerquellen: Hat jemand nen Tipp für mich, wie ich das Template schöner generieren kann? Ich habe hier auch schon mit ng-switch experimentiert, aber das funktioniert leider nicht bei Ausdrücken wie isBoolean(), sondern nur bei hart codierten Bedingungen.
<body ng-controller="mergeController">
<table>
<tr ng-repeat = "(prop, value) in update">
<td><label>{{prop}}</label></td>
<td>
<div ng-if="isBoolean(value)">
<input type="checkbox" ng-model = "update[prop]">
</div>
<div ng-if="isArray(value)" ng-repeat="item in value track by $index">
<input ng-model="update[prop][$index].title"/>
</div>
<div ng-if="!isBoolean(value) && !isArray(value)">
<input type="text" ng-model="update[prop]"/>
</div>
</td>
<td>
<div ng-if="isBoolean(value)">
<input type="checkbox" ng-model = "backup[prop]" ng-disabled="true">
</div>
<div ng-if="isArray(value)" ng-repeat="item in value track by $index">
<label>{{backup[prop][$index].title}}</label>
</div>
<div ng-if="!isBoolean(value) && !isArray(value)">
<label>{{backup[prop]}}</label>
</div>
</td>
<td>
<div ng-if="isArray(value)" ng-repeat = "(key, item) in value track by $index">
<input type="button" value="<" ng-click="copyToLeftInArray(prop, $index)" />
</div>
<div ng-if="!isArray(value)">
<input type="button" value="<" ng-click="copyToLeft(prop)" />
</div>
</td>
<td>
<div ng-if="isBoolean(value)">
<input type="checkbox" ng-model="toDelete[prop]" ng-disabled = "true"/>
</div>
<div ng-if="isArray(value)" ng-repeat = "item in value track by $index">
<label>{{toDelete[prop][$index].title}}</label>
</div>
<label ng-if="!isArray(value) && !isBoolean(value)">{{toDelete[prop]}}</label>
</td>
</tr>
</table>
<input id="submit" type="button" value="Merge" ng-click="merge()">
</body>
Frage
Saheeda
Hallo,
ich soll eine Ansicht entwickeln, auf welcher man die Daten von zwei Entities "mergen" kann. Die Oberfläche sieht momentan ungefähr so aus, wie im Anhang (Wenn jemand ne bessere Idee hat, nehme ich gern!).
Ich habe so ungefähr 25 verschiedene Felder und bin nicht so scharf drauf, das alles per Hand zu schreiben und zu pflegen. Grade Änderungen am Styling (z.B. neue HTML-Klassen) sind so relativ mühsam.
Der simpelste Ansatz ist dieser:
"Update" ist die Entity, die momentan bearbeitet wird und in welche die Daten "hineingemerged" werden. Backup ist eine Kopie davon, die links neben den Buttons eingeblendet wird, damit der Benutzer abgleichen kann, wie es vorher war. Rechts neben den Buttons is "toDelete", da dieser Datensatz nach dem Mergen gelöscht wird. Problem: Bei booleans wird "true" angezeigt, bei Arrays "[]", was zwar korrekt, aber so für einen Laien nicht benutzbar ist. Es gibt insgesamt 3 Arten von Datentypen in den Feldern: Strings, Booleans und Arrays von Objekte. Wobei die Objekte alle nur die beiden Felder id und title haben.
Soviel zu den Anforderungen. Ich habe einen Code, der macht, was er soll. Aber naja... es ist verdammt hässlich und hat einige Wiederholungen und potentielle Fehlerquellen: Hat jemand nen Tipp für mich, wie ich das Template schöner generieren kann? Ich habe hier auch schon mit ng-switch experimentiert, aber das funktioniert leider nicht bei Ausdrücken wie isBoolean(), sondern nur bei hart codierten Bedingungen.
Controller:
1 Antwort auf diese Frage
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.