qa-ldf 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +51 -1
- data/VERSION +1 -1
- data/lib/qa/ldf/namespaced_search_service.rb +6 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '047933471f76112e031df405332e2a5f04fa1c7d'
|
4
|
+
data.tar.gz: a1833f2d2b71add456f05851d942eed20c5aaadc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e08391060280e3d0b76e71c4317d48bdc83ffaafd6b596b72edf88d7c0ee5d7964cc6bf65e9b8ce94fd3d12499cbdb8bd0c26cbbb180470010f8d2de2ab2c682
|
7
|
+
data.tar.gz: 88cb5f80635c7175576c90c56d618731cc591aa4ad701bc205da2b04b0bc498b0b54972f608b63f4fdbb0777bf74ec326ce11dd287e842ad88116469af11cd06
|
data/README.md
CHANGED
@@ -86,6 +86,10 @@ In a Hydra app, the best place to put this is in an initializer, e.g. `config/in
|
|
86
86
|
|
87
87
|
The cache server uses [RDF Datasets](http://www.hydra-cg.com/spec/latest/linked-data-fragments/#datasets) to manage sperate cache spaces. The root dataset is at the server root (`http://example.com/ldcache`, above), and additional datasets are available at any `dataset/*` path following from the root. The `Qa::LDF` authorities are configured to use independent datasets, so each authority corresponds to a cache space of its own. Each dataset provides its own description at its base path, and is queryable with `?subject=` queries as demonstrated above.
|
88
88
|
|
89
|
+
#### Selecting a Triplestore Backend
|
90
|
+
|
91
|
+
The caching server provides several backends for persistent storage, we recommend using the Marmotta backend, but a Blazegraph backend (untested with this gem) is also provided. Read the [ActiveTriples::LinkedDataFragments documentation on backend configuration](https://github.com/ActiveTriples/linked-data-fragments#configuration) for more.
|
92
|
+
|
89
93
|
#### LDF caching as an external service.
|
90
94
|
|
91
95
|
The LDF caching server can run independently from your Hydra application as a lightweight, generic [Rack](http://www.rubydoc.info/github/rack/rack/file/SPEC) application, or as a standalone Rails app. You may want to deploy the server in this way so it can run on separate hardware, or to segregate Linked Data "follow your nose" network traffic.
|
@@ -117,13 +121,59 @@ Faceted Application of Subject Terminology
|
|
117
121
|
Configuring authorities
|
118
122
|
-----------------------
|
119
123
|
|
120
|
-
|
121
124
|
### [TK] Models.
|
122
125
|
|
123
126
|
### Forms
|
124
127
|
|
125
128
|
Autocomplete handling for Questioning Authority is provided by Sufia/Hyrax. To this handling, we add a custom dropdown for selecting from multiple authorities in a field.
|
126
129
|
|
130
|
+
# Hyrax Autocomplete
|
131
|
+
|
132
|
+
You've got a `Work` in Hyrax and it has a `Creator` field. Wouldn't it be nice to have autocomplete on that form with a controlled vocabulary? Hyrax has this functionality, but you need to set some things up first.
|
133
|
+
|
134
|
+
The most basic way a field is associated with a particular autocomplete data source is with a data attribute on the element. The `data-autocomplete-url` attribute stores a path to the data source. To add one to an existing field create a partial for the field in `app/views/records/edit_fields/`.
|
135
|
+
|
136
|
+
In the partial, specify the data source:
|
137
|
+
|
138
|
+
```erb
|
139
|
+
<%=
|
140
|
+
f.input key,
|
141
|
+
as: :multi_value,
|
142
|
+
input_html: {
|
143
|
+
class: 'form-control',
|
144
|
+
data: { 'autocomplete-url' => "/authorities/search/loc/names",
|
145
|
+
'autocomplete' => key }
|
146
|
+
} ,
|
147
|
+
required: f.object.required?(key) %>
|
148
|
+
```
|
149
|
+
|
150
|
+
Hyrax comes with [Questioning Authority](https://github.com/projecthydra-labs/questioning_authority) which provides some RESTful endpoints that you can use as autocomplete sources. Checkout the QA README for a list of the authorities that it comes with (you can even make your own).
|
151
|
+
|
152
|
+
When the Hyrax form for your `Work` loads the autocomplete JavaScript is initialized for certain fields. For the `Creator` field that we created a partial for, all we needed to was add the data attribute and the autocomplete is activated.
|
153
|
+
|
154
|
+
If the field is not one of the default fields, you'll need to run this to activate autocomplete on the field:
|
155
|
+
|
156
|
+
```js
|
157
|
+
var Autocomplete = require('hyrax/autocomplete');
|
158
|
+
var autocomplete = new Autocomplete({
|
159
|
+
"autocompleteFields":
|
160
|
+
["subject","language","creator","based_near","work"]
|
161
|
+
});
|
162
|
+
$('.multi_value.form-group').manage_fields({
|
163
|
+
add: function(e, element) {
|
164
|
+
autocomplete.fieldAdded(element)
|
165
|
+
}
|
166
|
+
});
|
167
|
+
autocomplete.setup();
|
168
|
+
```
|
169
|
+
|
170
|
+
You just need to pass the fields when creating an Autocomplete instance.
|
171
|
+
|
172
|
+
Autocomplete in Hyrax currently uses jQuery UI Autocomplete. Hyrax stores the [jQuery UI Autocomplete options and source](http://jqueryui.com/autocomplete/#remote-jsonp) in ES6 classes. Unless you need to make specific query that requires you to change the options and source, the JS will use a default query from [default.es6](https://github.com/projecthydra-labs/hyrax/blob/master/app/assets/javascripts/hyrax/autocomplete/default.es6). This should just work with the QA vocabs.
|
173
|
+
|
174
|
+
The autocomplete for the `Work` field requires different a different source and options so it has a different class: [work.es6](https://github.com/projecthydra-labs/hyrax/blob/master/app/assets/javascripts/hyrax/autocomplete/work.es6).
|
175
|
+
After creating your own class, you will need to import it and an additional case to the autocomplete method in [autocomplete.es6](https://github.com/projecthydra-labs/hyrax/blob/master/app/assets/javascripts/hyrax/autocomplete.es6)
|
176
|
+
|
127
177
|
#### Adding Controlled Vocabulary Dropdown Options
|
128
178
|
|
129
179
|
To create your own dropdown with authorities you extend the `QASelectService` class. By convention, we place this in `app/services`.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
@@ -37,7 +37,12 @@ module Qa
|
|
37
37
|
responses = parent_service.search(query)
|
38
38
|
|
39
39
|
responses.map do |result|
|
40
|
-
result
|
40
|
+
if result.keys.first.is_a?(Symbol)
|
41
|
+
result[:id] = apply_namespace(result[:id])
|
42
|
+
else
|
43
|
+
result['id'] = apply_namespace(result['id'])
|
44
|
+
end
|
45
|
+
|
41
46
|
result
|
42
47
|
end
|
43
48
|
end
|