Pārlūkot izejas kodu

#414 let ui.log.clear() remove all lines

Falko Schindler 2 gadi atpakaļ
vecāks
revīzija
de84175caa
3 mainītis faili ar 16 papildinājumiem un 0 dzēšanām
  1. 5 0
      nicegui/elements/log.js
  2. 7 0
      nicegui/elements/log.py
  3. 4 0
      tests/test_log.py

+ 5 - 0
nicegui/elements/log.js

@@ -24,6 +24,11 @@ export default {
         this.num_lines -= 1;
         this.num_lines -= 1;
       }
       }
     },
     },
+    clear() {
+      const textarea = this.$el;
+      textarea.innerHTML = "";
+      this.num_lines = 0;
+    },
   },
   },
   props: {
   props: {
     max_lines: Number,
     max_lines: Number,

+ 7 - 0
nicegui/elements/log.py

@@ -28,3 +28,10 @@ class Log(Element):
         self.lines.extend(line.splitlines())
         self.lines.extend(line.splitlines())
         self._props['lines'] = '\n'.join(self.lines)
         self._props['lines'] = '\n'.join(self.lines)
         self.run_method('push', line)
         self.run_method('push', line)
+
+    def clear(self) -> None:
+        """Clear the log"""
+        super().clear()
+        self._props['lines'] = ''
+        self.lines.clear()
+        self.run_method('clear')

+ 4 - 0
tests/test_log.py

@@ -15,6 +15,10 @@ def test_log(screen: Screen):
     screen.open('/')
     screen.open('/')
     assert screen.selenium.find_element(By.ID, log.id).text == 'B\nC\nD'
     assert screen.selenium.find_element(By.ID, log.id).text == 'B\nC\nD'
 
 
+    log.clear()
+    screen.wait(0.5)
+    assert screen.selenium.find_element(By.ID, log.id).text == ''
+
 
 
 def test_log_with_newlines(screen: Screen):
 def test_log_with_newlines(screen: Screen):
     log = ui.log(max_lines=3)
     log = ui.log(max_lines=3)