--- /dev/null
+<div class="container">
+ <div class="row">
+ <div class="col-lg-3"></div><!-- offset? -->
+ <div class="col-lg-6">
+ <fieldset>
+ <legend>[% l('Upload Bib Records for {{ffService.currentOrg().shortname()}}') %]</legend>
+ <form ng-submit="uploadRecords(this.myinput.files[0])" >
+ <div class="form-group row">
+ <label class="col-lg-4 control-label">[% l('Record File') %]</label>
+ <div class="col-lg-8">
+ <!-- ng-model doesn't support type=file; TODO: create a service for file uploads -->
+ <input type="file" id="record-file" ng-class="{disabled : in_flight}"/>
+ </div>
+ </div>
+ <div class="form-group row">
+ <div class="col-lg-12">
+ <button type="submit" class="btn" ng-class="{disabled : in_flight}">[% l('Go!') %]</button>
+ </div>
+ </div>
+ </form>
+ </fieldset>
+ </div>
+ </div>
+ </div>
+</div>
+
var resolver = {delay : function(egStartup) {return egStartup.go()}};
// record management UI
- /*$routeProvider.when('/fulfillment/records', {
+ $routeProvider.when('/fulfillment/records', {
templateUrl: './fulfillment/t_records',
- controller: 'ILLCtrl',
+ controller: 'RecordsCtrl',
resolve : resolver
});
- */
// Default to ILL management tabs
$routeProvider.when('/fulfillment/status/:barcode', {
$scope.drawTable();
}])
+// http://stackoverflow.com/questions/17629126/how-to-upload-a-file-using-angularjs-like-the-traditional-way
+.factory('formDataObject', function() {
+ return function(data) {
+ var fd = new FormData();
+ angular.forEach(data, function(value, key) {
+ fd.append(key, value);
+ });
+ return fd;
+ };
+})
+
+.controller('RecordsCtrl',
+['$scope', '$q', '$http', 'ffService', 'formDataObject', 'egAuth',
+function($scope, $q, $http, ffService, formDataObject, egAuth) {
+ $scope.uploadRecords = function(file) {
+ $scope.in_flight = true;
+ var deferred = $q.defer();
+ var args = {
+ ses : egAuth.token(),
+ // ng-model doesn't support type=file;
+ // TODO: create a service for file uploads
+ // http://stackoverflow.com/questions/17063000/ng-model-for-input-type-file
+ loadFile : $('#record-file')[0].files[0],
+ uploadLocation : ffService.currentOrg().id()
+ }
+
+ if (!args.loadFile) return;
+
+ console.log('uploading file ' + args.loadFile);
+
+ $http({
+ method: 'POST',
+ url: '/ff/fast_import',
+ data: args,
+ transformRequest: formDataObject,
+ headers: {'Content-Type': 'multipart/form-data'}
+ })
+ .success(function(data, status, headers, config) {
+ console.log("upload finished");
+ $scope.in_flight = false;
+ deferred.resolve(data);
+ })
+ .error(function(data, status, headers, config){
+ console.warn("upload failed");
+ $scope.in_flight = false;
+ deferred.reject(status);
+ });
+
+ return deferred.promise;
+ };
+}])