<div>
<div class="pad-vert">
<button class="btn btn-warning" ng-click="startNewScap()">[% l('Add New') %]</button>
- <button class="btn btn-warning" ng-click="importScapFromBibRecord()">[% l('Import from Bibliographic and/or MFHD Records') %]</button>
+ <button class="btn btn-warning" ng-click="importScapFromBibRecord()" ng-disabled="!has_pattern_to_import">[% l('Import from Bibliographic and/or MFHD Records') %]</button>
<button class="btn btn-warning" ng-click="importScapFromSpt()">[% l('Create from Template') %]</button>
<select ng-model="active_pattern_template.id" ng-options="spt.id as spt.name for spt in pattern_templates | orderBy:'name'">
</select>
--- /dev/null
+<form ng-submit="ok()" role="form">
+<div class="modal-header">
+ <button type="button" class="close" ng-click="cancel()"
+ aria-hidden="true">×</button>
+ <h4 class="modal-title">[% l('Select Patterns to Import') %]</h4>
+</div>
+
+<div class="modal-body">
+ <div ng-repeat="pot in potentials" class="row">
+ <div>
+ <div class="col-md-1">
+ <input type="checkbox" ng-model="pot.selected">
+ </div>
+ <div class="col-md-11">
+ <span ng-if="pot._classname == 'bre'">[% l('Bibliographic record [_1]', '{{pot.id}}') %]</span>
+ <span ng-if="pot._classname == 'sre'">[% l('MFHD record [_1]', '{{pot.id}}') %]</span>
+ </div>
+ </div>
+ <div>
+ <div class="col-md-1"></div>
+ <div class="col-md-11">
+ <pre>{{pot.desc}}</pre>
+ </div>
+ </div>
+ </div>
+</div>
+
+<div class="modal-footer">
+ <input type="submit" class="btn btn-primary" value="[% l('Import') %]"></input>
+ <button class="btn btn-warning" ng-click="cancel()">[% l('Cancel') %]</button>
+</div>
+</form>
function($scope , $q , egSerialsCoreSvc , egCore , egGridDataProvider ,
$uibModal , $timeout , $location) {
+ $scope.has_pattern_to_import = false;
egSerialsCoreSvc.fetch($scope.bibId).then(function() {
reload($scope.ssubId);
+ egSerialsCoreSvc.fetch_patterns_from_bibs_mfhds($scope.bibId).then(function() {
+ if (egSerialsCoreSvc.potentialPatternList.length > 0) {
+ $scope.has_pattern_to_import = true;
+ }
+ });
});
function reload(ssubId) {
}
$scope.importScapFromBibRecord = function() {
+ $uibModal.open({
+ templateUrl: './serials/t_select_pattern_dialog',
+ size: 'md',
+ backdrop: 'static',
+ controller:
+ ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
+ $scope.focusMe = true;
+ $scope.potentials = egSerialsCoreSvc.potentialPatternList.slice();
+ $scope.ok = function(patternCode) { $uibModalInstance.close($scope.potentials) }
+ $scope.cancel = function () { $uibModalInstance.dismiss() }
+ }]
+ }).result.then(function (potentials) {
+ var marc = [];
+ angular.forEach(potentials, function(pot) {
+ if (pot.selected) {
+ marc.push(pot.marc);
+ }
+ });
+ if (marc.length == 0) return;
+ egCore.net.request(
+ 'open-ils.serial',
+ 'open-ils.serial.caption_and_pattern.create_from_records',
+ egCore.auth.token(),
+ $scope.ssubId,
+ marc
+ ).then(function() {
+ egSerialsCoreSvc.fetch($scope.bibId).then(function() {
+ reload($scope.ssubId);
+ });
+ });
+ });
}
$scope.importScapFromSpt = function() {
subList : [],
sptList : [],
mfhdList : [],
+ potentialPatternList : [],
flatMfhdList : [],
itemMap : {},
itemTree : [],
});
}
+ service.fetch_patterns_from_bibs_mfhds = function(bibId) {
+ return egCore.net.request(
+ 'open-ils.serial',
+ 'open-ils.serial.caption_and_pattern.find_legacy_by_bib_record.atomic',
+ egCore.auth.token(),
+ bibId
+ ).then(function(list) {
+ service.potentialPatternList = egCore.idl.toTypedHash(list);
+ angular.forEach(service.potentialPatternList, function(pot) {
+ var rec = new MARC21.Record({ marcxml : pot.marc });
+ var pattern_fields = rec.fields.filter(function(f) {
+ return (f.tag == '853' || f.tag == '854' || f.tag == '855');
+ });
+ pot.desc = '';
+ if (pattern_fields.length > 0) {
+ // just take the first one
+ var fld = pattern_fields[0];
+ pot.desc = fld.tag + ' ' + fld.ind1 + fld.ind2 +
+ fld.subfields.map(function(sf) {
+ return '$' + sf[0] + sf[1]
+ }).join('');
+ }
+ });
+ })
+ }
+
// fetch subscription, distributions, streams, captions,
// and notes associated with the indicated bib
service.fetch = function(bibId, contextOrg) {