Hi Dave,
Please find patch attached, There were two issues,
1) We removed the default button to clear the editor window, it
broke _clear_query_tool() functionality.
2) The buttons arrangements, we added new Edit button in between Delete and
Filter button causing the "Explain" -> "Explain Options" sub menu to go out
of browser visibility in feature test, so it was failing.
I have put Edit button near Clear button for now, until we come up with new
design for our editor for displaying these options.
--
Regards,
Murtuza Zabuawala
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
On Thu, Jul 20, 2017 at 6:04 PM, Murtuza Zabuawala <
[email protected]> wrote:
> Hi Dave,
>
> I am working on this, will send you patch soon.
>
> On Thu, Jul 20, 2017 at 5:53 PM, Dave Page <[email protected]> wrote:
>
>> Did you get a chance to look at this yet Murtuza?
>>
>> On Wed, Jul 19, 2017 at 3:37 PM, Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>> Sure, Will take a look.
>>>
>>> --
>>> Regards,
>>> Murtuza Zabuawala
>>> EnterpriseDB: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>> On Wed, Jul 19, 2017 at 8:00 PM, Dave Page <[email protected]> wrote:
>>>
>>>> Except I managed to break a couple of tests :-(. Can you take a look
>>>> please? I've had some other work come up that I need to deal with.
>>>>
>>>> ======================================================================
>>>> ERROR: runTest (pgadmin.feature_tests.query_t
>>>> ool_journey_test.QueryToolJourneyTest)
>>>> Tests the path through the query tool
>>>> ----------------------------------------------------------------------
>>>> Traceback (most recent call last):
>>>> File
>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/query_tool_journey_test.py",
>>>> line 45, in runTest
>>>> self._test_history_tab()
>>>> File
>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/query_tool_journey_test.py",
>>>> line 71, in _test_history_tab
>>>> self.__clear_query_tool()
>>>> File
>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/query_tool_journey_test.py",
>>>> line 91, in __clear_query_tool
>>>> self.page.click_element(self.page.find_by_xpath("//*[@id='bt
>>>> n-edit']"))
>>>> File
>>>> "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py",
>>>> line 148, in find_by_xpath
>>>> return self.wait_for_element(lambda driver:
>>>> driver.find_element_by_xpath(xpath))
>>>> File
>>>> "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py",
>>>> line 232, in wait_for_element
>>>> return self._wait_for("element to exist", element_if_it_exists)
>>>> File
>>>> "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py",
>>>> line 282, in _wait_for
>>>> "Timed out waiting for " + waiting_for_message)
>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa
>>>> ges/selenium/webdriver/support/wait.py", line 80, in until
>>>> raise TimeoutException(message, screen, stacktrace)
>>>> TimeoutException: Message: Timed out waiting for element to exist
>>>>
>>>>
>>>> ======================================================================
>>>> ERROR: runTest (pgadmin.feature_tests.query_t
>>>> ool_tests.QueryToolFeatureTest)
>>>> Query tool feature test
>>>> ----------------------------------------------------------------------
>>>> Traceback (most recent call last):
>>>> File
>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/query_tool_tests.py",
>>>> line 52, in runTest
>>>> self._clear_query_tool()
>>>> File
>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/query_tool_tests.py",
>>>> line 173, in _clear_query_tool
>>>> self.page.find_by_id("btn-edit").click()
>>>> File
>>>> "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py",
>>>> line 151, in find_by_id
>>>> return self.wait_for_element(lambda driver:
>>>> driver.find_element_by_id(element_id))
>>>> File
>>>> "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py",
>>>> line 232, in wait_for_element
>>>> return self._wait_for("element to exist", element_if_it_exists)
>>>> File
>>>> "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py",
>>>> line 282, in _wait_for
>>>> "Timed out waiting for " + waiting_for_message)
>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa
>>>> ges/selenium/webdriver/support/wait.py", line 80, in until
>>>> raise TimeoutException(message, screen, stacktrace)
>>>> TimeoutException: Message: Timed out waiting for element to exist
>>>>
>>>>
>>>> ----------------------------------------------------------------------
>>>> Ran 9 tests in 262.111s
>>>>
>>>> On Wed, Jul 19, 2017 at 11:55 AM, Murtuza Zabuawala <
>>>> [email protected]> wrote:
>>>>
>>>>> Thank you Dave.
>>>>>
>>>>> On Wed, Jul 19, 2017 at 4:17 PM, Dave Page <[email protected]> wrote:
>>>>>
>>>>>> Thanks, applied.
>>>>>>
>>>>>> I also took the opportunity to tidy up the menus a little and add
>>>>>> access keys for accessibility.
>>>>>>
>>>>>> One change I made was to make the Edit and Clear menus not have a
>>>>>> default option - e.g. instead of a button with a drop-down next to it,
>>>>>> they're now a single dropdown button with icon. I think this works better
>>>>>> as there are no obvious candidates for the "default" option for those
>>>>>> menus. I'm not overly enthusiastic about the look of those buttons
>>>>>> though,
>>>>>> so if anyone has a better idea how they should be styled, please yelp
>>>>>> (CCing Chethana for his input as well)...
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Jul 19, 2017 at 9:56 AM, Murtuza Zabuawala <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Just a FYI,
>>>>>>> You need to run yarn bundle for this to be working as Surinder has
>>>>>>> moved all the CodeMirror code into bundle package.
>>>>>>>
>>>>>>> On Wed, Jul 19, 2017 at 2:20 PM, Murtuza Zabuawala <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> PFA updated patch,
>>>>>>>> 1) Added Keyboard shortcuts to comment line, uncomment line and
>>>>>>>> comment/uncomment block of code also added drop-down for the same.
>>>>>>>> 2) Also added options for indent & unindent code in the same
>>>>>>>> drop-down.
>>>>>>>> 3) Updated shortcut documents accordingly.
>>>>>>>>
>>>>>>>> Please review.
>>>>>>>>
>>>>>>>> On Mon, Jul 17, 2017 at 3:05 PM, Dave Page <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi
>>>>>>>>>
>>>>>>>>> On Mon, Jul 17, 2017 at 10:31 AM, Murtuza Zabuawala <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Dave,
>>>>>>>>>>
>>>>>>>>>> On Mon, Jul 17, 2017 at 2:33 PM, Dave Page <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Jul 12, 2017 at 1:16 PM, Murtuza Zabuawala <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> PFA patch which will add functionality to allow user to
>>>>>>>>>>>> comment/uncomment code in query editor.
>>>>>>>>>>>> RM#2456
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> This is cool, but I'm not sure it's right as-is:
>>>>>>>>>>>
>>>>>>>>>>> * I prefer SQL style commenting, e.g.
>>>>>>>>>>>
>>>>>>>>>>> -- This is a comment
>>>>>>>>>>>
>>>>>>>>>>> Should we make that a config option if CodeMirror can do it? Or
>>>>>>>>>>> a different hotkey?
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>> I'll check the extension code and update you accordingly, and It
>>>>>>>>>> will be good idea to keep the both the options because with large
>>>>>>>>>> code
>>>>>>>>>> block current style works the best.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Right.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> * You've added it as an option to the Clear XXX dropdown, which
>>>>>>>>>>> really isn't the right place in my opinion. Should we add a new
>>>>>>>>>>> drop down
>>>>>>>>>>> for this, and include some/all of the other Editing options on
>>>>>>>>>>> there? E.g.
>>>>>>>>>>> tab/shift-tab.
>>>>>>>>>>>
>>>>>>>>>>> I thought that is misc options dropdown for our editor, but I
>>>>>>>>>> don't see any point adding new drop down for one single option, Can
>>>>>>>>>> we add
>>>>>>>>>> new button instead?
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I think you missed this bit: "and include some/all of the other
>>>>>>>>> Editing options on there? E.g. tab/shift-tab.". Essentially, we'd be
>>>>>>>>> adding
>>>>>>>>> an Edit menu...
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> * I think the docs should say Ctrl+Shift+/ rather than
>>>>>>>>>>> Shift+Ctrl+/, and be ordered in the table to reflect that. It seems
>>>>>>>>>>> more
>>>>>>>>>>> natural to me.
>>>>>>>>>>>
>>>>>>>>>>> Initially I wrote ctrl + shift + /only but when I saw all other
>>>>>>>>>> shortcuts starts with Shift , then I changed it to shift + ctrl + /
>>>>>>>>>> :)
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> No they don't - Ctrl+Alt+Left for example. I believe it's normal
>>>>>>>>> to put Ctrl first, then Shift as it's a modifier.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Thoughts?
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Dave Page
>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>
>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Dave Page
>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>
>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Dave Page
>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>> Twitter: @pgsnake
>>>>>>
>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>
diff --git a/web/pgadmin/feature_tests/query_tool_journey_test.py
b/web/pgadmin/feature_tests/query_tool_journey_test.py
index 56345d7..e283958 100644
--- a/web/pgadmin/feature_tests/query_tool_journey_test.py
+++ b/web/pgadmin/feature_tests/query_tool_journey_test.py
@@ -88,7 +88,12 @@ class QueryToolJourneyTest(BaseFeatureTest):
self.assertIn("SELECT * FROM test_table", history_detail.text)
def __clear_query_tool(self):
- self.page.click_element(self.page.find_by_xpath("//*[@id='btn-edit']"))
+
self.page.click_element(self.page.find_by_xpath("//*[@id='btn-clear-dropdown']"))
+ ActionChains(self.driver) \
+ .move_to_element(self.page.find_by_xpath("//*[@id='btn-clear']")) \
+ .perform()
+
self.page.click_element(self.page.find_by_xpath("//*[@id='btn-clear']"))
+ time.sleep(1)
self.page.click_modal('Yes')
def _navigate_to_query_tool(self):
diff --git a/web/pgadmin/feature_tests/query_tool_tests.py
b/web/pgadmin/feature_tests/query_tool_tests.py
index 6327ad2..0130967 100644
--- a/web/pgadmin/feature_tests/query_tool_tests.py
+++ b/web/pgadmin/feature_tests/query_tool_tests.py
@@ -169,14 +169,13 @@ class QueryToolFeatureTest(BaseFeatureTest):
self.page.toggle_open_tree_item('acceptance_test_db')
def _clear_query_tool(self):
- # clear codemirror.
- self.page.find_by_id("btn-edit").click()
- # wait for alertify dialog open animation to complete.
- time.sleep(1)
-
-
self.page.click_element(self.page.find_by_xpath("//button[contains(.,'Yes')]"))
- # wait for alertify dialog close animation to complete.
+
self.page.click_element(self.page.find_by_xpath("//*[@id='btn-clear-dropdown']"))
+ ActionChains(self.driver) \
+ .move_to_element(self.page.find_by_xpath("//*[@id='btn-clear']")) \
+ .perform()
+
self.page.click_element(self.page.find_by_xpath("//*[@id='btn-clear']"))
time.sleep(1)
+ self.page.click_modal('Yes')
def _on_demand_result(self):
ON_DEMAND_CHUNKS = 2
@@ -314,24 +313,16 @@ SELECT generate_series(1, 1000) as id order by id desc"""
SELECT generate_series(1, 1000) as id order by id desc"""
wait = WebDriverWait(self.page.driver, 10)
-
self.page.fill_codemirror_area_with(query)
-
query_op = self.page.find_by_id("btn-query-dropdown")
query_op.click()
-
ActionChains(self.driver).move_to_element(
query_op.find_element_by_xpath(
"//li[contains(.,'Explain Options')]")).perform()
-
self.page.find_by_id("btn-explain-verbose").click()
-
self.page.find_by_id("btn-explain").click()
-
self.page.wait_for_query_tool_loading_indicator_to_disappear()
-
self.page.click_tab('Data Output')
-
canvas = wait.until(EC.presence_of_element_located(
(By.CSS_SELECTOR, "#datagrid .slick-viewport .grid-canvas"))
)
diff --git a/web/pgadmin/tools/datagrid/templates/datagrid/index.html
b/web/pgadmin/tools/datagrid/templates/datagrid/index.html
index cb70052..9ad02f9 100644
--- a/web/pgadmin/tools/datagrid/templates/datagrid/index.html
+++ b/web/pgadmin/tools/datagrid/templates/datagrid/index.html
@@ -112,33 +112,6 @@
</button>
</div>
<div class="btn-group" role="group" aria-label="">
- <button id="btn-edit-dropdown" type="button" class="btn
btn-default dropdown-toggle"
- data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false"
- title="{{ _('Edit') }}" accesskey="e">
- <i class="fa fa-pencil-square-o" aria-hidden="true"></i>
- <span class="caret"></span> <span class="sr-only">Toggle
Dropdown</span>
- </button>
- <ul class="dropdown-menu dropdown-menu">
- <li>
- <a id="btn-indent-code" href="#">
- <span> {{ _('Indent Selection (Tab)') }} </span>
- </a>
- <a id="btn-unindent-code" href="#">
- <span> {{ _('Unindent Selection (Shift+Tab)') }}
</span>
- </a>
- <a id="btn-comment-line" href="#">
- <span> {{ _('Inline Comment Selection
(Ctrl+Shift+,)') }} </span>
- </a>
- <a id="btn-uncomment-line" href="#">
- <span> {{ _('Inline Uncomment Selection
(Ctrl+Shift+.)') }} </span>
- </a>
- <a id="btn-toggle-comment-block" href="#">
- <span> {{ _('Block Comment/Uncomment Selection
(Ctrl+Shift+/)') }} </span>
- </a>
- </li>
- </ul>
- </div>
- <div class="btn-group" role="group" aria-label="">
<button id="btn-filter" type="button" class="btn btn-default"
title="{{ _('Filter') }}" disabled accesskey="i">
<i class="fa fa-filter" aria-hidden="true"></i>
@@ -241,6 +214,33 @@
<div class="btn-group" role="group" aria-label="">
<button id="btn-edit-dropdown" type="button" class="btn
btn-default dropdown-toggle"
data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false"
+ title="{{ _('Edit') }}" accesskey="e">
+ <i class="fa fa-pencil-square-o" aria-hidden="true"></i>
+ <span class="caret"></span> <span class="sr-only">Toggle
Dropdown</span>
+ </button>
+ <ul class="dropdown-menu dropdown-menu">
+ <li>
+ <a id="btn-indent-code" href="#">
+ <span> {{ _('Indent Selection (Tab)') }} </span>
+ </a>
+ <a id="btn-unindent-code" href="#">
+ <span> {{ _('Unindent Selection (Shift+Tab)') }}
</span>
+ </a>
+ <a id="btn-comment-line" href="#">
+ <span> {{ _('Inline Comment Selection
(Ctrl+Shift+,)') }} </span>
+ </a>
+ <a id="btn-uncomment-line" href="#">
+ <span> {{ _('Inline Uncomment Selection
(Ctrl+Shift+.)') }} </span>
+ </a>
+ <a id="btn-toggle-comment-block" href="#">
+ <span> {{ _('Block Comment/Uncomment Selection
(Ctrl+Shift+/)') }} </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ <div class="btn-group" role="group" aria-label="">
+ <button id="btn-clear-dropdown" type="button" class="btn
btn-default dropdown-toggle"
+ data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false"
title="{{ _('Clear') }}" accesskey="l">
<i class="fa fa-eraser" aria-hidden="true"></i>
<span class="caret"></span> <span class="sr-only">Toggle
Dropdown</span>