diff --git a/cli/item_manager_table.py b/cli/item_manager_table.py index 3ff40e3..fec1839 100644 --- a/cli/item_manager_table.py +++ b/cli/item_manager_table.py @@ -1,3 +1,4 @@ +import pickle from dataclasses import dataclass, field from typing import List, Dict, Any, Optional from rich.console import Console @@ -118,6 +119,23 @@ class ItemManager: console.print(table) + def save_to_file(self, filename: str): + with open(filename, 'wb') as f: + pickle.dump(self, f) + print(f"ItemManager saved to {filename}") + + @staticmethod + def load_from_file(filename: str) -> 'ItemManager': + with open(filename, 'rb') as f: + item_manager = pickle.load(f) + print(f"ItemManager loaded from {filename}") + return item_manager + + @classmethod + def from_json_list(cls, json_list: List[Dict[str, Any]]): + item_manager = cls() + item_manager.add_items_from_json_list(json_list) + return item_manager item_manager = ItemManager() @@ -137,3 +155,12 @@ json_list_2 = [ item_manager.add_items_from_json_list(json_list_2, data_type='old') item_manager.print_items_as_table() + +# Save to file +item_manager.save_to_file('item_manager.pkl') + +# Load from file +loaded_item_manager = ItemManager.load_from_file('item_manager.pkl') + +# Print loaded items as table +loaded_item_manager.print_items_as_table() diff --git a/cli/jql_utils.py b/cli/jql_utils.py index b28685a..5259b4f 100644 --- a/cli/jql_utils.py +++ b/cli/jql_utils.py @@ -12,6 +12,7 @@ from prompt_toolkit.lexers import PygmentsLexer from prompt_toolkit.shortcuts import confirm from prompt_toolkit.styles import Style from prompt_toolkit.validation import ValidationError, Validator +from prompt_toolkit.formatted_text import HTML, merge_formatted_text from pygments.lexer import RegexLexer from pygments.token import (Error, Keyword, Name, Operator, Punctuation, @@ -351,10 +352,12 @@ class JQLPrompt: def get_query_count(self): space = self.console.width // 3 query_count_str = f"Query Count: {self.query_count}" if self.query_count else "" + query_count_html = HTML(f"") issue_count_str = f"Issues Added: {self.issue_count}" if self.issue_count else "" + issue_count_html = HTML(f"") total_issue_count_str = f"Total Issues: {self.total_issue_count}" if self.total_issue_count else "" - plain_text = f"{query_count_str:^{space}}{issue_count_str:^{space}}{total_issue_count_str:^{space}}" - return [("bg:#2E3440 #D8DEE9", plain_text)] + total_issue_count_html = HTML(f"") + return merge_formatted_text([query_count_html, issue_count_html, total_issue_count_html]) def create_jql_prompt_session(self): completer: JQLCompleter = JQLCompleter(completions)