.
This commit is contained in:
+17
-7
@@ -37,7 +37,7 @@ pub(crate) enum Message {
|
||||
CacheDatatypes(HashMap<NamedNode, ResourceDescription>),
|
||||
CacheReadOnlyEntities(HashSet<ReadOnlyEntity>),
|
||||
PopulateCaches,
|
||||
LookupResourceDescriptions(Vec<NamedNode>),
|
||||
LookupResourceDescriptions(HashSet<NamedNode>),
|
||||
CacheResourceDescriptions(HashMap<NamedNode, ResourceDescription>),
|
||||
WindowClosed(window::Id),
|
||||
URLInputChanged(String),
|
||||
@@ -409,7 +409,7 @@ impl Publisher {
|
||||
}
|
||||
Message::SearchResultClicked(node) => {
|
||||
if let Some(search_state) = &self.search_state {
|
||||
task = task.chain(Task::done(Message::LookupResourceDescriptions(vec![node.clone()])));
|
||||
task = task.chain(Task::done(Message::LookupResourceDescriptions(HashSet::from_iter([node.clone()]))));
|
||||
|
||||
match search_state.action {
|
||||
SearchResultClickAction::URLInput => {
|
||||
@@ -545,12 +545,22 @@ impl Publisher {
|
||||
}
|
||||
Message::NewDocument(class, Some(url)) => {
|
||||
let mut document: RdfSource<KeyedDataset<RowState>> = RdfSource::new(url.clone());
|
||||
let mut quad = document.new_quad();
|
||||
quad.predicate = vocab::rdf::TYPE.into_owned();
|
||||
quad.object = Term::NamedNode(class.to_named_node().into_owned());
|
||||
document.dataset_mut().quads.insert(quad);
|
||||
let mut nodes_to_look_up = HashSet::new();
|
||||
let document_node = NamedNode::new_unchecked(url.as_str());
|
||||
for triple in &class.template(document_node) {
|
||||
let quad = document.quad_from_triple(triple.into_owned());
|
||||
document.dataset_mut().quads.insert(quad);
|
||||
|
||||
task = Task::done(Message::HideNewDocumentButtons)
|
||||
if triple.predicate == vocab::rdf::TYPE &&
|
||||
let TermRef::NamedNode(node) = triple.object {
|
||||
nodes_to_look_up.insert(node.into_owned());
|
||||
} else {
|
||||
nodes_to_look_up.insert(triple.predicate.into_owned());
|
||||
}
|
||||
}
|
||||
|
||||
task = Task::done(Message::LookupResourceDescriptions(nodes_to_look_up))
|
||||
.chain(Task::done(Message::HideNewDocumentButtons))
|
||||
.chain(Task::done(Message::URLInputChanged(url.to_string())))
|
||||
.chain(Task::done(Message::LoadDocument(document)));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user