From c5903941c489a0dd926b9d285c7c20519d6a8aaf Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Fri, 25 Oct 2013 17:49:39 -0400 Subject: [PATCH] ff : initial bib upload form Signed-off-by: Bill Erickson --- Open-ILS/src/templates/staff/fulfillment/index.tt2 | 4 +- .../src/templates/staff/fulfillment/t_records.tt2 | 26 ++++++++++ .../web/js/ui/default/staff/fulfillment/app.js | 56 ++++++++++++++++++++-- 3 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 Open-ILS/src/templates/staff/fulfillment/t_records.tt2 diff --git a/Open-ILS/src/templates/staff/fulfillment/index.tt2 b/Open-ILS/src/templates/staff/fulfillment/index.tt2 index 67bfd89416..be86b3f194 100644 --- a/Open-ILS/src/templates/staff/fulfillment/index.tt2 +++ b/Open-ILS/src/templates/staff/fulfillment/index.tt2 @@ -70,8 +70,8 @@
- Manage ILL - Manage Bibliographic Records + Manage ILL + Manage Bibliographic Records
+ diff --git a/Open-ILS/web/js/ui/default/staff/fulfillment/app.js b/Open-ILS/web/js/ui/default/staff/fulfillment/app.js index 8c8430092e..6b687c2d41 100644 --- a/Open-ILS/web/js/ui/default/staff/fulfillment/app.js +++ b/Open-ILS/web/js/ui/default/staff/fulfillment/app.js @@ -17,12 +17,11 @@ angular.module('ffMain', ['ngRoute', 'egCoreMod', 'egUiMod']) 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', { @@ -794,6 +793,57 @@ function ($scope, $q, $route, egNet, egAuth, egPCRUD, egOrg, ffService) { $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; + }; +}]) -- 2.11.0