webstaff: add more validation to prediction wizard
authorGalen Charlton <gmc@equinoxinitiative.org>
Fri, 7 Jul 2017 21:33:29 +0000 (17:33 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Fri, 7 Jul 2017 21:33:29 +0000 (17:33 -0400)
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/templates/staff/serials/t_prediction_wizard.tt2

index 78c2ac7..1ee6b68 100644 (file)
@@ -6,6 +6,7 @@
             [% l('Back') %]
         </button>
         <button class="btn btn-success" ng-click="tab.active = tab.active + 1"
+                ng-disabled="(tab.active == 0 && tab.enum_form.$invalid) || (tab.active == 1 && tab.chron_form.$invalid) || (tab.active == 3 && tab.freq_form.$invalid)"
                 ng-if="tab.active != 4">
             [% l('Next') %]
         </button>
@@ -17,6 +18,7 @@
   </div>
   <uib-tabset active="tab.active">
     <uib-tab index="0" disable="tab.active != 0" heading="[% l('Enumeration Labels') %]">
+      <form name="tab.enum_form">
       <div class="row">
          <div class="radio">
            <label>
@@ -36,7 +38,7 @@
             <div class="row" ng-repeat="enum_level in pattern.enum_levels">
                 <div class="col-md-1"></div>
                 <div class="col-md-1">[% l('Level [_1]', '{{$index + 1}}')  %]</div>
-                <div class="col-md-2"><input type="text" ng-model="enum_level.caption"></div>
+                <div class="col-md-2"><input type="text" ng-model="enum_level.caption" required></div>
                 <div ng-if="$index > 0">
                   <div class="col-md-3">
                     <select ng-model="enum_level.units_per_next_higher.type">
@@ -91,7 +93,7 @@
             <div class="row" ng-repeat="alt_enum_level in pattern.alt_enum_levels">
                 <div class="col-md-1"></div>
                 <div class="col-md-1">[% l('Level [_1]', '{{$index + 1}}')  %]</div>
-                <div class="col-md-2"><input type="text" ng-model="alt_enum_level.caption"></div>
+                <div class="col-md-2"><input type="text" required ng-model="alt_enum_level.caption"></div>
                 <div ng-if="$index > 0">
                   <div class="col-md-3">
                     <select ng-model="alt_enum_level.units_per_next_higher.type">
          </div>
          </div>
       </div>
+      </form>
     </uib-tab>
     <uib-tab index="1" disable="tab.active != 1" heading="[% l('Chronology Display') %]">
+      <form name="tab.chron_form">
       <div>
         <div class="checkbox">
           <label>
             <div class="col-md-1"></div>
             <div class="col-md-1">[% l('Level [_1]', '{{$index + 1}}')  %]</div>
             <div class="col-md-2">
-              <eg-chron-selector ng-model="chron.caption" chron-level="$index" linked-selector="chron_captions">
+              <eg-chron-selector ng-model="chron.caption" required chron-level="$index" linked-selector="chron_captions">
             </div>
             <div class="col-md-2">
               <input type="checkbox" ng-model="chron.display_caption"></input>
                 <div class="col-md-1"></div>
                 <div class="col-md-1">[% l('Level [_1]', '{{$index + 1}}')  %]</div>
                 <div class="col-md-2">
-                  <eg-chron-selector ng-model="chron.caption" chron-level="$index" linked-selector="alt_chron_captions">
+                  <eg-chron-selector ng-model="chron.caption" required chron-level="$index" linked-selector="alt_chron_captions">
                 </div>
                 <div class="col-md-2">
                   <input type="checkbox" ng-model="chron.display_caption"></input>
           </div>
         </div>
       </div>
+      </form>
     </uib-tab>
     <uib-tab index="2" disable="tab.active != 2" heading="[% l('MFHD Indicators') %]">
       <div class="row">
       </div>
     </uib-tab>
     <uib-tab index="3" disable="tab.active != 3" heading="[% l('Frequency and Regularity') %]">
+      <form name="tab.freq_form">
       <div class="row">
         <div class="col-md-2">
           <div class="radio">
         </div>
         <div class="col-md-2">
           <div ng-if="pattern.frequency_type == 'preset'">
-            <select ng-model="pattern.frequency_preset">
+            <select ng-model="pattern.frequency_preset" required>
               <option value="d">[% l('Daily') %]</option>
               <option value="w">[% l('Weekly (Weekly)') %]</option>
               <option value="c">[% l('2 x per week (Semiweekly)') %]</option>
             </select>
           </div>
           <div ng-if="pattern.frequency_type == 'numeric'">
-            <input ng-model="pattern.frequency_numeric" type="number" step="1">
+            <input ng-model="pattern.frequency_numeric" type="number" step="1" required>
           </div>
         </div>
       </div>
             </div>
          </div>
       </div>
+      </form>
     </uib-tab>
     <uib-tab index="4" disable="tab.active != 4" heading="[% l('Review') %]">
       <div class="row">