/* | |
Licensed to the Apache Software Foundation (ASF) under one or more | |
contributor license agreements. See the NOTICE file distributed with | |
this work for additional information regarding copyright ownership. | |
The ASF licenses this file to You under the Apache License, Version 2.0 | |
(the "License"); you may not use this file except in compliance with | |
the License. You may obtain a copy of the License at | |
http://www.apache.org/licenses/LICENSE-2.0 | |
Unless required by applicable law or agreed to in writing, software | |
distributed under the License is distributed on an "AS IS" BASIS, | |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
See the License for the specific language governing permissions and | |
limitations under the License. | |
*/ | |
//helper for formatting JSON and others | |
var DOC_PLACEHOLDER = '<doc>\n' + | |
'<field name="id">change.me</field>' + | |
'<field name="title">change.me</field>' + | |
'</doc>'; | |
var ADD_PLACEHOLDER = '<add>\n' + DOC_PLACEHOLDER + '</add>\n'; | |
solrAdminApp.controller('DocumentsController', | |
function($scope, $rootScope, $routeParams, $location, Luke, Update, FileUpload, Constants) { | |
$scope.resetMenu("documents", Constants.IS_COLLECTION_PAGE); | |
$scope.refresh = function () { | |
Luke.schema({core: $routeParams.core}, function(data) { | |
//TODO: handle dynamic fields | |
delete data.schema.fields._version_; | |
$scope.fields = Object.keys(data.schema.fields); | |
}); | |
$scope.document = ""; | |
$scope.handler = "/update"; | |
$scope.type = "json"; | |
$scope.commitWithin = 1000; | |
$scope.overwrite = true; | |
$scope.boost = "1.0"; | |
}; | |
$scope.refresh(); | |
$scope.changeDocumentType = function () { | |
$scope.placeholder = ""; | |
if ($scope.type == 'json') { | |
$scope.placeholder = '{"id":"change.me","title":"change.me"}'; | |
} else if ($scope.type == 'csv') { | |
$scope.placeholder = "id,title\nchange.me,change.me"; | |
} else if ($scope.type == 'solr') { | |
$scope.placeholder = ADD_PLACEHOLDER; | |
} else if ($scope.type == 'xml') { | |
$scope.placeholder = DOC_PLACEHOLDER; | |
} | |
}; | |
$scope.addWizardField = function () { | |
if ($scope.document == "") $scope.document = "{}"; | |
var doc = JSON.parse($scope.document); | |
doc[$scope.fieldName] = $scope.fieldData; | |
$scope.document = JSON.stringify(doc, null, '\t'); | |
$scope.fieldData = ""; | |
}; | |
$scope.submit = function () { | |
var contentType = ""; | |
var postData = ""; | |
var params = {}; | |
var doingFileUpload = false; | |
if ($scope.handler[0] == '/') { | |
params.handler = $scope.handler.substring(1); | |
} else { | |
params.handler = 'update'; | |
params.qt = $scope.handler; | |
} | |
params.commitWithin = $scope.commitWithin; | |
params.boost = $scope.boost; | |
params.overwrite = $scope.overwrite; | |
params.core = $routeParams.core; | |
params.wt = "json"; | |
if ($scope.type == "json" || $scope.type == "wizard") { | |
postData = "[" + $scope.document + "]"; | |
contentType = "json"; | |
} else if ($scope.type == "csv") { | |
postData = $scope.document; | |
contentType = "csv"; | |
} else if ($scope.type == "xml") { | |
postData = "<add>" + $scope.document + "</add>"; | |
contentType = "xml"; | |
} else if ($scope.type == "upload") { | |
doingFileUpload = true; | |
params.raw = $scope.literalParams; | |
} else if ($scope.type == "solr") { | |
postData = $scope.document; | |
if (postData[0] == "<") { | |
contentType = "xml"; | |
} else if (postData[0] == "{" || postData[0] == '[') { | |
contentType = "json"; | |
} else { | |
alert("Cannot identify content type") | |
} | |
} | |
if (!doingFileUpload) { | |
var callback = function (success) { | |
$scope.responseStatus = "success"; | |
delete success.$promise; | |
delete success.$resolved; | |
$scope.response = JSON.stringify(success, null, ' '); | |
}; | |
var failure = function (failure) { | |
$scope.responseStatus = failure; | |
}; | |
if (contentType == "json") { | |
Update.postJson(params, postData, callback, failure); | |
} else if (contentType == "xml") { | |
Update.postXml(params, postData, callback, failure); | |
} else if (contentType == "csv") { | |
Update.postCsv(params, postData, callback, failure); | |
} | |
} else { | |
var file = $scope.fileUpload; | |
console.log('file is ' + JSON.stringify(file)); | |
var uploadUrl = "/fileUpload"; | |
FileUpload.upload(params, $scope.fileUpload, function (success) { | |
$scope.responseStatus = "success"; | |
$scope.response = JSON.stringify(success, null, ' '); | |
}, function (failure) { | |
$scope.responseStatus = "failure"; | |
$scope.response = JSON.stringify(failure, null, ' '); | |
}); | |
} | |
} | |
}); | |