@@ -922,13 +922,15 @@
922 922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
923 923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
924 924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Output Javascript code that will enables sorting of the table with
925 925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the id zTableId by clicking.
926 926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The javascript is derived from:
927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The javascript was originally derived from:
928 928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
929 929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** http://www.webtoolkit.info/sortable-html-table.html
930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** But there have been extensive modifications.
930 932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
931 933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This variation allows column types to be expressed using the second
932 934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** argument. Each character of the second argument represent a column.
933 935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
934 936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** t Sort by text
@@ -936,17 +938,27 @@
936 938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** k Sort by the data-sortkey property
937 939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** x This column is not sortable
938 940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
939 941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If there are fewer characters in zColumnTypes[] than their are columns,
940 942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the all extra columns assume type "t" (text).
943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The third parameter is the column that was initially sorted (using 1-based
945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** column numbers, like SQL). Make this value 0 if none of the columns are
946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** initially sorted. Make the value negative if the column is initially sorted
947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in reverse order.
941 948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
942 949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Clicking on the same column header twice in a row inverts the sort.
943 950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void output_table_sorting_javascript(const char *zTableId, const char *zColumnTypes){
951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void output_table_sorting_javascript(
952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zTableId, /* ID of table to sort */
953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zColumnTypes, /* String for column types */
954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iInitSort /* Initially sorted column. Leftmost is 1. 0 for NONE */
955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
945 956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <script>
946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ function SortableTable(tableEl,columnTypes){
957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ function SortableTable(tableEl,columnTypes,initSort){
947 958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ this.tbody = tableEl.getElementsByTagName('tbody');
959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ this.columnTypes = columnTypes;
948 960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ this.sort = function (cell) {
949 961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var column = cell.cellIndex;
950 962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var sortFn;
951 963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ switch( cell.sortType ){
952 964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ case "n": sortFn = this.sortNumeric; break;
@@ -957,19 +969,39 @@
957 969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ this.sortIndex = column;
958 970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var newRows = new Array();
959 971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ for (j = 0; j < this.tbody[0].rows.length; j++) {
960 972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ newRows[j] = this.tbody[0].rows[j];
961 973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ if( this.sortIndex==this.prevColumn ){
974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ if( this.sortIndex==Math.abs(this.prevColumn)-1 ){
963 975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ newRows.reverse();
976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ this.prevColumn = -this.prevColumn;
964 977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }else{
965 978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ newRows.sort(sortFn);
966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ this.prevColumn = this.sortIndex;
979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ this.prevColumn = this.sortIndex+1;
967 980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
968 981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ for (i=0;i<newRows.length;i++) {
969 982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ this.tbody[0].appendChild(newRows[i]);
970 983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ this.setHdrIcons();
985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ }
986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ this.setHdrIcons = function() {
987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var arrowdiv = this.hdrRow.getElementsByClassName("sortarrow");
988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ while( arrowdiv[0] ){
989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ arrowdiv[0].parentNode.removeChild(arrowdiv[0]);
990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ }
991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ for (var i=0; i<this.hdrRow.cells.length; i++) {
992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ if( this.columnTypes[i]=='x' ) continue;
993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ if( this.prevColumn==i+1 ){
994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ arrow = "\u2b07";
995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ }else if( this.prevColumn==(-1-i) ){
996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ arrow = "\u2b06";
997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ }else{
998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ arrow = "\u21f3";
999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ }
1000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ this.hdrRow.cells[i].innerHTML +=
1001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ "<span class='sortarrow'>" + arrow + "</div>";
1002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ }
971 1003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
972 1004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ this.sortText = function(a,b) {
973 1005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var i = thisObject.sortIndex;
974 1006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ aa = a.cells[i].textContent.replace(/^\W+/,'').toLowerCase();
975 1007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ bb = b.cells[i].textContent.replace(/^\W+/,'').toLowerCase();
@@ -991,33 +1023,35 @@
991 1023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ bb = b.cells[i].getAttribute("data-sortkey");
992 1024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if(aa==bb) return 0;
993 1025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if(aa<bb) return -1;
994 1026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ return 1;
995 1027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ var thisObject = this;
997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ var prevColumn = -1;
998 1028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var x = tableEl.getElementsByTagName('thead');
999 1029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if(!(this.tbody && this.tbody[0].rows && this.tbody[0].rows.length>0)){
1000 1030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ return;
1001 1031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
1002 1032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if(x && x[0].rows && x[0].rows.length > 0) {
1003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ var sortRow = x[0].rows[0];
1033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ this.hdrRow = x[0].rows[0];
1004 1034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ } else {
1005 1035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ return;
1006 1036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
1007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ for (var i=0; i<sortRow.cells.length; i++) {
1037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var thisObject = this;
1038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ this.prevColumn = initSort;
1039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ for (var i=0; i<this.hdrRow.cells.length; i++) {
1008 1040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if( columnTypes[i]=='x' ) continue;
1009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ sortRow.cells[i].sTable = this;
1010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ sortRow.cells[i].style.cursor = "pointer";
1011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ sortRow.cells[i].sortType = columnTypes[i] || 't';
1012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ sortRow.cells[i].onclick = function () {
1041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var hdrcell = this.hdrRow.cells[i];
1042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ hdrcell.sTable = this;
1043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ hdrcell.style.cursor = "pointer";
1044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ hdrcell.sortType = columnTypes[i] || 't';
1045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ hdrcell.onclick = function () {
1013 1046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ this.sTable.sort(this);
1014 1047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ return false;
1015 1048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
1016 1049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
1050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ this.setHdrIcons()
1017 1051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
1018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ var t = new SortableTable(gebi("%s(zTableId)"),"%s(zColumnTypes)");
1052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var t = new SortableTable(gebi("%s(zTableId)"),"%s(zColumnTypes)",%d(iInitSort));
1019 1053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </script>
1020 1054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1021 1055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1022 1056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1023 1057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -1109,11 +1143,11 @@
1109 1143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zErr1 ){
1110 1144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <p class="reportError">Error: %h(zErr1)</p>
1111 1145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( zErr2 ){
1112 1146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <p class="reportError">Error: %h(zErr2)</p>
1113 1147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- output_table_sorting_javascript("reportTable","");
1148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ output_table_sorting_javascript("reportTable","",0);
1115 1149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_footer();
1116 1150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1117 1151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
report_restrict_sql(&zErr1);
1118 1152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_exec_readonly(g.db, zSql, output_tab_separated, &count, &zErr2);
1119 1153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
report_unrestrict_sql();
1120 1154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!