Browse Source

#288 keep copy of log lines on server for new clients to connect

Falko Schindler 2 years ago
parent
commit
febe05d368
2 changed files with 11 additions and 0 deletions
  1. 6 0
      nicegui/elements/log.js
  2. 5 0
      nicegui/elements/log.py

+ 6 - 0
nicegui/elements/log.js

@@ -5,6 +5,11 @@ export default {
       num_lines: 0,
     };
   },
+  mounted() {
+    const text = decodeURIComponent(this.lines);
+    this.$el.innerHTML = text;
+    this.num_lines = text ? text.split("\n").length : 0;
+  },
   methods: {
     push(line) {
       const decoded = decodeURIComponent(line);
@@ -22,5 +27,6 @@ export default {
   },
   props: {
     max_lines: Number,
+    lines: String,
   },
 };

+ 5 - 0
nicegui/elements/log.py

@@ -1,3 +1,4 @@
+from collections import deque
 from typing import Optional
 
 from ..dependencies import register_component
@@ -17,8 +18,12 @@ class Log(Element):
         """
         super().__init__('log')
         self._props['max_lines'] = max_lines
+        self._props['lines'] = ''
         self.classes('border whitespace-pre font-mono')
         self.style('opacity: 1 !important; cursor: text !important')
+        self.lines: deque[str] = deque(maxlen=max_lines)
 
     def push(self, line: str) -> None:
+        self.lines.append(line)
+        self._props['lines'] = '\n'.join(self.lines)
         self.run_method('push', line)