Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
C
caosdb-webui
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
caosdb
Software
caosdb-webui
Commits
0dcd0be0
Commit
0dcd0be0
authored
11 months ago
by
Henrik tom Wörden
Browse files
Options
Downloads
Patches
Plain Diff
WIP: running
parent
d05c7394
No related branches found
No related tags found
No related merge requests found
Pipeline
#53138
failed
11 months ago
Stage: test
Changes
2
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/core/js/ext_references.js
+89
-15
89 additions, 15 deletions
src/core/js/ext_references.js
src/core/js/reference_resolver/caosdb_default_person.js
+14
-16
14 additions, 16 deletions
src/core/js/reference_resolver/caosdb_default_person.js
with
103 additions
and
31 deletions
src/core/js/ext_references.js
+
89
−
15
View file @
0dcd0be0
...
@@ -275,8 +275,9 @@ var resolve_references =
...
@@ -275,8 +275,9 @@ var resolve_references =
* named `par`.
* named `par`.
*
*
* @param {HTMLElement} entity - entity in HTML
* @param {HTMLElement} entity - entity in HTML
* representation. @param
* representation.
* {string} par - parent name. @return {boolean}
* @param {string} par - parent name.
* @return {boolean}
*/
*/
this
.
is_child
=
this
.
is_child
=
function
(
entity
,
par
)
{
function
(
entity
,
par
)
{
...
@@ -289,6 +290,45 @@ var resolve_references =
...
@@ -289,6 +290,45 @@ var resolve_references =
return
false
;
return
false
;
};
};
/**
* Return true iff the entity has at least one direct parent
* named `par`.
*
* @param {GRPC Entity} entity - GRPC entity object
* @param {string} par - parent name.
* @return {boolean}
*/
this
.
is_child_g
=
function
(
entity
,
par
)
{
var
pars
=
[]
entity
.
getParentsList
().
forEach
((
e
)
=>
{
pars
.
push
(
e
.
getName
().
toLowerCase
())});
if
(
pars
.
indexOf
(
par
.
toLowerCase
())
!=-
1
){
return
true
;
}
else
{
return
false
;
}
};
/**
* Return the value of the property with the given name
*
* @param {GRPC Entity} entity - GRPC entity object
* @param {string} pname - property name
* @return {object}
*/
this
.
get_property_g
=
function
(
entity
,
pname
)
{
var
pnames
=
[];
entity
.
getPropertiesList
().
forEach
((
e
)
=>
{
pnames
.
push
(
e
.
getName
().
toLowerCase
())});
var
index
=
pnames
.
indexOf
(
pname
.
toLowerCase
());
if
(
index
!=-
1
){
return
entity
.
getPropertiesList
()[
index
].
getValue
();
}
else
{
return
null
;
}
};
/**
/**
* @typedef {reference_info}
* @typedef {reference_info}
* @property {string} text
* @property {string} text
...
@@ -324,22 +364,25 @@ var resolve_references =
...
@@ -324,22 +364,25 @@ var resolve_references =
* is to be resolved. @return {reference_info}
* is to be resolved. @return {reference_info}
*/
*/
this
.
resolve_reference
=
this
.
resolve_reference
=
async
function
(
id
)
{
async
function
(
entity
)
{
const
custom_reference_resolver
=
const
custom_reference_resolver
=
window
[
"
${BUILD_EXT_REFERENCES_CUSTOM_RESOLVER}
"
];
window
[
"
${BUILD_EXT_REFERENCES_CUSTOM_RESOLVER}
"
];
if
(
custom_reference_resolver
&&
if
(
custom_reference_resolver
&&
typeof
custom_reference_resolver
.
resolve
===
"
function
"
)
{
typeof
custom_reference_resolver
.
resolve
===
"
function
"
)
{
// try custom_reference_resolver and fall-back to standard
// try custom_reference_resolver and fall-back to standard
// implementation
// implementation
var
ret
=
await
custom_reference_resolver
.
resolve
(
id
);
if
(
custom_reference_resolver
.
new_resolve
)
{
var
ret
=
await
custom_reference_resolver
.
resolve
(
entity
);
if
(
ret
)
{
if
(
ret
)
{
return
ret
;
return
ret
;
}
}
}
else
{
var
ret
=
await
custom_reference_resolver
.
resolve
(
entity
.
getId
());
if
(
ret
)
{
return
ret
;
}
}
}
}
const
entity
=
(
await
resolve_references
.
retrieve
(
id
))[
0
];
// TODO handle multiple parents
// TODO handle multiple parents
const
par
=
resolve_references
.
getParents
(
entity
)[
0
]
||
{};
const
par
=
resolve_references
.
getParents
(
entity
)[
0
]
||
{};
...
@@ -394,13 +437,20 @@ var resolve_references =
...
@@ -394,13 +437,20 @@ var resolve_references =
* @return {reference_info} the resolved reference information
* @return {reference_info} the resolved reference information
*/
*/
this
.
update_single_resolvable_reference
=
this
.
update_single_resolvable_reference
=
async
function
(
rs
)
{
async
function
(
rs
,
entities_prom
)
{
$
(
rs
).
find
(
"
.caosdb-id-button
"
).
hide
();
$
(
rs
).
find
(
"
.caosdb-id-button
"
).
hide
();
const
target
=
resolve_references
.
add_target
(
rs
);
const
target
=
resolve_references
.
add_target
(
rs
);
const
entities
=
await
entities_prom
;
const
id
=
getEntityID
(
rs
);
const
id
=
getEntityID
(
rs
);
const
entity
=
entities
[
id
];
if
(
entity
.
getId
()
!=
id
){
console
.
error
(
"
IDs do not match!!!!
"
);
}
console
.
log
(
"
Entity looks good!!!!
"
);
console
.
log
(
typeof
entity
.
getParentsList
===
"
function
"
);
target
.
textContent
=
id
;
target
.
textContent
=
id
;
const
resolved_entity_info
=
const
resolved_entity_info
=
(
await
resolve_references
.
resolve_reference
(
id
));
(
await
resolve_references
.
resolve_reference
(
entity
));
target
.
textContent
=
resolved_entity_info
.
text
;
target
.
textContent
=
resolved_entity_info
.
text
;
return
resolved_entity_info
;
return
resolved_entity_info
;
};
};
...
@@ -442,6 +492,22 @@ var resolve_references =
...
@@ -442,6 +492,22 @@ var resolve_references =
.
toArray
();
.
toArray
();
};
};
/**
* This function retrieves all entities corresponding to the given
* IDs.
*
* @param {Set} ids
*/
this
.
_create_entity_dict
=
async
function
(
ids
)
{
resp
=
await
GrpcTransactionService
.
retrieve
(
Array
.
from
(
ids
));
edict
=
{};
for
(
eresp
of
resp
.
getResponsesList
())
{
var
ent
=
eresp
.
getRetrieveResponse
().
getEntityResponse
().
getEntity
();
edict
[
ent
.
getId
()]
=
ent
;
}
return
edict
;
}
/**
/**
* This function updates all references in the body which are inside
* This function updates all references in the body which are inside
* of the current viewport.
* of the current viewport.
...
@@ -485,7 +551,8 @@ var resolve_references =
...
@@ -485,7 +551,8 @@ var resolve_references =
// the view port.
// the view port.
const
first_ref_info
=
const
first_ref_info
=
await
resolve_references
.
update_single_resolvable_reference
(
await
resolve_references
.
update_single_resolvable_reference
(
rs
[
0
]);
rs
[
0
],
resolve_references
.
_create_entity_dict
([
getEntityID
(
rs
[
0
])]));
first_ref_info
[
"
index
"
]
=
0
;
first_ref_info
[
"
index
"
]
=
0
;
...
@@ -497,11 +564,16 @@ var resolve_references =
...
@@ -497,11 +564,16 @@ var resolve_references =
resolve_references
.
add_summary_field
(
property_value
);
resolve_references
.
add_summary_field
(
property_value
);
// collect ref infos for the summary
// collect ref infos for the summary
const
entity_ids
=
new
Set
for
(
var
j
=
1
;
j
<
rs
.
length
;
j
++
)
{
entity_ids
.
add
(
getEntityID
(
rs
[
j
]))
}
entities_prom
=
resolve_references
.
_create_entity_dict
(
ids
);
const
ref_infos
=
[
first_ref_info
];
const
ref_infos
=
[
first_ref_info
];
for
(
var
j
=
1
;
j
<
rs
.
length
;
j
++
)
{
for
(
var
j
=
1
;
j
<
rs
.
length
;
j
++
)
{
const
ref_info
=
const
ref_info
=
resolve_references
.
update_single_resolvable_reference
(
resolve_references
.
update_single_resolvable_reference
(
rs
[
j
]);
rs
[
j
]
,
entities_prom
);
ref_info
[
"
index
"
]
=
j
;
ref_info
[
"
index
"
]
=
j
;
ref_infos
.
push
(
ref_info
);
ref_infos
.
push
(
ref_info
);
}
}
...
@@ -550,7 +622,9 @@ var resolve_references =
...
@@ -550,7 +622,9 @@ var resolve_references =
// discard return value as it is not needed for any summary
// discard return value as it is not needed for any summary
// generation as above.
// generation as above.
resolve_references
.
update_single_resolvable_reference
(
rs
[
i
]);
resolve_references
.
update_single_resolvable_reference
(
rs
[
i
],
resolve_references
.
_create_entity_dict
([
getEntityID
(
rs
[
i
])]));
}
}
}
}
}
}
...
...
This diff is collapsed.
Click to expand it.
src/core/js/reference_resolver/caosdb_default_person.js
+
14
−
16
View file @
0dcd0be0
...
@@ -42,24 +42,22 @@ var caosdb_default_person_reference = new function () {
...
@@ -42,24 +42,22 @@ var caosdb_default_person_reference = new function () {
/**
/**
* Return the name of a person as firstname + lastname
* Return the name of a person as firstname + lastname
*/
*/
this
.
get_person_str
=
function
(
e
l
)
{
this
.
get_person_str
=
function
(
e
ntity
)
{
var
valpr
=
getProperties
(
el
);
var
lname
=
""
if
(
valpr
==
undefined
)
{
if
(
resolve_references
.
get_property_g
(
entity
,
lastname_prop_name
)
!=
null
)
{
return
;
lname
=
resolve_references
.
get_property_g
(
entity
,
lastname_prop_name
).
getScalarValue
().
getStringValue
()
;
}
}
return
valpr
.
filter
(
valprel
=>
var
fname
=
""
valprel
.
name
.
toLowerCase
().
trim
()
==
if
(
resolve_references
.
get_property_g
(
entity
,
firstname_prop_name
)
!=
null
){
firstname_prop_name
.
toLowerCase
())[
0
].
value
+
fname
=
resolve_references
.
get_property_g
(
entity
,
firstname_prop_name
).
getScalarValue
().
getStringValue
();
"
"
+
valpr
.
filter
(
valprel
=>
valprel
.
name
.
toLowerCase
().
trim
()
==
lastname_prop_name
.
toLowerCase
())[
0
].
value
;
}
}
return
fname
+
"
"
+
lname
;
this
.
resolve
=
async
function
(
id
)
{
}
this
.
new_resolve
=
true
;
// enable new syntax
const
entity
=
(
await
resolve_references
.
retrieve
(
id
))[
0
];
this
.
resolve
=
async
function
(
entity
)
{
console
.
log
(
"
whats that?
"
);
if
(
resolve_references
.
is_child
(
entity
,
person_rt_name
))
{
console
.
log
(
entity
);
if
(
resolve_references
.
is_child_g
(
entity
,
person_rt_name
))
{
return
{
return
{
"
text
"
:
caosdb_default_person_reference
.
get_person_str
(
entity
)
"
text
"
:
caosdb_default_person_reference
.
get_person_str
(
entity
)
};
};
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment