</select>
</div>
<div class="row" ng-if="new_prediction">
- <ng-form name="new_prediction.predform" class="form-inline">
+ <ng-form name="forms.newpredform" class="form-inline">
<div class="col-md-1"></div>
<div class="col-md-1">
<label class="checkbox-inline">
<option value="index">[% l('Index') %]</option>
</select>
<button class="btn btn-default" ng-if="new_prediction.pattern_code === null"
- ng-click="openPatternEditorDialog(new_prediction)">[% l('Create Pattern') %]</button>
+ ng-click="openPatternEditorDialog(new_prediction, forms.newpredform)">[% l('Create Pattern') %]</button>
<button class="btn btn-default" ng-if="new_prediction.pattern_code !== null"
- ng-click="openPatternEditorDialog(new_prediction)">[% l('Edit Pattern') %]</button>
+ ng-click="openPatternEditorDialog(new_prediction, forms.newpredform)">[% l('Edit Pattern') %]</button>
</div>
<div>
<button type="submit" class="btn btn-default" ng-click="cancelNewScap()">[% l('Cancel') %]</button>
- <button type="submit" class="btn btn-primary" ng-disabled="!new_prediction.predform.$dirty" ng-click="createScap(new_prediction)">[% l('Create') %]</button>
+ <button type="submit" class="btn btn-primary" ng-disabled="(new_prediction.pattern_code === null) || !forms.newpredform.$dirty" ng-click="createScap(new_prediction)">[% l('Create') %]</button>
</div>
</form>
</div>
<h3>[% l('Existing Prediction Patterns') %]</h3>
<div class="row" ng-repeat="pred in predictions | orderBy: 'id' as filtered track by pred.id">
- <ng-form name="pred.predform" class="form-inline">
+ <ng-form name="forms['predform' + pred.id]" class="form-inline">
<div class="col-md-1"><label>[% l('ID') %] {{pred.id}}</label></div>
<div class="col-md-1">
<label class="checkbox-inline">
<option value="supplement">[% l('Supplement') %]</option>
<option value="index">[% l('Index') %]</option>
</select>
- <button class="btn btn-default" ng-click="openPatternEditorDialog(pred, false)" ng-if=" pred._can_edit_or_delete">[% l('Edit Pattern') %]</button>
- <button class="btn btn-default" ng-click="openPatternEditorDialog(pred, true)" ng-if="!pred._can_edit_or_delete">[% l('View Pattern') %]</button>
+ <button class="btn btn-default" ng-click="openPatternEditorDialog(pred, forms['predform' + pred.id], false)" ng-if=" pred._can_edit_or_delete">[% l('Edit Pattern') %]</button>
+ <button class="btn btn-default" ng-click="openPatternEditorDialog(pred, forms['predform' + pred.id], true)" ng-if="!pred._can_edit_or_delete">[% l('View Pattern') %]</button>
</div>
<div>
- <button class="btn btn-default" ng-disabled="pred.predform.$dirty" ng-click="add_issuances()">[% l('Predict New Issues') %]</button>
+ <button class="btn btn-default" ng-disabled="forms['predform' + pred.id].$dirty" ng-click="add_issuances()">[% l('Predict New Issues') %]</button>
<button type="submit" class="btn btn-default" ng-disabled="!pred._can_edit_or_delete" ng-click="deleteScap(pred)">[% l('Delete') %]</button>
- <button type="submit" class="btn btn-primary" ng-disabled="!pred.predform.$dirty" ng-click="updateScap(pred)">[% l('Save') %]</button>
+ <button type="submit" class="btn btn-primary" ng-disabled="!forms['predform' + pred.id].$dirty" ng-click="updateScap(pred)">[% l('Save') %]</button>
</div>
</form>
</div>
$uibModal , $timeout , $location , egConfirmDialog , ngToast) {
$scope.has_pattern_to_import = false;
+ $scope.forms = [];
egSerialsCoreSvc.fetch($scope.bibId).then(function() {
reload($scope.ssubId);
egSerialsCoreSvc.fetch_patterns_from_bibs_mfhds($scope.bibId).then(function() {
});
function reload(ssubId) {
+ if (!ssubId) return;
var ssub = egSerialsCoreSvc.get_ssub(ssubId);
$scope.predictions = egCore.idl.toTypedHash(ssub.scaps());
angular.forEach($scope.predictions, function(pred) {
});
}
- $scope.$watch('ssubId', function(newVal, oldVal) {
- if (newVal && newVal != oldVal) reload(newVal);
- });
-
$scope.createScap = function(pred) {
var scap = egCore.idl.fromTypedHash(pred);
egCore.pcrud.create(scap).then(function() {
}
// Mark form dirty because, when it's created from a template,
// it can be immediately saved if the user so chooses. The
- // $timeout() allows this to happen after the form is bound
- // is bound to $scope.new_prediction.
- $timeout(function() { $scope.new_prediction.predform.$setDirty() });
+ // $watch() allows this to happen after the form is bound
+ // is bound to the scope.
+ $scope.$watch('forms.newpredform', function(form) {
+ if (form) form.$setDirty();
+ });
}
- $scope.openPatternEditorDialog = function(pred, viewOnly) {
+ $scope.openPatternEditorDialog = function(pred, form, viewOnly) {
$uibModal.open({
templateUrl: './serials/t_pattern_editor_dialog',
size: 'lg',
}).result.then(function (patternCode) {
if (pred.pattern_code !== patternCode) {
pred.pattern_code = patternCode;
- pred.predform.$setDirty();
+ form.$setDirty();
}
});
}