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:
parent
937ed72dc7
commit
c50e69b351
@ -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
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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 }}
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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">
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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 }}" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user