• R/O
  • SSH
  • HTTPS

format-sql: Commit


Commit MetaInfo

Revision73 (tree)
Time2018-08-25 22:35:00
Authorkimur058

Log Message

Infoタブを追加(テスト中)

Change Summary

Incremental Difference

--- trunk/DMLBreaker3.x/DMLBreaker.js (revision 72)
+++ trunk/DMLBreaker3.x/DMLBreaker.js (revision 73)
@@ -21,6 +21,8 @@
2121 var betweenFlg = false;
2222 // UNION句の発生フラグ
2323 var unionFlg = false;
24+// テーブル配列
25+var tableArray = new Array();
2426
2527 // 単独でも稼働させるために設定(内容はconfig.jsを参照)
2628 if (typeof configIndent === "undefined") {
@@ -399,6 +401,8 @@
399401 wkAdd += "__SPACE__";
400402 }
401403
404+ pushTableArray(wkSql, i);
405+
402406 } else if (wkAdd.match(/ where /i) != null) {
403407
404408 formatSql = formatWhere(formatSql);
@@ -577,6 +581,10 @@
577581 wkAdd = "";
578582 }
579583
584+ } else if (wkAdd.match(/^insert into $/i) != null) {
585+
586+ pushTableArray(wkSql, i);
587+
580588 } else if (wkAdd.match(/ values/i) != null) {
581589
582590 formatSql += wkAdd.substring(0, wkAdd.length - 6) + "\n" + wkAdd.slice(-6);
@@ -662,6 +670,10 @@
662670 parenthesis++;
663671 tab = tab.concat("\t");
664672
673+ } else if (wkAdd.match(/^update $/i) != null) {
674+
675+ pushTableArray(wkSql, i);
676+
665677 } else if (wkAdd.match(/ set /i) != null) {
666678
667679 formatSql += wkAdd.substring(0, wkAdd.length - 4) + wkAdd.slice(-4);
@@ -760,6 +772,10 @@
760772 parenthesis++;
761773 tab = tab.concat("\t");
762774
775+ } else if (wkAdd.match(/^delete from $/i) != null) {
776+
777+ pushTableArray(wkSql, i);
778+
763779 } else if (wkAdd.match(/ and /i) != null) {
764780
765781 formatSql = formatAnd(formatSql);
@@ -934,6 +950,22 @@
934950 }
935951
936952 /**
953+ * テーブル配列に追加
954+ */
955+function pushTableArray(targetText, startNo) {
956+
957+ var table = "";
958+ for (var i = startNo + 1; i < targetText.length; i++) {
959+ var char = targetText.charAt(i);
960+ if (char == " " || char == ";" || char == "(") {
961+ tableArray.push(table);
962+ return;
963+ }
964+ table += char;
965+ }
966+}
967+
968+/**
937969 * 余分な半角スペースを除去
938970 */
939971 function formatTrim(targetStr) {
--- trunk/DMLBreaker3.x/base.js (revision 72)
+++ trunk/DMLBreaker3.x/base.js (revision 73)
@@ -49,7 +49,12 @@
4949 tabAdd: "新しいタブを追加",
5050 formatShortcut: "整形ショートカット",
5151 tabName: "新しいタブ",
52- inputEmptyText: "ここにDML(SQL)を入力し、[整形]ボタンを押下してください。",
52+ inputEmptyText: "DML(SQL)を入力し、[整形]ボタンを押下してください。",
53+ outputPlainEmptyText: "DML(SQL)を整形した結果が表示されます。",
54+ outputRichEmptyText: "DML(SQL)を整形した結果が色付きHTMLで表示されます。",
55+ outputLineEmptyText: "DML(SQL)から改行を除去した結果が表示されます。",
56+ outputInfoEmptyText: "DML(SQL)の情報が表示されます。(テスト中)",
57+ outputHistoryEmptyText: "DML(SQL)の履歴が表示されます。",
5358 btnFormat: "整形",
5459 btnClear: "クリア",
5560 btnConfig: "設定"
@@ -83,6 +88,11 @@
8388 formatShortcut: "FormatShortcut",
8489 tabName: "NewTab",
8590 inputEmptyText : "Please input DML(SQL) here and push the Format button.",
91+ outputPlainEmptyText: "",
92+ outputRichEmptyText: "",
93+ outputLineEmptyText: "",
94+ outputInfoEmptyText: "",
95+ outputHistoryEmptyText: "",
8696 btnFormat: "Format",
8797 btnClear: "Clear",
8898 btnConfig: "Config"
@@ -156,6 +166,7 @@
156166 var outPlainText = {
157167 id: "outPlainText",
158168 xtype: "textarea",
169+ emptyText: constant.ui.outputPlainEmptyText,
159170 style: "font-family: \"Courier New\", Courier, monospace;font-weight: normal;"
160171 };
161172
@@ -171,13 +182,23 @@
171182 var outLineText = {
172183 id: "outLineText",
173184 xtype: "textarea",
185+ emptyText: constant.ui.outputLineEmptyText,
174186 style: "font-family: \"Courier New\", Courier, monospace;font-weight: normal;"
175187 };
176188
189+ // Infoタブ
190+ var outInfo = {
191+ id: "outInfo",
192+ xtype: "textarea",
193+ emptyText: constant.ui.outputInfoEmptyText,
194+ style: "font-family: \"Courier New\", Courier, monospace;font-weight: normal;"
195+ };
196+
177197 // Historyタブ
178198 var outHistory = {
179199 id: "outHistory",
180200 xtype: "textarea",
201+ emptyText: constant.ui.outputHistoryEmptyText,
181202 style: "font-family: \"Courier New\", Courier, monospace;font-weight: normal;"
182203 };
183204
@@ -286,30 +307,6 @@
286307 region: "north"
287308 });
288309
289- // IE用ショートカットを表示しない
290- if(!window.clipboardData) {
291-
292- inputPanel["topToolbar"]["items"].removeKey("ieShortcut");
293- }
294-
295- // Rich Textタブを表示しない
296- if (configRichTab == 2) {
297-
298- inputPanel["topToolbar"]["items"].removeKey("tbarRichText");
299- }
300-
301- // Line Textタブを表示しない
302- if (configLineTab == 2) {
303-
304- inputPanel["topToolbar"]["items"].removeKey("tbarLineText");
305- }
306-
307- // Historyタブを表示しない
308- if (configHistoryTab == 2) {
309-
310- inputPanel["topToolbar"]["items"].removeKey("tbarHistory");
311- }
312-
313310 // 出力パネルを作成
314311 var outPanel = new Ext.Panel({
315312 id: "outPanel",
@@ -350,6 +347,12 @@
350347 items: outLineText
351348 },
352349 {
350+ id: "outInfoTab",
351+ title: "Info(TEST)",
352+ layout: "fit",
353+ items: outInfo
354+ },
355+ {
353356 id: "outHistoryTab",
354357 title: "History",
355358 layout: "fit",
@@ -361,22 +364,32 @@
361364 region: "center"
362365 });
363366
364- // Rich Textタブを表示しない
367+ // IE用ショートカットを表示しない
368+ if(!window.clipboardData) {
369+ inputPanel["topToolbar"]["items"].removeKey("ieShortcut");
370+ }
371+
372+ // Rich Textタブとツールバーを表示しない
365373 if (configRichTab == 2) {
366-
367374 outPanel["items"]["items"][0]["items"].removeKey("outRichTab");
375+ inputPanel["topToolbar"]["items"].removeKey("tbarRichText");
368376 }
369377
370- // Line Textタブを表示しない
378+ // Line Textタブとツールバーを表示しない
371379 if (configLineTab == 2) {
372-
373380 outPanel["items"]["items"][0]["items"].removeKey("outLineTab");
381+ inputPanel["topToolbar"]["items"].removeKey("tbarLineText");
374382 }
375383
376- // Historyタブを表示しない
384+ // Infoタブを表示しない
385+ if (configInfoTab == 2) {
386+ outPanel["items"]["items"][0]["items"].removeKey("outInfoTab");
387+ }
388+
389+ // Historyタブとツールバーを表示しない
377390 if (configHistoryTab == 2) {
378-
379391 outPanel["items"]["items"][0]["items"].removeKey("outHistoryTab");
392+ inputPanel["topToolbar"]["items"].removeKey("tbarHistory");
380393 }
381394
382395 // Viewportを設定
@@ -623,6 +636,8 @@
623636
624637 } else {
625638
639+ tableArray = new Array();
640+
626641 // 入力タブ名を変更
627642 var tabTitle = input.trim().substr(0, 20);
628643 var activeId = "inTextarea__" + Ext.getCmp("inTextarea").getActiveTab().id;
@@ -645,6 +660,20 @@
645660 Ext.getCmp("outLineText").setValue(breakerDML("LINE", input));
646661 }
647662
663+ if (configInfoTab != 2) {
664+
665+ // 重複を除去する
666+ var tableUniqueArray = tableArray.filter(function (x, i, self) {
667+ return self.indexOf(x) === i;
668+ });
669+
670+ // Line Textタブを生成
671+ var lb = configLineBreak == 2 ? "\n" : "\r\n";
672+ var value = "【TABLE/VIEW】" + lb;
673+ value += tableArray.join(lb) + lb;
674+ Ext.getCmp("outInfo").setValue(value);
675+ }
676+
648677 if (configHistoryTab != 2) {
649678
650679 // Historyタブを生成
@@ -671,6 +700,7 @@
671700 }
672701 Ext.getCmp("outPlainText").setValue("");
673702 Ext.getDom("outRichText") == null ? "" : Ext.getDom("outRichText").innerHTML = "";
703+ Ext.getCmp("outInfo").setValue("");
674704 Ext.getCmp("outLineText").setValue("");
675705 if (configHistoryTab != 2) {
676706 Ext.getCmp("outHistory").setValue("");
@@ -694,7 +724,7 @@
694724 if (Ext.getCmp("outPlainText").getValue() != "") {
695725 Ext.getDom("outRichText").innerHTML = getRichText(Ext.getCmp("outPlainText").getValue());
696726 } else {
697- Ext.getDom("outRichText").innerHTML = "";
727+ Ext.getDom("outRichText").innerHTML = "<div style='font-family: &quot;Courier New&quot;, Courier, monospace;padding-top: 2px;padding-left: 3px;' class='x-form-textarea x-form-field x-form-empty-field'>" + constant.ui.outputRichEmptyText + "</div>";
698728 }
699729 }
700730
--- trunk/DMLBreaker3.x/config.js (revision 72)
+++ trunk/DMLBreaker3.x/config.js (revision 73)
@@ -20,6 +20,9 @@
2020 // Line Textタブ(★1:表示、2:非表示)
2121 var configLineTab = 1;
2222
23+// Infoタブ(★1:表示、2:非表示)
24+var configInfoTab = 1;
25+
2326 // Historyタブ(★1:表示、2:非表示)
2427 var configHistoryTab = 1;
2528
Show on old repository browser