Konfis werden im Gemeindenmodus nach Durchschnittscoins sortiert

This commit is contained in:
konrad 2017-09-06 00:49:53 +02:00
parent 033073970d
commit 3fa0c824a9
8 changed files with 68 additions and 15 deletions

9
add.go
View File

@ -3,6 +3,7 @@ package main
import (
"github.com/labstack/echo"
"net/http"
"strconv"
)
func addKonfi(c echo.Context) error {
@ -38,10 +39,16 @@ func addKonfi(c echo.Context) error {
} else if SiteConf.Mode == 1 { // Mode nach Gemeinden
var err error
gemeinde := new(Gemeinde)
gemeinde.Name = c.FormValue("name")
gemeinde.KonfiCount, err = strconv.Atoi(c.FormValue("konfis"))
_, err := db.Insert(gemeinde)
if err != nil {
return c.JSON(http.StatusInternalServerError, Message{"error. (konfiCount not int)"})
}
_, err = db.Insert(gemeinde)
if err == nil {
return c.JSON(http.StatusOK, Message{"success"})
}

View File

@ -1,12 +1,21 @@
function getList() {
$.getJSON('/list?asc=asc', function (data) {
//console.log(data);
console.log(data);
$("#list").html('');
$.each(data, function (i, item) {
if(item.Gemeinde !== undefined) {
$("#list").append('<tr id="kcoins_row_' + item.ID + '"> <td>' + item.Name + '</td> <td>' + item.Gemeinde + '</td> <td id="kcoins_display_' + item.ID + '">' + item.KCoins + '</td><td><span class="ui action input" id="kcoins_container_' + item.ID + '"><input type="number" value="0" id="kcoins_' + item.ID + '" name="kcoins" autocomplete="off" /><button class="ui right labeled icon button green" onclick="updateCoins(\'' + item.ID + '\');"><i class="right dollar icon"></i>KonfiCoins Hinzufügen</button></span>&nbsp;&nbsp;&nbsp;&nbsp;<button class="ui button red" onclick="deleteKonfi(\'' + item.ID + '\');" id="kcoins_container_' + item.ID + '">Konfi Löschen</button></td></tr>');
$("#list").append('<tr id="kcoins_row_' + item.ID + '">' +
'<td>' + item.Name + '</td> ' +
'<td>' + item.Gemeinde + '</td> ' +
'<td id="kcoins_display_' + item.ID + '">' + item.KCoins + '</td>' +
'<td><span class="ui action input" id="kcoins_container_' + item.ID + '"><input type="number" value="0" id="kcoins_' + item.ID + '" name="kcoins" autocomplete="off" /><button class="ui right labeled icon button green" onclick="updateCoins(\'' + item.ID + '\');"><i class="right dollar icon"></i>KonfiCoins Hinzufügen</button></span>&nbsp;&nbsp;&nbsp;&nbsp;<button class="ui button red" onclick="deleteKonfi(\'' + item.ID + '\');" id="kcoins_container_' + item.ID + '">Konfi Löschen</button></td></tr>');
} else {
$("#list").append('<tr id="kcoins_row_' + item.ID + '"> <td>' + item.Name + '</td> <td id="kcoins_display_' + item.ID + '">' + item.KCoins + '</td><td><span class="ui action input" id="kcoins_container_' + item.ID + '"><input type="number" value="0" id="kcoins_' + item.ID + '" name="kcoins" autocomplete="off" /><button class="ui right labeled icon button green" onclick="updateCoins(\'' + item.ID + '\');"><i class="right dollar icon"></i>KonfiCoins Hinzufügen</button></span>&nbsp;&nbsp;&nbsp;&nbsp;<button class="ui button red" onclick="deleteGemeinde(\'' + item.ID + '\');" id="kcoins_container_' + item.ID + '">Gemeinde Löschen</button></td></tr>');
$("#list").append('<tr id="kcoins_row_' + item.ID + '"> ' +
'<td>' + item.Name + '</td> ' +
'<td id="kcoins_display_' + item.ID + '">' + item.KCoins + '</td>' +
'<td>' + item.KonfiCount + '</td> ' +
'<td id="kcoins_quota_' + item.ID + '">' + (item.CoinsQuota).toFixed(2) + '</td> ' +
'<td><span class="ui action input" id="kcoins_container_' + item.ID + '"><input type="number" value="0" id="kcoins_' + item.ID + '" name="kcoins" autocomplete="off" /><button class="ui right labeled icon button green" onclick="updateCoins(\'' + item.ID + '\');"><i class="right dollar icon"></i>KonfiCoins Hinzufügen</button></span>&nbsp;&nbsp;&nbsp;&nbsp;<button class="ui button red" onclick="deleteGemeinde(\'' + item.ID + '\');" id="kcoins_container_' + item.ID + '">Gemeinde Löschen</button></td></tr>');
}
});
});
@ -32,6 +41,9 @@ function updateCoins(id) {
if (msg.Message == 'success') {
$('#kcoins_' + id).val("0");
$('#kcoins_display_' + id).html(msg.Data.KCoins);
if(msg.Data.CoinsQuota !== undefined) {
$('#kcoins_quota_' + id).html(msg.Data.CoinsQuota.toFixed(2));
}
} else {
$('#msg').html('<div class="ui error message" style="display: block;">Ein Fehler trat auf.</div>');
@ -150,7 +162,7 @@ $('.ui.gemeindeadd.modal')
$.ajax({
url: '/add',
method: 'POST',
data: 'name=' + $('#name').val(),
data: 'name=' + $('#name').val() + '&konfis=' + $('#konfis').val(),
success: function (msg) {
$('.loader').removeClass('active');
console.log(msg);

View File

@ -4,9 +4,17 @@ setInterval(function() {
$( "#konfis" ).html('');
$.each( data, function( i, item ) {
if (item.Gemeinde != undefined) {
$( "#konfis" ).append('<tr> <td>' + item.Name + '</td> <td>' + item.Gemeinde + '</td> <td>' + item.KCoins + '</td></tr>');
$( "#konfis" ).append('<tr> ' +
'<td>' + item.Name + '</td> ' +
'<td>' + item.Gemeinde + '</td> ' +
'<td>' + item.KCoins + '</td>' +
'</tr>');
} else {
$( "#konfis" ).append('<tr> <td>' + item.Name + '</td> <td>' + item.KCoins + '</td></tr>');
$( "#konfis" ).append('<tr> ' +
'<td>' + item.Name + '</td> ' +
'<td>' + item.KCoins + '</td>' +
'<td>' + (item.CoinsQuota).toFixed(2) + '</td> ' +
'</tr>');
}
});
});

View File

@ -36,17 +36,22 @@ func getList(c echo.Context) error {
var gemeinden []Gemeinde
asc := c.QueryParam("asc")
if asc == "" {
err := db.OrderBy("KCoins DESC").Find(&gemeinden)
err := db.Select("Gemeinde.*, (cast(KCoins AS FLOAT) / cast(KonfiCount AS FLOAT)) as CoinsQuota").OrderBy("CoinsQuota DESC").Find(&gemeinden)
if err != nil {
fmt.Println(err)
}
} else {
err := db.OrderBy("Name ASC").Find(&gemeinden)
err := db.Select("*, (cast(KCoins AS FLOAT) / cast(KonfiCount AS FLOAT)) AS CoinsQuota").OrderBy("Name ASC").Find(&gemeinden)
if err != nil {
fmt.Println(err)
}
}
// Alles durchgehen und den Schnitt ausrechnen
for i, gem := range gemeinden{
gemeinden[i].CoinsQuota = float64(gem.KCoins) / float64(gem.KonfiCount)
}
//Template
return c.JSON(http.StatusOK, gemeinden)
}

View File

@ -34,12 +34,14 @@
<tr>
<th>Name</th>
<th>KonfiCoins</th>
<th>Konfis</th>
<th>KonfiCoins p.P.</th>
<th>Bearbeiten</th>
</tr>
</thead>
<tbody id="list">
<tr>
<td colspan="3">Laden...</td>
<td colspan="5">Laden...</td>
</tr>
</tbody>
</table>
@ -75,10 +77,13 @@
<div class="header">
Gemeinde hinzufügen
</div>
<div class="image content">
<div class="content">
<div class="ui input">
<input type="text" id="name" placeholder="Name"/>
</div>
<div class="ui input">
<input type="number" id="konfis" placeholder="Anzahl der Konfis"/>
</div>
</div>
<div class="actions">
<div class="ui black deny button">
@ -91,7 +96,7 @@
</div>
</div>
<script src="/assets/js/admin.js"></script>
<script src="/assets/js/admin.js?1504651531"></script>
{{end}}
</body>

View File

@ -21,12 +21,15 @@
{{if eq .Mode 0}}
<th scope="col">Gemeinde</th>
{{end}}
<th scope="col">Eingezahlte KonfiCoins</th>
<th scope="col">Eingezahlte KonfiCoins Gesamt</th>
{{if eq .Mode 1}}
<th scope="col">KonfiCoins p.P.</th>
{{end}}
</tr>
</thead>
<tbody id="konfis">
<tr>
<td colspan="3">Laden...</td>
<td colspan="4">Laden...</td>
</tr>
</tbody>
</table>
@ -34,7 +37,7 @@
<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>
<script src="/assets/js/jquery-3.1.1.min.js"></script>
<script>if (window.module) module = window.module;</script>
<script src="/assets/js/load.js"></script>
<script src="/assets/js/load.js?1504651531"></script>
</body>
</html>
{{end}}

View File

@ -54,7 +54,17 @@ func update(c echo.Context) error {
gemeinde.KCoins = newCoins
_, err := db.ID(id).Update(gemeinde)
if err != nil {
return c.JSON(http.StatusInternalServerError, Message{"Error."})
}
_, err = db.ID(id).Get(&gemeinde)
if err == nil {
// Coins pP aausrechnen
gemeinde.CoinsQuota = float64(gemeinde.KCoins) / float64(gemeinde.KonfiCount)
return c.JSON(http.StatusOK, UpdatedMessageGemeinde{"success", gemeinde})
}

View File

@ -15,6 +15,9 @@ type Gemeinde struct {
ID int `xorm:"pk autoincr"`
Name string
KCoins int
KonfiCount int
CoinsQuota float64 `xorm:"-"`
}
type Message struct {