Merge branch 'develop' into NIFI-169

This commit is contained in:
joewitt 2014-12-16 12:53:40 -05:00
commit a94cf4be4b
158 changed files with 8424 additions and 43091 deletions

View File

@ -24,15 +24,15 @@
${nf.bulletin.board.style.tags} ${nf.bulletin.board.style.tags}
<link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.css?" type="text/css" /> <link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.min.css?" type="text/css" />
<link rel="stylesheet" href="js/jquery/css/smoothness/jquery-ui-1.8.10.custom.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.css" type="text/css" />
<script type="text/javascript" src="js/jquery/jquery-1.7.min.js"></script> <script type="text/javascript" src="js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.center.js"></script> <script type="text/javascript" src="js/jquery/jquery.center.js"></script>
<script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script> <script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script>
<script type="text/javascript" src="js/jquery/jquery.each.js"></script> <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.10.custom.min.js"></script> <script type="text/javascript" src="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.js"></script>
<script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script> <script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script>
<script type="text/javascript" src="js/nf/nf-namespace.js?${project.version}"></script> <script type="text/javascript" src="js/nf/nf-namespace.js?${project.version}"></script>
${nf.bulletin.board.script.tags} ${nf.bulletin.board.script.tags}

View File

@ -28,16 +28,14 @@
<link rel="stylesheet" href="js/jquery/tabbs/jquery.tabbs.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/tabbs/jquery.tabbs.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.css?" type="text/css" /> <link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.min.css?" type="text/css" />
<link rel="stylesheet" href="js/jquery/css/smoothness/jquery-ui-1.8.10.custom.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/minicolors/jquery.minicolors.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/minicolors/jquery.minicolors.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" />
<script type="text/javascript" src="js/codemirror/lib/codemirror.js"></script> <script type="text/javascript" src="js/codemirror/lib/codemirror-compressed.js"></script>
<script type="text/javascript" src="js/codemirror/addon/edit/matchbrackets.js"></script> <script type="text/javascript" src="js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/codemirror/addon/hint/show-hint.js"></script> <script type="text/javascript" src="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery-1.7.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.10.custom.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.center.js"></script> <script type="text/javascript" src="js/jquery/jquery.center.js"></script>
<script type="text/javascript" src="js/jquery/jquery.count.js"></script> <script type="text/javascript" src="js/jquery/jquery.count.js"></script>
<script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script> <script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script>
@ -48,7 +46,7 @@
<script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/minicolors/jquery.minicolors.min.js"></script> <script type="text/javascript" src="js/jquery/minicolors/jquery.minicolors.min.js"></script>
<script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script> <script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.event.drag-2.0.min.js"></script> <script type="text/javascript" src="js/jquery/jquery.event.drag-2.2.min.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script>

View File

@ -24,19 +24,19 @@
${nf.cluster.style.tags} ${nf.cluster.style.tags}
<link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.css?" type="text/css" /> <link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.min.css?" type="text/css" />
<link rel="stylesheet" href="js/jquery/css/smoothness/jquery-ui-1.8.10.custom.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" />
<script type="text/javascript" src="js/jquery/jquery-1.7.min.js"></script> <script type="text/javascript" src="js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.center.js"></script> <script type="text/javascript" src="js/jquery/jquery.center.js"></script>
<script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script> <script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script>
<script type="text/javascript" src="js/jquery/jquery.each.js"></script> <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.10.custom.min.js"></script> <script type="text/javascript" src="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.js"></script>
<script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script> <script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.event.drag-2.0.min.js"></script> <script type="text/javascript" src="js/jquery/jquery.event.drag-2.2.min.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script>

View File

@ -24,19 +24,19 @@
${nf.counters.style.tags} ${nf.counters.style.tags}
<link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.css?" type="text/css" /> <link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.min.css?" type="text/css" />
<link rel="stylesheet" href="js/jquery/css/smoothness/jquery-ui-1.8.10.custom.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" />
<script type="text/javascript" src="js/jquery/jquery-1.7.min.js"></script> <script type="text/javascript" src="js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.center.js"></script> <script type="text/javascript" src="js/jquery/jquery.center.js"></script>
<script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script> <script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script>
<script type="text/javascript" src="js/jquery/jquery.each.js"></script> <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.10.custom.min.js"></script> <script type="text/javascript" src="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.js"></script>
<script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script> <script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.event.drag-2.0.min.js"></script> <script type="text/javascript" src="js/jquery/jquery.event.drag-2.2.min.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script>

View File

@ -24,19 +24,19 @@
${nf.history.style.tags} ${nf.history.style.tags}
<link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.css?" type="text/css" /> <link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.min.css?" type="text/css" />
<link rel="stylesheet" href="js/jquery/css/smoothness/jquery-ui-1.8.10.custom.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" />
<script type="text/javascript" src="js/jquery/jquery-1.7.min.js"></script> <script type="text/javascript" src="js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.center.js"></script> <script type="text/javascript" src="js/jquery/jquery.center.js"></script>
<script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script> <script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script>
<script type="text/javascript" src="js/jquery/jquery.each.js"></script> <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.10.custom.min.js"></script> <script type="text/javascript" src="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.js"></script>
<script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script> <script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.event.drag-2.0.min.js"></script> <script type="text/javascript" src="js/jquery/jquery.event.drag-2.2.min.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script>

View File

@ -25,20 +25,20 @@
<link rel="stylesheet" href="js/jquery/tabbs/jquery.tabbs.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/tabbs/jquery.tabbs.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.css?" type="text/css" /> <link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.min.css?" type="text/css" />
<link rel="stylesheet" href="js/jquery/css/smoothness/jquery-ui-1.8.10.custom.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" />
<script type="text/javascript" src="js/jquery/jquery-1.7.min.js"></script> <script type="text/javascript" src="js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.center.js"></script> <script type="text/javascript" src="js/jquery/jquery.center.js"></script>
<script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/tabbs/jquery.tabbs.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/tabbs/jquery.tabbs.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script> <script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script>
<script type="text/javascript" src="js/jquery/jquery.each.js"></script> <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.10.custom.min.js"></script> <script type="text/javascript" src="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.js"></script>
<script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script> <script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.event.drag-2.0.min.js"></script> <script type="text/javascript" src="js/jquery/jquery.event.drag-2.2.min.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script>

View File

@ -25,12 +25,12 @@
<link rel="stylesheet" href="js/jquery/tabbs/jquery.tabbs.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/tabbs/jquery.tabbs.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.css?" type="text/css" /> <link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.min.css?" type="text/css" />
<link rel="stylesheet" href="js/jquery/css/smoothness/jquery-ui-1.8.10.custom.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" />
<script type="text/javascript" src="js/jquery/jquery-1.7.min.js"></script> <script type="text/javascript" src="js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.10.custom.min.js"></script> <script type="text/javascript" src="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.center.js"></script> <script type="text/javascript" src="js/jquery/jquery.center.js"></script>
<script type="text/javascript" src="js/jquery/tabbs/jquery.tabbs.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/tabbs/jquery.tabbs.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script>
@ -38,7 +38,7 @@
<script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script> <script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script>
<script type="text/javascript" src="js/jquery/jquery.each.js"></script> <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
<script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script> <script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.event.drag-2.0.min.js"></script> <script type="text/javascript" src="js/jquery/jquery.event.drag-2.2.min.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script>

View File

@ -24,20 +24,20 @@
${nf.templates.style.tags} ${nf.templates.style.tags}
<link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.css?" type="text/css" /> <link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.min.css?" type="text/css" />
<link rel="stylesheet" href="js/jquery/css/smoothness/jquery-ui-1.8.10.custom.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" />
<script type="text/javascript" src="js/jquery/jquery-1.7.min.js"></script> <script type="text/javascript" src="js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.center.js"></script> <script type="text/javascript" src="js/jquery/jquery.center.js"></script>
<script type="text/javascript" src="js/jquery/jquery.form.js"></script> <script type="text/javascript" src="js/jquery/jquery.form.min.js"></script>
<script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script> <script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script>
<script type="text/javascript" src="js/jquery/jquery.each.js"></script> <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.10.custom.min.js"></script> <script type="text/javascript" src="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.js"></script>
<script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script> <script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.event.drag-2.0.min.js"></script> <script type="text/javascript" src="js/jquery/jquery.event.drag-2.2.min.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script>

View File

@ -25,20 +25,20 @@
<link rel="stylesheet" href="js/jquery/tabbs/jquery.tabbs.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/tabbs/jquery.tabbs.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" /> <link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" />
<link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.css?" type="text/css" /> <link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.min.css?" type="text/css" />
<link rel="stylesheet" href="js/jquery/css/smoothness/jquery-ui-1.8.10.custom.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" /> <link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" />
<script type="text/javascript" src="js/jquery/jquery-1.7.min.js"></script> <script type="text/javascript" src="js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.center.js"></script> <script type="text/javascript" src="js/jquery/jquery.center.js"></script>
<script type="text/javascript" src="js/jquery/tabbs/jquery.tabbs.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/tabbs/jquery.tabbs.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script> <script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script> <script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script>
<script type="text/javascript" src="js/jquery/jquery.each.js"></script> <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.10.custom.min.js"></script> <script type="text/javascript" src="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.js"></script>
<script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script> <script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.event.drag-2.0.min.js"></script> <script type="text/javascript" src="js/jquery/jquery.event.drag-2.2.min.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script>
<script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script> <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script>

View File

@ -53,3 +53,4 @@
</ul> </ul>
</div> </div>
</div> </div>
<div id="search-flow-results"></div>

View File

@ -79,3 +79,4 @@
</div> </div>
</div> </div>
</div> </div>
<div id="search-users-results"></div>

View File

@ -21,3 +21,4 @@
<div id="cluster-search-example">(e.g.&nbsp;my.host:80)</div> <div id="cluster-search-example">(e.g.&nbsp;my.host:80)</div>
</div> </div>
</div> </div>
<div id="search-cluster-results"></div>

View File

@ -451,34 +451,41 @@ input.search-flow {
color: #7098AD; color: #7098AD;
} }
li.search-header { #search-flow-results .ui-autocomplete {
max-height: 400px;
overflow: auto;
border: 1px solid #aaaaaa;
z-index: 1251;
border-radius: 0;
}
#search-flow-results .ui-menu .ui-menu-item a.ui-state-focus {
background: #D4E0E5 !important;
border: 1px solid #999999;
border-radius: 0;
}
#search-flow-results li.search-header {
font-weight: bold; font-weight: bold;
padding-top: 4px; padding-top: 4px;
padding-left: 4px; padding-left: 4px;
padding-right: 4px; padding-right: 4px;
height: 14px; height: 14px;
float: left;
clear: left;
} }
.ui-autocomplete { #search-flow-results div.search-match-header {
max-height: 400px;
overflow: auto;
}
div.search-match-header {
font-weight: normal; font-weight: normal;
margin-left: 19px; margin-left: 19px;
} }
div.search-match { #search-flow-results div.search-match {
margin-left: 26px; margin-left: 26px;
color: #888; color: #888;
font-size: 10px; font-size: 10px;
line-height: 1.4em; line-height: 1.4em;
} }
li.search-no-matches { #search-flow-results li.search-no-matches {
padding: 4px; padding: 4px;
font-weight: bold; font-weight: bold;
color: #aaa; color: #aaa;

View File

@ -110,14 +110,26 @@ input.search-users {
color: #888; color: #888;
} }
#search-users-results .ui-autocomplete {
max-height: 300px;
overflow: auto;
border: 1px solid #aaaaaa;
z-index: 1351;
border-radius: 0;
}
#search-users-results .ui-menu .ui-menu-item a.ui-state-focus {
background: #D4E0E5 !important;
border: 1px solid #999999;
border-radius: 0;
}
li.search-users-header { li.search-users-header {
font-weight: bold; font-weight: bold;
padding-top: 4px; padding-top: 4px;
padding-left: 4px; padding-left: 4px;
padding-right: 4px; padding-right: 4px;
height: 14px; height: 14px;
float: left;
clear: left;
} }
div.search-users-match-header { div.search-users-match-header {

View File

@ -145,6 +145,12 @@ div.relationship-description {
margin-top: 5px; margin-top: 5px;
} }
#run-duration-slider .ui-slider-handle {
border-radius: 0;
border: 1px solid #999;
outline: none;
}
#run-duration-labels { #run-duration-labels {
font-family: sans-serif; font-family: sans-serif;
} }

View File

@ -139,9 +139,18 @@ div.search-match {
font-size: 10px; font-size: 10px;
} }
.ui-autocomplete { #search-cluster-results .ui-autocomplete {
max-height: 300px; max-height: 300px;
overflow: auto; overflow: auto;
border: 1px solid #aaaaaa;
z-index: 1351;
border-radius: 0;
}
#search-cluster-results .ui-menu .ui-menu-item a.ui-state-focus {
background: #D4E0E5 !important;
border: 1px solid #999999;
border-radius: 0;
} }
input.search-nodes { input.search-nodes {

View File

@ -1,4 +1,4 @@
Copyright (C) 2013 by Marijn Haverbeke <marijnh@gmail.com> and others Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -1,125 +0,0 @@
(function (mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function (CodeMirror) {
var ie_lt8 = /MSIE \d/.test(navigator.userAgent) &&
(document.documentMode == null || document.documentMode < 8);
var Pos = CodeMirror.Pos;
var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"};
function findMatchingBracket(cm, where, strict, config) {
var line = cm.getLineHandle(where.line), pos = where.ch - 1;
var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];
if (!match)
return null;
var dir = match.charAt(1) == ">" ? 1 : -1;
if (strict && (dir > 0) != (pos == where.ch))
return null;
var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));
var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config);
return {from: Pos(where.line, pos), to: found && found.pos,
match: found && found.ch == match.charAt(0), forward: dir > 0};
}
function scanForBracket(cm, where, dir, style, config) {
var maxScanLen = (config && config.maxScanLineLength) || 10000;
var maxScanLines = (config && config.maxScanLines) || 500;
var stack = [], re = /[(){}[\]]/;
var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)
: Math.max(cm.firstLine() - 1, where.line - maxScanLines);
for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {
var line = cm.getLine(lineNo);
if (!line)
continue;
var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;
if (line.length > maxScanLen)
continue;
if (lineNo == where.line)
pos = where.ch - (dir < 0 ? 1 : 0);
for (; pos != end; pos += dir) {
var ch = line.charAt(pos);
if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {
var match = matching[ch];
if ((match.charAt(1) == ">") == (dir > 0))
stack.push(ch);
else if (!stack.length)
return {pos: Pos(lineNo, pos), ch: ch};
else
stack.pop();
}
}
}
}
function matchBrackets(cm, autoclear, config) {
// Disable brace matching in long lines, since it'll cause hugely slow updates
var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;
var marks = [], ranges = cm.listSelections();
for (var i = 0; i < ranges.length; i++) {
var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, false, config);
if (match && cm.getLine(match.from.line).length <= maxHighlightLen &&
match.to && cm.getLine(match.to.line).length <= maxHighlightLen) {
var style = match.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket";
marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));
if (match.to)
marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));
}
}
if (marks.length) {
// Kludge to work around the IE bug from issue #1193, where text
// input stops going to the textare whever this fires.
if (ie_lt8 && cm.state.focused)
cm.display.input.focus();
var clear = function () {
cm.operation(function () {
for (var i = 0; i < marks.length; i++)
marks[i].clear();
});
};
if (autoclear)
setTimeout(clear, 800);
else
return clear;
}
}
var currentlyHighlighted = null;
function doMatchBrackets(cm) {
cm.operation(function () {
if (currentlyHighlighted) {
currentlyHighlighted();
currentlyHighlighted = null;
}
currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);
});
}
CodeMirror.defineOption("matchBrackets", false, function (cm, val, old) {
if (old && old != CodeMirror.Init)
cm.off("cursorActivity", doMatchBrackets);
if (val) {
cm.state.matchBrackets = typeof val == "object" ? val : {};
cm.on("cursorActivity", doMatchBrackets);
}
});
CodeMirror.defineExtension("matchBrackets", function () {
matchBrackets(this, true);
});
CodeMirror.defineExtension("findMatchingBracket", function (pos, strict) {
return findMatchingBracket(this, pos, strict);
});
CodeMirror.defineExtension("scanForBracket", function (pos, dir, style) {
return scanForBracket(this, pos, dir, style);
});
});

View File

@ -32,7 +32,7 @@
cursor: pointer; cursor: pointer;
} }
.CodeMirror-hint-active { li.CodeMirror-hint-active {
background: #08f; background: #08f;
color: white; color: white;
} }

View File

@ -1,411 +0,0 @@
(function (mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function (CodeMirror) {
"use strict";
var HINT_ELEMENT_CLASS = "CodeMirror-hint";
var ACTIVE_HINT_ELEMENT_CLASS = "CodeMirror-hint-active";
CodeMirror.showHint = function (cm, getHints, options) {
// We want a single cursor position.
if (cm.listSelections().length > 1 || cm.somethingSelected())
return;
if (getHints == null) {
if (options && options.async)
return;
else
getHints = CodeMirror.hint.auto;
}
if (cm.state.completionActive)
cm.state.completionActive.close();
var completion = cm.state.completionActive = new Completion(cm, getHints, options || {});
CodeMirror.signal(cm, "startCompletion", cm);
if (completion.options.async)
getHints(cm, function (hints) {
completion.showHints(hints);
}, completion.options);
else
return completion.showHints(getHints(cm, completion.options));
};
function Completion(cm, getHints, options) {
this.cm = cm;
this.getHints = getHints;
this.options = options;
this.widget = this.onClose = null;
}
Completion.prototype = {
close: function () {
if (!this.active())
return;
this.cm.state.completionActive = null;
if (this.widget)
this.widget.close();
if (this.onClose)
this.onClose();
CodeMirror.signal(this.cm, "endCompletion", this.cm);
},
active: function () {
return this.cm.state.completionActive == this;
},
pick: function (data, i) {
var completion = data.list[i];
if (completion.hint)
completion.hint(this.cm, data, completion);
else
this.cm.replaceRange(getText(completion), completion.from || data.from, completion.to || data.to);
CodeMirror.signal(data, "pick", completion);
this.close();
},
showHints: function (data) {
if (!data || !data.list.length || !this.active())
return this.close();
if (this.options.completeSingle != false && data.list.length == 1)
this.pick(data, 0);
else
this.showWidget(data);
},
showWidget: function (data) {
this.widget = new Widget(this, data);
CodeMirror.signal(data, "shown");
var debounce = 0, completion = this, finished;
var closeOn = this.options.closeCharacters || /[\s()\[\]{};:>,]/;
var startPos = this.cm.getCursor(), startLen = this.cm.getLine(startPos.line).length;
var requestAnimationFrame = window.requestAnimationFrame || function (fn) {
return setTimeout(fn, 1000 / 60);
};
var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;
function done() {
if (finished)
return;
finished = true;
completion.close();
completion.cm.off("cursorActivity", activity);
if (data)
CodeMirror.signal(data, "close");
}
function update() {
if (finished)
return;
CodeMirror.signal(data, "update");
if (completion.options.async)
completion.getHints(completion.cm, finishUpdate, completion.options);
else
finishUpdate(completion.getHints(completion.cm, completion.options));
}
function finishUpdate(data_) {
data = data_;
if (finished)
return;
if (!data || !data.list.length)
return done();
completion.widget = new Widget(completion, data);
}
function clearDebounce() {
if (debounce) {
cancelAnimationFrame(debounce);
debounce = 0;
}
}
function activity() {
clearDebounce();
var pos = completion.cm.getCursor(), line = completion.cm.getLine(pos.line);
if (pos.line != startPos.line || line.length - pos.ch != startLen - startPos.ch ||
pos.ch < startPos.ch || completion.cm.somethingSelected() ||
(pos.ch && closeOn.test(line.charAt(pos.ch - 1)))) {
completion.close();
} else {
debounce = requestAnimationFrame(update);
if (completion.widget)
completion.widget.close();
}
}
this.cm.on("cursorActivity", activity);
this.onClose = done;
}
};
function getText(completion) {
if (typeof completion == "string")
return completion;
else
return completion.text;
}
function buildKeyMap(options, handle) {
var baseMap = {
Up: function () {
handle.moveFocus(-1);
},
Down: function () {
handle.moveFocus(1);
},
PageUp: function () {
handle.moveFocus(-handle.menuSize() + 1, true);
},
PageDown: function () {
handle.moveFocus(handle.menuSize() - 1, true);
},
Home: function () {
handle.setFocus(0);
},
End: function () {
handle.setFocus(handle.length - 1);
},
Enter: handle.pick,
Tab: handle.pick,
Esc: handle.close
};
var ourMap = options.customKeys ? {} : baseMap;
function addBinding(key, val) {
var bound;
if (typeof val != "string")
bound = function (cm) {
return val(cm, handle);
};
// This mechanism is deprecated
else if (baseMap.hasOwnProperty(val))
bound = baseMap[val];
else
bound = val;
ourMap[key] = bound;
}
if (options.customKeys)
for (var key in options.customKeys)
if (options.customKeys.hasOwnProperty(key))
addBinding(key, options.customKeys[key]);
if (options.extraKeys)
for (var key in options.extraKeys)
if (options.extraKeys.hasOwnProperty(key))
addBinding(key, options.extraKeys[key]);
return ourMap;
}
function getHintElement(hintsElement, el) {
while (el && el != hintsElement) {
if (el.nodeName.toUpperCase() === "LI" && el.parentNode == hintsElement)
return el;
el = el.parentNode;
}
}
function Widget(completion, data) {
this.completion = completion;
this.data = data;
var widget = this, cm = completion.cm, options = completion.options;
var hints = this.hints = document.createElement("ul");
hints.className = "CodeMirror-hints";
this.selectedHint = options.getDefaultSelection ? options.getDefaultSelection(cm, options, data) : 0;
var completions = data.list;
for (var i = 0; i < completions.length; ++i) {
var elt = hints.appendChild(document.createElement("li")), cur = completions[i];
var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? "" : " " + ACTIVE_HINT_ELEMENT_CLASS);
if (cur.className != null)
className = cur.className + " " + className;
elt.className = className;
if (cur.render)
cur.render(elt, data, cur);
else
elt.appendChild(document.createTextNode(cur.displayText || getText(cur)));
elt.hintId = i;
}
var pos = cm.cursorCoords(options.alignWithWord !== false ? data.from : null);
var left = pos.left, top = pos.bottom, below = true;
hints.style.left = left + "px";
hints.style.top = top + "px";
// If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.
var winW = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth);
var winH = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight);
(options.container || document.body).appendChild(hints);
var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH;
if (overlapY > 0) {
var height = box.bottom - box.top, curTop = box.top - (pos.bottom - pos.top);
if (curTop - height > 0) { // Fits above cursor
hints.style.top = (top = curTop - height) + "px";
below = false;
} else if (height > winH) {
hints.style.height = (winH - 5) + "px";
hints.style.top = (top = pos.bottom - box.top) + "px";
var cursor = cm.getCursor();
if (data.from.ch != cursor.ch) {
pos = cm.cursorCoords(cursor);
hints.style.left = (left = pos.left) + "px";
box = hints.getBoundingClientRect();
}
}
}
var overlapX = box.left - winW;
if (overlapX > 0) {
if (box.right - box.left > winW) {
hints.style.width = (winW - 5) + "px";
overlapX -= (box.right - box.left) - winW;
}
hints.style.left = (left = pos.left - overlapX) + "px";
}
cm.addKeyMap(this.keyMap = buildKeyMap(options, {
moveFocus: function (n, avoidWrap) {
widget.changeActive(widget.selectedHint + n, avoidWrap);
},
setFocus: function (n) {
widget.changeActive(n);
},
menuSize: function () {
return widget.screenAmount();
},
length: completions.length,
close: function () {
completion.close();
},
pick: function () {
widget.pick();
},
data: data
}));
if (options.closeOnUnfocus !== false) {
var closingOnBlur;
cm.on("blur", this.onBlur = function () {
closingOnBlur = setTimeout(function () {
completion.close();
}, 100);
});
cm.on("focus", this.onFocus = function () {
clearTimeout(closingOnBlur);
});
}
var startScroll = cm.getScrollInfo();
cm.on("scroll", this.onScroll = function () {
var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();
var newTop = top + startScroll.top - curScroll.top;
var point = newTop - (window.pageYOffset || (document.documentElement || document.body).scrollTop);
if (!below)
point += hints.offsetHeight;
if (point <= editor.top || point >= editor.bottom)
return completion.close();
hints.style.top = newTop + "px";
hints.style.left = (left + startScroll.left - curScroll.left) + "px";
});
CodeMirror.on(hints, "dblclick", function (e) {
var t = getHintElement(hints, e.target || e.srcElement);
if (t && t.hintId != null) {
widget.changeActive(t.hintId);
widget.pick();
}
});
CodeMirror.on(hints, "click", function (e) {
var t = getHintElement(hints, e.target || e.srcElement);
if (t && t.hintId != null) {
widget.changeActive(t.hintId);
if (options.completeOnSingleClick)
widget.pick();
}
});
CodeMirror.on(hints, "mousedown", function () {
setTimeout(function () {
cm.focus();
}, 20);
});
CodeMirror.signal(data, "select", completions[0], hints.firstChild);
return true;
}
Widget.prototype = {
close: function () {
if (this.completion.widget != this)
return;
this.completion.widget = null;
this.hints.parentNode.removeChild(this.hints);
this.completion.cm.removeKeyMap(this.keyMap);
var cm = this.completion.cm;
if (this.completion.options.closeOnUnfocus !== false) {
cm.off("blur", this.onBlur);
cm.off("focus", this.onFocus);
}
cm.off("scroll", this.onScroll);
},
pick: function () {
this.completion.pick(this.data, this.selectedHint);
},
changeActive: function (i, avoidWrap) {
if (i >= this.data.list.length)
i = avoidWrap ? this.data.list.length - 1 : 0;
else if (i < 0)
i = avoidWrap ? 0 : this.data.list.length - 1;
if (this.selectedHint == i)
return;
var node = this.hints.childNodes[this.selectedHint];
node.className = node.className.replace(" " + ACTIVE_HINT_ELEMENT_CLASS, "");
node = this.hints.childNodes[this.selectedHint = i];
node.className += " " + ACTIVE_HINT_ELEMENT_CLASS;
if (node.offsetTop < this.hints.scrollTop)
this.hints.scrollTop = node.offsetTop - 3;
else if (node.offsetTop + node.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)
this.hints.scrollTop = node.offsetTop + node.offsetHeight - this.hints.clientHeight + 3;
CodeMirror.signal(this.data, "select", this.data.list[this.selectedHint], node);
},
screenAmount: function () {
return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;
}
};
CodeMirror.registerHelper("hint", "auto", function (cm, options) {
var helpers = cm.getHelpers(cm.getCursor(), "hint"), words;
if (helpers.length) {
for (var i = 0; i < helpers.length; i++) {
var cur = helpers[i](cm, options);
if (cur && cur.list.length)
return cur;
}
} else if (words = cm.getHelper(cm.getCursor(), "hintWords")) {
if (words)
return CodeMirror.hint.fromList(cm, {words: words});
} else if (CodeMirror.hint.anyword) {
return CodeMirror.hint.anyword(cm, options);
}
});
CodeMirror.registerHelper("hint", "fromList", function (cm, options) {
var cur = cm.getCursor(), token = cm.getTokenAt(cur);
var found = [];
for (var i = 0; i < options.words.length; i++) {
var word = options.words[i];
if (word.slice(0, token.string.length) == token.string)
found.push(word);
}
if (found.length)
return {
list: found,
from: CodeMirror.Pos(cur.line, token.start),
to: CodeMirror.Pos(cur.line, token.end)
};
});
CodeMirror.commands.autocomplete = CodeMirror.showHint;
});

File diff suppressed because one or more lines are too long

View File

@ -40,6 +40,9 @@
box-sizing: content-box; box-sizing: content-box;
} }
.CodeMirror-guttermarker { color: black; }
.CodeMirror-guttermarker-subtle { color: #999; }
/* CURSOR */ /* CURSOR */
.CodeMirror div.CodeMirror-cursor { .CodeMirror div.CodeMirror-cursor {
@ -49,15 +52,42 @@
.CodeMirror div.CodeMirror-secondarycursor { .CodeMirror div.CodeMirror-secondarycursor {
border-left: 1px solid silver; border-left: 1px solid silver;
} }
.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor { .CodeMirror.cm-fat-cursor div.CodeMirror-cursor {
width: auto; width: auto;
border: 0; border: 0;
background: #7e7; background: #7e7;
} }
.CodeMirror.cm-fat-cursor div.CodeMirror-cursors {
z-index: 1;
}
.cm-animate-fat-cursor {
width: auto;
border: 0;
-webkit-animation: blink 1.06s steps(1) infinite;
-moz-animation: blink 1.06s steps(1) infinite;
animation: blink 1.06s steps(1) infinite;
}
@-moz-keyframes blink {
0% { background: #7e7; }
50% { background: none; }
100% { background: #7e7; }
}
@-webkit-keyframes blink {
0% { background: #7e7; }
50% { background: none; }
100% { background: #7e7; }
}
@keyframes blink {
0% { background: #7e7; }
50% { background: none; }
100% { background: #7e7; }
}
/* Can style cursor different in overwrite (non-insert) mode */ /* Can style cursor different in overwrite (non-insert) mode */
div.CodeMirror-overwrite div.CodeMirror-cursor {} div.CodeMirror-overwrite div.CodeMirror-cursor {}
.cm-tab { display: inline-block; } .cm-tab { display: inline-block; text-decoration: inherit; }
.CodeMirror-ruler { .CodeMirror-ruler {
border-left: 1px solid #ccc; border-left: 1px solid #ccc;
@ -70,11 +100,12 @@ div.CodeMirror-overwrite div.CodeMirror-cursor {}
.cm-s-default .cm-atom {color: #219;} .cm-s-default .cm-atom {color: #219;}
.cm-s-default .cm-number {color: #164;} .cm-s-default .cm-number {color: #164;}
.cm-s-default .cm-def {color: #00f;} .cm-s-default .cm-def {color: #00f;}
.cm-s-default .cm-variable {color: black;} .cm-s-default .cm-variable,
.cm-s-default .cm-punctuation,
.cm-s-default .cm-property,
.cm-s-default .cm-operator {}
.cm-s-default .cm-variable-2 {color: #05a;} .cm-s-default .cm-variable-2 {color: #05a;}
.cm-s-default .cm-variable-3 {color: #085;} .cm-s-default .cm-variable-3 {color: #085;}
.cm-s-default .cm-property {color: black;}
.cm-s-default .cm-operator {color: black;}
.cm-s-default .cm-comment {color: #a50;} .cm-s-default .cm-comment {color: #a50;}
.cm-s-default .cm-string {color: #a11;} .cm-s-default .cm-string {color: #a11;}
.cm-s-default .cm-string-2 {color: #f50;} .cm-s-default .cm-string-2 {color: #f50;}
@ -94,12 +125,16 @@ div.CodeMirror-overwrite div.CodeMirror-cursor {}
.cm-header, .cm-strong {font-weight: bold;} .cm-header, .cm-strong {font-weight: bold;}
.cm-em {font-style: italic;} .cm-em {font-style: italic;}
.cm-link {text-decoration: underline;} .cm-link {text-decoration: underline;}
.cm-strikethrough {text-decoration: line-through;}
.cm-s-default .cm-error {color: #f00;} .cm-s-default .cm-error {color: #f00;}
.cm-invalidchar {color: #f00;} .cm-invalidchar {color: #f00;}
/* Default styles for common addons */
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }
.CodeMirror-activeline-background {background: #e8f2ff;} .CodeMirror-activeline-background {background: #e8f2ff;}
/* STOP */ /* STOP */
@ -175,6 +210,11 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
*zoom:1; *zoom:1;
*display:inline; *display:inline;
} }
.CodeMirror-gutter-wrapper {
position: absolute;
z-index: 4;
height: 100%;
}
.CodeMirror-gutter-elt { .CodeMirror-gutter-elt {
position: absolute; position: absolute;
cursor: default; cursor: default;
@ -183,6 +223,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
.CodeMirror-lines { .CodeMirror-lines {
cursor: text; cursor: text;
min-height: 1px; /* prevents collapsing before first draw */
} }
.CodeMirror pre { .CodeMirror pre {
/* Reset some styles that the rest of the page might have set */ /* Reset some styles that the rest of the page might have set */
@ -242,7 +283,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
div.CodeMirror-cursors { div.CodeMirror-cursors {
visibility: hidden; visibility: hidden;
position: relative; position: relative;
z-index: 1; z-index: 3;
} }
.CodeMirror-focused div.CodeMirror-cursors { .CodeMirror-focused div.CodeMirror-cursors {
visibility: visible; visibility: visible;
@ -250,6 +291,7 @@ div.CodeMirror-cursors {
.CodeMirror-selected { background: #d9d9d9; } .CodeMirror-selected { background: #d9d9d9; }
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } .CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
.CodeMirror-crosshair { cursor: crosshair; }
.cm-searching { .cm-searching {
background: #ffa; background: #ffa;
@ -268,3 +310,9 @@ div.CodeMirror-cursors {
visibility: hidden; visibility: hidden;
} }
} }
/* See issue #2901 */
.cm-tab-wrap-hack:after { content: ''; }
/* Help users use markselection to safely style text background */
span.CodeMirror-selectedtext { background: none; }

View File

@ -1,4 +1,4 @@
Copyright (c) 2013, Michael Bostock Copyright (c) 2010-2014, Michael Bostock
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without

File diff suppressed because one or more lines are too long

View File

@ -93,7 +93,7 @@
// ensure we found the selected option // ensure we found the selected option
if (isDefinedAndNotNull(selectedOption)) { if (isDefinedAndNotNull(selectedOption)) {
$(comboText).removeClass('selected-disabled-option').attr('title', selectedOption.text).text(selectedOption.text).data('text', selectedOption.text); $(comboText).removeClass('selected-disabled-option').attr('title', selectedOption.text).text(selectedOption.text).data('text', selectedOption.text).width(combo.outerWidth() - 25);
// if the selected option is disabled show it // if the selected option is disabled show it
if (selectedOption.disabled === true) { if (selectedOption.disabled === true) {
@ -245,9 +245,6 @@
// add the drop down arrow // add the drop down arrow
$('<div class="combo-arrow"></div>').appendTo(combo); $('<div class="combo-arrow"></div>').appendTo(combo);
// set the width of the combo text
comboText.width($(combo).outerWidth() - 25);
// set the selection // set the selection
if (isDefinedAndNotNull(options.selectedOption)) { if (isDefinedAndNotNull(options.selectedOption)) {
selectOption(combo, options.selectedOption.text, options.selectedOption.value); selectOption(combo, options.selectedOption.text, options.selectedOption.value);

View File

@ -1,625 +0,0 @@
/*
* jQuery UI CSS Framework 1.8.10
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework 1.8.10
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
.ui-widget-content a { color: #222222; }
.ui-widget-header a { color: #222222; }
.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
/* Interaction states
----------------------------------*/
/*.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }*/
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
font-weight: normal;
color: #555555;
}
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
/*.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }*/
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
font-weight: normal;
color: #212121;
outline: none;
}
/* override the highlight when hovering over certain elements */
li.ui-menu-item .ui-state-hover {
background: #D4E0E5 !important;
border: 1px solid #999999;
}
.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
.ui-widget :active { outline: none; }
/* Interaction Cues
----------------------------------*/
/*.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {
background: #FFE8B3;
color: #363636;
}
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
/*.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }*/
.ui-state-default .ui-icon {
background-image: url(images/ui-icons_ffffff_256x240.png);
}
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
/*
.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
*/
/* Overlays */
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
* jQuery UI Resizable 1.8.10
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Resizable#theming
*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
* jQuery UI Selectable 1.8.10
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Selectable#theming
*/
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
/*
* jQuery UI Accordion 1.8.10
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Accordion#theming
*/
/* IE/Win - Fix animation bug - #4615 */
.ui-accordion { width: 100%; }
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
.ui-accordion .ui-accordion-content-active { display: block; }
/*
* jQuery UI Autocomplete 1.8.10
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Autocomplete#theming
*/
/*.ui-autocomplete { position: absolute; cursor: default; } */
.ui-autocomplete {
position: absolute;
cursor: default;
border: 1px solid #aaaaaa;
}
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
/*
* jQuery UI Menu 1.8.10
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Menu#theming
*/
.ui-menu {
list-style:none;
padding: 2px;
margin: 0;
display:block;
float: left;
}
.ui-menu .ui-menu {
margin-top: -3px;
}
.ui-menu .ui-menu-item {
margin:0;
padding: 0;
zoom: 1;
float: left;
clear: left;
width: 100%;
}
.ui-menu .ui-menu-item a {
text-decoration:none;
display:block;
padding:.2em .4em;
line-height:1.5;
zoom:1;
}
.ui-menu .ui-menu-item a.ui-state-hover,
.ui-menu .ui-menu-item a.ui-state-active {
font-weight: normal;
margin: -1px;
}
/*
* jQuery UI Button 1.8.10
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Button#theming
*/
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
.ui-button-icons-only { width: 3.4em; }
button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
/* no icon support for input elements, provide padding by default */
input.ui-button { padding: .4em 1em; }
/*button icon element(s) */
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
/*button sets*/
.ui-buttonset { margin-right: 7px; }
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
/* workarounds */
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
/*
* jQuery UI Dialog 1.8.10
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Dialog#theming
*/
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/*
* jQuery UI Slider 1.8.10
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Slider#theming
*/
.ui-slider { position: relative; text-align: left; }
/*.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }*/
.ui-slider .ui-slider-handle {
border: 1px solid #999999;
position: absolute;
z-index: 2;
width: 1.2em;
height: 1.2em;
cursor: default;
}
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
* jQuery UI Tabs 1.8.10
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Tabs#theming
*/
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }
/*
* jQuery UI Datepicker 1.8.10
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Datepicker#theming
*/
/*.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }*/
.ui-datepicker {
width: 17em;
padding: .2em .2em 0;
border: 1px solid #aaa;
display: none;
}
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
/*.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }*/
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover {
top: 1px;
border: 1px solid #aaa;
cursor: pointer;
}
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}/*
* jQuery UI Progressbar 1.8.10
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Progressbar#theming
*/
.ui-progressbar { height:2em; text-align: left; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }

File diff suppressed because one or more lines are too long

View File

@ -1,194 +0,0 @@
/*!
* jquery.event.drag - v 2.0.0
* Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
* Open Source MIT License - http://threedubmedia.com/code/license
*/
;
(function (f) {
f.fn.drag = function (b, a, d) {
var e = typeof b == "string" ? b : "", k = f.isFunction(b) ? b : f.isFunction(a) ? a : null;
if (e.indexOf("drag") !== 0)
e = "drag" + e;
d = (b == k ? a : d) || {};
return k ? this.bind(e, d, k) : this.trigger(e)
};
var i = f.event, h = i.special, c = h.drag = {defaults: {which: 1, distance: 0, not: ":input", handle: null, relative: false, drop: true, click: false}, datakey: "dragdata", livekey: "livedrag", add: function (b) {
var a = f.data(this, c.datakey), d = b.data || {};
a.related += 1;
if (!a.live && b.selector) {
a.live = true;
i.add(this, "draginit." + c.livekey, c.delegate)
}
f.each(c.defaults, function (e) {
if (d[e] !== undefined)
a[e] = d[e]
})
}, remove: function () {
f.data(this, c.datakey).related -= 1
}, setup: function () {
if (!f.data(this, c.datakey)) {
var b = f.extend({related: 0}, c.defaults);
f.data(this, c.datakey, b);
i.add(this, "mousedown", c.init, b);
this.attachEvent && this.attachEvent("ondragstart", c.dontstart)
}
}, teardown: function () {
if (!f.data(this, c.datakey).related) {
f.removeData(this, c.datakey);
i.remove(this, "mousedown", c.init);
i.remove(this, "draginit", c.delegate);
c.textselect(true);
this.detachEvent && this.detachEvent("ondragstart", c.dontstart)
}
}, init: function (b) {
var a = b.data, d;
if (!(a.which > 0 && b.which != a.which))
if (!f(b.target).is(a.not))
if (!(a.handle && !f(b.target).closest(a.handle, b.currentTarget).length)) {
a.propagates = 1;
a.interactions = [c.interaction(this, a)];
a.target = b.target;
a.pageX = b.pageX;
a.pageY = b.pageY;
a.dragging = null;
d = c.hijack(b, "draginit", a);
if (a.propagates) {
if ((d = c.flatten(d)) && d.length) {
a.interactions = [];
f.each(d, function () {
a.interactions.push(c.interaction(this, a))
})
}
a.propagates = a.interactions.length;
a.drop !== false && h.drop && h.drop.handler(b, a);
c.textselect(false);
i.add(document, "mousemove mouseup", c.handler, a);
return false
}
}
}, interaction: function (b, a) {
return{drag: b, callback: new c.callback, droppable: [], offset: f(b)[a.relative ? "position" : "offset"]() || {top: 0, left: 0}}
}, handler: function (b) {
var a = b.data;
switch (b.type) {
case !a.dragging && "mousemove":
if (Math.pow(b.pageX - a.pageX, 2) + Math.pow(b.pageY - a.pageY, 2) < Math.pow(a.distance, 2))
break;
b.target = a.target;
c.hijack(b, "dragstart", a);
if (a.propagates)
a.dragging = true;
case "mousemove":
if (a.dragging) {
c.hijack(b, "drag", a);
if (a.propagates) {
a.drop !== false && h.drop && h.drop.handler(b, a);
break
}
b.type = "mouseup"
}
case "mouseup":
i.remove(document, "mousemove mouseup", c.handler);
if (a.dragging) {
a.drop !== false && h.drop && h.drop.handler(b, a);
c.hijack(b, "dragend", a)
}
c.textselect(true);
if (a.click === false && a.dragging) {
jQuery.event.triggered = true;
setTimeout(function () {
jQuery.event.triggered = false
}, 20);
a.dragging = false
}
break
}
}, delegate: function (b) {
var a = [], d, e = f.data(this, "events") || {};
f.each(e.live || [], function (k, j) {
if (j.preType.indexOf("drag") === 0)
if (d = f(b.target).closest(j.selector, b.currentTarget)[0]) {
i.add(d, j.origType + "." + c.livekey, j.origHandler, j.data);
f.inArray(d, a) < 0 && a.push(d)
}
});
if (!a.length)
return false;
return f(a).bind("dragend." + c.livekey, function () {
i.remove(this, "." + c.livekey)
})
}, hijack: function (b, a, d, e, k) {
if (d) {
var j = {event: b.originalEvent, type: b.type}, n = a.indexOf("drop") ? "drag" : "drop", l, o = e || 0, g, m;
e = !isNaN(e) ? e : d.interactions.length;
b.type = a;
b.originalEvent = null;
d.results = [];
do
if (g = d.interactions[o])
if (!(a !== "dragend" && g.cancelled)) {
m = c.properties(b, d, g);
g.results = [];
f(k || g[n] || d.droppable).each(function (q, p) {
l = (m.target = p) ? i.handle.call(p, b, m) : null;
if (l === false) {
if (n == "drag") {
g.cancelled = true;
d.propagates -= 1
}
if (a == "drop")
g[n][q] = null
} else if (a == "dropinit")
g.droppable.push(c.element(l) || p);
if (a == "dragstart")
g.proxy = f(c.element(l) || g.drag)[0];
g.results.push(l);
delete b.result;
if (a !== "dropinit")
return l
});
d.results[o] = c.flatten(g.results);
if (a == "dropinit")
g.droppable = c.flatten(g.droppable);
a == "dragstart" && !g.cancelled && m.update()
}
while (++o < e);
b.type = j.type;
b.originalEvent = j.event;
return c.flatten(d.results)
}
}, properties: function (b, a, d) {
var e = d.callback;
e.drag = d.drag;
e.proxy = d.proxy || d.drag;
e.startX = a.pageX;
e.startY = a.pageY;
e.deltaX = b.pageX - a.pageX;
e.deltaY = b.pageY - a.pageY;
e.originalX = d.offset.left;
e.originalY = d.offset.top;
e.offsetX = b.pageX - (a.pageX - e.originalX);
e.offsetY = b.pageY - (a.pageY - e.originalY);
e.drop = c.flatten((d.drop || []).slice());
e.available = c.flatten((d.droppable || []).slice());
return e
}, element: function (b) {
if (b && (b.jquery || b.nodeType == 1))
return b
}, flatten: function (b) {
return f.map(b, function (a) {
return a && a.jquery ? f.makeArray(a) : a && a.length ? c.flatten(a) : a
})
}, textselect: function (b) {
f(document)[b ? "unbind" : "bind"]("selectstart", c.dontstart).attr("unselectable", b ? "off" : "on").css("MozUserSelect", b ? "" : "none")
}, dontstart: function () {
return false
}, callback: function () {
}};
c.callback.prototype = {update: function () {
h.drop && this.available.length && f.each(this.available, function (b) {
h.drop.locate(this, b)
})
}};
h.draginit = h.dragstart = h.dragend = c
})(jQuery);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -232,6 +232,9 @@
height: 28px; height: 28px;
border-radius: 3px; border-radius: 3px;
} }
.minicolors-theme-bootstrap .minicolors-swatch-color {
border-radius: inherit;
}
.minicolors-theme-bootstrap.minicolors-position-right .minicolors-swatch { .minicolors-theme-bootstrap.minicolors-position-right .minicolors-swatch {
left: auto; left: auto;
right: 3px; right: 3px;
@ -243,3 +246,14 @@
padding-right: 44px; padding-right: 44px;
padding-left: 12px; padding-left: 12px;
} }
.minicolors-theme-bootstrap .minicolors-input.input-lg + .minicolors-swatch {
top: 4px;
left: 4px;
width: 37px;
height: 37px;
border-radius: 5px;
}
.minicolors-theme-bootstrap .minicolors-input.input-sm + .minicolors-swatch {
width: 24px;
height: 24px;
}

View File

@ -1,557 +0,0 @@
/*
* qTip2 - Pretty powerful tooltips
* http://craigsworks.com/projects/qtip2/
*
* Version: 2.0.0pre
* Copyright 2009-2010 Craig Michael Thompson - http://craigsworks.com
*
* Dual licensed under MIT or GPLv2 licenses
* http://en.wikipedia.org/wiki/MIT_License
* http://en.wikipedia.org/wiki/GNU_General_Public_License
*
* Date: Thu Apr 26 20:40:09 2012 +0100
*/
/* Core qTip styles */
.ui-tooltip, .qtip{
position: absolute;
left: -28000px;
top: -28000px;
display: none;
max-width: 600px;
min-width: 50px;
font-size: 10.5px;
line-height: 12px;
}
/* Fluid class for determining actual width in IE */
.ui-tooltip-fluid{
display: block;
visibility: hidden;
position: static !important;
float: left !important;
}
.ui-tooltip-content{
position: relative;
padding: 5px 9px;
overflow: hidden;
border: 1px solid #000001;
text-align: left;
word-wrap: break-word;
overflow: hidden;
}
.ui-tooltip-titlebar{
position: relative;
min-height: 14px;
padding: 5px 35px 5px 10px;
overflow: hidden;
border: 1px solid #000001;
border-width: 1px 1px 0;
font-weight: bold;
}
.ui-tooltip-titlebar + .ui-tooltip-content{ border-top-width: 0px !important; }
/*! Default close button class */
.ui-tooltip-titlebar .ui-state-default{
position: absolute;
right: 4px;
top: 50%;
margin-top: -9px;
cursor: pointer;
outline: medium none;
border-width: 1px;
border-style: solid;
}
* html .ui-tooltip-titlebar .ui-state-default{ top: 16px; } /* IE fix */
.ui-tooltip-titlebar .ui-icon,
.ui-tooltip-icon .ui-icon{
display: block;
text-indent: -1000em;
}
.ui-tooltip-icon, .ui-tooltip-icon .ui-icon{
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
}
.ui-tooltip-icon .ui-icon{
width: 18px;
height: 14px;
text-align: center;
text-indent: 0;
font: normal bold 10px/13px Tahoma,sans-serif;
color: inherit;
background: transparent none no-repeat -100em -100em;
}
/* Applied to 'focused' tooltips e.g. most recently displayed/interacted with */
.ui-tooltip-focus{
}
/* Applied on hover of tooltips i.e. added/removed on mouseenter/mouseleave respectively */
.ui-tooltip-hover{
}
/*! Default tooltip style */
.ui-tooltip-default .ui-tooltip-titlebar,
.ui-tooltip-default .ui-tooltip-content{
border-color: #F1D031;
background-color: #FFFFA3;
color: #555;
}
.ui-tooltip-default .ui-tooltip-titlebar{
background-color: #FFEF93;
}
.ui-tooltip-default .ui-tooltip-icon{
border-color: #CCC;
background: #F1F1F1;
color: #777;
}
.ui-tooltip-default .ui-tooltip-titlebar .ui-state-hover{
border-color: #AAA;
color: #111;
}
/* Modal plugin */
#qtip-overlay{
position: fixed;
left: -10000em;
top: -10000em;
}
/* Applied to modals with show.modal.blur set to true */
#qtip-overlay.blurs{ cursor: pointer; }
/* Change opacity of overlay here */
#qtip-overlay div{
position: absolute;
left: 0; top: 0;
width: 100%; height: 100%;
background-color: black;
opacity: 0.7;
filter:alpha(opacity=70);
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
}
/* Tips plugin */
.ui-tooltip .ui-tooltip-tip{
margin: 0 auto;
overflow: hidden;
z-index: 10;
}
.ui-tooltip .ui-tooltip-tip,
.ui-tooltip .ui-tooltip-tip *{
position: absolute;
line-height: 0.1px !important;
font-size: 0.1px !important;
color: #123456;
background: transparent;
border: 0px dashed transparent;
}
.ui-tooltip .ui-tooltip-tip canvas{ top: 0; left: 0; }
/*! Light tooltip style */
.ui-tooltip-light .ui-tooltip-titlebar,
.ui-tooltip-light .ui-tooltip-content{
border-color: #E2E2E2;
color: #454545;
}
.ui-tooltip-light .ui-tooltip-content{
background-color: white;
}
.ui-tooltip-light .ui-tooltip-titlebar{
background-color: #f1f1f1;
}
/*! Dark tooltip style */
.ui-tooltip-dark .ui-tooltip-titlebar,
.ui-tooltip-dark .ui-tooltip-content{
border-color: #303030;
color: #f3f3f3;
}
.ui-tooltip-dark .ui-tooltip-content{
background-color: #505050;
}
.ui-tooltip-dark .ui-tooltip-titlebar{
background-color: #404040;
}
.ui-tooltip-dark .ui-tooltip-icon{
border-color: #444;
}
.ui-tooltip-dark .ui-tooltip-titlebar .ui-state-hover{
border-color: #303030;
}
/*! Cream tooltip style */
.ui-tooltip-cream .ui-tooltip-titlebar,
.ui-tooltip-cream .ui-tooltip-content{
border-color: #F9E98E;
color: #A27D35;
}
.ui-tooltip-cream .ui-tooltip-content{
background-color: #FBF7AA;
}
.ui-tooltip-cream .ui-tooltip-titlebar{
background-color: #F0DE7D;
}
.ui-tooltip-cream .ui-state-default .ui-tooltip-icon{
background-position: -82px 0;
}
/*! Red tooltip style */
.ui-tooltip-red .ui-tooltip-titlebar,
.ui-tooltip-red .ui-tooltip-content{
border-color: #D95252;
color: #912323;
}
.ui-tooltip-red .ui-tooltip-content{
background-color: #F78B83;
}
.ui-tooltip-red .ui-tooltip-titlebar{
background-color: #F06D65;
}
.ui-tooltip-red .ui-state-default .ui-tooltip-icon{
background-position: -102px 0;
}
.ui-tooltip-red .ui-tooltip-icon{
border-color: #D95252;
}
.ui-tooltip-red .ui-tooltip-titlebar .ui-state-hover{
border-color: #D95252;
}
/*! Green tooltip style */
.ui-tooltip-green .ui-tooltip-titlebar,
.ui-tooltip-green .ui-tooltip-content{
border-color: #90D93F;
color: #3F6219;
}
.ui-tooltip-green .ui-tooltip-content{
background-color: #CAED9E;
}
.ui-tooltip-green .ui-tooltip-titlebar{
background-color: #B0DE78;
}
.ui-tooltip-green .ui-state-default .ui-tooltip-icon{
background-position: -42px 0;
}
/*! Blue tooltip style */
.ui-tooltip-blue .ui-tooltip-titlebar,
.ui-tooltip-blue .ui-tooltip-content{
border-color: #ADD9ED;
color: #5E99BD;
}
.ui-tooltip-blue .ui-tooltip-content{
background-color: #E5F6FE;
}
.ui-tooltip-blue .ui-tooltip-titlebar{
background-color: #D0E9F5;
}
.ui-tooltip-blue .ui-state-default .ui-tooltip-icon{
background-position: -2px 0;
}
/*! Add shadows to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE6+, Safari 2+ */
.ui-tooltip-shadow{
-webkit-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
-moz-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
}
.ui-tooltip-shadow .ui-tooltip-titlebar,
.ui-tooltip-shadow .ui-tooltip-content{
filter: progid:DXImageTransform.Microsoft.Shadow(Color='gray', Direction=135, Strength=3);
-ms-filter:"progid:DXImageTransform.Microsoft.Shadow(Color='gray', Direction=135, Strength=3)";
_margin-bottom: -3px; /* IE6 */
.margin-bottom: -3px; /* IE7 */
}
/*! Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */
.ui-tooltip-rounded,
.ui-tooltip-rounded .ui-tooltip-content,
.ui-tooltip-tipsy,
.ui-tooltip-tipsy .ui-tooltip-content,
.ui-tooltip-youtube,
.ui-tooltip-youtube .ui-tooltip-content{
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
}
.ui-tooltip-rounded .ui-tooltip-titlebar,
.ui-tooltip-tipsy .ui-tooltip-titlebar,
.ui-tooltip-youtube .ui-tooltip-titlebar{
-moz-border-radius: 5px 5px 0 0;
-webkit-border-radius: 5px 5px 0 0;
border-radius: 5px 5px 0 0;
}
.ui-tooltip-rounded .ui-tooltip-titlebar + .ui-tooltip-content,
.ui-tooltip-tipsy .ui-tooltip-titlebar + .ui-tooltip-content,
.ui-tooltip-youtube .ui-tooltip-titlebar + .ui-tooltip-content{
-moz-border-radius: 0 0 5px 5px;
-webkit-border-radius: 0 0 5px 5px;
border-radius: 0 0 5px 5px;
}
/*! Youtube tooltip style */
.ui-tooltip-youtube{
-webkit-box-shadow: 0 0 3px #333;
-moz-box-shadow: 0 0 3px #333;
box-shadow: 0 0 3px #333;
}
.ui-tooltip-youtube .ui-tooltip-titlebar,
.ui-tooltip-youtube .ui-tooltip-content{
_margin-bottom: 0; /* IE6 */
.margin-bottom: 0; /* IE7 */
background: transparent;
background: rgba(0, 0, 0, 0.85);
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000);
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000)";
color: white;
border-color: #CCCCCC;
}
.ui-tooltip-youtube .ui-tooltip-icon{
border-color: #222;
}
.ui-tooltip-youtube .ui-tooltip-titlebar .ui-state-hover{
border-color: #303030;
}
/* jQuery TOOLS Tooltip style */
.ui-tooltip-jtools{
background: #232323;
background: rgba(0, 0, 0, 0.7);
background-image: -moz-linear-gradient(top, #717171, #232323);
background-image: -webkit-gradient(linear, left top, left bottom, from(#717171), to(#232323));
border: 2px solid #ddd;
border: 2px solid rgba(241,241,241,1);
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
-webkit-box-shadow: 0 0 12px #333;
-moz-box-shadow: 0 0 12px #333;
box-shadow: 0 0 12px #333;
}
/* IE Specific */
.ui-tooltip-jtools .ui-tooltip-titlebar{
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A);
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)";
}
.ui-tooltip-jtools .ui-tooltip-content{
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323);
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)";
}
.ui-tooltip-jtools .ui-tooltip-titlebar,
.ui-tooltip-jtools .ui-tooltip-content{
background: transparent;
color: white;
border: 0 dashed transparent;
}
.ui-tooltip-jtools .ui-tooltip-icon{
border-color: #555;
}
.ui-tooltip-jtools .ui-tooltip-titlebar .ui-state-hover{
border-color: #333;
}
/* Cluetip style */
.ui-tooltip-cluetip{
-webkit-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
-moz-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
}
.ui-tooltip-cluetip .ui-tooltip-titlebar{
background-color: #87876A;
color: white;
border: 0 dashed transparent;
}
.ui-tooltip-cluetip .ui-tooltip-content{
background-color: #D9D9C2;
color: #111;
border: 0 dashed transparent;
}
.ui-tooltip-cluetip .ui-tooltip-icon{
border-color: #808064;
}
.ui-tooltip-cluetip .ui-tooltip-titlebar .ui-state-hover{
border-color: #696952;
color: #696952;
}
/* Tipsy style */
.ui-tooltip-tipsy{
border: 0;
}
.ui-tooltip-tipsy .ui-tooltip-titlebar,
.ui-tooltip-tipsy .ui-tooltip-content{
_margin-bottom: 0; /* IE6 */
.margin-bottom: 0; /* IE7 */
background: transparent;
background: rgba(0, 0, 0, .87);
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000);
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000)";
color: white;
border: 0px transparent;
font-size: 11px;
font-family: 'Lucida Grande', sans-serif;
font-weight: bold;
line-height: 16px;
text-shadow: 0 1px black;
}
.ui-tooltip-tipsy .ui-tooltip-titlebar{
padding: 6px 35px 0 10;
}
.ui-tooltip-tipsy .ui-tooltip-content{
padding: 6px 10;
}
.ui-tooltip-tipsy .ui-tooltip-icon{
border-color: #222;
text-shadow: none;
}
.ui-tooltip-tipsy .ui-tooltip-titlebar .ui-state-hover{
border-color: #303030;
}
/* Tipped style */
.ui-tooltip-tipped{
}
.ui-tooltip-tipped .ui-tooltip-titlebar,
.ui-tooltip-tipped .ui-tooltip-content{
border: 3px solid #959FA9;
filter: none; -ms-filter: none;
}
.ui-tooltip-tipped .ui-tooltip-titlebar{
background: #3A79B8;
background-image: -moz-linear-gradient(top, #3A79B8, #2E629D);
background-image: -webkit-gradient(linear, left top, left bottom, from(#3A79B8), to(#2E629D));
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D);
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)";
color: white;
font-weight: normal;
font-family: serif;
border-bottom-width: 0;
-moz-border-radius: 3px 3px 0 0;
-webkit-border-radius: 3px 3px 0 0;
border-radius: 3px 3px 0 0;
}
.ui-tooltip-tipped .ui-tooltip-content{
background-color: #F9F9F9;
color: #454545;
-moz-border-radius: 0 0 3px 3px;
-webkit-border-radius: 0 0 3px 3px;
border-radius: 0 0 3px 3px;
}
.ui-tooltip-tipped .ui-tooltip-icon{
border: 2px solid #285589;
background: #285589;
}
.ui-tooltip-tipped .ui-tooltip-icon .ui-icon{
background-color: #FBFBFB;
color: #555;
}
/* IE9 fix - removes all filters */
.ui-tooltip:not(.ie9haxors) div.ui-tooltip-content,
.ui-tooltip:not(.ie9haxors) div.ui-tooltip-titlebar{
filter: none;
-ms-filter: none;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,20 @@
Copyright (c) 2010 Michael Leibman, http://github.com/mleibman/slickgrid
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 B

View File

@ -77,11 +77,11 @@ classes should alter those!
} }
.slick-group-toggle.expanded { .slick-group-toggle.expanded {
background: url(../../../../images/collapse.gif) no-repeat center center; background: url(images/collapse.gif) no-repeat center center;
} }
.slick-group-toggle.collapsed { .slick-group-toggle.collapsed {
background: url(../../../../images/expand.gif) no-repeat center center; background: url(images/expand.gif) no-repeat center center;
} }
.slick-group-totals { .slick-group-totals {
@ -103,7 +103,7 @@ classes should alter those!
background: silver !important; background: silver !important;
} }
.slick-row[row$="1"], .slick-row[row$="3"], .slick-row[row$="5"], .slick-row[row$="7"], .slick-row[row$="9"] { .slick-row.odd {
background: #fafafa; background: #fafafa;
} }
@ -118,4 +118,18 @@ classes should alter those!
.slick-cell.invalid { .slick-cell.invalid {
border-color: red; border-color: red;
-moz-animation-duration: 0.2s;
-webkit-animation-duration: 0.2s;
-moz-animation-name: slickgrid-invalid-hilite;
-webkit-animation-name: slickgrid-invalid-hilite;
}
@-moz-keyframes slickgrid-invalid-hilite {
from { box-shadow: 0 0 6px red; }
to { box-shadow: none; }
}
@-webkit-keyframes slickgrid-invalid-hilite {
from { box-shadow: 0 0 6px red; }
to { box-shadow: none; }
} }

View File

@ -8,11 +8,11 @@ classes should alter those!
.slick-header.ui-state-default, .slick-headerrow.ui-state-default { .slick-header.ui-state-default, .slick-headerrow.ui-state-default {
width: 100%; width: 100%;
overflow: hidden; overflow: hidden;
border-left: 0px; /*border-left: 0px;*/
border: 0px;
} }
.slick-header-columns, .slick-headerrow-columns { .slick-header-columns, .slick-headerrow-columns {
width: 999999px;
position: relative; position: relative;
white-space: nowrap; white-space: nowrap;
cursor: default; cursor: default;
@ -23,6 +23,7 @@ classes should alter those!
position: relative; position: relative;
display: inline-block; display: inline-block;
overflow: hidden; overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis; text-overflow: ellipsis;
height: 16px; height: 16px;
line-height: 16px; line-height: 16px;
@ -48,6 +49,8 @@ classes should alter those!
width: 8px; width: 8px;
height: 5px; height: 5px;
margin-left: 4px; margin-left: 4px;
margin-top: 6px;
/*float: left;*/
} }
.slick-sort-indicator-desc { .slick-sort-indicator-desc {
@ -86,21 +89,17 @@ classes should alter those!
.slick-cell, .slick-headerrow-column { .slick-cell, .slick-headerrow-column {
position: absolute; position: absolute;
border: 1px solid transparent; border: 1px solid transparent;
border-right: 1px dotted silver; border-right: 1px dotted silver;
border-bottom-color: silver; border-bottom-color: silver;
overflow: hidden; overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap;
vertical-align: middle; vertical-align: middle;
z-index: 1; z-index: 1;
padding: 1px 2px 2px 1px; padding: 1px 2px 2px 1px;
margin: 0; margin: 0;
white-space: nowrap; white-space: nowrap;
cursor: default; cursor: default;
} }
@ -116,6 +115,7 @@ classes should alter those!
background: rgba(0, 0, 255, 0.2); background: rgba(0, 0, 255, 0.2);
-webkit-transition: all 0.5s; -webkit-transition: all 0.5s;
-moz-transition: all 0.5s; -moz-transition: all 0.5s;
-o-transition: all 0.5s;
transition: all 0.5s; transition: all 0.5s;
} }

View File

@ -1,45 +1,80 @@
(function ($) { (function ($) {
// register namespace // Register namespace
$.extend(true, window, { $.extend(true, window, {
"Slick": { "Slick": {
"AutoTooltips": AutoTooltips "AutoTooltips": AutoTooltips
} }
}); });
/**
* AutoTooltips plugin to show/hide tooltips when columns are too narrow to fit content.
* @constructor
* @param {boolean} [options.enableForCells=true] - Enable tooltip for grid cells
* @param {boolean} [options.enableForHeaderCells=false] - Enable tooltip for header cells
* @param {number} [options.maxToolTipLength=null] - The maximum length for a tooltip
*/
function AutoTooltips(options) { function AutoTooltips(options) {
var _grid; var _grid;
var _self = this; var _self = this;
var _defaults = { var _defaults = {
enableForCells: true,
enableForHeaderCells: false,
maxToolTipLength: null maxToolTipLength: null
}; };
/**
* Initialize plugin.
*/
function init(grid) { function init(grid) {
options = $.extend(true, {}, _defaults, options); options = $.extend(true, {}, _defaults, options);
_grid = grid; _grid = grid;
_grid.onMouseEnter.subscribe(handleMouseEnter); if (options.enableForCells) _grid.onMouseEnter.subscribe(handleMouseEnter);
if (options.enableForHeaderCells) _grid.onHeaderMouseEnter.subscribe(handleHeaderMouseEnter);
} }
/**
* Destroy plugin.
*/
function destroy() { function destroy() {
_grid.onMouseEnter.unsubscribe(handleMouseEnter); if (options.enableForCells) _grid.onMouseEnter.unsubscribe(handleMouseEnter);
if (options.enableForHeaderCells) _grid.onHeaderMouseEnter.unsubscribe(handleHeaderMouseEnter);
} }
function handleMouseEnter(e, args) { /**
* Handle mouse entering grid cell to add/remove tooltip.
* @param {jQuery.Event} e - The event
*/
function handleMouseEnter(e) {
var cell = _grid.getCellFromEvent(e); var cell = _grid.getCellFromEvent(e);
if (cell) { if (cell) {
var node = _grid.getCellNode(cell.row, cell.cell); var $node = $(_grid.getCellNode(cell.row, cell.cell));
if ($(node).innerWidth() < node.scrollWidth) { var text;
var text = $.trim($(node).text()); if ($node.innerWidth() < $node[0].scrollWidth) {
text = $.trim($node.text());
if (options.maxToolTipLength && text.length > options.maxToolTipLength) { if (options.maxToolTipLength && text.length > options.maxToolTipLength) {
text = text.substr(0, options.maxToolTipLength - 3) + "..."; text = text.substr(0, options.maxToolTipLength - 3) + "...";
} }
$(node).attr("title", text);
} else { } else {
$(node).attr("title", ""); text = "";
} }
$node.attr("title", text);
} }
} }
/**
* Handle mouse entering header cell to add/remove tooltip.
* @param {jQuery.Event} e - The event
* @param {object} args.column - The column definition
*/
function handleHeaderMouseEnter(e, args) {
var column = args.column,
$node = $(e.target).closest(".slick-header-column");
if (!column.toolTip) {
$node.attr("title", ($node.innerWidth() < $node[0].scrollWidth) ? column.name : "");
}
}
// Public API
$.extend(this, { $.extend(this, {
"init": init, "init": init,
"destroy": destroy "destroy": destroy

View File

@ -20,6 +20,7 @@
function CellRangeDecorator(grid, options) { function CellRangeDecorator(grid, options) {
var _elem; var _elem;
var _defaults = { var _defaults = {
selectionCssClass: 'slick-range-decorator',
selectionCss: { selectionCss: {
"zIndex": "9999", "zIndex": "9999",
"border": "2px dashed red" "border": "2px dashed red"
@ -32,6 +33,7 @@
function show(range) { function show(range) {
if (!_elem) { if (!_elem) {
_elem = $("<div></div>", {css: options.selectionCss}) _elem = $("<div></div>", {css: options.selectionCss})
.addClass(options.selectionCssClass)
.css("position", "absolute") .css("position", "absolute")
.appendTo(grid.getCanvasNode()); .appendTo(grid.getCanvasNode());
} }

View File

@ -13,6 +13,7 @@
var _dragging; var _dragging;
var _decorator; var _decorator;
var _self = this; var _self = this;
var _handler = new Slick.EventHandler();
var _defaults = { var _defaults = {
selectionCss: { selectionCss: {
"border": "2px dashed blue" "border": "2px dashed blue"
@ -25,17 +26,15 @@
_decorator = new Slick.CellRangeDecorator(grid, options); _decorator = new Slick.CellRangeDecorator(grid, options);
_grid = grid; _grid = grid;
_canvas = _grid.getCanvasNode(); _canvas = _grid.getCanvasNode();
_grid.onDragInit.subscribe(handleDragInit); _handler
_grid.onDragStart.subscribe(handleDragStart); .subscribe(_grid.onDragInit, handleDragInit)
_grid.onDrag.subscribe(handleDrag); .subscribe(_grid.onDragStart, handleDragStart)
_grid.onDragEnd.subscribe(handleDragEnd); .subscribe(_grid.onDrag, handleDrag)
.subscribe(_grid.onDragEnd, handleDragEnd);
} }
function destroy() { function destroy() {
_grid.onDragInit.unsubscribe(handleDragInit); _handler.unsubscribeAll();
_grid.onDragStart.unsubscribe(handleDragStart);
_grid.onDrag.unsubscribe(handleDrag);
_grid.onDragEnd.unsubscribe(handleDragEnd);
} }
function handleDragInit(e, dd) { function handleDragInit(e, dd) {
@ -55,6 +54,8 @@
return; return;
} }
_grid.focus();
var start = _grid.getCellFromPoint( var start = _grid.getCellFromPoint(
dd.startX - $(_canvas).offset().left, dd.startX - $(_canvas).offset().left,
dd.startY - $(_canvas).offset().top); dd.startY - $(_canvas).offset().top);
@ -104,6 +105,7 @@
$.extend(this, { $.extend(this, {
"init": init, "init": init,
"destroy": destroy, "destroy": destroy,
"onBeforeCellRangeSelected": new Slick.Event(), "onBeforeCellRangeSelected": new Slick.Event(),
"onCellRangeSelected": new Slick.Event() "onCellRangeSelected": new Slick.Event()
}); });

View File

@ -28,6 +28,7 @@
_grid = grid; _grid = grid;
_canvas = _grid.getCanvasNode(); _canvas = _grid.getCanvasNode();
_grid.onActiveCellChanged.subscribe(handleActiveCellChange); _grid.onActiveCellChanged.subscribe(handleActiveCellChange);
_grid.onKeyDown.subscribe(handleKeyDown);
grid.registerPlugin(_selector); grid.registerPlugin(_selector);
_selector.onCellRangeSelected.subscribe(handleCellRangeSelected); _selector.onCellRangeSelected.subscribe(handleCellRangeSelected);
_selector.onBeforeCellRangeSelected.subscribe(handleBeforeCellRangeSelected); _selector.onBeforeCellRangeSelected.subscribe(handleBeforeCellRangeSelected);
@ -35,6 +36,7 @@
function destroy() { function destroy() {
_grid.onActiveCellChanged.unsubscribe(handleActiveCellChange); _grid.onActiveCellChanged.unsubscribe(handleActiveCellChange);
_grid.onKeyDown.unsubscribe(handleKeyDown);
_selector.onCellRangeSelected.unsubscribe(handleCellRangeSelected); _selector.onCellRangeSelected.unsubscribe(handleCellRangeSelected);
_selector.onBeforeCellRangeSelected.unsubscribe(handleBeforeCellRangeSelected); _selector.onBeforeCellRangeSelected.unsubscribe(handleBeforeCellRangeSelected);
_grid.unregisterPlugin(_selector); _grid.unregisterPlugin(_selector);
@ -74,16 +76,78 @@
} }
function handleActiveCellChange(e, args) { function handleActiveCellChange(e, args) {
if (_options.selectActiveCell) { if (_options.selectActiveCell && args.row != null && args.cell != null) {
setSelectedRanges([new Slick.Range(args.row, args.cell)]); setSelectedRanges([new Slick.Range(args.row, args.cell)]);
} }
} }
function handleKeyDown(e) {
/***
* Кey codes
* 37 left
* 38 up
* 39 right
* 40 down
*/
var ranges, last;
var active = _grid.getActiveCell();
if ( active && e.shiftKey && !e.ctrlKey && !e.altKey &&
(e.which == 37 || e.which == 39 || e.which == 38 || e.which == 40) ) {
ranges = getSelectedRanges();
if (!ranges.length)
ranges.push(new Slick.Range(active.row, active.cell));
// keyboard can work with last range only
last = ranges.pop();
// can't handle selection out of active cell
if (!last.contains(active.row, active.cell))
last = new Slick.Range(active.row, active.cell);
var dRow = last.toRow - last.fromRow,
dCell = last.toCell - last.fromCell,
// walking direction
dirRow = active.row == last.fromRow ? 1 : -1,
dirCell = active.cell == last.fromCell ? 1 : -1;
if (e.which == 37) {
dCell -= dirCell;
} else if (e.which == 39) {
dCell += dirCell ;
} else if (e.which == 38) {
dRow -= dirRow;
} else if (e.which == 40) {
dRow += dirRow;
}
// define new selection range
var new_last = new Slick.Range(active.row, active.cell, active.row + dirRow*dRow, active.cell + dirCell*dCell);
if (removeInvalidRanges([new_last]).length) {
ranges.push(new_last);
var viewRow = dirRow > 0 ? new_last.toRow : new_last.fromRow;
var viewCell = dirCell > 0 ? new_last.toCell : new_last.fromCell;
_grid.scrollRowIntoView(viewRow);
_grid.scrollCellIntoView(viewRow, viewCell);
}
else
ranges.push(last);
setSelectedRanges(ranges);
e.preventDefault();
e.stopPropagation();
}
}
$.extend(this, { $.extend(this, {
"getSelectedRanges": getSelectedRanges, "getSelectedRanges": getSelectedRanges,
"setSelectedRanges": setSelectedRanges, "setSelectedRanges": setSelectedRanges,
"init": init, "init": init,
"destroy": destroy, "destroy": destroy,
"onSelectedRangesChanged": new Slick.Event() "onSelectedRangesChanged": new Slick.Event()
}); });
} }

View File

@ -90,7 +90,7 @@
} }
function handleActiveCellChange(e, data) { function handleActiveCellChange(e, data) {
if (_options.selectActiveRow) { if (_options.selectActiveRow && data.row != null) {
setSelectedRanges([new Slick.Range(data.row, 0, data.row, _grid.getColumns().length - 1)]); setSelectedRanges([new Slick.Range(data.row, 0, data.row, _grid.getColumns().length - 1)]);
} }
} }
@ -134,13 +134,14 @@
return false; return false;
} }
if (!_grid.getOptions().multiSelect || (
!e.ctrlKey && !e.shiftKey && !e.metaKey)) {
return false;
}
var selection = rangesToRows(_ranges); var selection = rangesToRows(_ranges);
var idx = $.inArray(cell.row, selection); var idx = $.inArray(cell.row, selection);
if (!e.ctrlKey && !e.shiftKey && !e.metaKey) {
return false;
}
else if (_grid.getOptions().multiSelect) {
if (idx === -1 && (e.ctrlKey || e.metaKey)) { if (idx === -1 && (e.ctrlKey || e.metaKey)) {
selection.push(cell.row); selection.push(cell.row);
_grid.setActiveCell(cell.row, cell.cell); _grid.setActiveCell(cell.row, cell.cell);
@ -162,7 +163,6 @@
selection.push(last); selection.push(last);
_grid.setActiveCell(cell.row, cell.cell); _grid.setActiveCell(cell.row, cell.cell);
} }
}
_ranges = rowsToRanges(selection); _ranges = rowsToRanges(selection);
setSelectedRanges(_ranges); setSelectedRanges(_ranges);
@ -174,10 +174,13 @@
$.extend(this, { $.extend(this, {
"getSelectedRows": getSelectedRows, "getSelectedRows": getSelectedRows,
"setSelectedRows": setSelectedRows, "setSelectedRows": setSelectedRows,
"getSelectedRanges": getSelectedRanges, "getSelectedRanges": getSelectedRanges,
"setSelectedRanges": setSelectedRanges, "setSelectedRanges": setSelectedRanges,
"init": init, "init": init,
"destroy": destroy, "destroy": destroy,
"onSelectedRangesChanged": new Slick.Event() "onSelectedRangesChanged": new Slick.Event()
}); });
} }

View File

@ -16,6 +16,7 @@
"Group": Group, "Group": Group,
"GroupTotals": GroupTotals, "GroupTotals": GroupTotals,
"EditorLock": EditorLock, "EditorLock": EditorLock,
/*** /***
* A global singleton editor lock. * A global singleton editor lock.
* @class GlobalEditorLock * @class GlobalEditorLock
@ -138,6 +139,8 @@
handler: handler handler: handler
}); });
event.subscribe(handler); event.subscribe(handler);
return this; // allow chaining
}; };
this.unsubscribe = function (event, handler) { this.unsubscribe = function (event, handler) {
@ -150,6 +153,8 @@
return; return;
} }
} }
return this; // allow chaining
}; };
this.unsubscribeAll = function () { this.unsubscribeAll = function () {
@ -158,6 +163,8 @@
handlers[i].event.unsubscribe(handlers[i].handler); handlers[i].event.unsubscribe(handlers[i].handler);
} }
handlers = []; handlers = [];
return this; // allow chaining
} }
} }
@ -264,7 +271,13 @@
*/ */
function Group() { function Group() {
this.__group = true; this.__group = true;
this.__updated = false;
/**
* Grouping level, starting with 0.
* @property level
* @type {Number}
*/
this.level = 0;
/*** /***
* Number of rows in the group. * Number of rows in the group.
@ -300,6 +313,28 @@
* @type {GroupTotals} * @type {GroupTotals}
*/ */
this.totals = null; this.totals = null;
/**
* Rows that are part of the group.
* @property rows
* @type {Array}
*/
this.rows = [];
/**
* Sub-groups that are part of the group.
* @property groups
* @type {Array}
*/
this.groups = null;
/**
* A unique key used to identify the group. This key can be used in calls to DataView
* collapseGroup() or expandGroup().
* @property groupingKey
* @type {Object}
*/
this.groupingKey = null;
} }
Group.prototype = new NonDataItem(); Group.prototype = new NonDataItem();
@ -313,7 +348,8 @@
Group.prototype.equals = function (group) { Group.prototype.equals = function (group) {
return this.value === group.value && return this.value === group.value &&
this.count === group.count && this.count === group.count &&
this.collapsed === group.collapsed; this.collapsed === group.collapsed &&
this.title === group.title;
}; };
/*** /***
@ -334,6 +370,14 @@
* @type {Group} * @type {Group}
*/ */
this.group = null; this.group = null;
/***
* Whether the totals have been fully initialized / calculated.
* Will be set to false for lazy-calculated group totals.
* @param initialized
* @type {Boolean}
*/
this.initialized = false;
} }
GroupTotals.prototype = new NonDataItem(); GroupTotals.prototype = new NonDataItem();

View File

@ -50,15 +50,23 @@
var filterCache = []; var filterCache = [];
// grouping // grouping
var groupingGetter; var groupingInfoDefaults = {
var groupingGetterIsAFn; getter: null,
var groupingFormatter; formatter: null,
var groupingComparer; comparer: function(a, b) { return a.value - b.value; },
predefinedValues: [],
aggregators: [],
aggregateEmpty: false,
aggregateCollapsed: false,
aggregateChildGroups: false,
collapsed: false,
displayTotalsRow: true,
lazyTotalsCalculation: false
};
var groupingInfos = [];
var groups = []; var groups = [];
var collapsedGroups = {}; var toggledGroupsByLevel = [];
var aggregators; var groupingDelimiter = ':|:';
var aggregateCollapsed = false;
var compiledAccumulators;
var pagesize = 0; var pagesize = 0;
var pagenum = 0; var pagenum = 0;
@ -207,35 +215,67 @@
refresh(); refresh();
} }
function groupBy(valueGetter, valueFormatter, sortComparer) { function getGrouping() {
return groupingInfos;
}
function setGrouping(groupingInfo) {
if (!options.groupItemMetadataProvider) { if (!options.groupItemMetadataProvider) {
options.groupItemMetadataProvider = new Slick.Data.GroupItemMetadataProvider(); options.groupItemMetadataProvider = new Slick.Data.GroupItemMetadataProvider();
} }
groupingGetter = valueGetter;
groupingGetterIsAFn = typeof groupingGetter === "function";
groupingFormatter = valueFormatter;
groupingComparer = sortComparer;
collapsedGroups = {};
groups = []; groups = [];
refresh(); toggledGroupsByLevel = [];
} groupingInfo = groupingInfo || [];
groupingInfos = (groupingInfo instanceof Array) ? groupingInfo : [groupingInfo];
function setAggregators(groupAggregators, includeCollapsed) { for (var i = 0; i < groupingInfos.length; i++) {
aggregators = groupAggregators; var gi = groupingInfos[i] = $.extend(true, {}, groupingInfoDefaults, groupingInfos[i]);
aggregateCollapsed = (includeCollapsed !== undefined) gi.getterIsAFn = typeof gi.getter === "function";
? includeCollapsed : aggregateCollapsed;
// pre-compile accumulator loops // pre-compile accumulator loops
compiledAccumulators = []; gi.compiledAccumulators = [];
var idx = aggregators.length; var idx = gi.aggregators.length;
while (idx--) { while (idx--) {
compiledAccumulators[idx] = compileAccumulatorLoop(aggregators[idx]); gi.compiledAccumulators[idx] = compileAccumulatorLoop(gi.aggregators[idx]);
}
toggledGroupsByLevel[i] = {};
} }
refresh(); refresh();
} }
/**
* @deprecated Please use {@link setGrouping}.
*/
function groupBy(valueGetter, valueFormatter, sortComparer) {
if (valueGetter == null) {
setGrouping([]);
return;
}
setGrouping({
getter: valueGetter,
formatter: valueFormatter,
comparer: sortComparer
});
}
/**
* @deprecated Please use {@link setGrouping}.
*/
function setAggregators(groupAggregators, includeCollapsed) {
if (!groupingInfos.length) {
throw new Error("At least one grouping must be specified before calling setAggregators().");
}
groupingInfos[0].aggregators = groupAggregators;
groupingInfos[0].aggregateCollapsed = includeCollapsed;
setGrouping(groupingInfos);
}
function getItemByIdx(i) { function getItemByIdx(i) {
return items[i]; return items[i];
} }
@ -265,7 +305,7 @@
function mapIdsToRows(idArray) { function mapIdsToRows(idArray) {
var rows = []; var rows = [];
ensureRowsByIdCache(); ensureRowsByIdCache();
for (var i = 0; i < idArray.length; i++) { for (var i = 0, l = idArray.length; i < l; i++) {
var row = rowsById[idArray[i]]; var row = rowsById[idArray[i]];
if (row != null) { if (row != null) {
rows[rows.length] = row; rows[rows.length] = row;
@ -276,7 +316,7 @@
function mapRowsToIds(rowArray) { function mapRowsToIds(rowArray) {
var ids = []; var ids = [];
for (var i = 0; i < rowArray.length; i++) { for (var i = 0, l = rowArray.length; i < l; i++) {
if (rowArray[i] < rows.length) { if (rowArray[i] < rows.length) {
ids[ids.length] = rows[rowArray[i]][idProperty]; ids[ids.length] = rows[rowArray[i]][idProperty];
} }
@ -324,7 +364,22 @@
} }
function getItem(i) { function getItem(i) {
return rows[i]; var item = rows[i];
// if this is a group row, make sure totals are calculated and update the title
if (item && item.__group && item.totals && !item.totals.initialized) {
var gi = groupingInfos[item.level];
if (!gi.displayTotalsRow) {
calculateTotals(item.totals);
item.title = gi.formatter ? gi.formatter(item) : item.value;
}
}
// if this is a totals row, make sure it's calculated
else if (item && item.__groupTotals && !item.initialized) {
calculateTotals(item);
}
return item;
} }
function getItemMetadata(i) { function getItemMetadata(i) {
@ -333,7 +388,7 @@
return null; return null;
} }
// overrides for group rows // overrides for grouping rows
if (item.__group) { if (item.__group) {
return options.groupItemMetadataProvider.getGroupRowMetadata(item); return options.groupItemMetadataProvider.getGroupRowMetadata(item);
} }
@ -346,37 +401,105 @@
return null; return null;
} }
function collapseGroup(groupingValue) { function expandCollapseAllGroups(level, collapse) {
collapsedGroups[groupingValue] = true; if (level == null) {
for (var i = 0; i < groupingInfos.length; i++) {
toggledGroupsByLevel[i] = {};
groupingInfos[i].collapsed = collapse;
}
} else {
toggledGroupsByLevel[level] = {};
groupingInfos[level].collapsed = collapse;
}
refresh(); refresh();
} }
function expandGroup(groupingValue) { /**
delete collapsedGroups[groupingValue]; * @param level {Number} Optional level to collapse. If not specified, applies to all levels.
*/
function collapseAllGroups(level) {
expandCollapseAllGroups(level, true);
}
/**
* @param level {Number} Optional level to expand. If not specified, applies to all levels.
*/
function expandAllGroups(level) {
expandCollapseAllGroups(level, false);
}
function expandCollapseGroup(level, groupingKey, collapse) {
toggledGroupsByLevel[level][groupingKey] = groupingInfos[level].collapsed ^ collapse;
refresh(); refresh();
} }
/**
* @param varArgs Either a Slick.Group's "groupingKey" property, or a
* variable argument list of grouping values denoting a unique path to the row. For
* example, calling collapseGroup('high', '10%') will collapse the '10%' subgroup of
* the 'high' group.
*/
function collapseGroup(varArgs) {
var args = Array.prototype.slice.call(arguments);
var arg0 = args[0];
if (args.length == 1 && arg0.indexOf(groupingDelimiter) != -1) {
expandCollapseGroup(arg0.split(groupingDelimiter).length - 1, arg0, true);
} else {
expandCollapseGroup(args.length - 1, args.join(groupingDelimiter), true);
}
}
/**
* @param varArgs Either a Slick.Group's "groupingKey" property, or a
* variable argument list of grouping values denoting a unique path to the row. For
* example, calling expandGroup('high', '10%') will expand the '10%' subgroup of
* the 'high' group.
*/
function expandGroup(varArgs) {
var args = Array.prototype.slice.call(arguments);
var arg0 = args[0];
if (args.length == 1 && arg0.indexOf(groupingDelimiter) != -1) {
expandCollapseGroup(arg0.split(groupingDelimiter).length - 1, arg0, false);
} else {
expandCollapseGroup(args.length - 1, args.join(groupingDelimiter), false);
}
}
function getGroups() { function getGroups() {
return groups; return groups;
} }
function extractGroups(rows) { function extractGroups(rows, parentGroup) {
var group; var group;
var val; var val;
var groups = []; var groups = [];
var groupsByVal = []; var groupsByVal = {};
var r; var r;
var level = parentGroup ? parentGroup.level + 1 : 0;
var gi = groupingInfos[level];
for (var i = 0, l = rows.length; i < l; i++) { for (var i = 0, l = gi.predefinedValues.length; i < l; i++) {
r = rows[i]; val = gi.predefinedValues[i];
val = (groupingGetterIsAFn) ? groupingGetter(r) : r[groupingGetter];
val = val || 0;
group = groupsByVal[val]; group = groupsByVal[val];
if (!group) { if (!group) {
group = new Slick.Group(); group = new Slick.Group();
group.count = 0;
group.value = val; group.value = val;
group.rows = []; group.level = level;
group.groupingKey = (parentGroup ? parentGroup.groupingKey + groupingDelimiter : '') + val;
groups[groups.length] = group;
groupsByVal[val] = group;
}
}
for (var i = 0, l = rows.length; i < l; i++) {
r = rows[i];
val = gi.getterIsAFn ? gi.getter(r) : r[gi.getter];
group = groupsByVal[val];
if (!group) {
group = new Slick.Group();
group.value = val;
group.level = level;
group.groupingKey = (parentGroup ? parentGroup.groupingKey + groupingDelimiter : '') + val;
groups[groups.length] = group; groups[groups.length] = group;
groupsByVal[val] = group; groupsByVal[val] = group;
} }
@ -384,57 +507,101 @@
group.rows[group.count++] = r; group.rows[group.count++] = r;
} }
if (level < groupingInfos.length - 1) {
for (var i = 0; i < groups.length; i++) {
group = groups[i];
group.groups = extractGroups(group.rows, group);
}
}
groups.sort(groupingInfos[level].comparer);
return groups; return groups;
} }
// TODO: lazy totals calculation function calculateTotals(totals) {
function calculateGroupTotals(group) { var group = totals.group;
if (group.collapsed && !aggregateCollapsed) { var gi = groupingInfos[group.level];
return; var isLeafLevel = (group.level == groupingInfos.length);
var agg, idx = gi.aggregators.length;
if (!isLeafLevel && gi.aggregateChildGroups) {
// make sure all the subgroups are calculated
var i = group.groups.length;
while (i--) {
if (!group.groups[i].initialized) {
calculateTotals(group.groups[i]);
}
}
} }
// TODO: try moving iterating over groups into compiled accumulator
var totals = new Slick.GroupTotals();
var agg, idx = aggregators.length;
while (idx--) { while (idx--) {
agg = aggregators[idx]; agg = gi.aggregators[idx];
agg.init(); agg.init();
compiledAccumulators[idx].call(agg, group.rows); if (!isLeafLevel && gi.aggregateChildGroups) {
gi.compiledAccumulators[idx].call(agg, group.groups);
} else {
gi.compiledAccumulators[idx].call(agg, group.rows);
}
agg.storeResult(totals); agg.storeResult(totals);
} }
totals.initialized = true;
}
function addGroupTotals(group) {
var gi = groupingInfos[group.level];
var totals = new Slick.GroupTotals();
totals.group = group; totals.group = group;
group.totals = totals; group.totals = totals;
} if (!gi.lazyTotalsCalculation) {
calculateTotals(totals);
function calculateTotals(groups) {
var idx = groups.length;
while (idx--) {
calculateGroupTotals(groups[idx]);
} }
} }
function finalizeGroups(groups) { function addTotals(groups, level) {
level = level || 0;
var gi = groupingInfos[level];
var groupCollapsed = gi.collapsed;
var toggledGroups = toggledGroupsByLevel[level];
var idx = groups.length, g; var idx = groups.length, g;
while (idx--) { while (idx--) {
g = groups[idx]; g = groups[idx];
g.collapsed = (g.value in collapsedGroups);
g.title = groupingFormatter ? groupingFormatter(g) : g.value; if (g.collapsed && !gi.aggregateCollapsed) {
continue;
}
// Do a depth-first aggregation so that parent group aggregators can access subgroup totals.
if (g.groups) {
addTotals(g.groups, level + 1);
}
if (gi.aggregators.length && (
gi.aggregateEmpty || g.rows.length || (g.groups && g.groups.length))) {
addGroupTotals(g);
}
g.collapsed = groupCollapsed ^ toggledGroups[g.groupingKey];
g.title = gi.formatter ? gi.formatter(g) : g.value;
} }
} }
function flattenGroupedRows(groups) { function flattenGroupedRows(groups, level) {
var groupedRows = [], gl = 0, g; level = level || 0;
var gi = groupingInfos[level];
var groupedRows = [], rows, gl = 0, g;
for (var i = 0, l = groups.length; i < l; i++) { for (var i = 0, l = groups.length; i < l; i++) {
g = groups[i]; g = groups[i];
groupedRows[gl++] = g; groupedRows[gl++] = g;
if (!g.collapsed) { if (!g.collapsed) {
for (var j = 0, jj = g.rows.length; j < jj; j++) { rows = g.groups ? flattenGroupedRows(g.groups, level + 1) : g.rows;
groupedRows[gl++] = g.rows[j]; for (var j = 0, jj = rows.length; j < jj; j++) {
groupedRows[gl++] = rows[j];
} }
} }
if (g.totals && (!g.collapsed || aggregateCollapsed)) { if (g.totals && gi.displayTotalsRow && (!g.collapsed || gi.aggregateCollapsed)) {
groupedRows[gl++] = g.totals; groupedRows[gl++] = g.totals;
} }
} }
@ -467,10 +634,10 @@
var filterInfo = getFunctionInfo(filter); var filterInfo = getFunctionInfo(filter);
var filterBody = filterInfo.body var filterBody = filterInfo.body
.replace(/return false[;}]/gi, "{ continue _coreloop; }") .replace(/return false\s*([;}]|$)/gi, "{ continue _coreloop; }$1")
.replace(/return true[;}]/gi, "{ _retval[_idx++] = $item$; continue _coreloop; }") .replace(/return true\s*([;}]|$)/gi, "{ _retval[_idx++] = $item$; continue _coreloop; }$1")
.replace(/return ([^;}]+?);/gi, .replace(/return ([^;}]+?)\s*([;}]|$)/gi,
"{ if ($1) { _retval[_idx++] = $item$; }; continue _coreloop; }"); "{ if ($1) { _retval[_idx++] = $item$; }; continue _coreloop; }$2");
// This preserves the function template code after JS compression, // This preserves the function template code after JS compression,
// so that replace() commands still work as expected. // so that replace() commands still work as expected.
@ -499,10 +666,10 @@
var filterInfo = getFunctionInfo(filter); var filterInfo = getFunctionInfo(filter);
var filterBody = filterInfo.body var filterBody = filterInfo.body
.replace(/return false[;}]/gi, "{ continue _coreloop; }") .replace(/return false\s*([;}]|$)/gi, "{ continue _coreloop; }$1")
.replace(/return true[;}]/gi, "{ _cache[_i] = true;_retval[_idx++] = $item$; continue _coreloop; }") .replace(/return true\s*([;}]|$)/gi, "{ _cache[_i] = true;_retval[_idx++] = $item$; continue _coreloop; }$1")
.replace(/return ([^;}]+?);/gi, .replace(/return ([^;}]+?)\s*([;}]|$)/gi,
"{ if ((_cache[_i] = $1)) { _retval[_idx++] = $item$; }; continue _coreloop; }"); "{ if ((_cache[_i] = $1)) { _retval[_idx++] = $item$; }; continue _coreloop; }$2");
// This preserves the function template code after JS compression, // This preserves the function template code after JS compression,
// so that replace() commands still work as expected. // so that replace() commands still work as expected.
@ -613,11 +780,10 @@
item = newRows[i]; item = newRows[i];
r = rows[i]; r = rows[i];
if ((groupingGetter && (eitherIsNonData = (item.__nonDataRow) || (r.__nonDataRow)) && if ((groupingInfos.length && (eitherIsNonData = (item.__nonDataRow) || (r.__nonDataRow)) &&
item.__group !== r.__group || item.__group !== r.__group ||
item.__updated ||
item.__group && !item.equals(r)) item.__group && !item.equals(r))
|| (aggregators && eitherIsNonData && || (eitherIsNonData &&
// no good way to compare totals since they are arbitrary DTOs // no good way to compare totals since they are arbitrary DTOs
// deep object comparison is pretty expensive // deep object comparison is pretty expensive
// always considering them 'dirty' seems easier for the time being // always considering them 'dirty' seems easier for the time being
@ -645,14 +811,10 @@
var newRows = filteredItems.rows; var newRows = filteredItems.rows;
groups = []; groups = [];
if (groupingGetter != null) { if (groupingInfos.length) {
groups = extractGroups(newRows); groups = extractGroups(newRows);
if (groups.length) { if (groups.length) {
finalizeGroups(groups); addTotals(groups);
if (aggregators) {
calculateTotals(groups);
}
groups.sort(groupingComparer);
newRows = flattenGroupedRows(groups); newRows = flattenGroupedRows(groups);
} }
} }
@ -696,30 +858,74 @@
} }
} }
function syncGridSelection(grid, preserveHidden) { /***
* Wires the grid and the DataView together to keep row selection tied to item ids.
* This is useful since, without it, the grid only knows about rows, so if the items
* move around, the same rows stay selected instead of the selection moving along
* with the items.
*
* NOTE: This doesn't work with cell selection model.
*
* @param grid {Slick.Grid} The grid to sync selection with.
* @param preserveHidden {Boolean} Whether to keep selected items that go out of the
* view due to them getting filtered out.
* @param preserveHiddenOnSelectionChange {Boolean} Whether to keep selected items
* that are currently out of the view (see preserveHidden) as selected when selection
* changes.
* @return {Slick.Event} An event that notifies when an internal list of selected row ids
* changes. This is useful since, in combination with the above two options, it allows
* access to the full list selected row ids, and not just the ones visible to the grid.
* @method syncGridSelection
*/
function syncGridSelection(grid, preserveHidden, preserveHiddenOnSelectionChange) {
var self = this; var self = this;
var selectedRowIds = self.mapRowsToIds(grid.getSelectedRows());
;
var inHandler; var inHandler;
var selectedRowIds = self.mapRowsToIds(grid.getSelectedRows());
var onSelectedRowIdsChanged = new Slick.Event();
grid.onSelectedRowsChanged.subscribe(function (e, args) { function setSelectedRowIds(rowIds) {
if (inHandler) { if (selectedRowIds.join(",") == rowIds.join(",")) {
return; return;
} }
selectedRowIds = self.mapRowsToIds(grid.getSelectedRows());
});
this.onRowsChanged.subscribe(function (e, args) { selectedRowIds = rowIds;
onSelectedRowIdsChanged.notify({
"grid": grid,
"ids": selectedRowIds
}, new Slick.EventData(), self);
}
function update() {
if (selectedRowIds.length > 0) { if (selectedRowIds.length > 0) {
inHandler = true; inHandler = true;
var selectedRows = self.mapIdsToRows(selectedRowIds); var selectedRows = self.mapIdsToRows(selectedRowIds);
if (!preserveHidden) { if (!preserveHidden) {
selectedRowIds = self.mapRowsToIds(selectedRows); setSelectedRowIds(self.mapRowsToIds(selectedRows));
} }
grid.setSelectedRows(selectedRows); grid.setSelectedRows(selectedRows);
inHandler = false; inHandler = false;
} }
}
grid.onSelectedRowsChanged.subscribe(function(e, args) {
if (inHandler) { return; }
var newSelectedRowIds = self.mapRowsToIds(grid.getSelectedRows());
if (!preserveHiddenOnSelectionChange || !grid.getOptions().multiSelect) {
setSelectedRowIds(newSelectedRowIds);
} else {
// keep the ones that are hidden
var existing = $.grep(selectedRowIds, function(id) { return self.getRowById(id) === undefined; });
// add the newly selected ones
setSelectedRowIds(existing.concat(newSelectedRowIds));
}
}); });
this.onRowsChanged.subscribe(update);
this.onRowCountChanged.subscribe(update);
return onSelectedRowIdsChanged;
} }
function syncGridCellCssStyles(grid, key) { function syncGridCellCssStyles(grid, key) {
@ -738,19 +944,7 @@
} }
} }
grid.onCellCssStylesChanged.subscribe(function (e, args) { function update() {
if (inHandler) {
return;
}
if (key != args.key) {
return;
}
if (args.hash) {
storeCellCssStyles(args.hash);
}
});
this.onRowsChanged.subscribe(function (e, args) {
if (hashById) { if (hashById) {
inHandler = true; inHandler = true;
ensureRowsByIdCache(); ensureRowsByIdCache();
@ -764,10 +958,22 @@
grid.setCellCssStyles(key, newHash); grid.setCellCssStyles(key, newHash);
inHandler = false; inHandler = false;
} }
});
} }
return { grid.onCellCssStylesChanged.subscribe(function(e, args) {
if (inHandler) { return; }
if (key != args.key) { return; }
if (args.hash) {
storeCellCssStyles(args.hash);
}
});
this.onRowsChanged.subscribe(update);
this.onRowCountChanged.subscribe(update);
}
$.extend(this, {
// methods // methods
"beginUpdate": beginUpdate, "beginUpdate": beginUpdate,
"endUpdate": endUpdate, "endUpdate": endUpdate,
@ -779,8 +985,12 @@
"sort": sort, "sort": sort,
"fastSort": fastSort, "fastSort": fastSort,
"reSort": reSort, "reSort": reSort,
"setGrouping": setGrouping,
"getGrouping": getGrouping,
"groupBy": groupBy, "groupBy": groupBy,
"setAggregators": setAggregators, "setAggregators": setAggregators,
"collapseAllGroups": collapseAllGroups,
"expandAllGroups": expandAllGroups,
"collapseGroup": collapseGroup, "collapseGroup": collapseGroup,
"expandGroup": expandGroup, "expandGroup": expandGroup,
"getGroups": getGroups, "getGroups": getGroups,
@ -799,15 +1009,17 @@
"deleteItem": deleteItem, "deleteItem": deleteItem,
"syncGridSelection": syncGridSelection, "syncGridSelection": syncGridSelection,
"syncGridCellCssStyles": syncGridCellCssStyles, "syncGridCellCssStyles": syncGridCellCssStyles,
// data provider methods // data provider methods
"getLength": getLength, "getLength": getLength,
"getItem": getItem, "getItem": getItem,
"getItemMetadata": getItemMetadata, "getItemMetadata": getItemMetadata,
// events // events
"onRowCountChanged": onRowCountChanged, "onRowCountChanged": onRowCountChanged,
"onRowsChanged": onRowsChanged, "onRowsChanged": onRowsChanged,
"onPagingInfoChanged": onPagingInfoChanged "onPagingInfoChanged": onPagingInfoChanged
}; });
} }
function AvgAggregator(field) { function AvgAggregator(field) {
@ -822,7 +1034,7 @@
this.accumulate = function (item) { this.accumulate = function (item) {
var val = item[this.field_]; var val = item[this.field_];
this.count_++; this.count_++;
if (val != null && val != "" && val != NaN) { if (val != null && val !== "" && val !== NaN) {
this.nonNullCount_++; this.nonNullCount_++;
this.sum_ += parseFloat(val); this.sum_ += parseFloat(val);
} }
@ -847,7 +1059,7 @@
this.accumulate = function (item) { this.accumulate = function (item) {
var val = item[this.field_]; var val = item[this.field_];
if (val != null && val != "" && val != NaN) { if (val != null && val !== "" && val !== NaN) {
if (this.min_ == null || val < this.min_) { if (this.min_ == null || val < this.min_) {
this.min_ = val; this.min_ = val;
} }
@ -871,7 +1083,7 @@
this.accumulate = function (item) { this.accumulate = function (item) {
var val = item[this.field_]; var val = item[this.field_];
if (val != null && val != "" && val != NaN) { if (val != null && val !== "" && val !== NaN) {
if (this.max_ == null || val > this.max_) { if (this.max_ == null || val > this.max_) {
this.max_ = val; this.max_ = val;
} }
@ -895,7 +1107,7 @@
this.accumulate = function (item) { this.accumulate = function (item) {
var val = item[this.field_]; var val = item[this.field_];
if (val != null && val != "" && val != NaN) { if (val != null && val !== "" && val !== NaN) {
this.sum_ += parseFloat(val); this.sum_ += parseFloat(val);
} }
}; };
@ -911,4 +1123,4 @@
// TODO: add more built-in aggregators // TODO: add more built-in aggregators
// TODO: merge common aggregators in one to prevent needles iterating // TODO: merge common aggregators in one to prevent needles iterating
})(jQuery); })(jQuery);

View File

@ -302,16 +302,16 @@
}; };
this.loadValue = function (item) { this.loadValue = function (item) {
defaultValue = item[args.column.field]; defaultValue = !!item[args.column.field];
if (defaultValue) { if (defaultValue) {
$select.attr("checked", "checked"); $select.prop('checked', true);
} else { } else {
$select.removeAttr("checked"); $select.prop('checked', false);
} }
}; };
this.serializeValue = function () { this.serializeValue = function () {
return $select.attr("checked"); return $select.prop('checked');
}; };
this.applyValue = function (item, state) { this.applyValue = function (item, state) {
@ -319,7 +319,7 @@
}; };
this.isValueChanged = function () { this.isValueChanged = function () {
return ($select.attr("checked") != defaultValue); return (this.serializeValue() !== defaultValue);
}; };
this.validate = function () { this.validate = function () {
@ -445,10 +445,10 @@
scope.cancel(); scope.cancel();
} else if (e.which == $.ui.keyCode.TAB && e.shiftKey) { } else if (e.which == $.ui.keyCode.TAB && e.shiftKey) {
e.preventDefault(); e.preventDefault();
grid.navigatePrev(); args.grid.navigatePrev();
} else if (e.which == $.ui.keyCode.TAB) { } else if (e.which == $.ui.keyCode.TAB) {
e.preventDefault(); e.preventDefault();
grid.navigateNext(); args.grid.navigateNext();
} }
}; };

View File

@ -1,5 +1,9 @@
/*** /***
* Contains basic SlickGrid formatters. * Contains basic SlickGrid formatters.
*
* NOTE: These are merely examples. You will most likely need to implement something more
* robust/extensible/localizable/etc. for your use!
*
* @module Formatters * @module Formatters
* @namespace Slick * @namespace Slick
*/ */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -112,14 +112,14 @@ nf.BulletinBoard = (function () {
type: 'GET', type: 'GET',
url: config.urls.controllerAbout, url: config.urls.controllerAbout,
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
var aboutDetails = response.about; var aboutDetails = response.about;
var bulletinBoardTitle = aboutDetails.title + ' Bulletin Board'; var bulletinBoardTitle = aboutDetails.title + ' Bulletin Board';
// set the document title and the about title // set the document title and the about title
document.title = bulletinBoardTitle; document.title = bulletinBoardTitle;
$('#bulletin-board-header-text').text(bulletinBoardTitle); $('#bulletin-board-header-text').text(bulletinBoardTitle);
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
// get the banners if we're not in the shell // get the banners if we're not in the shell
var loadBanners = $.Deferred(function (deferred) { var loadBanners = $.Deferred(function (deferred) {
@ -128,7 +128,7 @@ nf.BulletinBoard = (function () {
type: 'GET', type: 'GET',
url: config.urls.banners, url: config.urls.banners,
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
// ensure the banners response is specified // ensure the banners response is specified
if (nf.Common.isDefinedAndNotNull(response.banners)) { if (nf.Common.isDefinedAndNotNull(response.banners)) {
if (nf.Common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') { if (nf.Common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
@ -160,7 +160,7 @@ nf.BulletinBoard = (function () {
} }
deferred.resolve(); deferred.resolve();
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
nf.Common.handleAjaxError(xhr, status, error); nf.Common.handleAjaxError(xhr, status, error);
deferred.reject(); deferred.reject();
}); });
@ -170,9 +170,9 @@ nf.BulletinBoard = (function () {
}); });
return $.Deferred(function (deferred) { return $.Deferred(function (deferred) {
$.when(getTitle, loadBanners).then(function () { $.when(getTitle, loadBanners).done(function () {
deferred.resolve(); deferred.resolve();
}, function () { }).fail(function () {
deferred.reject(); deferred.reject();
}); });
}).promise(); }).promise();
@ -294,7 +294,7 @@ nf.BulletinBoard = (function () {
url: config.urls.bulletinBoard, url: config.urls.bulletinBoard,
data: data, data: data,
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
// ensure the bulletin board was specified // ensure the bulletin board was specified
if (nf.Common.isDefinedAndNotNull(response.bulletinBoard)) { if (nf.Common.isDefinedAndNotNull(response.bulletinBoard)) {
var bulletinBoard = response.bulletinBoard; var bulletinBoard = response.bulletinBoard;
@ -369,7 +369,7 @@ nf.BulletinBoard = (function () {
bulletinContainer.prepend('<div class="bulletin-action">&#8230;</div>'); bulletinContainer.prepend('<div class="bulletin-action">&#8230;</div>');
} }
} }
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
// likely caused by a invalid regex // likely caused by a invalid regex
if (xhr.status === 404) { if (xhr.status === 404) {
$('#bulletin-error-message').text(xhr.responseText).show(); $('#bulletin-error-message').text(xhr.responseText).show();

View File

@ -40,10 +40,10 @@ nf.Actions = (function () {
url: uri, url: uri,
data: data, data: data,
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) { if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) {
nf.Dialog.showOkDialog({ nf.Dialog.showOkDialog({
dialogContent: nf.Common.escapeHtml(xhr.responseText), dialogContent: nf.Common.escapeHtml(xhr.responseText),
@ -86,12 +86,14 @@ nf.Actions = (function () {
nf.CanvasUtils.enterGroup(selectionData.component.id); nf.CanvasUtils.enterGroup(selectionData.component.id);
} }
}, },
/** /**
* Exits the current process group but entering the parent group. * Exits the current process group but entering the parent group.
*/ */
leaveGroup: function () { leaveGroup: function () {
nf.CanvasUtils.enterGroup(nf.Canvas.getParentGroupId()); nf.CanvasUtils.enterGroup(nf.Canvas.getParentGroupId());
}, },
/** /**
* Refresh the flow of the remote process group in the specified selection. * Refresh the flow of the remote process group in the specified selection.
* *
@ -153,6 +155,7 @@ nf.Actions = (function () {
poll(1); poll(1);
} }
}, },
/** /**
* Opens the remote process group in the specified selection. * Opens the remote process group in the specified selection.
* *
@ -172,6 +175,7 @@ nf.Actions = (function () {
} }
} }
}, },
/** /**
* Shows and selects the source of the connection in the specified selection. * Shows and selects the source of the connection in the specified selection.
* *
@ -190,6 +194,7 @@ nf.Actions = (function () {
} }
} }
}, },
/** /**
* Shows and selects the destination of the connection in the specified selection. * Shows and selects the destination of the connection in the specified selection.
* *
@ -208,6 +213,7 @@ nf.Actions = (function () {
} }
} }
}, },
/** /**
* Shows the downstream components from the specified selection. * Shows the downstream components from the specified selection.
* *
@ -230,6 +236,7 @@ nf.Actions = (function () {
} }
} }
}, },
/** /**
* Shows the upstream components from the specified selection. * Shows the upstream components from the specified selection.
* *
@ -252,6 +259,7 @@ nf.Actions = (function () {
} }
} }
}, },
/** /**
* Shows and selects the component in the specified selection. * Shows and selects the component in the specified selection.
* *
@ -268,6 +276,7 @@ nf.Actions = (function () {
nf.Actions.center(selection); nf.Actions.center(selection);
} }
}, },
/** /**
* Selects all components in the specified selection. * Selects all components in the specified selection.
* *
@ -276,12 +285,14 @@ nf.Actions = (function () {
select: function (selection) { select: function (selection) {
selection.classed('selected', true); selection.classed('selected', true);
}, },
/** /**
* Selects all components. * Selects all components.
*/ */
selectAll: function () { selectAll: function () {
nf.Actions.select(d3.selectAll('g.component, g.connection')); nf.Actions.select(d3.selectAll('g.component, g.connection'));
}, },
/** /**
* Centers the component in the specified selection. * Centers the component in the specified selection.
* *
@ -331,6 +342,7 @@ nf.Actions = (function () {
}); });
} }
}, },
/** /**
* Enables all eligible selected components. * Enables all eligible selected components.
*/ */
@ -360,6 +372,7 @@ nf.Actions = (function () {
}); });
} }
}, },
/** /**
* Disables all eligible selected components. * Disables all eligible selected components.
*/ */
@ -389,6 +402,7 @@ nf.Actions = (function () {
}); });
} }
}, },
/** /**
* Starts the components in the specified selection. * Starts the components in the specified selection.
* *
@ -443,6 +457,7 @@ nf.Actions = (function () {
} }
} }
}, },
/** /**
* Stops the components in the specified selection. * Stops the components in the specified selection.
* *
@ -496,6 +511,7 @@ nf.Actions = (function () {
} }
} }
}, },
/** /**
* Enables transmission for the components in the specified selection. * Enables transmission for the components in the specified selection.
* *
@ -513,6 +529,7 @@ nf.Actions = (function () {
}); });
}); });
}, },
/** /**
* Disables transmission for the components in the specified selection. * Disables transmission for the components in the specified selection.
* *
@ -530,6 +547,7 @@ nf.Actions = (function () {
}); });
}); });
}, },
/** /**
* Shows the configuration dialog for the specified selection. * Shows the configuration dialog for the specified selection.
* *
@ -557,6 +575,7 @@ nf.Actions = (function () {
} }
} }
}, },
// Defines an action for showing component details (like configuration but read only). // Defines an action for showing component details (like configuration but read only).
showDetails: function (selection) { showDetails: function (selection) {
if (selection.size() === 1) { if (selection.size() === 1) {
@ -579,6 +598,7 @@ nf.Actions = (function () {
} }
} }
}, },
/** /**
* Shows the usage documentation for the component in the specified selection. * Shows the usage documentation for the component in the specified selection.
* *
@ -592,6 +612,7 @@ nf.Actions = (function () {
})); }));
} }
}, },
/** /**
* Shows the stats for the specified selection. * Shows the stats for the specified selection.
* *
@ -623,6 +644,7 @@ nf.Actions = (function () {
} }
} }
}, },
/** /**
* Opens the remote ports dialog for the remote process group in the specified selection. * Opens the remote ports dialog for the remote process group in the specified selection.
* *
@ -633,6 +655,7 @@ nf.Actions = (function () {
nf.RemoteProcessGroupPorts.showPorts(selection); nf.RemoteProcessGroupPorts.showPorts(selection);
} }
}, },
/** /**
* Hides and open cancellable dialogs. * Hides and open cancellable dialogs.
*/ */
@ -646,12 +669,14 @@ nf.Actions = (function () {
} }
}); });
}, },
/** /**
* Reloads the status for the entire canvas (components and flow.) * Reloads the status for the entire canvas (components and flow.)
*/ */
reloadStatus: function () { reloadStatus: function () {
nf.Canvas.reloadStatus(); nf.Canvas.reloadStatus();
}, },
/** /**
* Deletes the component in the specified selection. * Deletes the component in the specified selection.
* *
@ -675,7 +700,7 @@ nf.Actions = (function () {
clientId: revision.clientId clientId: revision.clientId
}), }),
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
@ -723,15 +748,15 @@ nf.Actions = (function () {
// refresh the birdseye/toolbar // refresh the birdseye/toolbar
nf.Birdseye.refresh(); nf.Birdseye.refresh();
nf.CanvasToolbar.refresh(); nf.CanvasToolbar.refresh();
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
} else { } else {
// create a snippet for the specified component and link to the data flow // create a snippet for the specified component and link to the data flow
var snippetDetails = nf.Snippet.marshal(selection, true); var snippetDetails = nf.Snippet.marshal(selection, true);
nf.Snippet.create(snippetDetails).then(function (response) { nf.Snippet.create(snippetDetails).done(function (response) {
var snippet = response.snippet; var snippet = response.snippet;
// remove the snippet, effectively removing the components // remove the snippet, effectively removing the components
nf.Snippet.remove(snippet.id).then(function () { nf.Snippet.remove(snippet.id).done(function () {
var components = d3.map(); var components = d3.map();
// add the id to the type's array // add the id to the type's array
@ -797,7 +822,7 @@ nf.Actions = (function () {
// refresh the birdseye/toolbar // refresh the birdseye/toolbar
nf.Birdseye.refresh(); nf.Birdseye.refresh();
nf.CanvasToolbar.refresh(); nf.CanvasToolbar.refresh();
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
// unable to acutally remove the components so attempt to // unable to acutally remove the components so attempt to
// unlink and remove just the snippet - if unlinking fails // unlink and remove just the snippet - if unlinking fails
// just ignore // just ignore
@ -807,10 +832,11 @@ nf.Actions = (function () {
nf.Common.handleAjaxError(xhr, status, error); nf.Common.handleAjaxError(xhr, status, error);
}); });
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
} }
} }
}, },
/** /**
* Opens the fill color dialog for the component in the specified selection. * Opens the fill color dialog for the component in the specified selection.
* *
@ -842,6 +868,7 @@ nf.Actions = (function () {
$('#fill-color-dialog').modal('show'); $('#fill-color-dialog').modal('show');
} }
}, },
/** /**
* Groups the currently selected components into a new group. * Groups the currently selected components into a new group.
*/ */
@ -865,6 +892,7 @@ nf.Actions = (function () {
}); });
}); });
}, },
/** /**
* Creates a new template based off the currently selected components. If no components * Creates a new template based off the currently selected components. If no components
* are selected, a template of the entire canvas is made. * are selected, a template of the entire canvas is made.
@ -914,7 +942,7 @@ nf.Actions = (function () {
var snippetDetails = nf.Snippet.marshal(selection, false); var snippetDetails = nf.Snippet.marshal(selection, false);
// create the snippet // create the snippet
nf.Snippet.create(snippetDetails).then(function (response) { nf.Snippet.create(snippetDetails).done(function (response) {
var snippet = response.snippet; var snippet = response.snippet;
// create the template // create the template
@ -927,21 +955,21 @@ nf.Actions = (function () {
snippetId: snippet.id snippetId: snippet.id
}, },
dataType: 'json' dataType: 'json'
}).then(function () { }).done(function () {
// show the confirmation dialog // show the confirmation dialog
nf.Dialog.showOkDialog({ nf.Dialog.showOkDialog({
dialogContent: "Template '" + nf.Common.escapeHtml(templateName) + "' was successfully created.", dialogContent: "Template '" + nf.Common.escapeHtml(templateName) + "' was successfully created.",
overlayBackground: false overlayBackground: false
}); });
}, nf.Common.handleAjaxError).always(function () { }).always(function () {
// remove the snippet // remove the snippet
nf.Snippet.remove(snippet.id); nf.Snippet.remove(snippet.id);
// clear the template dialog fields // clear the template dialog fields
$('#new-template-name').val(''); $('#new-template-name').val('');
$('#new-template-description').val(''); $('#new-template-description').val('');
}); }).fail(nf.Common.handleAjaxError);
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
} }
} }
}, { }, {
@ -956,6 +984,7 @@ nf.Actions = (function () {
// auto focus on the template name // auto focus on the template name
$('#new-template-name').focus(); $('#new-template-name').focus();
}, },
/** /**
* Copies the component in the specified selection. * Copies the component in the specified selection.
* *
@ -975,6 +1004,7 @@ nf.Actions = (function () {
origin: origin origin: origin
}); });
}, },
/** /**
* Pastes the currently copied selection. * Pastes the currently copied selection.
* *
@ -1009,7 +1039,7 @@ nf.Actions = (function () {
}; };
// create a snippet from the details // create a snippet from the details
nf.Snippet.create(data['snippet']).then(function (createResponse) { nf.Snippet.create(data['snippet']).done(function (createResponse) {
var snippet = createResponse.snippet; var snippet = createResponse.snippet;
// determine the origin of the bounding box of the copy // determine the origin of the bounding box of the copy
@ -1024,7 +1054,7 @@ nf.Actions = (function () {
} }
// copy the snippet to the new location // copy the snippet to the new location
nf.Snippet.copy(snippet.id, nf.Canvas.getGroupId(), origin).then(function (copyResponse) { nf.Snippet.copy(snippet.id, nf.Canvas.getGroupId(), origin).done(function (copyResponse) {
var snippetContents = copyResponse.contents; var snippetContents = copyResponse.contents;
// update the graph accordingly // update the graph accordingly
@ -1039,7 +1069,7 @@ nf.Actions = (function () {
// remove the original snippet // remove the original snippet
nf.Snippet.remove(snippet.id).fail(reject); nf.Snippet.remove(snippet.id).fail(reject);
}, function () { }).fail(function () {
// an error occured while performing the copy operation, reload the // an error occured while performing the copy operation, reload the
// graph in case it was a partial success // graph in case it was a partial success
nf.Canvas.reload().done(function () { nf.Canvas.reload().done(function () {
@ -1054,7 +1084,7 @@ nf.Actions = (function () {
// reject the deferred // reject the deferred
reject(); reject();
}); });
}, reject); }).fail(reject);
}).promise(); }).promise();
// show the appropriate message is the copy fails // show the appropriate message is the copy fails
@ -1067,6 +1097,7 @@ nf.Actions = (function () {
}); });
}); });
}, },
/** /**
* Moves the connection in the specified selection to the front. * Moves the connection in the specified selection to the front.
* *

View File

@ -335,6 +335,7 @@ nf.Birdseye = (function () {
}) })
.call(brush); .call(brush);
}, },
/** /**
* Handles rendering of the birdseye tool. * Handles rendering of the birdseye tool.
*/ */

View File

@ -103,7 +103,7 @@ nf.CanvasHeader = (function () {
// setup the refresh link actions // setup the refresh link actions
$('#refresh-required-link').click(function () { $('#refresh-required-link').click(function () {
nf.Canvas.reload().then(function () { nf.Canvas.reload().done(function () {
// update component visibility // update component visibility
nf.Canvas.View.updateVisibility(); nf.Canvas.View.updateVisibility();
@ -113,7 +113,7 @@ nf.CanvasHeader = (function () {
// hide the refresh link // hide the refresh link
$('#stats-last-refreshed').removeClass('alert'); $('#stats-last-refreshed').removeClass('alert');
$('#refresh-required-container').hide(); $('#refresh-required-container').hide();
}, function () { }).fail(function () {
nf.Dialog.showOkDialog({ nf.Dialog.showOkDialog({
dialogContent: 'Unable to refresh the current group.', dialogContent: 'Unable to refresh the current group.',
overlayBackground: true overlayBackground: true
@ -126,12 +126,12 @@ nf.CanvasHeader = (function () {
type: 'GET', type: 'GET',
url: config.urls.controllerAbout, url: config.urls.controllerAbout,
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
var aboutDetails = response.about; var aboutDetails = response.about;
// set the document title and the about title // set the document title and the about title
document.title = aboutDetails.title; document.title = aboutDetails.title;
$('#nf-version').text(aboutDetails.version); $('#nf-version').text(aboutDetails.version);
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
// configure the about dialog // configure the about dialog
$('#nf-about').modal({ $('#nf-about').modal({
@ -192,7 +192,7 @@ nf.CanvasHeader = (function () {
'style[background-color]': color 'style[background-color]': color
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
@ -202,7 +202,7 @@ nf.CanvasHeader = (function () {
} else { } else {
nf.Label.set(response.label); nf.Label.set(response.label);
} }
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) { if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) {
nf.Dialog.showOkDialog({ nf.Dialog.showOkDialog({
dialogContent: nf.Common.escapeHtml(xhr.responseText), dialogContent: nf.Common.escapeHtml(xhr.responseText),

View File

@ -95,6 +95,7 @@ nf.CanvasToolbar = (function () {
}); });
} }
}, },
/** /**
* Called when the selection changes to update the toolbar appropriately. * Called when the selection changes to update the toolbar appropriately.
*/ */

View File

@ -394,7 +394,7 @@ nf.CanvasToolbox = (function () {
y: pt.y y: pt.y
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
if (nf.Common.isDefinedAndNotNull(response.processor)) { if (nf.Common.isDefinedAndNotNull(response.processor)) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
@ -410,7 +410,7 @@ nf.CanvasToolbox = (function () {
// update the birdseye // update the birdseye
nf.Birdseye.refresh(); nf.Birdseye.refresh();
} }
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}; };
/** /**
@ -481,7 +481,7 @@ nf.CanvasToolbox = (function () {
y: pt.y y: pt.y
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
if (nf.Common.isDefinedAndNotNull(response.inputPort)) { if (nf.Common.isDefinedAndNotNull(response.inputPort)) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
@ -497,7 +497,7 @@ nf.CanvasToolbox = (function () {
// update the birdseye // update the birdseye
nf.Birdseye.refresh(); nf.Birdseye.refresh();
} }
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}; };
/** /**
@ -568,7 +568,7 @@ nf.CanvasToolbox = (function () {
y: pt.y y: pt.y
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
if (nf.Common.isDefinedAndNotNull(response.outputPort)) { if (nf.Common.isDefinedAndNotNull(response.outputPort)) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
@ -584,7 +584,7 @@ nf.CanvasToolbox = (function () {
// update the birdseye // update the birdseye
nf.Birdseye.refresh(); nf.Birdseye.refresh();
} }
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}; };
/** /**
@ -608,7 +608,7 @@ nf.CanvasToolbox = (function () {
y: pt.y y: pt.y
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
if (nf.Common.isDefinedAndNotNull(response.processGroup)) { if (nf.Common.isDefinedAndNotNull(response.processGroup)) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
@ -624,7 +624,7 @@ nf.CanvasToolbox = (function () {
// update the birdseye // update the birdseye
nf.Birdseye.refresh(); nf.Birdseye.refresh();
} }
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}; };
/** /**
@ -692,7 +692,7 @@ nf.CanvasToolbox = (function () {
y: pt.y y: pt.y
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
if (nf.Common.isDefinedAndNotNull(response.remoteProcessGroup)) { if (nf.Common.isDefinedAndNotNull(response.remoteProcessGroup)) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
@ -708,7 +708,7 @@ nf.CanvasToolbox = (function () {
// update the birdseye // update the birdseye
nf.Birdseye.refresh(); nf.Birdseye.refresh();
} }
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}; };
/** /**
@ -730,7 +730,7 @@ nf.CanvasToolbox = (function () {
y: pt.y y: pt.y
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
if (nf.Common.isDefinedAndNotNull(response.funnel)) { if (nf.Common.isDefinedAndNotNull(response.funnel)) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
@ -743,7 +743,7 @@ nf.CanvasToolbox = (function () {
// update the birdseye // update the birdseye
nf.Birdseye.refresh(); nf.Birdseye.refresh();
} }
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}; };
/** /**
@ -756,7 +756,7 @@ nf.CanvasToolbox = (function () {
type: 'GET', type: 'GET',
url: config.urls.templates, url: config.urls.templates,
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
var templates = response.templates; var templates = response.templates;
if (nf.Common.isDefinedAndNotNull(templates) && templates.length > 0) { if (nf.Common.isDefinedAndNotNull(templates) && templates.length > 0) {
var options = []; var options = [];
@ -809,7 +809,7 @@ nf.CanvasToolbox = (function () {
}); });
} }
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}; };
/** /**
@ -833,7 +833,7 @@ nf.CanvasToolbox = (function () {
originY: pt.y originY: pt.y
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
@ -845,7 +845,7 @@ nf.CanvasToolbox = (function () {
// update the birdseye // update the birdseye
nf.Birdseye.refresh(); nf.Birdseye.refresh();
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}; };
/** /**
@ -869,7 +869,7 @@ nf.CanvasToolbox = (function () {
height: nf.Label.config.height height: nf.Label.config.height
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
if (nf.Common.isDefinedAndNotNull(response.label)) { if (nf.Common.isDefinedAndNotNull(response.label)) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
@ -880,7 +880,7 @@ nf.CanvasToolbox = (function () {
// update the birdseye // update the birdseye
nf.Birdseye.refresh(); nf.Birdseye.refresh();
} }
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}; };
return { return {
@ -987,7 +987,7 @@ nf.CanvasToolbox = (function () {
type: 'GET', type: 'GET',
url: config.urls.processorTypes, url: config.urls.processorTypes,
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
var tagCloud = {}; var tagCloud = {};
var tags = []; var tags = [];
@ -1090,7 +1090,7 @@ nf.CanvasToolbox = (function () {
processorTypesGrid.render(); processorTypesGrid.render();
}); });
processorTypesData.syncGridSelection(processorTypesGrid, false); processorTypesData.syncGridSelection(processorTypesGrid, false);
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
// define the function for filtering the list // define the function for filtering the list
$('#processor-type-filter').keyup(function () { $('#processor-type-filter').keyup(function () {
@ -1146,6 +1146,7 @@ nf.CanvasToolbox = (function () {
$('<div/>').attr('title', nf.Common.config.type.label).addClass('label-icon-disable').addClass('toolbox-icon').appendTo(toolbox); $('<div/>').attr('title', nf.Common.config.type.label).addClass('label-icon-disable').addClass('toolbox-icon').appendTo(toolbox);
} }
}, },
/** /**
* Prompts the user to enter the name for the group. * Prompts the user to enter the name for the group.
* *
@ -1162,9 +1163,9 @@ nf.CanvasToolbox = (function () {
$('#new-process-group-name').val(''); $('#new-process-group-name').val('');
// create the group and resolve the deferred accordingly // create the group and resolve the deferred accordingly
$.when(createGroup(groupName, pt)).then(function (response) { createGroup(groupName, pt).done(function (response) {
deferred.resolve(response.processGroup); deferred.resolve(response.processGroup);
}, function () { }).fail(function () {
deferred.reject(); deferred.reject();
}); });
}; };

View File

@ -91,6 +91,7 @@ nf.CanvasUtils = (function () {
} }
} }
}, },
/** /**
* Calculates the point on the specified bounding box that is closest to the * Calculates the point on the specified bounding box that is closest to the
* specified point. * specified point.
@ -151,6 +152,7 @@ nf.CanvasUtils = (function () {
}; };
} }
}, },
/** /**
* Shows the specified component in the specified group. * Shows the specified component in the specified group.
* *
@ -165,9 +167,9 @@ nf.CanvasUtils = (function () {
// load a different group if necessary // load a different group if necessary
if (groupId !== nf.Canvas.getGroupId()) { if (groupId !== nf.Canvas.getGroupId()) {
nf.Canvas.setGroupId(groupId); nf.Canvas.setGroupId(groupId);
nf.Canvas.reload().then(function () { nf.Canvas.reload().done(function () {
deferred.resolve(); deferred.resolve();
}, function () { }).fail(function () {
nf.Dialog.showOkDialog({ nf.Dialog.showOkDialog({
dialogContent: 'Unable to load the group for the specified component.', dialogContent: 'Unable to load the group for the specified component.',
overlayBackground: false overlayBackground: false
@ -194,6 +196,7 @@ nf.CanvasUtils = (function () {
}); });
} }
}, },
/** /**
* Gets the currently selected components and connections. * Gets the currently selected components and connections.
* *
@ -221,6 +224,7 @@ nf.CanvasUtils = (function () {
// calculate the difference between the center point and the position of this component and convert to screen space // calculate the difference between the center point and the position of this component and convert to screen space
nf.Canvas.View.translate([(center[0] - boundingBox.x) * scale, (center[1] - boundingBox.y) * scale]); nf.Canvas.View.translate([(center[0] - boundingBox.x) * scale, (center[1] - boundingBox.y) * scale]);
}, },
/** /**
* Position the component accordingly. * Position the component accordingly.
* *
@ -236,6 +240,7 @@ nf.CanvasUtils = (function () {
return 'translate(' + d.component.position.x + ', ' + d.component.position.y + ')'; return 'translate(' + d.component.position.x + ', ' + d.component.position.y + ')';
}); });
}, },
/** /**
* Applies single line ellipsis to the component in the specified selection if necessary. * Applies single line ellipsis to the component in the specified selection if necessary.
* *
@ -271,6 +276,7 @@ nf.CanvasUtils = (function () {
selection.text(text.substring(0, i) + String.fromCharCode(8230)); selection.text(text.substring(0, i) + String.fromCharCode(8230));
} }
}, },
/** /**
* Applies multiline ellipsis to the component in the specified seleciton. Text will * Applies multiline ellipsis to the component in the specified seleciton. Text will
* wrap for the specified number of lines. The last line will be ellipsis if necessary. * wrap for the specified number of lines. The last line will be ellipsis if necessary.
@ -343,6 +349,7 @@ nf.CanvasUtils = (function () {
word = words.pop(); word = words.pop();
} }
}, },
/** /**
* Updates the active thread count on the specified selection. * Updates the active thread count on the specified selection.
* *
@ -388,6 +395,7 @@ nf.CanvasUtils = (function () {
selection.selectAll('text.active-thread-count, rect.active-thread-count-background').style('display', 'none'); selection.selectAll('text.active-thread-count, rect.active-thread-count-background').style('display', 'none');
} }
}, },
/** /**
* Disables the default browser behavior of following image href when control clicking. * Disables the default browser behavior of following image href when control clicking.
* *
@ -400,6 +408,7 @@ nf.CanvasUtils = (function () {
} }
}); });
}, },
/** /**
* Handles component bulletins. * Handles component bulletins.
* *
@ -456,6 +465,7 @@ nf.CanvasUtils = (function () {
selection.selectAll('image.bulletin-icon').style('display', 'none'); selection.selectAll('image.bulletin-icon').style('display', 'none');
} }
}, },
/** /**
* Adds the specified tooltip to the specified target. * Adds the specified tooltip to the specified target.
* *
@ -473,6 +483,7 @@ nf.CanvasUtils = (function () {
tip.style('display', 'none'); tip.style('display', 'none');
}); });
}, },
/** /**
* Determines if the specified selection is a connection. * Determines if the specified selection is a connection.
* *
@ -481,6 +492,7 @@ nf.CanvasUtils = (function () {
isConnection: function (selection) { isConnection: function (selection) {
return selection.classed('connection'); return selection.classed('connection');
}, },
/** /**
* Determines if the specified selection is a remote process group. * Determines if the specified selection is a remote process group.
* *
@ -489,6 +501,7 @@ nf.CanvasUtils = (function () {
isRemoteProcessGroup: function (selection) { isRemoteProcessGroup: function (selection) {
return selection.classed('remote-process-group'); return selection.classed('remote-process-group');
}, },
/** /**
* Determines if the specified selection is a processor. * Determines if the specified selection is a processor.
* *
@ -497,6 +510,7 @@ nf.CanvasUtils = (function () {
isProcessor: function (selection) { isProcessor: function (selection) {
return selection.classed('processor'); return selection.classed('processor');
}, },
/** /**
* Determines if the specified selection is a label. * Determines if the specified selection is a label.
* *
@ -505,6 +519,7 @@ nf.CanvasUtils = (function () {
isLabel: function (selection) { isLabel: function (selection) {
return selection.classed('label'); return selection.classed('label');
}, },
/** /**
* Determines if the specified selection is an input port. * Determines if the specified selection is an input port.
* *
@ -513,6 +528,7 @@ nf.CanvasUtils = (function () {
isInputPort: function (selection) { isInputPort: function (selection) {
return selection.classed('input-port'); return selection.classed('input-port');
}, },
/** /**
* Determines if the specified selection is an output port. * Determines if the specified selection is an output port.
* *
@ -521,6 +537,7 @@ nf.CanvasUtils = (function () {
isOutputPort: function (selection) { isOutputPort: function (selection) {
return selection.classed('output-port'); return selection.classed('output-port');
}, },
/** /**
* Determines if the specified selection is a process group. * Determines if the specified selection is a process group.
* *
@ -529,6 +546,7 @@ nf.CanvasUtils = (function () {
isProcessGroup: function (selection) { isProcessGroup: function (selection) {
return selection.classed('process-group'); return selection.classed('process-group');
}, },
/** /**
* Determines if the specified selection is a funnel. * Determines if the specified selection is a funnel.
* *
@ -537,6 +555,7 @@ nf.CanvasUtils = (function () {
isFunnel: function (selection) { isFunnel: function (selection) {
return selection.classed('funnel'); return selection.classed('funnel');
}, },
/** /**
* Determines if the components in the specified selection are runnable. * Determines if the components in the specified selection are runnable.
* *
@ -558,6 +577,7 @@ nf.CanvasUtils = (function () {
return runnable; return runnable;
}, },
/** /**
* Determines if the component in the specified selection is runnable. * Determines if the component in the specified selection is runnable.
* *
@ -578,6 +598,7 @@ nf.CanvasUtils = (function () {
return runnable; return runnable;
}, },
/** /**
* Determines if the components in the specified selection are stoppable. * Determines if the components in the specified selection are stoppable.
* *
@ -599,6 +620,7 @@ nf.CanvasUtils = (function () {
return stoppable; return stoppable;
}, },
/** /**
* Determines if the component in the specified selection is runnable. * Determines if the component in the specified selection is runnable.
* *
@ -617,6 +639,7 @@ nf.CanvasUtils = (function () {
return stoppable; return stoppable;
}, },
/** /**
* Determines if the specified selection can all start transmitting. * Determines if the specified selection can all start transmitting.
* *
@ -637,6 +660,7 @@ nf.CanvasUtils = (function () {
}); });
return canStartTransmitting; return canStartTransmitting;
}, },
/** /**
* Determines if the specified selection supports starting transmission. * Determines if the specified selection supports starting transmission.
* *
@ -645,6 +669,7 @@ nf.CanvasUtils = (function () {
canStartTransmitting: function (selection) { canStartTransmitting: function (selection) {
return nf.CanvasUtils.isRemoteProcessGroup(selection); return nf.CanvasUtils.isRemoteProcessGroup(selection);
}, },
/** /**
* Determines if the specified selection can all stop transmitting. * Determines if the specified selection can all stop transmitting.
* *
@ -665,6 +690,7 @@ nf.CanvasUtils = (function () {
}); });
return canStopTransmitting; return canStopTransmitting;
}, },
/** /**
* Determines if the specified selection can stop transmission. * Determines if the specified selection can stop transmission.
* *
@ -673,6 +699,7 @@ nf.CanvasUtils = (function () {
canStopTransmitting: function (selection) { canStopTransmitting: function (selection) {
return nf.CanvasUtils.isRemoteProcessGroup(selection); return nf.CanvasUtils.isRemoteProcessGroup(selection);
}, },
/** /**
* Determines whether the components in the specified selection are deletable. * Determines whether the components in the specified selection are deletable.
* *
@ -686,6 +713,7 @@ nf.CanvasUtils = (function () {
return nf.CanvasUtils.supportsModification(selection); return nf.CanvasUtils.supportsModification(selection);
}, },
/** /**
* Determines whether the specified selection is in a state to support modification. * Determines whether the specified selection is in a state to support modification.
* *
@ -741,6 +769,7 @@ nf.CanvasUtils = (function () {
} }
return supportsModification; return supportsModification;
}, },
/** /**
* Determines the connectable type for the specified source selection. * Determines the connectable type for the specified source selection.
* *
@ -761,6 +790,7 @@ nf.CanvasUtils = (function () {
} }
return type; return type;
}, },
/** /**
* Determines the connectable type for the specified destination selection. * Determines the connectable type for the specified destination selection.
* *
@ -781,6 +811,7 @@ nf.CanvasUtils = (function () {
} }
return type; return type;
}, },
/** /**
* Determines if the graph is currently in a state to copy. * Determines if the graph is currently in a state to copy.
* *
@ -813,12 +844,14 @@ nf.CanvasUtils = (function () {
// ensure everything selected is copyable // ensure everything selected is copyable
return selection.size() === copyable.size(); return selection.size() === copyable.size();
}, },
/** /**
* Determines if something is currently pastable. * Determines if something is currently pastable.
*/ */
isPastable: function () { isPastable: function () {
return nf.Clipboard.isCopied(); return nf.Clipboard.isCopied();
}, },
/** /**
* Persists the current user view. * Persists the current user view.
*/ */
@ -836,6 +869,7 @@ nf.CanvasUtils = (function () {
// store the item // store the item
nf.Storage.setItem(name, item); nf.Storage.setItem(name, item);
}, },
/** /**
* Gets the name for this connection. * Gets the name for this connection.
* *
@ -849,6 +883,7 @@ nf.CanvasUtils = (function () {
} }
return ''; return '';
}, },
/** /**
* Returns the component id of the source of this processor. If the connection is attached * Returns the component id of the source of this processor. If the connection is attached
* to a port in a [sub|remote] group, the component id will be that of the group. Otherwise * to a port in a [sub|remote] group, the component id will be that of the group. Otherwise
@ -863,6 +898,7 @@ nf.CanvasUtils = (function () {
} }
return sourceId; return sourceId;
}, },
/** /**
* Returns the component id of the source of this processor. If the connection is attached * Returns the component id of the source of this processor. If the connection is attached
* to a port in a [sub|remote] group, the component id will be that of the group. Otherwise * to a port in a [sub|remote] group, the component id will be that of the group. Otherwise
@ -877,6 +913,7 @@ nf.CanvasUtils = (function () {
} }
return destinationId; return destinationId;
}, },
/** /**
* Attempts to restore a persisted view. Returns a flag that indicates if the * Attempts to restore a persisted view. Returns a flag that indicates if the
* view was restored. * view was restored.
@ -911,6 +948,7 @@ nf.CanvasUtils = (function () {
return viewRestored; return viewRestored;
}, },
/** /**
* Enters the specified group. * Enters the specified group.
* *
@ -944,6 +982,7 @@ nf.CanvasUtils = (function () {
}); });
}); });
}, },
/** /**
* Gets the origin of the bounding box for the specified selection. * Gets the origin of the bounding box for the specified selection.
* *
@ -966,6 +1005,7 @@ nf.CanvasUtils = (function () {
return origin; return origin;
}, },
/** /**
* Moves the specified components into the specified group. * Moves the specified components into the specified group.
* *
@ -979,11 +1019,11 @@ nf.CanvasUtils = (function () {
nf.CanvasUtils.eligibleForMove(components, group).done(function () { nf.CanvasUtils.eligibleForMove(components, group).done(function () {
// create a snippet for the specified components and link to the data flow // create a snippet for the specified components and link to the data flow
var snippetDetails = nf.Snippet.marshal(components, true); var snippetDetails = nf.Snippet.marshal(components, true);
nf.Snippet.create(snippetDetails).then(function (response) { nf.Snippet.create(snippetDetails).done(function (response) {
var snippet = response.snippet; var snippet = response.snippet;
// move the snippet into the target // move the snippet into the target
nf.Snippet.move(snippet.id, groupData.component.id).then(function () { nf.Snippet.move(snippet.id, groupData.component.id).done(function () {
var componentMap = d3.map(); var componentMap = d3.map();
// add the id to the type's array // add the id to the type's array
@ -1006,16 +1046,17 @@ nf.CanvasUtils = (function () {
// reload the target group // reload the target group
nf.ProcessGroup.reload(groupData.component); nf.ProcessGroup.reload(groupData.component);
}, nf.Common.handleAjaxError).always(function () { }).fail(nf.Common.handleAjaxError).always(function () {
// unable to acutally move the components so attempt to // unable to acutally move the components so attempt to
// unlink and remove just the snippet // unlink and remove just the snippet
nf.Snippet.unlink(snippet.id).done(function () { nf.Snippet.unlink(snippet.id).done(function () {
nf.Snippet.remove(snippet.id); nf.Snippet.remove(snippet.id);
}); });
}); });
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}); });
}, },
/** /**
* Removes any dangling edges. All components are retained as well as any * Removes any dangling edges. All components are retained as well as any
* edges whose source and destination are also retained. * edges whose source and destination are also retained.
@ -1053,6 +1094,7 @@ nf.CanvasUtils = (function () {
} }
}); });
}, },
/** /**
* Determines if the specified selection is disconnected from other nodes. * Determines if the specified selection is disconnected from other nodes.
* *
@ -1098,6 +1140,7 @@ nf.CanvasUtils = (function () {
return isDisconnected; return isDisconnected;
}, },
/** /**
* Ensures components are eligible to be moved. The new target can be optionally specified. * Ensures components are eligible to be moved. The new target can be optionally specified.
* *
@ -1138,7 +1181,7 @@ nf.CanvasUtils = (function () {
type: 'GET', type: 'GET',
url: config.urls.controller + '/process-groups/' + encodeURIComponent(nf.Canvas.getParentGroupId()) + '/connections', url: config.urls.controller + '/process-groups/' + encodeURIComponent(nf.Canvas.getParentGroupId()) + '/connections',
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
var connections = response.connections; var connections = response.connections;
var conflictingPorts = []; var conflictingPorts = [];
@ -1173,7 +1216,7 @@ nf.CanvasUtils = (function () {
portConnectionDeferred.resolve(); portConnectionDeferred.resolve();
} }
}, function () { }).fail(function () {
portConnectionDeferred.reject(); portConnectionDeferred.reject();
}); });
} }
@ -1193,7 +1236,7 @@ nf.CanvasUtils = (function () {
verbose: true verbose: true
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
var processGroup = response.processGroup; var processGroup = response.processGroup;
var processGroupContents = processGroup.contents; var processGroupContents = processGroup.contents;
@ -1224,24 +1267,24 @@ nf.CanvasUtils = (function () {
} else { } else {
portNameDeferred.resolve(); portNameDeferred.resolve();
} }
}, function () { }).fail(function () {
portNameDeferred.reject(); portNameDeferred.reject();
}); });
}).promise(); }).promise();
}; };
// execute the checks in order // execute the checks in order
$.when(portConnectionCheck()).then(function () { portConnectionCheck().done(function () {
if (nf.Common.isDefinedAndNotNull(group)) { if (nf.Common.isDefinedAndNotNull(group)) {
$.when(portNameCheck()).then(function () { $.when(portNameCheck()).done(function () {
deferred.resolve(); deferred.resolve();
}, function () { }).fail(function () {
deferred.reject(); deferred.reject();
}); });
} else { } else {
deferred.resolve(); deferred.resolve();
} }
}, function () { }).fail(function () {
deferred.reject(); deferred.reject();
}); });
} else { } else {
@ -1249,6 +1292,7 @@ nf.CanvasUtils = (function () {
} }
}).promise(); }).promise();
}, },
/** /**
* Determines if the component in the specified selection is a valid connection source. * Determines if the component in the specified selection is a valid connection source.
* *
@ -1264,6 +1308,7 @@ nf.CanvasUtils = (function () {
nf.CanvasUtils.isRemoteProcessGroup(selection) || nf.CanvasUtils.isInputPort(selection) || nf.CanvasUtils.isRemoteProcessGroup(selection) || nf.CanvasUtils.isInputPort(selection) ||
nf.CanvasUtils.isFunnel(selection); nf.CanvasUtils.isFunnel(selection);
}, },
/** /**
* Determines if the component in the specified selection is a valid connection destination. * Determines if the component in the specified selection is a valid connection destination.
* *

View File

@ -170,7 +170,7 @@ nf.Canvas = (function () {
type: 'GET', type: 'GET',
url: config.urls.revision, url: config.urls.revision,
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
if (nf.Common.isDefinedAndNotNull(response.revision)) { if (nf.Common.isDefinedAndNotNull(response.revision)) {
var revision = response.revision; var revision = response.revision;
var currentRevision = nf.Client.getRevision(); var currentRevision = nf.Client.getRevision();
@ -187,7 +187,7 @@ nf.Canvas = (function () {
} }
} }
} }
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}; };
/** /**
@ -534,7 +534,7 @@ nf.Canvas = (function () {
type: 'GET', type: 'GET',
url: config.urls.banners, url: config.urls.banners,
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
// ensure the banners response is specified // ensure the banners response is specified
if (nf.Common.isDefinedAndNotNull(response.banners)) { if (nf.Common.isDefinedAndNotNull(response.banners)) {
if (nf.Common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') { if (nf.Common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
@ -558,7 +558,7 @@ nf.Canvas = (function () {
// update the graph dimensions // update the graph dimensions
updateGraphSize(); updateGraphSize();
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}; };
/** /**
@ -614,7 +614,7 @@ nf.Canvas = (function () {
type: 'GET', type: 'GET',
url: config.urls.status, url: config.urls.status,
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
// report the updated status // report the updated status
if (nf.Common.isDefinedAndNotNull(response.controllerStatus)) { if (nf.Common.isDefinedAndNotNull(response.controllerStatus)) {
var controllerStatus = response.controllerStatus; var controllerStatus = response.controllerStatus;
@ -712,7 +712,7 @@ nf.Canvas = (function () {
$('#has-pending-accounts').hide(); $('#has-pending-accounts').hide();
} }
} }
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}; };
/** /**
@ -729,7 +729,7 @@ nf.Canvas = (function () {
verbose: true verbose: true
}, },
dataType: 'json' dataType: 'json'
}).then(function (processGroupResponse) { }).done(function (processGroupResponse) {
// set the revision // set the revision
nf.Client.setRevision(processGroupResponse.revision); nf.Client.setRevision(processGroupResponse.revision);
@ -759,7 +759,7 @@ nf.Canvas = (function () {
// update the toolbar // update the toolbar
nf.CanvasToolbar.refresh(); nf.CanvasToolbar.refresh();
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}; };
/** /**
@ -777,7 +777,7 @@ nf.Canvas = (function () {
recursive: false recursive: false
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
// report the updated stats // report the updated stats
if (nf.Common.isDefinedAndNotNull(response.processGroupStatus)) { if (nf.Common.isDefinedAndNotNull(response.processGroupStatus)) {
var processGroupStatus = response.processGroupStatus; var processGroupStatus = response.processGroupStatus;
@ -789,7 +789,7 @@ nf.Canvas = (function () {
$('#stats-last-refreshed').text(processGroupStatus.statsLastRefreshed); $('#stats-last-refreshed').text(processGroupStatus.statsLastRefreshed);
} }
deferred.resolve(); deferred.resolve();
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
// if clustered, a 404 likely means the flow status at the ncm is stale // if clustered, a 404 likely means the flow status at the ncm is stale
if (!nf.Canvas.isClustered() || xhr.status !== 404) { if (!nf.Canvas.isClustered() || xhr.status !== 404) {
nf.Common.handleAjaxError(xhr, status, error); nf.Common.handleAjaxError(xhr, status, error);
@ -857,9 +857,9 @@ nf.Canvas = (function () {
} }
// don't load the status until the graph is loaded // don't load the status until the graph is loaded
reloadStatus(nf.Canvas.getGroupId()).then(function () { reloadStatus(nf.Canvas.getGroupId()).done(function () {
deferred.resolve(processGroupResult); deferred.resolve(processGroupResult);
}, function () { }).fail(function () {
deferred.reject(); deferred.reject();
}); });
}); });
@ -871,9 +871,9 @@ nf.Canvas = (function () {
reloadStatus: function () { reloadStatus: function () {
return $.Deferred(function (deferred) { return $.Deferred(function (deferred) {
// refresh the status and check any bulletins // refresh the status and check any bulletins
$.when(reloadStatus(nf.Canvas.getGroupId()), reloadFlowStatus()).then(function () { $.when(reloadStatus(nf.Canvas.getGroupId()), reloadFlowStatus()).done(function () {
deferred.resolve(); deferred.resolve();
}, function () { }).fail(function () {
deferred.reject(); deferred.reject();
}); });
}).promise(); }).promise();
@ -900,13 +900,13 @@ nf.Canvas = (function () {
url: config.urls.cluster url: config.urls.cluster
}).done(function (response, status, xhr) { }).done(function (response, status, xhr) {
clustered = true; clustered = true;
deferred.resolveWith(xhr, [response, status, xhr]); deferred.resolve(response, status, xhr);
}).fail(function (xhr, status, error) { }).fail(function (xhr, status, error) {
if (xhr.status === 404) { if (xhr.status === 404) {
clustered = false; clustered = false;
deferred.resolveWith(xhr, ['', 'success', xhr]); deferred.resolve('', 'success', xhr);
} else { } else {
deferred.rejectWith(xhr, [xhr, status, error]); deferred.reject(xhr, status, error);
} }
}); });
}).promise(); }).promise();
@ -919,7 +919,7 @@ nf.Canvas = (function () {
}); });
// ensure the authorities and config request is processed first // ensure the authorities and config request is processed first
$.when(authoritiesXhr, configXhr).then(function (authoritiesResult, configResult) { $.when(authoritiesXhr, configXhr).done(function (authoritiesResult, configResult) {
var authoritiesResponse = authoritiesResult[0]; var authoritiesResponse = authoritiesResult[0];
var configResponse = configResult[0]; var configResponse = configResult[0];
@ -934,7 +934,7 @@ nf.Canvas = (function () {
var configDetails = configResponse.config; var configDetails = configResponse.config;
// when both request complete, load the application // when both request complete, load the application
isClusteredRequest.then(function () { isClusteredRequest.done(function () {
// get the auto refresh interval // get the auto refresh interval
var autoRefreshIntervalSeconds = parseInt(configDetails.autoRefreshIntervalSeconds, 10); var autoRefreshIntervalSeconds = parseInt(configDetails.autoRefreshIntervalSeconds, 10);
@ -942,7 +942,7 @@ nf.Canvas = (function () {
secureSiteToSite = configDetails.siteToSiteSecure; secureSiteToSite = configDetails.siteToSiteSecure;
// load d3 // load d3
loadD3().then(function () { loadD3().done(function () {
nf.Storage.init(); nf.Storage.init();
// initialize the application // initialize the application
@ -982,7 +982,7 @@ nf.Canvas = (function () {
nf.ConnectionDetails.init(); nf.ConnectionDetails.init();
nf.RemoteProcessGroupDetails.init(); nf.RemoteProcessGroupDetails.init();
nf.GoTo.init(); nf.GoTo.init();
nf.Graph.init().then(function () { nf.Graph.init().done(function () {
// determine the split between the polling // determine the split between the polling
var pollingSplit = autoRefreshIntervalSeconds / 2; var pollingSplit = autoRefreshIntervalSeconds / 2;
@ -994,10 +994,10 @@ nf.Canvas = (function () {
// hide the splash screen // hide the splash screen
nf.Canvas.hideSplash(); nf.Canvas.hideSplash();
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}, },
/** /**
* Defines the gradient colors used to render processors. * Defines the gradient colors used to render processors.
@ -1214,6 +1214,7 @@ nf.Canvas = (function () {
// add the behavior to the canvas and disable dbl click zoom // add the behavior to the canvas and disable dbl click zoom
svg.call(behavior).on('dblclick.zoom', null); svg.call(behavior).on('dblclick.zoom', null);
}, },
/** /**
* Whether or not a component should be rendered based solely on the current scale. * Whether or not a component should be rendered based solely on the current scale.
* *
@ -1222,6 +1223,7 @@ nf.Canvas = (function () {
shouldRenderPerScale: function () { shouldRenderPerScale: function () {
return nf.Canvas.View.scale() >= MIN_SCALE_TO_RENDER; return nf.Canvas.View.scale() >= MIN_SCALE_TO_RENDER;
}, },
/** /**
* Updates component visibility based on the current translation/scale. * Updates component visibility based on the current translation/scale.
*/ */
@ -1229,6 +1231,7 @@ nf.Canvas = (function () {
updateComponentVisibility(); updateComponentVisibility();
nf.Graph.pan(); nf.Graph.pan();
}, },
/** /**
* Sets/gets the current translation. * Sets/gets the current translation.
* *
@ -1241,6 +1244,7 @@ nf.Canvas = (function () {
behavior.translate(translate); behavior.translate(translate);
} }
}, },
/** /**
* Sets/gets the current scale. * Sets/gets the current scale.
* *
@ -1253,6 +1257,7 @@ nf.Canvas = (function () {
behavior.scale(scale); behavior.scale(scale);
} }
}, },
/** /**
* Zooms in a single zoom increment. * Zooms in a single zoom increment.
*/ */
@ -1277,6 +1282,7 @@ nf.Canvas = (function () {
height: 1 height: 1
}); });
}, },
/** /**
* Zooms out a single zoom increment. * Zooms out a single zoom increment.
*/ */
@ -1301,6 +1307,7 @@ nf.Canvas = (function () {
height: 1 height: 1
}); });
}, },
/** /**
* Zooms to fit the entire graph on the canvas. * Zooms to fit the entire graph on the canvas.
*/ */
@ -1347,6 +1354,7 @@ nf.Canvas = (function () {
height: canvasHeight / newScale height: canvasHeight / newScale
}); });
}, },
/** /**
* Zooms to the actual size (1 to 1). * Zooms to the actual size (1 to 1).
*/ */
@ -1395,6 +1403,7 @@ nf.Canvas = (function () {
// center as appropriate // center as appropriate
nf.CanvasUtils.centerBoundingBox(box); nf.CanvasUtils.centerBoundingBox(box);
}, },
/** /**
* Refreshes the view based on the configured translation and scale. * Refreshes the view based on the configured translation and scale.
* *

View File

@ -34,6 +34,7 @@ nf.Clipboard = (function () {
addListener: function (listener, funct) { addListener: function (listener, funct) {
listeners[listener] = funct; listeners[listener] = funct;
}, },
/** /**
* Remove the specified listener. * Remove the specified listener.
* *
@ -44,6 +45,7 @@ nf.Clipboard = (function () {
delete listeners[listener]; delete listeners[listener];
} }
}, },
/** /**
* Copy the specified data. * Copy the specified data.
* *
@ -57,12 +59,14 @@ nf.Clipboard = (function () {
listeners[listener].call(listener, COPY, data); listeners[listener].call(listener, COPY, data);
} }
}, },
/** /**
* Checks to see if any data has been copied. * Checks to see if any data has been copied.
*/ */
isCopied: function () { isCopied: function () {
return nf.Common.isDefinedAndNotNull(data); return nf.Common.isDefinedAndNotNull(data);
}, },
/** /**
* Gets the most recent data thats copied. This operation * Gets the most recent data thats copied. This operation
* will remove the corresponding data from the clipboard. * will remove the corresponding data from the clipboard.

View File

@ -157,6 +157,7 @@ nf.Connectable = (function () {
d3.select(this).remove(); d3.select(this).remove();
}); });
}, },
activate: function (components) { activate: function (components) {
components components
.on('mouseenter.connectable', function (d) { .on('mouseenter.connectable', function (d) {

View File

@ -250,7 +250,7 @@ nf.ConnectionConfiguration = (function () {
verbose: true verbose: true
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
var processGroup = response.processGroup; var processGroup = response.processGroup;
var processGroupContents = processGroup.contents; var processGroupContents = processGroup.contents;
@ -301,7 +301,7 @@ nf.ConnectionConfiguration = (function () {
deferred.reject(); deferred.reject();
} }
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
// handle the error // handle the error
nf.Common.handleAjaxError(xhr, status, error); nf.Common.handleAjaxError(xhr, status, error);
@ -327,7 +327,7 @@ nf.ConnectionConfiguration = (function () {
verbose: true verbose: true
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
var remoteProcessGroup = response.remoteProcessGroup; var remoteProcessGroup = response.remoteProcessGroup;
var remoteProcessGroupContents = remoteProcessGroup.contents; var remoteProcessGroupContents = remoteProcessGroup.contents;
@ -379,7 +379,7 @@ nf.ConnectionConfiguration = (function () {
deferred.reject(); deferred.reject();
} }
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
// handle the error // handle the error
nf.Common.handleAjaxError(xhr, status, error); nf.Common.handleAjaxError(xhr, status, error);
@ -475,7 +475,7 @@ nf.ConnectionConfiguration = (function () {
verbose: true verbose: true
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
var processGroup = response.processGroup; var processGroup = response.processGroup;
var processGroupContents = processGroup.contents; var processGroupContents = processGroup.contents;
@ -526,7 +526,7 @@ nf.ConnectionConfiguration = (function () {
deferred.reject(); deferred.reject();
} }
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
// handle the error // handle the error
nf.Common.handleAjaxError(xhr, status, error); nf.Common.handleAjaxError(xhr, status, error);
@ -551,7 +551,7 @@ nf.ConnectionConfiguration = (function () {
verbose: true verbose: true
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
var remoteProcessGroup = response.remoteProcessGroup; var remoteProcessGroup = response.remoteProcessGroup;
var remoteProcessGroupContents = remoteProcessGroup.contents; var remoteProcessGroupContents = remoteProcessGroup.contents;
@ -603,7 +603,7 @@ nf.ConnectionConfiguration = (function () {
deferred.reject(); deferred.reject();
} }
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
// handle the error // handle the error
nf.Common.handleAjaxError(xhr, status, error); nf.Common.handleAjaxError(xhr, status, error);
@ -848,7 +848,7 @@ nf.ConnectionConfiguration = (function () {
destinationType: destinationType destinationType: destinationType
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
@ -876,7 +876,7 @@ nf.ConnectionConfiguration = (function () {
// update the birdseye // update the birdseye
nf.Birdseye.refresh(); nf.Birdseye.refresh();
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
// handle the error // handle the error
nf.Common.handleAjaxError(xhr, status, error); nf.Common.handleAjaxError(xhr, status, error);
}); });
@ -935,7 +935,7 @@ nf.ConnectionConfiguration = (function () {
destinationGroupId: destinationGroupId destinationGroupId: destinationGroupId
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
if (nf.Common.isDefinedAndNotNull(response.connection)) { if (nf.Common.isDefinedAndNotNull(response.connection)) {
var connection = response.connection; var connection = response.connection;
@ -959,7 +959,7 @@ nf.ConnectionConfiguration = (function () {
nf.RemoteProcessGroup.reload(destinationData.component); nf.RemoteProcessGroup.reload(destinationData.component);
} }
} }
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) { if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) {
nf.Dialog.showOkDialog({ nf.Dialog.showOkDialog({
dialogContent: nf.Common.escapeHtml(xhr.responseText), dialogContent: nf.Common.escapeHtml(xhr.responseText),
@ -1128,7 +1128,7 @@ nf.ConnectionConfiguration = (function () {
type: 'GET', type: 'GET',
url: config.urls.prioritizers, url: config.urls.prioritizers,
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
// create an element for each available prioritizer // create an element for each available prioritizer
$.each(response.prioritizerTypes, function (i, documentedType) { $.each(response.prioritizerTypes, function (i, documentedType) {
nf.ConnectionConfiguration.addAvailablePrioritizer('#prioritizer-available', documentedType); nf.ConnectionConfiguration.addAvailablePrioritizer('#prioritizer-available', documentedType);
@ -1142,8 +1142,9 @@ nf.ConnectionConfiguration = (function () {
opacity: 0.6 opacity: 0.6
}); });
$('#prioritizer-available, #prioritizer-selected').disableSelection(); $('#prioritizer-available, #prioritizer-selected').disableSelection();
}, nf.Common.handleAjaxError); }).fail(nf.Common.handleAjaxError);
}, },
/** /**
* Adds the specified prioritizer to the specified container. * Adds the specified prioritizer to the specified container.
* *
@ -1165,6 +1166,7 @@ nf.ConnectionConfiguration = (function () {
})); }));
} }
}, },
/** /**
* Shows the dialog for creating a new connection. * Shows the dialog for creating a new connection.
* *
@ -1209,6 +1211,7 @@ nf.ConnectionConfiguration = (function () {
removeTempEdge(); removeTempEdge();
}); });
}, },
/** /**
* Shows the configuration for the specified connection. If a destination is * Shows the configuration for the specified connection. If a destination is
* specified it will be considered a new destination. * specified it will be considered a new destination.
@ -1232,7 +1235,7 @@ nf.ConnectionConfiguration = (function () {
} }
// initialize the connection dialog // initialize the connection dialog
$.when(initializeSourceEditConnectionDialog(source), initializeDestinationEditConnectionDialog(destination)).then(function () { $.when(initializeSourceEditConnectionDialog(source), initializeDestinationEditConnectionDialog(destination)).done(function () {
var availableRelationships = connection.availableRelationships; var availableRelationships = connection.availableRelationships;
var selectedRelationships = connection.selectedRelationships; var selectedRelationships = connection.selectedRelationships;
@ -1311,9 +1314,9 @@ nf.ConnectionConfiguration = (function () {
if (nf.CanvasUtils.isProcessor(source)) { if (nf.CanvasUtils.isProcessor(source)) {
if (selectedRelationships.length > 0) { if (selectedRelationships.length > 0) {
// if there are relationships selected update // if there are relationships selected update
updateConnection(selectedRelationships).then(function () { updateConnection(selectedRelationships).done(function () {
deferred.resolve(); deferred.resolve();
}, function () { }).fail(function () {
deferred.reject(); deferred.reject();
}); });
} else { } else {
@ -1328,9 +1331,9 @@ nf.ConnectionConfiguration = (function () {
} }
} else { } else {
// there are no relationships, but the source wasn't a processor, so update anyway // there are no relationships, but the source wasn't a processor, so update anyway
updateConnection(undefined).then(function () { updateConnection(undefined).done(function () {
deferred.resolve(); deferred.resolve();
}, function () { }).fail(function () {
deferred.reject(); deferred.reject();
}); });
} }
@ -1366,7 +1369,7 @@ nf.ConnectionConfiguration = (function () {
if (relationshipNames.is(':visible') && relationshipNames.get(0).scrollHeight > relationshipNames.innerHeight()) { if (relationshipNames.is(':visible') && relationshipNames.get(0).scrollHeight > relationshipNames.innerHeight()) {
relationshipNames.css('border-width', '1px'); relationshipNames.css('border-width', '1px');
} }
}, function () { }).fail(function () {
deferred.reject(); deferred.reject();
}); });
}).promise(); }).promise();

View File

@ -945,13 +945,13 @@ nf.Connection = (function () {
data: JSON.stringify(entity), data: JSON.stringify(entity),
dataType: 'json', dataType: 'json',
contentType: 'application/json' contentType: 'application/json'
}).then(function (response) { }).done(function (response) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
// request was successful, update the entry // request was successful, update the entry
nf.Connection.set(response.connection); nf.Connection.set(response.connection);
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) { if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) {
nf.Dialog.showOkDialog({ nf.Dialog.showOkDialog({
dialogContent: nf.Common.escapeHtml(xhr.responseText), dialogContent: nf.Common.escapeHtml(xhr.responseText),
@ -973,6 +973,7 @@ nf.Connection = (function () {
selfLoopXOffset: (dimensions.width / 2) + 5, selfLoopXOffset: (dimensions.width / 2) + 5,
selfLoopYOffset: 25 selfLoopYOffset: 25
}, },
init: function () { init: function () {
connectionMap = d3.map(); connectionMap = d3.map();
@ -1122,7 +1123,7 @@ nf.Connection = (function () {
url: connectionData.component.uri, url: connectionData.component.uri,
data: updatedConnectionData, data: updatedConnectionData,
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
var connectionData = response.connection; var connectionData = response.connection;
// update the revision // update the revision
@ -1130,7 +1131,7 @@ nf.Connection = (function () {
// refresh to update the label // refresh to update the label
nf.Connection.set(connectionData); nf.Connection.set(connectionData);
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) { if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) {
nf.Dialog.showOkDialog({ nf.Dialog.showOkDialog({
dialogContent: nf.Common.escapeHtml(xhr.responseText), dialogContent: nf.Common.escapeHtml(xhr.responseText),
@ -1268,6 +1269,7 @@ nf.Connection = (function () {
d3.event.sourceEvent.stopPropagation(); d3.event.sourceEvent.stopPropagation();
}); });
}, },
/** /**
* Populates the graph with the specified connections. * Populates the graph with the specified connections.
* *
@ -1304,12 +1306,14 @@ nf.Connection = (function () {
// apply the selection and handle all new connection // apply the selection and handle all new connection
select().enter().call(renderConnections, selectAll); select().enter().call(renderConnections, selectAll);
}, },
/** /**
* Reorders the connections based on their current z index. * Reorders the connections based on their current z index.
*/ */
reorder: function () { reorder: function () {
d3.selectAll('g.connection').call(sort); d3.selectAll('g.connection').call(sort);
}, },
/** /**
* Sets the value of the specified connection. * Sets the value of the specified connection.
* *
@ -1343,6 +1347,7 @@ nf.Connection = (function () {
set(connection); set(connection);
} }
}, },
/** /**
* Sets the connection status using the specified status. * Sets the connection status using the specified status.
* *
@ -1364,6 +1369,7 @@ nf.Connection = (function () {
// update the visible connections // update the visible connections
d3.selectAll('g.connection.visible').call(updateConnectionStatus); d3.selectAll('g.connection.visible').call(updateConnectionStatus);
}, },
/** /**
* Refreshes the connection in the UI. * Refreshes the connection in the UI.
* *
@ -1376,12 +1382,14 @@ nf.Connection = (function () {
d3.selectAll('g.connection').call(updateConnections, true, true); d3.selectAll('g.connection').call(updateConnections, true, true);
} }
}, },
/** /**
* Refreshes the components necessary after a pan event. * Refreshes the components necessary after a pan event.
*/ */
pan: function () { pan: function () {
d3.selectAll('g.connection.entering, g.connection.leaving').call(updateConnections, false, true); d3.selectAll('g.connection.entering, g.connection.leaving').call(updateConnections, false, true);
}, },
/** /**
* Removes the specified connection. * Removes the specified connection.
* *
@ -1399,12 +1407,14 @@ nf.Connection = (function () {
// apply the selection and handle all removed connections // apply the selection and handle all removed connections
select().exit().call(removeConnections); select().exit().call(removeConnections);
}, },
/** /**
* Removes all processors. * Removes all processors.
*/ */
removeAll: function () { removeAll: function () {
nf.Connection.remove(connectionMap.keys()); nf.Connection.remove(connectionMap.keys());
}, },
/** /**
* Reloads the connection state from the server and refreshes the UI. * Reloads the connection state from the server and refreshes the UI.
* *
@ -1421,6 +1431,7 @@ nf.Connection = (function () {
}); });
} }
}, },
/** /**
* Gets the connection that have a source or destination component with the specified id. * Gets the connection that have a source or destination component with the specified id.
* *
@ -1439,6 +1450,7 @@ nf.Connection = (function () {
}); });
return connections; return connections;
}, },
/** /**
* If the connection id is specified it is returned. If no connection id * If the connection id is specified it is returned. If no connection id
* specified, all connections are returned. * specified, all connections are returned.

View File

@ -417,12 +417,14 @@ nf.ContextMenu = (function () {
'y': position[1] 'y': position[1]
}); });
}, },
/** /**
* Hides the context menu. * Hides the context menu.
*/ */
hide: function () { hide: function () {
$('#context-menu').hide(); $('#context-menu').hide();
}, },
/** /**
* Activates the context menu for the components in the specified selection. * Activates the context menu for the components in the specified selection.
* *

View File

@ -57,7 +57,7 @@ nf.Draggable = (function () {
y: newPosition.y y: newPosition.y
}, },
dataType: 'json' dataType: 'json'
}).then(function (response) { }).done(function (response) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
@ -69,7 +69,7 @@ nf.Draggable = (function () {
type: d.type, type: d.type,
id: d.component.id id: d.component.id
}); });
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) { if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) {
nf.Dialog.showOkDialog({ nf.Dialog.showOkDialog({
dialogContent: nf.Common.escapeHtml(xhr.responseText), dialogContent: nf.Common.escapeHtml(xhr.responseText),
@ -114,7 +114,7 @@ nf.Draggable = (function () {
data: JSON.stringify(entity), data: JSON.stringify(entity),
dataType: 'json', dataType: 'json',
contentType: 'application/json' contentType: 'application/json'
}).then(function (response) { }).done(function (response) {
// update the revision // update the revision
nf.Client.setRevision(response.revision); nf.Client.setRevision(response.revision);
@ -132,7 +132,7 @@ nf.Draggable = (function () {
type: d.type, type: d.type,
id: d.component.id id: d.component.id
}); });
}, function (xhr, status, error) { }).fail(function (xhr, status, error) {
if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) { if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) {
nf.Dialog.showOkDialog({ nf.Dialog.showOkDialog({
dialogContent: nf.Common.escapeHtml(xhr.responseText), dialogContent: nf.Common.escapeHtml(xhr.responseText),
@ -300,6 +300,7 @@ nf.Draggable = (function () {
dragSelection.remove(); dragSelection.remove();
}); });
}, },
/** /**
* Activates the drag behavior for the components in the specified selection. * Activates the drag behavior for the components in the specified selection.
* *

View File

@ -135,6 +135,7 @@ nf.Funnel = (function () {
'class': 'funnels' 'class': 'funnels'
}); });
}, },
/** /**
* Populates the graph with the specified funnels. * Populates the graph with the specified funnels.
* *
@ -165,6 +166,7 @@ nf.Funnel = (function () {
// apply the selection and handle all new processors // apply the selection and handle all new processors
select().enter().call(renderFunnels, selectAll); select().enter().call(renderFunnels, selectAll);
}, },
/** /**
* If the funnel id is specified it is returned. If no funnel id * If the funnel id is specified it is returned. If no funnel id
* specified, all funnels are returned. * specified, all funnels are returned.
@ -178,6 +180,7 @@ nf.Funnel = (function () {
return funnelMap.get(id); return funnelMap.get(id);
} }
}, },
/** /**
* If the funnel id is specified it is refresh according to the current * If the funnel id is specified it is refresh according to the current
* state. If not funnel id is specified, all funnels are refreshed. * state. If not funnel id is specified, all funnels are refreshed.
@ -191,6 +194,7 @@ nf.Funnel = (function () {
d3.selectAll('g.funnel').call(updateFunnels); d3.selectAll('g.funnel').call(updateFunnels);
} }
}, },
/** /**
* Reloads the funnel state from the server and refreshes the UI. * Reloads the funnel state from the server and refreshes the UI.
* If the funnel is currently unknown, this function just returns. * If the funnel is currently unknown, this function just returns.
@ -208,6 +212,7 @@ nf.Funnel = (function () {
}); });
} }
}, },
/** /**
* Positions the component. * Positions the component.
* *
@ -216,6 +221,7 @@ nf.Funnel = (function () {
position: function (id) { position: function (id) {
d3.select('#id-' + id).call(nf.CanvasUtils.position); d3.select('#id-' + id).call(nf.CanvasUtils.position);
}, },
/** /**
* Sets the specified funnel(s). If the is an array, it * Sets the specified funnel(s). If the is an array, it
* will set each funnel. If it is not an array, it will * will set each funnel. If it is not an array, it will
@ -244,6 +250,7 @@ nf.Funnel = (function () {
set(funnels); set(funnels);
} }
}, },
/** /**
* Removes the specified funnel. * Removes the specified funnel.
* *
@ -261,6 +268,7 @@ nf.Funnel = (function () {
// apply the selection and handle all removed funnels // apply the selection and handle all removed funnels
select().exit().call(removeFunnels); select().exit().call(removeFunnels);
}, },
/** /**
* Removes all processors. * Removes all processors.
*/ */

Some files were not shown because too many files have changed in this diff Show More