[Advanced search] Edit of stored query description can now be done. Formatted code a bit.
这个提交包含在:
		
							父节点
							
								
									7979431d95
								
							
						
					
					
						当前提交
						3baffed23e
					
				
					共有  4 个文件被更改,包括 321 次插入 和 291 次删除
				
			
		|  | @ -120,15 +120,14 @@ class Search extends CI_Controller { | ||||||
| 		$this->search_filter->delete_query($id); | 		$this->search_filter->delete_query($id); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	function edit_query() { | 	function save_edited_query() { | ||||||
| 		$data = array( | 		$data = array( | ||||||
| 			'cat' => xss_clean($this->input->post('category')), | 			'description' => xss_clean($this->input->post('description')), | ||||||
| 			'title' => xss_clean($this->input->post('title')), |  | ||||||
| 			'note' => xss_clean($this->input->post('content')) |  | ||||||
| 		); | 		); | ||||||
| 
 | 
 | ||||||
| 		$this->db->where('id', xss_clean($this->input->post('id'))); | 		$this->db->where('id', xss_clean($this->input->post('id'))); | ||||||
| 		$this->db->update('notes', $data); | 		$this->db->where('userid', $this->session->userdata['user_id']); | ||||||
|  | 		$this->db->update('queries', $data); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	function fetchQueryResult($json, $returnquery) { | 	function fetchQueryResult($json, $returnquery) { | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ class Migration_add_queries_table extends CI_Migration | ||||||
| { | { | ||||||
| 	public function up() | 	public function up() | ||||||
| 	{ | 	{ | ||||||
| 		$this->db->query("create table queries (id integer not null auto_increment, query text, description text, userid integer not null, primary key (id)) ENGINE=myisam DEFAULT CHARSET=utf8;"); | 		$this->db->query("create table if not exists queries (id integer not null auto_increment, query text, description text, userid integer not null, primary key (id)) ENGINE=myisam DEFAULT CHARSET=utf8;"); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	public function down() | 	public function down() | ||||||
|  |  | ||||||
|  | @ -52,289 +52,320 @@ function load_was_map() { | ||||||
| 
 | 
 | ||||||
| <?php if ($this->uri->segment(1) == "search" && $this->uri->segment(2) == "filter") { ?>
 | <?php if ($this->uri->segment(1) == "search" && $this->uri->segment(2) == "filter") { ?>
 | ||||||
| 
 | 
 | ||||||
| <script type="text/javascript" src="<?php echo base_url() ;?>assets/js/query-builder.standalone.min.js"></script> | <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/query-builder.standalone.min.js"></script> | ||||||
| 
 | 
 | ||||||
| <script type="text/javascript"> | <script type="text/javascript"> | ||||||
| 
 |     $(".search-results-box").hide(); | ||||||
| $(".search-results-box").hide(); |  | ||||||
| 
 | 
 | ||||||
|     $('#builder').queryBuilder({ |     $('#builder').queryBuilder({ | ||||||
|     filters: [ |         filters: [ | ||||||
|       <?php foreach ($get_table_names->result() as $row) { |             <?php foreach ($get_table_names->result() as $row) { | ||||||
|         $value_name = str_replace("COL_", "", $row->Field); |                 $value_name = str_replace("COL_", "", $row->Field); | ||||||
|         if ($value_name != "PRIMARY_KEY" && strpos($value_name, 'MY_') === false && strpos($value_name, '_INTL') == false) { ?>
 |                 if ($value_name != "PRIMARY_KEY" && strpos($value_name, 'MY_') === false && strpos($value_name, '_INTL') == false) { ?> {
 | ||||||
|         { |                         id: '<?php echo $row->Field; ?>', | ||||||
|           id: '<?php echo $row->Field; ?>', |                         label: '<?php echo $value_name; ?>', | ||||||
|           label: '<?php echo $value_name; ?>', |                         <?php if (strpos($row->Type, 'int(') !== false) { ?>
 | ||||||
|           <?php if (strpos($row->Type, 'int(') !== false) { ?>
 |                             type: 'integer', | ||||||
|           type: 'integer', |                             operators: ['equal', 'not_equal', 'less', 'less_or_equal', 'greater', 'greater_or_equal'] | ||||||
|           operators: ['equal', 'not_equal', 'less', 'less_or_equal', 'greater', 'greater_or_equal'] |                         <?php } elseif (strpos($row->Type, 'double') !== false) { ?>
 | ||||||
|           <?php } elseif(strpos($row->Type, 'double') !== false) { ?>
 |                             type: 'double', | ||||||
|           type: 'double', |                             operators: ['equal', 'not_equal', 'less', 'less_or_equal', 'greater', 'greater_or_equal'] | ||||||
|           operators: ['equal', 'not_equal', 'less', 'less_or_equal', 'greater', 'greater_or_equal'] |                         <?php } elseif (strpos($row->Type, 'datetime') !== false) { ?>
 | ||||||
|           <?php } elseif(strpos($row->Type, 'datetime') !== false) { ?>
 |                             type: 'datetime', | ||||||
|           type: 'datetime', |                             operators: ['equal', 'not_equal', 'less', 'less_or_equal', 'greater', 'greater_or_equal'] | ||||||
|           operators: ['equal', 'not_equal', 'less', 'less_or_equal', 'greater', 'greater_or_equal'] |                         <?php } else { ?>
 | ||||||
|           <?php } else { ?>
 |                             type: 'string', | ||||||
|           type: 'string', |                             operators: ['equal', 'not_equal', 'begins_with', 'contains', 'ends_with', 'is_empty', 'is_not_empty', 'is_null', 'is_not_null'] | ||||||
|           operators: ['equal', 'not_equal', 'begins_with', 'contains', 'ends_with', 'is_empty', 'is_not_empty', 'is_null', 'is_not_null'] |                         <?php } ?>
 | ||||||
|           <?php } ?>
 |                     }, | ||||||
|         }, |                 <?php } ?>
 | ||||||
|         <?php } ?>
 |             <?php } ?>
 | ||||||
|       <?php } ?>
 |         ] | ||||||
|     ] |     }); | ||||||
|   }); |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| function export_search_result(){ |     function export_search_result() { | ||||||
| 	var result = $('#builder').queryBuilder('getRules'); |         var result = $('#builder').queryBuilder('getRules'); | ||||||
| 	if (!$.isEmptyObject(result)) { |         if (!$.isEmptyObject(result)) { | ||||||
| 		xhttp = new XMLHttpRequest(); |             xhttp = new XMLHttpRequest(); | ||||||
| 		xhttp.onreadystatechange = function() { |             xhttp.onreadystatechange = function() { | ||||||
| 			var a; |                 var a; | ||||||
| 			if (xhttp.readyState === 4 && xhttp.status === 200) { |                 if (xhttp.readyState === 4 && xhttp.status === 200) { | ||||||
| 				// Trick for making downloadable link
 |                     // Trick for making downloadable link
 | ||||||
| 				a = document.createElement('a'); |                     a = document.createElement('a'); | ||||||
| 				a.href = window.URL.createObjectURL(xhttp.response); |                     a.href = window.URL.createObjectURL(xhttp.response); | ||||||
| 				// Give filename you wish to download
 |                     // Give filename you wish to download
 | ||||||
| 				a.download = "advanced_search_export.adi"; |                     a.download = "advanced_search_export.adi"; | ||||||
| 				a.style.display = 'none'; |                     a.style.display = 'none'; | ||||||
| 				document.body.appendChild(a); |                     document.body.appendChild(a); | ||||||
| 				a.click(); |                     a.click(); | ||||||
| 			} |                 } | ||||||
| 		}; |             }; | ||||||
| 		// Post data to URL which handles post request
 |             // Post data to URL which handles post request
 | ||||||
| 		xhttp.open("POST", "<?php echo site_url('search/export_to_adif');?>", true); |             xhttp.open("POST", "<?php echo site_url('search/export_to_adif'); ?>", true); | ||||||
| 		xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); |             xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); | ||||||
| 		// You should set responseType as blob for binary responses
 |             // You should set responseType as blob for binary responses
 | ||||||
| 		xhttp.responseType = 'blob'; |             xhttp.responseType = 'blob'; | ||||||
| 		xhttp.send("search=" + JSON.stringify(result, null, 2)); |             xhttp.send("search=" + JSON.stringify(result, null, 2)); | ||||||
| 	} |         } | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function export_stored_query(id){ |  | ||||||
| 	xhttp = new XMLHttpRequest(); |  | ||||||
| 	xhttp.onreadystatechange = function() { |  | ||||||
| 		var a; |  | ||||||
| 		if (xhttp.readyState === 4 && xhttp.status === 200) { |  | ||||||
| 			// Trick for making downloadable link
 |  | ||||||
| 			a = document.createElement('a'); |  | ||||||
| 			a.href = window.URL.createObjectURL(xhttp.response); |  | ||||||
| 			// Give filename you wish to download
 |  | ||||||
| 			a.download = "advanced_search_export.adi"; |  | ||||||
| 			a.style.display = 'none'; |  | ||||||
| 			document.body.appendChild(a); |  | ||||||
| 			a.click(); |  | ||||||
| 		} |  | ||||||
| 	}; |  | ||||||
| 	// Post data to URL which handles post request
 |  | ||||||
| 	xhttp.open("POST", "<?php echo site_url('search/export_stored_query_to_adif');?>", true); |  | ||||||
| 	xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); |  | ||||||
| 	// You should set responseType as blob for binary responses
 |  | ||||||
| 	xhttp.responseType = 'blob'; |  | ||||||
| 	xhttp.send("id=" + id); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| $('#btn-save').on('click', function() { |  | ||||||
| 	var resultquery = $('#builder').queryBuilder('getRules'); |  | ||||||
| 	if (!$.isEmptyObject(resultquery)) { |  | ||||||
| 		let message = 'Description: <input class="form-control input-group-sm getqueryname">' |  | ||||||
| 
 |  | ||||||
| 		BootstrapDialog.confirm({ |  | ||||||
| 			title: 'Query description', |  | ||||||
| 			size: BootstrapDialog.SIZE_NORMAL, |  | ||||||
| 			cssClass: 'description-dialog', |  | ||||||
| 			closable: true, |  | ||||||
| 			nl2br: false, |  | ||||||
| 			message: message, |  | ||||||
| 			btnCancelLabel: 'Cancel', |  | ||||||
| 			btnOKLabel: 'Save', |  | ||||||
| 			callback: function(result) { |  | ||||||
| 				if(result) { |  | ||||||
| 					$.post( "<?php echo site_url('search/save_query');?>", { search: JSON.stringify(resultquery, null, 2), description: $(".getqueryname").val() }) |  | ||||||
| 						.done(function( data ) { |  | ||||||
| 							$(".alert").remove(); |  | ||||||
| 							$(".card-body.main").append('<div class="alert alert-success"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>Your query has been saved!</div>'); |  | ||||||
| 							$('#querydropdown').append( new Option(data.description, data.id) ); // We add the saved query to the dropdown
 |  | ||||||
| 						}); |  | ||||||
| 				} |  | ||||||
| 			}, |  | ||||||
| 		}); |  | ||||||
| 
 |  | ||||||
| 	} |  | ||||||
| 	else{ |  | ||||||
| 		BootstrapDialog.show({ |  | ||||||
| 			title: 'Stored Queries', |  | ||||||
| 			type: BootstrapDialog.TYPE_WARNING, |  | ||||||
| 			size: BootstrapDialog.SIZE_NORMAL, |  | ||||||
| 			cssClass: 'queries-dialog', |  | ||||||
| 			nl2br: false, |  | ||||||
| 			message: 'You need to make a query before you search!', |  | ||||||
| 			buttons: [{ |  | ||||||
| 				label: 'Close', |  | ||||||
| 				action: function (dialogItself) { |  | ||||||
| 					dialogItself.close(); |  | ||||||
| 				} |  | ||||||
| 			}] |  | ||||||
| 		}); |  | ||||||
| 	} |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| function run_query() { |  | ||||||
| 	$(".alert").remove(); |  | ||||||
| 	$(".runbutton").addClass('running'); |  | ||||||
| 	$(".runbutton").prop('disabled', true); |  | ||||||
| 	let id = $('#querydropdown').val(); |  | ||||||
| 	$.post( "<?php echo site_url('search/run_query');?>", { id: id}) |  | ||||||
| 		.done(function( data ) { |  | ||||||
| 
 |  | ||||||
| 			$('.exportbutton').html('<button class="btn btn-sm btn-primary" onclick="export_stored_query('+id+')">Export to ADIF</button>'); |  | ||||||
| 			$('.card-body.result').empty(); |  | ||||||
| 			$(".search-results-box").show(); |  | ||||||
| 
 |  | ||||||
| 			$('.card-body.result').append(data); |  | ||||||
| 			$('.table').DataTable({ |  | ||||||
| 				"pageLength": 25, |  | ||||||
| 				responsive: false, |  | ||||||
| 				ordering: false, |  | ||||||
| 				"scrollY":        "400px", |  | ||||||
| 				"scrollCollapse": true, |  | ||||||
| 				"paging":         false, |  | ||||||
| 				"scrollX": true, |  | ||||||
| 				dom: 'Bfrtip', |  | ||||||
| 				buttons: [ |  | ||||||
| 					'csv' |  | ||||||
| 				] |  | ||||||
| 			}); |  | ||||||
| 			// change color of csv-button if dark mode is chosen
 |  | ||||||
| 			if (isDarkModeTheme()) { |  | ||||||
| 				$(".buttons-csv").css("color", "white"); |  | ||||||
| 			} |  | ||||||
| 			$(".runbutton").removeClass('running'); |  | ||||||
| 			$(".runbutton").prop('disabled', false); |  | ||||||
| 		}); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function delete_stored_query(id) { |  | ||||||
| 	BootstrapDialog.confirm({ |  | ||||||
| 		title: 'DANGER', |  | ||||||
| 		message: 'Warning! Are you sure you want delete this stored query?' , |  | ||||||
| 		type: BootstrapDialog.TYPE_DANGER, |  | ||||||
| 		closable: true, |  | ||||||
| 		draggable: true, |  | ||||||
| 		btnOKClass: 'btn-danger', |  | ||||||
| 		callback: function(result) { |  | ||||||
| 			if(result) { |  | ||||||
| 				$.ajax({ |  | ||||||
| 					url: base_url + 'index.php/search/delete_query', |  | ||||||
| 					type: 'post', |  | ||||||
| 					data: {'id': id |  | ||||||
| 					}, |  | ||||||
| 					success: function(data) { |  | ||||||
| 						$(".bootstrap-dialog-message").prepend('<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>The stored query has been deleted!</div>'); |  | ||||||
| 						$("#query_" + id).remove(); // removes query from table in dialog
 |  | ||||||
| 						$("#querydropdown option[value='"+id+"']").remove(); // removes query from dropdown
 |  | ||||||
| 					} |  | ||||||
| 				}); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	}); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function edit_stored_query(id) { |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| $('#btn-edit').on('click', function() { |  | ||||||
| 	$(".alert").remove(); |  | ||||||
| 	$.ajax({ |  | ||||||
| 		url: base_url + 'index.php/search/get_stored_queries', |  | ||||||
| 		type: 'post', |  | ||||||
| 		success: function (html) { |  | ||||||
| 			BootstrapDialog.show({ |  | ||||||
| 				title: 'Stored Queries', |  | ||||||
| 				size: BootstrapDialog.SIZE_WIDE, |  | ||||||
| 				cssClass: 'queries-dialog', |  | ||||||
| 				nl2br: false, |  | ||||||
| 				message: html, |  | ||||||
| 				buttons: [{ |  | ||||||
| 					label: 'Close', |  | ||||||
| 					action: function (dialogItself) { |  | ||||||
| 						dialogItself.close(); |  | ||||||
| 					} |  | ||||||
| 				}] |  | ||||||
| 			}); |  | ||||||
| 		} |  | ||||||
| 	}); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| $('#btn-get').on('click', function() { |  | ||||||
| 	$(".alert").remove(); |  | ||||||
| 	var result = $('#builder').queryBuilder('getRules'); |  | ||||||
| 	if (!$.isEmptyObject(result)) { |  | ||||||
| 		$(".searchbutton").addClass('running'); |  | ||||||
| 		$(".searchbutton").prop('disabled', true); |  | ||||||
| 
 |  | ||||||
| 		$.post( "<?php echo site_url('search/search_result');?>", { search: JSON.stringify(result, null, 2), temp: "testvar" }) |  | ||||||
| 			.done(function( data ) { |  | ||||||
| 				$('.exportbutton').html('<button class="btn btn-sm btn-primary" onclick="export_search_result();">Export to ADIF</button>'); |  | ||||||
| 
 |  | ||||||
| 				$('.card-body.result').empty(); |  | ||||||
| 				$(".search-results-box").show(); |  | ||||||
| 
 |  | ||||||
| 				$('.card-body.result').append(data); |  | ||||||
| 				$('.table').DataTable({ |  | ||||||
| 					"pageLength": 25, |  | ||||||
| 					responsive: false, |  | ||||||
| 					ordering: false, |  | ||||||
| 					"scrollY":        "400px", |  | ||||||
| 					"scrollCollapse": true, |  | ||||||
| 					"paging":         false, |  | ||||||
| 					"scrollX": true, |  | ||||||
| 					dom: 'Bfrtip', |  | ||||||
| 					buttons: [ |  | ||||||
| 						'csv' |  | ||||||
| 					] |  | ||||||
| 				}); |  | ||||||
| 				// change color of csv-button if dark mode is chosen
 |  | ||||||
| 				if (isDarkModeTheme()) { |  | ||||||
| 					$(".buttons-csv").css("color", "white"); |  | ||||||
| 				} |  | ||||||
| 				$(".searchbutton").removeClass('running'); |  | ||||||
| 				$(".searchbutton").prop('disabled', false); |  | ||||||
| 				$("#btn-save").show(); |  | ||||||
| 			}); |  | ||||||
| 	} |  | ||||||
| 	else{ |  | ||||||
| 		BootstrapDialog.show({ |  | ||||||
| 			title: 'Stored Queries', |  | ||||||
| 			type: BootstrapDialog.TYPE_WARNING, |  | ||||||
| 			size: BootstrapDialog.SIZE_NORMAL, |  | ||||||
| 			cssClass: 'queries-dialog', |  | ||||||
| 			nl2br: false, |  | ||||||
| 			message: 'You need to make a query before you search!', |  | ||||||
| 			buttons: [{ |  | ||||||
| 				label: 'Close', |  | ||||||
| 				action: function (dialogItself) { |  | ||||||
| 					dialogItself.close(); |  | ||||||
| 				} |  | ||||||
| 			}] |  | ||||||
| 		}); |  | ||||||
| 	} |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
|   $('#btn-set').on('click', function() { |  | ||||||
|     //$('#builder').queryBuilder('setRules', rules_basic);
 |  | ||||||
|     var result = $('#builder').queryBuilder('getRules'); |  | ||||||
|     if (!$.isEmptyObject(result)) { |  | ||||||
|       rules_basic = result; |  | ||||||
|     } |     } | ||||||
|   }); |  | ||||||
| 
 | 
 | ||||||
|   //When rules changed :
 |     function export_stored_query(id) { | ||||||
|   $('#builder').on('getRules.queryBuilder.filter', function(e) { |         xhttp = new XMLHttpRequest(); | ||||||
|     //$log.info(e.value);
 |         xhttp.onreadystatechange = function() { | ||||||
|   }); |             var a; | ||||||
|  |             if (xhttp.readyState === 4 && xhttp.status === 200) { | ||||||
|  |                 // Trick for making downloadable link
 | ||||||
|  |                 a = document.createElement('a'); | ||||||
|  |                 a.href = window.URL.createObjectURL(xhttp.response); | ||||||
|  |                 // Give filename you wish to download
 | ||||||
|  |                 a.download = "advanced_search_export.adi"; | ||||||
|  |                 a.style.display = 'none'; | ||||||
|  |                 document.body.appendChild(a); | ||||||
|  |                 a.click(); | ||||||
|  |             } | ||||||
|  |         }; | ||||||
|  |         // Post data to URL which handles post request
 | ||||||
|  |         xhttp.open("POST", "<?php echo site_url('search/export_stored_query_to_adif'); ?>", true); | ||||||
|  |         xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); | ||||||
|  |         // You should set responseType as blob for binary responses
 | ||||||
|  |         xhttp.responseType = 'blob'; | ||||||
|  |         xhttp.send("id=" + id); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     $('#btn-save').on('click', function() { | ||||||
|  |         var resultquery = $('#builder').queryBuilder('getRules'); | ||||||
|  |         if (!$.isEmptyObject(resultquery)) { | ||||||
|  |             let message = 'Description: <input class="form-control input-group-sm getqueryname">' | ||||||
|  | 
 | ||||||
|  |             BootstrapDialog.confirm({ | ||||||
|  |                 title: 'Query description', | ||||||
|  |                 size: BootstrapDialog.SIZE_NORMAL, | ||||||
|  |                 cssClass: 'description-dialog', | ||||||
|  |                 closable: true, | ||||||
|  |                 nl2br: false, | ||||||
|  |                 message: message, | ||||||
|  |                 btnCancelLabel: 'Cancel', | ||||||
|  |                 btnOKLabel: 'Save', | ||||||
|  |                 callback: function(result) { | ||||||
|  |                     if (result) { | ||||||
|  |                         $.post("<?php echo site_url('search/save_query'); ?>", { | ||||||
|  |                                 search: JSON.stringify(resultquery, null, 2), | ||||||
|  |                                 description: $(".getqueryname").val() | ||||||
|  |                             }) | ||||||
|  |                             .done(function(data) { | ||||||
|  |                                 $(".alert").remove(); | ||||||
|  |                                 $(".card-body.main").append('<div class="alert alert-success"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>Your query has been saved!</div>'); | ||||||
|  |                                 $('#querydropdown').append(new Option(data.description, data.id)); // We add the saved query to the dropdown
 | ||||||
|  |                             }); | ||||||
|  |                     } | ||||||
|  |                 }, | ||||||
|  |             }); | ||||||
|  | 
 | ||||||
|  |         } else { | ||||||
|  |             BootstrapDialog.show({ | ||||||
|  |                 title: 'Stored Queries', | ||||||
|  |                 type: BootstrapDialog.TYPE_WARNING, | ||||||
|  |                 size: BootstrapDialog.SIZE_NORMAL, | ||||||
|  |                 cssClass: 'queries-dialog', | ||||||
|  |                 nl2br: false, | ||||||
|  |                 message: 'You need to make a query before you search!', | ||||||
|  |                 buttons: [{ | ||||||
|  |                     label: 'Close', | ||||||
|  |                     action: function(dialogItself) { | ||||||
|  |                         dialogItself.close(); | ||||||
|  |                     } | ||||||
|  |                 }] | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     function run_query() { | ||||||
|  |         $(".alert").remove(); | ||||||
|  |         $(".runbutton").addClass('running'); | ||||||
|  |         $(".runbutton").prop('disabled', true); | ||||||
|  |         let id = $('#querydropdown').val(); | ||||||
|  |         $.post("<?php echo site_url('search/run_query'); ?>", { | ||||||
|  |                 id: id | ||||||
|  |             }) | ||||||
|  |             .done(function(data) { | ||||||
|  | 
 | ||||||
|  |                 $('.exportbutton').html('<button class="btn btn-sm btn-primary" onclick="export_stored_query(' + id + ')">Export to ADIF</button>'); | ||||||
|  |                 $('.card-body.result').empty(); | ||||||
|  |                 $(".search-results-box").show(); | ||||||
|  | 
 | ||||||
|  |                 $('.card-body.result').append(data); | ||||||
|  |                 $('.table').DataTable({ | ||||||
|  |                     "pageLength": 25, | ||||||
|  |                     responsive: false, | ||||||
|  |                     ordering: false, | ||||||
|  |                     "scrollY": "400px", | ||||||
|  |                     "scrollCollapse": true, | ||||||
|  |                     "paging": false, | ||||||
|  |                     "scrollX": true, | ||||||
|  |                     dom: 'Bfrtip', | ||||||
|  |                     buttons: [ | ||||||
|  |                         'csv' | ||||||
|  |                     ] | ||||||
|  |                 }); | ||||||
|  |                 // change color of csv-button if dark mode is chosen
 | ||||||
|  |                 if (isDarkModeTheme()) { | ||||||
|  |                     $(".buttons-csv").css("color", "white"); | ||||||
|  |                 } | ||||||
|  |                 $(".runbutton").removeClass('running'); | ||||||
|  |                 $(".runbutton").prop('disabled', false); | ||||||
|  |             }); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     function delete_stored_query(id) { | ||||||
|  |         BootstrapDialog.confirm({ | ||||||
|  |             title: 'DANGER', | ||||||
|  |             message: 'Warning! Are you sure you want delete this stored query?', | ||||||
|  |             type: BootstrapDialog.TYPE_DANGER, | ||||||
|  |             closable: true, | ||||||
|  |             draggable: true, | ||||||
|  |             btnOKClass: 'btn-danger', | ||||||
|  |             callback: function(result) { | ||||||
|  |                 if (result) { | ||||||
|  |                     $.ajax({ | ||||||
|  |                         url: base_url + 'index.php/search/delete_query', | ||||||
|  |                         type: 'post', | ||||||
|  |                         data: { | ||||||
|  |                             'id': id | ||||||
|  |                         }, | ||||||
|  |                         success: function(data) { | ||||||
|  |                             $(".bootstrap-dialog-message").prepend('<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>The stored query has been deleted!</div>'); | ||||||
|  |                             $("#query_" + id).remove(); // removes query from table in dialog
 | ||||||
|  |                             $("#querydropdown option[value='" + id + "']").remove(); // removes query from dropdown
 | ||||||
|  |                         }, | ||||||
|  |                         error: function() { | ||||||
|  |                             $(".bootstrap-dialog-message").prepend('<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>The stored query could not be deleted. Please try again!</div>'); | ||||||
|  |                         }, | ||||||
|  |                     }); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     function edit_stored_query(id) { | ||||||
|  |         $('#description_' + id).attr('contenteditable', 'true'); | ||||||
|  |         $('#description_' + id).focus(); | ||||||
|  |         $('#edit_' + id).html('<a class="btn btn-primary btn-sm" href="javascript:save_edited_query(' + id + ');">Save</a>'); // Change to save button
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     function save_edited_query(id) { | ||||||
|  |         $('#description_' + id).attr('contenteditable', 'false'); | ||||||
|  |         $('#edit_' + id).html('<a class="btn btn-outline-primary btn-sm" href="javascript:edit_stored_query(' + id + ');">Edit</a>'); | ||||||
|  |         $.ajax({ | ||||||
|  |             url: base_url + 'index.php/search/save_edited_query', | ||||||
|  |             type: 'post', | ||||||
|  |             data: { | ||||||
|  |                 id: id, | ||||||
|  |                 description: $('#description_' + id).html(), | ||||||
|  |             }, | ||||||
|  |             success: function(html) { | ||||||
|  |                 $('#edit_' + id).html('<a class="btn btn-outline-primary btn-sm" href="javascript:edit_stored_query(' + id + ');">Edit</a>'); // Change to edit button
 | ||||||
|  |                 $(".bootstrap-dialog-message").prepend('<div class="alert alert-success"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>The query description has been updated!</div>'); | ||||||
|  |                 $("#querydropdown option[value='" + id + "']").text($('#description_' + id).html()); // Change text in dropdown
 | ||||||
|  |             }, | ||||||
|  |             error: function() { | ||||||
|  |                 $(".bootstrap-dialog-message").prepend('<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>Something went wrong with the save. Please try again!</div>'); | ||||||
|  |             }, | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     $('#btn-edit').on('click', function() { | ||||||
|  |         $(".alert").remove(); | ||||||
|  |         $.ajax({ | ||||||
|  |             url: base_url + 'index.php/search/get_stored_queries', | ||||||
|  |             type: 'post', | ||||||
|  |             success: function(html) { | ||||||
|  |                 BootstrapDialog.show({ | ||||||
|  |                     title: 'Stored Queries', | ||||||
|  |                     size: BootstrapDialog.SIZE_WIDE, | ||||||
|  |                     cssClass: 'queries-dialog', | ||||||
|  |                     nl2br: false, | ||||||
|  |                     message: html, | ||||||
|  |                     buttons: [{ | ||||||
|  |                         label: 'Close', | ||||||
|  |                         action: function(dialogItself) { | ||||||
|  |                             dialogItself.close(); | ||||||
|  |                         } | ||||||
|  |                     }] | ||||||
|  |                 }); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     $('#btn-get').on('click', function() { | ||||||
|  |         $(".alert").remove(); | ||||||
|  |         var result = $('#builder').queryBuilder('getRules'); | ||||||
|  |         if (!$.isEmptyObject(result)) { | ||||||
|  |             $(".searchbutton").addClass('running'); | ||||||
|  |             $(".searchbutton").prop('disabled', true); | ||||||
|  | 
 | ||||||
|  |             $.post("<?php echo site_url('search/search_result'); ?>", { | ||||||
|  |                     search: JSON.stringify(result, null, 2), | ||||||
|  |                     temp: "testvar" | ||||||
|  |                 }) | ||||||
|  |                 .done(function(data) { | ||||||
|  |                     $('.exportbutton').html('<button class="btn btn-sm btn-primary" onclick="export_search_result();">Export to ADIF</button>'); | ||||||
|  | 
 | ||||||
|  |                     $('.card-body.result').empty(); | ||||||
|  |                     $(".search-results-box").show(); | ||||||
|  | 
 | ||||||
|  |                     $('.card-body.result').append(data); | ||||||
|  |                     $('.table').DataTable({ | ||||||
|  |                         "pageLength": 25, | ||||||
|  |                         responsive: false, | ||||||
|  |                         ordering: false, | ||||||
|  |                         "scrollY": "400px", | ||||||
|  |                         "scrollCollapse": true, | ||||||
|  |                         "paging": false, | ||||||
|  |                         "scrollX": true, | ||||||
|  |                         dom: 'Bfrtip', | ||||||
|  |                         buttons: [ | ||||||
|  |                             'csv' | ||||||
|  |                         ] | ||||||
|  |                     }); | ||||||
|  |                     // change color of csv-button if dark mode is chosen
 | ||||||
|  |                     if (isDarkModeTheme()) { | ||||||
|  |                         $(".buttons-csv").css("color", "white"); | ||||||
|  |                     } | ||||||
|  |                     $(".searchbutton").removeClass('running'); | ||||||
|  |                     $(".searchbutton").prop('disabled', false); | ||||||
|  |                     $("#btn-save").show(); | ||||||
|  |                 }); | ||||||
|  |         } else { | ||||||
|  |             BootstrapDialog.show({ | ||||||
|  |                 title: 'Stored Queries', | ||||||
|  |                 type: BootstrapDialog.TYPE_WARNING, | ||||||
|  |                 size: BootstrapDialog.SIZE_NORMAL, | ||||||
|  |                 cssClass: 'queries-dialog', | ||||||
|  |                 nl2br: false, | ||||||
|  |                 message: 'You need to make a query before you search!', | ||||||
|  |                 buttons: [{ | ||||||
|  |                     label: 'Close', | ||||||
|  |                     action: function(dialogItself) { | ||||||
|  |                         dialogItself.close(); | ||||||
|  |                     } | ||||||
|  |                 }] | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     $('#btn-set').on('click', function() { | ||||||
|  |         //$('#builder').queryBuilder('setRules', rules_basic);
 | ||||||
|  |         var result = $('#builder').queryBuilder('getRules'); | ||||||
|  |         if (!$.isEmptyObject(result)) { | ||||||
|  |             rules_basic = result; | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     //When rules changed :
 | ||||||
|  |     $('#builder').on('getRules.queryBuilder.filter', function(e) { | ||||||
|  |         //$log.info(e.value);
 | ||||||
|  |     }); | ||||||
| </script> | </script> | ||||||
| <?php } ?>
 | <?php } ?>
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -13,15 +13,15 @@ $i = 1; | ||||||
| 	</thead> | 	</thead> | ||||||
| 	<tbody> | 	<tbody> | ||||||
| 		<?php | 		<?php | ||||||
| 			foreach($result as $q) { | 		foreach ($result as $q) { | ||||||
| 				echo '<tr id="query_' . $q->id . '">'; | 			echo '<tr id="query_' . $q->id . '">'; | ||||||
| 				echo '<td>' . $i++ . '</td>'; | 			echo '<td>' . $i++ . '</td>'; | ||||||
| 				echo '<td>' . $q->description . '</td>'; | 			echo '<td contenteditable="false" id="description_' . $q->id . '">' . $q->description . '</td>'; | ||||||
| 				echo '<td>' . $q->query . '</td>'; | 			echo '<td>' . $q->query . '</td>'; | ||||||
| 				echo '<td><a class="btn btn-outline-primary btn-sm" href="javascript:edit_stored_query(' . $q->id . ');">Edit</a></>'; | 			echo '<td id="edit_' . $q->id . '"><a class="btn btn-outline-primary btn-sm" href="javascript:edit_stored_query(' . $q->id . ');">Edit</a></>'; | ||||||
| 				echo '<td><a class="btn btn-danger btn-sm" href="javascript:delete_stored_query(' . $q->id . ');">Delete</a></td>'; | 			echo '<td><a class="btn btn-danger btn-sm" href="javascript:delete_stored_query(' . $q->id . ');">Delete</a></td>'; | ||||||
| 				echo '</tr>'; | 			echo '</tr>'; | ||||||
| 			} | 		} | ||||||
| 		?>
 | 		?>
 | ||||||
| 	</tbody> | 	</tbody> | ||||||
| </table> | </table> | ||||||
		正在加载…
	
		在新工单中引用