1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-19 13:54:25 +01:00

Enforced validation on required input fields

This commit is contained in:
Sylvain 2021-03-24 18:24:03 +01:00
parent 937ed72dc7
commit c50e69b351
16 changed files with 40 additions and 39 deletions

View File

@ -1,5 +1,6 @@
# Changelog Fab-manager
- Enforced validation on required input fields
- Fix a bug: the view is not refreshed when deleting a recurring slot
- Fix a bug: unable to add a new authorized file type for project's CAD files

View File

@ -4,7 +4,7 @@
name="coupon[name]"
class="form-control"
ng-model="coupon.name"
required="required"/>
required="true"/>
<span class="help-block error" ng-show="couponForm['coupon[name]'].$dirty && couponForm['coupon[name]'].$error.required" translate>{{ 'app.shared.coupon.name_is_required' }}</span>
</div>
@ -16,7 +16,7 @@
ng-model="coupon.code"
ng-pattern="/^[A-Z0-9\-]+$/"
ng-disabled="mode == 'EDIT'"
required="required"/>
required="true"/>
<span class="help-block error" ng-show="couponForm['coupon[code]'].$dirty && couponForm['coupon[code]'].$error.required" translate>{{ 'app.shared.coupon.code_is_required' }}</span>
<span class="help-block error" ng-show="couponForm['coupon[code]'].$dirty && couponForm['coupon[code]'].$error.pattern" translate>{{ 'app.shared.coupon.code_must_be_composed_of_capital_letters_digits_and_or_dashes' }}</span>
</div>
@ -28,7 +28,7 @@
class="form-control"
ng-model="coupon.type"
ng-disabled="mode == 'EDIT'"
required="required">
required="true">
<option value="percent_off" translate>{{ 'app.shared.coupon.percentage' }}</option>
<option value="amount_off" translate>{{ 'app.shared.coupon.amount' }}</option>
</select>
@ -73,7 +73,7 @@
name="coupon[validity_per_user]"
class="form-control"
ng-model="coupon.validity_per_user"
required="required"
required="true"
ng-disabled="mode == 'EDIT'"
ng-options="validityName(validity) for validity in validities">
</select>

View File

@ -8,7 +8,7 @@
class="form-control"
ng-maxlength="24"
ng-model="plan.base_name"
required="required"/>
required="true"/>
<span class="help-block error" ng-show="planForm['plan[base_name]'].$dirty && planForm['plan[base_name]'].$error.required" translate>{{ 'app.shared.plan.name_is_required' }}</span>
<span class="help-block error" ng-show="planForm['plan[base_name]'].$dirty && planForm['plan[base_name]'].$error.maxlength" translate>{{ 'app.shared.plan.name_length_must_be_less_than_24_characters' }}</span>
</div>
@ -18,7 +18,7 @@
name="plan[type]"
class="form-control"
ng-model="plan.type"
required="required"
required="true"
ng-disabled="method == 'PATCH'">
<option value="Plan" ng-selected="plan.type == 'Plan'" translate>{{ 'app.shared.plan.standard' }}</option>
<option value="PartnerPlan" ng-selected="plan.type == 'PartnerPlan'" translate>{{ 'app.shared.plan.partner' }}</option>
@ -31,7 +31,7 @@
name="plan[group_id]"
class="form-control"
ng-model="plan.group_id"
required="required"
required="true"
ng-if="method !== 'PATCH'"
ng-options="item.id as translateLabel(item, 'name') group by translateLabel(item, 'category') for item in groups track by item.id">
</select>
@ -55,7 +55,7 @@
class="form-control"
ng-model="plan.interval"
ng-disabled="method == 'PATCH'"
required="required">
required="true">
<option value="week" ng-selected="plan.interval == 'week'" translate>{{ 'app.shared.plan.week' }}</option>
<option value="month" ng-selected="plan.interval == 'month'" translate>{{ 'app.shared.plan.month' }}</option>
<option value="year" ng-selected="plan.interval == 'year'" translate>{{ 'app.shared.plan.year' }}</option>
@ -71,7 +71,7 @@
type="number"
ng-model="plan.interval_count"
ng-disabled="method == 'PATCH'"
required="required"
required="true"
min="1"/>
<span class="help-block" ng-show="planForm['plan[interval_count]'].$dirty && planForm['plan[interval_count]'].$error.required" translate>{{ 'app.shared.plan.number_of_periods_is_required' }}</span>
</div>

View File

@ -65,7 +65,7 @@
<td>
<div class="input-group" ng-class="{'has-error': planForm['plan[prices_attributes][][amount]'].$dirty && planForm['plan[prices_attributes][][amount]'].$invalid}">
<span class="input-group-addon">{{currencySymbol}}</span>
<input type="number" class="form-control" name="plan[prices_attributes][][amount]" ng-value="price.amount" required="required"/>
<input type="number" class="form-control" name="plan[prices_attributes][][amount]" ng-value="price.amount" required="true"/>
<input type="hidden" class="form-control" name="plan[prices_attributes][][id]" ng-value="price.id"/>
</div>
</td>
@ -86,7 +86,7 @@
<td>
<div class="input-group" ng-class="{'has-error': planForm['plan[prices_attributes][][amount]'].$dirty && planForm['plan[prices_attributes][][amount]'].$invalid}">
<span class="input-group-addon">{{currencySymbol}}</span>
<input type="number" class="form-control" name="plan[prices_attributes][][amount]" ng-value="price.amount" required="required"/>
<input type="number" class="form-control" name="plan[prices_attributes][][amount]" ng-value="price.amount" required="true"/>
<input type="hidden" class="form-control" name="plan[prices_attributes][][id]" ng-value="price.id"/>
</div>
</td>

View File

@ -5,7 +5,7 @@
<div class="input-group-addon">
<i class="fa {{faIcon}}"></i>
</div>
<input type="number" class="form-control" id="setting-{{setting.name}}" ng-model="setting.value" min="{{min}}" ng-required="required">
<input type="number" class="form-control" id="setting-{{setting.name}}" ng-model="setting.value" min="{{min}}" ng-required="true">
</div>
<span class="help-block text-info text-xs" ng-show="helperText">
<i class="fa fa-lightbulb-o"></i> {{ helperText | translate }}

View File

@ -30,7 +30,7 @@
classes="col-md-4"
fa-icon="fa-calendar"
min="1"
required="required">
required="true">
</number-setting>
<number-setting name="visibility_others"
settings="allSettings"
@ -38,7 +38,7 @@
classes="col-md-4 col-md-offset-2"
fa-icon="fa-calendar"
min="1"
required="required">
required="true">
</number-setting>
</div>
<div class="section-separator"></div>
@ -101,7 +101,7 @@
classes="col-md-4"
fa-icon="fa-clock-o"
min="1"
required="required">
required="true">
</number-setting>
</div>
</div>

View File

@ -4,7 +4,7 @@
<select class="form-control"
id="setting-{{setting.name}}"
ng-model="selection"
ng-required="required"
ng-required="true"
ng-options="opt for opt in options"
multiple>
</select>

View File

@ -4,7 +4,7 @@
<select class="form-control"
id="setting-{{setting.name}}"
ng-model="setting.value"
ng-required="required">
ng-required="true">
<option ng-if="option1" ng-value="option1[0]" translate>{{ option1[1] }}</option>
<option ng-if="option2" ng-value="option2[0]" translate>{{ option2[1] }}</option>
<option ng-if="option2" ng-value="option3[0]" translate>{{ option3[1] }}</option>

View File

@ -10,7 +10,7 @@
id="setting-{{setting.name}}"
placeholder="{{placeholder}}"
ng-model="setting.value"
ng-required="required"
ng-required="true"
ng-minlength="minLength"
ng-maxlength="maxLength"
ng-readonly="readOnly">

View File

@ -25,7 +25,7 @@
placeholder="{{ 'app.admin.statistics.start' | translate }}"
ng-click="toggleStartDatePicker($event)"
ng-change="setRequest()"
required="required"/>
required="true"/>
<span class="input-group-btn">
<button type="button" class="btn btn-default btn-search-datepicker" ng-click="toggleStartDatePicker($event)">
<i class="glyphicon glyphicon-calendar"></i>
@ -49,7 +49,7 @@
placeholder="{{ 'app.admin.statistics.end' | translate }}"
ng-click="toggleEndDatePicker($event)"
ng-change="setRequest()"
required="required"/>
required="true"/>
<span class="input-group-btn">
<button type="button" class="btn btn-default btn-search-datepicker" ng-click="toggleEndDatePicker($event)">
<i class="glyphicon glyphicon-calendar"></i>

View File

@ -60,7 +60,7 @@
show-button-bar="false"
placeholder="{{ 'app.admin.stats_graphs.start' | translate }}"
ng-click="toggleStartDatePicker($event)"
required="required"/>
required="true"/>
<span class="input-group-btn">
<button type="button" class="btn btn-default btn-search-datepicker" ng-click="toggleStartDatePicker($event)">
<i class="glyphicon glyphicon-calendar"></i>
@ -83,7 +83,7 @@
show-button-bar="false"
placeholder="{{ 'app.admin.stats_graphs.end' | translate }}"
ng-click="toggleEndDatePicker($event)"
required="required"/>
required="true"/>
<span class="input-group-btn">
<button type="button" class="btn btn-default btn-search-datepicker" ng-click="toggleEndDatePicker($event)">
<i class="glyphicon glyphicon-calendar"></i>

View File

@ -57,13 +57,13 @@
<li><span translate>{{ 'app.admin.statistics.start' }}</span>
<div class="input-group black">
<span class="input-group-addon"><i class="fa fa-birthday-cake"></i></span>
<input type="number" class="form-control" ng-model="agePicker.start" name="ageStart" required="required"/>
<input type="number" class="form-control" ng-model="agePicker.start" name="ageStart" required="true"/>
</div>
</li>
<li><span translate>{{ 'app.admin.statistics.end' }}</span>
<div class="input-group black">
<span class="input-group-addon"><i class="fa fa-birthday-cake"></i></span>
<input type="number" class="form-control" ng-model="agePicker.end" name="ageEnd" required="required"/>
<input type="number" class="form-control" ng-model="agePicker.end" name="ageEnd" required="true"/>
</div>
</li>
</ul>
@ -98,7 +98,7 @@
ng-options="f.label for f in filters track by f.key"
ng-change="customFilter.value = null"
name="customFilterCriterion"
required="required"
required="true"
class="form-control">
<option value=""></option>
</select>
@ -109,7 +109,7 @@
<span class="input-group-addon"><i class="fa fa-asterisk"></i></span>
<ng-switch on="getCustomValueInputType(customFilter.criterion)">
<input ng-switch-when="input_number" type="number" class="form-control customMenuInput" ng-model="customFilter.value" name="customFilterValue" required="required"/>
<input ng-switch-when="input_number" type="number" class="form-control customMenuInput" ng-model="customFilter.value" name="customFilterValue" required="true"/>
<div ng-switch-when="input_date" class="input-group black" id="customDatePick">
<input type="text"
@ -120,7 +120,7 @@
is-open="customFilter.datePicker.opened"
min-date="customFilter.datePicker.minDate"
max-date="customFilter.datePicker.maxDate"
required="required"
required="true"
datepicker-options="customFilter.datePicker.options"
show-button-bar="false"
ng-click="toggleCustomDatePicker($event)"/>
@ -136,7 +136,7 @@
ng-model="customFilter.value"
ng-options="v.label for v in customFilter.criterion.values"
name="customFilterValue"
required="required">
required="true">
</select>
<input ng-switch-default
@ -144,7 +144,7 @@
class="form-control customMenuInput"
ng-model="customFilter.value"
name="customFilterValue"
required="required"/>
required="true"/>
</ng-switch>
</div>
</li>
@ -194,7 +194,7 @@
show-button-bar="false"
placeholder="{{ 'app.admin.statistics.start' | translate }}"
ng-click="toggleStartDatePicker($event)"
required="required"/>
required="true"/>
<span class="input-group-btn">
<button type="button" class="btn btn-default btn-search-datepicker" ng-click="toggleStartDatePicker($event)">
<i class="glyphicon glyphicon-calendar"></i>
@ -217,7 +217,7 @@
show-button-bar="false"
placeholder="{{ 'app.admin.statistics.end' | translate }}"
ng-click="toggleEndDatePicker($event)"
required="required"/>
required="true"/>
<span class="input-group-btn">
<button type="button" class="btn btn-default btn-search-datepicker" ng-click="toggleEndDatePicker($event)">
<i class="glyphicon glyphicon-calendar"></i>

View File

@ -17,7 +17,7 @@
name="email"
class="form-control"
ng-model="user.email"
required="required"
required="true"
ng-blur="emailError = !!confirmationNewForm.email.$error.email"
ng-focus="emailError = false"
placeholder="{{ 'app.public.common.your_email_address' | translate }}" />
@ -32,4 +32,4 @@
</div>
</div>
</div>
</div>
</div>

View File

@ -7,7 +7,7 @@
<label for="partner[first_name]" translate>{{ 'app.shared.plan.first_name' }}</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="text" class="form-control" required="required" ng-model="partner.first_name" id="partner[first_name]" name="partner[first_name]" />
<input type="text" class="form-control" required="true" ng-model="partner.first_name" id="partner[first_name]" name="partner[first_name]" />
</div>
<span class="help-block" ng-show="partnerForm['partner[first_name]'].$dirty && partnerForm['partner[first_name]'].$error.required" translate>{{ 'app.shared.plan.first_name_is_required' }}</span>
</div>
@ -15,7 +15,7 @@
<label for="partner[last_name]" translate>{{ 'app.shared.plan.surname' }}</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="text" class="form-control" required="required" ng-model="partner.last_name" id="partner[last_name]" name="partner[last_name]" />
<input type="text" class="form-control" required="true" ng-model="partner.last_name" id="partner[last_name]" name="partner[last_name]" />
</div>
<span class="help-block" ng-show="partnerForm['partner[last_name]'].$dirty && partnerForm['partner[last_name]'].$error.required" translate>{{ 'app.shared.plan.surname_is_required' }}</span>
</div>
@ -23,7 +23,7 @@
<label for="partner[email]" translate>{{ 'app.shared.plan.email_address' }}</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-envelope"></i></span>
<input type="email" class="form-control" required="required" ng-model="partner.email" id="partner[email]" name="partner[email]" />
<input type="email" class="form-control" required="true" ng-model="partner.email" id="partner[email]" name="partner[email]" />
</div>
<span class="help-block" ng-show="partnerForm['partner[email]'].$dirty && partnerForm['partner[email]'].$error.required" translate>{{ 'app.shared.plan.email_address_is_required' }}</span>
</div>

View File

@ -22,7 +22,7 @@
name="email"
class="form-control"
ng-model="user.email"
required="required"
required="true"
ng-blur="emailError = !!loginForm.email.$error.email"
ng-focus="emailError = false"
translate-attr="{ placeholder: 'app.public.common.your_email_address' }" />
@ -38,7 +38,7 @@
name="password"
class="form-control"
ng-model="user.password"
required="required"
required="true"
translate-attr="{ placeholder: 'app.public.common.your_password' }"
ng-minlength="8"/>
</div>

View File

@ -16,7 +16,7 @@
name="email"
class="form-control"
ng-model="user.email"
required="required"
required="true"
ng-blur="emailError = !!passwordNewForm.email.$error.email"
ng-focus="emailError = false"
placeholder="{{ 'app.public.common.your_email_address' | translate }}" />