Просмотр исходного кода

Merge branch 'master' of http://git.xt.wenhq.top:8083/wenhongquan/VisualInspection

# Conflicts:
#	VisualInspection/view/common/commoncsslink.html
#	VisualInspection_server/src/main/resources/application.properties
#	Visuallnspection_fjq/visuallnspectioninteface/target/maven-archiver/pom.properties
#	Visuallnspection_fjq/visuallnspectioninteface/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
#	Visuallnspection_fjq/visuallnspectioninteface/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
MSI\liwei 7 лет назад
Родитель
Сommit
f920a02b24
25 измененных файлов с 4066 добавлено и 0 удалено
  1. 2 0
      VisualInspection/node_modules/fixed-header-table/.npmignore
  2. 20 0
      VisualInspection/node_modules/fixed-header-table/LICENSE.md
  3. 25 0
      VisualInspection/node_modules/fixed-header-table/README.md
  4. 92 0
      VisualInspection/node_modules/fixed-header-table/css/defaultTheme.css
  5. 641 0
      VisualInspection/node_modules/fixed-header-table/demo/css/960.css
  6. 236 0
      VisualInspection/node_modules/fixed-header-table/demo/css/demo.css
  7. 168 0
      VisualInspection/node_modules/fixed-header-table/demo/css/myTheme.css
  8. 53 0
      VisualInspection/node_modules/fixed-header-table/demo/css/reset.css
  9. 60 0
      VisualInspection/node_modules/fixed-header-table/demo/demo.html
  10. 13 0
      VisualInspection/node_modules/fixed-header-table/demo/demo.js
  11. BIN
      VisualInspection/node_modules/fixed-header-table/demo/images/bg.png
  12. 73 0
      VisualInspection/node_modules/fixed-header-table/demo/js/demo.js
  13. 1287 0
      VisualInspection/node_modules/fixed-header-table/demo/test.html
  14. 706 0
      VisualInspection/node_modules/fixed-header-table/jquery.fixedheadertable.js
  15. 18 0
      VisualInspection/node_modules/fixed-header-table/jquery.fixedheadertable.min.js
  16. 92 0
      VisualInspection/node_modules/fixed-header-table/lib/jquery.mousewheel.js
  17. 48 0
      VisualInspection/node_modules/fixed-header-table/package.json
  18. 252 0
      VisualInspection_server/src/main/java/com/xintong/visualinspection/controller/gettway/CheckApplyController_Q.java
  19. 18 0
      VisualInspection_server/src/main/resources/application.properties.rej
  20. 9 0
      Visuallnspection_fjq/.idea/Visuallnspection_fjq.iml
  21. 6 0
      Visuallnspection_fjq/.idea/misc.xml
  22. 8 0
      Visuallnspection_fjq/.idea/modules.xml
  23. 185 0
      Visuallnspection_fjq/.idea/workspace.xml
  24. 26 0
      Visuallnspection_fjq/visuallnspectioninteface/src/main/java/com/xintong/visualinspection/service/CheckAppealService_Q.java
  25. 28 0
      Visuallnspection_fjq/visuallnspectioninteface/src/main/java/com/xintong/visualinspection/service/CheckApplyService_Q.java

+ 2 - 0
VisualInspection/node_modules/fixed-header-table/.npmignore

@@ -0,0 +1,2 @@
+/.DS_Store
+demo/.DS_Store

+ 20 - 0
VisualInspection/node_modules/fixed-header-table/LICENSE.md

@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Mark Malek
+
+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.

+ 25 - 0
VisualInspection/node_modules/fixed-header-table/README.md

@@ -0,0 +1,25 @@
+## Version 1.3
+ - jquery.fixedheadertable.js
+ 
+## Methods:
+
+* show - `$('selector').fixedHeaderTable('show');`
+* hide - `$('selector').fixedHeaderTable('hide');`
+* destroy - `$('selector').fixedHeaderTable('destroy');`
+
+## Options:
+
+* width - Number - Default: 100%
+* height - Number - Default: 100%
+* fixedColumns - Number - Default: 0
+* footer - Boolean - Default: false
+* cloneHeadToFoot - Boolean - Default: false
+* autoShow - Boolean - Default: true
+* altClass - String - Default: none
+* themeClass - String - Default: none
+
+### Notes:
+
+If you aren't using the minified version, be sure to include
+`lib/jquery.mousewheel.js` in your page if you require mousewheel
+scrolling via fixed columns.

+ 92 - 0
VisualInspection/node_modules/fixed-header-table/css/defaultTheme.css

@@ -0,0 +1,92 @@
+/*!
+* jquery.fixedHeaderTable. The jQuery fixedHeaderTable plugin
+*
+* Copyright (c) 2011 Mark Malek
+* http://fixedheadertable.com
+*
+* Licensed under MIT
+* http://www.opensource.org/licenses/mit-license.php
+* 
+* http://docs.jquery.com/Plugins/Authoring
+* jQuery authoring guidelines
+*
+* Launch  : October 2009
+* Version : 1.3
+* Released: May 9th, 2011
+*
+* 
+* all CSS sizing (width,height) is done in pixels (px)
+*/
+
+/* @group Reset */
+
+.fht-table,
+.fht-table thead,
+.fht-table tfoot,
+.fht-table tbody,
+.fht-table tr,
+.fht-table th,
+.fht-table td {
+	/* position */
+    margin: 0;
+    
+    /* size */
+	padding: 0;
+
+	/* text */
+	font-size: 100%;
+	font: inherit;
+	vertical-align: top;
+	}
+
+.fht-table {
+	/* appearance */
+    border-collapse: collapse;
+    border-spacing: 0;
+	}
+
+/* @end */
+
+/* @group Content */
+
+.fht-table-wrapper,
+.fht-table-wrapper .fht-thead,
+.fht-table-wrapper .fht-tfoot,
+.fht-table-wrapper .fht-fixed-column .fht-tbody,
+.fht-table-wrapper .fht-fixed-body .fht-tbody,
+.fht-table-wrapper .fht-tbody {
+	/* appearance */
+	overflow: hidden;
+	
+	/* position */
+	position: relative;
+	}
+
+	.fht-table-wrapper .fht-fixed-body .fht-tbody,
+	.fht-table-wrapper .fht-tbody {
+		/* appearance */
+	    overflow: auto;
+		}
+
+		.fht-table-wrapper .fht-table .fht-cell {
+			/* appearance */
+			overflow: hidden;
+			
+			/* size */
+		    height: 1px;
+			}
+	
+	.fht-table-wrapper .fht-fixed-column,
+	.fht-table-wrapper .fht-fixed-body {
+	    /* position */
+	    top: 0;
+	    left: 0;
+	    position: absolute;
+	    }
+	    
+	.fht-table-wrapper .fht-fixed-column {
+	    /* position */
+	    z-index: 1;
+	    }
+
+/* @end */

+ 641 - 0
VisualInspection/node_modules/fixed-header-table/demo/css/960.css

@@ -0,0 +1,641 @@
+/*
+	960 Grid System ~ Core CSS.
+	Learn more ~ http://960.gs/
+
+	Licensed under GPL and MIT.
+*/
+
+/*
+	Forces backgrounds to span full width,
+	even if there is horizontal scrolling.
+	Increase this if your layout is wider.
+
+	Note: IE6 works fine without this fix.
+*/
+
+body {
+	min-width: 960px;
+}
+
+/* `Containers
+----------------------------------------------------------------------------------------------------*/
+
+.container_12,
+.container_16 {
+	margin-left: auto;
+	margin-right: auto;
+	width: 960px;
+}
+
+/* `Grid >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.grid_1,
+.grid_2,
+.grid_3,
+.grid_4,
+.grid_5,
+.grid_6,
+.grid_7,
+.grid_8,
+.grid_9,
+.grid_10,
+.grid_11,
+.grid_12,
+.grid_13,
+.grid_14,
+.grid_15,
+.grid_16 {
+	display: inline;
+	float: left;
+	margin-left: 10px;
+	margin-right: 10px;
+}
+
+.push_1, .pull_1,
+.push_2, .pull_2,
+.push_3, .pull_3,
+.push_4, .pull_4,
+.push_5, .pull_5,
+.push_6, .pull_6,
+.push_7, .pull_7,
+.push_8, .pull_8,
+.push_9, .pull_9,
+.push_10, .pull_10,
+.push_11, .pull_11,
+.push_12, .pull_12,
+.push_13, .pull_13,
+.push_14, .pull_14,
+.push_15, .pull_15 {
+	position: relative;
+}
+
+.container_12 .grid_3,
+.container_16 .grid_4 {
+	width: 220px;
+}
+
+.container_12 .grid_6,
+.container_16 .grid_8 {
+	width: 460px;
+}
+
+.container_12 .grid_9,
+.container_16 .grid_12 {
+	width: 700px;
+}
+
+.container_12 .grid_12,
+.container_16 .grid_16 {
+	width: 940px;
+}
+
+/* `Grid >> Children (Alpha ~ First, Omega ~ Last)
+----------------------------------------------------------------------------------------------------*/
+
+.alpha {
+	margin-left: 0;
+}
+
+.omega {
+	margin-right: 0;
+}
+
+/* `Grid >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .grid_1 {
+	width: 60px;
+}
+
+.container_12 .grid_2 {
+	width: 140px;
+}
+
+.container_12 .grid_4 {
+	width: 300px;
+}
+
+.container_12 .grid_5 {
+	width: 380px;
+}
+
+.container_12 .grid_7 {
+	width: 540px;
+}
+
+.container_12 .grid_8 {
+	width: 620px;
+}
+
+.container_12 .grid_10 {
+	width: 780px;
+}
+
+.container_12 .grid_11 {
+	width: 860px;
+}
+
+/* `Grid >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .grid_1 {
+	width: 40px;
+}
+
+.container_16 .grid_2 {
+	width: 100px;
+}
+
+.container_16 .grid_3 {
+	width: 160px;
+}
+
+.container_16 .grid_5 {
+	width: 280px;
+}
+
+.container_16 .grid_6 {
+	width: 340px;
+}
+
+.container_16 .grid_7 {
+	width: 400px;
+}
+
+.container_16 .grid_9 {
+	width: 520px;
+}
+
+.container_16 .grid_10 {
+	width: 580px;
+}
+
+.container_16 .grid_11 {
+	width: 640px;
+}
+
+.container_16 .grid_13 {
+	width: 760px;
+}
+
+.container_16 .grid_14 {
+	width: 820px;
+}
+
+.container_16 .grid_15 {
+	width: 880px;
+}
+
+/* `Prefix Extra Space >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .prefix_3,
+.container_16 .prefix_4 {
+	padding-left: 240px;
+}
+
+.container_12 .prefix_6,
+.container_16 .prefix_8 {
+	padding-left: 480px;
+}
+
+.container_12 .prefix_9,
+.container_16 .prefix_12 {
+	padding-left: 720px;
+}
+
+/* `Prefix Extra Space >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .prefix_1 {
+	padding-left: 80px;
+}
+
+.container_12 .prefix_2 {
+	padding-left: 160px;
+}
+
+.container_12 .prefix_4 {
+	padding-left: 320px;
+}
+
+.container_12 .prefix_5 {
+	padding-left: 400px;
+}
+
+.container_12 .prefix_7 {
+	padding-left: 560px;
+}
+
+.container_12 .prefix_8 {
+	padding-left: 640px;
+}
+
+.container_12 .prefix_10 {
+	padding-left: 800px;
+}
+
+.container_12 .prefix_11 {
+	padding-left: 880px;
+}
+
+/* `Prefix Extra Space >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .prefix_1 {
+	padding-left: 60px;
+}
+
+.container_16 .prefix_2 {
+	padding-left: 120px;
+}
+
+.container_16 .prefix_3 {
+	padding-left: 180px;
+}
+
+.container_16 .prefix_5 {
+	padding-left: 300px;
+}
+
+.container_16 .prefix_6 {
+	padding-left: 360px;
+}
+
+.container_16 .prefix_7 {
+	padding-left: 420px;
+}
+
+.container_16 .prefix_9 {
+	padding-left: 540px;
+}
+
+.container_16 .prefix_10 {
+	padding-left: 600px;
+}
+
+.container_16 .prefix_11 {
+	padding-left: 660px;
+}
+
+.container_16 .prefix_13 {
+	padding-left: 780px;
+}
+
+.container_16 .prefix_14 {
+	padding-left: 840px;
+}
+
+.container_16 .prefix_15 {
+	padding-left: 900px;
+}
+
+/* `Suffix Extra Space >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .suffix_3,
+.container_16 .suffix_4 {
+	padding-right: 240px;
+}
+
+.container_12 .suffix_6,
+.container_16 .suffix_8 {
+	padding-right: 480px;
+}
+
+.container_12 .suffix_9,
+.container_16 .suffix_12 {
+	padding-right: 720px;
+}
+
+/* `Suffix Extra Space >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .suffix_1 {
+	padding-right: 80px;
+}
+
+.container_12 .suffix_2 {
+	padding-right: 160px;
+}
+
+.container_12 .suffix_4 {
+	padding-right: 320px;
+}
+
+.container_12 .suffix_5 {
+	padding-right: 400px;
+}
+
+.container_12 .suffix_7 {
+	padding-right: 560px;
+}
+
+.container_12 .suffix_8 {
+	padding-right: 640px;
+}
+
+.container_12 .suffix_10 {
+	padding-right: 800px;
+}
+
+.container_12 .suffix_11 {
+	padding-right: 880px;
+}
+
+/* `Suffix Extra Space >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .suffix_1 {
+	padding-right: 60px;
+}
+
+.container_16 .suffix_2 {
+	padding-right: 120px;
+}
+
+.container_16 .suffix_3 {
+	padding-right: 180px;
+}
+
+.container_16 .suffix_5 {
+	padding-right: 300px;
+}
+
+.container_16 .suffix_6 {
+	padding-right: 360px;
+}
+
+.container_16 .suffix_7 {
+	padding-right: 420px;
+}
+
+.container_16 .suffix_9 {
+	padding-right: 540px;
+}
+
+.container_16 .suffix_10 {
+	padding-right: 600px;
+}
+
+.container_16 .suffix_11 {
+	padding-right: 660px;
+}
+
+.container_16 .suffix_13 {
+	padding-right: 780px;
+}
+
+.container_16 .suffix_14 {
+	padding-right: 840px;
+}
+
+.container_16 .suffix_15 {
+	padding-right: 900px;
+}
+
+/* `Push Space >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .push_3,
+.container_16 .push_4 {
+	left: 240px;
+}
+
+.container_12 .push_6,
+.container_16 .push_8 {
+	left: 480px;
+}
+
+.container_12 .push_9,
+.container_16 .push_12 {
+	left: 720px;
+}
+
+/* `Push Space >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .push_1 {
+	left: 80px;
+}
+
+.container_12 .push_2 {
+	left: 160px;
+}
+
+.container_12 .push_4 {
+	left: 320px;
+}
+
+.container_12 .push_5 {
+	left: 400px;
+}
+
+.container_12 .push_7 {
+	left: 560px;
+}
+
+.container_12 .push_8 {
+	left: 640px;
+}
+
+.container_12 .push_10 {
+	left: 800px;
+}
+
+.container_12 .push_11 {
+	left: 880px;
+}
+
+/* `Push Space >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .push_1 {
+	left: 60px;
+}
+
+.container_16 .push_2 {
+	left: 120px;
+}
+
+.container_16 .push_3 {
+	left: 180px;
+}
+
+.container_16 .push_5 {
+	left: 300px;
+}
+
+.container_16 .push_6 {
+	left: 360px;
+}
+
+.container_16 .push_7 {
+	left: 420px;
+}
+
+.container_16 .push_9 {
+	left: 540px;
+}
+
+.container_16 .push_10 {
+	left: 600px;
+}
+
+.container_16 .push_11 {
+	left: 660px;
+}
+
+.container_16 .push_13 {
+	left: 780px;
+}
+
+.container_16 .push_14 {
+	left: 840px;
+}
+
+.container_16 .push_15 {
+	left: 900px;
+}
+
+/* `Pull Space >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .pull_3,
+.container_16 .pull_4 {
+	left: -240px;
+}
+
+.container_12 .pull_6,
+.container_16 .pull_8 {
+	left: -480px;
+}
+
+.container_12 .pull_9,
+.container_16 .pull_12 {
+	left: -720px;
+}
+
+/* `Pull Space >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .pull_1 {
+	left: -80px;
+}
+
+.container_12 .pull_2 {
+	left: -160px;
+}
+
+.container_12 .pull_4 {
+	left: -320px;
+}
+
+.container_12 .pull_5 {
+	left: -400px;
+}
+
+.container_12 .pull_7 {
+	left: -560px;
+}
+
+.container_12 .pull_8 {
+	left: -640px;
+}
+
+.container_12 .pull_10 {
+	left: -800px;
+}
+
+.container_12 .pull_11 {
+	left: -880px;
+}
+
+/* `Pull Space >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .pull_1 {
+	left: -60px;
+}
+
+.container_16 .pull_2 {
+	left: -120px;
+}
+
+.container_16 .pull_3 {
+	left: -180px;
+}
+
+.container_16 .pull_5 {
+	left: -300px;
+}
+
+.container_16 .pull_6 {
+	left: -360px;
+}
+
+.container_16 .pull_7 {
+	left: -420px;
+}
+
+.container_16 .pull_9 {
+	left: -540px;
+}
+
+.container_16 .pull_10 {
+	left: -600px;
+}
+
+.container_16 .pull_11 {
+	left: -660px;
+}
+
+.container_16 .pull_13 {
+	left: -780px;
+}
+
+.container_16 .pull_14 {
+	left: -840px;
+}
+
+.container_16 .pull_15 {
+	left: -900px;
+}
+
+/* `Clear Floated Elements
+----------------------------------------------------------------------------------------------------*/
+
+/* http://sonspring.com/journal/clearing-floats */
+
+.clear {
+	clear: both;
+	display: block;
+	overflow: hidden;
+	visibility: hidden;
+	width: 0;
+	height: 0;
+}
+
+/* http://perishablepress.com/press/2009/12/06/new-clearfix-hack */
+
+.clearfix:after {
+	clear: both;
+	content: ' ';
+	display: block;
+	font-size: 0;
+	line-height: 0;
+	visibility: hidden;
+	width: 0;
+	height: 0;
+}
+
+/*
+	The following zoom:1 rule is specifically for IE6 + IE7.
+	Move to separate stylesheet if invalid CSS is a problem.
+*/
+
+* html .clearfix,
+*:first-child+html .clearfix {
+	zoom: 1;
+}

+ 236 - 0
VisualInspection/node_modules/fixed-header-table/demo/css/demo.css

@@ -0,0 +1,236 @@
+body {
+	/* appearance */
+	background-image: url(../images/bg.png);
+	background-repeat: repeat;
+	
+	/* text */
+	font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
+	}
+	
+.styles {
+	display: none;
+	}
+	
+input::-webkit-input-placeholder {
+    color: #585858;
+	}
+input:-moz-placeholder {
+    color: #585858;
+	}
+	
+.button {
+	/* appearance */
+	background-color: #3f3f3f;
+	background-image: -moz-linear-gradient(
+		top,
+		rgba(255,255,255,0.0) 0%,
+		rgba(255,255,255,0.1) 50%);
+	
+	background-image: -webkit-gradient(
+		linear, left top, left bottom,
+		color-stop(100%,rgba(255,255,255,0.0)),
+		color-stop(50%,rgba(255,255,255,0.1)));
+	border: 1px solid #000000;
+	-webkit-border-radius: 5px;
+	-moz-border-radius: 5px;
+	border-radius: 5px;
+	-webkit-box-shadow: 0 1px 0 rgba(139,139,139,1) inset, 0 1px 0 rgba(88,88,88,1);
+	-moz-box-shadow: 0 1px 0 rgba(139,139,139,1) inset, 0 1px 0 rgba(88,88,88,1);
+	box-shadow: 0 1px 0 rgba(139,139,139,1) inset, 0 1px 0 rgba(88,88,88,1);
+	
+	/* position */
+	display: inline-block;
+	margin: 10px 0;
+	
+	/* size */
+	padding: 0 10px;
+	
+	/* text */
+	color: #eaeaea;
+	font-size: 12px;
+	line-height: 30px;
+	text-decoration: none;
+	white-space: nowrap;
+	}
+.button:hover {
+	/* appearance */
+	background-color: #6495ed;
+	-webkit-box-shadow: 0 0 3px #6495ed;
+	-moz-box-shadow: 0 0 3px #6495ed;
+	box-shadow: 0 0 3px #6495ed;
+	}
+	
+#buildTable {
+	margin-top: 20px;
+	}
+	
+#tablePlaceholder {
+	margin-top: 40px;
+	}
+
+.table_options {
+	/* appearance */
+	background-color: #252525;
+	background-image: -moz-linear-gradient(
+		top,
+		rgba(255,255,255,0.05) 20%,
+		rgba(255,255,255,0.0) 80%);
+	
+	background-image: -webkit-gradient(
+		linear, left top, left bottom,
+		color-stop(20%,rgba(255,255,255,0.05)),
+		color-stop(80%,rgba(255,255,255,0.0)));
+	border: 1px solid #000000;
+	-webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.75);
+	-moz-box-shadow: 0 5px 10px rgba(0,0,0,0.75);
+	box-shadow: 0 5px 10px rgba(0,0,0,0.75);
+	overflow: hidden;
+	
+	/* size */
+	padding: 10px 0;
+	
+	}
+	h2 {
+		/* text */
+		color: #dadada;
+		font-size: 14px;
+		font-weight: bold;
+		text-align: center;
+		text-shadow: 0 -1px 1px #000000;
+		}
+	.table_options fieldset {
+		/* appearance */
+		border: none;
+		
+		/* size */
+		padding: 5px 0;
+		
+		/* text */
+		text-align: right;
+		}
+		.table_options label {
+			/* size */
+			padding: 0 10px 0 0;
+			
+			/* text */
+			color: #b2b2b2;
+			font-size: 12px;
+			text-shadow: 0 -1px 1px #000000;
+			
+			}
+		.table_options input,
+		.table_options input:focus {
+			/* appearance */
+			background-color: #1f1f1f;
+			border: 1px solid #000000;
+			-webkit-border-radius: 5px;
+			-moz-border-radius: 5px;
+			border-radius: 5px;
+			-webkit-box-shadow: 0 1px 1px rgba(63,63,63,1), 0 1px 3px rgba(0,0,0,1) inset;
+			-moz-box-shadow: 0 1px 1px rgba(63,63,63,1), 0 1px 3px rgba(0,0,0,1) inset;
+			box-shadow: 0 1px 1px rgba(63,63,63,1), 0 1px 3px rgba(0,0,0,1) inset;
+			
+			/* size */
+			padding: 8px 5px;
+			width: 50px;
+			
+			/* text */
+			color: #fff;
+			}
+		.table_options input:focus {
+			outline: 1px solid #fff;
+			}
+			
+			
+			
+			
+/* Fancy Dark Table */	
+.fancyDarkTable .numeric {
+	/* text */
+	text-align: right;
+	}
+
+.fancyDarkTable td, .fancyDarkTable th {
+	border: 1px solid #000000;
+	padding: 5px;
+}
+
+.fancyDarkTable thead tr th {
+	padding: 10px 5px 10px 5px;
+	}
+
+.fancyDarkTable {
+	/*border-collapse: separate;*/
+	
+	/* text */
+	font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
+	}
+
+.fancyDarkTable tbody tr td {
+	/* appearance */
+	background-color: #3f3f3f;
+	background-image: -moz-linear-gradient(
+		top,
+		rgba(255,255,255,0.0) 0%,
+		rgba(255,255,255,0.02) 100%);
+	
+	background-image: -webkit-gradient(
+		linear, left top, left bottom,
+		color-stop(0%,rgba(255,255,255,0.0)),
+		color-stop(100%,rgba(255,255,255,0.02)));
+	border-bottom-color: #2f2f2f;
+	border-right-color: #2f2f2f;
+
+	/* size */
+	padding: 10px 5px 30px 5px;
+
+	/* text */
+	color: #FFFFFF;
+	font-size: 11px;
+	font-weight: bold;
+	text-shadow: 0 -1px 1px #000000;
+	}
+
+.fancyDarkTable tbody tr.odd td {
+	/* appearance */
+	background-color: #464646;
+	background-image: -moz-linear-gradient(
+		top,
+		rgba(255,255,255,0.0) 0%,
+		rgba(255,255,255,0.02) 100%);
+	
+	background-image: -webkit-gradient(
+		linear, left top, left bottom,
+		color-stop(0%,rgba(255,255,255,0.0)),
+		color-stop(100%,rgba(255,255,255,0.02)));
+	border-right-color: #2f2f2f;
+	}
+
+.fancyDarkTable thead tr th,
+.fancyDarkTable tfoot tr td {
+	/* appearance */
+	background-color: #151515;
+	background-image: -moz-linear-gradient(
+		top,
+		rgba(255,255,255,0.05) 0%,
+		rgba(255,255,255,0.0) 100%);
+	
+	background-image: -webkit-gradient(
+		linear, left top, left bottom,
+		color-stop(0%,rgba(255,255,255,0.05)),
+		color-stop(100%,rgba(255,255,255,0.0)));
+		
+	/* text */
+	color: #ffffff;
+	font-size: 12px;
+	font-weight: bold;
+	text-shadow: 0 -1px 1px #000;
+	}
+	
+.fancyDarkTable .fht-head {
+	-webkit-box-shadow: 0 -1px 0 #3f3f3f;
+	-moz-box-shadow: 0 -1px 0 #3f3f3f;
+	box-shadow: 0 -1px 0 #3f3f3f;
+	z-index: 1;
+	position: relative;
+	}

+ 168 - 0
VisualInspection/node_modules/fixed-header-table/demo/css/myTheme.css

@@ -0,0 +1,168 @@
+.divider {
+    margin-top: 40px;
+}
+
+.button {
+    /* appearance */
+    background-color: #3f3f3f;
+    background-image: -moz-linear-gradient( top, rgba(255, 255, 255, 0.0) 0%, rgba(255, 255, 255, 0.1) 50%);
+    background-image: -webkit-gradient( linear, left top, left bottom, color-stop(100%, rgba(255, 255, 255, 0.0)), color-stop(50%, rgba(255, 255, 255, 0.1)));
+    border: 1px solid #000000;
+    -webkit-border-radius: 5px;
+    -moz-border-radius: 5px;
+    border-radius: 5px;
+    -webkit-box-shadow: 0 1px 0 rgba(139, 139, 139, 1) inset, 0 1px 0 rgba(88, 88, 88, 1);
+    -moz-box-shadow: 0 1px 0 rgba(139, 139, 139, 1) inset, 0 1px 0 rgba(88, 88, 88, 1);
+    box-shadow: 0 1px 0 rgba(139, 139, 139, 1) inset, 0 1px 0 rgba(88, 88, 88, 1);
+    cursor: pointer;
+    /* position */
+    display: inline-block;
+    margin: 10px;
+    /* size */
+    padding: 0 10px;
+    /* text */
+    color: #eaeaea;
+    font-size: 12px;
+    line-height: 30px;
+    text-decoration: none;
+    white-space: nowrap;
+}
+
+.button:hover {
+    /* appearance */
+    background-color: #6495ed;
+    -webkit-box-shadow: 0 0 3px #6495ed;
+    -moz-box-shadow: 0 0 3px #6495ed;
+    box-shadow: 0 0 3px #6495ed;
+}
+
+.myTableWrapper {
+    width: 800px;
+    height: 500px;
+}
+
+.height250 {
+    height: 250px;
+    overflow-x: auto;
+    overflow-y: auto;
+}
+
+.height400 {
+    height: 400px;
+    overflow-x: auto;
+    overflow-y: auto;
+}
+
+.fancyTable td,
+.fancyTable th {
+    /* appearance */
+    border: 1px solid #778899;
+    /* size */
+    padding: 5px;
+}
+
+.fancyTable {
+    /* text */
+    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
+}
+
+.fancyTable tbody tr td {
+    /* appearance */
+    background-color: #eef2f9;
+    background-image: -moz-linear-gradient( top, rgba(255, 255, 255, 0.4) 0%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.1) 51%, rgba(255, 255, 255, 0.0) 100%);
+    background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 0.4)), color-stop(50%, rgba(255, 255, 255, 0.2)), color-stop(51%, rgba(255, 255, 255, 0.1)), color-stop(100%, rgba(255, 255, 255, 0.0)));
+    /* text */
+    color: #262c31;
+    font-size: 11px;
+}
+
+.fancyTable tbody tr.odd td {
+    /* appearance */
+    background-color: #d6e0ef;
+    background-image: -moz-linear-gradient( top, rgba(255, 255, 255, 0.4) 0%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.1) 51%, rgba(255, 255, 255, 0.0) 100%);
+    background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 0.4)), color-stop(50%, rgba(255, 255, 255, 0.2)), color-stop(51%, rgba(255, 255, 255, 0.1)), color-stop(100%, rgba(255, 255, 255, 0.0)));
+}
+
+.fancyTable thead tr th,
+.fancyTable thead tr td,
+.fancyTable tfoot tr th,
+.fancyTable tfoot tr td {
+    /* appearance */
+    background-color: #8ca9cf;
+    background-image: -moz-linear-gradient( top, rgba(255, 255, 255, 0.4) 0%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.1) 51%, rgba(255, 255, 255, 0.0) 100%);
+    background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 0.4)), color-stop(50%, rgba(255, 255, 255, 0.2)), color-stop(51%, rgba(255, 255, 255, 0.1)), color-stop(100%, rgba(255, 255, 255, 0.0)));
+    /* text */
+    color: #121517;
+    font-size: 12px;
+    font-weight: bold;
+    text-shadow: 0 1px 1px #e8ebee;
+}
+
+
+/* Fancy Dark Table */
+
+.fancyDarkTable .numeric {
+    /* text */
+    text-align: right;
+}
+
+.fancyDarkTable td,
+.fancyDarkTable th {
+    border: 1px solid #000000;
+    padding: 5px;
+}
+
+.fancyDarkTable thead tr th {
+    padding: 10px 5px 10px 5px;
+}
+
+.fancyDarkTable {
+    /*border-collapse: separate;*/
+    /* text */
+    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
+}
+
+.fancyDarkTable tbody tr td {
+    /* appearance */
+    background-color: #48535e;
+    background-image: -moz-linear-gradient( top, rgba(255, 255, 255, 0.0) 0%, rgba(255, 255, 255, 0.02) 100%);
+    background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 0.0)), color-stop(100%, rgba(255, 255, 255, 0.02)));
+    border-bottom-color: #22272e;
+    border-top-color: #708090;
+    border-right-color: #000;
+    border-left-color: #3c454f;
+    /* size */
+    padding: 10px 5px 30px 5px;
+    /* text */
+    color: #FFFFFF;
+    font-size: 11px;
+    font-weight: bold;
+    text-shadow: 0 -1px 1px #000000;
+}
+
+.fancyDarkTable tbody tr.odd td {
+    /* appearance */
+    background-color: #3c454f;
+    background-image: -moz-linear-gradient( top, rgba(255, 255, 255, 0.0) 0%, rgba(255, 255, 255, 0.02) 100%);
+    background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 0.0)), color-stop(100%, rgba(255, 255, 255, 0.02)));
+    border-right-color: #000;
+}
+
+.fancyDarkTable thead tr th,
+.fancyDarkTable tfoot tr td {
+    /* appearance */
+    background-color: #0b0d10;
+    background-image: -moz-linear-gradient( top, rgba(255, 255, 255, 0.4) 0%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.1) 51%, rgba(255, 255, 255, 0.0) 100%);
+    background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 0.4)), color-stop(50%, rgba(255, 255, 255, 0.2)), color-stop(51%, rgba(255, 255, 255, 0.1)), color-stop(100%, rgba(255, 255, 255, 0.0)));
+    /* text */
+    color: #ffffff;
+    font-size: 12px;
+    font-weight: bold;
+    text-shadow: 0 -1px 1px #000;
+}
+
+.fancyDarkTable .fht-head {
+    -webkit-box-shadow: 0 5px 10px #000;
+    z-index: 1;
+    position: relative;
+}

+ 53 - 0
VisualInspection/node_modules/fixed-header-table/demo/css/reset.css

@@ -0,0 +1,53 @@
+/* http://meyerweb.com/eric/tools/css/reset/ */
+/* v1.0 | 20080212 */
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, font, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	font-size: 100%;
+	vertical-align: baseline;
+	background: transparent;
+}
+body {
+	line-height: 1;
+}
+ol, ul {
+	list-style: none;
+}
+blockquote, q {
+	quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+	content: '';
+	content: none;
+}
+
+/* remember to define focus styles! */
+:focus {
+	outline: 0;
+}
+
+/* remember to highlight inserts somehow! */
+ins {
+	text-decoration: none;
+}
+del {
+	text-decoration: line-through;
+}
+
+/* tables still need 'cellspacing="0"' in the markup */
+table {
+	border-collapse: collapse;
+	border-spacing: 0;
+}

+ 60 - 0
VisualInspection/node_modules/fixed-header-table/demo/demo.html

@@ -0,0 +1,60 @@
+<!DOCTYPE HTML>
+<html>
+    <head>
+        <title>FixedHeaderTable Demo</title>
+        <link href="../css/defaultTheme.css" rel="stylesheet" media="screen" />
+        <link href="css/960.css" rel="stylesheet" media="screen" />
+        <link href="css/demo.css" rel="stylesheet" media="screen" />
+        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
+        <script src="../jquery.fixedheadertable.js"></script>
+        <script src="js/demo.js"></script>
+    </head>
+    <body>
+    	<div class="styles">
+    	
+    	</div>
+    	<div class="container_16 table_options">
+    		<div class="grid_3 prefix_1 alpha">
+    			<h2>Table Properties</h2>
+    			<fieldset>
+    				<label for="rows">rows</label>
+    				<input id="rows" type="text" value="" />
+    			</fieldset>
+    			<fieldset>
+    				<label for="columns">columns</label>
+    				<input id="columns" type="text" value="" />
+    			</fieldset>
+    		</div>
+    		
+    		<div class="grid_4">
+    			<h2>Table Appearance</h2>
+    			<fieldset>
+    				<label for="borderWidth">border-width</label>
+    				<input id="borderWidth" type="text" value="" placeholder="ex. 1px" />
+    			</fieldset>
+    			<fieldset>
+    				<label for="borderColor">border-color</label>
+    				<input id="borderColor" type="text" value="" placeholder="ex. #353535" />
+    			</fieldset>
+    		</div>
+    		
+    		<div class="grid_3">
+    			<h2>&nbsp;</h2>
+    			<fieldset>
+    				<label for="padding">padding</label>
+    				<input id="padding" type="text" value="" placeholder="ex. 5" />
+    			</fieldset>
+    		</div>
+    		
+    		<div class="grid_2 prefix_2 omega">
+    			<a id="buildTable" class="button" href="#">Build Table</a>
+    			<a id="runPlugin" class="button" href="#">Run Plugin</a>
+    		</div>
+    	</div>
+    
+    	<div class="container_12">
+    		<div id="tablePlaceholder" class="grid_12 alpha omega"></div>
+    	</div>
+    
+    </body>
+</html>

+ 13 - 0
VisualInspection/node_modules/fixed-header-table/demo/demo.js

@@ -0,0 +1,13 @@
+$(document).ready(function() {
+    $('#myTable01').fixedHeaderTable({ footer: true, cloneHeadToFoot: true, altClass: 'odd', autoShow: false });
+    
+    $('#myTable01').fixedHeaderTable('show', 1000);
+    
+    $('#myTable02').fixedHeaderTable({ footer: true, altClass: 'odd' });
+    
+    $('#myTable05').fixedHeaderTable({ altClass: 'odd', footer: true, fixedColumns: 1 });
+    
+    $('#myTable03').fixedHeaderTable({ altClass: 'odd', footer: true, fixedColumns: 1 });
+    
+    $('#myTable04').fixedHeaderTable({ altClass: 'odd', footer: true, cloneHeadToFoot: true, fixedColumns: 3 });
+});

BIN
VisualInspection/node_modules/fixed-header-table/demo/images/bg.png


+ 73 - 0
VisualInspection/node_modules/fixed-header-table/demo/js/demo.js

@@ -0,0 +1,73 @@
+$(document).ready(function() {
+	$('#buildTable').bind('click', function(e) {
+		e.preventDefault();
+		
+		$('#tablePlaceholder').empty()
+			.buildTable();
+	});
+	
+	$('#runPlugin').bind('click', function(e) {
+		e.preventDefault();
+		
+		$('#tablePlaceholder table').fixedHeaderTable({ height: '400', altClass: 'odd', themeClass: 'fancyDarkTable' });
+	});
+});
+
+$.fn.extend({
+	buildTable: function() {
+		var defaults = {
+			width: '100%',
+			height: 400,
+			rows: 100,
+			columns: 5,
+			borderWidth: 1,
+			borderColor: '#000000',
+			padding: 5
+		};
+		
+		var $self 		= $(this),
+			self  		= this,
+			rows  		= $('#rows').val(),
+			columns 	= $('#columns').val(),
+			borderWidth = $('#borderWidth').val(),
+			borderColor = $('#borderColor').val(),
+			padding 	= $('#padding').val(),
+			$thead,
+			$tbody,
+			$currentRow,
+			$styles,
+			options		= {};
+		
+		if ( padding != '' ) {
+			options.padding = padding;
+		}
+		
+		options = $.extend({}, defaults, options);
+			
+		$self.append('<table><thead></thead><tbody></tbody></table>');
+		
+		$thead = $self.find('thead');
+		$thead.append('<tr></tr>');
+		for ( var column = 1; column <= columns; column++ ) {
+			$thead.find('tr')
+				.append('<th>Column '+column+'</th>');
+		}
+		
+		$tbody = $self.find('tbody');
+		for ( var row = 1; row <= rows; row++ ) {
+			$currentRow = $('<tr></tr>').appendTo($tbody);
+			
+			for ( var column = 1; column <= columns; column++ ) {
+				$currentRow.append('<td>Column '+column+'</td>');
+			}
+		}
+		
+/*
+		var paddingStyle = "padding: " + options.padding + "px !important;";
+		
+		$styles = $('<style></style>').appendTo('.styles');
+		
+		$styles.html('th, td { '+paddingStyle+' }');
+*/
+	}
+});

+ 1287 - 0
VisualInspection/node_modules/fixed-header-table/demo/test.html

@@ -0,0 +1,1287 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+    <head>
+        <title>FixedHeaderTable Test</title>
+        <link href="css/960.css" rel="stylesheet" media="screen" />
+        <link href="../css/defaultTheme.css" rel="stylesheet" media="screen" />
+        <link href="css/myTheme.css" rel="stylesheet" media="screen" />
+        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
+
+        <script src="../jquery.fixedheadertable.js"></script>
+        <script src="demo.js"></script>
+    </head>
+    <body>
+    	<div class="container_12">
+    		<div class="grid_4">
+    			<pre>
+    				<code>
+$('#myTable01').fixedHeaderTable({ 
+	footer: true,
+	cloneHeadToFoot: true,
+	altClass: 'odd',
+	autoShow: false
+});
+    				</code>
+    			</pre>
+    		</div>
+    		<div class="grid_8 height250">
+    			<table class="fancyTable" id="myTable01" cellpadding="0" cellspacing="0">
+    			    <thead>
+    			        <tr>
+    			            <th>Browser</th>
+    			            <th>Visits</th>
+    			            <th>Pages/Visit</th>
+    			            <th>Avg. Time on Site</th>
+    			            <th>% New Visits</th>
+    			            <th>Bounce Rate</th>
+    			        </tr>
+    			    </thead>
+    			    <tbody>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			        <tr>
+    			            <td>Firefox</td>
+    			            <td>1,990</td>
+    			            <td>3.11</td>
+    			            <td>00:04:22</td>
+    			            <td>70.00%</td>
+    			            <td>32.61%</td>
+    			        </tr>
+    			    </tbody>
+    			</table>
+    		</div>
+    		<div class="clear"></div>
+    	</div>
+        
+        <div class="container_12 divider">
+        	<div class="grid_4">
+        		<pre>
+        		    				<code>
+$('#myTable02').fixedHeaderTable({
+	footer: true,
+	altClass: 'odd',
+});
+        		    				</code>
+        		    			</pre>
+        	</div>
+        	<div class="grid_8 height250">
+        		<table class="fancyTable" id="myTable02" cellpadding="0" cellspacing="0">
+        		    <thead>
+        		        <tr>
+        		            <th>Browser</th>
+        		            <th>Visits</th>
+        		            <th>Pages/Visit</th>
+        		            <th>Avg. Time on Site</th>
+        		            <th>% New Visits</th>
+        		            <th>Bounce Rate</th>
+        		        </tr>
+        		    </thead>
+        		    <tfoot>
+        		        <tr>
+        		            <td>This is a unique footer</td>
+        		            <td>1</td>
+        		            <td>2</td>
+        		            <td>3</td>
+        		            <td>4</td>
+        		            <td>5</td>
+        		        </tr>
+        		    </tfoot>
+        		    <tbody>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox Web Browser Version 4.0</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		    </tbody>
+        		</table>
+        	</div>
+        	<div class="clear"></div>
+        </div>
+        
+        <div class="container_12 divider">
+        	<div class="grid_4">
+        		<pre>
+        			<code>
+$('#myTable05').fixedHeaderTable({
+	altClass: 'odd',
+	footer: true,
+	fixedColumns: 1,
+});
+        			</code>
+        		</pre>
+        	</div>
+        	<div class="grid_4 height400">
+        		<table class="fancyTable" id="myTable05" cellpadding="0" cellspacing="0">
+        		    <thead>
+        		        <tr>
+        		            <th>Browser</th>
+        		            <th>Visits</th>
+        		            <th>Pages/Visit</th>
+        		            <th>Avg. Time on Site</th>
+        		            <th>% New Visits</th>
+        		            <th>Bounce Rate</th>
+        		            <th>Avg. Time on Site</th>
+        		            <th>% New Visits</th>
+        		            <th>Bounce Rate</th>
+        		        </tr>
+        		    </thead>
+        		    <tfoot>
+        		        <tr>
+        		            <th>Browser</th>
+        		            <th>Visits</th>
+        		            <th>Pages/Visit</th>
+        		            <th>Avg. Time on Site</th>
+        		            <th>% New Visits</th>
+        		            <th>Bounce Rate</th>
+        		            <th>Avg. Time on Site</th>
+        		            <th>% New Visits</th>
+        		            <th>Bounce Rate</th>
+        		        </tr>
+        		    </tfoot>
+        		    <tbody>
+        		        <tr>
+        		            <td>Firefox first</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22 test test test</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00% test test test</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		    </tbody>
+        		</table>
+        	</div>
+        	<div class="clear"></div>
+        </div>
+        
+        <div class="container_12 divider">
+        	<div class="grid_4">
+        		<pre>
+        			<code>
+$('#myTable03').fixedHeaderTable({
+	altClass: 'odd',
+	footer: true,
+	fixedColumns: 1,
+});
+        			</code>
+        		</pre>
+        	</div>
+        	<div class="grid_4 height400">
+        		<table class="fancyTable" id="myTable03" cellpadding="0" cellspacing="0">
+        		    <thead>
+        		        <tr>
+        		            <th>Browser</th>
+        		            <th>Visits</th>
+        		            <th>Pages/Visit</th>
+        		            <th>Avg. Time on Site</th>
+        		            <th>% New Visits</th>
+        		            <th>Bounce Rate</th>
+        		            <th>Avg. Time on Site</th>
+        		            <th>% New Visits</th>
+        		            <th>Bounce Rate</th>
+        		        </tr>
+        		    </thead>
+        		    <tfoot>
+        		        <tr>
+        		            <td colspan="9"><a class="button pagination" href="#">Prev</a><a class="button pagination" href="#">Next</a></td>
+        		        </tr>
+        		    </tfoot>
+        		    <tbody>
+        		        <tr>
+        		            <td>Firefox first</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22 test test test</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00% test test test</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		    </tbody>
+        		</table>
+        	</div>
+        	<div class="clear"></div>
+        </div>
+        
+		<div class="container_12 divider">
+        	<div class="grid_4">
+        		<pre>
+        			<code>
+$('#myTable04').fixedHeaderTable({
+	altClass: 'odd',
+	footer: true,
+	cloneHeadToFoot: true,
+	fixedColumn: 3,
+});
+        			</code>
+        		</pre>
+        	</div>
+        	<div class="grid_4 height400">
+        		<table class="fancyTable" id="myTable04" cellpadding="0" cellspacing="0">
+        		    <thead>
+        		        <tr>
+        		            <th>Browser</th>
+        		            <th>Visits</th>
+        		            <th>Pages/Visit</th>
+        		            <th>Avg. Time on Site</th>
+        		            <th>% New Visits</th>
+        		            <th>Bounce Rate</th>
+        		            <th>Avg. Time on Site</th>
+        		            <th>% New Visits</th>
+        		            <th>Bounce Rate</th>
+        		        </tr>
+        		    </thead>
+        		    <tbody>
+        		        <tr>
+        		            <td>Firefox first</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22 test test test</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00% test test test</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		        <tr>
+        		            <td>Firefox</td>
+        		            <td class="numeric">1,990</td>
+        		            <td class="numeric">3.11</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		            <td class="numeric">00:04:22</td>
+        		            <td class="numeric">70.00%</td>
+        		            <td class="numeric">32.61%</td>
+        		        </tr>
+        		    </tbody>
+        		</table>
+        	</div>
+        	<div class="clear"></div>
+        </div>
+    </body>
+</html>

+ 706 - 0
VisualInspection/node_modules/fixed-header-table/jquery.fixedheadertable.js

@@ -0,0 +1,706 @@
+/*!
+ * jquery.fixedHeaderTable. The jQuery fixedHeaderTable plugin
+ *
+ * Copyright (c) 2013 Mark Malek
+ * http://fixedheadertable.com
+ *
+ * Licensed under MIT
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * http://docs.jquery.com/Plugins/Authoring
+ * jQuery authoring guidelines
+ *
+ * Launch  : October 2009
+ * Version : 1.3
+ * Released: May 9th, 2011
+ *
+ *
+ * all CSS sizing (width,height) is done in pixels (px)
+ */
+
+(function ($) {
+
+  $.fn.fixedHeaderTable = function (method) {
+
+    // plugin's default options
+    var defaults = {
+      width:          '100%',
+      height:         '100%',
+      themeClass:     'fht-default',
+      borderCollapse:  true,
+      fixedColumns:    0, // fixed first columns
+      fixedColumn:     false, // For backward-compatibility
+      sortable:        false,
+      autoShow:        true, // hide table after its created
+      footer:          false, // show footer
+      cloneHeadToFoot: false, // clone head and use as footer
+      autoResize:      false, // resize table if its parent wrapper changes size
+      create:          null // callback after plugin completes
+    };
+
+    var settings = {};
+
+    // public methods
+    var methods = {
+      init: function (options) {
+        settings = $.extend({}, defaults, options);
+
+        // iterate through all the DOM elements we are attaching the plugin to
+        return this.each(function () {
+          var $self = $(this); // reference the jQuery version of the current DOM element
+
+          if (helpers._isTable($self)) {
+            methods.setup.apply(this, Array.prototype.slice.call(arguments, 1));
+            $.isFunction(settings.create) && settings.create.call(this);
+          } else {
+            $.error('Invalid table mark-up');
+          }
+        });
+      },
+
+      /*
+       * Setup table structure for fixed headers and optional footer
+       */
+      setup: function () {
+        var $self       = $(this),
+            self        = this,
+            $thead      = $self.find('thead'),
+            $tfoot      = $self.find('tfoot'),
+            tfootHeight = 0,
+            $wrapper,
+            $divHead,
+            $divBody,
+            $fixedBody,
+            widthMinusScrollbar;
+
+        settings.originalTable = $(this).clone();
+        settings.includePadding = helpers._isPaddingIncludedWithWidth();
+        settings.scrollbarOffset = helpers._getScrollbarWidth();
+        settings.themeClassName = settings.themeClass;
+
+        if (settings.width.search('%') > -1) {
+            widthMinusScrollbar = $self.parent().width() - settings.scrollbarOffset;
+        } else {
+            widthMinusScrollbar = settings.width - settings.scrollbarOffset;
+        }
+
+        $self.css({
+          width: widthMinusScrollbar
+        });
+
+
+        if (!$self.closest('.fht-table-wrapper').length) {
+          $self.addClass('fht-table');
+          $self.wrap('<div class="fht-table-wrapper"></div>');
+        }
+
+        $wrapper = $self.closest('.fht-table-wrapper');
+
+        if(settings.fixedColumn == true && settings.fixedColumns <= 0) {
+          settings.fixedColumns = 1;
+        }
+
+        if (settings.fixedColumns > 0 && $wrapper.find('.fht-fixed-column').length == 0) {
+          $self.wrap('<div class="fht-fixed-body"></div>');
+
+          $('<div class="fht-fixed-column"></div>').prependTo($wrapper);
+
+          $fixedBody    = $wrapper.find('.fht-fixed-body');
+        }
+
+        $wrapper.css({
+          width: settings.width,
+          height: settings.height
+        })
+          .addClass(settings.themeClassName);
+
+        if (!$self.hasClass('fht-table-init')) {
+          $self.wrap('<div class="fht-tbody"></div>');
+        }
+
+        $divBody = $self.closest('.fht-tbody');
+
+        var tableProps = helpers._getTableProps($self);
+
+        helpers._setupClone($divBody, tableProps.tbody);
+
+        if (!$self.hasClass('fht-table-init')) {
+          if (settings.fixedColumns > 0) {
+            $divHead = $('<div class="fht-thead"><table class="fht-table"></table></div>').prependTo($fixedBody);
+          } else {
+            $divHead = $('<div class="fht-thead"><table class="fht-table"></table></div>').prependTo($wrapper);
+          }
+
+          $divHead.find('table.fht-table')
+            .addClass(settings.originalTable.attr('class'))
+            .attr('style', settings.originalTable.attr('style'));
+
+          $thead.clone().appendTo($divHead.find('table'));
+        } else {
+          $divHead = $wrapper.find('div.fht-thead');
+        }
+
+        helpers._setupClone($divHead, tableProps.thead);
+
+        $self.css({
+          'margin-top': -$divHead.outerHeight(true)
+        });
+
+        /*
+         * Check for footer
+         * Setup footer if present
+         */
+        if (settings.footer == true) {
+          helpers._setupTableFooter($self, self, tableProps);
+
+          if (!$tfoot.length) {
+            $tfoot = $wrapper.find('div.fht-tfoot table');
+          }
+
+          tfootHeight = $tfoot.outerHeight(true);
+        }
+
+        var tbodyHeight = $wrapper.height() - $thead.outerHeight(true) - tfootHeight - tableProps.border;
+
+        $divBody.css({
+          'height': tbodyHeight
+        });
+
+        $self.addClass('fht-table-init');
+
+        if (typeof(settings.altClass) !== 'undefined') {
+          methods.altRows.apply(self);
+        }
+
+        if (settings.fixedColumns > 0) {
+          helpers._setupFixedColumn($self, self, tableProps);
+        }
+
+        if (!settings.autoShow) {
+          $wrapper.hide();
+        }
+
+        helpers._bindScroll($divBody, tableProps);
+
+        return self;
+      },
+
+      /*
+       * Resize the table
+       * Incomplete - not implemented yet
+       */
+      resize: function() {
+        var self  = this;
+        return self;
+      },
+
+      /*
+       * Add CSS class to alternating rows
+       */
+      altRows: function(arg1) {
+        var $self = $(this),
+        altClass  = (typeof(arg1) !== 'undefined') ? arg1 : settings.altClass;
+
+        $self.closest('.fht-table-wrapper')
+          .find('tbody tr:odd:not(:hidden)')
+          .addClass(altClass);
+      },
+
+      /*
+       * Show a hidden fixedHeaderTable table
+       */
+      show: function(arg1, arg2, arg3) {
+        var $self   = $(this),
+            self      = this,
+            $wrapper  = $self.closest('.fht-table-wrapper');
+
+        // User provided show duration without a specific effect
+        if (typeof(arg1) !== 'undefined' && typeof(arg1) === 'number') {
+          $wrapper.show(arg1, function() {
+            $.isFunction(arg2) && arg2.call(this);
+          });
+
+          return self;
+
+        } else if (typeof(arg1) !== 'undefined' && typeof(arg1) === 'string' &&
+          typeof(arg2) !== 'undefined' && typeof(arg2) === 'number') {
+          // User provided show duration with an effect
+
+          $wrapper.show(arg1, arg2, function() {
+            $.isFunction(arg3) && arg3.call(this);
+          });
+
+          return self;
+
+        }
+
+        $self.closest('.fht-table-wrapper')
+          .show();
+        $.isFunction(arg1) && arg1.call(this);
+
+        return self;
+      },
+
+      /*
+       * Hide a fixedHeaderTable table
+       */
+      hide: function(arg1, arg2, arg3) {
+        var $self     = $(this),
+            self    = this,
+            $wrapper  = $self.closest('.fht-table-wrapper');
+
+        // User provided show duration without a specific effect
+        if (typeof(arg1) !== 'undefined' && typeof(arg1) === 'number') {
+          $wrapper.hide(arg1, function() {
+            $.isFunction(arg3) && arg3.call(this);
+          });
+
+          return self;
+        } else if (typeof(arg1) !== 'undefined' && typeof(arg1) === 'string' &&
+          typeof(arg2) !== 'undefined' && typeof(arg2) === 'number') {
+
+          $wrapper.hide(arg1, arg2, function() {
+            $.isFunction(arg3) && arg3.call(this);
+          });
+
+          return self;
+        }
+
+        $self.closest('.fht-table-wrapper')
+          .hide();
+
+        $.isFunction(arg3) && arg3.call(this);
+
+
+
+        return self;
+      },
+
+      /*
+       * Destory fixedHeaderTable and return table to original state
+       */
+      destroy: function() {
+        var $self    = $(this),
+            self     = this,
+            $wrapper = $self.closest('.fht-table-wrapper');
+
+        $self.insertBefore($wrapper)
+          .removeAttr('style')
+          .append($wrapper.find('tfoot'))
+          .removeClass('fht-table fht-table-init')
+          .find('.fht-cell')
+          .remove();
+
+        $wrapper.remove();
+
+        return self;
+      }
+
+    };
+
+    // private methods
+    var helpers = {
+
+      /*
+       * return boolean
+       * True if a thead and tbody exist.
+       */
+      _isTable: function($obj) {
+        var $self = $obj,
+            hasTable = $self.is('table'),
+            hasThead = $self.find('thead').length > 0,
+            hasTbody = $self.find('tbody').length > 0;
+
+        if (hasTable && hasThead && hasTbody) {
+          return true;
+        }
+
+        return false;
+
+      },
+
+      /*
+       * return void
+       * bind scroll event
+       */
+      _bindScroll: function($obj) {
+        var $self = $obj,
+            $wrapper = $self.closest('.fht-table-wrapper'),
+            $thead = $self.siblings('.fht-thead'),
+            $tfoot = $self.siblings('.fht-tfoot');
+
+        $self.bind('scroll', function() {
+          if (settings.fixedColumns > 0) {
+            var $fixedColumns = $wrapper.find('.fht-fixed-column');
+
+            $fixedColumns.find('.fht-tbody table')
+              .css({
+                  'margin-top': -$self.scrollTop()
+              });
+          }
+
+          $thead.find('table')
+            .css({
+              'margin-left': -this.scrollLeft
+            });
+
+          if (settings.footer || settings.cloneHeadToFoot) {
+            $tfoot.find('table')
+              .css({
+                'margin-left': -this.scrollLeft
+              });
+          }
+        });
+      },
+
+      /*
+       * return void
+       */
+      _fixHeightWithCss: function ($obj, tableProps) {
+        if (settings.includePadding) {
+          $obj.css({
+            'height': $obj.height() + tableProps.border
+          });
+        } else {
+          $obj.css({
+            'height': $obj.parent().height() + tableProps.border
+          });
+        }
+      },
+
+      /*
+       * return void
+       */
+      _fixWidthWithCss: function($obj, tableProps, width) {
+        if (settings.includePadding) {
+          $obj.each(function() {
+            $(this).css({
+              'width': width == undefined ? $(this).width() + tableProps.border : width + tableProps.border
+            });
+          });
+        } else {
+          $obj.each(function() {
+            $(this).css({
+              'width': width == undefined ? $(this).parent().width() + tableProps.border : width + tableProps.border
+            });
+          });
+        }
+
+      },
+
+      /*
+       * return void
+       */
+      _setupFixedColumn: function ($obj, obj, tableProps) {
+        var $self             = $obj,
+            $wrapper          = $self.closest('.fht-table-wrapper'),
+            $fixedBody        = $wrapper.find('.fht-fixed-body'),
+            $fixedColumn      = $wrapper.find('.fht-fixed-column'),
+            $thead            = $('<div class="fht-thead"><table class="fht-table"><thead><tr></tr></thead></table></div>'),
+            $tbody            = $('<div class="fht-tbody"><table class="fht-table"><tbody></tbody></table></div>'),
+            $tfoot            = $('<div class="fht-tfoot"><table class="fht-table"><tfoot><tr></tr></tfoot></table></div>'),
+            fixedBodyWidth    = $wrapper.width(),
+            fixedBodyHeight   = $fixedBody.find('.fht-tbody').height() - settings.scrollbarOffset,
+            $firstThChildren,
+            $firstTdChildren,
+            fixedColumnWidth,
+            $newRow,
+            firstTdChildrenSelector;
+
+        $thead.find('table.fht-table').addClass(settings.originalTable.attr('class'));
+        $tbody.find('table.fht-table').addClass(settings.originalTable.attr('class'));
+        $tfoot.find('table.fht-table').addClass(settings.originalTable.attr('class'));
+
+        $firstThChildren = $fixedBody.find('.fht-thead thead tr > *:lt(' + settings.fixedColumns + ')');
+        fixedColumnWidth = settings.fixedColumns * tableProps.border;
+        $firstThChildren.each(function() {
+          fixedColumnWidth += $(this).outerWidth(true);
+        });
+
+        // Fix cell heights
+        helpers._fixHeightWithCss($firstThChildren, tableProps);
+        helpers._fixWidthWithCss($firstThChildren, tableProps);
+
+        var tdWidths = [];
+        $firstThChildren.each(function() {
+          tdWidths.push($(this).width());
+        });
+
+        firstTdChildrenSelector = 'tbody tr > *:not(:nth-child(n+' + (settings.fixedColumns + 1) + '))';
+        $firstTdChildren = $fixedBody.find(firstTdChildrenSelector)
+          .each(function(index) {
+            helpers._fixHeightWithCss($(this), tableProps);
+            helpers._fixWidthWithCss($(this), tableProps, tdWidths[index % settings.fixedColumns] );
+          });
+
+        // clone header
+        $thead.appendTo($fixedColumn)
+          .find('tr')
+          .append($firstThChildren.clone());
+
+        $tbody.appendTo($fixedColumn)
+          .css({
+            'margin-top': -1,
+            'height': fixedBodyHeight + tableProps.border
+          });
+
+        $firstTdChildren.each(function(index) {
+          if (index % settings.fixedColumns == 0) {
+            $newRow = $('<tr></tr>').appendTo($tbody.find('tbody'));
+
+            if (settings.altClass && $(this).parent().hasClass(settings.altClass)) {
+              $newRow.addClass(settings.altClass);
+            }
+          }
+
+          $(this).clone()
+            .appendTo($newRow);
+        });
+
+        // set width of fixed column wrapper
+        $fixedColumn.css({
+          'height': 0,
+          'width': fixedColumnWidth
+        });
+
+
+        // bind mousewheel events
+        var maxTop = $fixedColumn.find('.fht-tbody .fht-table').height() - $fixedColumn.find('.fht-tbody').height();
+        $fixedColumn.find('.fht-tbody .fht-table').bind('mousewheel', function(event, delta, deltaX, deltaY) {
+          if (deltaY == 0) {
+            return;
+          }
+          var top = parseInt($(this).css('marginTop'), 10) + (deltaY > 0 ? 120 : -120);
+          if (top > 0) {
+            top = 0;
+          }
+          if (top < -maxTop) {
+            top = -maxTop;
+          }
+          $(this).css('marginTop', top);
+          $fixedBody.find('.fht-tbody').scrollTop(-top).scroll();
+          return false;
+        });
+
+
+        // set width of body table wrapper
+        $fixedBody.css({
+          'width': fixedBodyWidth
+        });
+
+        // setup clone footer with fixed column
+        if (settings.footer == true || settings.cloneHeadToFoot == true) {
+          var $firstTdFootChild = $fixedBody.find('.fht-tfoot tr > *:lt(' + settings.fixedColumns + ')'),
+              footwidth;
+
+          helpers._fixHeightWithCss($firstTdFootChild, tableProps);
+          $tfoot.appendTo($fixedColumn)
+            .find('tr')
+            .append($firstTdFootChild.clone());
+          // Set (view width) of $tfoot div to width of table (this accounts for footers with a colspan)
+          footwidth = $tfoot.find('table').innerWidth();
+          $tfoot.css({
+            'top': settings.scrollbarOffset,
+            'width': footwidth
+          });
+        }
+      },
+
+      /*
+       * return void
+       */
+      _setupTableFooter: function ($obj, obj, tableProps) {
+        var $self     = $obj,
+            $wrapper  = $self.closest('.fht-table-wrapper'),
+            $tfoot    = $self.find('tfoot'),
+            $divFoot  = $wrapper.find('div.fht-tfoot');
+
+        if (!$divFoot.length) {
+          if (settings.fixedColumns > 0) {
+            $divFoot = $('<div class="fht-tfoot"><table class="fht-table"></table></div>').appendTo($wrapper.find('.fht-fixed-body'));
+          } else {
+            $divFoot = $('<div class="fht-tfoot"><table class="fht-table"></table></div>').appendTo($wrapper);
+          }
+        }
+        $divFoot.find('table.fht-table').addClass(settings.originalTable.attr('class'));
+
+        switch (true) {
+          case !$tfoot.length && settings.cloneHeadToFoot == true && settings.footer == true:
+
+            var $divHead = $wrapper.find('div.fht-thead');
+
+            $divFoot.empty();
+            $divHead.find('table')
+              .clone()
+              .appendTo($divFoot);
+
+            break;
+          case $tfoot.length && settings.cloneHeadToFoot == false && settings.footer == true:
+
+            $divFoot.find('table')
+              .append($tfoot)
+              .css({
+                'margin-top': -tableProps.border
+              });
+
+            helpers._setupClone($divFoot, tableProps.tfoot);
+
+            break;
+        }
+
+      },
+
+      /*
+       * return object
+       * Widths of each thead cell and tbody cell for the first rows.
+       * Used in fixing widths for the fixed header and optional footer.
+       */
+      _getTableProps: function($obj) {
+        var tableProp = {
+              thead: {},
+              tbody: {},
+              tfoot: {},
+              border: 0
+            },
+            borderCollapse = 1;
+
+        if (settings.borderCollapse == true) {
+          borderCollapse = 2;
+        }
+
+        tableProp.border = ($obj.find('th:first-child').outerWidth() - $obj.find('th:first-child').innerWidth()) / borderCollapse;
+
+        $obj.find('thead tr:first-child > *').each(function(index) {
+          tableProp.thead[index] = $(this).width() + tableProp.border;
+        });
+
+        $obj.find('tfoot tr:first-child > *').each(function(index) {
+          tableProp.tfoot[index] = $(this).width() + tableProp.border;
+        });
+
+        $obj.find('tbody tr:first-child > *').each(function(index) {
+          tableProp.tbody[index] = $(this).width() + tableProp.border;
+        });
+
+        return tableProp;
+      },
+
+      /*
+       * return void
+       * Fix widths of each cell in the first row of obj.
+       */
+      _setupClone: function($obj, cellArray) {
+        var $self    = $obj,
+            selector = ($self.find('thead').length) ?
+              'thead tr:first-child > *' :
+              ($self.find('tfoot').length) ?
+              'tfoot tr:first-child > *' :
+              'tbody tr:first-child > *',
+            $cell;
+
+        $self.find(selector).each(function(index) {
+          $cell = ($(this).find('div.fht-cell').length) ? $(this).find('div.fht-cell') : $('<div class="fht-cell"></div>').appendTo($(this));
+
+          $cell.css({
+            'width': parseInt(cellArray[index], 10)
+          });
+
+          /*
+           * Fixed Header and Footer should extend the full width
+           * to align with the scrollbar of the body
+           */
+          if (!$(this).closest('.fht-tbody').length && $(this).is(':last-child') && !$(this).closest('.fht-fixed-column').length) {
+            var padding = Math.max((($(this).innerWidth() - $(this).width()) / 2), settings.scrollbarOffset);
+            $(this).css({
+              'padding-right': parseInt($(this).css('padding-right')) + padding + 'px'
+            });
+          }
+        });
+      },
+
+      /*
+       * return boolean
+       * Determine how the browser calculates fixed widths with padding for tables
+       * true if width = padding + width
+       * false if width = width
+       */
+      _isPaddingIncludedWithWidth: function() {
+        var $obj = $('<table class="fht-table"><tr><td style="padding: 10px; font-size: 10px;">test</td></tr></table>'),
+            defaultHeight,
+            newHeight;
+
+        $obj.addClass(settings.originalTable.attr('class'));
+        $obj.appendTo('body');
+
+        defaultHeight = $obj.find('td').height();
+
+        $obj.find('td')
+          .css('height', $obj.find('tr').height());
+
+        newHeight = $obj.find('td').height();
+        $obj.remove();
+
+        if (defaultHeight != newHeight) {
+          return true;
+        } else {
+          return false;
+        }
+
+      },
+
+      /*
+       * return int
+       * get the width of the browsers scroll bar
+       */
+      _getScrollbarWidth: function() {
+        var scrollbarWidth = 0;
+
+        if (!scrollbarWidth) {
+          if (/msie/.test(navigator.userAgent.toLowerCase())) {
+            var $textarea1 = $('<textarea cols="10" rows="2"></textarea>')
+                  .css({ position: 'absolute', top: -1000, left: -1000 }).appendTo('body'),
+                $textarea2 = $('<textarea cols="10" rows="2" style="overflow: hidden;"></textarea>')
+                  .css({ position: 'absolute', top: -1000, left: -1000 }).appendTo('body');
+
+            scrollbarWidth = $textarea1.width() - $textarea2.width() + 2; // + 2 for border offset
+            $textarea1.add($textarea2).remove();
+          } else {
+            var $div = $('<div />')
+                  .css({ width: 100, height: 100, overflow: 'auto', position: 'absolute', top: -1000, left: -1000 })
+                  .prependTo('body').append('<div />').find('div')
+                  .css({ width: '100%', height: 200 });
+
+            scrollbarWidth = 100 - $div.width();
+            $div.parent().remove();
+          }
+        }
+
+        return scrollbarWidth;
+      }
+
+    };
+
+
+    // if a method as the given argument exists
+    if (methods[method]) {
+
+      // call the respective method
+      return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
+
+      // if an object is given as method OR nothing is given as argument
+    } else if (typeof method === 'object' || !method) {
+
+      // call the initialization method
+      return methods.init.apply(this, arguments);
+
+      // otherwise
+    } else {
+
+      // trigger an error
+      $.error('Method "' +  method + '" does not exist in fixedHeaderTable plugin!');
+
+    }
+
+  };
+
+})(jQuery);

Разница между файлами не показана из-за своего большого размера
+ 18 - 0
VisualInspection/node_modules/fixed-header-table/jquery.fixedheadertable.min.js


+ 92 - 0
VisualInspection/node_modules/fixed-header-table/lib/jquery.mousewheel.js

@@ -0,0 +1,92 @@
+/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
+ * Licensed under the MIT License (LICENSE.txt).
+ *
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
+ * Thanks to: Seamus Leahy for adding deltaX and deltaY
+ *
+ * Version: 3.0.4
+ * 
+ * Requires: 1.2.2+
+ */
+
+(function($) {
+
+var types = ['DOMMouseScroll', 'mousewheel'];
+
+$.event.special.mousewheel = {
+    setup: function() {
+        if ( this.addEventListener ) {
+            for ( var i=types.length; i; ) {
+                this.addEventListener( types[--i], handler, false );
+            }
+        } else {
+            this.onmousewheel = handler;
+        }
+    },
+    
+    teardown: function() {
+        if ( this.removeEventListener ) {
+            for ( var i=types.length; i; ) {
+                this.removeEventListener( types[--i], handler, false );
+            }
+        } else {
+            this.onmousewheel = null;
+        }
+    }
+};
+
+$.fn.extend({
+    mousewheel: function(fn) {
+        return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
+    },
+    
+    unmousewheel: function(fn) {
+        return this.unbind("mousewheel", fn);
+    }
+});
+
+
+function handler(event) {
+    var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
+    event = $.event.fix(orgEvent);
+    event.type = "mousewheel";
+    
+    // Old school scrollwheel delta
+    if ( event.wheelDelta ) { delta = event.wheelDelta/120; }
+    if ( event.detail     ) { delta = -event.detail/3; }
+    
+    // New school multidimensional scroll (touchpads) deltas
+    deltaY = delta;
+    
+    // Gecko
+    if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
+        deltaY = 0;
+        deltaX = -1*delta;
+    }
+    
+
+    // Webkit    
+    var userAgent = navigator.userAgent.toLowerCase();
+    
+    var wheelDeltaScaleFactor = 1;
+    if (jQuery.browser.msie || (jQuery.browser.webkit && !(/chrome/.test(userAgent)))) {
+      wheelDeltaScaleFactor = 40;
+    }
+
+    if (orgEvent.wheelDeltaY !== undefined) { 
+        deltaY = orgEvent.wheelDeltaY / 120 / wheelDeltaScaleFactor;
+    }
+    if (orgEvent.wheelDeltaX !== undefined) {
+        deltaX = -1*orgEvent.wheelDeltaX / 120 / wheelDeltaScaleFactor;
+    }
+    
+    // Add event and delta to the front of the arguments
+    args.unshift(event, delta, deltaX, deltaY);
+    
+    if ($.event.handle) {
+        return $.event.handle.apply(this, args);
+    }
+}
+
+})(jQuery);

+ 48 - 0
VisualInspection/node_modules/fixed-header-table/package.json

@@ -0,0 +1,48 @@
+{
+  "_from": "fixed-header-table",
+  "_id": "fixed-header-table@1.3.0",
+  "_inBundle": false,
+  "_integrity": "sha1-YmqUZWrQGAo0d4PsizqLk0QOG+E=",
+  "_location": "/fixed-header-table",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "tag",
+    "registry": true,
+    "raw": "fixed-header-table",
+    "name": "fixed-header-table",
+    "escapedName": "fixed-header-table",
+    "rawSpec": "",
+    "saveSpec": null,
+    "fetchSpec": "latest"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "http://registry.npm.taobao.org/fixed-header-table/download/fixed-header-table-1.3.0.tgz",
+  "_shasum": "626a94656ad0180a347783ec8b3a8b93440e1be1",
+  "_spec": "fixed-header-table",
+  "_where": "/Users/wenhongquan/VisualInspection/VisualInspection",
+  "author": {
+    "name": "Mark Malek",
+    "email": "mark@mmalek.com"
+  },
+  "bugs": {
+    "url": "https://github.com/markmalek/Fixed-Header-Table/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "jQuery plugin for tables with fixed headers",
+  "homepage": "https://github.com/markmalek/Fixed-Header-Table",
+  "license": "MIT",
+  "main": "jquery.fixedheadertable.js",
+  "name": "fixed-header-table",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/markmalek/Fixed-Header-Table.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "1.3.0"
+}

+ 252 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/controller/gettway/CheckApplyController_Q.java

@@ -0,0 +1,252 @@
+package com.xintong.visualinspection.controller.gettway;
+
+import com.alibaba.dubbo.config.annotation.Reference;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.xintong.system.err.BusinessException;
+import com.xintong.visualinspection.bean.*;
+import com.xintong.visualinspection.controller.BaseController;
+import com.xintong.visualinspection.service.*;
+import com.xintong.visualinspection.util.AuthorUtil;
+import com.xintong.visualinspection.util.CacheUtil;
+import com.xintong.visualinspection.util.CodeUtil;
+import com.xintong.visualinspection.util.Constants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 文件名:CheckItemController
+ * 版本信息:日期:2017/3/30 Copyright 江苏省交通规划设计院 Corporation 2017 版权所有.
+ */
+@RestController
+@RequestMapping("/q/checkApply")
+public class CheckApplyController_Q extends BaseController {
+
+
+    @Reference(version = "1.0.0",
+            application = "${dubbo.application.id}",
+            registry = "${dubbo.registry.address}")
+    private CheckApplyService_Q checkApplyService;
+
+    @Reference(version = "1.0.0",
+            application = "${dubbo.application.id}",
+            registry = "${dubbo.registry.address}")
+    private TaskService_Q taskService;
+
+    /**
+     * 添加考核项
+     * @return
+     * String
+     * @exception
+     * @since  1.0.0
+     */
+    @RequestMapping(value = "/add")
+    public String add(HttpServletRequest request,@Valid @RequestBody CheckApply_F checkAppeal){
+
+        CheckApply_F ca = checkApplyService.getByTaskId(checkAppeal.getTask_id());
+        if(ca!=null) {
+            throw new BusinessException(21201);
+        }
+
+        User u = getCurrentUser(request);
+        checkAppeal.setApply_man(new Long(u.getId()));
+        checkAppeal.setCheck_status(Constants.STATUS_APPLYING);
+        if(u.getOrganid()!=null) {
+            checkAppeal.setApply_dept(new Long(u.getOrganid()));
+        }
+        checkApplyService.insert(checkAppeal);
+        QzdCheckTask task = new QzdCheckTask();
+        task.setId( checkAppeal.getTask_id().intValue());
+        task = taskService.getTask(task);
+        task.setCheck_status(checkAppeal.getCheck_status());
+        task.setUpdate_user(new Long(u.getId()));
+        if(checkAppeal.isIsappeal()){
+            task.setInvalidFrom(1);
+        }
+        taskService.updateStatus(task);
+        return super.returnSuccessResult("添加成功");
+    }
+
+    /**
+     * 修改考核项
+     * @return
+     * String
+     * @exception
+     * @since  1.0.0
+     */
+    @RequestMapping(value = "/update")
+    public String update(@Valid @RequestBody CheckApply_F checkAppeal){
+        checkApplyService.update(checkAppeal);
+        return super.returnSuccessResult("修改成功");
+    }
+
+    /**
+     * 同意无效任务
+     * @return
+     * String
+     * @exception
+     * @since  1.0.0
+     */
+    @RequestMapping(value = "/agree")
+    public String agree(HttpServletRequest request,@Valid @RequestBody CheckApply_F checkAppeal){
+        if(checkAppeal.getId()==null) {
+            throw new BusinessException(20001);
+        }
+        User user = getCurrentUser(request);
+        checkAppeal.setVerify_person(new Long(user.getId()));
+        int check_status = Constants.STATUS_APPLY_SUCCEED;
+        checkAppeal.setCheck_status(check_status);
+        checkApplyService.update(checkAppeal);
+        QzdCheckTask task = new QzdCheckTask();
+        task.setId(checkAppeal.getTask_id().intValue());
+        task.setCheck_status(check_status);
+        task.setUpdate_user(new Long(user.getId()));
+        taskService.updateStatus(task);
+
+        return super.returnSuccessResult("同意成功");
+    }
+
+    /**
+     * 批量同意无效任务
+     * @return
+     * String
+     * @exception
+     * @since  1.0.0
+     */
+    @RequestMapping(value = "/agreePatch")
+    public String agreePatch(HttpServletRequest request,@Valid @RequestBody CheckApply_F checkAppeal){
+        if(checkAppeal.getApply_ids()==null) {
+            throw new BusinessException(20001);
+        }
+        User user = getCurrentUser(request);
+        List<CheckApply_F> checkApplyList = checkApplyService.getList(checkAppeal);
+        for(CheckApply_F ca :checkApplyList) {
+            ca.setVerify_person(new Long(user.getId()));
+            int check_status = Constants.STATUS_APPLY_SUCCEED;
+            ca.setCheck_status(check_status);
+            checkApplyService.update(ca);
+            //更新任务
+            QzdCheckTask task = new QzdCheckTask();
+            task.setId(ca.getTask_id().intValue());
+            task.setCheck_status(check_status);
+            task.setUpdate_user(new Long(user.getId()));
+            taskService.updateStatus(task);
+
+        }
+        return super.returnSuccessResult("同意成功");
+    }
+
+    /**
+     *拒绝无效任务
+     * @return
+     * String
+     * @exception
+     * @since  1.0.0
+     */
+    @RequestMapping(value = "/refuse")
+    public String refuse(HttpServletRequest request,@Valid @RequestBody CheckApply_F checkAppeal){
+        if(checkAppeal.getId()==null) {
+            throw new BusinessException(20001);
+        }
+        User user = getCurrentUser(request);
+//    	checkAppeal.setVerify_person(new Long(user.getId()));
+//    	int check_status = Constants.STATUS_APPLY_FAILED;
+//    	checkAppeal.setCheck_status(check_status);
+//    	checkApplyService.update(checkAppeal);
+        checkApplyService.delete(checkAppeal.getId());
+        QzdCheckTask task = new QzdCheckTask();
+        task.setId(checkAppeal.getTask_id().intValue());
+        QzdCheckTask temp = taskService.getTask(task);
+        if(temp.getInvalidFrom()!=null && temp.getInvalidFrom().equals(1)){
+            //申诉任务  则退回申诉待稽查中
+            task.setCheck_status(Constants.STATUS_APPEAL_SUCCEED);
+        }else{
+            task.setCheck_status(Constants.STATUS_CHECK_SUBMIT);
+        }
+        //无效任务拒绝后,任务该外待稽查状态
+
+        task.setUpdate_user(new Long(user.getId()));
+        taskService.updateStatus(task);
+        return super.returnSuccessResult("拒绝成功");
+    }
+
+    /**
+     * 删除考核项
+     * @return
+     * String
+     * @exception
+     * @since  1.0.0
+     */
+    @RequestMapping(value = "/delete")
+    public String delete(@RequestBody CheckApply checkAppeal){
+        checkApplyService.delete(checkAppeal.getId());
+        return super.returnSuccessResult("删除成功");
+    }
+
+    /**
+     * 根据id获取考核项数据
+     * @param checkItem
+     * @return
+     */
+    @RequestMapping(value = "/getById")
+    public String getById(@RequestBody CheckApply_F checkAppeal){
+        if(checkAppeal.getId()==null){
+            throw new BusinessException(20001);
+        }
+        CheckApply_F checkItemOne =  checkApplyService.getById(checkAppeal.getId()) ;
+        return super.returnSuccessResult(checkItemOne);
+    }
+
+    /**
+     * 根据任务id获取无效任务申请数据
+     * @param checkItem
+     * @return
+     */
+    @RequestMapping(value = "/getByTaskId")
+    public String getByTaskId(@RequestBody CheckApply_F checkAppeal){
+        if(checkAppeal.getId()==null){
+            throw new BusinessException(20101);
+        }
+        CheckApply_F checkItemOne =  checkApplyService.getByTaskId(checkAppeal.getId()) ;
+        checkItemOne.setApply_man_name(CacheUtil.getUserTurenameFromMap(checkItemOne.getApply_man()));
+        return super.returnSuccessResult(checkItemOne);
+    }
+
+    @RequestMapping(value = "/getList/{page}/{size}")
+    public String getList(HttpServletRequest request,@RequestBody CheckApply_F param ,@PathVariable Integer page,@PathVariable Integer size){
+        final Page<Object> objects = PageHelper.startPage(page, size);
+        User user = getCurrentUser(request);
+        if(AuthorUtil.hasRole(user, Constants.ROLE_JICHA)){
+            param.setApply_man(new Long(user.getId()));
+        }
+        List<CheckApply_F> checkAppeal =  checkApplyService.getList(param) ;
+        return super.returnSuccessResult(new PageInfo(checkAppeal));
+    }
+
+    /**
+     * 获取无效任务原因排名前10
+     * @param checkItem
+     * @return
+     */
+    @RequestMapping(value = "/getTopReason")
+    public String getTopReason(){
+        Map<String,Object> param = new HashMap<String,Object>();
+        // 获取原因显示条数
+        int showNum = 10;
+        Constant t =  CodeUtil.getCodeByFlagAndValue("top_show_num", "1");
+        if(t!=null) showNum = Integer.parseInt(t.getCode_name());
+        param.put("num", showNum);
+        List<CheckApply_F> checkApplyList =  checkApplyService.getTopReasonList(param);
+        return super.returnSuccessResult(checkApplyList);
+    }
+}

+ 18 - 0
VisualInspection_server/src/main/resources/application.properties.rej

@@ -0,0 +1,18 @@
+diff a/VisualInspection_server/src/main/resources/application.properties b/VisualInspection_server/src/main/resources/application.properties	(rejected hunks)
+@@ -57,12 +57,12 @@
+ spring.redis.database=0  
+ # Redis\u670D\u52A1\u5668\u5730\u5740
+ #spring.redis.host=10.112.0.199
+-#spring.redis.host=xt.wenhq.top
+-spring.redis.host=192.168.45.158
++spring.redis.host=xt.wenhq.top
++#spring.redis.host=192.168.45.158
+ # Redis\u670D\u52A1\u5668\u8FDE\u63A5\u7AEF\u53E3
+-spring.redis.port=6379
++#spring.redis.port=6379
+ 
+-#spring.redis.port=8284
++spring.redis.port=8284
+ #spring.redis.port=9004
+ #spring.redis.port=7003
+ # Redis\u670D\u52A1\u5668\u8FDE\u63A5\u5BC6\u7801\uFF08\u9ED8\u8BA4\u4E3A\u7A7A\uFF09

+ 9 - 0
Visuallnspection_fjq/.idea/Visuallnspection_fjq.iml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 6 - 0
Visuallnspection_fjq/.idea/misc.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+</project>

+ 8 - 0
Visuallnspection_fjq/.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/Visuallnspection_fjq.iml" filepath="$PROJECT_DIR$/.idea/Visuallnspection_fjq.iml" />
+    </modules>
+  </component>
+</project>

+ 185 - 0
Visuallnspection_fjq/.idea/workspace.xml

@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" id="6cc7f39b-8876-42cf-a522-524c2f9e0914" name="Default" comment="" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsGulpfileManager">
+    <detection-done>true</detection-done>
+    <sorting>DEFINITION_ORDER</sorting>
+  </component>
+  <component name="NodePackageJsonFileManager">
+    <packageJsonPaths />
+  </component>
+  <component name="ProjectFrameBounds" extendedState="6">
+    <option name="x" value="80" />
+    <option name="y" value="170" />
+    <option name="width" value="1095" />
+    <option name="height" value="585" />
+  </component>
+  <component name="ProjectView">
+    <navigator proportions="" version="1">
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="AndroidView" />
+      <pane id="PackagesPane" />
+      <pane id="ProjectPane">
+        <subPane>
+          <expand>
+            <path>
+              <item name="Visuallnspection_fjq" type="b2602c69:ProjectViewProjectNode" />
+              <item name="Visuallnspection_fjq" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="Visuallnspection_fjq" type="b2602c69:ProjectViewProjectNode" />
+              <item name="Visuallnspection_fjq" type="462c0819:PsiDirectoryNode" />
+              <item name="visuallnspection_fjq" type="462c0819:PsiDirectoryNode" />
+            </path>
+          </expand>
+          <select />
+        </subPane>
+      </pane>
+      <pane id="Scope" />
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="aspect.path.notification.shown" value="true" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/visuallnspection_fjq" />
+    <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
+    <property name="nodejs_npm_path_reset_for_default_project" value="true" />
+  </component>
+  <component name="RunDashboard">
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
+    </option>
+  </component>
+  <component name="RunManager">
+    <configuration default="true" type="Application" factoryName="Application">
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+    </configuration>
+    <configuration default="true" type="JUnit" factoryName="JUnit">
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="TEST_OBJECT" value="class" />
+      <option name="VM_PARAMETERS" value="-ea" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <patterns />
+    </configuration>
+    <configuration default="true" type="TestNG" factoryName="TestNG">
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="SUITE_NAME" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="GROUP_NAME" />
+      <option name="TEST_OBJECT" value="CLASS" />
+      <option name="VM_PARAMETERS" value="-ea" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
+      <option name="OUTPUT_DIRECTORY" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <option name="USE_DEFAULT_REPORTERS" value="false" />
+      <option name="PROPERTIES_FILE" />
+      <properties />
+      <listeners />
+    </configuration>
+  </component>
+  <component name="SvnConfiguration">
+    <configuration />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="6cc7f39b-8876-42cf-a522-524c2f9e0914" name="Default" comment="" />
+      <created>1533785796330</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1533785796330</updated>
+      <workItem from="1533785798416" duration="20000" />
+    </task>
+    <servers />
+  </component>
+  <component name="TimeTrackingManager">
+    <option name="totallyTimeSpent" value="20000" />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="-7" y="-7" width="1550" height="838" extended-state="6" />
+    <layout>
+      <window_info anchor="right" id="Palette" />
+      <window_info anchor="bottom" id="TODO" order="6" />
+      <window_info anchor="right" id="Palette&#9;" />
+      <window_info id="Image Layers" />
+      <window_info anchor="right" id="Capture Analysis" />
+      <window_info anchor="bottom" id="Event Log" side_tool="true" />
+      <window_info anchor="right" id="Maven Projects" />
+      <window_info anchor="bottom" id="Database Changes" show_stripe_button="false" />
+      <window_info anchor="bottom" id="Run" order="2" />
+      <window_info anchor="bottom" id="Version Control" show_stripe_button="false" />
+      <window_info anchor="bottom" id="Terminal" />
+      <window_info id="Capture Tool" />
+      <window_info id="Designer" />
+      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.13997395" />
+      <window_info anchor="right" id="Database" />
+      <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
+      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
+      <window_info id="UI Designer" />
+      <window_info anchor="right" id="Theme Preview" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
+      <window_info id="Favorites" side_tool="true" />
+      <window_info anchor="bottom" id="Find" order="1" />
+      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
+      <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
+      <window_info anchor="bottom" id="Message" order="0" />
+      <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
+    </layout>
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="1" />
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="masterDetails">
+    <states>
+      <state key="ProjectJDKs.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+    </states>
+  </component>
+</project>

+ 26 - 0
Visuallnspection_fjq/visuallnspectioninteface/src/main/java/com/xintong/visualinspection/service/CheckAppealService_Q.java

@@ -0,0 +1,26 @@
+package com.xintong.visualinspection.service;
+
+import com.xintong.visualinspection.bean.CheckAppeal_F;
+
+import java.util.List;
+
+/**
+ *
+ *
+ * ConstantService
+ *
+ * tiger
+ * tiger
+ * 2017年5月4日 上午10:41:40
+ *
+ * @version 1.0.0
+ *
+ */
+public interface CheckAppealService_Q {
+    public List<CheckAppeal_F> getList(CheckAppeal_F param);
+    public CheckAppeal_F getById(Long id);
+    public CheckAppeal_F getByTaskId(Long id);
+    public void insert(CheckAppeal_F checkAppeal);
+    public void update(CheckAppeal_F checkAppeal);
+    public void delete(Long id);
+}

+ 28 - 0
Visuallnspection_fjq/visuallnspectioninteface/src/main/java/com/xintong/visualinspection/service/CheckApplyService_Q.java

@@ -0,0 +1,28 @@
+package com.xintong.visualinspection.service;
+
+import com.xintong.visualinspection.bean.CheckApply_F;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ *
+ * ConstantService
+ *
+ * tiger
+ * tiger
+ * 2017年5月4日 上午10:41:40
+ *
+ * @version 1.0.0
+ *
+ */
+public interface CheckApplyService_Q {
+    public List<CheckApply_F> getList(CheckApply_F param);
+    public CheckApply_F getById(Long id);
+    public CheckApply_F getByTaskId(Long id);
+    public void insert(CheckApply_F checkApply);
+    public void update(CheckApply_F checkApply);
+    public void delete(Long id);
+    public List<CheckApply_F> getTopReasonList(Map<String, Object> param);
+}

Некоторые файлы не были показаны из-за большого количества измененных файлов