codemirror實現SQL代碼自動提示功能

使用codemirror使用SQL代碼能夠自動提示如 PLSQL等工具一般智能提示功能,

1、引入show-hint.css,codemirror.css和主題樣式如:

        <link href="codemirror-5.47.0/lib/codemirror.css"/>
	<link href="codemirror-5.47.0/theme/monokai.css"/>
	<link href="codemirror-5.47.0/theme/eclipse.css"/>
	<link href="codemirror-5.47.0/theme/idea.css"/>
	<link href="codemirror-5.47.0/addon/hint/show-hint.css"/>
	<link href="codemirror-5.47.0/addon/display/fullscreen.css"/>

2、引入codemirror.js、sql.js、show-hint.js、sql-hint.js

如:

	codemirror-5.47.0/lib/codemirror.js
	codemirror-5.47.0/mode/sql/sql.js
	codemirror-5.47.0/mode/clike/clike.js
	codemirror-5.47.0/addon/display/autorefresh.js
	codemirror-5.47.0/addon/edit/matchbrackets.js
	codemirror-5.47.0/addon/selection/active-line.js
	codemirror-5.47.0/addon/display/fullscreen.js
	codemirror-5.47.0/addon/hint/show-hint.js
	codemirror-5.47.0/addon/hint/sql-hint.js

3、設置初始化codemirror,並設置table和列數據源

/**
 * codemirror集成配置工具類 Created by 許暢 on 2019-05-27.
 *
 * codemirror代碼配置:
 * <pre>
 * 	CodeMirror.resolveMode("text/x-sql").keywords["left join"]=true
 *	CodeMirror.resolveMode("text/x-sql").keywords["left"]=true
 *	CodeMirror.resolveMode("text/x-sql").keywords["right join"]=true
 *	CodeMirror.resolveMode("text/x-sql").keywords["right"]=true
 *	CodeMirror.resolveMode("text/x-sql").keywords["inner join"]=true
 *  CodeMirror.resolveMode("text/x-sql").keywords["inner"]=true
 *  CodeMirror.resolveMode("text/x-sql").keywords["when"]=true
 *	CodeMirror.resolveMode("text/x-sql").keywords["FROM_DAYS(N)"]=true
 *	CodeMirror.resolveMode("text/x-sql").keywords["UPGRADE"]=true
 *	
 *	sqlCodeMirror = CodeMirror.fromTextArea(document.getElementById("sqlTest"),{
 *		  mode:  "text/x-sql",
 *		  theme :	"idea",
 *		  lineNumbers : true,
 *		  lineWrapping: true,
 *		  styleActiveLine: true,
 *		  matchBrackets: true,
 *		  autoRefresh : true,
 *	      extraKeys: {
 *	    	   "Alt-/": "autocomplete",
 *	    	   "F11": function(cm) {
 *	  	          cm.setOption("fullScreen", !cm.getOption("fullScreen"));
 *	  	       },
 *	  	       "Esc": function(cm) {
 *	  	          if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);
 *	  	       }  
 *	      }, // To invoke the auto complete
 *		  hint: CodeMirror.hint.sql,
 *		  hintOptions: {
 *            tables: {
 *                "t_test_login": [ "col_a", "col_B", "col_C" ],
 *               "t_test_employee": [ "other_columns1", "other_columns2" ]
 *            }
 *         }
 *	 });
 *	sqlCodeMirror.setValue("select * from t_test_login where 1=1");
 *	
 *	sqlCodeMirror.on("change", function(editor, change) {
 *        if (change.origin == "+input"){
 *            var textArray = change.text;
 *            //不提示
 *            if(!ignoreInputCode(textArray)){
 *            	setTimeout(function() { editor.execCommand("autocomplete"); }, 100);
 *            }
 *        }
 *    });
 *  </pre>
 */

更新詳細配置可參考其官方說明,可參照其demo說明。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章