Final grid refactor for all templates and CSS/JS (newgrid -> grid)
This commit is contained in:
		
							parent
							
								
									c57e2e17cc
								
							
						
					
					
						commit
						292546e44b
					
				
					 26 changed files with 329 additions and 687 deletions
				
			
		|  | @ -1,179 +1,278 @@ | ||||||
| 
 | 
 | ||||||
|  | /******************************************************************************** | ||||||
|  |  * grids.css | ||||||
|  |  * | ||||||
|  |  * Style tweaks for the new grids. | ||||||
|  |  ********************************************************************************/ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| /****************************** | /****************************** | ||||||
|  * Grid Header |  * header table | ||||||
|  ******************************/ |  ******************************/ | ||||||
| 
 | 
 | ||||||
| table.grid-header { | .grid-wrapper .grid-header td.filters { | ||||||
|     padding-bottom: 5px; |     vertical-align: bottom; | ||||||
|     width: 100%; |     width: 100%; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | .grid-wrapper .grid-header td.menu { | ||||||
|  |     padding: 0.5em; | ||||||
|  |     vertical-align: top; | ||||||
|  |     white-space: nowrap; | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| /****************************** | .grid-wrapper .grid-header td.tools { | ||||||
|  * Form (Filters etc.) |     margin: 0; | ||||||
|  ******************************/ |     padding: 0; | ||||||
| 
 |  | ||||||
| table.grid-header td.form { |  | ||||||
|     vertical-align: bottom; |     vertical-align: bottom; | ||||||
|  |     white-space: nowrap; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid-wrapper .grid-header td.tools p { | ||||||
|  |     line-height: 2em; | ||||||
|  |     margin: 0; | ||||||
|  |     padding: 0 0.5em 0 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid-wrapper .grid-header td.tools form { | ||||||
|  |     display: inline-block; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /****************************** | /****************************** | ||||||
|  * Context Menu |  * filters | ||||||
|  ******************************/ |  ******************************/ | ||||||
| 
 | 
 | ||||||
| table.grid-header td.context-menu { | .grid-wrapper .newfilters { | ||||||
|  |     margin: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid-wrapper .newfilters fieldset { | ||||||
|  |     margin: 0; | ||||||
|  |     padding: 1px 5px 5px 5px; | ||||||
|  |     width: 80%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid-wrapper .newfilters .filter { | ||||||
|  |     margin-bottom: 2px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid-wrapper .newfilters .filter:last-child { | ||||||
|  |     margin-bottom: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid-wrapper .newfilters .filter .toggle { | ||||||
|  |     margin: 0; | ||||||
|  |     text-align: left; | ||||||
|  |     width: 15em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid-wrapper .newfilters .ui-button-text { | ||||||
|  |     line-height: 1.4em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid-wrapper .ui-button-text-icon-primary .ui-button-text { | ||||||
|  |     padding: 0.2em 1em 0.2em 2.1em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid-wrapper .ui-selectmenu-button .ui-selectmenu-text { | ||||||
|  |     padding: 0.2em 2.1em 0.2em 1em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid-wrapper .newfilters .filter label { | ||||||
|  |     font-weight: bold; | ||||||
|  |     padding: 0.4em 0.2em; | ||||||
|  |     position: relative; | ||||||
|  |     top: -14px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid-wrapper .newfilters .filter .value { | ||||||
|  |     display: inline-block; | ||||||
|     vertical-align: top; |     vertical-align: top; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| table.grid-header td.context-menu ul { | .grid-wrapper .newfilters .filter .value input { | ||||||
|     list-style-type: none; |     height: 19px; | ||||||
|     margin: 0px; |  | ||||||
|     text-align: right; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| table.grid-header td.context-menu ul li { | .grid-wrapper .newfilters .filter .inputs { | ||||||
|     line-height: 2em; |     display: inline-block; | ||||||
|  |     /* TODO: Would be nice not to hard-code a height here... */ | ||||||
|  |     height: 26px; | ||||||
|  |     vertical-align: top; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /****************************** | .grid-wrapper .newfilters .buttons { | ||||||
|  * Tools |     margin: 0.5em 0 0 0; | ||||||
|  ******************************/ |     padding: 0; | ||||||
| 
 |  | ||||||
| table.grid-header td.tools { |  | ||||||
|     padding-bottom: 10px; |  | ||||||
|     text-align: right; |  | ||||||
|     vertical-align: bottom; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| table.grid-header td.tools div.buttons button { | .grid-wrapper .newfilters #add-filter-button { | ||||||
|     margin-left: 5px; |     margin-right: 5px; | ||||||
|  |     vertical-align: middle; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /****************************** | /****************************** | ||||||
|  * Grid |  * table | ||||||
|  ******************************/ |  ******************************/ | ||||||
| 
 | 
 | ||||||
| div.grid { | .grid { | ||||||
|     clear: both; |     clear: both; | ||||||
|  |     margin-top: 1em; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table { | .grid.no-border { | ||||||
|     background-color: White; |     margin-top: 0; | ||||||
|     border-top: 1px solid black; | } | ||||||
|     border-left: 1px solid black; | 
 | ||||||
|  | .grid table { | ||||||
|  |     background-color: white; | ||||||
|  |     border: 1px solid black; | ||||||
|     border-collapse: collapse; |     border-collapse: collapse; | ||||||
|     font-size: 9pt; |     font-size: 10pt; | ||||||
|     line-height: normal; |     line-height: normal; | ||||||
|     white-space: nowrap; |     white-space: nowrap; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid.full table { | .grid.full table { | ||||||
|     width: 100%; |     width: 100%; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid.no-border table { | .grid.half table { | ||||||
|  |     width: 50%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid.no-border table { | ||||||
|     border-left: none; |     border-left: none; | ||||||
|     border-top: none; |     border-top: none; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table th, | 
 | ||||||
| div.grid table td { | /****************************** | ||||||
|  |  * thead | ||||||
|  |  ******************************/ | ||||||
|  | 
 | ||||||
|  | .grid tr.header td { | ||||||
|     border-right: 1px solid black; |     border-right: 1px solid black; | ||||||
|     border-bottom: 1px solid black; |     border-bottom: 1px solid black; | ||||||
|  |     font-weight: bold; | ||||||
|     padding: 2px 3px; |     padding: 2px 3px; | ||||||
|  |     text-align: center; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table th.sortable a { | /* .grid table thead th:last-child { */ | ||||||
|  | /*     border-right: none; */ | ||||||
|  | /* } */ | ||||||
|  | 
 | ||||||
|  | .grid tr.header a { | ||||||
|     display: block; |     display: block; | ||||||
|     padding-right: 18px; |     padding-right: 18px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table th.sorted { | .grid tr.header .asc, | ||||||
|  | .grid tr.header .dsc { | ||||||
|     background-position: right center; |     background-position: right center; | ||||||
|     background-repeat: no-repeat; |     background-repeat: no-repeat; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table th.sorted.asc { | .grid tr.header .asc { | ||||||
|     background-image: url(../img/sort_arrow_up.png); |     background-image: url(../img/sort_arrow_up.png); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table th.sorted.desc { | .grid tr.header .dsc { | ||||||
|     background-image: url(../img/sort_arrow_down.png); |     background-image: url(../img/sort_arrow_down.png); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table tbody td { | 
 | ||||||
|     text-align: left; | /****************************** | ||||||
|  |  * tbody | ||||||
|  |  ******************************/ | ||||||
|  | 
 | ||||||
|  | .grid tbody td { | ||||||
|  |     padding: 5px 6px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table tbody td.center { | .grid.selectable tbody td { | ||||||
|     text-align: center; |     cursor: default; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table tbody td.right { | .grid tr.odd { | ||||||
|     float: none; |  | ||||||
|     text-align: right; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| div.grid table tr.odd { |  | ||||||
|     background-color: #e0e0e0; |     background-color: #e0e0e0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table tbody tr.hovering { | .grid tr:not(.header).hovering { | ||||||
|     background-color: #bbbbbb; |     background-color: #bbbbbb; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table tbody tr td.checkbox { | .grid tr:not(.header).warning.odd { | ||||||
|  |     background-color: #fcc; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid tr:not(.header).warning.even { | ||||||
|  |     background-color: #ebb; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid tr:not(.header).warning.hovering { | ||||||
|  |     background-color: #daa; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid tr:not(.header).notice.odd { | ||||||
|  |     background-color: #fe8; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid tr:not(.header).notice.even { | ||||||
|  |     background-color: #fd6; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid tr:not(.header).notice.hovering { | ||||||
|  |     background-color: #ec7; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .grid tr:not(.header) td.checkbox { | ||||||
|     text-align: center; |     text-align: center; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table tbody tr td.view, | 
 | ||||||
| div.grid table tbody tr td.edit, | /****************************** | ||||||
| div.grid table tbody tr td.save, |  * main actions | ||||||
| div.grid table tbody tr td.delete { |  ******************************/ | ||||||
|     background-repeat: no-repeat; | 
 | ||||||
|     background-position: center; | .grid .actions { | ||||||
|     cursor: pointer; |     width: 1px; | ||||||
|     min-width: 18px; |  | ||||||
|     text-align: center; |  | ||||||
|     width: 18px; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table tbody tr td.view { | .grid .actions a { | ||||||
|     background-image: url(../img/view.png); |     margin: 0 5px 0 0; | ||||||
|  |     position: relative; | ||||||
|  |     top: -2px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table tbody tr td.edit { | .grid .actions a:last-child { | ||||||
|     background-image: url(../img/edit.png); |     margin: 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table tbody tr td.save { | .grid .actions .ui-icon { | ||||||
|     background-image: url(../img/save.png); |     display: inline-block; | ||||||
|  |     position: relative; | ||||||
|  |     top: 3px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.grid table tbody tr td.delete { | 
 | ||||||
|     background-image: url(../img/delete.png); | /****************************** | ||||||
|  |  * more actions | ||||||
|  |  ******************************/ | ||||||
|  | 
 | ||||||
|  | .grid .actions div.more { | ||||||
|  |     background-color: white; | ||||||
|  |     border: 1px solid black; | ||||||
|  |     display: none; | ||||||
|  |     padding: 3px 10px 3px 5px; | ||||||
|  |     position: absolute; | ||||||
|  |     z-index: 1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| div.pager { | .grid .actions .more a { | ||||||
|     margin-bottom: 20px; |     display: block; | ||||||
|     margin-top: 5px; |     padding: 2px 0; | ||||||
| } |  | ||||||
| 
 |  | ||||||
| div.pager p { |  | ||||||
|     font-size: 10pt; |  | ||||||
|     margin: 0px; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| div.pager p.showing { |  | ||||||
|     float: left; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| div.pager #grid-page-count { |  | ||||||
|     font-size: 8pt; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| div.pager p.page-links { |  | ||||||
|     float: right; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,75 +0,0 @@ | ||||||
| 
 |  | ||||||
| /******************************************************************************** |  | ||||||
|  * grids3.css |  | ||||||
|  * |  | ||||||
|  * Style tweaks for the new grids. |  | ||||||
|  ********************************************************************************/ |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /****************************** |  | ||||||
|  * thead |  | ||||||
|  ******************************/ |  | ||||||
| 
 |  | ||||||
| .grid3 tr.header td { |  | ||||||
|     border-right: 1px solid black; |  | ||||||
|     border-bottom: 1px solid black; |  | ||||||
|     font-weight: bold; |  | ||||||
|     padding: 2px 3px; |  | ||||||
|     text-align: center; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .grid3 tr.header a { |  | ||||||
|     display: block; |  | ||||||
|     padding-right: 18px; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .grid3 tr.header .asc, |  | ||||||
| .grid3 tr.header .dsc { |  | ||||||
|     background-position: right center; |  | ||||||
|     background-repeat: no-repeat; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .grid3 tr.header .asc { |  | ||||||
|     background-image: url(../img/sort_arrow_up.png); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .grid3 tr.header .dsc { |  | ||||||
|     background-image: url(../img/sort_arrow_down.png); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /****************************** |  | ||||||
|  * tbody |  | ||||||
|  ******************************/ |  | ||||||
| 
 |  | ||||||
| .grid3 tr.odd { |  | ||||||
|     background-color: #e0e0e0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid.grid3 tr:not(.header).hovering { |  | ||||||
|     background-color: #bbbbbb; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid.grid3 tr:not(.header).warning.odd { |  | ||||||
|     background-color: #fcc; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid.grid3 tr:not(.header).warning.even { |  | ||||||
|     background-color: #ebb; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid.grid3 tr:not(.header).warning.hovering { |  | ||||||
|     background-color: #daa; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid.grid3 tr:not(.header).notice.odd { |  | ||||||
|     background-color: #fe8; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid.grid3 tr:not(.header).notice.even { |  | ||||||
|     background-color: #fd6; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid.grid3 tr:not(.header).notice.hovering { |  | ||||||
|     background-color: #ec7; |  | ||||||
| } |  | ||||||
|  | @ -1,275 +0,0 @@ | ||||||
| 
 |  | ||||||
| /******************************************************************************** |  | ||||||
|  * newgrids.css |  | ||||||
|  * |  | ||||||
|  * Style tweaks for the new grids. |  | ||||||
|  ********************************************************************************/ |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /****************************** |  | ||||||
|  * header table |  | ||||||
|  ******************************/ |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .grid-header td.filters { |  | ||||||
|     vertical-align: bottom; |  | ||||||
|     width: 100%; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .grid-header td.menu { |  | ||||||
|     padding: 0.5em; |  | ||||||
|     vertical-align: top; |  | ||||||
|     white-space: nowrap; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .grid-header td.tools { |  | ||||||
|     margin: 0; |  | ||||||
|     padding: 0; |  | ||||||
|     vertical-align: bottom; |  | ||||||
|     white-space: nowrap; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .grid-header td.tools p { |  | ||||||
|     line-height: 2em; |  | ||||||
|     margin: 0; |  | ||||||
|     padding: 0 0.5em 0 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .grid-header td.tools form { |  | ||||||
|     display: inline-block; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /****************************** |  | ||||||
|  * filters |  | ||||||
|  ******************************/ |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .newfilters { |  | ||||||
|     margin: 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .newfilters fieldset { |  | ||||||
|     margin: 0; |  | ||||||
|     padding: 1px 5px 5px 5px; |  | ||||||
|     width: 80%; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .newfilters .filter { |  | ||||||
|     margin-bottom: 2px; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .newfilters .filter:last-child { |  | ||||||
|     margin-bottom: 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .newfilters .filter .toggle { |  | ||||||
|     margin: 0; |  | ||||||
|     text-align: left; |  | ||||||
|     width: 15em; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .newfilters .ui-button-text { |  | ||||||
|     line-height: 1.4em; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .ui-button-text-icon-primary .ui-button-text { |  | ||||||
|     padding: 0.2em 1em 0.2em 2.1em; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .ui-selectmenu-button .ui-selectmenu-text { |  | ||||||
|     padding: 0.2em 2.1em 0.2em 1em; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .newfilters .filter label { |  | ||||||
|     font-weight: bold; |  | ||||||
|     padding: 0.4em 0.2em; |  | ||||||
|     position: relative; |  | ||||||
|     top: -14px; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .newfilters .filter .value { |  | ||||||
|     display: inline-block; |  | ||||||
|     vertical-align: top; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .newfilters .filter .value input { |  | ||||||
|     height: 19px; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .newfilters .filter .inputs { |  | ||||||
|     display: inline-block; |  | ||||||
|     /* TODO: Would be nice not to hard-code a height here... */ |  | ||||||
|     height: 26px; |  | ||||||
|     vertical-align: top; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .newfilters .buttons { |  | ||||||
|     margin: 0.5em 0 0 0; |  | ||||||
|     padding: 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid-wrapper .newfilters #add-filter-button { |  | ||||||
|     margin-right: 5px; |  | ||||||
|     vertical-align: middle; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /****************************** |  | ||||||
|  * table |  | ||||||
|  ******************************/ |  | ||||||
| 
 |  | ||||||
| .newgrid { |  | ||||||
|     clear: both; |  | ||||||
|     margin-top: 1em; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid.no-border { |  | ||||||
|     margin-top: 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid table { |  | ||||||
|     background-color: white; |  | ||||||
|     border: 1px solid black; |  | ||||||
|     border-collapse: collapse; |  | ||||||
|     font-size: 10pt; |  | ||||||
|     line-height: normal; |  | ||||||
|     white-space: nowrap; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid.full table { |  | ||||||
|     width: 100%; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid.half table { |  | ||||||
|     width: 50%; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid.no-border table { |  | ||||||
|     border-left: none; |  | ||||||
|     border-top: none; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /****************************** |  | ||||||
|  * thead |  | ||||||
|  ******************************/ |  | ||||||
| 
 |  | ||||||
| .newgrid table thead th { |  | ||||||
|     border-right: 1px solid black; |  | ||||||
|     border-bottom: 1px solid black; |  | ||||||
|     padding: 2px 3px; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid table thead th:last-child { |  | ||||||
|     border-right: none; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid table thead th.sortable a { |  | ||||||
|     display: block; |  | ||||||
|     padding-right: 18px; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid table thead th.sorted { |  | ||||||
|     background-position: right center; |  | ||||||
|     background-repeat: no-repeat; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid table thead th.sorted.asc { |  | ||||||
|     background-image: url(../img/sort_arrow_up.png); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid table thead th.sorted.desc { |  | ||||||
|     background-image: url(../img/sort_arrow_down.png); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /****************************** |  | ||||||
|  * tbody |  | ||||||
|  ******************************/ |  | ||||||
| 
 |  | ||||||
| .newgrid tbody td { |  | ||||||
|     padding: 5px 6px; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid.selectable tbody td { |  | ||||||
|     cursor: default; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /* .newgrid tbody tr:nth-child(odd) { */ |  | ||||||
| /*     background-color: #e0e0e0; */ |  | ||||||
| /* } */ |  | ||||||
| 
 |  | ||||||
| /* .newgrid tbody tr.hovering { */ |  | ||||||
| /*     background-color: #bbbbbb; */ |  | ||||||
| /* } */ |  | ||||||
| 
 |  | ||||||
| /* .newgrid tbody tr.notice { */ |  | ||||||
| /*     background-color: #fd6; */ |  | ||||||
| /* } */ |  | ||||||
| 
 |  | ||||||
| /* .newgrid tbody tr.notice:nth-child(odd) { */ |  | ||||||
| /*     background-color: #fe8; */ |  | ||||||
| /* } */ |  | ||||||
| 
 |  | ||||||
| /* .newgrid tbody tr.notice.hovering { */ |  | ||||||
| /*     background-color: #ec7; */ |  | ||||||
| /* } */ |  | ||||||
| 
 |  | ||||||
| /* .newgrid tbody tr.warning { */ |  | ||||||
| /*     background-color: #fcc; */ |  | ||||||
| /* } */ |  | ||||||
| 
 |  | ||||||
| /* .newgrid tbody tr.warning:nth-child(odd) { */ |  | ||||||
| /*     background-color: #ebb; */ |  | ||||||
| /* } */ |  | ||||||
| 
 |  | ||||||
| /* .newgrid tbody tr.warning.hovering { */ |  | ||||||
| /*     background-color: #daa; */ |  | ||||||
| /* } */ |  | ||||||
| 
 |  | ||||||
| .newgrid tbody td.checkbox { |  | ||||||
|     text-align: center; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /****************************** |  | ||||||
|  * main actions |  | ||||||
|  ******************************/ |  | ||||||
| 
 |  | ||||||
| .newgrid .actions { |  | ||||||
|     width: 1px; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid .actions a { |  | ||||||
|     margin: 0 5px 0 0; |  | ||||||
|     position: relative; |  | ||||||
|     top: -2px; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid .actions a:last-child { |  | ||||||
|     margin: 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid .actions .ui-icon { |  | ||||||
|     display: inline-block; |  | ||||||
|     position: relative; |  | ||||||
|     top: 3px; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /****************************** |  | ||||||
|  * more actions |  | ||||||
|  ******************************/ |  | ||||||
| 
 |  | ||||||
| .newgrid .actions div.more { |  | ||||||
|     background-color: white; |  | ||||||
|     border: 1px solid black; |  | ||||||
|     display: none; |  | ||||||
|     padding: 3px 10px 3px 5px; |  | ||||||
|     position: absolute; |  | ||||||
|     z-index: 1; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .newgrid .actions .more a { |  | ||||||
|     display: block; |  | ||||||
|     padding: 2px 0; |  | ||||||
| } |  | ||||||
|  | @ -25,7 +25,7 @@ a { | ||||||
|     padding-left: 5em; |     padding-left: 5em; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .newgrid-wrapper .grid-header #context-menu { | .grid-wrapper .grid-header #context-menu { | ||||||
|     float: none; |     float: none; | ||||||
|     margin: 0; |     margin: 0; | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										49
									
								
								tailbone/static/js/jquery.ui.tailbone.js
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										49
									
								
								tailbone/static/js/jquery.ui.tailbone.js
									
										
									
									
										vendored
									
									
								
							|  | @ -23,7 +23,7 @@ | ||||||
|             this.default_filters = this.filters.find('#default-filters'); |             this.default_filters = this.filters.find('#default-filters'); | ||||||
|             this.clear_filters = this.filters.find('#clear-filters'); |             this.clear_filters = this.filters.find('#clear-filters'); | ||||||
|             this.save_defaults = this.filters.find('#save-defaults'); |             this.save_defaults = this.filters.find('#save-defaults'); | ||||||
|             this.grid = this.element.find('.newgrid'); |             this.grid = this.element.find('.grid'); | ||||||
| 
 | 
 | ||||||
|             // Enhance filters etc.
 |             // Enhance filters etc.
 | ||||||
|             this.filters.find('.filter').gridfilter(); |             this.filters.find('.filter').gridfilter(); | ||||||
|  | @ -117,7 +117,6 @@ | ||||||
|             }); |             }); | ||||||
| 
 | 
 | ||||||
|             // Refresh data when user clicks a sortable column header.
 |             // Refresh data when user clicks a sortable column header.
 | ||||||
|             if (this.grid.hasClass('grid3')) { |  | ||||||
|             this.element.on('click', 'tr.header a', function() { |             this.element.on('click', 'tr.header a', function() { | ||||||
|                 var td = $(this).parent(); |                 var td = $(this).parent(); | ||||||
|                 var data = { |                 var data = { | ||||||
|  | @ -129,19 +128,6 @@ | ||||||
|                 that.refresh(data); |                 that.refresh(data); | ||||||
|                 return false; |                 return false; | ||||||
|             }); |             }); | ||||||
|             } else { |  | ||||||
|                 this.element.on('click', 'thead th.sortable a', function() { |  | ||||||
|                     var th = $(this).parent(); |  | ||||||
|                     var data = { |  | ||||||
|                         sortkey: th.data('sortkey'), |  | ||||||
|                         sortdir: (th.hasClass('sorted') && th.hasClass('asc')) ? 'desc' : 'asc', |  | ||||||
|                         page: 1, |  | ||||||
|                         partial: true |  | ||||||
|                     }; |  | ||||||
|                     that.refresh(data); |  | ||||||
|                     return false; |  | ||||||
|                 }); |  | ||||||
|             } |  | ||||||
| 
 | 
 | ||||||
|             // Refresh data when user chooses a new page size setting.
 |             // Refresh data when user chooses a new page size setting.
 | ||||||
|             this.element.on('change', '.pager #pagesize', function() { |             this.element.on('change', '.pager #pagesize', function() { | ||||||
|  | @ -167,7 +153,6 @@ | ||||||
|             }); |             }); | ||||||
| 
 | 
 | ||||||
|             // do some extra stuff for grids with checkboxes
 |             // do some extra stuff for grids with checkboxes
 | ||||||
|             if (this.grid.hasClass('grid3')) { |  | ||||||
| 
 | 
 | ||||||
|             // (un-)check all rows when clicking check-all box in header
 |             // (un-)check all rows when clicking check-all box in header
 | ||||||
|             if (this.grid.find('tr.header td.checkbox input').length) { |             if (this.grid.find('tr.header td.checkbox input').length) { | ||||||
|  | @ -181,38 +166,16 @@ | ||||||
|             // Select current row when clicked, unless clicking checkbox
 |             // Select current row when clicked, unless clicking checkbox
 | ||||||
|             // (since that already does select the row) or a link (since
 |             // (since that already does select the row) or a link (since
 | ||||||
|             // that does something completely different).
 |             // that does something completely different).
 | ||||||
|                 this.element.on('click', '.newgrid tr:not(.header) td.checkbox input', function(event) { |             this.element.on('click', '.grid tr:not(.header) td.checkbox input', function(event) { | ||||||
|                 event.stopPropagation(); |                 event.stopPropagation(); | ||||||
|             }); |             }); | ||||||
|                 this.element.on('click', '.newgrid tr:not(.header) a', function(event) { |             this.element.on('click', '.grid tr:not(.header) a', function(event) { | ||||||
|                 event.stopPropagation(); |                 event.stopPropagation(); | ||||||
|             }); |             }); | ||||||
|                 this.element.on('click', '.newgrid tr:not(.header)', function() { |             this.element.on('click', '.grid tr:not(.header)', function() { | ||||||
|                 $(this).find('td.checkbox input').click(); |                 $(this).find('td.checkbox input').click(); | ||||||
|             }); |             }); | ||||||
| 
 | 
 | ||||||
|             } else if (this.grid.hasClass('selectable')) { // pre-v3 newgrid.selectable
 |  | ||||||
| 
 |  | ||||||
|                 // (Un-)Check all rows when clicking check-all box in header.
 |  | ||||||
|                 this.element.on('click', 'thead th.checkbox input', function() { |  | ||||||
|                     var checked = $(this).prop('checked'); |  | ||||||
|                     that.grid.find('tbody td.checkbox input').prop('checked', checked); |  | ||||||
|                 }); |  | ||||||
| 
 |  | ||||||
|                 // Select current row when clicked, unless clicking checkbox
 |  | ||||||
|                 // (since that already does select the row) or a link (since
 |  | ||||||
|                 // that does something completely different).
 |  | ||||||
|                 this.element.on('click', 'tbody td.checkbox input', function(event) { |  | ||||||
|                     event.stopPropagation(); |  | ||||||
|                 }); |  | ||||||
|                 this.element.on('click', 'tbody a', function(event) { |  | ||||||
|                     event.stopPropagation(); |  | ||||||
|                 }); |  | ||||||
|                 this.element.on('click', 'tbody tr', function() { |  | ||||||
|                     $(this).find('td.checkbox input').click(); |  | ||||||
|                 }); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             // Show 'more' actions when user hovers over 'more' link.
 |             // Show 'more' actions when user hovers over 'more' link.
 | ||||||
|             this.element.on('mouseenter', '.actions a.more', function() { |             this.element.on('mouseenter', '.actions a.more', function() { | ||||||
|                 that.grid.find('.actions div.more').hide(); |                 that.grid.find('.actions div.more').hide(); | ||||||
|  | @ -238,7 +201,7 @@ | ||||||
|             this.element.mask("Refreshing data..."); |             this.element.mask("Refreshing data..."); | ||||||
|             $.get(this.grid.data('url'), settings, function(data) { |             $.get(this.grid.data('url'), settings, function(data) { | ||||||
|                 that.grid.replaceWith(data); |                 that.grid.replaceWith(data); | ||||||
|                 that.grid = that.element.find('.newgrid'); |                 that.grid = that.element.find('.grid'); | ||||||
|                 that.element.unmask(); |                 that.element.unmask(); | ||||||
|             }); |             }); | ||||||
|         } |         } | ||||||
|  | @ -264,7 +227,7 @@ | ||||||
|             this.checkbox = this.element.find('input[name$="-active"]'); |             this.checkbox = this.element.find('input[name$="-active"]'); | ||||||
|             this.label = this.element.find('label'); |             this.label = this.element.find('label'); | ||||||
|             this.inputs = this.element.find('.inputs'); |             this.inputs = this.element.find('.inputs'); | ||||||
|             this.add_filter = this.element.parents('.newgrid-wrapper').find('#add-filter'); |             this.add_filter = this.element.parents('.grid-wrapper').find('#add-filter'); | ||||||
| 
 | 
 | ||||||
|             // Hide the checkbox and label, and add button for toggling active status.
 |             // Hide the checkbox and label, and add button for toggling active status.
 | ||||||
|             this.checkbox.addClass('ui-helper-hidden-accessible'); |             this.checkbox.addClass('ui-helper-hidden-accessible'); | ||||||
|  |  | ||||||
|  | @ -10,7 +10,7 @@ | ||||||
| 
 | 
 | ||||||
| $(function() { | $(function() { | ||||||
|      |      | ||||||
|     $('.newgrid-wrapper').gridwrapper(); |     $('.grid-wrapper').gridwrapper(); | ||||||
| 
 | 
 | ||||||
|     $('#execute-batch').click(function() { |     $('#execute-batch').click(function() { | ||||||
|         if (has_execution_options) { |         if (has_execution_options) { | ||||||
|  |  | ||||||
|  | @ -149,8 +149,6 @@ | ||||||
|   ${h.stylesheet_link(request.static_url('tailbone:static/css/grids.css'))} |   ${h.stylesheet_link(request.static_url('tailbone:static/css/grids.css'))} | ||||||
|   ${h.stylesheet_link(request.static_url('tailbone:static/css/filters.css'))} |   ${h.stylesheet_link(request.static_url('tailbone:static/css/filters.css'))} | ||||||
|   ${h.stylesheet_link(request.static_url('tailbone:static/css/forms.css'))} |   ${h.stylesheet_link(request.static_url('tailbone:static/css/forms.css'))} | ||||||
|   ${h.stylesheet_link(request.static_url('tailbone:static/css/newgrids.css'))} |  | ||||||
|   ${h.stylesheet_link(request.static_url('tailbone:static/css/grids3.css'))} |  | ||||||
| </%def> | </%def> | ||||||
| 
 | 
 | ||||||
| <%def name="jquery_smoothness_theme()"> | <%def name="jquery_smoothness_theme()"> | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| ## -*- coding: utf-8 -*- | ## -*- coding: utf-8 -*- | ||||||
| <div class="newgrid-wrapper"> | <div class="grid-wrapper"> | ||||||
| 
 | 
 | ||||||
|   <table class="grid-header"> |   <table class="grid-header"> | ||||||
|     <tbody> |     <tbody> | ||||||
|  | @ -35,4 +35,4 @@ | ||||||
| 
 | 
 | ||||||
|   ${grid.render_grid()|n} |   ${grid.render_grid()|n} | ||||||
| 
 | 
 | ||||||
| </div><!-- newgrid-wrapper --> | </div><!-- grid-wrapper --> | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| ## -*- coding: utf-8; -*- | ## -*- coding: utf-8; -*- | ||||||
| <div class="newgrid grid3 ${grid_class}"> | <div class="grid ${grid_class}"> | ||||||
|   <table> |   <table> | ||||||
|     ${grid.make_webhelpers_grid()} |     ${grid.make_webhelpers_grid()} | ||||||
|   </table> |   </table> | ||||||
|  |  | ||||||
|  | @ -1,91 +0,0 @@ | ||||||
| ## -*- coding: utf-8 -*- |  | ||||||
| ## ############################################################################## |  | ||||||
| ##  |  | ||||||
| ## Default master 'index' template.  Features a prominent data table and |  | ||||||
| ## exposes a way to filter and sort the data, etc.  Some index pages also |  | ||||||
| ## include a "tools" section, just above the grid on the right. |  | ||||||
| ##  |  | ||||||
| ## ############################################################################## |  | ||||||
| <%inherit file="/base.mako" /> |  | ||||||
| 
 |  | ||||||
| <%def name="title()">${grid.model_title_plural}</%def> |  | ||||||
| 
 |  | ||||||
| <%def name="head_tags()"> |  | ||||||
|   ${parent.head_tags()} |  | ||||||
|   ${h.javascript_link(request.static_url('tailbone:static/js/jquery.ui.tailbone.js'))} |  | ||||||
|   <script type="text/javascript"> |  | ||||||
|     $(function() { |  | ||||||
| 
 |  | ||||||
|         $('.newgrid-wrapper').gridwrapper(); |  | ||||||
| 
 |  | ||||||
|         % if master.mergeable and request.has_perm('{}.merge'.format(permission_prefix)): |  | ||||||
| 
 |  | ||||||
|             $('form[name="merge-things"] button').button('option', 'disabled', $('.newgrid tbody td.checkbox input:checked').length != 2); |  | ||||||
| 
 |  | ||||||
|             $('.newgrid-wrapper').on('click', 'tbody td.checkbox input', function() { |  | ||||||
|                 $('form[name="merge-things"] button').button('option', 'disabled', $('.newgrid tbody td.checkbox input:checked').length != 2); |  | ||||||
|             }); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|             $('form[name="merge-things"]').submit(function() { |  | ||||||
|                 var uuids = []; |  | ||||||
|                 $('.newgrid tbody td.checkbox input:checked').each(function() { |  | ||||||
|                     uuids.push($(this).parents('tr:first').data('uuid')); |  | ||||||
|                 }); |  | ||||||
|                 if (uuids.length != 2) { |  | ||||||
|                     return false; |  | ||||||
|                 } |  | ||||||
|                 $(this).find('[name="uuids"]').val(uuids.toString()); |  | ||||||
|                 $(this).find('button') |  | ||||||
|                     .button('option', 'label', "Preparing to Merge...") |  | ||||||
|                     .button('disable'); |  | ||||||
|             }); |  | ||||||
| 
 |  | ||||||
|         % endif |  | ||||||
| 
 |  | ||||||
|         % if master.bulk_deletable and request.has_perm('{}.bulk_delete'.format(permission_prefix)): |  | ||||||
| 
 |  | ||||||
|         $('form[name="bulk-delete"] button').click(function() { |  | ||||||
|             var count = 0; |  | ||||||
|             var match = /showing \d+ thru \d+ of (\S+)/.exec($('.pager .showing').text()); |  | ||||||
|             if (match) { |  | ||||||
|                 count = match[1]; |  | ||||||
|             } else { |  | ||||||
|                 alert("There don't seem to be any results to delete!"); |  | ||||||
|                 return; |  | ||||||
|             } |  | ||||||
|             if (! confirm("You are about to delete " + count + " ${model_title_plural}.\n\nAre you sure?")) { |  | ||||||
|                 return |  | ||||||
|             } |  | ||||||
|             $(this).button('disable').button('option', 'label', "Deleting Results..."); |  | ||||||
|             $('form[name="bulk-delete"]').submit(); |  | ||||||
|         }); |  | ||||||
| 
 |  | ||||||
|         % endif |  | ||||||
|     }); |  | ||||||
|   </script> |  | ||||||
| </%def> |  | ||||||
| 
 |  | ||||||
| <%def name="context_menu_items()"> |  | ||||||
|   % if master.creatable and request.has_perm('{}.create'.format(grid.permission_prefix)): |  | ||||||
|       <li>${h.link_to("Create a new {}".format(grid.model_title), url('{}.create'.format(grid.route_prefix)))}</li> |  | ||||||
|   % endif |  | ||||||
| </%def> |  | ||||||
| 
 |  | ||||||
| <%def name="grid_tools()"> |  | ||||||
|   % if master.mergeable and request.has_perm('{}.merge'.format(permission_prefix)): |  | ||||||
|       ${h.form(url('{}.merge'.format(route_prefix)), name='merge-things')} |  | ||||||
|       ${h.csrf_token(request)} |  | ||||||
|       ${h.hidden('uuids')} |  | ||||||
|       <button type="submit">Merge 2 ${model_title_plural}</button> |  | ||||||
|       ${h.end_form()} |  | ||||||
|   % endif |  | ||||||
|   % if master.bulk_deletable and request.has_perm('{}.bulk_delete'.format(permission_prefix)): |  | ||||||
|       ${h.form(url('{}.bulk_delete'.format(route_prefix)), name='bulk-delete')} |  | ||||||
|       ${h.csrf_token(request)} |  | ||||||
|       <button type="button">Delete Results</button> |  | ||||||
|       ${h.end_form()} |  | ||||||
|   % endif |  | ||||||
| </%def> |  | ||||||
| 
 |  | ||||||
| ${grid.render_complete(tools=capture(self.grid_tools).strip(), context_menu=capture(self.context_menu_items).strip())|n} |  | ||||||
|  | @ -13,7 +13,7 @@ | ||||||
|   ${h.javascript_link(request.static_url('tailbone:static/js/jquery.ui.tailbone.js'))} |   ${h.javascript_link(request.static_url('tailbone:static/js/jquery.ui.tailbone.js'))} | ||||||
|   <script type="text/javascript"> |   <script type="text/javascript"> | ||||||
|     $(function() { |     $(function() { | ||||||
|         $('.newgrid-wrapper').gridwrapper(); |         $('.grid-wrapper').gridwrapper(); | ||||||
|     }); |     }); | ||||||
|   </script> |   </script> | ||||||
| </%def> | </%def> | ||||||
|  |  | ||||||
|  | @ -9,11 +9,11 @@ | ||||||
|       ${h.javascript_link(request.static_url('tailbone:static/js/jquery.ui.tailbone.js'))} |       ${h.javascript_link(request.static_url('tailbone:static/js/jquery.ui.tailbone.js'))} | ||||||
|       <script type="text/javascript"> |       <script type="text/javascript"> | ||||||
|         $(function() { |         $(function() { | ||||||
|             $('.newgrid-wrapper').gridwrapper(); |             $('.grid-wrapper').gridwrapper(); | ||||||
|         }); |         }); | ||||||
|       </script> |       </script> | ||||||
|       <style type="text/css"> |       <style type="text/css"> | ||||||
|         .newgrid-wrapper { |         .grid-wrapper { | ||||||
|             margin-top: 10px; |             margin-top: 10px; | ||||||
|         } |         } | ||||||
|       </style> |       </style> | ||||||
|  |  | ||||||
|  | @ -6,19 +6,91 @@ | ||||||
| ## include a "tools" section, just above the grid on the right. | ## include a "tools" section, just above the grid on the right. | ||||||
| ##  | ##  | ||||||
| ## ############################################################################## | ## ############################################################################## | ||||||
| <%inherit file="/master/index.mako" /> | <%inherit file="/base.mako" /> | ||||||
| 
 | 
 | ||||||
| <%def name="title()">${model_title_plural}</%def> | <%def name="title()">${model_title_plural}</%def> | ||||||
| 
 | 
 | ||||||
|  | <%def name="extra_javascript()"> | ||||||
|  |   ${parent.extra_javascript()} | ||||||
|  |   ${h.javascript_link(request.static_url('tailbone:static/js/jquery.ui.tailbone.js'))} | ||||||
|  |   <script type="text/javascript"> | ||||||
|  |     $(function() { | ||||||
|  | 
 | ||||||
|  |         $('.grid-wrapper').gridwrapper(); | ||||||
|  | 
 | ||||||
|  |         % if master.mergeable and request.has_perm('{}.merge'.format(permission_prefix)): | ||||||
|  | 
 | ||||||
|  |             $('form[name="merge-things"] button').button('option', 'disabled', $('.grid tbody td.checkbox input:checked').length != 2); | ||||||
|  | 
 | ||||||
|  |             $('.grid-wrapper').on('click', 'tbody td.checkbox input', function() { | ||||||
|  |                 $('form[name="merge-things"] button').button('option', 'disabled', $('.grid tbody td.checkbox input:checked').length != 2); | ||||||
|  |             }); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |             $('form[name="merge-things"]').submit(function() { | ||||||
|  |                 var uuids = []; | ||||||
|  |                 $('.grid tbody td.checkbox input:checked').each(function() { | ||||||
|  |                     uuids.push($(this).parents('tr:first').data('uuid')); | ||||||
|  |                 }); | ||||||
|  |                 if (uuids.length != 2) { | ||||||
|  |                     return false; | ||||||
|  |                 } | ||||||
|  |                 $(this).find('[name="uuids"]').val(uuids.toString()); | ||||||
|  |                 $(this).find('button') | ||||||
|  |                     .button('option', 'label', "Preparing to Merge...") | ||||||
|  |                     .button('disable'); | ||||||
|  |             }); | ||||||
|  | 
 | ||||||
|  |         % endif | ||||||
|  | 
 | ||||||
|  |         % if master.bulk_deletable and request.has_perm('{}.bulk_delete'.format(permission_prefix)): | ||||||
|  | 
 | ||||||
|  |         $('form[name="bulk-delete"] button').click(function() { | ||||||
|  |             var count = 0; | ||||||
|  |             var match = /showing \d+ thru \d+ of (\S+)/.exec($('.pager .showing').text()); | ||||||
|  |             if (match) { | ||||||
|  |                 count = match[1]; | ||||||
|  |             } else { | ||||||
|  |                 alert("There don't seem to be any results to delete!"); | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  |             if (! confirm("You are about to delete " + count + " ${model_title_plural}.\n\nAre you sure?")) { | ||||||
|  |                 return | ||||||
|  |             } | ||||||
|  |             $(this).button('disable').button('option', 'label', "Deleting Results..."); | ||||||
|  |             $('form[name="bulk-delete"]').submit(); | ||||||
|  |         }); | ||||||
|  | 
 | ||||||
|  |         % endif | ||||||
|  |     }); | ||||||
|  |   </script> | ||||||
|  | </%def> | ||||||
|  | 
 | ||||||
| <%def name="context_menu_items()"> | <%def name="context_menu_items()"> | ||||||
|   % if master.creatable and request.has_perm('{}.create'.format(permission_prefix)): |   % if master.creatable and request.has_perm('{}.create'.format(permission_prefix)): | ||||||
|       <li>${h.link_to("Create a new {}".format(model_title), url('{}.create'.format(route_prefix)))}</li> |       <li>${h.link_to("Create a new {}".format(model_title), url('{}.create'.format(route_prefix)))}</li> | ||||||
|   % endif |   % endif | ||||||
| </%def> | </%def> | ||||||
| 
 | 
 | ||||||
|  | <%def name="grid_tools()"> | ||||||
|  |   % if master.mergeable and request.has_perm('{}.merge'.format(permission_prefix)): | ||||||
|  |       ${h.form(url('{}.merge'.format(route_prefix)), name='merge-things')} | ||||||
|  |       ${h.csrf_token(request)} | ||||||
|  |       ${h.hidden('uuids')} | ||||||
|  |       <button type="submit">Merge 2 ${model_title_plural}</button> | ||||||
|  |       ${h.end_form()} | ||||||
|  |   % endif | ||||||
|  |   % if master.bulk_deletable and request.has_perm('{}.bulk_delete'.format(permission_prefix)): | ||||||
|  |       ${h.form(url('{}.bulk_delete'.format(route_prefix)), name='bulk-delete')} | ||||||
|  |       ${h.csrf_token(request)} | ||||||
|  |       <button type="button">Delete Results</button> | ||||||
|  |       ${h.end_form()} | ||||||
|  |   % endif | ||||||
|  | </%def> | ||||||
|  | 
 | ||||||
| ## ${grid.render_complete(tools=capture(self.grid_tools).strip(), context_menu=capture(self.context_menu_items).strip())|n} | ## ${grid.render_complete(tools=capture(self.grid_tools).strip(), context_menu=capture(self.context_menu_items).strip())|n} | ||||||
| 
 | 
 | ||||||
| <div class="newgrid-wrapper"> | <div class="grid-wrapper"> | ||||||
| 
 | 
 | ||||||
|   <table class="grid-header"> |   <table class="grid-header"> | ||||||
|     <tbody> |     <tbody> | ||||||
|  | @ -51,5 +123,5 @@ | ||||||
| 
 | 
 | ||||||
|   ${grid.render_grid()|n} |   ${grid.render_grid()|n} | ||||||
| 
 | 
 | ||||||
| </div><!-- newgrid-wrapper --> | </div><!-- grid-wrapper --> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
|     var destination = null; |     var destination = null; | ||||||
| 
 | 
 | ||||||
|     function update_move_button() { |     function update_move_button() { | ||||||
|         var count = $('.newgrid tr:not(.header) td.checkbox input:checked').length; |         var count = $('.grid tr:not(.header) td.checkbox input:checked').length; | ||||||
|         $('form[name="move-selected"] button') |         $('form[name="move-selected"] button') | ||||||
|             .button('option', 'label', "Move " + count + " selected to " + destination) |             .button('option', 'label', "Move " + count + " selected to " + destination) | ||||||
|             .button('option', 'disabled', count < 1); |             .button('option', 'disabled', count < 1); | ||||||
|  | @ -18,17 +18,17 @@ | ||||||
| 
 | 
 | ||||||
|         update_move_button(); |         update_move_button(); | ||||||
| 
 | 
 | ||||||
|         $('.newgrid-wrapper').on('change', 'tr.header td.checkbox input', function() { |         $('.grid-wrapper').on('change', 'tr.header td.checkbox input', function() { | ||||||
|             update_move_button(); |             update_move_button(); | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|         $('.newgrid-wrapper').on('click', 'tr:not(.header) td.checkbox input', function() { |         $('.grid-wrapper').on('click', 'tr:not(.header) td.checkbox input', function() { | ||||||
|             update_move_button(); |             update_move_button(); | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|         $('form[name="move-selected"]').submit(function() { |         $('form[name="move-selected"]').submit(function() { | ||||||
|             var uuids = []; |             var uuids = []; | ||||||
|             $('.newgrid tr:not(.header) td.checkbox input:checked').each(function() { |             $('.grid tr:not(.header) td.checkbox input:checked').each(function() { | ||||||
|                 uuids.push($(this).parents('tr:first').data('uuid')); |                 uuids.push($(this).parents('tr:first').data('uuid')); | ||||||
|             }); |             }); | ||||||
|             if (! uuids.length) { |             if (! uuids.length) { | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ | ||||||
|   </script> |   </script> | ||||||
|   <style type="text/css"> |   <style type="text/css"> | ||||||
| 
 | 
 | ||||||
|     .newgrid-wrapper { |     .grid-wrapper { | ||||||
|         margin-top: 10px; |         margin-top: 10px; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ | ||||||
|   ${parent.extra_styles()} |   ${parent.extra_styles()} | ||||||
|   <style type="text/css"> |   <style type="text/css"> | ||||||
| 
 | 
 | ||||||
|     .newgrid-wrapper { |     .grid-wrapper { | ||||||
|         margin-top: 10px; |         margin-top: 10px; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |  | ||||||
|  | @ -179,7 +179,7 @@ ${h.end_form()} | ||||||
| <%def name="extra_td(cost)"></%def> | <%def name="extra_td(cost)"></%def> | ||||||
| 
 | 
 | ||||||
| <%def name="order_form_grid()"> | <%def name="order_form_grid()"> | ||||||
|   <div class="newgrid"> |   <div class="grid"> | ||||||
|     <table class="order-form"> |     <table class="order-form"> | ||||||
|       <% column_count = 8 + len(header_columns) + (0 if ignore_cases else 1) + int(capture(self.extra_count)) %> |       <% column_count = 8 + len(header_columns) + (0 if ignore_cases else 1) + int(capture(self.extra_count)) %> | ||||||
|       % for department in sorted(departments.values(), key=lambda d: d.name if d else ''): |       % for department in sorted(departments.values(), key=lambda d: d.name if d else ''): | ||||||
|  |  | ||||||
|  | @ -35,7 +35,7 @@ | ||||||
|         $('#permission').selectmenu(); |         $('#permission').selectmenu(); | ||||||
| 
 | 
 | ||||||
|         $('#find-by-perm-form').submit(function() { |         $('#find-by-perm-form').submit(function() { | ||||||
|             $('.newgrid').remove(); |             $('.grid').remove(); | ||||||
|             $(this).find('#submit').button('disable').button('option', 'label', "Searching, please wait..."); |             $(this).find('#submit').button('disable').button('option', 'label', "Searching, please wait..."); | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|  | @ -59,7 +59,7 @@ ${h.csrf_token(request)} | ||||||
| ${h.end_form()} | ${h.end_form()} | ||||||
| 
 | 
 | ||||||
| % if principals is not None: | % if principals is not None: | ||||||
| <div class="newgrid half"> | <div class="grid half"> | ||||||
|   <br /> |   <br /> | ||||||
|   <h2>${model_title_plural} with that permission (${len(principals)} total):</h2> |   <h2>${model_title_plural} with that permission (${len(principals)} total):</h2> | ||||||
|   ${self.principal_table()} |   ${self.principal_table()} | ||||||
|  |  | ||||||
|  | @ -41,9 +41,9 @@ | ||||||
| 
 | 
 | ||||||
|       $(function() { |       $(function() { | ||||||
| 
 | 
 | ||||||
|           $('.newgrid-wrapper .grid-header .tools select').selectmenu(); |           $('.grid-wrapper .grid-header .tools select').selectmenu(); | ||||||
| 
 | 
 | ||||||
|           $('.newgrid-wrapper').on('click', 'a.print_label', function() { |           $('.grid-wrapper').on('click', 'a.print_label', function() { | ||||||
|               var tr = $(this).parents('tr:first'); |               var tr = $(this).parents('tr:first'); | ||||||
|               var quantity = $('table.label-printing #label-quantity'); |               var quantity = $('table.label-printing #label-quantity'); | ||||||
|               if (isNaN(quantity.val())) { |               if (isNaN(quantity.val())) { | ||||||
|  |  | ||||||
|  | @ -154,7 +154,7 @@ | ||||||
| <%def name="lookup_codes_panel()"> | <%def name="lookup_codes_panel()"> | ||||||
|   <div class="panel-grid" id="product-codes"> |   <div class="panel-grid" id="product-codes"> | ||||||
|     <h2>Additional Lookup Codes</h2> |     <h2>Additional Lookup Codes</h2> | ||||||
|     <div class="newgrid full no-border"> |     <div class="grid full no-border"> | ||||||
|       <table> |       <table> | ||||||
|         <thead> |         <thead> | ||||||
|           <th>Seq</th> |           <th>Seq</th> | ||||||
|  | @ -176,7 +176,7 @@ | ||||||
| <%def name="sources_panel()"> | <%def name="sources_panel()"> | ||||||
|   <div class="panel-grid" id="product-costs"> |   <div class="panel-grid" id="product-costs"> | ||||||
|     <h2>Vendor Sources</h2> |     <h2>Vendor Sources</h2> | ||||||
|     <div class="newgrid full no-border"> |     <div class="grid full no-border"> | ||||||
|       <table> |       <table> | ||||||
|         <thead> |         <thead> | ||||||
|           <th>Pref.</th> |           <th>Pref.</th> | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| ## -*- coding: utf-8 -*- | ## -*- coding: utf-8; -*- | ||||||
| <%inherit file="/master/index.mako" /> | <%inherit file="/master2/index.mako" /> | ||||||
| 
 | 
 | ||||||
| <%def name="context_menu_items()"> | <%def name="context_menu_items()"> | ||||||
|   ${parent.context_menu_items()} |   ${parent.context_menu_items()} | ||||||
|  |  | ||||||
|  | @ -1,49 +0,0 @@ | ||||||
| ## -*- coding: utf-8 -*- |  | ||||||
| <%inherit file="/mobile/base.mako" /> |  | ||||||
| 
 |  | ||||||
| <%def name="title()">New ${mode_title} Batch</%def> |  | ||||||
| 
 |  | ||||||
| ${h.form(request.current_route_url(), class_='ui-filterable', name='new-purchasing-batch')} |  | ||||||
| ${h.csrf_token(request)} |  | ||||||
| 
 |  | ||||||
| % if vendor is Undefined: |  | ||||||
| 
 |  | ||||||
|     <div class="field-wrapper vendor"> |  | ||||||
|       <div class="field autocomplete" data-url="${url('vendors.autocomplete')}"> |  | ||||||
|         ${h.hidden('vendor')} |  | ||||||
|         ${h.text('new-purchasing-batch-vendor-text', placeholder="Vendor name", autocomplete='off', **{'data-type': 'search'})} |  | ||||||
|         <ul data-role="listview" data-inset="true" data-filter="true" data-input="#new-purchasing-batch-vendor-text"></ul> |  | ||||||
|         <button type="button" style="display: none;">Change Vendor</button> |  | ||||||
|       </div> |  | ||||||
|     </div> |  | ||||||
| 
 |  | ||||||
|     <br /> |  | ||||||
|     ${h.submit('submit', "Find purchase orders")} |  | ||||||
|     ## <button type="button">New receiving from scratch</button> |  | ||||||
| 
 |  | ||||||
| % else: ## vendor is known |  | ||||||
| 
 |  | ||||||
|     <div class="field-wrapper vendor"> |  | ||||||
|       <div class="field"> |  | ||||||
|         ${h.hidden('vendor', value=vendor.uuid)} |  | ||||||
|         ${vendor} |  | ||||||
|       </div> |  | ||||||
|     </div> |  | ||||||
| 
 |  | ||||||
|     % if purchases: |  | ||||||
|         ${h.hidden('purchase')} |  | ||||||
|         <ul data-role="listview" data-inset="true"> |  | ||||||
|           % for uuid, purchase in purchases: |  | ||||||
|               <li data-uuid="${uuid}">${h.link_to(purchase, '#')}</li> |  | ||||||
|           % endfor |  | ||||||
|         </ul> |  | ||||||
|     % else: |  | ||||||
|         <p>(no eligible purchases found)</p> |  | ||||||
|     % endif |  | ||||||
| 
 |  | ||||||
|     ## ${h.link_to("Receive from scratch for {}".format(vendor), '#', class_='ui-btn ui-corner-all')} |  | ||||||
|     ${h.link_to("Start over", url('purchases.batch.mobile_create'), class_='ui-btn ui-corner-all')} |  | ||||||
| 
 |  | ||||||
| % endif |  | ||||||
| 
 |  | ||||||
| ${h.end_form()} |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| ## -*- coding: utf-8 -*- | ## -*- coding: utf-8; -*- | ||||||
| <%inherit file="/master/index.mako" /> | <%inherit file="/master2/index.mako" /> | ||||||
| 
 | 
 | ||||||
| <%def name="context_menu_items()"> | <%def name="context_menu_items()"> | ||||||
|   ${parent.context_menu_items()} |   ${parent.context_menu_items()} | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| ## -*- coding: utf-8 -*- | ## -*- coding: utf-8; -*- | ||||||
| <%namespace file="/shifts/base.mako" import="timesheet" /> | <%namespace file="/shifts/base.mako" import="timesheet" /> | ||||||
| <%namespace file="/shifts/schedule.mako" import="render_day" /> | <%namespace file="/shifts/schedule.mako" import="render_day" /> | ||||||
| <html> | <html> | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
|     ## TODO: this seems a little hacky..? |     ## TODO: this seems a little hacky..? | ||||||
|     ${h.stylesheet_link(request.static_url('tailbone:static/css/normalize.css'), media='all')} |     ${h.stylesheet_link(request.static_url('tailbone:static/css/normalize.css'), media='all')} | ||||||
|     ${h.stylesheet_link(request.static_url('tailbone:static/css/base.css'), media='all')} |     ${h.stylesheet_link(request.static_url('tailbone:static/css/base.css'), media='all')} | ||||||
|     ${h.stylesheet_link(request.static_url('tailbone:static/css/newgrids.css'), media='all')} |     ${h.stylesheet_link(request.static_url('tailbone:static/css/grids.css'), media='all')} | ||||||
|     ${h.stylesheet_link(request.static_url('tailbone:static/css/timesheet.css'), media='all')} |     ${h.stylesheet_link(request.static_url('tailbone:static/css/timesheet.css'), media='all')} | ||||||
|     ${h.stylesheet_link(request.static_url('tailbone:static/css/schedule_print.css'), media='print')} |     ${h.stylesheet_link(request.static_url('tailbone:static/css/schedule_print.css'), media='print')} | ||||||
|   </head> |   </head> | ||||||
|  |  | ||||||
|  | @ -1,6 +0,0 @@ | ||||||
| ## -*- coding: utf-8 -*- |  | ||||||
| <%inherit file="tailbone:templates/master/index.mako" /> |  | ||||||
| 
 |  | ||||||
| <%def name="content_title()"></%def> |  | ||||||
| 
 |  | ||||||
| ${parent.body()} |  | ||||||
							
								
								
									
										6
									
								
								tailbone/templates/themes/better/master2/index.mako
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								tailbone/templates/themes/better/master2/index.mako
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | ## -*- coding: utf-8; -*- | ||||||
|  | <%inherit file="tailbone:templates/master2/index.mako" /> | ||||||
|  | 
 | ||||||
|  | <%def name="content_title()"></%def> | ||||||
|  | 
 | ||||||
|  | ${parent.body()} | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Lance Edgar
						Lance Edgar