diff --git a/adapter/adapter-api/pom.xml b/adapter/adapter-api/pom.xml index adfa6c4a5..1bcb7308b 100644 --- a/adapter/adapter-api/pom.xml +++ b/adapter/adapter-api/pom.xml @@ -1,74 +1,78 @@ 4.0.0 SHRINE Adapter Client API shrine-adapter-client-api net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin net.shrine shrine-crypto ${project.version} net.shrine shrine-client ${project.version} net.shrine shrine-protocol ${project.version} com.sun.jersey.jersey-test-framework jersey-test-framework-http ${jersey-version} test com.sun.jersey.contribs jersey-simple-server ${jersey-version} test net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-client ${project.version} test-jar test net.shrine shrine-config ${project.version} test-jar test diff --git a/adapter/adapter-service/pom.xml b/adapter/adapter-service/pom.xml index de3ff64b4..222de51eb 100644 --- a/adapter/adapter-service/pom.xml +++ b/adapter/adapter-service/pom.xml @@ -1,180 +1,184 @@ 4.0.0 SHRINE Adapter shrine-adapter-service jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin org.apache.maven.plugins maven-jar-plugin test-jar org.squeryl squeryl_${scala-major-version} org.scala-lang scalap org.scala-lang scalap ${scala-version} net.shrine shrine-auth ${project.version} net.shrine shrine-adapter-client-api ${project.version} net.shrine shrine-data-commons ${project.version} net.shrine shrine-crypto ${project.version} net.shrine shrine-crypto ${project.version} test-jar test net.shrine shrine-client ${project.version} net.shrine shrine-protocol ${project.version} net.shrine shrine-config ${project.version} com.typesafe.slick slick_2.11 ${slick-version} org.suecarter freeslick_2.11 ${freeslick-version} org.slf4j slf4j-log4j12 ${slf4j-version} mysql mysql-connector-java com.sun.jersey.jersey-test-framework jersey-test-framework-http ${jersey-version} test com.sun.jersey.contribs jersey-simple-server ${jersey-version} test com.h2database h2 test org.easymock easymock test org.springframework spring-jdbc test net.shrine shrine-util ${project.version} test-jar test net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-data-commons ${project.version} test-jar test diff --git a/apps/dashboard-app/pom.xml b/apps/dashboard-app/pom.xml index 9f35503e9..0e4ab5cd3 100644 --- a/apps/dashboard-app/pom.xml +++ b/apps/dashboard-app/pom.xml @@ -1,200 +1,208 @@ shrine-base net.shrine + 1.23.3.1-SNAPSHOT + + + ../../pom.xml 4.0.0 dashboard-app + 1.23.3.1-SNAPSHOT + + + Dashboard App jar net.alchim31.maven scala-maven-plugin com.github.eirslett frontend-maven-plugin 0.0.23 src/main/js install node and npm install-node-and-npm v0.10.33 2.7.4 npm install npm generate-resources install bower install bower install grunt default grunt --no-color log4j log4j io.spray spray-routing_2.11 ${spray-version} io.spray spray-servlet_2.11 ${spray-version} io.spray spray-util_2.11 ${spray-version} io.spray spray-testkit_2.11 ${spray-version} test com.typesafe.akka akka-actor_2.11 ${akka-version} com.typesafe.akka akka-slf4j_2.11 ${akka-version} com.typesafe.akka akka-testkit_2.11 ${akka-testkit-version} test org.json4s json4s-native_2.11 ${json4s-version} com.typesafe.slick slick_2.11 ${slick-version} org.slf4j slf4j-log4j12 ${slf4j-version} com.h2database h2 ${h2-version} test net.shrine shrine-protocol ${project.version} net.shrine shrine-utility-commons ${project.version} net.shrine shrine-crypto ${project.version} test-jar test net.shrine shrine-auth ${project.version} net.shrine shrine-data-commons ${project.version} mysql mysql-connector-java ${mysql-version} io.jsonwebtoken jjwt ${jjwt-version} net.sourceforge.jtds jtds ${jtds-version} net.shrine shrine-adapter-client-api ${project.version} com.typesafe config ${typesafe-config-version} diff --git a/apps/dashboard-app/src/main/js/pom.xml b/apps/dashboard-app/src/main/js/pom.xml index 26a59e587..e269b3efd 100644 --- a/apps/dashboard-app/src/main/js/pom.xml +++ b/apps/dashboard-app/src/main/js/pom.xml @@ -1,90 +1,94 @@ shrine-base net.shrine + 1.23.3.1-SNAPSHOT + + + 4.0.0 dashboard-app-client pom com.github.eirslett frontend-maven-plugin 0.0.23 install node and npm install-node-and-npm v0.10.33 2.7.4 npm install npm generate-resources install bower install bower install grunt default grunt --no-color diff --git a/apps/dashboard-war/pom.xml b/apps/dashboard-war/pom.xml index 8addd9079..458392bc5 100644 --- a/apps/dashboard-war/pom.xml +++ b/apps/dashboard-war/pom.xml @@ -1,37 +1,41 @@ shrine-base net.shrine + 1.23.3.1-SNAPSHOT + + + ../../pom.xml 4.0.0 dashboard-war Dashboard War war org.apache.maven.plugins maven-war-plugin shrine-dashboard net.shrine dashboard-app ${project.version} org.slf4j slf4j-log4j12 ${slf4j-version} runtime diff --git a/apps/meta-app/pom.xml b/apps/meta-app/pom.xml index d61964602..c1bfecce2 100644 --- a/apps/meta-app/pom.xml +++ b/apps/meta-app/pom.xml @@ -1,116 +1,120 @@ shrine-base net.shrine + 1.23.3.1-SNAPSHOT + + + ../../pom.xml 4.0.0 meta-app MetaData App jar net.alchim31.maven scala-maven-plugin com.propensive rapture-json_2.11 ${rapture-version} com.propensive rapture-json-jawn_2.11 ${rapture-version} net.shrine shrine-utility-commons ${project.version} net.shrine shrine-config ${project.version} net.shrine shrine-auth ${project.version} net.shrine shrine-qep ${project.version} log4j log4j io.spray spray-routing_2.11 ${spray-version} io.spray spray-servlet_2.11 ${spray-version} io.spray spray-util_2.11 ${spray-version} io.spray spray-testkit_2.11 ${spray-version} test com.typesafe.akka akka-actor_2.11 ${akka-version} com.typesafe.akka akka-slf4j_2.11 ${akka-version} com.typesafe.akka akka-testkit_2.11 ${akka-testkit-version} test org.json4s json4s-native_2.11 ${json4s-version} com.typesafe config ${typesafe-config-version} mysql mysql-connector-java ${mysql-version} com.h2database h2 test \ No newline at end of file diff --git a/apps/meta-war/pom.xml b/apps/meta-war/pom.xml index 6ec1bf97e..ac3fba039 100644 --- a/apps/meta-war/pom.xml +++ b/apps/meta-war/pom.xml @@ -1,37 +1,41 @@ shrine-base net.shrine + 1.23.3.1-SNAPSHOT + + + ../../pom.xml 4.0.0 meta-war MetaData War war org.apache.maven.plugins maven-war-plugin shrine-metadata net.shrine meta-app ${project.version} org.slf4j slf4j-log4j12 ${slf4j-version} runtime \ No newline at end of file diff --git a/apps/proxy/pom.xml b/apps/proxy/pom.xml index 1bb5783fb..f013457f1 100644 --- a/apps/proxy/pom.xml +++ b/apps/proxy/pom.xml @@ -1,52 +1,56 @@ 4.0.0 SHRINE Proxy shrine-proxy war net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-crypto ${project.version} net.shrine shrine-client ${project.version} net.shrine shrine-protocol ${project.version} javax.servlet javax.servlet-api provided src/main/scala src/test/scala shrine-proxy net.alchim31.maven scala-maven-plugin diff --git a/apps/shrine-app/pom.xml b/apps/shrine-app/pom.xml index 2268ea61a..f9a899c35 100644 --- a/apps/shrine-app/pom.xml +++ b/apps/shrine-app/pom.xml @@ -1,118 +1,122 @@ shrine-base net.shrine + 1.23.3.1-SNAPSHOT + + + ../../pom.xml 4.0.0 shrine-app SHRINE App jar src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-config ${project.version} net.shrine shrine-hms-core ${project.version} net.shrine shrine-qep ${project.version} net.shrine shrine-broadcaster-aggregator ${project.version} net.shrine shrine-broadcaster-service ${project.version} net.shrine shrine-adapter-service ${project.version} net.shrine shrine-crypto ${project.version} net.shrine shrine-ont-support ${project.version} net.shrine shrine-crypto ${project.version} test-jar test net.shrine shrine-protocol ${project.version} test-jar test net.shrine shrine-config ${project.version} test-jar test net.shrine shrine-broadcaster-aggregator ${project.version} test-jar test net.shrine shrine-client ${project.version} test-jar test com.h2database h2 ${h2-version} test org.json4s json4s-native_2.11 ${json4s-version} diff --git a/apps/steward-app/pom.xml b/apps/steward-app/pom.xml index 9bdf19e88..598bb9c70 100644 --- a/apps/steward-app/pom.xml +++ b/apps/steward-app/pom.xml @@ -1,177 +1,181 @@ shrine-base net.shrine + 1.23.3.1-SNAPSHOT + + + ../../pom.xml 4.0.0 steward-app Steward App jar src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin com.github.eirslett frontend-maven-plugin 1.0 src/main/js install node and npm install-node-and-npm v7.7.3 4.1.2 npm install npm generate-resources bower install bower gulp test and build gulp --no-color io.spray spray-routing_2.11 ${spray-version} io.spray spray-servlet_2.11 ${spray-version} io.spray spray-util_2.11 ${spray-version} io.spray spray-testkit_2.11 ${spray-version} test com.typesafe.akka akka-actor_2.11 ${akka-version} com.typesafe.akka akka-slf4j_2.11 ${akka-version} com.typesafe.akka akka-testkit_2.11 ${akka-testkit-version} test org.json4s json4s-native_2.11 ${json4s-version} com.typesafe.slick slick_2.11 ${slick-version} org.suecarter freeslick_2.11 ${freeslick-version} org.slf4j slf4j-log4j12 ${slf4j-version} com.h2database h2 ${h2-version} test net.shrine shrine-protocol ${project.version} net.shrine shrine-email ${project.version} net.shrine shrine-data-commons ${project.version} net.shrine shrine-client ${project.version} net.shrine shrine-crypto ${project.version} test-jar test net.shrine shrine-auth ${project.version} mysql mysql-connector-java ${mysql-version} diff --git a/apps/steward-app/src/main/js/app/assets/css/core.css b/apps/steward-app/src/main/js/app/assets/css/core.css index 2713d6e84..9109acc20 100644 --- a/apps/steward-app/src/main/js/app/assets/css/core.css +++ b/apps/steward-app/src/main/js/app/assets/css/core.css @@ -1,592 +1,594 @@ @charset "UTF-8"; @font-face { font-family: 'Nexa'; src: url("../fnt/nexa/nexa-light-webfont.eot"); src: url("../fnt/nexa/nexa-light-webfont.eot?#iefix") format("embedded-opentype"), url("../fnt/nexa/nexa-light-webfont.woff2") format("woff2"), url("../fnt/nexa/nexa-light-webfont.woff") format("woff"), url("../fnt/nexa/nexa-light-webfont.ttf") format("truetype"), url("../fnt/nexa/nexa-light-webfont.svg#nexa_lightregular") format("svg"); font-weight: normal; font-style: normal; } @font-face { font-family: 'Nexa Bold'; src: url("../fnt/nexa/nexa-bold-webfont.eot"); src: url("../fnt/nexa/nexa-bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fnt/nexa/nexa-bold-webfont.woff2") format("woff2"), url("../fnt/nexa/nexa-bold-webfont.woff") format("woff"), url("../fnt/nexa/nexa-bold-webfont.ttf") format("truetype"), url("../fnt/nexa/nexa-bold-webfont.svg#nexa_boldregular") format("svg"); font-weight: normal; font-style: normal; } @font-face { font-family: 'Open Sans Regular'; src: url("../fnt/open-sans/opensans-regular-webfont.eot"); src: url("../fnt/open-sans/opensans-regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fnt/open-sans/opensans-regular-webfont.woff2") format("woff2"), url("../fnt/open-sans/opensans-regular-webfont.woff") format("woff"), url("../fnt/open-sans/opensans-regular-webfont.ttf") format("truetype"), url("../fnt/open-sans/opensans-regular-webfont.svg#open_sansregular") format("svg"); font-weight: normal; font-style: normal; } @font-face { font-family: 'Open Sans Semibold'; src: url("../fnt/open-sans/opensans-semibold-webfont.eot"); src: url("../fnt/open-sans/opensans-semibold-webfont.eot?#iefix") format("embedded-opentype"), url("../fnt/open-sans/opensans-semibold-webfont.woff2") format("woff2"), url("../fnt/open-sans/opensans-semibold-webfont.woff") format("woff"), url("../fnt/open-sans/opensans-semibold-webfont.ttf") format("truetype"), url("../fnt/open-sans/opensans-semibold-webfont.svg#open_sanssemibold") format("svg"); font-weight: normal; font-style: normal; } @font-face { font-family: 'Roboto Bold'; src: url("../fnt/roboto/roboto-bold-webfont.eot"); src: url("../fnt/roboto/roboto-bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fnt/roboto/roboto-bold-webfont.woff2") format("woff2"), url("../fnt/roboto/roboto-bold-webfont.woff") format("woff"), url("../fnt/roboto/roboto-bold-webfont.ttf") format("truetype"), url("../fnt/roboto/roboto-bold-webfont.svg#robotobold") format("svg"); font-weight: normal; font-style: normal; } @font-face { font-family: 'Roboto Regular'; src: url("../fnt/roboto/roboto-regular-webfont.eot"); src: url("../fnt/roboto/roboto-regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fnt/roboto/roboto-regular-webfont.woff2") format("woff2"), url("../fnt/roboto/roboto-regular-webfont.woff") format("woff"), url("../fnt/roboto/roboto-regular-webfont.ttf") format("truetype"), url("../fnt/roboto/roboto-regular-webfont.svg#robotoregular") format("svg"); font-weight: normal; font-style: normal; } .main-app { background-image: url("../img/Background_Shrine.jpg"); background-size: cover; background-color: transparent; background-attachment: fixed; width: 100%; height: 100%; width: calc(100vw); height: calc(100vh); min-width: 100%; min-height: 100%; } .shrine-navbar { background-color: rgba(255, 255, 255, 0.62); border-color: transparent; font-family: "Nexa"; color: #5d5d5d; min-height: 60px; width: 100%; height: 4.8em; } .shrine-brand { float: left; padding: 22px 15px; font-size: 30px; line-height: 30px; height: 30px; } .shrine-brand strong { font-family: "Nexa Bold"; color: #2c5566; } .shrine-navbar .shrine-institution-logo { background-image: url("/static/logo.png"); background-size: contain; background-color: transparent; background-color: rgba(255, 255, 255, 0.1); background-repeat: no-repeat; background-position: right top; margin-right: 2%; margin-top: 5px; width: 4em; height: 4em; max-height: 4em; max-width: 4em; } .shrine-button { cursor: pointer !important; background-color: transparent; border: none; } .shrine-button span { position: relative; bottom: 5px; } .shrine-btn-default { margin-right: 6px; border: none; } .shrine-btn-on { padding: 12px 12px; border-radius: 0; font-family: "Roboto Bold" !important; color: #FFFFFF !important; background: linear-gradient(rgba(4, 141, 190, 0.8), rgba(2, 89, 120, 0.8)), url("../img/bckg_diagonal_lines_no_border.png") !important; } .shrine-btn-off { padding: 6px 12px !important; border-radius: 4px !important; font-family: "Open Sans Semibold" !important; background-color: #8896A4 !important; color: #FFFFFF !important; } .shrine-on, .shrine-on a { font-family: "Roboto Bold" !important; color: #FFFFFF !important; background: linear-gradient(#048DBE, #025978) !important; } .shrine-off { font-family: "Roboto Regular" !important; color: #2C5566 !important; background-color: #ECEEEE !important; } .shrine-button.disabled, .shrine-button[disabled] { cursor: default !important; opacity: 0.2 !important; } .shrine-copy-bold { font-family: "Nexa Bold"; color: #64818e; } .shrine-copy { font-family: "Nexa"; color: #000000; } .row { margin-right: 0; margin-left: 0; } td.error, span.error { color: red; } td.error a, td.error a:hover, span.error a, span.error a:hover { color: inherit; text-decoration: underline !important; cursor: pointer; } td.ok, span.ok { color: green; } .form-group span { font-family: "Open Sans Semibold"; color: #2c5566; } fieldset button { color: #2E5366; } fieldset button:hover, form a:hover { color: #008CBA; text-decoration: none; cursor: pointer; } form a { font-family: "Open Sans Regular"; color: #647d8d; text-decoration: none; } footer img { margin-left: 10px; margin-top: 2px; } footer { background-color: rgba(50, 62, 74, 0.48); position: fixed; bottom: 0; left: 0; width: 100%; height: 83px; min-height: 83px; max-width: 100%; } table { background-image: url("../img/bckg_diagonal_lines_no_border.png"); border: 1px solid #CCD8DF; } .table tr > td:first-child { width: 20%; min-width: 140px; } .table tr > td.thin-col { width: 6%; min-width: 35px; } .table-striped > tbody > tr:nth-of-type(odd) { background-color: #EFF6F9; } .table-striped > tbody > tr:nth-of-type(even) { background-color: #FFFFFF; } thead tr { border: 1px solid #CCD8DF; } td { border-right: 1px solid #CCD8DF; overflow: hidden; max-width: 450px; word-break: break-all; } thead tr td, thead tr td label, tfoot tr td span { font-family: "Open Sans Semibold"; color: #003153; } td a, td a:hover { text-decoration: none !important; cursor: pointer; font-family: "Open Sans Semibold"; color: #003153; } .shrine-panel { background-image: url("../img/bckg_diagonal_lines.png"); background-size: 100% 100%; padding-right: 20px; padding-left: 20px; padding-top: 30px; - padding-bottom: 30px; } + padding-bottom: 30px; + width: 100%; + margin-left: 30%; } /*! * Start Bootstrap - SB Admin 2 Bootstrap Admin Theme (http://startbootstrap.com) * Code licensed under the Apache License v2.0. * For details, see http://www.apache.org/licenses/LICENSE-2.0. */ body { background-image: url("../img/Background_Shrine.jpg"); background-repeat: no-repeat; background-size: 100% 100%; } #wrapper { width: 100%; padding-bottom: 83px; /* clearance space for footer at bottom of long page */ } .login-wrapper { margin-top: 51px; margin-right: 20px; } #page-wrapper { background-color: transparent; margin-top: 54px; margin-right: 20px; } .navbar-top-links li { display: inline-block; } .navbar-top-links li:last-child { margin-right: 15px; } .navbar-top-links li a { padding: 15px; min-height: 50px; font-family: "Open Sans Semibold"; color: #2c5566; } .navbar-top-links .dropdown-menu li { font-family: "Open Sans Semibold"; color: #2c5566; display: block; } .navbar-top-links .dropdown-menu li:last-child { margin-right: 0; } .navbar-top-links .dropdown-menu li a { padding: 3px 20px; min-height: 0; } .navbar-top-links .dropdown-menu li a div { white-space: normal; } .navbar-top-links .dropdown-messages, .navbar-top-links .dropdown-tasks, .navbar-top-links .dropdown-alerts { width: 310px; min-width: 0; } .navbar-top-links .dropdown-messages { margin-left: 5px; } .navbar-top-links .dropdown-tasks { margin-left: -59px; } .navbar-top-links .dropdown-alerts { margin-left: -123px; } .navbar-top-links { right: 0; left: auto; } .sidebar .sidebar-nav.navbar-collapse { padding-right: 0; padding-left: 0; } .sidebar .sidebar-search { padding: 15px; } .sidebar ul li { border-bottom: 1px solid #e7e7e7; } .sidebar ul li a.active { background-color: #eee; } .sidebar .arrow { float: right; } .sidebar .fa.arrow:before { content: "\f104"; } .sidebar .active > a > .fa.arrow:before { content: "\f107"; } .sidebar .nav-second-level li, .sidebar .nav-third-level li { border-bottom: 0 !important; } .sidebar .nav-second-level li a { padding-left: 37px; } .sidebar .nav-third-level li a { padding-left: 52px; } @media (min-width: 768px) { .sidebar { z-index: 1; margin-top: 51px; } .navbar-top-links .dropdown-messages, .navbar-top-links .dropdown-tasks, .navbar-top-links .dropdown-alerts { margin-left: auto; } } .btn-outline { color: inherit; background-color: transparent; transition: all .5s; } .btn-primary.btn-outline { color: #428bca; } .btn-success.btn-outline { color: #5cb85c; } .btn-info.btn-outline { color: #5bc0de; } .btn-warning.btn-outline { color: #f0ad4e; } .btn-danger.btn-outline { color: #d9534f; } .btn-primary.btn-outline:hover, .btn-success.btn-outline:hover, .btn-info.btn-outline:hover, .btn-warning.btn-outline:hover, .btn-danger.btn-outline:hover { color: #fff; } .chat { margin: 0; padding: 0; list-style: none; } .chat li { margin-bottom: 10px; padding-bottom: 5px; border-bottom: 1px dotted #999; } .chat li.left .chat-body { margin-left: 60px; } .chat li.right .chat-body { margin-right: 60px; } .chat li .chat-body p { margin: 0; } .panel .slidedown .glyphicon, .chat .glyphicon { margin-right: 5px; } .chat-panel .panel-body { height: 350px; overflow-y: scroll; } .login-panel { margin-top: 25%; } .flot-chart { display: block; height: 400px; } .flot-chart-content { width: 100%; height: 100%; } .dataTables_wrapper { position: relative; clear: both; } table.dataTable thead .sorting, table.dataTable thead .sorting_asc, table.dataTable thead .sorting_desc, table.dataTable thead .sorting_asc_disabled, table.dataTable thead .sorting_desc_disabled { background: 0 0; } table.dataTable thead .sorting_asc:after { content: "\f0de"; float: right; font-family: fontawesome; } table.dataTable thead .sorting_desc:after { content: "\f0dd"; float: right; font-family: fontawesome; } table.dataTable thead .sorting:after { content: "\f0dc"; float: right; font-family: fontawesome; color: rgba(50, 50, 50, 0.5); } .btn-circle { width: 30px; height: 30px; padding: 6px 0; border-radius: 15px; text-align: center; font-size: 12px; line-height: 1.428571429; } .btn-circle.btn-lg { width: 50px; height: 50px; padding: 10px 16px; border-radius: 25px; font-size: 18px; line-height: 1.33; } .btn-circle.btn-xl { width: 70px; height: 70px; padding: 10px 16px; border-radius: 35px; font-size: 24px; line-height: 1.33; } .show-grid [class^=col-] { padding-top: 10px; padding-bottom: 10px; border: 1px solid #ddd; background-color: #eee !important; } .show-grid { margin: 15px 0; } .huge { font-size: 40px; } .panel-green { border-color: #5cb85c; } .panel-green .panel-heading { border-color: #5cb85c; color: #fff; background-color: #5cb85c; } .panel-green a { color: #5cb85c; } .panel-green a:hover { color: #3d8b3d; } .panel-red { border-color: #d9534f; } .panel-red .panel-heading { border-color: #d9534f; color: #fff; background-color: #d9534f; } .panel-red a { color: #d9534f; } .panel-red a:hover { color: #b52b27; } .panel-yellow { border-color: #f0ad4e; } .panel-yellow .panel-heading { border-color: #f0ad4e; color: #fff; background-color: #f0ad4e; } .panel-yellow a { color: #f0ad4e; } .panel-yellow a:hover { color: #df8a13; } .modal-content { border: none; } .shrine-modal { background-color: white; border: 1px solid #2c5566; font-family: "Open Sans Semibold"; color: #2e5366; padding: 15px; } .shrine-modal form div.col-sm-12 { border: 1px solid rgba(2, 89, 120, 0.8); } .shrine-modal input, .shrine-modal textarea { border-radius: 0px; border: 1px solid #2c5566; } .shrine-modal span { font-family: "Nexa Bold"; color: #2e5366; } .shrine-modal span:hover { font-family: "Nexa Bold"; color: #008CBA; } .shrine-modal button { background-color: white; border: none; font-family: "Nexa Bold"; color: #2e5366; } .shrine-modal button span { position: relative; bottom: 6px; } .shrine-modal button:hover, .btn-success { font-family: "Nexa Bold"; color: #008CBA; background-color: transparent; border: none; } .shrine-login { margin-top: 8%; margin-left: 1%; } .shrine-content { overflow: auto; } /*Fix for resizeable text area.*/ textarea { resize: none; } @media (min-width: 768px) { .shrine-content { padding: 0; } } .shrine-calendar-input { margin-right: 1px; max-width: 50%; } i.shrine-close { float: right; margin-top: -40px; margin-right: -40px; cursor: pointer; color: #fff; border: 2px solid #C8CED1; border-radius: 30px; background: #8896a4; font-size: 31px; font-weight: normal; display: inline-block; line-height: 0px; padding: 11px 3px; font-style: normal; } i.shrine-close:hover { background: #008cba; } .shrine-close:before { content: "×"; } diff --git a/apps/steward-app/src/main/js/app/assets/css/shrine.css b/apps/steward-app/src/main/js/app/assets/css/shrine.css index f64be8915..9277c2c03 100644 --- a/apps/steward-app/src/main/js/app/assets/css/shrine.css +++ b/apps/steward-app/src/main/js/app/assets/css/shrine.css @@ -1,1147 +1,1149 @@ @charset "UTF-8"; /* import timeline.scss */ @font-face { font-family: 'Nexa'; src: url("../fnt/nexa/nexa-light-webfont.eot"); src: url("../fnt/nexa/nexa-light-webfont.eot?#iefix") format("embedded-opentype"), url("../fnt/nexa/nexa-light-webfont.woff2") format("woff2"), url("../fnt/nexa/nexa-light-webfont.woff") format("woff"), url("../fnt/nexa/nexa-light-webfont.ttf") format("truetype"), url("../fnt/nexa/nexa-light-webfont.svg#nexa_lightregular") format("svg"); font-weight: normal; font-style: normal; } @font-face { font-family: 'Nexa Bold'; src: url("../fnt/nexa/nexa-bold-webfont.eot"); src: url("../fnt/nexa/nexa-bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fnt/nexa/nexa-bold-webfont.woff2") format("woff2"), url("../fnt/nexa/nexa-bold-webfont.woff") format("woff"), url("../fnt/nexa/nexa-bold-webfont.ttf") format("truetype"), url("../fnt/nexa/nexa-bold-webfont.svg#nexa_boldregular") format("svg"); font-weight: normal; font-style: normal; } @font-face { font-family: 'Open Sans Regular'; src: url("../fnt/open-sans/opensans-regular-webfont.eot"); src: url("../fnt/open-sans/opensans-regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fnt/open-sans/opensans-regular-webfont.woff2") format("woff2"), url("../fnt/open-sans/opensans-regular-webfont.woff") format("woff"), url("../fnt/open-sans/opensans-regular-webfont.ttf") format("truetype"), url("../fnt/open-sans/opensans-regular-webfont.svg#open_sansregular") format("svg"); font-weight: normal; font-style: normal; } @font-face { font-family: 'Open Sans Semibold'; src: url("../fnt/open-sans/opensans-semibold-webfont.eot"); src: url("../fnt/open-sans/opensans-semibold-webfont.eot?#iefix") format("embedded-opentype"), url("../fnt/open-sans/opensans-semibold-webfont.woff2") format("woff2"), url("../fnt/open-sans/opensans-semibold-webfont.woff") format("woff"), url("../fnt/open-sans/opensans-semibold-webfont.ttf") format("truetype"), url("../fnt/open-sans/opensans-semibold-webfont.svg#open_sanssemibold") format("svg"); font-weight: normal; font-style: normal; } @font-face { font-family: 'Roboto Bold'; src: url("../fnt/roboto/roboto-bold-webfont.eot"); src: url("../fnt/roboto/roboto-bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fnt/roboto/roboto-bold-webfont.woff2") format("woff2"), url("../fnt/roboto/roboto-bold-webfont.woff") format("woff"), url("../fnt/roboto/roboto-bold-webfont.ttf") format("truetype"), url("../fnt/roboto/roboto-bold-webfont.svg#robotobold") format("svg"); font-weight: normal; font-style: normal; } @font-face { font-family: 'Roboto Regular'; src: url("../fnt/roboto/roboto-regular-webfont.eot"); src: url("../fnt/roboto/roboto-regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fnt/roboto/roboto-regular-webfont.woff2") format("woff2"), url("../fnt/roboto/roboto-regular-webfont.woff") format("woff"), url("../fnt/roboto/roboto-regular-webfont.ttf") format("truetype"), url("../fnt/roboto/roboto-regular-webfont.svg#robotoregular") format("svg"); font-weight: normal; font-style: normal; } .main-app { background-image: url("../img/Background_Shrine.jpg"); background-size: cover; background-color: transparent; background-attachment: fixed; width: 100%; height: 100%; width: calc(100vw); height: calc(100vh); min-width: 100%; min-height: 100%; } .shrine-navbar { background-color: rgba(255, 255, 255, 0.62); border-color: transparent; font-family: "Nexa"; color: #5d5d5d; min-height: 60px; width: 100%; height: 4.8em; } .shrine-brand { float: left; padding: 22px 15px; font-size: 30px; line-height: 30px; height: 30px; } .shrine-brand strong { font-family: "Nexa Bold"; color: #2c5566; } .shrine-navbar .shrine-institution-logo { background-image: url("/static/logo.png"); background-size: contain; background-color: transparent; background-color: rgba(255, 255, 255, 0.1); background-repeat: no-repeat; background-position: right top; margin-right: 2%; margin-top: 5px; width: 4em; height: 4em; max-height: 4em; max-width: 4em; } .shrine-button { cursor: pointer !important; background-color: transparent; border: none; } .shrine-button span { position: relative; bottom: 5px; } .shrine-btn-default { margin-right: 6px; border: none; } .shrine-btn-on { padding: 12px 12px; border-radius: 0; font-family: "Roboto Bold" !important; color: #FFFFFF !important; background: linear-gradient(rgba(4, 141, 190, 0.8), rgba(2, 89, 120, 0.8)), url("../img/bckg_diagonal_lines_no_border.png") !important; } .shrine-btn-off { padding: 6px 12px !important; border-radius: 4px !important; font-family: "Open Sans Semibold" !important; background-color: #8896A4 !important; color: #FFFFFF !important; } .shrine-on, .shrine-on a { font-family: "Roboto Bold" !important; color: #FFFFFF !important; background: linear-gradient(#048DBE, #025978) !important; } .shrine-off { font-family: "Roboto Regular" !important; color: #2C5566 !important; background-color: #ECEEEE !important; } .shrine-button.disabled, .shrine-button[disabled] { cursor: default !important; opacity: 0.2 !important; } .shrine-copy-bold { font-family: "Nexa Bold"; color: #64818e; } .shrine-copy { font-family: "Nexa"; color: #000000; } .row { margin-right: 0; margin-left: 0; } td.error, span.error { color: red; } td.error a, td.error a:hover, span.error a, span.error a:hover { color: inherit; text-decoration: underline !important; cursor: pointer; } td.ok, span.ok { color: green; } .form-group span { font-family: "Open Sans Semibold"; color: #2c5566; } fieldset button { color: #2E5366; } fieldset button:hover, form a:hover { color: #008CBA; text-decoration: none; cursor: pointer; } form a { font-family: "Open Sans Regular"; color: #647d8d; text-decoration: none; } footer img { margin-left: 10px; margin-top: 2px; } footer { background-color: rgba(50, 62, 74, 0.48); position: fixed; bottom: 0; left: 0; width: 100%; height: 83px; min-height: 83px; max-width: 100%; } table { background-image: url("../img/bckg_diagonal_lines_no_border.png"); border: 1px solid #CCD8DF; } .table tr > td:first-child { width: 20%; min-width: 140px; } .table tr > td.thin-col { width: 6%; min-width: 35px; } .table-striped > tbody > tr:nth-of-type(odd) { background-color: #EFF6F9; } .table-striped > tbody > tr:nth-of-type(even) { background-color: #FFFFFF; } thead tr { border: 1px solid #CCD8DF; } td { border-right: 1px solid #CCD8DF; overflow: hidden; max-width: 450px; word-break: break-all; } thead tr td, thead tr td label, tfoot tr td span { font-family: "Open Sans Semibold"; color: #003153; } td a, td a:hover { text-decoration: none !important; cursor: pointer; font-family: "Open Sans Semibold"; color: #003153; } .shrine-panel { background-image: url("../img/bckg_diagonal_lines.png"); background-size: 100% 100%; padding-right: 20px; padding-left: 20px; padding-top: 30px; - padding-bottom: 30px; } + padding-bottom: 30px; + width: 100%; + margin-left: 30%; } /*! * Start Bootstrap - SB Admin 2 Bootstrap Admin Theme (http://startbootstrap.com) * Code licensed under the Apache License v2.0. * For details, see http://www.apache.org/licenses/LICENSE-2.0. */ body { background-image: url("../img/Background_Shrine.jpg"); background-repeat: no-repeat; background-size: 100% 100%; } #wrapper { width: 100%; padding-bottom: 83px; /* clearance space for footer at bottom of long page */ } .login-wrapper { margin-top: 51px; margin-right: 20px; } #page-wrapper { background-color: transparent; margin-top: 54px; margin-right: 20px; } .navbar-top-links li { display: inline-block; } .navbar-top-links li:last-child { margin-right: 15px; } .navbar-top-links li a { padding: 15px; min-height: 50px; font-family: "Open Sans Semibold"; color: #2c5566; } .navbar-top-links .dropdown-menu li { font-family: "Open Sans Semibold"; color: #2c5566; display: block; } .navbar-top-links .dropdown-menu li:last-child { margin-right: 0; } .navbar-top-links .dropdown-menu li a { padding: 3px 20px; min-height: 0; } .navbar-top-links .dropdown-menu li a div { white-space: normal; } .navbar-top-links .dropdown-messages, .navbar-top-links .dropdown-tasks, .navbar-top-links .dropdown-alerts { width: 310px; min-width: 0; } .navbar-top-links .dropdown-messages { margin-left: 5px; } .navbar-top-links .dropdown-tasks { margin-left: -59px; } .navbar-top-links .dropdown-alerts { margin-left: -123px; } .navbar-top-links { right: 0; left: auto; } .sidebar .sidebar-nav.navbar-collapse { padding-right: 0; padding-left: 0; } .sidebar .sidebar-search { padding: 15px; } .sidebar ul li { border-bottom: 1px solid #e7e7e7; } .sidebar ul li a.active { background-color: #eee; } .sidebar .arrow { float: right; } .sidebar .fa.arrow:before { content: "\f104"; } .sidebar .active > a > .fa.arrow:before { content: "\f107"; } .sidebar .nav-second-level li, .sidebar .nav-third-level li { border-bottom: 0 !important; } .sidebar .nav-second-level li a { padding-left: 37px; } .sidebar .nav-third-level li a { padding-left: 52px; } @media (min-width: 768px) { .sidebar { z-index: 1; margin-top: 51px; } .navbar-top-links .dropdown-messages, .navbar-top-links .dropdown-tasks, .navbar-top-links .dropdown-alerts { margin-left: auto; } } .btn-outline { color: inherit; background-color: transparent; transition: all .5s; } .btn-primary.btn-outline { color: #428bca; } .btn-success.btn-outline { color: #5cb85c; } .btn-info.btn-outline { color: #5bc0de; } .btn-warning.btn-outline { color: #f0ad4e; } .btn-danger.btn-outline { color: #d9534f; } .btn-primary.btn-outline:hover, .btn-success.btn-outline:hover, .btn-info.btn-outline:hover, .btn-warning.btn-outline:hover, .btn-danger.btn-outline:hover { color: #fff; } .chat { margin: 0; padding: 0; list-style: none; } .chat li { margin-bottom: 10px; padding-bottom: 5px; border-bottom: 1px dotted #999; } .chat li.left .chat-body { margin-left: 60px; } .chat li.right .chat-body { margin-right: 60px; } .chat li .chat-body p { margin: 0; } .panel .slidedown .glyphicon, .chat .glyphicon { margin-right: 5px; } .chat-panel .panel-body { height: 350px; overflow-y: scroll; } .login-panel { margin-top: 25%; } .flot-chart { display: block; height: 400px; } .flot-chart-content { width: 100%; height: 100%; } .dataTables_wrapper { position: relative; clear: both; } table.dataTable thead .sorting, table.dataTable thead .sorting_asc, table.dataTable thead .sorting_desc, table.dataTable thead .sorting_asc_disabled, table.dataTable thead .sorting_desc_disabled { background: 0 0; } table.dataTable thead .sorting_asc:after { content: "\f0de"; float: right; font-family: fontawesome; } table.dataTable thead .sorting_desc:after { content: "\f0dd"; float: right; font-family: fontawesome; } table.dataTable thead .sorting:after { content: "\f0dc"; float: right; font-family: fontawesome; color: rgba(50, 50, 50, 0.5); } .btn-circle { width: 30px; height: 30px; padding: 6px 0; border-radius: 15px; text-align: center; font-size: 12px; line-height: 1.428571429; } .btn-circle.btn-lg { width: 50px; height: 50px; padding: 10px 16px; border-radius: 25px; font-size: 18px; line-height: 1.33; } .btn-circle.btn-xl { width: 70px; height: 70px; padding: 10px 16px; border-radius: 35px; font-size: 24px; line-height: 1.33; } .show-grid [class^=col-] { padding-top: 10px; padding-bottom: 10px; border: 1px solid #ddd; background-color: #eee !important; } .show-grid { margin: 15px 0; } .huge { font-size: 40px; } .panel-green { border-color: #5cb85c; } .panel-green .panel-heading { border-color: #5cb85c; color: #fff; background-color: #5cb85c; } .panel-green a { color: #5cb85c; } .panel-green a:hover { color: #3d8b3d; } .panel-red { border-color: #d9534f; } .panel-red .panel-heading { border-color: #d9534f; color: #fff; background-color: #d9534f; } .panel-red a { color: #d9534f; } .panel-red a:hover { color: #b52b27; } .panel-yellow { border-color: #f0ad4e; } .panel-yellow .panel-heading { border-color: #f0ad4e; color: #fff; background-color: #f0ad4e; } .panel-yellow a { color: #f0ad4e; } .panel-yellow a:hover { color: #df8a13; } .modal-content { border: none; } .shrine-modal { background-color: white; border: 1px solid #2c5566; font-family: "Open Sans Semibold"; color: #2e5366; padding: 15px; } .shrine-modal form div.col-sm-12 { border: 1px solid rgba(2, 89, 120, 0.8); } .shrine-modal input, .shrine-modal textarea { border-radius: 0px; border: 1px solid #2c5566; } .shrine-modal span { font-family: "Nexa Bold"; color: #2e5366; } .shrine-modal span:hover { font-family: "Nexa Bold"; color: #008CBA; } .shrine-modal button { background-color: white; border: none; font-family: "Nexa Bold"; color: #2e5366; } .shrine-modal button span { position: relative; bottom: 6px; } .shrine-modal button:hover, .btn-success { font-family: "Nexa Bold"; color: #008CBA; background-color: transparent; border: none; } .shrine-login { margin-top: 8%; margin-left: 1%; } .shrine-content { overflow: auto; } /*Fix for resizeable text area.*/ textarea { resize: none; } @media (min-width: 768px) { .shrine-content { padding: 0; } } .shrine-calendar-input { margin-right: 1px; max-width: 50%; } i.shrine-close { float: right; margin-top: -40px; margin-right: -40px; cursor: pointer; color: #fff; border: 2px solid #C8CED1; border-radius: 30px; background: #8896a4; font-size: 31px; font-weight: normal; display: inline-block; line-height: 0px; padding: 11px 3px; font-style: normal; } i.shrine-close:hover { background: #008cba; } .shrine-close:before { content: "×"; } .timeline { position: relative; padding: 20px 0 20px; list-style: none; } .timeline:before { content: " "; position: absolute; top: 0; bottom: 0; left: 50%; width: 3px; margin-left: -1.5px; background-color: #eeeeee; } .timeline > li { position: relative; margin-bottom: 20px; } .timeline > li:before, .timeline > li:after { content: " "; display: table; } .timeline > li:after { clear: both; } .timeline > li:before, .timeline > li:after { content: " "; display: table; } .timeline > li:after { clear: both; } .timeline > li > .timeline-panel { float: left; position: relative; width: 46%; padding: 20px; border: 1px solid #d4d4d4; border-radius: 2px; -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175); box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175); } .timeline > li > .timeline-panel:before { content: " "; display: inline-block; position: absolute; top: 26px; right: -15px; border-top: 15px solid transparent; border-right: 0 solid #ccc; border-bottom: 15px solid transparent; border-left: 15px solid #ccc; } .timeline > li > .timeline-panel:after { content: " "; display: inline-block; position: absolute; top: 27px; right: -14px; border-top: 14px solid transparent; border-right: 0 solid #fff; border-bottom: 14px solid transparent; border-left: 14px solid #fff; } .timeline > li > .timeline-badge { z-index: 100; position: absolute; top: 16px; left: 50%; width: 50px; height: 50px; margin-left: -25px; border-radius: 50% 50% 50% 50%; text-align: center; font-size: 1.4em; line-height: 50px; color: #fff; background-color: #999999; } .timeline > li.timeline-inverted > .timeline-panel { float: right; } .timeline > li.timeline-inverted > .timeline-panel:before { right: auto; left: -15px; border-right-width: 15px; border-left-width: 0; } .timeline > li.timeline-inverted > .timeline-panel:after { right: auto; left: -14px; border-right-width: 14px; border-left-width: 0; } .timeline-badge.primary { background-color: #2e6da4 !important; } .timeline-badge.success { background-color: #3f903f !important; } .timeline-badge.warning { background-color: #f0ad4e !important; } .timeline-badge.danger { background-color: #d9534f !important; } .timeline-badge.info { background-color: #5bc0de !important; } .timeline-title { margin-top: 0; color: inherit; } .timeline-body > p, .timeline-body > ul { margin-bottom: 0; } .timeline-body > p + p { margin-top: 5px; } @media (max-width: 767px) { ul.timeline:before { left: 40px; } ul.timeline > li > .timeline-panel { width: calc(100% - 90px); width: -moz-calc(100% - 90px); width: -webkit-calc(100% - 90px); } ul.timeline > li > .timeline-badge { top: 16px; left: 15px; margin-left: 0; } ul.timeline > li > .timeline-panel { float: right; } ul.timeline > li > .timeline-panel:before { right: auto; left: -15px; border-right-width: 15px; border-left-width: 0; } ul.timeline > li > .timeline-panel:after { right: auto; left: -14px; border-right-width: 14px; border-left-width: 0; } } /* -- stats-graph styles -- */ .stats-minimized, .stats-graph-minimized, .stats-ontology-minimized { cursor: pointer; opacity: .7; } .stats-minimized:hover, .stats-graph-minimized:hover, .stats-ontology-minimized:hover { border: 1px solid white; opacity: 1; } .stats-graph-minimized { transform: translate(60%, -20%) scale(0.1, 0.25); } .stats-ontology-minimized { transform: translate(60%, 0%) scale(0.1, 0.25); } .stats-stage-base, .stats-graph-container, .stats-ontology-container { padding-bottom: 0px; padding-top: 0px; color: white; margin: 0 auto; width: 100%; } .stats-graph-container { border-bottom: none; overflow: hidden; padding-top: .6em; } .stats-ontology-container { overflow: auto; height: 100vh; } .stats-graph-container .bar-bg { background-color: white; height: 30px; margin: 0 auto 10px auto; line-height: 30px; font-size: 16px; font-family: Roboto, sans-serif; font-weight: 100; color: white; padding: 0 0 0 10px; position: relative; } .stats-graph-container .bar-bg .user { position: absolute; z-index: 4; left: .2em; } .stats-graph-container .bar-bg .bar { opacity: .8; z-index: 1; background-color: #125c8a; border: 1px solid #1c8ed6; height: 30px; transition: 0.7s; width: 100%; display: block; animation: stats-bar-before 1 1.8s; position: absolute; top: 0; left: 0; z-index: 2; padding-right: 8px; text-align: right; } .stats-graph-container .bar-bg .bar:hover { background: rgba(0, 0, 0, 0.5); cursor: pointer; } @keyframes stats-bar-before { 0% { width: 0px; } 100% { width: 100%; } } .digest ul { top: 15rem; left: 5rem; float: left; clear: left; margin: .25em; padding: 0; } .digest ul::before { display: none; } .digest ul li { display: block; position: relative; float: left; clear: both; right: auto; padding-left: 1em; width: auto; text-align: center; color: white; animation: showterm .25s; } .digest ul li a { display: block; position: relative; float: left; z-index: 4; margin: .25em; padding: .25em; background: white; color: #C0C0C0; border: 2px solid #94a0b4; border-radius: .5rem; transition: all .75s; font-weight: 300; font-family: sans-serif; } .digest .expandable { position: absolute; z-index: 4; top: 0; left: -.5em; margin: .65em; padding: 0; width: .8em; height: .8em; text-align: center; line-height: .6em; font-size: 1em; background-color: white; color: #C0C0C0; border: 1px solid #94a0b4; border-radius: .25rem; } .digest > ul { position: relative; font-family: "Georgia"; } .digest > ul:before { left: .5em; } .digest > ul:after { display: none; } @keyframes showterm { 0% { top: -.5rem; opacity: 0; } 100% { top: 0rem; opacity: 1; } } ul:after { color: blue; border: solid gray 1px; border-radius: .1em; } ul > li > a { color: blue; background: white; } .digest li span.expandable:hover, .digest li span.expandable:hover + a, .digest li span.expandable:hover + a + ul li a, .digest li a:hover, .digest li a:hover + ul li a { background: rgba(50, 130, 136, 0) !important; color: #fff; cursor: pointer; z-index: 1000; text-decoration: none; } .digest li a:hover + ul li::after, .digest li a:hover + ul li::before, .digest li a:hover + ul::before, .digest li a:hover + ul ul::before { border-color: #99C794 !important; } /* color settings */ a { font-family: "Roboto", sans-serif; font-size: 14px; font-weight: 400; line-height: 1.5em; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; color: #000000; } .red { background: rgba(158, 56, 68, 0.5) !important; border: 1px solid #9e3844 !important; } .dark-red { background: rgba(236, 95, 103, 0.5) !important; border: 1px solid #EC5F67 !important; } .dark-blue { background: rgba(53, 105, 151, 0.75) !important; border: 1px solid #6699CC !important; } .blue { background: rgba(102, 153, 204, 0.25) !important; border: 1px solid #6699CC !important; } .purple { background: rgba(197, 148, 197, 0.5) !important; border: 1px solid #C594C0 !important; } .ont-hidden { margin: auto; position: fixed; top: 100px; left: 0; right: 0; width: 50%; max-width: 630px; min-width: 320px; opacity: 0; height: auto; z-index: 2000; visibility: hidden; -webkit-backface-visibility: hidden; -moz-backface-visibility: hidden; backface-visibility: hidden; } .ont-overlay { position: fixed; width: 100%; height: 100%; visibility: visible; top: 0; left: 0; z-index: 2000; opacity: 1; background: rgba(0, 0, 0, 0.9); -webkit-transition: all 0.3s; -moz-transition: all 0.3s; transition: all 0.1s; } button.ont-close { display: block; background: transparent; color: #c0c0c0; right: 2%; top: 2%; position: absolute; border-radius: 9px; font-size: 20px; cursor: pointer; border: none; } button.ont-close:hover { color: #fff; } .tooltip-toggle { cursor: pointer; position: relative; } .tooltip-toggle::before { border: 1px solid rgba(255, 255, 255, 0.8); position: absolute; top: -5rem; left: -3rem; background-color: rgba(0, 0, 0, 0.8); border-radius: 5px; color: #fff; content: attr(aria-label); padding: 1rem; text-transform: none; -webkit-transition: all 2s; transition: all 2s; width: 160px; } .tooltip-toggle::after { position: absolute; top: -.8rem; left: 5rem; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid white; content: " "; font-size: 0; line-height: 0; margin-left: -5px; width: 0; } .tooltip-toggle::before, .tooltip-toggle::after { color: #efefef; font-family: monospace; font-size: 16px; opacity: 0; pointer-events: none; text-align: center; } .tooltip-toggle:focus::before, .tooltip-toggle:focus::after, .tooltip-toggle:hover::before, .tooltip-toggle:hover::after { opacity: 1; -webkit-transition: all 2s; transition: all 2s; } .topic-dropdown { z-index: 20000; margin: 4rem; left: 0%; color: rgba(0, 0, 0, 0.87); font-family: "Roboto", sans-serif; font-size: 14px; font-weight: 300; line-height: 1.5em; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; position: fixed; } .topic-dropdown div.title { text-transform: uppercase; font-weight: 500; font-size: 1.3em; color: #63BCF8; } .topic-dropdown .tdd-btn { text-align: left; max-width: 1000px; outline: 0; /* takes care of blue outline */ display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; background: rgba(0, 0, 0, 0.75); border: 1px solid #63BCF8 !important; min-width: 400px; border: 0; border-radius: 4px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); box-sizing: border-box; padding: 16px 20px; color: #FFFFFF; font-size: 12px; font-weight: 300; letter-spacing: 1.2px; text-transform: uppercase; overflow: hidden; cursor: pointer; } .topic-dropdown .tdd-btn:hover { cursor: pointer; } .topic-dropdown .tdd-list { position: absolute; top: 100%; left: 0px; background: rgba(0, 0, 0, 0.75); border: 1px solid #63BCF8 !important; width: 100%; border-radius: 4px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); text-align: left; opacity: 0; visibility: hidden; -webkit-transition: 0.3s ease; transition: 0.3s ease; max-height: 75vh; overflow: auto; } .topic-dropdown .tdd-list a { display: block; border-bottom: 1px solid rgba(0, 0, 0, 0.05); padding: 16px 0; color: inherit; text-decoration: none; background: none !important; } .topic-dropdown .tdd-list:before { content: ''; position: absolute; top: -6px; left: 20px; width: 0; height: 0; box-shadow: 2px -2px 6px rgba(0, 0, 0, 0.05); border-top: 6px solid #63BCF8; border-right: 6px solid #63BCF8; border-bottom: 6px solid transparent; border-left: 6px solid transparent; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); mix-blend-mode: multiple; } .topic-dropdown .tdd-list li { z-index: 100; position: relative; padding: 0 20px; color: white; } .topic-dropdown .tdd-list li.active { color: #5380F7; } .topic-dropdown .tdd-list li:first-child { border-radius: 4px 4px 0 0; } .topic-dropdown .tdd-list li:last-child { border-radius: 0 0 4px 4px; } .topic-dropdown .tdd-list li:last-child a { border-bottom: 0; } .topic-dropdown .tdd-list-open { -webkit-transform: translate(0, 20px); transform: translate(0, 20px); opacity: 1 !important; visibility: visible !important; } .dropdown-arrow { content: ''; opacity: .8; position: absolute; right: 10px; top: 43px; width: 0; height: 0; box-shadow: 2px -2px 6px rgba(0, 0, 0, 0.05); border-top: 4px solid #63BCF8; border-right: 4px solid #63BCF8; border-bottom: 4px solid transparent; border-left: 4px solid transparent; -webkit-transform: rotate(-45deg); transform: rotate(135deg); } diff --git a/apps/steward-app/src/main/js/app/client/statistics/query-digest/topic-dropdown.js b/apps/steward-app/src/main/js/app/client/statistics/query-digest/topic-dropdown.js index 214f5cb5e..29cb73a29 100644 --- a/apps/steward-app/src/main/js/app/client/statistics/query-digest/topic-dropdown.js +++ b/apps/steward-app/src/main/js/app/client/statistics/query-digest/topic-dropdown.js @@ -1,57 +1,59 @@ (function () { 'use strict'; angular.module('shrine.steward.statistics') .directive('topicDropdown', TopicDropdownFactory); function TopicDropdownFactory() { var templateUrl = './app/client/statistics/' + 'query-digest/topic-dropdown.tpl.html'; var topicDropdown = { scope: { topics: '=', topicSelected: '&' }, restrict: 'E', controller: TopicDropdownController, link: TopicDropdownLinker, controllerAs: 'dropdown', templateUrl: templateUrl }; return topicDropdown; } TopicDropdownController.$inject = ['$scope', 'OntologyTermService']; function TopicDropdownController($scope, OntologyTermService) { var dropdown = this; dropdown.ontologyTermService = OntologyTermService; dropdown.topics = $scope.topics; dropdown.reset = reset; /** * Reset handler. */ function reset(events, data) { dropdown.selected = { title: 'All' }; + + dropdown.open = false; } } function TopicDropdownLinker(scope) { var clearTopicsWatch = scope.$watch('topics', function (after, before) { var dropdown = scope.dropdown; // -- listen for reset --// scope.$on('reset-digest', dropdown.reset); if (after && after.length) { dropdown.topics = after; } }); } })(); diff --git a/apps/steward-app/src/main/js/app/client/statistics/statistics-graph/statistics-graph.js b/apps/steward-app/src/main/js/app/client/statistics/statistics-graph/statistics-graph.js index dc589d0d8..ae33ae0a0 100644 --- a/apps/steward-app/src/main/js/app/client/statistics/statistics-graph/statistics-graph.js +++ b/apps/steward-app/src/main/js/app/client/statistics/statistics-graph/statistics-graph.js @@ -1,56 +1,55 @@ (function () { angular.module('shrine.steward.statistics') .directive('statisticsGraph', StatisticsGraphDirective); function StatisticsGraphDirective() { var templateUrl = './app/client/statistics/statistics-graph/' + 'statistics-graph.tpl.html'; var statisticsGraph = { restrict: 'E', templateUrl: templateUrl, controller: StatisticsGraphController, controllerAs: 'graph', link: StatisticsGraphLink, scope: { graphData: '=', graphClick: '&' /** todo pass in click handler. **/ } }; return statisticsGraph; } StatisticsGraphController.$inject = ['$scope', 'StatisticsGraphService']; function StatisticsGraphController($scope, svc) { var graph = this; - //graphService = svc; graph.graphData = $scope.graphData; graph.toPercentage = toPercentage; graph.formatuserName = formatuserName; graph.graphClick = $scope.graphClick; graph.clearUsers = svc.clearUsers; graph.formatuserName = formatuserName; function toPercentage(value) { var maxQueryCount = svc.getMaxUserQueryCount(graph.graphData.users) || 1; return svc.getCountAsPercentage(value, maxQueryCount); } function formatuserName(userName) { return svc.formatuserName(userName); } } StatisticsGraphLink.$inject = ['scope']; function StatisticsGraphLink(scope) { scope.$watch('graphData', function (before, after) { var graph = scope.graph; graph.graphData = scope.graphData; graph.clearUsers(); }); var test = arguments; } })(); \ No newline at end of file diff --git a/apps/steward-app/src/main/js/app/client/steward.controller.js b/apps/steward-app/src/main/js/app/client/steward.controller.js index 8cad1df3f..c4a5062b2 100644 --- a/apps/steward-app/src/main/js/app/client/steward.controller.js +++ b/apps/steward-app/src/main/js/app/client/steward.controller.js @@ -1,39 +1,29 @@ (function () { angular.module('shrine.steward') .controller('StewardController', StewardController); StewardController.$inject = ['$location','StewardService']; function StewardController($location, StewardService) { var steward = this; steward.isUserLoggedIn = StewardService.isUserLoggedIn; steward.getUsername = StewardService.getUsername; steward.getRole = StewardService.getRole; steward.isSteward = StewardService.isSteward; steward.showStewardMenuOptions = false; - setLoggedOutLayout(); steward.logout = logout; // -- set login callback. todo: investigate advantage of broadcaster instead. -- // StewardService.setLoginSubscriber(loginSubscriber); - function setLoggedInLayout() { - steward.layoutWidth = 10; - } - - function setLoggedOutLayout() { - steward.layoutWidth = 12; - } function logout() { - setLoggedOutLayout(); StewardService.logoutUser(); } function loginSubscriber(appUser) { steward.showStewardMenuOptions = steward.isSteward(); - setLoggedInLayout(); } } })(); diff --git a/apps/steward-app/src/main/js/app/client/topics/topics.controller.js b/apps/steward-app/src/main/js/app/client/topics/topics.controller.js index 7721f4b4b..1ffccfe6c 100644 --- a/apps/steward-app/src/main/js/app/client/topics/topics.controller.js +++ b/apps/steward-app/src/main/js/app/client/topics/topics.controller.js @@ -1,301 +1,303 @@ (function () { 'use strict'; angular .module('shrine.steward.topics') .controller('TopicsController', TopicsController); TopicsController.$inject = ['TopicsService', 'TopicsModel', '$uibModal', '$scope']; function TopicsController(TopicsService, TopicsModel, $uibModal, $scope) { // -- set up locals --// var topics = this; var model = TopicsModel; var service = TopicsService; var initialState = null; var modelUpdate = model.getStewardTopics; // -- todo: move to service ? --// // -- public -- // topics.sortData = { sortDirection: 'ascending', arrowClass: 'fa-caret-up', column: 'id', pageIndex: service.viewConfig.index, // -- current page number --// range: service.viewConfig.range, // -- range of paging numbers at bottom --// limit: service.viewConfig.limit, // -- number of results to show in table per page --// length: 0, // -- total number of topic results --// skip: 0, // -- number of results to skip --// state: service.states.state1 // -- pending, approved, rejected --// }; topics.showStewardMenu = service.isSteward(); topics.update = update; topics.dateFormatter = service.dateFormatter; topics.openTopic = openTopic; topics.createTopic = createTopic; topics.onPageSelected = onPageSelected; init(); - function setDefaultState() { + function setDefaultState(state) { // -- local vars -- // var sortData = topics.sortData; - sortData.state = service.states.state1; // -- pending, approved, rejected --// + sortData.state = state || service.states.state1; // -- pending, approved, rejected --// sortData.sortDirection = 'ascending'; sortData.arrowClass = 'fa-caret-up'; sortData.column = 'changeDate'; sortData.pageIndex = service.viewConfig.index; // -- current page number --// sortData.range = service.viewConfig.range; // -- range of paging numbers at bottom --// sortData.limit = service.viewConfig.limit; // -- number of results to show in table per page --// sortData.length = 0; // -- total number of topic results --// sortData.skip = 0; // -- number of results to skip --// if (!topics.showStewardMenu) { modelUpdate = model.getResearcherTopics; sortData.state = undefined; } } function toggleSort(column) { var sortData = topics.sortData; //change direction if same column is clicked. if (sortData.column === column) { // -- todo, dislike nested ifs --// if (topics.sortData.sortDirection !== 'ascending') { topics.sortData.sortDirection = 'ascending'; topics.sortData.arrowClass = 'fa-caret-up'; } else { topics.sortData.sortDirection = 'descending'; topics.sortData.arrowClass = 'fa-caret-down'; } } //default is descending. else { topics.sortData.sortDirection = 'ascending'; topics.sortData.arrowClass = 'fa-caret-up'; sortData.column = column; } } /* * Handler for when pagination page is changed. */ function onPageSelected() { var mult; var sortData = topics.sortData; mult = (sortData.pageIndex > 0) ? sortData.pageIndex - 1 : 0; sortData.skip = sortData.limit * mult; refreshTopics(sortData.skip, sortData.limit); } function refreshTopics() { var sortData = topics.sortData; modelUpdate(sortData.skip, sortData.limit, sortData.state, sortData.column, sortData.sortDirection) .then(function (data) { topics.topics = data.topics; topics.length = data.totalCount; sortData.length = data.totalCount; sortData.totalPages = Math.ceil(sortData.length / sortData.limit); + }); } function startMenuWatch() { $scope.sortData = topics.sortData; $scope.$watch('sortData.state', function (newVal, oldVal) { if (oldVal !== newVal) { refreshTopics(); + setDefaultState(topics.sortData.state); } }); } function init() { setDefaultState(); refreshTopics(); startMenuWatch(); } function update(column) { toggleSort(column); refreshTopics(); } // -- todo create modal service instead of inlining code -- // function openTopic(topic) { var modalInstance = $uibModal.open({ animation: true, templateUrl: './app/client/topics/directives/topic-detail.tpl.html', controller: TopicDetailController, controllerAs: 'detail', resolve: { topic: function () { return topic; }, onClose: function () { return refreshTopics; } } }); } function createTopic() { var modalInstance = $uibModal.open({ animation: true, templateUrl: './app/client/topics/directives/new-topic.tpl.html', controller: NewTopicController, controllerAs: 'newTopic', resolve: { onClose: function () { return refreshTopics; } }, }); } } // -- todo: should be in its own file. -- // NewTopicController.$inject = ['$uibModalInstance', 'onClose', 'TopicsModel']; function NewTopicController($uibModalInstance, onClose, TopicsModel) { var newTopic = this; var model = TopicsModel; newTopic.name = ''; newTopic.description = ''; // -- public --// newTopic.ok = ok; newTopic.cancel = cancel; // -- private -- // function ok() { var name = newTopic.name; var description = newTopic.description; makeRequest() .then(finish); } function makeRequest() { return model.requestNewTopic({ 'name': newTopic.name, 'description': newTopic.description }); } function finish() { onClose(); $uibModalInstance.close(); } function cancel() { $uibModalInstance.dismiss('cancel'); } } // -- ditto...own file --// TopicDetailController.$inject = ['$scope', '$uibModalInstance', 'topic', 'onClose', 'TopicsService', 'TopicsModel']; function TopicDetailController($scope, $uibModalInstance, topic, onClose, TopicsService, TopicsModel) { var detail = this; var service = TopicsService; var model = TopicsModel; var isSteward = service.isSteward(); var dateFormatter = service.dateFormatter; var topicDescription = topic.description; var loadedState = topic.state; detail.topic = topic; detail.topicState = loadedState; detail.tabState = 'description'; detail.isSteward = isSteward; detail.dateFormatter = dateFormatter; detail.topicName = topic.name; detail.topicDescription = topic.description; // -- public methods --// detail.cancel = cancel; detail.canViewHistory = canViewHistory; detail.showSteward = isSteward; detail.isEditable = isEditable; detail.setState = setState; detail.update = update; function cancel() { $uibModalInstance.dismiss('cancel'); } function isEditable() { return isSteward || topic.state === 'Pending'; } function setState(state) { if (isEditable()) { detail.tabState = state; } } function finish() { onClose(); $uibModalInstance.dismiss('cancel'); } // -- private -- // function stewardUpdate() { topic.state = detail.topicState; switch (topic.state) { case 'Approved': model.approveTopic(topic.id) .then(finish); break; case 'Rejected': model.rejectTopic(topic.id) .then(finish); break; default: $uibModalInstance.close($scope.topic); } } function researcherUpdate() { model.updateTopic({ name: detail.topicName, description: detail.topicDescription, id: detail.topic.id }) .then(finish); } function update() { if (isSteward) { stewardUpdate(); } else { researcherUpdate(); } } function canViewHistory() { var stewardCanViewApprovedAndRejected = isSteward && loadedState !== 'Pending'; var researcherCanViewOnlyApproved = loadedState === 'Approved'; var ifEditingDenyAll = detail.tabState === 'edit'; if (ifEditingDenyAll) { return false; } return stewardCanViewApprovedAndRejected || researcherCanViewOnlyApproved; } } })(); \ No newline at end of file diff --git a/apps/steward-app/src/main/js/app/mock/steward-mock.service.js b/apps/steward-app/src/main/js/app/mock/steward-mock.service.js index bd19e041b..d2c3b982d 100644 --- a/apps/steward-app/src/main/js/app/mock/steward-mock.service.js +++ b/apps/steward-app/src/main/js/app/mock/steward-mock.service.js @@ -1,111 +1,111 @@ var ShrineMockService = require('./shrine-mock.service'); var stewardData = require('./data/steward-data'); var StewardMockService = function (data) { this.data = data || stewardData; ShrineMockService.call(this); } /** inherit shrine mock methods **/ StewardMockService.prototype = Object.create(ShrineMockService.prototype); StewardMockService.prototype.getTopics = function (numberOfResults, state, role) { state = state || 'Pending'; role = role || 'DataSteward'; var results = []; for (var i = 0; i < numberOfResults; i++) { var mockResult = this.data.topic; var user = (role === 'DataSteward') ? this.getMockDave() : this.getMockBen(); mockResult.fullName = user.fullName; mockResult.role = user.roles; mockResult.userName = user.userName; mockResult.createdBy = user; mockResult.name = i + ' ' + mockResult.name; mockResult.state = state; mockResult.description = i + ' ' + mockResult.description; results.push(mockResult); } return results; } StewardMockService.prototype.getQueryHistory = function (numberOfResults, role) { var results = []; var topic = this.getTopics(1, 'Approved', role)[0]; var user = (role === 'DataSteward') ? this.getMockDave() : this.getMockBen(); for (var i = 0; i < numberOfResults; i++) { var result = this.data.queryResult; result.topic = topic; result.user = user; results.push(result); } return results; } //"https://shrine-dev1.catalyst:6443/steward/steward/statistics/topicsPerState?minDate=1476207028000&maxDate=1476898228000" StewardMockService.prototype.getTopicsPerState = function () { return { data: { total: 0, topicsPerState: [] } } } StewardMockService.prototype.getQueriesPerUser = function () { var totalQueries = 600; var users = { 'Ben': 70, 'Isha': 40, 'Ty': 30, 'Dave': 80, 'Keith': 100, 'Dr. Evil': 280 }; var jira1847Users = { - 'nn80': 43, + 'nn80': 50, 'ij22': 52, - 'shrine': 16 + 'shrine': 51 }; var keys = Object.keys(jira1847Users); var queriesPerUser = []; for (var i = 0; i < keys.length; i++) { var user = this.getMockUser(keys[i]); var numberOfQueries = jira1847Users[keys[i]]; queriesPerUser.push({ _1: user, _2: numberOfQueries }); } return { total: totalQueries, queriesPerUser: queriesPerUser } } StewardMockService.prototype.getJSONQueryHistory = function() { var queryRecords = this.data.queryHistory; return { 'totalCount': 144, 'skipped': 0, 'queryRecords': queryRecords }; } module.exports = new StewardMockService(); \ No newline at end of file diff --git a/apps/steward-app/src/main/js/app/sass/core.scss b/apps/steward-app/src/main/js/app/sass/core.scss index 9fc3895ed..ca2aec0e6 100644 --- a/apps/steward-app/src/main/js/app/sass/core.scss +++ b/apps/steward-app/src/main/js/app/sass/core.scss @@ -1,768 +1,770 @@ @font-face { font-family: 'Nexa'; src: url('../fnt/nexa/nexa-light-webfont.eot'); src: url('../fnt/nexa/nexa-light-webfont.eot?#iefix') format('embedded-opentype'), url('../fnt/nexa/nexa-light-webfont.woff2') format('woff2'), url('../fnt/nexa/nexa-light-webfont.woff') format('woff'), url('../fnt/nexa/nexa-light-webfont.ttf') format('truetype'), url('../fnt/nexa/nexa-light-webfont.svg#nexa_lightregular') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'Nexa Bold'; src: url('../fnt/nexa/nexa-bold-webfont.eot'); src: url('../fnt/nexa/nexa-bold-webfont.eot?#iefix') format('embedded-opentype'), url('../fnt/nexa/nexa-bold-webfont.woff2') format('woff2'), url('../fnt/nexa/nexa-bold-webfont.woff') format('woff'), url('../fnt/nexa/nexa-bold-webfont.ttf') format('truetype'), url('../fnt/nexa/nexa-bold-webfont.svg#nexa_boldregular') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'Open Sans Regular'; src: url('../fnt/open-sans/opensans-regular-webfont.eot'); src: url('../fnt/open-sans/opensans-regular-webfont.eot?#iefix') format('embedded-opentype'), url('../fnt/open-sans/opensans-regular-webfont.woff2') format('woff2'), url('../fnt/open-sans/opensans-regular-webfont.woff') format('woff'), url('../fnt/open-sans/opensans-regular-webfont.ttf') format('truetype'), url('../fnt/open-sans/opensans-regular-webfont.svg#open_sansregular') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'Open Sans Semibold'; src: url('../fnt/open-sans/opensans-semibold-webfont.eot'); src: url('../fnt/open-sans/opensans-semibold-webfont.eot?#iefix') format('embedded-opentype'), url('../fnt/open-sans/opensans-semibold-webfont.woff2') format('woff2'), url('../fnt/open-sans/opensans-semibold-webfont.woff') format('woff'), url('../fnt/open-sans/opensans-semibold-webfont.ttf') format('truetype'), url('../fnt/open-sans/opensans-semibold-webfont.svg#open_sanssemibold') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'Roboto Bold'; src: url('../fnt/roboto/roboto-bold-webfont.eot'); src: url('../fnt/roboto/roboto-bold-webfont.eot?#iefix') format('embedded-opentype'), url('../fnt/roboto/roboto-bold-webfont.woff2') format('woff2'), url('../fnt/roboto/roboto-bold-webfont.woff') format('woff'), url('../fnt/roboto/roboto-bold-webfont.ttf') format('truetype'), url('../fnt/roboto/roboto-bold-webfont.svg#robotobold') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'Roboto Regular'; src: url('../fnt/roboto/roboto-regular-webfont.eot'); src: url('../fnt/roboto/roboto-regular-webfont.eot?#iefix') format('embedded-opentype'), url('../fnt/roboto/roboto-regular-webfont.woff2') format('woff2'), url('../fnt/roboto/roboto-regular-webfont.woff') format('woff'), url('../fnt/roboto/roboto-regular-webfont.ttf') format('truetype'), url('../fnt/roboto/roboto-regular-webfont.svg#robotoregular') format('svg'); font-weight: normal; font-style: normal; } .main-app{ background-image: url('../img/Background_Shrine.jpg'); background-size: cover; background-color: transparent; background-attachment: fixed; width: 100%; height:100%; width: calc(100vw); height: calc(100vh); min-width: 100%; min-height: 100%; } .shrine-navbar { background-color: rgba(255, 255, 255, 0.62); border-color: transparent; font-family: "Nexa"; color: #5d5d5d; min-height: 60px; width: 100%; height: 4.8em; } .shrine-brand { float: left; padding: 22px 15px; font-size: 30px; line-height: 30px; height: 30px; } .shrine-brand strong { font-family: "Nexa Bold"; color: #2c5566; } .shrine-navbar .shrine-institution-logo { background-image: url('/static/logo.png'); background-size: contain; background-color: transparent; background-color: rgba(255,255,255,0.1); background-repeat: no-repeat; background-position: right top; margin-right: 2%; margin-top: 5px; width: 4em; height: 4em; max-height: 4em; max-width: 4em; } .shrine-button { cursor: pointer !important; background-color: transparent; border: none; } .shrine-button span { position: relative; bottom: 5px; } .shrine-btn-default { margin-right: 6px; border:none; } .shrine-btn-on { padding: 12px 12px; border-radius: 0; font-family: "Roboto Bold" !important; color: #FFFFFF !important; background: linear-gradient(rgba(4, 141, 190, .80), rgba(2, 89, 120, .80)), url('../img/bckg_diagonal_lines_no_border.png') !important; } .shrine-btn-off { padding: 6px 12px !important; border-radius: 4px !important; font-family: "Open Sans Semibold" !important; background-color: #8896A4 !important; color: #FFFFFF !important; } .shrine-on, .shrine-on a { font-family: "Roboto Bold" !important; color: #FFFFFF !important; background: linear-gradient(#048DBE, #025978) !important; } .shrine-off { font-family: "Roboto Regular" !important; color: #2C5566 !important; background-color: #ECEEEE !important; } .shrine-button.disabled, .shrine-button[disabled] { cursor: default !important; opacity: 0.2 !important; } .shrine-copy-bold { font-family: "Nexa Bold"; color: #64818e; } .shrine-copy { font-family: "Nexa"; color: #000000; } .row { margin-right: 0; margin-left: 0; } td.error, span.error { color: red; } td.error a, td.error a:hover, span.error a, span.error a:hover{ color: inherit; text-decoration: underline !important; cursor: pointer; } td.ok, span.ok { color:green; } .form-group span { font-family: "Open Sans Semibold"; color: #2c5566; } fieldset button { color: #2E5366; } fieldset button:hover, form a:hover { color: #008CBA; text-decoration: none; cursor: pointer; } form a { font-family: "Open Sans Regular"; color: #647d8d; text-decoration: none; } footer img { margin-left: 10px; margin-top: 2px; } footer { background-color: rgba(50, 62, 74, 0.48); position: fixed; bottom: 0; left: 0; width: 100%; height: 83px; min-height: 83px; max-width: 100%; } table { background-image: url('../img/bckg_diagonal_lines_no_border.png'); border: 1px solid #CCD8DF; } .table tr>td:first-child { width: 20%; min-width: 140px; } .table tr>td.thin-col { width: 6%; min-width: 35px; } .table-striped>tbody>tr:nth-of-type(odd) { background-color: #EFF6F9; } .table-striped>tbody>tr:nth-of-type(even) { background-color: #FFFFFF; } thead tr{ border: 1px solid #CCD8DF; } td{ border-right: 1px solid #CCD8DF; overflow: hidden; max-width: 450px; word-break: break-all; } thead tr td, thead tr td label, tfoot tr td span{ font-family: "Open Sans Semibold"; color: #003153; } td a, td a:hover{ text-decoration: none !important; cursor: pointer; font-family: "Open Sans Semibold"; color: #003153; } .shrine-panel{ background-image: url('../img/bckg_diagonal_lines.png'); background-size: 100% 100%; padding-right: 20px; padding-left: 20px; padding-top: 30px; padding-bottom: 30px; + width: 100%; + margin-left: 30%; } /*! * Start Bootstrap - SB Admin 2 Bootstrap Admin Theme (http://startbootstrap.com) * Code licensed under the Apache License v2.0. * For details, see http://www.apache.org/licenses/LICENSE-2.0. */ body { background-image: url('../img/Background_Shrine.jpg'); background-repeat:no-repeat; background-size:100% 100%; } #wrapper { width: 100%; padding-bottom: 83px; /* clearance space for footer at bottom of long page */ } .login-wrapper{ margin-top: 51px; margin-right: 20px; } #page-wrapper { background-color: transparent; margin-top: 54px; margin-right: 20px; } .navbar-top-links li { display: inline-block; } .navbar-top-links li:last-child { margin-right: 15px; } .navbar-top-links li a { padding: 15px; min-height: 50px; font-family: "Open Sans Semibold"; color: #2c5566; } .navbar-top-links .dropdown-menu li { font-family: "Open Sans Semibold"; color: #2c5566; display: block; } .navbar-top-links .dropdown-menu li:last-child { margin-right: 0; } .navbar-top-links .dropdown-menu li a { padding: 3px 20px; min-height: 0; } .navbar-top-links .dropdown-menu li a div { white-space: normal; } .navbar-top-links .dropdown-messages, .navbar-top-links .dropdown-tasks, .navbar-top-links .dropdown-alerts { width: 310px; min-width: 0; } .navbar-top-links .dropdown-messages { margin-left: 5px; } .navbar-top-links .dropdown-tasks { margin-left: -59px; } .navbar-top-links .dropdown-alerts { margin-left: -123px; } .navbar-top-links{ right: 0; left: auto; } .sidebar .sidebar-nav.navbar-collapse { padding-right: 0; padding-left: 0; } .sidebar .sidebar-search { padding: 15px; } .sidebar ul li { border-bottom: 1px solid #e7e7e7; } .sidebar ul li a.active { background-color: #eee; } .sidebar .arrow { float: right; } .sidebar .fa.arrow:before { content: "\f104"; } .sidebar .active>a>.fa.arrow:before { content: "\f107"; } .sidebar .nav-second-level li, .sidebar .nav-third-level li { border-bottom: 0!important; } .sidebar .nav-second-level li a { padding-left: 37px; } .sidebar .nav-third-level li a { padding-left: 52px; } @media(min-width:768px) { .sidebar { z-index: 1; margin-top: 51px; } .navbar-top-links .dropdown-messages, .navbar-top-links .dropdown-tasks, .navbar-top-links .dropdown-alerts { margin-left: auto; } } .btn-outline { color: inherit; background-color: transparent; transition: all .5s; } .btn-primary.btn-outline { color: #428bca; } .btn-success.btn-outline { color: #5cb85c; } .btn-info.btn-outline { color: #5bc0de; } .btn-warning.btn-outline { color: #f0ad4e; } .btn-danger.btn-outline { color: #d9534f; } .btn-primary.btn-outline:hover, .btn-success.btn-outline:hover, .btn-info.btn-outline:hover, .btn-warning.btn-outline:hover, .btn-danger.btn-outline:hover { color: #fff; } .chat { margin: 0; padding: 0; list-style: none; } .chat li { margin-bottom: 10px; padding-bottom: 5px; border-bottom: 1px dotted #999; } .chat li.left .chat-body { margin-left: 60px; } .chat li.right .chat-body { margin-right: 60px; } .chat li .chat-body p { margin: 0; } .panel .slidedown .glyphicon, .chat .glyphicon { margin-right: 5px; } .chat-panel .panel-body { height: 350px; overflow-y: scroll; } .login-panel { margin-top: 25%; } .flot-chart { display: block; height: 400px; } .flot-chart-content { width: 100%; height: 100%; } .dataTables_wrapper { position: relative; clear: both; } table.dataTable thead .sorting, table.dataTable thead .sorting_asc, table.dataTable thead .sorting_desc, table.dataTable thead .sorting_asc_disabled, table.dataTable thead .sorting_desc_disabled { background: 0 0; } table.dataTable thead .sorting_asc:after { content: "\f0de"; float: right; font-family: fontawesome; } table.dataTable thead .sorting_desc:after { content: "\f0dd"; float: right; font-family: fontawesome; } table.dataTable thead .sorting:after { content: "\f0dc"; float: right; font-family: fontawesome; color: rgba(50,50,50,.5); } .btn-circle { width: 30px; height: 30px; padding: 6px 0; border-radius: 15px; text-align: center; font-size: 12px; line-height: 1.428571429; } .btn-circle.btn-lg { width: 50px; height: 50px; padding: 10px 16px; border-radius: 25px; font-size: 18px; line-height: 1.33; } .btn-circle.btn-xl { width: 70px; height: 70px; padding: 10px 16px; border-radius: 35px; font-size: 24px; line-height: 1.33; } .show-grid [class^=col-] { padding-top: 10px; padding-bottom: 10px; border: 1px solid #ddd; background-color: #eee!important; } .show-grid { margin: 15px 0; } .huge { font-size: 40px; } .panel-green { border-color: #5cb85c; } .panel-green .panel-heading { border-color: #5cb85c; color: #fff; background-color: #5cb85c; } .panel-green a { color: #5cb85c; } .panel-green a:hover { color: #3d8b3d; } .panel-red { border-color: #d9534f; } .panel-red .panel-heading { border-color: #d9534f; color: #fff; background-color: #d9534f; } .panel-red a { color: #d9534f; } .panel-red a:hover { color: #b52b27; } .panel-yellow { border-color: #f0ad4e; } .panel-yellow .panel-heading { border-color: #f0ad4e; color: #fff; background-color: #f0ad4e; } .panel-yellow a { color: #f0ad4e; } .panel-yellow a:hover { color: #df8a13; } .modal-content{ border: none; } .shrine-modal{ background-color: white; border: 1px solid #2c5566; font-family: "Open Sans Semibold"; color: #2e5366; padding: 15px; } .shrine-modal form div.col-sm-12{ border: 1px solid rgba(2, 89, 120, .80); } .shrine-modal input, .shrine-modal textarea{ border-radius: 0px; border: 1px solid #2c5566; } .shrine-modal span{ font-family: "Nexa Bold"; color: #2e5366; } .shrine-modal span:hover{ font-family: "Nexa Bold"; color: #008CBA; } .shrine-modal button{ background-color: white; border: none; font-family: "Nexa Bold"; color: #2e5366; } .shrine-modal button span{ position: relative; bottom: 6px; } .shrine-modal button:hover, .btn-success{ font-family: "Nexa Bold"; color: #008CBA; background-color: transparent; border: none; } .shrine-login{ margin-top: 8%; margin-left: 1%; } .shrine-content{ overflow: auto; } /*Fix for resizeable text area.*/ textarea{ resize: none; } @media (min-width: 768px) { .shrine-content { padding: 0; } } .shrine-calendar-input{ margin-right: 1px; max-width:50%; } i.shrine-close{ float:right; margin-top:-40px; margin-right:-40px; cursor:pointer; color: #fff; border: 2px solid #C8CED1; border-radius: 30px; background: #8896a4; font-size: 31px; font-weight: normal; display: inline-block; line-height: 0px; padding: 11px 3px; font-style:normal; } i.shrine-close:hover{ background: #008cba; } .shrine-close:before { content: "×"; } diff --git a/apps/steward-app/src/main/js/index.html b/apps/steward-app/src/main/js/index.html index b1831e0c5..3b464f82f 100644 --- a/apps/steward-app/src/main/js/index.html +++ b/apps/steward-app/src/main/js/index.html @@ -1,121 +1,121 @@ Shrine Data Steward
-
+



\ No newline at end of file diff --git a/apps/steward-war/pom.xml b/apps/steward-war/pom.xml index 491afd96d..4ebd14806 100644 --- a/apps/steward-war/pom.xml +++ b/apps/steward-war/pom.xml @@ -1,43 +1,47 @@ shrine-base net.shrine + 1.23.3.1-SNAPSHOT + + + ../../pom.xml 4.0.0 steward Steward War war org.apache.maven.plugins maven-war-plugin steward net.shrine steward-app ${project.version} com.h2database h2 ${h2-version} test org.slf4j slf4j-log4j12 ${slf4j-version} runtime diff --git a/apps/war/pom.xml b/apps/war/pom.xml index b870c4cb1..bc245c65e 100644 --- a/apps/war/pom.xml +++ b/apps/war/pom.xml @@ -1,64 +1,68 @@ 4.0.0 SHRINE War shrine-war war net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-app ${project.version} net.shrine shrine-adapter-service ${project.version} javax.servlet javax.servlet-api provided com.sun.jersey jersey-servlet net.shrine shrine-adapter-service ${project.version} test-jar test org.slf4j slf4j-log4j12 ${slf4j-version} runtime shrine-cell src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin diff --git a/commons/auth/pom.xml b/commons/auth/pom.xml index 5140856fd..bcfda6a59 100644 --- a/commons/auth/pom.xml +++ b/commons/auth/pom.xml @@ -1,90 +1,94 @@ 4.0.0 SHRINE Auth* shrine-auth jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml net.shrine shrine-protocol ${project.version} com.typesafe.akka akka-actor_2.11 ${akka-version} org.json4s json4s-native_2.11 ${json4s-version} io.spray spray-client_2.11 ${spray-version} io.spray spray-routing_2.11 ${spray-version} io.spray spray-servlet_2.11 ${spray-version} io.spray spray-util_2.11 ${spray-version} io.spray spray-testkit_2.11 ${spray-version} test com.typesafe.akka akka-slf4j_2.11 ${akka-version} com.typesafe.akka akka-testkit_2.11 ${akka-version} test net.shrine shrine-client ${project.version} net.shrine shrine-test-commons ${project.version} test-jar test src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin diff --git a/commons/client/pom.xml b/commons/client/pom.xml index dd6417107..700fd09bf 100644 --- a/commons/client/pom.xml +++ b/commons/client/pom.xml @@ -1,68 +1,72 @@ 4.0.0 SHRINE Client shrine-client jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-protocol ${project.version} net.shrine shrine-crypto ${project.version} net.shrine shrine-crypto ${project.version} test-jar test net.shrine shrine-config ${project.version} com.sun.jersey jersey-client src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin org.apache.maven.plugins maven-jar-plugin test-jar diff --git a/commons/config/pom.xml b/commons/config/pom.xml index 8f0eda918..c544325b8 100644 --- a/commons/config/pom.xml +++ b/commons/config/pom.xml @@ -1,56 +1,60 @@ 4.0.0 SHRINE Config shrine-config jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml net.shrine shrine-test-commons ${project.version} test-jar test net.sf.opencsv opencsv com.typesafe config net.shrine shrine-util ${project.version} src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin org.apache.maven.plugins maven-jar-plugin test-jar diff --git a/commons/crypto/pom.xml b/commons/crypto/pom.xml index 6ecfed8a7..54e9a2470 100644 --- a/commons/crypto/pom.xml +++ b/commons/crypto/pom.xml @@ -1,82 +1,86 @@ 4.0.0 SHRINE Crypto shrine-crypto jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-protocol ${project.version} net.shrine shrine-config ${project.version} org.bouncycastle bcpkix-jdk15on ${bouncy-castle-version} src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin org.apache.maven.plugins maven-jar-plugin test-jar diff --git a/commons/data-commons/pom.xml b/commons/data-commons/pom.xml index 51671f80c..b31994811 100644 --- a/commons/data-commons/pom.xml +++ b/commons/data-commons/pom.xml @@ -1,87 +1,91 @@ 4.0.0 SHRINE Data Access Classes shrine-data-commons jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin org.apache.maven.plugins maven-jar-plugin test-jar net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-config ${project.version} net.shrine shrine-util ${project.version} org.suecarter freeslick_2.11 ${freeslick-version} org.squeryl squeryl_${scala-major-version} org.scala-lang scalap org.scala-lang scalap ${scala-version} org.springframework spring-jdbc test com.h2database h2 test diff --git a/commons/email/pom.xml b/commons/email/pom.xml index 15a8b9e6b..15404de66 100644 --- a/commons/email/pom.xml +++ b/commons/email/pom.xml @@ -1,72 +1,76 @@ 4.0.0 SHRINE Email shrine-email jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml org.slf4j slf4j-simple ${slf4j-version} test org.json4s json4s-native_2.11 ${json4s-version} me.lessis courier_2.11 ${courier-version} net.shrine shrine-config ${project.version} net.shrine shrine-test-commons ${project.version} test-jar test org.jvnet.mock-javamail mock-javamail ${mock-javamail-version} test src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin org.apache.maven.plugins maven-jar-plugin 2.6 test-jar diff --git a/commons/ont-support/pom.xml b/commons/ont-support/pom.xml index a95d1ea3b..a761e097a 100644 --- a/commons/ont-support/pom.xml +++ b/commons/ont-support/pom.xml @@ -1,63 +1,67 @@ 4.0.0 SHRINE Ontology Support shrine-ont-support jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-protocol ${project.version} net.shrine shrine-util ${project.version} net.shrine shrine-crypto ${project.version} net.shrine shrine-crypto ${project.version} test-jar test net.shrine shrine-config ${project.version} net.shrine shrine-client ${project.version} src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin diff --git a/commons/protocol-query/pom.xml b/commons/protocol-query/pom.xml index 4983f73aa..cebcc4a4c 100644 --- a/commons/protocol-query/pom.xml +++ b/commons/protocol-query/pom.xml @@ -1,57 +1,61 @@ 4.0.0 SHRINE Query Protocol shrine-protocol-query jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml net.shrine shrine-test-commons ${project.version} test-jar test net.liftweb lift-json_${scala-major-version} org.scala-lang scalap org.scala-lang scalap ${scala-version} net.shrine shrine-util ${project.version} src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin diff --git a/commons/protocol/pom.xml b/commons/protocol/pom.xml index 434bb6922..cdb2fe8f9 100644 --- a/commons/protocol/pom.xml +++ b/commons/protocol/pom.xml @@ -1,87 +1,91 @@ 4.0.0 SHRINE Protocol shrine-protocol jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml net.shrine shrine-protocol-query ${project.version} net.shrine shrine-util ${project.version} net.shrine shrine-util ${project.version} test-jar test net.shrine shrine-config ${project.version} net.shrine shrine-data-commons ${project.version} net.liftweb lift-json_${scala-major-version} org.easymock easymock test net.shrine shrine-test-commons ${project.version} test-jar test src/main/scala src/test/scala src/main/resources true shrine-versions.properties net.alchim31.maven scala-maven-plugin org.apache.maven.plugins maven-jar-plugin test-jar diff --git a/commons/test-commons/pom.xml b/commons/test-commons/pom.xml index dceed9e80..8267dc0b8 100644 --- a/commons/test-commons/pom.xml +++ b/commons/test-commons/pom.xml @@ -1,48 +1,52 @@ 4.0.0 SHRINE Test Commons shrine-test-commons jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml com.sun.jersey jersey-client test com.sun.jersey.jersey-test-framework jersey-test-framework-http ${jersey-version} test src/test/scala org.apache.maven.plugins maven-jar-plugin test-jar net.alchim31.maven scala-maven-plugin diff --git a/commons/util/pom.xml b/commons/util/pom.xml index 898369192..ab68bb946 100644 --- a/commons/util/pom.xml +++ b/commons/util/pom.xml @@ -1,125 +1,129 @@ 4.0.0 SHRINE Utility Code shrine-util jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml com.typesafe.slick slick_2.11 ${slick-version} io.spray spray-httpx_2.11 ${spray-version} org.slf4j slf4j-simple ${slf4j-version} test net.liftweb lift-json_${scala-major-version} org.scala-lang scalap org.scala-lang scalap ${scala-version} log4j log4j net.shrine shrine-test-commons ${project.version} test-jar test org.json4s json4s-native_2.11 ${json4s-version} com.h2database h2 test org.xerial sqlite-jdbc 3.15.1 test org.spire-math jawn-parser_2.11 ${jawn-version} org.spire-math jawn-ast_2.11 ${jawn-version} com.propensive rapture-json_2.11 ${rapture-version} com.propensive rapture-json-jawn_2.11 ${rapture-version} src/main/scala src/test/scala src/main/resources net.alchim31.maven scala-maven-plugin org.apache.maven.plugins maven-jar-plugin 2.6 test-jar diff --git a/hms-support/hms-core/pom.xml b/hms-support/hms-core/pom.xml index 36d890d79..10b908f1d 100644 --- a/hms-support/hms-core/pom.xml +++ b/hms-support/hms-core/pom.xml @@ -1,62 +1,66 @@ net.shrine shrine-hms-support + 1.23.3.1-SNAPSHOT + + + 4.0.0 shrine-hms-core SHRINE HMS Support (Core Classes) net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-auth ${project.version} net.shrine shrine-protocol ${project.version} net.shrine shrine-client ${project.version} net.shrine shrine-crypto ${project.version} net.shrine shrine-crypto ${project.version} test-jar test org.easymock easymock test src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin diff --git a/hms-support/pom.xml b/hms-support/pom.xml index be8debca3..d238e303e 100644 --- a/hms-support/pom.xml +++ b/hms-support/pom.xml @@ -1,15 +1,19 @@ 4.0.0 SHRINE HMS Support shrine-hms-support pom net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + hms-core diff --git a/hub/broadcaster-aggregator/pom.xml b/hub/broadcaster-aggregator/pom.xml index 8950deb38..d1261f17c 100644 --- a/hub/broadcaster-aggregator/pom.xml +++ b/hub/broadcaster-aggregator/pom.xml @@ -1,161 +1,165 @@ 4.0.0 SHRINE Broadcaster Aggregator shrine-broadcaster-aggregator jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml src/main/scala src/test/scala org.codehaus.mojo tomcat-maven-plugin 1.0-beta-1 net.alchim31.maven scala-maven-plugin org.apache.maven.plugins maven-jar-plugin test-jar net.shrine shrine-adapter-client-api ${project.version} net.shrine shrine-client ${project.version} net.shrine shrine-protocol ${project.version} net.shrine shrine-data-commons ${project.version} mysql mysql-connector-java net.shrine shrine-util ${project.version} test-jar test net.shrine shrine-crypto ${project.version} test-jar test net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-data-commons ${project.version} test-jar test net.shrine shrine-config ${project.version} test-jar test com.sun.jersey.jersey-test-framework jersey-test-framework-http ${jersey-version} test com.sun.jersey.contribs jersey-simple-server ${jersey-version} test com.h2database h2 test org.easymock easymock test org.springframework spring-jdbc test org.codehaus.mojo findbugs-maven-plugin 2.3.1 Max org.codehaus.mojo cobertura-maven-plugin 2.3 org.apache.maven.plugins maven-checkstyle-plugin 2.5 org.apache.maven.plugins maven-pmd-plugin 2.4 1.6 diff --git a/hub/broadcaster-service/pom.xml b/hub/broadcaster-service/pom.xml index dd28d69f3..a3d7f6b53 100644 --- a/hub/broadcaster-service/pom.xml +++ b/hub/broadcaster-service/pom.xml @@ -1,148 +1,152 @@ 4.0.0 SHRINE Broadcast Service shrine-broadcaster-service jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin com.sun.jersey jersey-server net.shrine shrine-broadcaster-aggregator ${project.version} net.shrine shrine-crypto ${project.version} net.shrine shrine-client ${project.version} net.shrine shrine-adapter-client-api ${project.version} net.shrine shrine-protocol ${project.version} net.shrine shrine-data-commons ${project.version} log4j log4j com.sun.jersey.jersey-test-framework jersey-test-framework-http ${jersey-version} test com.sun.jersey.contribs jersey-simple-server ${jersey-version} test com.h2database h2 test org.easymock easymock test org.springframework spring-jdbc test net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-data-commons ${project.version} test-jar test org.codehaus.mojo findbugs-maven-plugin 2.3.1 Max org.codehaus.mojo cobertura-maven-plugin 2.3 org.apache.maven.plugins maven-checkstyle-plugin 2.5 org.apache.maven.plugins maven-pmd-plugin 2.4 1.6 diff --git a/install/pom.xml b/install/pom.xml index 8a55ae589..475532897 100644 --- a/install/pom.xml +++ b/install/pom.xml @@ -1,34 +1,38 @@ 4.0.0 SHRINE Install Scripts shrine-install-scripts pom net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + shrine-install-scripts org.apache.maven.plugins maven-assembly-plugin src/main/assembly/assembly.xml make-assembly package single diff --git a/integration/pom.xml b/integration/pom.xml index bfad66625..d9482d824 100644 --- a/integration/pom.xml +++ b/integration/pom.xml @@ -1,145 +1,149 @@ 4.0.0 SHRINE Integration Tests shrine-integration-tests net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin net.shrine shrine-crypto ${project.version} net.shrine shrine-crypto ${project.version} test-jar test net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-data-commons ${project.version} test-jar test net.shrine shrine-protocol ${project.version} test net.shrine shrine-adapter-service ${project.version} test net.shrine shrine-adapter-service ${project.version} test-jar test net.shrine shrine-adapter-client-api ${project.version} test net.shrine shrine-broadcaster-aggregator ${project.version} test net.shrine shrine-qep ${project.version} test net.shrine shrine-broadcaster-service ${project.version} test com.h2database h2 test org.slf4j slf4j-log4j12 test org.springframework spring-jdbc test com.sun.jersey.jersey-test-framework jersey-test-framework-http ${jersey-version} test com.sun.jersey.contribs jersey-simple-server ${jersey-version} test com.typesafe.slick slick-hikaricp_2.11 ${slick-version} test org.spire-math jawn-parser_2.11 ${jawn-version} org.spire-math jawn-ast_2.11 ${jawn-version} com.propensive rapture-json_2.11 ${rapture-version} com.propensive rapture-json-jawn_2.11 ${rapture-version} diff --git a/pom.xml b/pom.xml index 2728d8819..c9f7b04bb 100644 --- a/pom.xml +++ b/pom.xml @@ -1,393 +1,397 @@ 4.0.0 SHRINE net.shrine shrine-base pom + 1.23.3.1-SNAPSHOT + + + UTF-8 4.2.5.RELEASE 2.6.2 2.11.8 2.11 4.12 1.7.22 1.2.17 1.19 2.2.6 3.2.2 0.9.7 1.3.1 1.4.193 3.4 5.1.40 2.3 3.0.1 0.9.5 1.3.4 2.4.16 2.4.16 3.5.0 3.1.1 3.1.1.1 1.56 0.1.3 1.9 0.7.0 1.3.1 0.10.4 2.0.0-M8 apps/meta-app apps/meta-war apps/dashboard-app apps/dashboard-war apps/steward-app apps/steward-war apps/proxy apps/shrine-app apps/war qep/service hub/broadcaster-aggregator hub/broadcaster-service adapter/adapter-api adapter/adapter-service hms-support tools commons/util commons/email commons/auth commons/protocol-query commons/data-commons commons/protocol commons/crypto commons/client commons/config commons/ont-support commons/test-commons install integration shrine-webclient net.alchim31.maven scala-maven-plugin ${scala-maven-plugin-version} compile compile compile test-compile testCompile test-compile process-resources compile incremental true -XX:+AggressiveOpts -XX:CompileThreshold=500 -XX:+UseFastAccessorMethods -XX:+UseStringCache -XX:+OptimizeStringConcat -XX:+TieredCompilation -XX:+UseConcMarkSweepGC -XX:+DoEscapeAnalysis -server -Xms64m -Xmx1024m -XX:MaxPermSize=384m ${scala-version} -Xcheckinit -unchecked -deprecation -Xlint:adapted-args,inaccessible,infer-any,missing-interpolator,private-shadow,type-parameter-shadow,unsound-match 7 7 maven-compiler-plugin 7 7 org.codehaus.mojo buildnumber-maven-plugin 1.1 org.apache.maven.plugins maven-jar-plugin 2.4 org.apache.maven.plugins maven-war-plugin 2.1.1 org.codehaus.mojo buildnumber-maven-plugin validate create {0,date,yyyy-MM-dd HH:mm:ss} (not available) org.apache.maven.plugins maven-jar-plugin true ${buildNumber} ${scmBranch} ${timestamp} org.apache.maven.plugins maven-war-plugin true ${buildNumber} ${scmBranch} ${timestamp} org.apache.tomcat.maven tomcat7-maven-plugin 2.2 true true true true http://shrine-dev1.catalyst:6060/shrine/rest/happy scm:git:https://open.med.harvard.edu/stash/scm/shrine/shrine.git CBMI-Nexus https://repo.open.med.harvard.edu/nexus/content/groups/public/ com.typesafe config ${typesafe-config-version} log4j log4j ${log4j-version} org.springframework spring-jdbc ${spring.version} test com.h2database h2 ${h2-version} test org.easymock easymock ${easymock-version} test org.slf4j slf4j-log4j12 ${slf4j-version} test mysql mysql-connector-java ${mysql-version} net.sf.opencsv opencsv ${opencsv-version} net.liftweb lift-json_${scala-major-version} ${lift-version} com.sun.jersey jersey-server ${jersey-version} com.sun.jersey jersey-servlet ${jersey-version} com.sun.jersey jersey-client ${jersey-version} org.squeryl squeryl_${scala-major-version} ${squeryl-version} javax.servlet javax.servlet-api ${servlet-api-version} provided org.bouncycastle bcpkix-jdk15on ${bouncy-castle-version} org.scala-lang scala-library ${scala-version} junit junit ${junit-version} test org.scalatest scalatest_${scala-major-version} ${scalatest-version} test org.scala-lang scala-actors org.scala-lang scala-reflect org.scala-lang scala-actors ${scala-version} test org.scala-lang scala-reflect ${scala-version} nexus Nexus Repo https://repo.open.med.harvard.edu/nexus/content/repositories/snapshots false nexus Nexus Repo https://repo.open.med.harvard.edu/nexus/content/repositories/releases-internal diff --git a/qep/service/pom.xml b/qep/service/pom.xml index a2eed71df..57001f5f0 100644 --- a/qep/service/pom.xml +++ b/qep/service/pom.xml @@ -1,218 +1,222 @@ 4.0.0 SHRINE Service shrine-qep jar net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + ../../pom.xml src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin false org.squeryl squeryl_${scala-major-version} org.scala-lang scalap org.scala-lang scalap ${scala-version} com.sun.jersey jersey-server com.sun.jersey jersey-client net.shrine shrine-auth ${project.version} net.shrine shrine-broadcaster-aggregator ${project.version} net.shrine shrine-crypto ${project.version} net.shrine shrine-client ${project.version} net.shrine shrine-adapter-client-api ${project.version} net.shrine shrine-protocol ${project.version} net.shrine shrine-data-commons ${project.version} net.shrine shrine-hms-core ${project.version} com.typesafe.slick slick_2.11 ${slick-version} org.suecarter freeslick_2.11 ${freeslick-version} org.slf4j slf4j-log4j12 ${slf4j-version} mysql mysql-connector-java log4j log4j com.sun.jersey.jersey-test-framework jersey-test-framework-http ${jersey-version} test com.sun.jersey.contribs jersey-simple-server ${jersey-version} test com.h2database h2 test org.easymock easymock test org.springframework spring-jdbc test net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-data-commons ${project.version} test-jar test net.shrine shrine-config ${project.version} test-jar test net.shrine shrine-util ${project.version} test-jar test org.codehaus.mojo findbugs-maven-plugin 2.3.1 Max org.codehaus.mojo cobertura-maven-plugin 2.3 org.apache.maven.plugins maven-checkstyle-plugin 2.5 org.apache.maven.plugins maven-pmd-plugin 2.4 1.6 diff --git a/shrine-webclient/pom.xml b/shrine-webclient/pom.xml index d684f984f..d3378add0 100644 --- a/shrine-webclient/pom.xml +++ b/shrine-webclient/pom.xml @@ -1,40 +1,44 @@ 4.0.0 SHRINE Web Client shrine-webclient pom net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + 1.5 2.4 maven-assembly-plugin ${assembly-plugin-version} assembly package single src/main/assembly/assembly.xml \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-i2b2/cells/CRC/CRC_ctrlr_Dates.js b/shrine-webclient/src/main/js/client/js-i2b2/cells/CRC/CRC_ctrlr_Dates.js index faecd500d..ca9bd1139 100644 --- a/shrine-webclient/src/main/js/client/js-i2b2/cells/CRC/CRC_ctrlr_Dates.js +++ b/shrine-webclient/src/main/js/client/js-i2b2/cells/CRC/CRC_ctrlr_Dates.js @@ -1,271 +1,271 @@ /** * @projectDescription The Date Constraint controller (GUI-only controller). * @inherits i2b2.CRC.ctrlr * @namespace i2b2.CRC.ctrlr.dateConstraint * @author Nick Benik, Griffin Weber MD PhD * @version 1.3 * ---------------------------------------------------------------------------------------- * updated 9-15-08: RC4 launch [Nick Benik] */ console.group('Load & Execute component file: CRC > ctrlr > Dates'); console.time('execute time'); // ================================================================================================== // i2b2.CRC.ctrlr.dateConstraint = { defaultStartDate: '12/01/1979', defaultEndDate: '12/31/2006', currentPanelIndex: false, // ================================================================================================== // showDates: function(panelControllerIndex) { var dm = i2b2.CRC.model.queryCurrent; var panelIndex = i2b2.CRC.ctrlr.QT.panelControllers[panelControllerIndex].panelCurrentIndex; if (undefined==dm.panels[i2b2.CRC.ctrlr.QT.temporalGroup][panelIndex]) return; var qn = dm.panels[i2b2.CRC.ctrlr.QT.temporalGroup][panelIndex]; this.currentPanelIndex = panelIndex; // only build the prompt box 1 time if (!i2b2.CRC.view.modalDates) { var handleSubmit = function(){ var closure_pi = i2b2.CRC.ctrlr.dateConstraint.currentPanelIndex; // save the dates if (i2b2.CRC.ctrlr.dateConstraint.doProcessDates(closure_pi)) { // saved and validated, close modal form this.submit(); } }; var handleCancel = function(){ this.cancel(); } i2b2.CRC.view.modalDates = new YAHOO.widget.SimpleDialog("constraintDates", { width: "400px", fixedcenter: true, constraintoviewport: true, modal: true, zindex: 700, buttons: [{ text: "OK", isDefault: true, handler: handleSubmit }, { text: "Cancel", handler: handleCancel }] }); $('constraintDates').show(); i2b2.CRC.view.modalDates.render(document.body); } i2b2.CRC.view.modalDates.show(); // load our panel data var DateRecord = new Object; if (qn.dateFrom) { DateRecord.Start = padNumber(qn.dateFrom.Month,2)+'/'+padNumber(qn.dateFrom.Day,2)+'/'+qn.dateFrom.Year; } else { DateRecord.Start = this.defaultStartDate; } $('constraintDateStart').value = DateRecord.Start; if (qn.dateTo) { DateRecord.End = padNumber(qn.dateTo.Month,2)+'/'+padNumber(qn.dateTo.Day,2)+'/'+qn.dateTo.Year; } else { // DateRecord.End = this.defaultEndDate; var curdate = new Date(); DateRecord.End = padNumber(curdate.getMonth()+1,2)+'/'+padNumber(curdate.getDate(),2)+'/'+curdate.getFullYear(); } $('constraintDateEnd').value = DateRecord.End; if (qn.dateFrom) { $('checkboxDateStart').checked = true; $('constraintDateStart').disabled = false; } else { $('checkboxDateStart').checked = false; $('constraintDateStart').disabled = true; } if (qn.dateTo) { $('checkboxDateEnd').checked = true; $('constraintDateEnd').disabled = false; } else { $('checkboxDateEnd').checked = false; $('constraintDateEnd').disabled = true; } }, // ================================================================================================== // toggleDate: function() { if ($('checkboxDateStart').checked) { $('constraintDateStart').disabled = false; setTimeout("$('constraintDateStart').select()",150); } else { $('constraintDateStart').disabled = true; } if ($('checkboxDateEnd').checked) { $('constraintDateEnd').disabled = false; setTimeout("$('constraintDateEnd').select()", 150); } else { $('constraintDateEnd').disabled = true; } }, // ================================================================================================== // doShowCalendar: function(whichDate) { // create calendar if not already initialized if (!this.DateConstrainCal) { this.DateConstrainCal = new YAHOO.widget.Calendar("DateContstrainCal","calendarDiv"); this.DateConstrainCal.selectEvent.subscribe(this.dateSelected, this.DateConstrainCal,true); } this.DateConstrainCal.clear(); // process click if (whichDate=='S') { if ($('checkboxDateStart').checked==false) { return; } var apos = Position.cumulativeOffset($('dropDateStart')); var cx = apos[0] - $("calendarDiv").getWidth() + $('dropDateStart').width + 3; var cy = apos[1] + $('dropDateStart').height + 3; $("calendarDiv").style.top = cy+'px'; $("calendarDiv").style.left = cx+'px'; $("constraintDateStart").select(); var sDateValue = $('constraintDateStart').value; } else { if ($('checkboxDateEnd').checked==false) { return; } var apos = Position.cumulativeOffset($('dropDateEnd')); var cx = apos[0] - $("calendarDiv").getWidth() + $('dropDateEnd').width + 3; var cy = apos[1] + $('dropDateEnd').height + 3; $("calendarDiv").style.top = cy+'px'; $("calendarDiv").style.left = cx+'px'; $("constraintDateEnd").select(); var sDateValue = $('constraintDateEnd').value; } var rxDate = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/ if (rxDate.test(sDateValue)) { var aDate = sDateValue.split(/\//); this.DateConstrainCal.setMonth(aDate[0]-1); this.DateConstrainCal.setYear(aDate[2]); } else { alert("Invalid Date Format, please use mm/dd/yyyy or select a date using the calendar."); } // save our date type on the calendar object for later use this.whichDate = whichDate; // display everything $("calendarDiv").show(); var w = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth); var h = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight); $("calendarDivMask").style.top = "0px"; $("calendarDivMask").style.left = "0px"; $("calendarDivMask").style.width = (w - 10) + "px"; $("calendarDivMask").style.height = (h - 10) + "px"; $("calendarDivMask").show(); this.DateConstrainCal.render(document.body); }, // ================================================================================================== // dateSelected: function(eventName, selectedDate) { // function is event callback fired by YUI Calendar control // (this function looses it's class scope) var cScope = i2b2.CRC.ctrlr.dateConstraint; if (cScope.whichDate=='S') { var tn = $('constraintDateStart'); } else { var tn = $('constraintDateEnd'); } var selectDate = selectedDate[0][0]; tn.value = selectDate[1]+'/'+selectDate[2]+'/'+selectDate[0]; cScope.hideCalendar.call(cScope); }, // ================================================================================================== // hideCalendar: function() { $("calendarDiv").hide(); $("calendarDivMask").hide(); }, // ================================================================================================== // doProcessDates: function(panelIndex) { // push the dates into the data model var sDateError = false; //^(0[1-9]|1[012])(\\|\-)(0[1-9]|[12][0-9]|3[01])(\\|\-)(19|20)\d\d$ ///^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/ var rxDate = /^([1-9]|0[1-9]|1[012])(\/|\-)([1-9]|0[1-9]|[12][0-9]|3[01])(\/|\-)(19|20)\d\d$/; var DateRecord = {}; var startChecked = $('checkboxDateStart').checked; var endChecked = $('checkboxDateEnd').checked; var startDate, endDate; var dm = i2b2.CRC.model.queryCurrent.panels[i2b2.CRC.ctrlr.QT.temporalGroup][panelIndex]; this.currentPanelIndex = panelIndex; // start date if (startChecked) { DateRecord.Start = {}; startDate = $('constraintDateStart').value; if (rxDate.test(startDate)) { var aDate = startDate.split(/\//); DateRecord.Start.Month = padNumber(aDate[0],2); DateRecord.Start.Day = padNumber(aDate[1],2); DateRecord.Start.Year = aDate[2]; } else { sDateError = "Invalid Start Date\n"; } } // test the end date. if (endChecked) { DateRecord.End = {}; endDate = $('constraintDateEnd').value; if (rxDate.test(endDate)) { var aDate = endDate.split(/\//); DateRecord.End.Month = padNumber(aDate[0]); DateRecord.End.Day = padNumber(aDate[1]); DateRecord.End.Year = aDate[2]; } else { sDateError = "Invalid End Date\n"; } } //make sure dates are in proper order. if(startDate && endDate) { var start = new Date(startDate); var end = new Date(endDate); - if(start.valueOf() >= end.valueOf()) { + if(start.valueOf() > end.valueOf()) { sDateError = "Invalid Date Range\n"; } } //must check //add an additional if statement that ensures start date is smaller than the end date. //if(sDate) // check for processing errors if (sDateError) { sDateError += "\nPlease use the following format: mm/dd/yyyy"; alert(sDateError); return false; } else { // attach the data to our panel data if (DateRecord.Start) { dm.dateFrom = DateRecord.Start; } else { delete dm.dateFrom; } if (DateRecord.End) { dm.dateTo = DateRecord.End; } else { delete dm.dateTo; } // clear the query name and set the query as having dirty data var QT = i2b2.CRC.ctrlr.QT; QT.doSetQueryName.call(QT,''); } // redraw buttons if needed var panelctrlFound = false; var pd = i2b2.CRC.ctrlr.QT; for (var i=0; i .box { margin-top: 1%; width: 100%; transition: all .2s ease; } - -.box.blue { - background: #1881CB; } - -.box.red { - background: #AD3137; } - -.box.black { - background: #424242; } + .box-wrapper > .box .hideextra { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + .box-wrapper > .box section { + margin: 20 0 6 0; } + .box-wrapper > .box section .v-full { + height: 90vh; } + .box-wrapper > .box section .v-full > table { + padding-bottom: 10%; } + .box-wrapper > .box section .v-min { + height: 100px; } + .box-wrapper > .box section .v-min > table { + padding-bottom: 1%; } + .box-wrapper > .box section .tbl-content { + overflow: auto; + margin-top: 0px; + border: 1px solid rgba(98, 108, 146, 0.3); } + .box-wrapper > .box table { + width: 100%; + table-layout: fixed; } + .box-wrapper > .box table .tbl-header { + background-color: rgba(98, 108, 146, 0.3); } + .box-wrapper > .box table .tbl-header div.tbl-header { + max-width: 5rem; } + .box-wrapper > .box table tr { + cursor: pointer; } + .box-wrapper > .box table tr:hover { + background: rgba(98, 108, 146, 0.3) !important; } + .box-wrapper > .box table th { + padding: 2px 4px 4px 2px; + text-align: left; + font-weight: 500; + font-size: .75rem; + color: #626C92; + text-transform: uppercase; + border-bottom: solid 1px rgba(98, 108, 146, 0.1); + border-left: solid 1px rgba(98, 108, 146, 0.1); } + .box-wrapper > .box table td { + transition: all .5s ease; + padding: 2px; + text-align: left; + vertical-align: top; + font-weight: 300; + font-size: 12px; + color: black; + border-bottom: solid 1px rgba(98, 108, 146, 0.1); + border-left: solid 1px rgba(98, 108, 146, 0.1); } .circle-pagination { position: absolute; z-index: 1000; list-style-type: none; margin: 0; top: -.3rem; } - -.circle-pagination li { - border-radius: 50%; - border: 2px solid #626C92; - width: 12px; - height: 12px; - padding: 4px; - margin: 6px; - cursor: pointer; - float: left; - transition: all .2s ease; } - -.circle-pagination li.active, -.circle-pagination li:hover { - background: #626C92; - width: 14px; - height: 14px; } - -.circle-pagination li.active div, -.circle-pagination li div:hover { - color: white; } - -.circle-pagination li div { - font-size: .6rem; - width: 24px; - position: relative; - left: -6px; - top: 1px; - color: #626C92; - font-weight: 600; - text-transform: capitalize; } - -h1 { - font-size: 30px; - color: #626C92; - text-transform: uppercase; - font-weight: 300; - text-align: center; - margin-bottom: 15px; } - -table { - width: 100%; - table-layout: fixed; } - -.tbl-header { - background-color: rgba(98, 108, 146, 0.3); } - -.tbl-header div.tbl-header { - max-width: 5rem; } - -@media screen and (-webkit-min-device-pixel-ratio: 0) and (min-height: 150px) { - .tbl-content { - height: 90% !important; } } - -.tbl-content { - height: 450px; - overflow-x: auto; - margin-top: 0px; - border: 1px solid rgba(98, 108, 146, 0.3); } - -.tbl-content tr { - cursor: pointer; } - -.tbl-content tr:hover { - background: rgba(98, 108, 146, 0.3) !important; } - -th { - padding: 2px 4px 4px 2px; - text-align: center; - font-weight: 500; - font-size: .75rem; - color: #626C92; - text-transform: uppercase; } - -td { - transition: all .5s ease; - padding: 2px; - text-align: center; - vertical-align: top; - font-weight: 300; - font-size: 12px; - color: black; - border-bottom: solid 1px rgba(98, 108, 146, 0.1); } - -section { - margin: 20 0 6 0; } - -/* for custom scrollbar for webkit browser*/ -::-webkit-scrollbar { - width: 8px; } - -::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(98, 108, 146, 0.3); } - -::-webkit-scrollbar-thumb { - -webkit-box-shadow: inset 0 0 6px #626c92; } - -.hideextra { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; } + .circle-pagination li { + border-radius: 50%; + border: 2px solid #626C92; + width: 12px; + height: 12px; + padding: 4px; + margin: 6px; + cursor: pointer; + float: left; + transition: all .2s ease; } + .circle-pagination li.active, .circle-pagination li:hover { + background: #626C92; + width: 14px; + height: 14px; } + .circle-pagination li.active div, + .circle-pagination li div:hover { + color: white; } + .circle-pagination li div { + font-size: .6rem; + width: 24px; + position: relative; + left: -6px; + top: 1px; + color: #626C92; + font-weight: 600; + text-transform: capitalize; } diff --git a/shrine-webclient/src/main/js/client/js-shrine/config.js b/shrine-webclient/src/main/js/client/js-shrine/config.js index b4a2777a5..28586e949 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/config.js +++ b/shrine-webclient/src/main/js/client/js-shrine/config.js @@ -1,333 +1,337 @@ System.config({ defaultJSExtensions: true, transpiler: false, paths: { "*": "dist/*", "github:*": "jspm_packages/github/*", "npm:*": "jspm_packages/npm/*" }, map: { "aurelia-animator-css": "npm:aurelia-animator-css@1.0.1", "aurelia-bootstrapper": "npm:aurelia-bootstrapper@1.0.0", "aurelia-fetch-client": "npm:aurelia-fetch-client@1.0.1", "aurelia-framework": "npm:aurelia-framework@1.0.6", "aurelia-history-browser": "npm:aurelia-history-browser@1.0.0", "aurelia-loader-default": "npm:aurelia-loader-default@1.0.0", "aurelia-logging-console": "npm:aurelia-logging-console@1.0.0", "aurelia-pal-browser": "npm:aurelia-pal-browser@1.0.0", "aurelia-polyfills": "npm:aurelia-polyfills@1.1.1", "aurelia-router": "npm:aurelia-router@1.3.0", "aurelia-templating-binding": "npm:aurelia-templating-binding@1.0.0", "aurelia-templating-resources": "npm:aurelia-templating-resources@1.1.1", "aurelia-templating-router": "npm:aurelia-templating-router@1.0.0", "bluebird": "npm:bluebird@3.4.1", "bootstrap": "github:twbs/bootstrap@3.3.7", "fetch": "github:github/fetch@1.0.0", "font-awesome": "npm:font-awesome@4.6.3", "jquery": "npm:jquery@2.2.4", "text": "github:systemjs/plugin-text@0.0.8", "github:jspm/nodelibs-assert@0.1.0": { "assert": "npm:assert@1.4.1" }, "github:jspm/nodelibs-buffer@0.1.0": { "buffer": "npm:buffer@3.6.0" }, "github:jspm/nodelibs-process@0.1.2": { "process": "npm:process@0.11.9" }, "github:jspm/nodelibs-util@0.1.0": { "util": "npm:util@0.10.3" }, "github:jspm/nodelibs-vm@0.1.0": { "vm-browserify": "npm:vm-browserify@0.0.4" }, "github:twbs/bootstrap@3.3.7": { "jquery": "npm:jquery@2.2.4" }, "npm:assert@1.4.1": { "assert": "github:jspm/nodelibs-assert@0.1.0", "buffer": "github:jspm/nodelibs-buffer@0.1.0", "process": "github:jspm/nodelibs-process@0.1.2", "util": "npm:util@0.10.3" }, "npm:aurelia-animator-css@1.0.1": { "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-templating": "npm:aurelia-templating@1.1.1" }, "npm:aurelia-binding@1.0.9": { "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-task-queue": "npm:aurelia-task-queue@1.1.0" }, "npm:aurelia-bootstrapper@1.0.0": { "aurelia-event-aggregator": "npm:aurelia-event-aggregator@1.0.1", "aurelia-framework": "npm:aurelia-framework@1.0.6", "aurelia-history": "npm:aurelia-history@1.0.0", "aurelia-history-browser": "npm:aurelia-history-browser@1.0.0", "aurelia-loader-default": "npm:aurelia-loader-default@1.0.0", "aurelia-logging-console": "npm:aurelia-logging-console@1.0.0", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-pal-browser": "npm:aurelia-pal-browser@1.0.0", "aurelia-polyfills": "npm:aurelia-polyfills@1.1.1", "aurelia-router": "npm:aurelia-router@1.3.0", "aurelia-templating": "npm:aurelia-templating@1.1.1", "aurelia-templating-binding": "npm:aurelia-templating-binding@1.0.0", "aurelia-templating-resources": "npm:aurelia-templating-resources@1.1.1", "aurelia-templating-router": "npm:aurelia-templating-router@1.0.0" }, "npm:aurelia-dependency-injection@1.3.1": { "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-event-aggregator@1.0.1": { "aurelia-logging": "npm:aurelia-logging@1.3.1" }, "npm:aurelia-framework@1.0.6": { "aurelia-binding": "npm:aurelia-binding@1.0.9", "aurelia-dependency-injection": "npm:aurelia-dependency-injection@1.3.1", "aurelia-loader": "npm:aurelia-loader@1.0.0", "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-path": "npm:aurelia-path@1.1.1", "aurelia-task-queue": "npm:aurelia-task-queue@1.1.0", "aurelia-templating": "npm:aurelia-templating@1.1.1" }, "npm:aurelia-history-browser@1.0.0": { "aurelia-history": "npm:aurelia-history@1.0.0", "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-loader-default@1.0.0": { "aurelia-loader": "npm:aurelia-loader@1.0.0", "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-loader@1.0.0": { "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-path": "npm:aurelia-path@1.1.1" }, "npm:aurelia-logging-console@1.0.0": { "aurelia-logging": "npm:aurelia-logging@1.3.1" }, "npm:aurelia-metadata@1.0.3": { "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-pal-browser@1.0.0": { "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-polyfills@1.1.1": { "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-route-recognizer@1.1.0": { "aurelia-path": "npm:aurelia-path@1.1.1" }, "npm:aurelia-router@1.3.0": { "aurelia-dependency-injection": "npm:aurelia-dependency-injection@1.3.1", "aurelia-event-aggregator": "npm:aurelia-event-aggregator@1.0.1", "aurelia-history": "npm:aurelia-history@1.0.0", "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-path": "npm:aurelia-path@1.1.1", "aurelia-route-recognizer": "npm:aurelia-route-recognizer@1.1.0" }, "npm:aurelia-task-queue@1.1.0": { "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-templating-binding@1.0.0": { "aurelia-binding": "npm:aurelia-binding@1.0.9", "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-templating": "npm:aurelia-templating@1.1.1" }, "npm:aurelia-templating-resources@1.1.1": { "aurelia-binding": "npm:aurelia-binding@1.0.9", "aurelia-dependency-injection": "npm:aurelia-dependency-injection@1.3.1", "aurelia-loader": "npm:aurelia-loader@1.0.0", "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-path": "npm:aurelia-path@1.1.1", "aurelia-task-queue": "npm:aurelia-task-queue@1.1.0", "aurelia-templating": "npm:aurelia-templating@1.1.1" }, "npm:aurelia-templating-router@1.0.0": { "aurelia-dependency-injection": "npm:aurelia-dependency-injection@1.3.1", "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-path": "npm:aurelia-path@1.1.1", "aurelia-router": "npm:aurelia-router@1.3.0", "aurelia-templating": "npm:aurelia-templating@1.1.1" }, "npm:aurelia-templating@1.1.1": { "aurelia-binding": "npm:aurelia-binding@1.0.9", "aurelia-dependency-injection": "npm:aurelia-dependency-injection@1.3.1", "aurelia-loader": "npm:aurelia-loader@1.0.0", "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-path": "npm:aurelia-path@1.1.1", "aurelia-task-queue": "npm:aurelia-task-queue@1.1.0" }, "npm:bluebird@3.4.1": { "process": "github:jspm/nodelibs-process@0.1.2" }, "npm:buffer@3.6.0": { "base64-js": "npm:base64-js@0.0.8", "child_process": "github:jspm/nodelibs-child_process@0.1.0", "fs": "github:jspm/nodelibs-fs@0.1.2", "ieee754": "npm:ieee754@1.1.8", "isarray": "npm:isarray@1.0.0", "process": "github:jspm/nodelibs-process@0.1.2" }, "npm:font-awesome@4.6.3": { "css": "github:systemjs/plugin-css@0.1.31" }, "npm:inherits@2.0.1": { "util": "github:jspm/nodelibs-util@0.1.0" }, "npm:process@0.11.9": { "assert": "github:jspm/nodelibs-assert@0.1.0", "fs": "github:jspm/nodelibs-fs@0.1.2", "vm": "github:jspm/nodelibs-vm@0.1.0" }, "npm:util@0.10.3": { "inherits": "npm:inherits@2.0.1", "process": "github:jspm/nodelibs-process@0.1.2" }, "npm:vm-browserify@0.0.4": { "indexof": "npm:indexof@0.0.1" } }, - depCache: { - "repository/qep.repository.js": [ - "aurelia-framework", - "aurelia-fetch-client", - "fetch" - ], - "views/mailto/mailto.js": [ - "aurelia-framework", - "views/mailto/mailto.service", - "views/mailto/mailto.config" - ], - "views/mailto/mailto.service.js": [ - "aurelia-framework", - "repository/qep.repository" - ], - "views/query-viewer/query-viewer.js": [ - "aurelia-framework", - "views/query-viewer/query-viewer.service" - ], - "views/query-viewer/query-viewer.service.js": [ - "aurelia-framework", - "repository/qep.repository", - "./query-viewer.config" - ] - }, bundles: { "app-build.js": [ + "common/i2b2.service.js", "main.js", "repository/qep.repository.js", "shell.html!github:systemjs/plugin-text@0.0.8.js", "shell.js", "views/mailto/mailto.config.js", "views/mailto/mailto.html!github:systemjs/plugin-text@0.0.8.js", "views/mailto/mailto.js", "views/mailto/mailto.service.js", "views/query-viewer/box-style.converter.js", "views/query-viewer/query-viewer.config.js", "views/query-viewer/query-viewer.html!github:systemjs/plugin-text@0.0.8.js", "views/query-viewer/query-viewer.js", + "views/query-viewer/query-viewer.model.js", "views/query-viewer/query-viewer.service.js", "views/query-viewer/result-style.converter.js", "views/query-viewer/result-value.converter.js" ], "aurelia.js": [ "github:github/fetch@1.0.0.js", "github:github/fetch@1.0.0/fetch.js", "npm:aurelia-binding@1.0.9.js", "npm:aurelia-binding@1.0.9/aurelia-binding.js", "npm:aurelia-bootstrapper@1.0.0.js", "npm:aurelia-bootstrapper@1.0.0/aurelia-bootstrapper.js", "npm:aurelia-dependency-injection@1.3.1.js", "npm:aurelia-dependency-injection@1.3.1/aurelia-dependency-injection.js", "npm:aurelia-event-aggregator@1.0.1.js", "npm:aurelia-event-aggregator@1.0.1/aurelia-event-aggregator.js", "npm:aurelia-fetch-client@1.0.1.js", "npm:aurelia-fetch-client@1.0.1/aurelia-fetch-client.js", "npm:aurelia-framework@1.0.6.js", "npm:aurelia-framework@1.0.6/aurelia-framework.js", "npm:aurelia-history-browser@1.0.0.js", "npm:aurelia-history-browser@1.0.0/aurelia-history-browser.js", "npm:aurelia-history@1.0.0.js", "npm:aurelia-history@1.0.0/aurelia-history.js", "npm:aurelia-loader-default@1.0.0.js", "npm:aurelia-loader-default@1.0.0/aurelia-loader-default.js", "npm:aurelia-loader@1.0.0.js", "npm:aurelia-loader@1.0.0/aurelia-loader.js", "npm:aurelia-logging-console@1.0.0.js", "npm:aurelia-logging-console@1.0.0/aurelia-logging-console.js", "npm:aurelia-logging@1.3.1.js", "npm:aurelia-logging@1.3.1/aurelia-logging.js", "npm:aurelia-metadata@1.0.3.js", "npm:aurelia-metadata@1.0.3/aurelia-metadata.js", "npm:aurelia-pal-browser@1.0.0.js", "npm:aurelia-pal-browser@1.0.0/aurelia-pal-browser.js", "npm:aurelia-pal@1.3.0.js", "npm:aurelia-pal@1.3.0/aurelia-pal.js", "npm:aurelia-path@1.1.1.js", "npm:aurelia-path@1.1.1/aurelia-path.js", "npm:aurelia-polyfills@1.1.1.js", "npm:aurelia-polyfills@1.1.1/aurelia-polyfills.js", "npm:aurelia-route-recognizer@1.1.0.js", "npm:aurelia-route-recognizer@1.1.0/aurelia-route-recognizer.js", "npm:aurelia-router@1.3.0.js", "npm:aurelia-router@1.3.0/aurelia-router.js", "npm:aurelia-task-queue@1.1.0.js", "npm:aurelia-task-queue@1.1.0/aurelia-task-queue.js", "npm:aurelia-templating-binding@1.0.0.js", "npm:aurelia-templating-binding@1.0.0/aurelia-templating-binding.js", "npm:aurelia-templating-resources@1.1.1.js", "npm:aurelia-templating-resources@1.1.1/abstract-repeater.js", "npm:aurelia-templating-resources@1.1.1/analyze-view-factory.js", "npm:aurelia-templating-resources@1.1.1/array-repeat-strategy.js", "npm:aurelia-templating-resources@1.1.1/attr-binding-behavior.js", "npm:aurelia-templating-resources@1.1.1/aurelia-hide-style.js", "npm:aurelia-templating-resources@1.1.1/aurelia-templating-resources.js", "npm:aurelia-templating-resources@1.1.1/binding-mode-behaviors.js", "npm:aurelia-templating-resources@1.1.1/binding-signaler.js", "npm:aurelia-templating-resources@1.1.1/compose.js", "npm:aurelia-templating-resources@1.1.1/css-resource.js", "npm:aurelia-templating-resources@1.1.1/debounce-binding-behavior.js", "npm:aurelia-templating-resources@1.1.1/dynamic-element.js", "npm:aurelia-templating-resources@1.1.1/focus.js", "npm:aurelia-templating-resources@1.1.1/hide.js", "npm:aurelia-templating-resources@1.1.1/html-resource-plugin.js", "npm:aurelia-templating-resources@1.1.1/html-sanitizer.js", "npm:aurelia-templating-resources@1.1.1/if.js", "npm:aurelia-templating-resources@1.1.1/map-repeat-strategy.js", "npm:aurelia-templating-resources@1.1.1/null-repeat-strategy.js", "npm:aurelia-templating-resources@1.1.1/number-repeat-strategy.js", "npm:aurelia-templating-resources@1.1.1/repeat-strategy-locator.js", "npm:aurelia-templating-resources@1.1.1/repeat-utilities.js", "npm:aurelia-templating-resources@1.1.1/repeat.js", "npm:aurelia-templating-resources@1.1.1/replaceable.js", "npm:aurelia-templating-resources@1.1.1/sanitize-html.js", "npm:aurelia-templating-resources@1.1.1/set-repeat-strategy.js", "npm:aurelia-templating-resources@1.1.1/show.js", "npm:aurelia-templating-resources@1.1.1/signal-binding-behavior.js", "npm:aurelia-templating-resources@1.1.1/throttle-binding-behavior.js", "npm:aurelia-templating-resources@1.1.1/update-trigger-binding-behavior.js", "npm:aurelia-templating-resources@1.1.1/with.js", "npm:aurelia-templating-router@1.0.0.js", "npm:aurelia-templating-router@1.0.0/aurelia-templating-router.js", "npm:aurelia-templating-router@1.0.0/route-href.js", "npm:aurelia-templating-router@1.0.0/route-loader.js", "npm:aurelia-templating-router@1.0.0/router-view.js", "npm:aurelia-templating@1.1.1.js", "npm:aurelia-templating@1.1.1/aurelia-templating.js", "npm:jquery@2.2.4.js", "npm:jquery@2.2.4/dist/jquery.js" ] + }, + depCache: { + "repository/qep.repository.js": [ + "aurelia-framework", + "aurelia-fetch-client", + "fetch" + ], + "views/mailto/mailto.js": [ + "aurelia-framework", + "views/mailto/mailto.service", + "views/mailto/mailto.config" + ], + "views/mailto/mailto.service.js": [ + "aurelia-framework", + "repository/qep.repository" + ], + "views/query-viewer/query-viewer.js": [ + "aurelia-framework", + "views/query-viewer/query-viewer.service", + "common/i2b2.service.js", + "./query-viewer.model" + ], + "views/query-viewer/query-viewer.service.js": [ + "aurelia-framework", + "repository/qep.repository", + "./query-viewer.config" + ] } }); \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/app-build.js b/shrine-webclient/src/main/js/client/js-shrine/dist/app-build.js index f01043142..4e59ec819 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/dist/app-build.js +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/app-build.js @@ -1 +1 @@ -"bundle";System.register("main.js",[],function(a,b){"use strict";function c(a){a.use.standardConfiguration().developmentLogging(),a.start().then(function(){return a.setRoot("shell")})}return a("configure",c),{setters:[],execute:function(){}}}),function(){var a=System.amdDefine;a("shell.html!github:systemjs/plugin-text@0.0.8.js",[],function(){return""})}(),System.register("shell.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("Shell",d=function(){function a(){c(this,a)}return a.prototype.configureRouter=function(a,b){a.title="SHRINE Webclient Plugin",a.map([{route:["","mailto"],moduleId:"views/mailto/mailto"},{route:"query-viewer",moduleId:"views/query-viewer/query-viewer"}]),this.router=b},a}()),a("Shell",d)}}}),function(){var a=System.amdDefine;a("views/mailto/mailto.html!github:systemjs/plugin-text@0.0.8.js",[],function(){return''})}(),System.register("views/mailto/mailto.service.js",["aurelia-framework","repository/qep.repository"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h;return{setters:[function(a){d=a.inject},function(a){e=a.QEPRepository}],execute:function(){a("MailToService",(f=d(e),h=f(g=function(){function a(b){c(this,a),this.repository=b}return a.prototype.fetchStewardEmail=function(){return this.repository.fetchStewardEmail()},a}())||g)),a("MailToService",h)}}}),System.register("views/mailto/mailto.config.js",[],function(a,b){"use strict";var c;return{setters:[],execute:function(){a("MailConfig",c={mailto:"mailto:",subject:"subject="+encodeURIComponent("Question from a SHRINE User"),body:encodeURIComponent("Please enter the suggested information and your question. Your data steward will reply to this email.\n\n***Never send patient information, passwords, or other sensitive information by email****\nName:\nTitle:\nUser name (to log into SHRINE):\nTelephone Number (optional):\nPreferred email address (optional):\n\nQuestion or Comment:")}),a("MailConfig",c)}}}),System.register("views/mailto/mailto.js",["aurelia-framework","views/mailto/mailto.service","views/mailto/mailto.config"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i;return{setters:[function(a){d=a.inject},function(a){e=a.MailToService},function(a){f=a.MailConfig}],execute:function(){a("MailTo",(g=d(e,f),i=g(h=function(){function a(b,d){c(this,a),this.service=b,this.config=d}return a.prototype.openEmail=function(){var a=this;this.service.fetchStewardEmail().then(function(b){return window.top.location=a.getComposition(b),a})},a.prototype.getComposition=function(a){return this.config.mailto+a+"?"+this.config.subject+"&"+this.config.body},a}())||h)),a("MailTo",i)}}}),System.register("views/query-viewer/box-style.converter.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("BoxStyleValueConverter",d=function(){function a(){c(this,a)}return a.prototype.toView=function(a){return"transform: translate("+String(-100*a)+"%);"},a}()),a("BoxStyleValueConverter",d)}}}),function(){var a=System.amdDefine;a("views/query-viewer/query-viewer.html!github:systemjs/plugin-text@0.0.8.js",[],function(){return''})}(),System.register("repository/qep.repository.js",["aurelia-framework","aurelia-fetch-client","fetch"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i;return{setters:[function(a){d=a.inject},function(a){e=a.HttpClient},function(a){}],execute:function(){f=function(){function a(a,b){for(var c=0;c0?a.split('"')[1]:a})["catch"](function(){return""})},f(a,[{key:"url",get:function(){var a=document.URL,b=":6443/shrine-metadata/";return a.substring(0,a.lastIndexOf(":"))+b}},{key:"auth",get:function(){var a=sessionStorage.getItem("shrine.auth");return sessionStorage.removeItem("shrine.auth"),a}}]),a}())||h)),a("QEPRepository",i)}}}),System.register("views/query-viewer/query-viewer.config.js",[],function(a,b){"use strict";var c;return{setters:[],execute:function(){a("QueryViewerConfig",c={maxNodesPerScreen:10}),a("QueryViewerConfig",c)}}}),System.register("views/query-viewer/query-viewer.service.js",["aurelia-framework","repository/qep.repository","./query-viewer.config"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i;return{setters:[function(a){d=a.inject},function(a){e=a.QEPRepository},function(a){f=a.QueryViewerConfig}],execute:function(){a("QueryViewerService",(g=d(e,f),i=g(h=function(){function a(b,d){c(this,a),this.repository=b,this.config=d}return a.prototype.fetchPreviousQueries=function(){return this.repository.fetchPreviousQueries()},a.prototype.getScreens=function(a,b){var c=this;return new Promise(function(d,e){for(var f=a.sort().length,g=[],h=0;h1})["catch"](function(a){return console.log(a)})})||h)),a("QueryViewer",i)}}}),System.register("views/query-viewer/result-style.converter.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("ResultStyleValueConverter",d=function(){function a(){c(this,a)}return a.prototype.toView=function(a){var b=this.isUnresolved(a)?"color:"+this.getColorValue(a):"";return b},a.prototype.isUnresolved=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"FINISHED";return!a||a.status!==b},a.prototype.getColorValue=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"ERROR",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"#FF0000",d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#00FF00";return a&&a.status!==b?d:c},a}()),a("ResultStyleValueConverter",d)}}}),System.register("views/query-viewer/result-value.converter.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("ResultValueConverter",d=function(){function a(){c(this,a)}return a.prototype.toView=function(a){return a?"FINISHED"!==a.status?a.status:a.count<0?"<10":a.count:"not available"},a}()),a("ResultValueConverter",d)}}}); \ No newline at end of file +"bundle";System.register("main.js",[],function(a,b){"use strict";function c(a){a.use.standardConfiguration().developmentLogging(),a.start().then(function(){return a.setRoot("shell")})}return a("configure",c),{setters:[],execute:function(){}}}),function(){var a=System.amdDefine;a("shell.html!github:systemjs/plugin-text@0.0.8.js",[],function(){return""})}(),System.register("shell.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("Shell",d=function(){function a(){c(this,a)}return a.prototype.configureRouter=function(a,b){a.title="SHRINE Webclient Plugin",a.map([{route:"mailto",moduleId:"views/mailto/mailto"},{route:["","query-viewer"],moduleId:"views/query-viewer/query-viewer"}]),this.router=b},a}()),a("Shell",d)}}}),function(){var a=System.amdDefine;a("views/mailto/mailto.html!github:systemjs/plugin-text@0.0.8.js",[],function(){return''})}(),System.register("views/mailto/mailto.service.js",["aurelia-framework","repository/qep.repository"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h;return{setters:[function(a){d=a.inject},function(a){e=a.QEPRepository}],execute:function(){a("MailToService",(f=d(e),h=f(g=function(){function a(b){c(this,a),this.repository=b}return a.prototype.fetchStewardEmail=function(){return this.repository.fetchStewardEmail()},a}())||g)),a("MailToService",h)}}}),System.register("views/mailto/mailto.config.js",[],function(a,b){"use strict";var c;return{setters:[],execute:function(){a("MailConfig",c={mailto:"mailto:",subject:"subject="+encodeURIComponent("Question from a SHRINE User"),body:encodeURIComponent("Please enter the suggested information and your question. Your data steward will reply to this email.\n\n***Never send patient information, passwords, or other sensitive information by email****\nName:\nTitle:\nUser name (to log into SHRINE):\nTelephone Number (optional):\nPreferred email address (optional):\n\nQuestion or Comment:")}),a("MailConfig",c)}}}),System.register("views/mailto/mailto.js",["aurelia-framework","views/mailto/mailto.service","views/mailto/mailto.config"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i;return{setters:[function(a){d=a.inject},function(a){e=a.MailToService},function(a){f=a.MailConfig}],execute:function(){a("MailTo",(g=d(e,f),i=g(h=function(){function a(b,d){c(this,a),this.service=b,this.config=d}return a.prototype.openEmail=function(){var a=this;this.service.fetchStewardEmail().then(function(b){return window.top.location=a.getComposition(b),a})},a.prototype.getComposition=function(a){return this.config.mailto+a+"?"+this.config.subject+"&"+this.config.body},a}())||h)),a("MailTo",i)}}}),System.register("views/query-viewer/box-style.converter.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("BoxStyleValueConverter",d=function(){function a(){c(this,a)}return a.prototype.toView=function(a){return"transform: translate("+String(-100*a)+"%);"},a}()),a("BoxStyleValueConverter",d)}}}),function(){var a=System.amdDefine;a("views/query-viewer/query-viewer.html!github:systemjs/plugin-text@0.0.8.js",[],function(){return''})}(),System.register("repository/qep.repository.js",["aurelia-framework","aurelia-fetch-client","fetch"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i;return{setters:[function(a){d=a.inject},function(a){e=a.HttpClient},function(a){}],execute:function(){f=function(){function a(a,b){for(var c=0;c0?a.split('"')[1]:a})["catch"](function(){return""})},f(a,[{key:"url",get:function(){var a=document.URL,b=":6443/shrine-metadata/";return a.substring(0,a.lastIndexOf(":"))+b}},{key:"auth",get:function(){var a=sessionStorage.getItem("shrine.auth");return sessionStorage.removeItem("shrine.auth"),a}}]),a}())||h)),a("QEPRepository",i)}}}),System.register("views/query-viewer/query-viewer.config.js",[],function(a,b){"use strict";var c;return{setters:[],execute:function(){a("QueryViewerConfig",c={maxNodesPerScreen:10}),a("QueryViewerConfig",c)}}}),System.register("views/query-viewer/query-viewer.service.js",["aurelia-framework","repository/qep.repository","./query-viewer.config"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i;return{setters:[function(a){d=a.inject},function(a){e=a.QEPRepository},function(a){f=a.QueryViewerConfig}],execute:function(){a("QueryViewerService",(g=d(e,f),i=g(h=function(){function a(b,d,e){c(this,a),this.repository=b,this.config=d}return a.prototype.fetchPreviousQueries=function(){return this.repository.fetchPreviousQueries()},a.prototype.getScreens=function(a,b){var c=this;return new Promise(function(d,e){for(var f=a.sort().length,g=[],h=0;h0&&void 0!==arguments[0]?arguments[0]:window;c(this,b);var d=e(a,"i2b2");this.onResize=function(a){return d?d.events.changedZoomWindows.subscribe(a):null},this.onHistory=function(a){return d?d.CRC.ctrlr.history.events.onDataUpdate.subscribe(a):null}}),a("I2B2Service",d),e=function(a,b){return g(a)?f(a)[b]:null},f=function(a){return a.parent.window},g=function(a){return a&&a.parent&&a.parent.window}}}}),System.register("views/query-viewer/query-viewer.model.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("QueryViewerModel",d=function b(){c(this,b),this.isLoaded=!1,this.screens=[]}),a("QueryViewerModel",d)}}}),System.register("views/query-viewer/query-viewer.js",["aurelia-framework","views/query-viewer/query-viewer.service","common/i2b2.service.js","./query-viewer.model"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i,j,k;return{setters:[function(a){d=a.inject,e=a.computedFrom},function(a){f=a.QueryViewerService},function(a){g=a.I2B2Service},function(a){h=a.QueryViewerModel}],execute:function(){a("QueryViewer",(i=d(f,g,h),k=i(j=function b(a,d,e){var f=this;c(this,b),this.screenIndex=0,this.showCircles=!1,this.service=a,this.vertStyle="v-min";var g=function(a){return f.service.getScreens(a.adapters,a.queryResults)},h=function(a){f.screens=a,f.showCircles=f.screens.length>1,e.screens=a,e.isLoaded=!0},i=function(){return f.service.fetchPreviousQueries().then(g).then(h)["catch"](function(a){return console.log(a)})},j=function(){return e.isLoaded?h(e.screens):i()},k=function(a){return"ADD"!==a.action};d.onResize(function(a,b){return f.vertStyle=b.find(k)?"v-min":"v-full"}),d.onHistory(i),j()})||j)),a("QueryViewer",k)}}}),System.register("views/query-viewer/result-style.converter.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("ResultStyleValueConverter",d=function(){function a(){c(this,a)}return a.prototype.toView=function(a){var b=this.isUnresolved(a)?"color:"+this.getColorValue(a):"";return b},a.prototype.isUnresolved=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"FINISHED";return!a||a.status!==b},a.prototype.getColorValue=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"ERROR",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"#FF0000",d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#00FF00";return a&&a.status!==b?d:c},a}()),a("ResultStyleValueConverter",d)}}}),System.register("views/query-viewer/result-value.converter.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("ResultValueConverter",d=function(){function a(){c(this,a)}return a.prototype.toView=function(a){return a?"FINISHED"!==a.status?a.status:a.count<0?"<=10":a.count:"not available"},a}()),a("ResultValueConverter",d)}}}); \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/common/i2b2.service.js b/shrine-webclient/src/main/js/client/js-shrine/dist/common/i2b2.service.js new file mode 100644 index 000000000..414b79660 --- /dev/null +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/common/i2b2.service.js @@ -0,0 +1,45 @@ +System.register([], function (_export, _context) { + "use strict"; + + var I2B2Service, getLib, getParent, hasParent; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + return { + setters: [], + execute: function () { + _export('I2B2Service', I2B2Service = function I2B2Service() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window; + + _classCallCheck(this, I2B2Service); + + var i2b2 = getLib(context, 'i2b2'); + this.onResize = function (f) { + return i2b2 ? i2b2.events.changedZoomWindows.subscribe(f) : null; + }; + this.onHistory = function (f) { + return i2b2 ? i2b2.CRC.ctrlr.history.events.onDataUpdate.subscribe(f) : null; + }; + }); + + _export('I2B2Service', I2B2Service); + + getLib = function getLib(context, lib) { + return hasParent(context) ? getParent(context)[lib] : null; + }; + + getParent = function getParent(context) { + return context.parent.window; + }; + + hasParent = function hasParent(context) { + return context && context.parent && context.parent.window; + }; + } + }; +}); +//# sourceMappingURL=i2b2.service.js.map diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/common/i2b2.service.js.map b/shrine-webclient/src/main/js/client/js-shrine/dist/common/i2b2.service.js.map new file mode 100644 index 000000000..362fe9845 --- /dev/null +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/common/i2b2.service.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["common/i2b2.service.js"],"names":["I2B2Service","context","window","i2b2","getLib","onResize","events","changedZoomWindows","subscribe","f","onHistory","CRC","ctrlr","history","onDataUpdate","lib","hasParent","getParent","parent"],"mappings":";;;;;;;;;;;;;;mCAAaA,W,GACT,uBAA8B;AAAA,oBAAlBC,OAAkB,uEAARC,MAAQ;;AAAA;;AAC1B,oBAAMC,OAAOC,OAAOH,OAAP,EAAgB,MAAhB,CAAb;AACA,qBAAKI,QAAL,GAAgB;AAAA,2BAAMF,IAAD,GAASA,KAAKG,MAAL,CAAYC,kBAAZ,CAA+BC,SAA/B,CAAyCC,CAAzC,CAAT,GAAuD,IAA5D;AAAA,iBAAhB;AACA,qBAAKC,SAAL,GAAiB;AAAA,2BAAMP,IAAD,GAAQA,KAAKQ,GAAL,CAASC,KAAT,CAAeC,OAAf,CAAuBP,MAAvB,CAA8BQ,YAA9B,CAA2CN,SAA3C,CAAqDC,CAArD,CAAR,GAAkE,IAAvE;AAAA,iBAAjB;AACH,a;;;;AAICL,kB,GAAS,SAATA,MAAS,CAACH,OAAD,EAAUc,GAAV;AAAA,uBAAkBC,UAAUf,OAAV,IAAqBgB,UAAUhB,OAAV,EAAmBc,GAAnB,CAArB,GAA+C,IAAjE;AAAA,a;;AACTE,qB,GAAY,SAAZA,SAAY,CAAChB,OAAD;AAAA,uBAAaA,QAAQiB,MAAR,CAAehB,MAA5B;AAAA,a;;AACZc,qB,GAAY,SAAZA,SAAY,CAACf,OAAD;AAAA,uBAAaA,WAAWA,QAAQiB,MAAnB,IAA6BjB,QAAQiB,MAAR,CAAehB,MAAzD;AAAA,a","file":"i2b2.service.js","sourceRoot":"/src"} \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/shell.js b/shrine-webclient/src/main/js/client/js-shrine/dist/shell.js index 843a83a0e..8e3d0b4e9 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/dist/shell.js +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/shell.js @@ -1,35 +1,35 @@ System.register([], function (_export, _context) { "use strict"; var Shell; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } return { setters: [], execute: function () { _export('Shell', Shell = function () { function Shell() { _classCallCheck(this, Shell); } Shell.prototype.configureRouter = function configureRouter(config, router) { config.title = 'SHRINE Webclient Plugin'; - config.map([{ route: ['', 'mailto'], moduleId: 'views/mailto/mailto' }, { route: 'query-viewer', moduleId: 'views/query-viewer/query-viewer' }]); + config.map([{ route: 'mailto', moduleId: 'views/mailto/mailto' }, { route: ['', 'query-viewer'], moduleId: 'views/query-viewer/query-viewer' }]); this.router = router; }; return Shell; }()); _export('Shell', Shell); } }; }); //# sourceMappingURL=shell.js.map diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/shell.js.map b/shrine-webclient/src/main/js/client/js-shrine/dist/shell.js.map index 08e5cd1c5..936f9e4ea 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/dist/shell.js.map +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/shell.js.map @@ -1 +1 @@ -{"version":3,"sources":["shell.js"],"names":["Shell","configureRouter","config","router","title","map","route","moduleId"],"mappings":";;;;;;;;;;;;;;uBAAaA,K;;;;;wBACXC,e,4BAAgBC,M,EAAQC,M,EAAQ;;AAE9BD,iBAAOE,KAAP,GAAe,yBAAf;AACAF,iBAAOG,GAAP,CAAW,CACT,EAACC,OAAO,CAAC,EAAD,EAAK,QAAL,CAAR,EAAwBC,UAAU,qBAAlC,EADS,EAET,EAACD,OAAO,cAAR,EAAwBC,UAAU,iCAAlC,EAFS,CAAX;;AAKA,eAAKJ,MAAL,GAAcA,MAAd;AACD,S","file":"shell.js","sourceRoot":"/src"} \ No newline at end of file +{"version":3,"sources":["shell.js"],"names":["Shell","configureRouter","config","router","title","map","route","moduleId"],"mappings":";;;;;;;;;;;;;;uBAAaA,K;;;;;wBACXC,e,4BAAgBC,M,EAAQC,M,EAAQ;;AAE9BD,iBAAOE,KAAP,GAAe,yBAAf;AACAF,iBAAOG,GAAP,CAAW,CACT,EAACC,OAAO,QAAR,EAAkBC,UAAU,qBAA5B,EADS,EAET,EAACD,OAAO,CAAC,EAAD,EAAK,cAAL,CAAR,EAA8BC,UAAU,iCAAxC,EAFS,CAAX;;AAKA,eAAKJ,MAAL,GAAcA,MAAd;AACD,S","file":"shell.js","sourceRoot":"/src"} \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.html b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.html index 0f5b51d0f..3e569108c 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.html +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.js b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.js index bec7ef1cd..34cdd2d4d 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.js +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.js @@ -1,44 +1,68 @@ -System.register(['aurelia-framework', 'views/query-viewer/query-viewer.service'], function (_export, _context) { +System.register(['aurelia-framework', 'views/query-viewer/query-viewer.service', 'common/i2b2.service.js', './query-viewer.model'], function (_export, _context) { "use strict"; - var inject, computedFrom, QueryViewerService, _dec, _class, QueryViewer; + var inject, computedFrom, QueryViewerService, I2B2Service, QueryViewerModel, _dec, _class, QueryViewer; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } return { setters: [function (_aureliaFramework) { inject = _aureliaFramework.inject; computedFrom = _aureliaFramework.computedFrom; }, function (_viewsQueryViewerQueryViewerService) { QueryViewerService = _viewsQueryViewerQueryViewerService.QueryViewerService; + }, function (_commonI2b2ServiceJs) { + I2B2Service = _commonI2b2ServiceJs.I2B2Service; + }, function (_queryViewerModel) { + QueryViewerModel = _queryViewerModel.QueryViewerModel; }], execute: function () { - _export('QueryViewer', QueryViewer = (_dec = inject(QueryViewerService), _dec(_class = function QueryViewer(service) { + _export('QueryViewer', QueryViewer = (_dec = inject(QueryViewerService, I2B2Service, QueryViewerModel), _dec(_class = function QueryViewer(service, i2b2Svc, model) { var _this = this; _classCallCheck(this, QueryViewer); this.screenIndex = 0; this.showCircles = false; this.service = service; - this.service.fetchPreviousQueries().then(function (result) { - var queries = result.queryResults; - var nodes = result.adapters; - return service.getScreens(nodes, queries); - }).then(function (screens) { + this.vertStyle = 'v-min'; + + var parseResultToScreens = function parseResultToScreens(result) { + return _this.service.getScreens(result.adapters, result.queryResults); + }; + var setVM = function setVM(screens) { _this.screens = screens; _this.showCircles = _this.screens.length > 1; - }).catch(function (error) { - return console.log(error); + model.screens = screens; + model.isLoaded = true; + }; + var refresh = function refresh() { + return _this.service.fetchPreviousQueries().then(parseResultToScreens).then(setVM).catch(function (error) { + return console.log(error); + }); + }; + + var init = function init() { + return model.isLoaded ? setVM(model.screens) : refresh(); + }; + + var isMinimized = function isMinimized(e) { + return e.action !== 'ADD'; + }; + i2b2Svc.onResize(function (a, b) { + return _this.vertStyle = b.find(isMinimized) ? 'v-min' : 'v-full'; }); + i2b2Svc.onHistory(refresh); + + init(); }) || _class)); _export('QueryViewer', QueryViewer); } }; }); //# sourceMappingURL=query-viewer.js.map diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.js.map b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.js.map index 9d6b4a030..7bf91badc 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.js.map +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.js.map @@ -1 +1 @@ -{"version":3,"sources":["views/query-viewer/query-viewer.js"],"names":["inject","computedFrom","QueryViewerService","QueryViewer","service","screenIndex","showCircles","fetchPreviousQueries","then","queries","result","queryResults","nodes","adapters","getScreens","screens","length","catch","console","log","error"],"mappings":";;;;;;;;;;;;;AAASA,kB,qBAAAA,M;AAAQC,wB,qBAAAA,Y;;AACRC,8B,uCAAAA,kB;;;mCAGIC,W,WADZH,OAAOE,kBAAP,C,gBAEG,qBAAYE,OAAZ,EAAqB;AAAA;;AAAA;;AACjB,qBAAKC,WAAL,GAAmB,CAAnB;AACA,qBAAKC,WAAL,GAAmB,KAAnB;AACA,qBAAKF,OAAL,GAAeA,OAAf;AACA,qBAAKA,OAAL,CACKG,oBADL,GAEKC,IAFL,CAEU,kBAAU;AACZ,wBAAMC,UAAUC,OAAOC,YAAvB;AACA,wBAAMC,QAAQF,OAAOG,QAArB;AACA,2BAAOT,QAAQU,UAAR,CAAmBF,KAAnB,EAA0BH,OAA1B,CAAP;AACH,iBANL,EAOKD,IAPL,CAOU,mBAAW;AACb,0BAAKO,OAAL,GAAeA,OAAf;AACA,0BAAKT,WAAL,GAAmB,MAAKS,OAAL,CAAaC,MAAb,GAAsB,CAAzC;AACH,iBAVL,EAWKC,KAXL,CAWW;AAAA,2BAASC,QAAQC,GAAR,CAAYC,KAAZ,CAAT;AAAA,iBAXX;AAYH,a","file":"query-viewer.js","sourceRoot":"/src"} \ No newline at end of file +{"version":3,"sources":["views/query-viewer/query-viewer.js"],"names":["inject","computedFrom","QueryViewerService","I2B2Service","QueryViewerModel","QueryViewer","service","i2b2Svc","model","screenIndex","showCircles","vertStyle","parseResultToScreens","getScreens","result","adapters","queryResults","setVM","screens","length","isLoaded","refresh","fetchPreviousQueries","then","catch","console","log","error","init","isMinimized","e","action","onResize","a","b","find","onHistory"],"mappings":";;;;;;;;;;;;;AAASA,kB,qBAAAA,M;AAAQC,wB,qBAAAA,Y;;AACRC,8B,uCAAAA,kB;;AACAC,uB,wBAAAA,W;;AACDC,4B,qBAAAA,gB;;;mCAGKC,W,WADZL,OAAOE,kBAAP,EAA2BC,WAA3B,EAAwCC,gBAAxC,C,gBAEG,qBAAYE,OAAZ,EAAqBC,OAArB,EAA8BC,KAA9B,EAAqC;AAAA;;AAAA;;AAGjC,qBAAKC,WAAL,GAAmB,CAAnB;AACA,qBAAKC,WAAL,GAAmB,KAAnB;AACA,qBAAKJ,OAAL,GAAeA,OAAf;AACA,qBAAKK,SAAL,GAAiB,OAAjB;;AAGA,oBAAMC,uBAAuB,SAAvBA,oBAAuB;AAAA,2BAAU,MAAKN,OAAL,CAAaO,UAAb,CAAwBC,OAAOC,QAA/B,EAAyCD,OAAOE,YAAhD,CAAV;AAAA,iBAA7B;AACA,oBAAMC,QAAQ,SAARA,KAAQ,UAAW;AACrB,0BAAKC,OAAL,GAAeA,OAAf;AACA,0BAAKR,WAAL,GAAmB,MAAKQ,OAAL,CAAaC,MAAb,GAAsB,CAAzC;AACAX,0BAAMU,OAAN,GAAgBA,OAAhB;AACAV,0BAAMY,QAAN,GAAiB,IAAjB;AACH,iBALD;AAMA,oBAAMC,UAAU,SAAVA,OAAU;AAAA,2BAAM,MAAKf,OAAL,CACjBgB,oBADiB,GAEjBC,IAFiB,CAEZX,oBAFY,EAGjBW,IAHiB,CAGZN,KAHY,EAIjBO,KAJiB,CAIX;AAAA,+BAASC,QAAQC,GAAR,CAAYC,KAAZ,CAAT;AAAA,qBAJW,CAAN;AAAA,iBAAhB;;AAMA,oBAAMC,OAAO,SAAPA,IAAO;AAAA,2BAAOpB,MAAMY,QAAP,GAAkBH,MAAMT,MAAMU,OAAZ,CAAlB,GAAyCG,SAA/C;AAAA,iBAAb;;AAGA,oBAAMQ,cAAc,SAAdA,WAAc;AAAA,2BAAKC,EAAEC,MAAF,KAAa,KAAlB;AAAA,iBAApB;AACAxB,wBAAQyB,QAAR,CAAiB,UAACC,CAAD,EAAIC,CAAJ;AAAA,2BAAU,MAAKvB,SAAL,GAAiBuB,EAAEC,IAAF,CAAON,WAAP,IAAsB,OAAtB,GAAgC,QAA3D;AAAA,iBAAjB;AACAtB,wBAAQ6B,SAAR,CAAkBf,OAAlB;;AAGAO;AACH,a","file":"query-viewer.js","sourceRoot":"/src"} \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.model.js b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.model.js new file mode 100644 index 000000000..09e4cce64 --- /dev/null +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.model.js @@ -0,0 +1,26 @@ +System.register([], function (_export, _context) { + "use strict"; + + var QueryViewerModel; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + return { + setters: [], + execute: function () { + _export("QueryViewerModel", QueryViewerModel = function QueryViewerModel() { + _classCallCheck(this, QueryViewerModel); + + this.isLoaded = false; + this.screens = []; + }); + + _export("QueryViewerModel", QueryViewerModel); + } + }; +}); +//# sourceMappingURL=query-viewer.model.js.map diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.model.js.map b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.model.js.map new file mode 100644 index 000000000..cf2fee99a --- /dev/null +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.model.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["views/query-viewer/query-viewer.model.js"],"names":["QueryViewerModel","isLoaded","screens"],"mappings":";;;;;;;;;;;;;;wCAAaA,gB,GACT,4BAAc;AAAA;;AACV,qBAAKC,QAAL,GAAgB,KAAhB;AACA,qBAAKC,OAAL,GAAe,EAAf;AACH,a","file":"query-viewer.model.js","sourceRoot":"/src"} \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.service.js b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.service.js index 5410b8f69..e2d66de78 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.service.js +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.service.js @@ -1,91 +1,91 @@ System.register(['aurelia-framework', 'repository/qep.repository', './query-viewer.config'], function (_export, _context) { "use strict"; var inject, QEPRepository, QueryViewerConfig, _dec, _class, QueryViewerService; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } return { setters: [function (_aureliaFramework) { inject = _aureliaFramework.inject; }, function (_repositoryQepRepository) { QEPRepository = _repositoryQepRepository.QEPRepository; }, function (_queryViewerConfig) { QueryViewerConfig = _queryViewerConfig.QueryViewerConfig; }], execute: function () { _export('QueryViewerService', QueryViewerService = (_dec = inject(QEPRepository, QueryViewerConfig), _dec(_class = function () { - function QueryViewerService(repository, config) { + function QueryViewerService(repository, config, i2b2Svc) { _classCallCheck(this, QueryViewerService); this.repository = repository; this.config = config; } QueryViewerService.prototype.fetchPreviousQueries = function fetchPreviousQueries() { return this.repository.fetchPreviousQueries(); }; QueryViewerService.prototype.getScreens = function getScreens(nodes, queries) { var _this = this; return new Promise(function (resolve, reject) { var lastNodeIndex = nodes.sort().length; var screens = []; for (var i = 0; i < lastNodeIndex; i = i + _this.config.maxNodesPerScreen) { var numberOfNodesOnScreen = _this.getNumberOfNodesOnScreen(nodes, i, _this.config.maxNodesPerScreen); var endIndex = numberOfNodesOnScreen - 1; var screenId = _this.getScreenId(nodes, i, endIndex); var screenNodes = nodes.slice(i, numberOfNodesOnScreen); var screenNodesToQueriesMap = _this.mapQueriesToScreenNodes(screenNodes, queries, _this.findQueriesForNode); screens.push({ id: screenId, nodes: screenNodes, results: screenNodesToQueriesMap }); } resolve(screens); }); }; QueryViewerService.prototype.mapQueriesToScreenNodes = function mapQueriesToScreenNodes(nodes, queries) { var results = []; queries.forEach(function (q, i) { var result = { name: q.query.queryName, id: q.query.networkId, nodeResults: [] }; nodes.forEach(function (n) { result.nodeResults.push(q.adaptersToResults.find(function (a) { return a.adapterNode === n; })); }); results.push(result); }); return results; }; QueryViewerService.prototype.getNumberOfNodesOnScreen = function getNumberOfNodesOnScreen(nodes, startIndex) { var numNodes = startIndex + this.config.maxNodesPerScreen; return numNodes < nodes.length ? numNodes : nodes.length; }; QueryViewerService.prototype.getScreenId = function getScreenId(nodes, start, end) { var startNode = nodes[start]; var endNode = nodes[end]; return String(startNode).substr(0, 1) + '-' + String(endNode).substr(0, 1); }; return QueryViewerService; }()) || _class)); _export('QueryViewerService', QueryViewerService); } }; }); //# sourceMappingURL=query-viewer.service.js.map diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.service.js.map b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.service.js.map index e0d702e22..317cb552b 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.service.js.map +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/query-viewer.service.js.map @@ -1 +1 @@ -{"version":3,"sources":["views/query-viewer/query-viewer.service.js"],"names":["inject","QEPRepository","QueryViewerConfig","QueryViewerService","repository","config","fetchPreviousQueries","getScreens","nodes","queries","Promise","resolve","reject","lastNodeIndex","sort","length","screens","i","maxNodesPerScreen","numberOfNodesOnScreen","getNumberOfNodesOnScreen","endIndex","screenId","getScreenId","screenNodes","slice","screenNodesToQueriesMap","mapQueriesToScreenNodes","findQueriesForNode","push","id","results","forEach","q","result","name","query","queryName","networkId","nodeResults","adaptersToResults","find","a","adapterNode","n","startIndex","numNodes","start","end","startNode","endNode","String","substr"],"mappings":";;;;;;;;;;;;;AAASA,kB,qBAAAA,M;;AACDC,yB,4BAAAA,a;;AACAC,6B,sBAAAA,iB;;;0CAGKC,kB,WADZH,OAAOC,aAAP,EAAsBC,iBAAtB,C;AAEG,4CAAYE,UAAZ,EAAwBC,MAAxB,EAAgC;AAAA;;AAC5B,yBAAKD,UAAL,GAAkBA,UAAlB;AACA,yBAAKC,MAAL,GAAcA,MAAd;AACH;;6CAEDC,oB,mCAAuB;AACnB,2BAAO,KAAKF,UAAL,CAAgBE,oBAAhB,EAAP;AACH,iB;;6CAEDC,U,uBAAWC,K,EAAOC,O,EAAS;AAAA;;AACvB,2BAAO,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AACpC,4BAAMC,gBAAgBL,MAAMM,IAAN,GAAaC,MAAnC;AACA,4BAAMC,UAAU,EAAhB;AACA,6BAAK,IAAIC,IAAI,CAAb,EAAgBA,IAAIJ,aAApB,EAAmCI,IAAIA,IAAI,MAAKZ,MAAL,CAAYa,iBAAvD,EAA0E;AACtE,gCAAMC,wBAAwB,MAAKC,wBAAL,CAA8BZ,KAA9B,EAAqCS,CAArC,EAAwC,MAAKZ,MAAL,CAAYa,iBAApD,CAA9B;AACA,gCAAMG,WAAWF,wBAAwB,CAAzC;AACA,gCAAMG,WAAW,MAAKC,WAAL,CAAiBf,KAAjB,EAAwBS,CAAxB,EAA2BI,QAA3B,CAAjB;AACA,gCAAMG,cAAchB,MAAMiB,KAAN,CAAYR,CAAZ,EAAeE,qBAAf,CAApB;AACA,gCAAMO,0BAA0B,MAAKC,uBAAL,CAA6BH,WAA7B,EAA0Cf,OAA1C,EAAmD,MAAKmB,kBAAxD,CAAhC;AACAZ,oCAAQa,IAAR,CAAa;AACTC,oCAAIR,QADK;AAETd,uCAAOgB,WAFE;AAGTO,yCAASL;AAHA,6BAAb;AAKH;AACDf,gCAAQK,OAAR;AACH,qBAhBM,CAAP;AAiBH,iB;;6CAEDW,uB,oCAAwBnB,K,EAAOC,O,EAAS;AACpC,wBAAMsB,UAAU,EAAhB;AACAtB,4BAAQuB,OAAR,CAAiB,UAACC,CAAD,EAAIhB,CAAJ,EAAU;AACvB,4BAAMiB,SAAS;AACXC,kCAAMF,EAAEG,KAAF,CAAQC,SADH;AAEXP,gCAAIG,EAAEG,KAAF,CAAQE,SAFD;AAGXC,yCAAa;AAHF,yBAAf;AAKA/B,8BAAMwB,OAAN,CAAc,aAAK;AACfE,mCAAOK,WAAP,CAAmBV,IAAnB,CAAwBI,EAAEO,iBAAF,CAAoBC,IAApB,CAA0B;AAAA,uCAAKC,EAAEC,WAAF,KAAkBC,CAAvB;AAAA,6BAA1B,CAAxB;AACH,yBAFD;AAGAb,gCAAQF,IAAR,CAAaK,MAAb;AACH,qBAVD;AAWA,2BAAOH,OAAP;AACH,iB;;6CAEDX,wB,qCAAyBZ,K,EAAOqC,U,EAAY;AACxC,wBAAMC,WAAWD,aAAa,KAAKxC,MAAL,CAAYa,iBAA1C;AACA,2BAAO4B,WAAWtC,MAAMO,MAAjB,GAA0B+B,QAA1B,GAAqCtC,MAAMO,MAAlD;AACH,iB;;6CAEDQ,W,wBAAYf,K,EAAOuC,K,EAAOC,G,EAAK;AAC3B,wBAAMC,YAAYzC,MAAMuC,KAAN,CAAlB;AACA,wBAAMG,UAAU1C,MAAMwC,GAAN,CAAhB;AACA,2BAAOG,OAAOF,SAAP,EAAkBG,MAAlB,CAAyB,CAAzB,EAA4B,CAA5B,IAAiC,GAAjC,GAAuCD,OAAOD,OAAP,EAAgBE,MAAhB,CAAuB,CAAvB,EAA0B,CAA1B,CAA9C;AACH,iB","file":"query-viewer.service.js","sourceRoot":"/src"} \ No newline at end of file +{"version":3,"sources":["views/query-viewer/query-viewer.service.js"],"names":["inject","QEPRepository","QueryViewerConfig","QueryViewerService","repository","config","i2b2Svc","fetchPreviousQueries","getScreens","nodes","queries","Promise","resolve","reject","lastNodeIndex","sort","length","screens","i","maxNodesPerScreen","numberOfNodesOnScreen","getNumberOfNodesOnScreen","endIndex","screenId","getScreenId","screenNodes","slice","screenNodesToQueriesMap","mapQueriesToScreenNodes","findQueriesForNode","push","id","results","forEach","q","result","name","query","queryName","networkId","nodeResults","adaptersToResults","find","a","adapterNode","n","startIndex","numNodes","start","end","startNode","endNode","String","substr"],"mappings":";;;;;;;;;;;;;AAAQA,kB,qBAAAA,M;;AACAC,yB,4BAAAA,a;;AACAC,6B,sBAAAA,iB;;;0CAIKC,kB,WADZH,OAAOC,aAAP,EAAsBC,iBAAtB,C;AAEG,4CAAYE,UAAZ,EAAwBC,MAAxB,EAAgCC,OAAhC,EAAyC;AAAA;;AACrC,yBAAKF,UAAL,GAAkBA,UAAlB;AACA,yBAAKC,MAAL,GAAcA,MAAd;AACH;;6CAEDE,oB,mCAAuB;AACnB,2BAAO,KAAKH,UAAL,CAAgBG,oBAAhB,EAAP;AACH,iB;;6CAEDC,U,uBAAWC,K,EAAOC,O,EAAS;AAAA;;AACvB,2BAAO,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AACpC,4BAAMC,gBAAgBL,MAAMM,IAAN,GAAaC,MAAnC;AACA,4BAAMC,UAAU,EAAhB;AACA,6BAAK,IAAIC,IAAI,CAAb,EAAgBA,IAAIJ,aAApB,EAAmCI,IAAIA,IAAI,MAAKb,MAAL,CAAYc,iBAAvD,EAA0E;AACtE,gCAAMC,wBAAwB,MAAKC,wBAAL,CAA8BZ,KAA9B,EAAqCS,CAArC,EAAwC,MAAKb,MAAL,CAAYc,iBAApD,CAA9B;AACA,gCAAMG,WAAWF,wBAAwB,CAAzC;AACA,gCAAMG,WAAW,MAAKC,WAAL,CAAiBf,KAAjB,EAAwBS,CAAxB,EAA2BI,QAA3B,CAAjB;AACA,gCAAMG,cAAchB,MAAMiB,KAAN,CAAYR,CAAZ,EAAeE,qBAAf,CAApB;AACA,gCAAMO,0BAA0B,MAAKC,uBAAL,CAA6BH,WAA7B,EAA0Cf,OAA1C,EAAmD,MAAKmB,kBAAxD,CAAhC;AACAZ,oCAAQa,IAAR,CAAa;AACTC,oCAAIR,QADK;AAETd,uCAAOgB,WAFE;AAGTO,yCAASL;AAHA,6BAAb;AAKH;AACDf,gCAAQK,OAAR;AACH,qBAhBM,CAAP;AAiBH,iB;;6CAEDW,uB,oCAAwBnB,K,EAAOC,O,EAAS;AACpC,wBAAMsB,UAAU,EAAhB;AACAtB,4BAAQuB,OAAR,CAAiB,UAACC,CAAD,EAAIhB,CAAJ,EAAU;AACvB,4BAAMiB,SAAS;AACXC,kCAAMF,EAAEG,KAAF,CAAQC,SADH;AAEXP,gCAAIG,EAAEG,KAAF,CAAQE,SAFD;AAGXC,yCAAa;AAHF,yBAAf;AAKA/B,8BAAMwB,OAAN,CAAc,aAAK;AACfE,mCAAOK,WAAP,CAAmBV,IAAnB,CAAwBI,EAAEO,iBAAF,CAAoBC,IAApB,CAA0B;AAAA,uCAAKC,EAAEC,WAAF,KAAkBC,CAAvB;AAAA,6BAA1B,CAAxB;AACH,yBAFD;AAGAb,gCAAQF,IAAR,CAAaK,MAAb;AACH,qBAVD;AAWA,2BAAOH,OAAP;AACH,iB;;6CAEDX,wB,qCAAyBZ,K,EAAOqC,U,EAAY;AACxC,wBAAMC,WAAWD,aAAa,KAAKzC,MAAL,CAAYc,iBAA1C;AACA,2BAAO4B,WAAWtC,MAAMO,MAAjB,GAA0B+B,QAA1B,GAAqCtC,MAAMO,MAAlD;AACH,iB;;6CAEDQ,W,wBAAYf,K,EAAOuC,K,EAAOC,G,EAAK;AAC3B,wBAAMC,YAAYzC,MAAMuC,KAAN,CAAlB;AACA,wBAAMG,UAAU1C,MAAMwC,GAAN,CAAhB;AACA,2BAAOG,OAAOF,SAAP,EAAkBG,MAAlB,CAAyB,CAAzB,EAA4B,CAA5B,IAAiC,GAAjC,GAAuCD,OAAOD,OAAP,EAAgBE,MAAhB,CAAuB,CAAvB,EAA0B,CAA1B,CAA9C;AACH,iB","file":"query-viewer.service.js","sourceRoot":"/src"} \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/result-value.converter.js b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/result-value.converter.js index 67d15fb97..358c8f4f9 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/result-value.converter.js +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/result-value.converter.js @@ -1,38 +1,38 @@ System.register([], function (_export, _context) { "use strict"; var ResultValueConverter; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } return { setters: [], execute: function () { _export('ResultValueConverter', ResultValueConverter = function () { function ResultValueConverter() { _classCallCheck(this, ResultValueConverter); } ResultValueConverter.prototype.toView = function toView(value) { if (!value) { return 'not available'; } if (value.status !== "FINISHED") { return value.status; } - return value.count < 0 ? '<10' : value.count; + return value.count < 0 ? '<=10' : value.count; }; return ResultValueConverter; }()); _export('ResultValueConverter', ResultValueConverter); } }; }); //# sourceMappingURL=result-value.converter.js.map diff --git a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/result-value.converter.js.map b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/result-value.converter.js.map index 3e26c723e..975dc3080 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/result-value.converter.js.map +++ b/shrine-webclient/src/main/js/client/js-shrine/dist/views/query-viewer/result-value.converter.js.map @@ -1 +1 @@ -{"version":3,"sources":["views/query-viewer/result-value.converter.js"],"names":["ResultValueConverter","toView","value","status","count"],"mappings":";;;;;;;;;;;;;;4CAAaA,oB;;;;;+CACTC,M,mBAAOC,K,EAAO;AACV,wBAAI,CAACA,KAAL,EAAY;AACR,+BAAO,eAAP;AACH;;AAED,wBAAIA,MAAMC,MAAN,KAAiB,UAArB,EAAiC;AAC7B,+BAAOD,MAAMC,MAAb;AACH;AACD,2BAAOD,MAAME,KAAN,GAAc,CAAd,GAAiB,KAAjB,GAAyBF,MAAME,KAAtC;AACH,iB","file":"result-value.converter.js","sourceRoot":"/src"} \ No newline at end of file +{"version":3,"sources":["views/query-viewer/result-value.converter.js"],"names":["ResultValueConverter","toView","value","status","count"],"mappings":";;;;;;;;;;;;;;4CAAaA,oB;;;;;+CACTC,M,mBAAOC,K,EAAO;AACV,wBAAI,CAACA,KAAL,EAAY;AACR,+BAAO,eAAP;AACH;;AAED,wBAAIA,MAAMC,MAAN,KAAiB,UAArB,EAAiC;AAC7B,+BAAOD,MAAMC,MAAb;AACH;AACD,2BAAOD,MAAME,KAAN,GAAc,CAAd,GAAiB,MAAjB,GAA0BF,MAAME,KAAvC;AACH,iB","file":"result-value.converter.js","sourceRoot":"/src"} \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/export/assets/css/styles.css b/shrine-webclient/src/main/js/client/js-shrine/export/assets/css/styles.css index b3f1d87b8..6b8404978 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/export/assets/css/styles.css +++ b/shrine-webclient/src/main/js/client/js-shrine/export/assets/css/styles.css @@ -1,206 +1,150 @@ -/** { - box-sizing: border-box; -} -html, -body { - height: 100%; -}*/ .mailto { box-sizing: border-box; display: flex; justify-content: center; align-items: center; width: 100%; height: 100%; padding: 10px; - font-family: 'Source Sans Pro', serif; color: #333; background: #f2f2f2; - height: 100%; } - -.mailto p { - font-size: 16px; - line-height: 1.6em; } - -.mailto .button { - border: 1px solid #6576a8; - background: #6d85ad; - border: 0; - outline: 0; - font-family: 'Source Sans Pro', serif; - font-weight: bold; - text-transform: uppercase; - text-decoration: none; - letter-spacing: 1px; - color: #fff; - cursor: pointer; } - -.mailto .button:hover { - background: #9cb8d9; } - -.mailto .button:active { - background: #6576a8; } - -.mailto .button--large { - position: relative; - padding: 15px 30px; - border-radius: 5px; - font-size: 16px; } - -.mailto .button--large:active { - top: 1px; } - -.mailto .content { - max-width: 350px; - text-align: center; } - -.mailto .email { - position: relative; } + height: 100% p; + height-font-size: 16px; + height-line-height: 1.6em; } + .mailto .button { + border: 1px solid #6576a8; + background: #6d85ad; + border: 0; + outline: 0; + font-weight: bold; + text-transform: uppercase; + text-decoration: none; + letter-spacing: 1px; + color: #fff; + cursor: pointer; } + .mailto .button:hover { + background: #9cb8d9; } + .mailto .button:active { + background: #6576a8; } + .mailto .button--large { + position: relative; + padding: 15px 30px; + border-radius: 5px; + font-size: 16px; } + .mailto .button--large:active { + top: 1px; } + .mailto .content { + max-width: 350px; + text-align: center; } + .mailto .email { + position: relative; } @import url(http://fonts.googleapis.com/css?family=Roboto:400,500,300,700); body { overflow: hidden; - /*background: -webkit-linear-gradient(left, #6B73A2, #9BB5DA); - background: linear-gradient(to bottom, #6B73A2, #9BB5DA);*/ background: rgba(255, 255, 255, 0.9); font-family: 'Roboto', sans-serif; } html, body, .box-wrapper { width: 100%; height: 100%; margin: 0; } .box-wrapper { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -ms-flex-wrap: wrap; flex-wrap: wrap; } -.box { +.box-wrapper > .box { margin-top: 1%; width: 100%; transition: all .2s ease; } - -.box.blue { - background: #1881CB; } - -.box.red { - background: #AD3137; } - -.box.black { - background: #424242; } + .box-wrapper > .box .hideextra { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + .box-wrapper > .box section { + margin: 20 0 6 0; } + .box-wrapper > .box section .v-full { + height: 90vh; } + .box-wrapper > .box section .v-full > table { + padding-bottom: 10%; } + .box-wrapper > .box section .v-min { + height: 100px; } + .box-wrapper > .box section .v-min > table { + padding-bottom: 1%; } + .box-wrapper > .box section .tbl-content { + overflow: auto; + margin-top: 0px; + border: 1px solid rgba(98, 108, 146, 0.3); } + .box-wrapper > .box table { + width: 100%; + table-layout: fixed; } + .box-wrapper > .box table .tbl-header { + background-color: rgba(98, 108, 146, 0.3); } + .box-wrapper > .box table .tbl-header div.tbl-header { + max-width: 5rem; } + .box-wrapper > .box table tr { + cursor: pointer; } + .box-wrapper > .box table tr:hover { + background: rgba(98, 108, 146, 0.3) !important; } + .box-wrapper > .box table th { + padding: 2px 4px 4px 2px; + text-align: left; + font-weight: 500; + font-size: .75rem; + color: #626C92; + text-transform: uppercase; + border-bottom: solid 1px rgba(98, 108, 146, 0.1); + border-left: solid 1px rgba(98, 108, 146, 0.1); } + .box-wrapper > .box table td { + transition: all .5s ease; + padding: 2px; + text-align: left; + vertical-align: top; + font-weight: 300; + font-size: 12px; + color: black; + border-bottom: solid 1px rgba(98, 108, 146, 0.1); + border-left: solid 1px rgba(98, 108, 146, 0.1); } .circle-pagination { position: absolute; z-index: 1000; list-style-type: none; margin: 0; top: -.3rem; } - -.circle-pagination li { - border-radius: 50%; - border: 2px solid #626C92; - width: 12px; - height: 12px; - padding: 4px; - margin: 6px; - cursor: pointer; - float: left; - transition: all .2s ease; } - -.circle-pagination li.active, -.circle-pagination li:hover { - background: #626C92; - width: 14px; - height: 14px; } - -.circle-pagination li.active div, -.circle-pagination li div:hover { - color: white; } - -.circle-pagination li div { - font-size: .6rem; - width: 24px; - position: relative; - left: -6px; - top: 1px; - color: #626C92; - font-weight: 600; - text-transform: capitalize; } - -h1 { - font-size: 30px; - color: #626C92; - text-transform: uppercase; - font-weight: 300; - text-align: center; - margin-bottom: 15px; } - -table { - width: 100%; - table-layout: fixed; } - -.tbl-header { - background-color: rgba(98, 108, 146, 0.3); } - -.tbl-header div.tbl-header { - max-width: 5rem; } - -@media screen and (-webkit-min-device-pixel-ratio: 0) and (min-height: 150px) { - .tbl-content { - height: 90% !important; } } - -.tbl-content { - height: 450px; - overflow-x: auto; - margin-top: 0px; - border: 1px solid rgba(98, 108, 146, 0.3); } - -.tbl-content tr { - cursor: pointer; } - -.tbl-content tr:hover { - background: rgba(98, 108, 146, 0.3) !important; } - -th { - padding: 2px 4px 4px 2px; - text-align: center; - font-weight: 500; - font-size: .75rem; - color: #626C92; - text-transform: uppercase; } - -td { - transition: all .5s ease; - padding: 2px; - text-align: center; - vertical-align: top; - font-weight: 300; - font-size: 12px; - color: black; - border-bottom: solid 1px rgba(98, 108, 146, 0.1); } - -section { - margin: 20 0 6 0; } - -/* for custom scrollbar for webkit browser*/ -::-webkit-scrollbar { - width: 8px; } - -::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(98, 108, 146, 0.3); } - -::-webkit-scrollbar-thumb { - -webkit-box-shadow: inset 0 0 6px #626c92; } - -.hideextra { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; } + .circle-pagination li { + border-radius: 50%; + border: 2px solid #626C92; + width: 12px; + height: 12px; + padding: 4px; + margin: 6px; + cursor: pointer; + float: left; + transition: all .2s ease; } + .circle-pagination li.active, .circle-pagination li:hover { + background: #626C92; + width: 14px; + height: 14px; } + .circle-pagination li.active div, + .circle-pagination li div:hover { + color: white; } + .circle-pagination li div { + font-size: .6rem; + width: 24px; + position: relative; + left: -6px; + top: 1px; + color: #626C92; + font-weight: 600; + text-transform: capitalize; } diff --git a/shrine-webclient/src/main/js/client/js-shrine/export/config.js b/shrine-webclient/src/main/js/client/js-shrine/export/config.js index b4a2777a5..28586e949 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/export/config.js +++ b/shrine-webclient/src/main/js/client/js-shrine/export/config.js @@ -1,333 +1,337 @@ System.config({ defaultJSExtensions: true, transpiler: false, paths: { "*": "dist/*", "github:*": "jspm_packages/github/*", "npm:*": "jspm_packages/npm/*" }, map: { "aurelia-animator-css": "npm:aurelia-animator-css@1.0.1", "aurelia-bootstrapper": "npm:aurelia-bootstrapper@1.0.0", "aurelia-fetch-client": "npm:aurelia-fetch-client@1.0.1", "aurelia-framework": "npm:aurelia-framework@1.0.6", "aurelia-history-browser": "npm:aurelia-history-browser@1.0.0", "aurelia-loader-default": "npm:aurelia-loader-default@1.0.0", "aurelia-logging-console": "npm:aurelia-logging-console@1.0.0", "aurelia-pal-browser": "npm:aurelia-pal-browser@1.0.0", "aurelia-polyfills": "npm:aurelia-polyfills@1.1.1", "aurelia-router": "npm:aurelia-router@1.3.0", "aurelia-templating-binding": "npm:aurelia-templating-binding@1.0.0", "aurelia-templating-resources": "npm:aurelia-templating-resources@1.1.1", "aurelia-templating-router": "npm:aurelia-templating-router@1.0.0", "bluebird": "npm:bluebird@3.4.1", "bootstrap": "github:twbs/bootstrap@3.3.7", "fetch": "github:github/fetch@1.0.0", "font-awesome": "npm:font-awesome@4.6.3", "jquery": "npm:jquery@2.2.4", "text": "github:systemjs/plugin-text@0.0.8", "github:jspm/nodelibs-assert@0.1.0": { "assert": "npm:assert@1.4.1" }, "github:jspm/nodelibs-buffer@0.1.0": { "buffer": "npm:buffer@3.6.0" }, "github:jspm/nodelibs-process@0.1.2": { "process": "npm:process@0.11.9" }, "github:jspm/nodelibs-util@0.1.0": { "util": "npm:util@0.10.3" }, "github:jspm/nodelibs-vm@0.1.0": { "vm-browserify": "npm:vm-browserify@0.0.4" }, "github:twbs/bootstrap@3.3.7": { "jquery": "npm:jquery@2.2.4" }, "npm:assert@1.4.1": { "assert": "github:jspm/nodelibs-assert@0.1.0", "buffer": "github:jspm/nodelibs-buffer@0.1.0", "process": "github:jspm/nodelibs-process@0.1.2", "util": "npm:util@0.10.3" }, "npm:aurelia-animator-css@1.0.1": { "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-templating": "npm:aurelia-templating@1.1.1" }, "npm:aurelia-binding@1.0.9": { "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-task-queue": "npm:aurelia-task-queue@1.1.0" }, "npm:aurelia-bootstrapper@1.0.0": { "aurelia-event-aggregator": "npm:aurelia-event-aggregator@1.0.1", "aurelia-framework": "npm:aurelia-framework@1.0.6", "aurelia-history": "npm:aurelia-history@1.0.0", "aurelia-history-browser": "npm:aurelia-history-browser@1.0.0", "aurelia-loader-default": "npm:aurelia-loader-default@1.0.0", "aurelia-logging-console": "npm:aurelia-logging-console@1.0.0", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-pal-browser": "npm:aurelia-pal-browser@1.0.0", "aurelia-polyfills": "npm:aurelia-polyfills@1.1.1", "aurelia-router": "npm:aurelia-router@1.3.0", "aurelia-templating": "npm:aurelia-templating@1.1.1", "aurelia-templating-binding": "npm:aurelia-templating-binding@1.0.0", "aurelia-templating-resources": "npm:aurelia-templating-resources@1.1.1", "aurelia-templating-router": "npm:aurelia-templating-router@1.0.0" }, "npm:aurelia-dependency-injection@1.3.1": { "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-event-aggregator@1.0.1": { "aurelia-logging": "npm:aurelia-logging@1.3.1" }, "npm:aurelia-framework@1.0.6": { "aurelia-binding": "npm:aurelia-binding@1.0.9", "aurelia-dependency-injection": "npm:aurelia-dependency-injection@1.3.1", "aurelia-loader": "npm:aurelia-loader@1.0.0", "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-path": "npm:aurelia-path@1.1.1", "aurelia-task-queue": "npm:aurelia-task-queue@1.1.0", "aurelia-templating": "npm:aurelia-templating@1.1.1" }, "npm:aurelia-history-browser@1.0.0": { "aurelia-history": "npm:aurelia-history@1.0.0", "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-loader-default@1.0.0": { "aurelia-loader": "npm:aurelia-loader@1.0.0", "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-loader@1.0.0": { "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-path": "npm:aurelia-path@1.1.1" }, "npm:aurelia-logging-console@1.0.0": { "aurelia-logging": "npm:aurelia-logging@1.3.1" }, "npm:aurelia-metadata@1.0.3": { "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-pal-browser@1.0.0": { "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-polyfills@1.1.1": { "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-route-recognizer@1.1.0": { "aurelia-path": "npm:aurelia-path@1.1.1" }, "npm:aurelia-router@1.3.0": { "aurelia-dependency-injection": "npm:aurelia-dependency-injection@1.3.1", "aurelia-event-aggregator": "npm:aurelia-event-aggregator@1.0.1", "aurelia-history": "npm:aurelia-history@1.0.0", "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-path": "npm:aurelia-path@1.1.1", "aurelia-route-recognizer": "npm:aurelia-route-recognizer@1.1.0" }, "npm:aurelia-task-queue@1.1.0": { "aurelia-pal": "npm:aurelia-pal@1.3.0" }, "npm:aurelia-templating-binding@1.0.0": { "aurelia-binding": "npm:aurelia-binding@1.0.9", "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-templating": "npm:aurelia-templating@1.1.1" }, "npm:aurelia-templating-resources@1.1.1": { "aurelia-binding": "npm:aurelia-binding@1.0.9", "aurelia-dependency-injection": "npm:aurelia-dependency-injection@1.3.1", "aurelia-loader": "npm:aurelia-loader@1.0.0", "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-path": "npm:aurelia-path@1.1.1", "aurelia-task-queue": "npm:aurelia-task-queue@1.1.0", "aurelia-templating": "npm:aurelia-templating@1.1.1" }, "npm:aurelia-templating-router@1.0.0": { "aurelia-dependency-injection": "npm:aurelia-dependency-injection@1.3.1", "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-path": "npm:aurelia-path@1.1.1", "aurelia-router": "npm:aurelia-router@1.3.0", "aurelia-templating": "npm:aurelia-templating@1.1.1" }, "npm:aurelia-templating@1.1.1": { "aurelia-binding": "npm:aurelia-binding@1.0.9", "aurelia-dependency-injection": "npm:aurelia-dependency-injection@1.3.1", "aurelia-loader": "npm:aurelia-loader@1.0.0", "aurelia-logging": "npm:aurelia-logging@1.3.1", "aurelia-metadata": "npm:aurelia-metadata@1.0.3", "aurelia-pal": "npm:aurelia-pal@1.3.0", "aurelia-path": "npm:aurelia-path@1.1.1", "aurelia-task-queue": "npm:aurelia-task-queue@1.1.0" }, "npm:bluebird@3.4.1": { "process": "github:jspm/nodelibs-process@0.1.2" }, "npm:buffer@3.6.0": { "base64-js": "npm:base64-js@0.0.8", "child_process": "github:jspm/nodelibs-child_process@0.1.0", "fs": "github:jspm/nodelibs-fs@0.1.2", "ieee754": "npm:ieee754@1.1.8", "isarray": "npm:isarray@1.0.0", "process": "github:jspm/nodelibs-process@0.1.2" }, "npm:font-awesome@4.6.3": { "css": "github:systemjs/plugin-css@0.1.31" }, "npm:inherits@2.0.1": { "util": "github:jspm/nodelibs-util@0.1.0" }, "npm:process@0.11.9": { "assert": "github:jspm/nodelibs-assert@0.1.0", "fs": "github:jspm/nodelibs-fs@0.1.2", "vm": "github:jspm/nodelibs-vm@0.1.0" }, "npm:util@0.10.3": { "inherits": "npm:inherits@2.0.1", "process": "github:jspm/nodelibs-process@0.1.2" }, "npm:vm-browserify@0.0.4": { "indexof": "npm:indexof@0.0.1" } }, - depCache: { - "repository/qep.repository.js": [ - "aurelia-framework", - "aurelia-fetch-client", - "fetch" - ], - "views/mailto/mailto.js": [ - "aurelia-framework", - "views/mailto/mailto.service", - "views/mailto/mailto.config" - ], - "views/mailto/mailto.service.js": [ - "aurelia-framework", - "repository/qep.repository" - ], - "views/query-viewer/query-viewer.js": [ - "aurelia-framework", - "views/query-viewer/query-viewer.service" - ], - "views/query-viewer/query-viewer.service.js": [ - "aurelia-framework", - "repository/qep.repository", - "./query-viewer.config" - ] - }, bundles: { "app-build.js": [ + "common/i2b2.service.js", "main.js", "repository/qep.repository.js", "shell.html!github:systemjs/plugin-text@0.0.8.js", "shell.js", "views/mailto/mailto.config.js", "views/mailto/mailto.html!github:systemjs/plugin-text@0.0.8.js", "views/mailto/mailto.js", "views/mailto/mailto.service.js", "views/query-viewer/box-style.converter.js", "views/query-viewer/query-viewer.config.js", "views/query-viewer/query-viewer.html!github:systemjs/plugin-text@0.0.8.js", "views/query-viewer/query-viewer.js", + "views/query-viewer/query-viewer.model.js", "views/query-viewer/query-viewer.service.js", "views/query-viewer/result-style.converter.js", "views/query-viewer/result-value.converter.js" ], "aurelia.js": [ "github:github/fetch@1.0.0.js", "github:github/fetch@1.0.0/fetch.js", "npm:aurelia-binding@1.0.9.js", "npm:aurelia-binding@1.0.9/aurelia-binding.js", "npm:aurelia-bootstrapper@1.0.0.js", "npm:aurelia-bootstrapper@1.0.0/aurelia-bootstrapper.js", "npm:aurelia-dependency-injection@1.3.1.js", "npm:aurelia-dependency-injection@1.3.1/aurelia-dependency-injection.js", "npm:aurelia-event-aggregator@1.0.1.js", "npm:aurelia-event-aggregator@1.0.1/aurelia-event-aggregator.js", "npm:aurelia-fetch-client@1.0.1.js", "npm:aurelia-fetch-client@1.0.1/aurelia-fetch-client.js", "npm:aurelia-framework@1.0.6.js", "npm:aurelia-framework@1.0.6/aurelia-framework.js", "npm:aurelia-history-browser@1.0.0.js", "npm:aurelia-history-browser@1.0.0/aurelia-history-browser.js", "npm:aurelia-history@1.0.0.js", "npm:aurelia-history@1.0.0/aurelia-history.js", "npm:aurelia-loader-default@1.0.0.js", "npm:aurelia-loader-default@1.0.0/aurelia-loader-default.js", "npm:aurelia-loader@1.0.0.js", "npm:aurelia-loader@1.0.0/aurelia-loader.js", "npm:aurelia-logging-console@1.0.0.js", "npm:aurelia-logging-console@1.0.0/aurelia-logging-console.js", "npm:aurelia-logging@1.3.1.js", "npm:aurelia-logging@1.3.1/aurelia-logging.js", "npm:aurelia-metadata@1.0.3.js", "npm:aurelia-metadata@1.0.3/aurelia-metadata.js", "npm:aurelia-pal-browser@1.0.0.js", "npm:aurelia-pal-browser@1.0.0/aurelia-pal-browser.js", "npm:aurelia-pal@1.3.0.js", "npm:aurelia-pal@1.3.0/aurelia-pal.js", "npm:aurelia-path@1.1.1.js", "npm:aurelia-path@1.1.1/aurelia-path.js", "npm:aurelia-polyfills@1.1.1.js", "npm:aurelia-polyfills@1.1.1/aurelia-polyfills.js", "npm:aurelia-route-recognizer@1.1.0.js", "npm:aurelia-route-recognizer@1.1.0/aurelia-route-recognizer.js", "npm:aurelia-router@1.3.0.js", "npm:aurelia-router@1.3.0/aurelia-router.js", "npm:aurelia-task-queue@1.1.0.js", "npm:aurelia-task-queue@1.1.0/aurelia-task-queue.js", "npm:aurelia-templating-binding@1.0.0.js", "npm:aurelia-templating-binding@1.0.0/aurelia-templating-binding.js", "npm:aurelia-templating-resources@1.1.1.js", "npm:aurelia-templating-resources@1.1.1/abstract-repeater.js", "npm:aurelia-templating-resources@1.1.1/analyze-view-factory.js", "npm:aurelia-templating-resources@1.1.1/array-repeat-strategy.js", "npm:aurelia-templating-resources@1.1.1/attr-binding-behavior.js", "npm:aurelia-templating-resources@1.1.1/aurelia-hide-style.js", "npm:aurelia-templating-resources@1.1.1/aurelia-templating-resources.js", "npm:aurelia-templating-resources@1.1.1/binding-mode-behaviors.js", "npm:aurelia-templating-resources@1.1.1/binding-signaler.js", "npm:aurelia-templating-resources@1.1.1/compose.js", "npm:aurelia-templating-resources@1.1.1/css-resource.js", "npm:aurelia-templating-resources@1.1.1/debounce-binding-behavior.js", "npm:aurelia-templating-resources@1.1.1/dynamic-element.js", "npm:aurelia-templating-resources@1.1.1/focus.js", "npm:aurelia-templating-resources@1.1.1/hide.js", "npm:aurelia-templating-resources@1.1.1/html-resource-plugin.js", "npm:aurelia-templating-resources@1.1.1/html-sanitizer.js", "npm:aurelia-templating-resources@1.1.1/if.js", "npm:aurelia-templating-resources@1.1.1/map-repeat-strategy.js", "npm:aurelia-templating-resources@1.1.1/null-repeat-strategy.js", "npm:aurelia-templating-resources@1.1.1/number-repeat-strategy.js", "npm:aurelia-templating-resources@1.1.1/repeat-strategy-locator.js", "npm:aurelia-templating-resources@1.1.1/repeat-utilities.js", "npm:aurelia-templating-resources@1.1.1/repeat.js", "npm:aurelia-templating-resources@1.1.1/replaceable.js", "npm:aurelia-templating-resources@1.1.1/sanitize-html.js", "npm:aurelia-templating-resources@1.1.1/set-repeat-strategy.js", "npm:aurelia-templating-resources@1.1.1/show.js", "npm:aurelia-templating-resources@1.1.1/signal-binding-behavior.js", "npm:aurelia-templating-resources@1.1.1/throttle-binding-behavior.js", "npm:aurelia-templating-resources@1.1.1/update-trigger-binding-behavior.js", "npm:aurelia-templating-resources@1.1.1/with.js", "npm:aurelia-templating-router@1.0.0.js", "npm:aurelia-templating-router@1.0.0/aurelia-templating-router.js", "npm:aurelia-templating-router@1.0.0/route-href.js", "npm:aurelia-templating-router@1.0.0/route-loader.js", "npm:aurelia-templating-router@1.0.0/router-view.js", "npm:aurelia-templating@1.1.1.js", "npm:aurelia-templating@1.1.1/aurelia-templating.js", "npm:jquery@2.2.4.js", "npm:jquery@2.2.4/dist/jquery.js" ] + }, + depCache: { + "repository/qep.repository.js": [ + "aurelia-framework", + "aurelia-fetch-client", + "fetch" + ], + "views/mailto/mailto.js": [ + "aurelia-framework", + "views/mailto/mailto.service", + "views/mailto/mailto.config" + ], + "views/mailto/mailto.service.js": [ + "aurelia-framework", + "repository/qep.repository" + ], + "views/query-viewer/query-viewer.js": [ + "aurelia-framework", + "views/query-viewer/query-viewer.service", + "common/i2b2.service.js", + "./query-viewer.model" + ], + "views/query-viewer/query-viewer.service.js": [ + "aurelia-framework", + "repository/qep.repository", + "./query-viewer.config" + ] } }); \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/export/dist/app-build.js b/shrine-webclient/src/main/js/client/js-shrine/export/dist/app-build.js index f01043142..4e59ec819 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/export/dist/app-build.js +++ b/shrine-webclient/src/main/js/client/js-shrine/export/dist/app-build.js @@ -1 +1 @@ -"bundle";System.register("main.js",[],function(a,b){"use strict";function c(a){a.use.standardConfiguration().developmentLogging(),a.start().then(function(){return a.setRoot("shell")})}return a("configure",c),{setters:[],execute:function(){}}}),function(){var a=System.amdDefine;a("shell.html!github:systemjs/plugin-text@0.0.8.js",[],function(){return""})}(),System.register("shell.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("Shell",d=function(){function a(){c(this,a)}return a.prototype.configureRouter=function(a,b){a.title="SHRINE Webclient Plugin",a.map([{route:["","mailto"],moduleId:"views/mailto/mailto"},{route:"query-viewer",moduleId:"views/query-viewer/query-viewer"}]),this.router=b},a}()),a("Shell",d)}}}),function(){var a=System.amdDefine;a("views/mailto/mailto.html!github:systemjs/plugin-text@0.0.8.js",[],function(){return''})}(),System.register("views/mailto/mailto.service.js",["aurelia-framework","repository/qep.repository"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h;return{setters:[function(a){d=a.inject},function(a){e=a.QEPRepository}],execute:function(){a("MailToService",(f=d(e),h=f(g=function(){function a(b){c(this,a),this.repository=b}return a.prototype.fetchStewardEmail=function(){return this.repository.fetchStewardEmail()},a}())||g)),a("MailToService",h)}}}),System.register("views/mailto/mailto.config.js",[],function(a,b){"use strict";var c;return{setters:[],execute:function(){a("MailConfig",c={mailto:"mailto:",subject:"subject="+encodeURIComponent("Question from a SHRINE User"),body:encodeURIComponent("Please enter the suggested information and your question. Your data steward will reply to this email.\n\n***Never send patient information, passwords, or other sensitive information by email****\nName:\nTitle:\nUser name (to log into SHRINE):\nTelephone Number (optional):\nPreferred email address (optional):\n\nQuestion or Comment:")}),a("MailConfig",c)}}}),System.register("views/mailto/mailto.js",["aurelia-framework","views/mailto/mailto.service","views/mailto/mailto.config"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i;return{setters:[function(a){d=a.inject},function(a){e=a.MailToService},function(a){f=a.MailConfig}],execute:function(){a("MailTo",(g=d(e,f),i=g(h=function(){function a(b,d){c(this,a),this.service=b,this.config=d}return a.prototype.openEmail=function(){var a=this;this.service.fetchStewardEmail().then(function(b){return window.top.location=a.getComposition(b),a})},a.prototype.getComposition=function(a){return this.config.mailto+a+"?"+this.config.subject+"&"+this.config.body},a}())||h)),a("MailTo",i)}}}),System.register("views/query-viewer/box-style.converter.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("BoxStyleValueConverter",d=function(){function a(){c(this,a)}return a.prototype.toView=function(a){return"transform: translate("+String(-100*a)+"%);"},a}()),a("BoxStyleValueConverter",d)}}}),function(){var a=System.amdDefine;a("views/query-viewer/query-viewer.html!github:systemjs/plugin-text@0.0.8.js",[],function(){return''})}(),System.register("repository/qep.repository.js",["aurelia-framework","aurelia-fetch-client","fetch"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i;return{setters:[function(a){d=a.inject},function(a){e=a.HttpClient},function(a){}],execute:function(){f=function(){function a(a,b){for(var c=0;c0?a.split('"')[1]:a})["catch"](function(){return""})},f(a,[{key:"url",get:function(){var a=document.URL,b=":6443/shrine-metadata/";return a.substring(0,a.lastIndexOf(":"))+b}},{key:"auth",get:function(){var a=sessionStorage.getItem("shrine.auth");return sessionStorage.removeItem("shrine.auth"),a}}]),a}())||h)),a("QEPRepository",i)}}}),System.register("views/query-viewer/query-viewer.config.js",[],function(a,b){"use strict";var c;return{setters:[],execute:function(){a("QueryViewerConfig",c={maxNodesPerScreen:10}),a("QueryViewerConfig",c)}}}),System.register("views/query-viewer/query-viewer.service.js",["aurelia-framework","repository/qep.repository","./query-viewer.config"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i;return{setters:[function(a){d=a.inject},function(a){e=a.QEPRepository},function(a){f=a.QueryViewerConfig}],execute:function(){a("QueryViewerService",(g=d(e,f),i=g(h=function(){function a(b,d){c(this,a),this.repository=b,this.config=d}return a.prototype.fetchPreviousQueries=function(){return this.repository.fetchPreviousQueries()},a.prototype.getScreens=function(a,b){var c=this;return new Promise(function(d,e){for(var f=a.sort().length,g=[],h=0;h1})["catch"](function(a){return console.log(a)})})||h)),a("QueryViewer",i)}}}),System.register("views/query-viewer/result-style.converter.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("ResultStyleValueConverter",d=function(){function a(){c(this,a)}return a.prototype.toView=function(a){var b=this.isUnresolved(a)?"color:"+this.getColorValue(a):"";return b},a.prototype.isUnresolved=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"FINISHED";return!a||a.status!==b},a.prototype.getColorValue=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"ERROR",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"#FF0000",d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#00FF00";return a&&a.status!==b?d:c},a}()),a("ResultStyleValueConverter",d)}}}),System.register("views/query-viewer/result-value.converter.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("ResultValueConverter",d=function(){function a(){c(this,a)}return a.prototype.toView=function(a){return a?"FINISHED"!==a.status?a.status:a.count<0?"<10":a.count:"not available"},a}()),a("ResultValueConverter",d)}}}); \ No newline at end of file +"bundle";System.register("main.js",[],function(a,b){"use strict";function c(a){a.use.standardConfiguration().developmentLogging(),a.start().then(function(){return a.setRoot("shell")})}return a("configure",c),{setters:[],execute:function(){}}}),function(){var a=System.amdDefine;a("shell.html!github:systemjs/plugin-text@0.0.8.js",[],function(){return""})}(),System.register("shell.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("Shell",d=function(){function a(){c(this,a)}return a.prototype.configureRouter=function(a,b){a.title="SHRINE Webclient Plugin",a.map([{route:"mailto",moduleId:"views/mailto/mailto"},{route:["","query-viewer"],moduleId:"views/query-viewer/query-viewer"}]),this.router=b},a}()),a("Shell",d)}}}),function(){var a=System.amdDefine;a("views/mailto/mailto.html!github:systemjs/plugin-text@0.0.8.js",[],function(){return''})}(),System.register("views/mailto/mailto.service.js",["aurelia-framework","repository/qep.repository"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h;return{setters:[function(a){d=a.inject},function(a){e=a.QEPRepository}],execute:function(){a("MailToService",(f=d(e),h=f(g=function(){function a(b){c(this,a),this.repository=b}return a.prototype.fetchStewardEmail=function(){return this.repository.fetchStewardEmail()},a}())||g)),a("MailToService",h)}}}),System.register("views/mailto/mailto.config.js",[],function(a,b){"use strict";var c;return{setters:[],execute:function(){a("MailConfig",c={mailto:"mailto:",subject:"subject="+encodeURIComponent("Question from a SHRINE User"),body:encodeURIComponent("Please enter the suggested information and your question. Your data steward will reply to this email.\n\n***Never send patient information, passwords, or other sensitive information by email****\nName:\nTitle:\nUser name (to log into SHRINE):\nTelephone Number (optional):\nPreferred email address (optional):\n\nQuestion or Comment:")}),a("MailConfig",c)}}}),System.register("views/mailto/mailto.js",["aurelia-framework","views/mailto/mailto.service","views/mailto/mailto.config"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i;return{setters:[function(a){d=a.inject},function(a){e=a.MailToService},function(a){f=a.MailConfig}],execute:function(){a("MailTo",(g=d(e,f),i=g(h=function(){function a(b,d){c(this,a),this.service=b,this.config=d}return a.prototype.openEmail=function(){var a=this;this.service.fetchStewardEmail().then(function(b){return window.top.location=a.getComposition(b),a})},a.prototype.getComposition=function(a){return this.config.mailto+a+"?"+this.config.subject+"&"+this.config.body},a}())||h)),a("MailTo",i)}}}),System.register("views/query-viewer/box-style.converter.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("BoxStyleValueConverter",d=function(){function a(){c(this,a)}return a.prototype.toView=function(a){return"transform: translate("+String(-100*a)+"%);"},a}()),a("BoxStyleValueConverter",d)}}}),function(){var a=System.amdDefine;a("views/query-viewer/query-viewer.html!github:systemjs/plugin-text@0.0.8.js",[],function(){return''})}(),System.register("repository/qep.repository.js",["aurelia-framework","aurelia-fetch-client","fetch"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i;return{setters:[function(a){d=a.inject},function(a){e=a.HttpClient},function(a){}],execute:function(){f=function(){function a(a,b){for(var c=0;c0?a.split('"')[1]:a})["catch"](function(){return""})},f(a,[{key:"url",get:function(){var a=document.URL,b=":6443/shrine-metadata/";return a.substring(0,a.lastIndexOf(":"))+b}},{key:"auth",get:function(){var a=sessionStorage.getItem("shrine.auth");return sessionStorage.removeItem("shrine.auth"),a}}]),a}())||h)),a("QEPRepository",i)}}}),System.register("views/query-viewer/query-viewer.config.js",[],function(a,b){"use strict";var c;return{setters:[],execute:function(){a("QueryViewerConfig",c={maxNodesPerScreen:10}),a("QueryViewerConfig",c)}}}),System.register("views/query-viewer/query-viewer.service.js",["aurelia-framework","repository/qep.repository","./query-viewer.config"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i;return{setters:[function(a){d=a.inject},function(a){e=a.QEPRepository},function(a){f=a.QueryViewerConfig}],execute:function(){a("QueryViewerService",(g=d(e,f),i=g(h=function(){function a(b,d,e){c(this,a),this.repository=b,this.config=d}return a.prototype.fetchPreviousQueries=function(){return this.repository.fetchPreviousQueries()},a.prototype.getScreens=function(a,b){var c=this;return new Promise(function(d,e){for(var f=a.sort().length,g=[],h=0;h0&&void 0!==arguments[0]?arguments[0]:window;c(this,b);var d=e(a,"i2b2");this.onResize=function(a){return d?d.events.changedZoomWindows.subscribe(a):null},this.onHistory=function(a){return d?d.CRC.ctrlr.history.events.onDataUpdate.subscribe(a):null}}),a("I2B2Service",d),e=function(a,b){return g(a)?f(a)[b]:null},f=function(a){return a.parent.window},g=function(a){return a&&a.parent&&a.parent.window}}}}),System.register("views/query-viewer/query-viewer.model.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("QueryViewerModel",d=function b(){c(this,b),this.isLoaded=!1,this.screens=[]}),a("QueryViewerModel",d)}}}),System.register("views/query-viewer/query-viewer.js",["aurelia-framework","views/query-viewer/query-viewer.service","common/i2b2.service.js","./query-viewer.model"],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d,e,f,g,h,i,j,k;return{setters:[function(a){d=a.inject,e=a.computedFrom},function(a){f=a.QueryViewerService},function(a){g=a.I2B2Service},function(a){h=a.QueryViewerModel}],execute:function(){a("QueryViewer",(i=d(f,g,h),k=i(j=function b(a,d,e){var f=this;c(this,b),this.screenIndex=0,this.showCircles=!1,this.service=a,this.vertStyle="v-min";var g=function(a){return f.service.getScreens(a.adapters,a.queryResults)},h=function(a){f.screens=a,f.showCircles=f.screens.length>1,e.screens=a,e.isLoaded=!0},i=function(){return f.service.fetchPreviousQueries().then(g).then(h)["catch"](function(a){return console.log(a)})},j=function(){return e.isLoaded?h(e.screens):i()},k=function(a){return"ADD"!==a.action};d.onResize(function(a,b){return f.vertStyle=b.find(k)?"v-min":"v-full"}),d.onHistory(i),j()})||j)),a("QueryViewer",k)}}}),System.register("views/query-viewer/result-style.converter.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("ResultStyleValueConverter",d=function(){function a(){c(this,a)}return a.prototype.toView=function(a){var b=this.isUnresolved(a)?"color:"+this.getColorValue(a):"";return b},a.prototype.isUnresolved=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"FINISHED";return!a||a.status!==b},a.prototype.getColorValue=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"ERROR",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"#FF0000",d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#00FF00";return a&&a.status!==b?d:c},a}()),a("ResultStyleValueConverter",d)}}}),System.register("views/query-viewer/result-value.converter.js",[],function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d;return{setters:[],execute:function(){a("ResultValueConverter",d=function(){function a(){c(this,a)}return a.prototype.toView=function(a){return a?"FINISHED"!==a.status?a.status:a.count<0?"<=10":a.count:"not available"},a}()),a("ResultValueConverter",d)}}}); \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/src/common/i2b2.service.js b/shrine-webclient/src/main/js/client/js-shrine/src/common/i2b2.service.js new file mode 100644 index 000000000..172995419 --- /dev/null +++ b/shrine-webclient/src/main/js/client/js-shrine/src/common/i2b2.service.js @@ -0,0 +1,12 @@ +export class I2B2Service { + constructor(context = window) { + const i2b2 = getLib(context, 'i2b2'); + this.onResize = f => (i2b2) ? i2b2.events.changedZoomWindows.subscribe(f) : null; + this.onHistory = f => (i2b2)? i2b2.CRC.ctrlr.history.events.onDataUpdate.subscribe(f) : null; + } +} + +//@todo compose these functions? +const getLib = (context, lib) => hasParent(context) ? getParent(context)[lib] : null; +const getParent = (context) => context.parent.window; +const hasParent = (context) => context && context.parent && context.parent.window; diff --git a/shrine-webclient/src/main/js/client/js-shrine/src/shell.js b/shrine-webclient/src/main/js/client/js-shrine/src/shell.js index 7a8ad2933..caa10a1aa 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/src/shell.js +++ b/shrine-webclient/src/main/js/client/js-shrine/src/shell.js @@ -1,12 +1,12 @@ export class Shell { configureRouter(config, router) { config.title = 'SHRINE Webclient Plugin'; config.map([ - {route: ['', 'mailto'], moduleId: 'views/mailto/mailto'}, - {route: 'query-viewer', moduleId: 'views/query-viewer/query-viewer'} + {route: 'mailto', moduleId: 'views/mailto/mailto'}, + {route: ['', 'query-viewer'], moduleId: 'views/query-viewer/query-viewer'} ]); this.router = router; } } diff --git a/shrine-webclient/src/main/js/client/js-shrine/src/views/mailto/mailto.scss b/shrine-webclient/src/main/js/client/js-shrine/src/views/mailto/mailto.scss index 1eb869fd1..72bdf4fdc 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/src/views/mailto/mailto.scss +++ b/shrine-webclient/src/main/js/client/js-shrine/src/views/mailto/mailto.scss @@ -1,64 +1,50 @@ -/** { - box-sizing: border-box; -} -html, -body { - height: 100%; -}*/ - - .mailto { box-sizing: border-box; display: flex; justify-content: center; align-items: center; width: 100%; height: 100%; padding: 10px; - font-family: 'Source Sans Pro', serif; color: #333; background: #f2f2f2; height: 100% -} - -.mailto p { - font-size: 16px; - line-height: 1.6em; -} - - -.mailto .button { - border: 1px solid #6576a8; - background: #6d85ad; - border: 0; - outline: 0; - font-family: 'Source Sans Pro', serif; - font-weight: bold; - text-transform: uppercase; - text-decoration: none; - letter-spacing: 1px; - color: #fff; - cursor: pointer; -} -.mailto .button:hover { - background: #9cb8d9; -} -.mailto .button:active { - background: #6576a8; -} -.mailto .button--large { - position: relative; - padding: 15px 30px; - border-radius: 5px; - font-size: 16px; -} -.mailto .button--large:active { - top: 1px; -} -.mailto .content { - max-width: 350px; - text-align: center; -} -.mailto .email { - position: relative; -} + p { + font-size: 16px; + line-height: 1.6em; + } + .button { + border: 1px solid #6576a8; + background: #6d85ad; + border: 0; + outline: 0; + font-weight: bold; + text-transform: uppercase; + text-decoration: none; + letter-spacing: 1px; + color: #fff; + cursor: pointer; + &:hover { + background: #9cb8d9; + } + &:active{ + background: #6576a8; + } + } + .button--large { + position: relative; + padding: 15px 30px; + border-radius: 5px; + font-size: 16px; + &:active{ + top: 1px; + } + } + .content{ + max-width: 350px; + text-align: center; + } + .email { + position: relative; + } +} \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.html b/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.html index bcc78135f..e1bbfe300 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.html +++ b/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.html @@ -1,49 +1,49 @@ \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.js b/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.js index e50f4649c..63949a77d 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.js +++ b/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.js @@ -1,25 +1,43 @@ import { inject, computedFrom } from 'aurelia-framework'; import { QueryViewerService } from 'views/query-viewer/query-viewer.service'; +import { I2B2Service } from 'common/i2b2.service.js'; +import {QueryViewerModel} from './query-viewer.model'; -@inject(QueryViewerService) +@inject(QueryViewerService, I2B2Service, QueryViewerModel) export class QueryViewer { - constructor(service) { + constructor(service, i2b2Svc, model) { + + // -- init -- // this.screenIndex = 0; this.showCircles = false; this.service = service; - this.service + this.vertStyle = 'v-min'; + + // -- fetch queries -- // + const parseResultToScreens = result => this.service.getScreens(result.adapters, result.queryResults); + const setVM = screens => { + this.screens = screens; + this.showCircles = this.screens.length > 1; + model.screens = screens; + model.isLoaded = true; + }; + const refresh = () => this.service .fetchPreviousQueries() - .then(result => { - const queries = result.queryResults; - const nodes = result.adapters - return service.getScreens(nodes, queries); - }) - .then(screens => { - this.screens = screens; - this.showCircles = this.screens.length > 1; - }) + .then(parseResultToScreens) + .then(setVM) .catch(error => console.log(error)); + + const init = () => (model.isLoaded)? setVM(model.screens) : refresh(); + + // -- add i2b2 event listener -- // + const isMinimized = e => e.action !== 'ADD'; + const setVertStyle = (a, b) => this.vertStyle = b.find(isMinimized) ? 'v-min' : 'v-full'; + i2b2Svc.onResize(setVertStyle); + i2b2Svc.onHistory(refresh); + + init(); } } + diff --git a/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.model.js b/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.model.js new file mode 100644 index 000000000..c55329318 --- /dev/null +++ b/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.model.js @@ -0,0 +1,6 @@ +export class QueryViewerModel{ + constructor() { + this.isLoaded = false; + this.screens = []; + } +} \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.scss b/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.scss index ee414d2f9..cd5c60631 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.scss +++ b/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.scss @@ -1,174 +1,135 @@ @import url(http://fonts.googleapis.com/css?family=Roboto:400,500,300,700); body{ overflow: hidden; - /*background: -webkit-linear-gradient(left, #6B73A2, #9BB5DA); - background: linear-gradient(to bottom, #6B73A2, #9BB5DA);*/ background: rgba(255, 255, 255, 0.9); font-family: 'Roboto', sans-serif; } html, body, .box-wrapper{ width: 100%; height: 100%; margin: 0; } .box-wrapper{ display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -ms-flex-wrap: wrap; flex-wrap: wrap; } -.box { +.box-wrapper > .box { margin-top: 1%; width: 100%; transition: all .2s ease; + .hideextra { + white-space: nowrap; + overflow: hidden; + text-overflow:ellipsis; + } + section{ + margin: 20 0 6 0; + .v-full { + height: 90vh; + } + .v-full > table{ + padding-bottom: 10%; + } + .v-min{ + height: 100px; + } + .v-min > table { + padding-bottom: 1%; + } + .tbl-content{ + overflow: auto; + margin-top: 0px; + border: 1px solid rgba(98,108,146,0.3); + } + } + table{ + width:100%; + table-layout: fixed; + .tbl-header{ + background-color: rgba(98,108,146, .3); + div.tbl-header{ + max-width: 5rem; + } + } + + tr{ + cursor: pointer; + &:hover{ + background: rgba(98,108,146, .3) !important; + } + } + + th{ + padding: 2px 4px 4px 2px; + text-align: left; + font-weight: 500; + font-size: .75rem; + color: #626C92; + text-transform: uppercase; + border-bottom: solid 1px rgba(98,108,146,0.1); + border-left: solid 1px rgba(98,108,146,0.1); + } + td{ + transition: all .5s ease; + padding: 2px; + text-align: left; + vertical-align: top; + font-weight: 300; + font-size: 12px; + color: black; + border-bottom: solid 1px rgba(98,108,146,0.1); + border-left: solid 1px rgba(98,108,146,0.1); + } + } } -.box.blue { - background: #1881CB; -} -.box.red { - background: #AD3137; -} -.box.black { - background: #424242; -} - - .circle-pagination { position: absolute; z-index: 1000; list-style-type: none; margin: 0; top: -.3rem; -} -.circle-pagination li { - border-radius: 50%; - border: 2px solid #626C92; - width: 12px; - height: 12px; - padding: 4px; - margin: 6px; - cursor: pointer; - float: left; - transition: all .2s ease; -} -.circle-pagination li.active, -.circle-pagination li:hover { - background: #626C92; - width: 14px; - height:14px; -} - -.circle-pagination li.active div, -.circle-pagination li div:hover{ - color:white; -} - -.circle-pagination li div{ - font-size: .6rem; - width: 24px; - position: relative; - left: -6px; - top: 1px; - color: #626C92; - font-weight: 600; - text-transform: capitalize; -} - -h1{ - font-size: 30px; - color: #626C92; - text-transform: uppercase; - font-weight: 300; - text-align: center; - margin-bottom: 15px; -} -table{ - width:100%; - table-layout: fixed; -} -.tbl-header{ - background-color: rgba(98,108,146, .3); - } - - - -.tbl-header div.tbl-header{ - max-width: 5rem; -} - - -@media screen and (-webkit-min-device-pixel-ratio:0) and (min-height: 150px){ - .tbl-content{ - height: 90% !important; + li { + border-radius: 50%; + border: 2px solid #626C92; + width: 12px; + height: 12px; + padding: 4px; + margin: 6px; + cursor: pointer; + float: left; + transition: all .2s ease; + &.active, + &:hover{ + background: #626C92; + width: 14px; + height:14px; + } + &.active div, + & div:hover{ + color:white; + } + div { + font-size: .6rem; + width: 24px; + position: relative; + left: -6px; + top: 1px; + color: #626C92; + font-weight: 600; + text-transform: capitalize; + } } -} - - -.tbl-content{ - height: 450px; - overflow-x:auto; - margin-top: 0px; - border: 1px solid rgba(98,108,146,0.3); -} - -.tbl-content tr{ - cursor: pointer; -} - -.tbl-content tr:hover{ - background: rgba(98,108,146, .3) !important; -} - -th{ - padding: 2px 4px 4px 2px; - text-align: center; - font-weight: 500; - font-size: .75rem; - color: #626C92; - text-transform: uppercase; -} - - -td{ - transition: all .5s ease; - padding: 2px; - text-align: center; - vertical-align: top; - font-weight: 300; - font-size: 12px; - color: black; - border-bottom: solid 1px rgba(98,108,146,0.1); -} - -section{ - margin: 20 0 6 0; -} - -/* for custom scrollbar for webkit browser*/ - -::-webkit-scrollbar { - width: 8px; -} -::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(98,108,146,.3); -} -::-webkit-scrollbar-thumb { - -webkit-box-shadow: inset 0 0 6px rgba(98,108,146,1); -} - -.hideextra { - white-space: nowrap; - overflow: hidden; - text-overflow:ellipsis; } \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.service.js b/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.service.js index 3a1cdf222..334a02da5 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.service.js +++ b/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/query-viewer.service.js @@ -1,62 +1,63 @@ -import { inject } from 'aurelia-framework'; +import {inject} from 'aurelia-framework'; import {QEPRepository} from 'repository/qep.repository'; import {QueryViewerConfig} from './query-viewer.config'; + @inject(QEPRepository, QueryViewerConfig) export class QueryViewerService { - constructor(repository, config) { + constructor(repository, config, i2b2Svc) { this.repository = repository; this.config = config; } fetchPreviousQueries() { return this.repository.fetchPreviousQueries(); } getScreens(nodes, queries) { return new Promise((resolve, reject) => { const lastNodeIndex = nodes.sort().length; const screens = []; for (let i = 0; i < lastNodeIndex; i = i + this.config.maxNodesPerScreen) { const numberOfNodesOnScreen = this.getNumberOfNodesOnScreen(nodes, i, this.config.maxNodesPerScreen); const endIndex = numberOfNodesOnScreen - 1; const screenId = this.getScreenId(nodes, i, endIndex); const screenNodes = nodes.slice(i, numberOfNodesOnScreen); const screenNodesToQueriesMap = this.mapQueriesToScreenNodes(screenNodes, queries, this.findQueriesForNode); screens.push({ id: screenId, nodes: screenNodes, results: screenNodesToQueriesMap }); } resolve(screens); }); } mapQueriesToScreenNodes(nodes, queries) { const results = []; queries.forEach( (q, i) => { const result = { name: q.query.queryName, id: q.query.networkId, nodeResults: [] }; nodes.forEach(n => { result.nodeResults.push(q.adaptersToResults.find( a => a.adapterNode === n)); }); results.push(result); }); return results; } getNumberOfNodesOnScreen(nodes, startIndex) { const numNodes = startIndex + this.config.maxNodesPerScreen; return numNodes < nodes.length ? numNodes : nodes.length; } getScreenId(nodes, start, end) { const startNode = nodes[start]; const endNode = nodes[end]; return String(startNode).substr(0, 1) + '-' + String(endNode).substr(0, 1); } } \ No newline at end of file diff --git a/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/result-value.converter.js b/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/result-value.converter.js index 4a43ced34..765835bcf 100644 --- a/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/result-value.converter.js +++ b/shrine-webclient/src/main/js/client/js-shrine/src/views/query-viewer/result-value.converter.js @@ -1,12 +1,12 @@ export class ResultValueConverter { toView(value) { if (!value) { return 'not available'; } if (value.status !== "FINISHED") { return value.status; } - return value.count < 0? '<10' : value.count; + return value.count < 0? '<=10' : value.count; } } \ No newline at end of file diff --git a/tools/adapter-queries-to-qep/pom.xml b/tools/adapter-queries-to-qep/pom.xml index 50d3410be..411df45a6 100644 --- a/tools/adapter-queries-to-qep/pom.xml +++ b/tools/adapter-queries-to-qep/pom.xml @@ -1,57 +1,61 @@ 4.0.0 SHRINE Copy Adapter Queries to QEP adapter-queries-to-qep jar net.shrine shrine-tools + 1.23.3.1-SNAPSHOT + + + net.shrine shrine-data-commons ${project.version} com.typesafe config net.shrine shrine-adapter-service ${project.version} net.shrine shrine-qep ${project.version} org.slf4j slf4j-log4j12 ${slf4j-version} runtime src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin maven-assembly-plugin adapter-queries-to-qep-${project.version} false diff --git a/tools/batch-querier/pom.xml b/tools/batch-querier/pom.xml index 1ab68f7d7..16171ad34 100644 --- a/tools/batch-querier/pom.xml +++ b/tools/batch-querier/pom.xml @@ -1,86 +1,90 @@ 4.0.0 SHRINE Query Automation Utility shrine-batch-querier-utility jar net.shrine shrine-tools + 1.23.3.1-SNAPSHOT + + + net.shrine shrine-crypto ${project.version} net.shrine shrine-client ${project.version} net.shrine shrine-utility-commons ${project.version} net.shrine shrine-utility-commons ${project.version} test-jar test net.shrine shrine-test-commons ${project.version} test-jar test org.rogach scallop_${scala-major-version} ${scallop-version} net.sf.opencsv opencsv com.typesafe config src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin maven-assembly-plugin shrine-batch-querier-${project.version} false diff --git a/tools/mapping-automation/pom.xml b/tools/mapping-automation/pom.xml index 2c5bd6a8f..315f46fac 100644 --- a/tools/mapping-automation/pom.xml +++ b/tools/mapping-automation/pom.xml @@ -1,85 +1,89 @@ 4.0.0 SHRINE Term Mapping Automation Utilities shrine-mapping-automation jar net.shrine shrine-tools + 1.23.3.1-SNAPSHOT + + + net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-config ${project.version} net.shrine shrine-ont-support ${project.version} net.shrine shrine-utility-commons ${project.version} net.shrine shrine-utility-commons ${project.version} test-jar test org.rogach scallop_${scala-major-version} ${scallop-version} net.sf.opencsv opencsv com.typesafe config src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin maven-assembly-plugin shrine-mapping-tools-${project.version} false diff --git a/tools/monitor/pom.xml b/tools/monitor/pom.xml index d1e07ec56..b84368418 100644 --- a/tools/monitor/pom.xml +++ b/tools/monitor/pom.xml @@ -1,90 +1,94 @@ 4.0.0 SHRINE Monitor Utilities shrine-monitor-utilities jar net.shrine shrine-tools + 1.23.3.1-SNAPSHOT + + + ant ant-javamail 1.6.5 net.shrine shrine-broadcaster-aggregator ${project.version} net.shrine shrine-config ${project.version} org.codehaus.groovy.modules.http-builder http-builder 0.5.1 org.codehaus.groovy groovy org.codehaus.gmaven.runtime gmaven-runtime-1.7 1.3 mysql mysql-connector-java com.h2database h2 test net.sf.opencsv opencsv org.apache.commons commons-email 1.2 org.codehaus.gmaven gmaven-plugin maven-assembly-plugin shrine-monitor-${project.version}.zip false diff --git a/tools/pom.xml b/tools/pom.xml index 9c2c95003..014f66055 100644 --- a/tools/pom.xml +++ b/tools/pom.xml @@ -1,81 +1,85 @@ 4.0.0 SHRINE Tools shrine-tools pom net.shrine shrine-base + 1.23.3.1-SNAPSHOT + + + 1.5 2.4 monitor utility-commons scanner batch-querier adapter-queries-to-qep many-qep-queries mapping-automation net.shrine shrine-protocol ${project.version} org.codehaus.gmaven gmaven-plugin ${gmaven-plugin-version} compile testCompile true true true maven-assembly-plugin ${assembly-plugin-version} assembly package single src/main/assembly/assembly.xml diff --git a/tools/scanner/pom.xml b/tools/scanner/pom.xml index b9f7dddfd..126c82d1a 100644 --- a/tools/scanner/pom.xml +++ b/tools/scanner/pom.xml @@ -1,103 +1,107 @@ 4.0.0 SHRINE Scanner Utility shrine-scanner-utility jar net.shrine shrine-tools + 1.23.3.1-SNAPSHOT + + + net.shrine shrine-test-commons ${project.version} test-jar test net.shrine shrine-ont-support ${project.version} net.shrine shrine-hms-core ${project.version} net.shrine shrine-config ${project.version} net.shrine shrine-crypto ${project.version} net.shrine shrine-utility-commons ${project.version} net.shrine shrine-utility-commons ${project.version} test-jar test org.rogach scallop_${scala-major-version} ${scallop-version} net.sf.opencsv opencsv com.typesafe config net.shrine shrine-broadcaster-aggregator ${project.version} src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin maven-assembly-plugin shrine-scanner-${project.version} false diff --git a/tools/utility-commons/pom.xml b/tools/utility-commons/pom.xml index f3eb2da07..7b0de1d42 100644 --- a/tools/utility-commons/pom.xml +++ b/tools/utility-commons/pom.xml @@ -1,64 +1,68 @@ 4.0.0 SHRINE Common Classes for Utilities shrine-utility-commons jar net.shrine shrine-tools + 1.23.3.1-SNAPSHOT + + + net.shrine shrine-test-commons ${project.version} test-jar test org.rogach scallop_${scala-major-version} ${scallop-version} net.sf.opencsv opencsv com.typesafe config src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin org.apache.maven.plugins maven-jar-plugin test-jar