From ffbaeb5dc6e83081904e62676e331d1614582aed Mon Sep 17 00:00:00 2001 From: Olivier DOSSMANN Date: Thu, 6 Feb 2020 19:32:37 +0100 Subject: [PATCH] Orgas graph: improvements (tests @begining + cosmetic improvements + data) --- orgas/gen.sh | 55 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 50 insertions(+), 5 deletions(-) diff --git a/orgas/gen.sh b/orgas/gen.sh index 93e9cba..181b23b 100755 --- a/orgas/gen.sh +++ b/orgas/gen.sh @@ -3,11 +3,24 @@ # Generate a dot file to create graph of RERO-ils data (orga, lib and users) # +# CONFIG RERO_DIR="${HOME}/projets/rero/rero-ils" +ORGA_COLOR="#bcafff" +LIB_COLOR="#49afff" +# Built variables output="$1" SRC_DIR="${RERO_DIR}/data/" +# TESTS +if [[ -z "${output}" ]]; then + echo "No output file given" + exit 1 +elif [[ -f "${output}" ]]; then + echo "File already exists!" + exit 1 +fi + # start of file echo "digraph {" > "$output" echo "rankdir = RL;" >> "$output" @@ -25,7 +38,7 @@ do code=$(echo $orga|jq -r .code) name=$(echo $orga|jq -r .name) # write result in output - echo "Orga${pid} [shape=box color=\"transparent\" style=filled fillcolor=\"#bcafff\" label=<${name}
(code: ${code})>]" >> "$output" + echo "Orga${pid} [shape=box color=\"transparent\" style=filled fillcolor=\"${ORGA_COLOR}\" label=<${name}
(code: ${code})>]" >> "$output" done # LIBRARIES @@ -43,7 +56,7 @@ do orga_pid=$(echo $orga|rev|cut -d "/" -f 1|rev) # write result in output l_id="Lib${pid}" - echo "${l_id} [shape=house color=transparent style=filled fillcolor=\"#49afff\" label=<${name}
(code: ${code})>]" >> "$output" + echo "${l_id} [shape=house color=transparent style=filled fillcolor=\"${LIB_COLOR}\" label=<${name}
(code: ${code})>]" >> "$output" echo "${l_id} -> Orga${orga_pid}" >> "$output" done @@ -53,17 +66,49 @@ cat "${user_file}"|jq -c '.[] | { email, first_name, last_name, - library: .library."$ref"} | select(.library |length >= 1)'|while read user + barcode, + roles, + library: .library."$ref"}'|while read user do email=$(echo $user|jq -r .email) first_name=$(echo $user|jq -r .first_name) last_name=$(echo $user|jq -r .last_name) + barcode=$(echo $user|jq -r .barcode) + roles=$(echo $user|jq -r .roles[]) library=$(echo $user|jq -r .library) library_pid=$(echo $library|rev|cut -d "/" -f 1|rev) + + if [[ "${roles}" != "null" ]]; then + displayed_roles="" + for role in ${roles}; do + color="black" + if [[ "${role}" == "system_librarian" ]]; then + color="${ORGA_COLOR}" + elif [[ "${role}" == "librarian" ]]; then + color="${LIB_COLOR}" + fi + displayed_roles="${displayed_roles}${role} " + done + fi # write result in output u_id="User_${email}" - echo "\"${u_id}\" [label=<${first_name} ${last_name}
${email}>]" >> "$output" - echo "\"${u_id}\" -> Lib${library_pid}" >> "$output" + + # Don't display barcode if no one + info="" + if [[ "${barcode}" != "null" ]]; then + info="${info}
${barcode}" + fi + # Same for roles + if [[ -n "${displayed_roles}" ]]; then + info="${info}
${displayed_roles}" + fi + + echo "\"${u_id}\" [label=<${first_name} ${last_name}
${email}${info}>]" >> "$output" + + # Display a link if library_pid is not null + if [[ "${library_pid}" != "null" ]]; then + echo "\"${u_id}\" -> Lib${library_pid}" >> "$output" + fi done # end of file