admin: Show what properties will be overwritted
This commit is contained in:
parent
eb85b28f5b
commit
3fcf705dcf
@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
@ -528,62 +529,36 @@ func updateExercice(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, ue)
|
||||
}
|
||||
|
||||
type patchExercice struct {
|
||||
Language *string `json:"lang,omitempty"`
|
||||
Title *string `json:"title"`
|
||||
Disabled *bool `json:"disabled"`
|
||||
WIP *bool `json:"wip"`
|
||||
URLId *string `json:"urlid"`
|
||||
Statement *string `json:"statement"`
|
||||
Overview *string `json:"overview"`
|
||||
Headline *string `json:"headline"`
|
||||
Finished *string `json:"finished"`
|
||||
Issue *string `json:"issue"`
|
||||
IssueKind *string `json:"issuekind"`
|
||||
Gain *int64 `json:"gain"`
|
||||
Coefficient *float64 `json:"coefficient"`
|
||||
}
|
||||
|
||||
func partUpdateExercice(c *gin.Context) {
|
||||
exercice := c.MustGet("exercice").(*fic.Exercice)
|
||||
|
||||
var ue fic.Exercice
|
||||
var ue patchExercice
|
||||
err := c.ShouldBindJSON(&ue)
|
||||
if err != nil {
|
||||
c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"errmsg": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
if len(ue.Title) > 0 {
|
||||
exercice.Title = ue.Title
|
||||
}
|
||||
|
||||
if len(ue.URLId) > 0 {
|
||||
exercice.URLId = ue.URLId
|
||||
}
|
||||
|
||||
if len(ue.Statement) > 0 {
|
||||
exercice.Statement = ue.Statement
|
||||
}
|
||||
|
||||
if len(ue.Headline) > 0 {
|
||||
exercice.Headline = ue.Headline
|
||||
}
|
||||
|
||||
if len(ue.Finished) > 0 {
|
||||
exercice.Finished = ue.Finished
|
||||
}
|
||||
|
||||
if len(ue.Overview) > 0 {
|
||||
exercice.Overview = ue.Overview
|
||||
}
|
||||
|
||||
if len(ue.Issue) > 0 {
|
||||
exercice.Issue = ue.Issue
|
||||
}
|
||||
|
||||
if len(ue.IssueKind) > 0 {
|
||||
exercice.IssueKind = ue.IssueKind
|
||||
}
|
||||
|
||||
if ue.Depend != nil {
|
||||
exercice.Depend = ue.Depend
|
||||
}
|
||||
|
||||
if ue.Gain != 0 {
|
||||
exercice.Gain = ue.Gain
|
||||
}
|
||||
|
||||
if ue.Coefficient != 0 {
|
||||
exercice.Coefficient = ue.Coefficient
|
||||
}
|
||||
|
||||
if len(ue.VideoURI) > 0 {
|
||||
exercice.VideoURI = ue.VideoURI
|
||||
for _, field := range reflect.VisibleFields(reflect.TypeOf(ue)) {
|
||||
if !reflect.ValueOf(ue).FieldByName(field.Name).IsNil() {
|
||||
reflect.ValueOf(exercice).Elem().FieldByName(field.Name).Set(reflect.ValueOf(reflect.ValueOf(ue).FieldByName(field.Name).Elem().Interface()))
|
||||
}
|
||||
}
|
||||
|
||||
if _, err := exercice.Update(); err != nil {
|
||||
|
@ -74,9 +74,12 @@
|
||||
<form ng-submit="updateExercices()">
|
||||
<fieldset>
|
||||
<legend class="text-dark">Édition de masse <button type="submit" class="float-right btn btn-sm btn-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span></button></legend>
|
||||
<div class="form-group row" ng-class="{'row': field != 'disabled'}" ng-repeat="field in ['disabled','gain','coefficient','issue','issuekind']">
|
||||
<p>
|
||||
Les propriétés en gras seront écrasées.
|
||||
</p>
|
||||
<div ng-class="{'row': field != 'disabled', 'form-group': field != 'disabled', 'form-check': field == 'disabled'}" ng-repeat="field in ['disabled','gain','coefficient','issue','issuekind']">
|
||||
<input type="checkbox" class="form-check-input" id="{{ field }}" ng-model="exercice[field]" ng-if="field == 'disabled'">
|
||||
<label for="{{ field }}" class="col-form-label-sm" ng-class="{'col-sm-1': field != 'disabled'}">{{ field | capitalize }}</label>
|
||||
<label for="{{ field }}" class="col-form-label-sm" ng-class="{'col-sm-1': field != 'disabled', 'font-weight-bold': exercice[field] !== undefined}">{{ field | capitalize }}</label>
|
||||
<div class="col-sm-11" ng-if="field != 'disabled'">
|
||||
<input type="text" class="form-control form-control-sm" id="{{ field }}" ng-model="exercice[field]" ng-if="field != 'statement' && field != 'issue' && field != 'issuekind' && field != 'overview' && field != 'depend' && field != 'gain' && field != 'coefficient'">
|
||||
<input type="text" class="form-control form-control-sm" id="{{ field }}" ng-model="exercice[field]" ng-if="field == 'gain'" integer>
|
||||
|
Loading…
Reference in New Issue
Block a user