From 1dd473ca546ece333cd242cbfdf6f3f9578a1bbd Mon Sep 17 00:00:00 2001 From: Jacob Daniel Bennett Date: Mon, 2 Nov 2020 12:25:17 -0500 Subject: [PATCH 01/32] Implementation of headers only by passing a boolean to the Item class to include all or part of the item --- api/ECNQueue.py | 23 +++++++++++++++++------ api/api.py | 2 +- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/api/ECNQueue.py b/api/ECNQueue.py index 6d73768..f6f0ffc 100644 --- a/api/ECNQueue.py +++ b/api/ECNQueue.py @@ -51,7 +51,7 @@ currentFileDirectory = os.path.dirname(currentFilePath) currentFileDirectoryParent = os.path.dirname(currentFileDirectory) queueDirectory = os.path.join(currentFileDirectoryParent, "q-snapshot") - +#queueDirectory = "/home/pier/e/benne238/personalQueues" # Queues to not load in getQueues() queuesToIgnore = ["archives", "drafts", "inbox", "coral"] @@ -106,7 +106,7 @@ class Item: jsonData: A JSON serializable representation of the Item. """ - def __init__(self, queue: str, number: int) -> None: + def __init__(self, queue: str, number: int, wholeItem: bool) -> None: self.queue = queue try: self.number = int(number) @@ -118,7 +118,10 @@ def __init__(self, queue: str, number: int) -> None: self.lastUpdated = self.__getLastUpdated() self.__rawItem = self.__getRawItem() self.headers = self.__parseHeaders() - self.content = self.__parseSections() + + if wholeItem: + self.content = self.__parseSections() + self.isLocked = self.__isLocked() self.userEmail = self.__parseFromData(data="userEmail") self.userName = self.__parseFromData(data="userName") @@ -138,7 +141,7 @@ def __init__(self, queue: str, number: int) -> None: "number": self.number, "lastUpdated": self.lastUpdated, "headers": self.headers, - "content": self.content, + #"content": self.content, "isLocked": self.isLocked, "userEmail": self.userEmail, "userName": self.userName, @@ -151,6 +154,8 @@ def __init__(self, queue: str, number: int) -> None: "building": self.building, "dateReceived": self.dateReceived } + if wholeItem: + self.jsonData["content"] = self.content def __getLastUpdated(self) -> str: """Returns last modified time of item reported by the filesystem in mm-dd-yy hh:mm am/pm format. @@ -1247,7 +1252,7 @@ def __getItems(self) -> list: isFile = True if os.path.isfile(itemPath) else False if isFile and isValidItemName(item): - items.append(Item(self.name, item)) + items.append(Item(self.name, item, False)) return items @@ -1331,4 +1336,10 @@ def loadQueues() -> list: for queue in getValidQueues(): queues.append(Queue(queue)) - return queues \ No newline at end of file + return queues +if __name__ == "__main__": + queueList = [] + validQueues = getValidQueues() + for queue in validQueues: + queueList.append(Queue(queue).toJson()) + print() \ No newline at end of file diff --git a/api/api.py b/api/api.py index f77e7fc..a4973fd 100644 --- a/api/api.py +++ b/api/api.py @@ -40,7 +40,7 @@ def get(self, queue: str, number: int) -> str: Returns: str: JSON representation of the item requested. """ - return ECNQueue.Item(queue, number).toJson() + return ECNQueue.Item(queue, number, True).toJson() class Queue(Resource): def get(self, queue: str) -> str: From afaaf81e9563e98144565489c3728786e8dd327f Mon Sep 17 00:00:00 2001 From: Jacob Daniel Bennett Date: Tue, 3 Nov 2020 10:58:41 -0500 Subject: [PATCH 02/32] update documentation for header-only and more efficient jsondata definition --- api/ECNQueue.py | 65 ++++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/api/ECNQueue.py b/api/ECNQueue.py index f6f0ffc..904e7f0 100644 --- a/api/ECNQueue.py +++ b/api/ECNQueue.py @@ -83,16 +83,16 @@ def isValidItemName(name: str) -> bool: # Classes #------------------------------------------------------------------------------# class Item: - """A single issue. + """A single whole issue or jsut the issues header information. Example: # Create an Item (ce100) - >>> item = Item("ce", 100) + >>> item = Item("ce", 100, True) Attributes: lastUpdated: An ISO 8601 formatted time string showing the last time the file was updated according to the filesystem. headers: A list of dictionaries containing header keys and values. - content: A list of section dictionaries. + content: A list of section dictionaries (only included if wholeItem is True). isLocked: A boolean showing whether or not a lockfile for the item is present. userEmail: The email address of the person who this item is from. userName: The real name of the person who this item is from. @@ -108,6 +108,7 @@ class Item: def __init__(self, queue: str, number: int, wholeItem: bool) -> None: self.queue = queue + try: self.number = int(number) except ValueError: @@ -118,10 +119,7 @@ def __init__(self, queue: str, number: int, wholeItem: bool) -> None: self.lastUpdated = self.__getLastUpdated() self.__rawItem = self.__getRawItem() self.headers = self.__parseHeaders() - - if wholeItem: - self.content = self.__parseSections() - + if wholeItem: self.content = self.__parseSections() self.isLocked = self.__isLocked() self.userEmail = self.__parseFromData(data="userEmail") self.userName = self.__parseFromData(data="userName") @@ -134,28 +132,32 @@ def __init__(self, queue: str, number: int, wholeItem: bool) -> None: self.building = self.__getMostRecentHeaderByType("Building") self.dateReceived = self.__getFormattedDate( self.__getMostRecentHeaderByType("Date")) - - # TODO: Autopopulate jsonData w/ __dir__() command. Exclude `^_` and `jsonData`. - self.jsonData = { - "queue": self.queue, - "number": self.number, - "lastUpdated": self.lastUpdated, - "headers": self.headers, - #"content": self.content, - "isLocked": self.isLocked, - "userEmail": self.userEmail, - "userName": self.userName, - "userAlias": self.userAlias, - "assignedTo": self.assignedTo, - "subject": self.subject, - "status": self.status, - "priority": self.priority, - "department": self.department, - "building": self.building, - "dateReceived": self.dateReceived - } - if wholeItem: - self.jsonData["content"] = self.content + self.jsonData = {} + + for attribute in self.__dir__(): + if "_" not in attribute and attribute != "toJson" and attribute != "jsonData": + self.jsonData[attribute] = self.__getattribute__(attribute) + + # self.jsonData = { + # "queue": self.queue, + # "number": self.number, + # "lastUpdated": self.lastUpdated, + # "headers": self.headers, + # #"content": self.content, + # "isLocked": self.isLocked, + # "userEmail": self.userEmail, + # "userName": self.userName, + # "userAlias": self.userAlias, + # "assignedTo": self.assignedTo, + # "subject": self.subject, + # "status": self.status, + # "priority": self.priority, + # "department": self.department, + # "building": self.building, + # "dateReceived": self.dateReceived + # } + # if wholeItem: + # self.jsonData["content"] = self.content def __getLastUpdated(self) -> str: """Returns last modified time of item reported by the filesystem in mm-dd-yy hh:mm am/pm format. @@ -1338,8 +1340,5 @@ def loadQueues() -> list: return queues if __name__ == "__main__": - queueList = [] - validQueues = getValidQueues() - for queue in validQueues: - queueList.append(Queue(queue).toJson()) + item = Item("ce", 100, False) print() \ No newline at end of file From 0123593cb0c0358df270fc48032c209d466de6f7 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Sun, 29 Nov 2020 13:13:20 -0500 Subject: [PATCH 03/32] Remove debugging comments --- api/ECNQueue.py | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/api/ECNQueue.py b/api/ECNQueue.py index 904e7f0..2d44844 100644 --- a/api/ECNQueue.py +++ b/api/ECNQueue.py @@ -51,7 +51,7 @@ currentFileDirectory = os.path.dirname(currentFilePath) currentFileDirectoryParent = os.path.dirname(currentFileDirectory) queueDirectory = os.path.join(currentFileDirectoryParent, "q-snapshot") -#queueDirectory = "/home/pier/e/benne238/personalQueues" + # Queues to not load in getQueues() queuesToIgnore = ["archives", "drafts", "inbox", "coral"] @@ -138,27 +138,6 @@ def __init__(self, queue: str, number: int, wholeItem: bool) -> None: if "_" not in attribute and attribute != "toJson" and attribute != "jsonData": self.jsonData[attribute] = self.__getattribute__(attribute) - # self.jsonData = { - # "queue": self.queue, - # "number": self.number, - # "lastUpdated": self.lastUpdated, - # "headers": self.headers, - # #"content": self.content, - # "isLocked": self.isLocked, - # "userEmail": self.userEmail, - # "userName": self.userName, - # "userAlias": self.userAlias, - # "assignedTo": self.assignedTo, - # "subject": self.subject, - # "status": self.status, - # "priority": self.priority, - # "department": self.department, - # "building": self.building, - # "dateReceived": self.dateReceived - # } - # if wholeItem: - # self.jsonData["content"] = self.content - def __getLastUpdated(self) -> str: """Returns last modified time of item reported by the filesystem in mm-dd-yy hh:mm am/pm format. From db08a0f97cb0a870e04c7c91448d44fe5e18fcb3 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Sun, 29 Nov 2020 15:17:38 -0500 Subject: [PATCH 04/32] Change wholeItem to headersOnly and add to Item, Queue and loadAllQueues --- api/ECNQueue.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/api/ECNQueue.py b/api/ECNQueue.py index 2d44844..6ee4122 100644 --- a/api/ECNQueue.py +++ b/api/ECNQueue.py @@ -87,12 +87,12 @@ class Item: Example: # Create an Item (ce100) - >>> item = Item("ce", 100, True) + >>> item = Item("ce", 100, headersOnly=false) Attributes: lastUpdated: An ISO 8601 formatted time string showing the last time the file was updated according to the filesystem. headers: A list of dictionaries containing header keys and values. - content: A list of section dictionaries (only included if wholeItem is True). + content: A list of section dictionaries (only included if headersOnly is False). isLocked: A boolean showing whether or not a lockfile for the item is present. userEmail: The email address of the person who this item is from. userName: The real name of the person who this item is from. @@ -106,7 +106,7 @@ class Item: jsonData: A JSON serializable representation of the Item. """ - def __init__(self, queue: str, number: int, wholeItem: bool) -> None: + def __init__(self, queue: str, number: int, headersOnly: bool = False) -> None: self.queue = queue try: @@ -119,7 +119,7 @@ def __init__(self, queue: str, number: int, wholeItem: bool) -> None: self.lastUpdated = self.__getLastUpdated() self.__rawItem = self.__getRawItem() self.headers = self.__parseHeaders() - if wholeItem: self.content = self.__parseSections() + if not headersOnly: self.content = self.__parseSections() self.isLocked = self.__isLocked() self.userEmail = self.__parseFromData(data="userEmail") self.userName = self.__parseFromData(data="userName") @@ -1209,8 +1209,9 @@ class Queue: jsonData: A JSON serializable representation of the Queue. """ - def __init__(self, name: str) -> None: + def __init__(self, name: str, headersOnly: bool = True) -> None: self.name = name + self.headersOnly = headersOnly self.__directory = queueDirectory + "/" + self.name + "/" self.items = self.__getItems() @@ -1233,7 +1234,7 @@ def __getItems(self) -> list: isFile = True if os.path.isfile(itemPath) else False if isFile and isValidItemName(item): - items.append(Item(self.name, item, False)) + items.append(Item(self.name, item, headersOnly=self.headersOnly)) return items @@ -1306,7 +1307,7 @@ def getQueueCounts() -> list: return queueInfo -def loadQueues() -> list: +def loadAllQueues(headersOnly: bool = True) -> list: """Return a list of Queues for each queue. Returns: @@ -1315,9 +1316,6 @@ def loadQueues() -> list: queues = [] for queue in getValidQueues(): - queues.append(Queue(queue)) + queues.append(Queue(queue, headersOnly=headersOnly)) - return queues -if __name__ == "__main__": - item = Item("ce", 100, False) - print() \ No newline at end of file + return queues \ No newline at end of file From 5dc0aa72f42d1e45a9f9c8abfd68b560330ced27 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Sun, 29 Nov 2020 17:06:15 -0500 Subject: [PATCH 05/32] Update docs --- api/ECNQueue.py | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/api/ECNQueue.py b/api/ECNQueue.py index 6ee4122..881fb4b 100644 --- a/api/ECNQueue.py +++ b/api/ECNQueue.py @@ -83,11 +83,13 @@ def isValidItemName(name: str) -> bool: # Classes #------------------------------------------------------------------------------# class Item: - """A single whole issue or jsut the issues header information. + """A chronological representation of an interaction with a user. Example: # Create an Item (ce100) >>> item = Item("ce", 100, headersOnly=false) + # Create an Item without parsing its contents (ce100) + >>> item = Item("ce", 100, headersOnly=True) Attributes: lastUpdated: An ISO 8601 formatted time string showing the last time the file was updated according to the filesystem. @@ -104,17 +106,17 @@ class Item: department: The most recent department for this item. dateReceived: The date this item was created. jsonData: A JSON serializable representation of the Item. + + Raises: + ValueError: When the number passed to the constructor cannot be parsed. """ def __init__(self, queue: str, number: int, headersOnly: bool = False) -> None: self.queue = queue - try: self.number = int(number) except ValueError: - raise ValueError(" Could not convert \"" + - number + "\" to an integer") - + raise ValueError(f'Could not convert "{number}" to an integer') self.__path = "/".join([queueDirectory, self.queue, str(self.number)]) self.lastUpdated = self.__getLastUpdated() self.__rawItem = self.__getRawItem() @@ -130,8 +132,7 @@ def __init__(self, queue: str, number: int, headersOnly: bool = False) -> None: self.priority = self.__getMostRecentHeaderByType("Priority") self.department = self.__getMostRecentHeaderByType("Department") self.building = self.__getMostRecentHeaderByType("Building") - self.dateReceived = self.__getFormattedDate( - self.__getMostRecentHeaderByType("Date")) + self.dateReceived = self.__getFormattedDate(self.__getMostRecentHeaderByType("Date")) self.jsonData = {} for attribute in self.__dir__(): @@ -1197,11 +1198,13 @@ def __repr__(self) -> str: # TODO: Make Queue iterable using __iter__. See: https://thispointer.com/python-how-to-make-a-class-iterable-create-iterator-class-for-it/ class Queue: - """A collection of items. + """A collection of Items. Example: # Create a queue (ce) >>> queue = Queue("ce") + # Create a queue without parsing item contents (ce) + >>> queue = Queue("ce", headersOnly=False) Attributes: name: The name of the queue. @@ -1306,12 +1309,20 @@ def getQueueCounts() -> list: queueInfo.append( {"name": queue, "number_of_items": len(validItems)} ) return queueInfo - def loadAllQueues(headersOnly: bool = True) -> list: """Return a list of Queues for each queue. + Example: + # Load all Queues without parsing Item content + >>> loadAllQueues(); + Load all Queues and parsing Item content + >>> loadAllQueues(headersOnly=False) + + Args: + headersOnly (bool, optional): Whether or not to parse headers only. Defaults to True. + Returns: - list: list of Queues for each queue. + list: List of Queues for each queue. """ queues = [] From 21f347ca520d87cd4e35c602689b31ea471c564f Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Sun, 29 Nov 2020 17:10:16 -0500 Subject: [PATCH 06/32] Update docs --- api/ECNQueue.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/api/ECNQueue.py b/api/ECNQueue.py index 881fb4b..f9b6fce 100644 --- a/api/ECNQueue.py +++ b/api/ECNQueue.py @@ -22,10 +22,6 @@ Attributes: queueDirectory: The directory to load queues from. queuesToIgnore: Queues that will not be loaded when running getQueues() - -Raises: - # TODO: Add description(s) of when a ValueError is raised. - ValueError: [description] """ #------------------------------------------------------------------------------# From d8225d8cb563c81259721019c4fdd4c9f10f2bb6 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Sun, 29 Nov 2020 22:05:34 -0500 Subject: [PATCH 07/32] Add headersOnly flags to API --- api/api.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/api/api.py b/api/api.py index a4973fd..301117b 100644 --- a/api/api.py +++ b/api/api.py @@ -1,4 +1,4 @@ -from flask import Flask +from flask import Flask, request from flask_restful import Api, Resource import ECNQueue @@ -40,7 +40,9 @@ def get(self, queue: str, number: int) -> str: Returns: str: JSON representation of the item requested. """ - return ECNQueue.Item(queue, number, True).toJson() + + headersOnly = True if request.args.get("headersOnly") == "True" else False + return ECNQueue.Item(queue, number, headersOnly=headersOnly).toJson() class Queue(Resource): def get(self, queue: str) -> str: @@ -52,12 +54,12 @@ def get(self, queue: str) -> str: Returns: str: JSON representation of the queue requested. """ + headersOnly = False if request.args.get("headersOnly") == "False" else True queues_requested = queue.split("+") queues = [] for queue in queues_requested: - queues.append(ECNQueue.Queue(queue).toJson()) - + queues.append(ECNQueue.Queue(queue, headersOnly=headersOnly).toJson()) return queues class QueueList(Resource): @@ -88,4 +90,4 @@ def get(self) -> list: if __name__ == "__main__": - app.run() + app.run() \ No newline at end of file From fd49dd7bf969733b4a86daca87d01268c5cbaae3 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Sun, 21 Feb 2021 17:16:48 -0500 Subject: [PATCH 08/32] Add headersOnly to docstrings --- api/ECNQueue.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/api/ECNQueue.py b/api/ECNQueue.py index f9b6fce..3189423 100644 --- a/api/ECNQueue.py +++ b/api/ECNQueue.py @@ -58,7 +58,10 @@ #------------------------------------------------------------------------------# def isValidItemName(name: str) -> bool: - """Returns true if file name is a valid item name + """Returns true if file name is a valid item name. + + A file name is true if it contains between 1 and 3 integer numbers allowing for + any integer between 0 and 999. Example: isValidItemName("21") -> true @@ -87,6 +90,11 @@ class Item: # Create an Item without parsing its contents (ce100) >>> item = Item("ce", 100, headersOnly=True) + Args: + queue (str): The name of the Item's queue. + number (int): The number of the Item. + headersOnly (bool, optional): Whether or not to parse headers only. Defaults to True. + Attributes: lastUpdated: An ISO 8601 formatted time string showing the last time the file was updated according to the filesystem. headers: A list of dictionaries containing header keys and values. @@ -1192,7 +1200,6 @@ def toJson(self) -> dict: def __repr__(self) -> str: return self.queue + str(self.number) -# TODO: Make Queue iterable using __iter__. See: https://thispointer.com/python-how-to-make-a-class-iterable-create-iterator-class-for-it/ class Queue: """A collection of Items. @@ -1202,6 +1209,10 @@ class Queue: # Create a queue without parsing item contents (ce) >>> queue = Queue("ce", headersOnly=False) + Args: + queue (str): The name of the queue. + headersOnly (bool, optional): Whether or not to parse headers only. Defaults to True. + Attributes: name: The name of the queue. items: A list of Items in the queue. @@ -1213,6 +1224,7 @@ def __init__(self, name: str, headersOnly: bool = True) -> None: self.headersOnly = headersOnly self.__directory = queueDirectory + "/" + self.name + "/" self.items = self.__getItems() + self._index = 0 self.jsonData = { "name": self.name, From f960cd3061f26a6112352c114b0e92496bfd02bf Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Sun, 21 Feb 2021 17:21:52 -0500 Subject: [PATCH 09/32] Make Queue objects iterable --- api/ECNQueue.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/api/ECNQueue.py b/api/ECNQueue.py index 3189423..1aaa66b 100644 --- a/api/ECNQueue.py +++ b/api/ECNQueue.py @@ -1271,6 +1271,13 @@ def __len__(self) -> int: def __repr__(self) -> str: return f'{self.name}_queue' + # Implements the interable interface requirements by passing direct references + # to the item list's interable values. + def __iter__(self) -> list: + return iter(self.items) + def __next__(self) -> int: + return self.items.__next__() + def getValidQueues() -> list: """Returns a list of queues on the filesystem excluding ignored queues. From c435fe1b948e028ff74977f135d08691b40425c4 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Sun, 21 Feb 2021 17:30:53 -0500 Subject: [PATCH 10/32] Update iterable interface to avoid parse error --- api/ECNQueue.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/ECNQueue.py b/api/ECNQueue.py index 1aaa66b..e0b9d77 100644 --- a/api/ECNQueue.py +++ b/api/ECNQueue.py @@ -1276,7 +1276,7 @@ def __repr__(self) -> str: def __iter__(self) -> list: return iter(self.items) def __next__(self) -> int: - return self.items.__next__() + return iter(self.items).__next__() def getValidQueues() -> list: """Returns a list of queues on the filesystem excluding ignored queues. From 6a1b660da699fea45c8bff9b79da37e7d3a26f1c Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Sun, 21 Feb 2021 17:33:42 -0500 Subject: [PATCH 11/32] Add example to Queue endpoint docs --- api/api.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/api/api.py b/api/api.py index 301117b..f84cb9d 100644 --- a/api/api.py +++ b/api/api.py @@ -15,7 +15,6 @@ def get(self, queue: str, number: int) -> str: """Returns the JSON representation of the item requested. Example: - /api/ce/100 returns: { "lastUpdated": "07-23-20 10:11 PM", "headers": [...], @@ -48,6 +47,12 @@ class Queue(Resource): def get(self, queue: str) -> str: """Returns the JSON representation of the queue requested. + Example: + { + "name": ce, + "items": [...] + } + Args: queue (str): The queue requested. @@ -83,6 +88,8 @@ def get(self) -> list: """ return ECNQueue.getQueueCounts() + + api.add_resource(QueueList, "/api/get_queues") api.add_resource(Item, "/api//") api.add_resource(Queue, "/api/") From 748a49ccfc1c6ce340face856b6e7c7c141b331d Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Mon, 22 Feb 2021 14:00:23 -0500 Subject: [PATCH 12/32] Fix Queue endpoint error from merge --- api/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/api.py b/api/api.py index 1426d8a..d8b0600 100644 --- a/api/api.py +++ b/api/api.py @@ -211,7 +211,7 @@ def get(self, queues: str) -> tuple: tuple: Queues as JSON and HTTP response code. """ headersOnly = False if request.args.get("headersOnly") == "False" else True - queues_requested = queue.split("+") + queues_requested = queues.split("+") queue_list = [] for queue in queues_requested: From 666135fde5880bb1c4278c25fba088f4f914aa2b Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Mon, 22 Feb 2021 15:33:00 -0500 Subject: [PATCH 13/32] Create ItemProvider w/ Docs --- src/components/ItemProvider/ItemProvider.js | 29 +++++++++++++++ src/components/ItemProvider/ItemProvider.md | 41 +++++++++++++++++++++ src/components/ItemProvider/index.js | 1 + 3 files changed, 71 insertions(+) create mode 100644 src/components/ItemProvider/ItemProvider.js create mode 100644 src/components/ItemProvider/ItemProvider.md create mode 100644 src/components/ItemProvider/index.js diff --git a/src/components/ItemProvider/ItemProvider.js b/src/components/ItemProvider/ItemProvider.js new file mode 100644 index 0000000..3434aa0 --- /dev/null +++ b/src/components/ItemProvider/ItemProvider.js @@ -0,0 +1,29 @@ +import React, { useState, createContext, useContext, useEffect } from "react"; + +const ItemContext = createContext(); +const ItemSetterContext = createContext(); + +export const useItem = () => useContext(ItemContext); +export const useItemSetter = () => useContext(ItemSetterContext); + + + +export default function ItemProvider({ children }) { + const [item, setItem] = useState( {} ); + + useEffect( _ => console.log("Current Item is: ", item)); + + const setItemWrapper = (newItem) => { + console.log("Old Item: ", item); + setItem(newItem); + console.log("Set new item."); + } + + return ( + + + {children} + + + ); +}; \ No newline at end of file diff --git a/src/components/ItemProvider/ItemProvider.md b/src/components/ItemProvider/ItemProvider.md new file mode 100644 index 0000000..4653d82 --- /dev/null +++ b/src/components/ItemProvider/ItemProvider.md @@ -0,0 +1,41 @@ +Utility component that uses [React Contexts](https://reactjs.org/docs/context.html) [React Stateful Variables](https://reactjs.org/docs/hooks-state.html) to provide global access to the active item object. + +Two functions are exported: + +Function | Descrioption +- | - +`useItem` | Returns a reference to the state variable holding the current Item. Defaults to `false`. +`useItemSetter` | Returns a reference to the state variable update function. + +For an in depth explanation of this pattern, see [this GitHub comment](https://github.itap.purdue.edu/ECN/webqueue2/issues/15#issuecomment-341). + + +## Usage +```jsx static +// App + + + +``` + +```jsx static +// SomeComponent +import { useEffect } from "react"; +import { useItem, useItemSetter } from "ItemProvider"; + +const activeItem = useItem(); +const setActiveItem = useItemSetter(); + +useEffect( + let item = someFuncToGetItem(); + setActiveItem(item); +); + +return( + { + item + ?

{`${activeItem.queue} ${activeItem.number} was last updated ${activeItem.lastUpdated}.`}

+ :

No item is currently loaded.

+ } +); +``` \ No newline at end of file diff --git a/src/components/ItemProvider/index.js b/src/components/ItemProvider/index.js new file mode 100644 index 0000000..3186bd3 --- /dev/null +++ b/src/components/ItemProvider/index.js @@ -0,0 +1 @@ +export {default, useItem, useItemSetter } from "./ItemProvider"; \ No newline at end of file From 27f9fba335e0c754d89c07d8c845e4a1776b9147 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Mon, 22 Feb 2021 15:33:20 -0500 Subject: [PATCH 14/32] Replace activeItem state variable with context provider values --- src/components/AppView/AppView.js | 4 +++- src/index.js | 10 +++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/components/AppView/AppView.js b/src/components/AppView/AppView.js index 75c7c60..1f5c459 100644 --- a/src/components/AppView/AppView.js +++ b/src/components/AppView/AppView.js @@ -9,9 +9,11 @@ import ItemViewAppBar from "../ItemViewAppBar/"; import ItemView from "../ItemView/"; import QueueSelector from "../QueueSelector/"; import { useToken } from "../AuthProvider/"; +import { useItem, useItemSetter } from "../ItemProvider/"; export default function AppView({ setDarkMode }){ - const [activeItem, setActiveItem] = useState({}); + const activeItem = useItem(); + const setActiveItem = useItemSetter(); const [sidebarOpen, setSidebarOpen] = useState(false); const [queues, setQueues] = useState([]); const [items, setItems] = useState([]); diff --git a/src/index.js b/src/index.js index 799ad12..86dc439 100644 --- a/src/index.js +++ b/src/index.js @@ -7,6 +7,8 @@ import { CssBaseline } from '@material-ui/core'; import { BrowserRouter as Router } from 'react-router-dom'; import { CookiesProvider } from "react-cookie"; import AuthProvider from "./components/AuthProvider/"; +import ItemProvider from "./components/ItemProvider/"; + export const history = createBrowserHistory({ basename: process.env.PUBLIC_URL @@ -17,9 +19,11 @@ ReactDOM.render( - - - + + + + + , From abb9a7976e503a5ceeb4e8da2014595084999831 Mon Sep 17 00:00:00 2001 From: wrigh393 Date: Mon, 22 Feb 2021 17:57:14 -0500 Subject: [PATCH 15/32] Implement code for testing skeleton view UI in ItemBodyView --- src/components/ItemBodyView/ItemBodyView.js | 36 +++++++++++++++++---- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/src/components/ItemBodyView/ItemBodyView.js b/src/components/ItemBodyView/ItemBodyView.js index 08a57f9..eda0813 100644 --- a/src/components/ItemBodyView/ItemBodyView.js +++ b/src/components/ItemBodyView/ItemBodyView.js @@ -1,6 +1,6 @@ import React from "react"; import PropTypes from "prop-types"; -import { Timeline, TimelineItem, TimelineSeparator, TimelineConnector, TimelineContent, TimelineDot } from '@material-ui/lab'; +import { Timeline, TimelineItem, TimelineSeparator, TimelineConnector, TimelineContent, TimelineDot, Skeleton } from '@material-ui/lab'; import { makeStyles } from "@material-ui/core"; import DirectoryInformation from "../DirectoryInformation/"; import Assignment from "../Assignment/"; @@ -41,11 +41,11 @@ export default function ItemBodyView({ item }) { case "status": return case "assignment": - return + return case "reply_to_user": return case "reply_from_user": - return + return case "parse_error": return default: @@ -53,9 +53,14 @@ export default function ItemBodyView({ item }) { }; }; + const testing = true; + return ( - {objectIsEmpty(item) ? "" : item.content.map((section) => ( + {/* Below is the original ternary operation for the map fucntion for future reference */} + {/* {objectIsEmpty(item) ? "" : item.content.map((section) */} + + {testing ? Object.keys(item).map((section) => ( - {generateTimelineItem(section)} + - ))} + )) + : item.content.map((section) => ( + + + + + + {item === undefined + ? + : generateTimelineItem(section) + } + + + ))} ); }; From c73fb0e21b96a15268667e812f250b14d5f084c9 Mon Sep 17 00:00:00 2001 From: wrigh393 Date: Mon, 22 Feb 2021 21:55:19 -0500 Subject: [PATCH 16/32] WIP Skeleton view for ItemTable --- src/components/AppView/AppView.js | 5 +- src/components/ItemTable/ItemTable.js | 89 ++++++++++++++------------- 2 files changed, 50 insertions(+), 44 deletions(-) diff --git a/src/components/AppView/AppView.js b/src/components/AppView/AppView.js index 75c7c60..abcc5ed 100644 --- a/src/components/AppView/AppView.js +++ b/src/components/AppView/AppView.js @@ -17,6 +17,7 @@ export default function AppView({ setDarkMode }){ const [items, setItems] = useState([]); const [selectedQueues, setSelectedQueues] = useState([]); const [queueSelectorOpen, setQueueSelectorOpen] = useState(false); + const [isLoading, setIsLoading] = useState(true); const access_token = useToken(); @@ -43,8 +44,10 @@ export default function AppView({ setDarkMode }){ const apiResponse = await fetch(`/api/${queuesToLoad}`, requestOptions); const queueJson = await apiResponse.json(); + setIsLoading(false); setQueues(queueJson); } else { + setIsLoading(true) setQueues([]) } } @@ -103,7 +106,7 @@ export default function AppView({ setDarkMode }){ value={selectedQueues} setValue={setSelectedQueues} /> - + diff --git a/src/components/ItemTable/ItemTable.js b/src/components/ItemTable/ItemTable.js index 497296d..0cc18b9 100644 --- a/src/components/ItemTable/ItemTable.js +++ b/src/components/ItemTable/ItemTable.js @@ -8,8 +8,9 @@ import ItemTableFilter from "../ItemTableFilter/" import { ArrowDownward, ArrowUpward } from "@material-ui/icons"; import ItemTableCell from "../ItemTableCell"; import LastUpdatedCell from "../LastUpdatedCell/"; +import { Skeleton } from "@material-ui/lab"; -export default function ItemTable({ data, rowCanBeSelected }) { +export default function ItemTable({ data, rowCanBeSelected, loading }) { const [selectedRow, setSelectedRow] = useState({ queue: null, number: null }); const theme = useTheme(); @@ -44,7 +45,7 @@ export default function ItemTable({ data, rowCanBeSelected }) { () => [ { Header: 'Queue', accessor: 'queue', }, { Header: 'Item #', accessor: 'number' }, - { Header: 'From', accessor: 'userAlias'}, + { Header: 'From', accessor: 'userAlias' }, { Header: 'Assigned To', accessor: 'assignedTo' }, { Header: 'Subject', accessor: 'subject' }, { Header: 'Status', accessor: 'status', }, @@ -53,7 +54,7 @@ export default function ItemTable({ data, rowCanBeSelected }) { { Header: 'Department', accessor: 'department' }, { Header: 'Building', accessor: 'building' }, { Header: 'Date Received', accessor: 'dateReceived', sortInverted: true, Cell: ({ value }) => }, - + ], []); const tableInstance = useTable( { @@ -140,46 +141,48 @@ export default function ItemTable({ data, rowCanBeSelected }) { prepareRow(row); let isSelected = selectedRow.queue === row.original.queue && selectedRow.number === row.original.number return ( - { - history.push(`/${row.original.queue}/${row.original.number}`); - setSelectedRow({ queue: row.original.queue, number: row.original.number }); - }} - // This functionality should be achieved by using the selected prop and - // overriding the selected class but this applied the secondary color at 0.08% opacity. - // Overridding the root class is a workaround. - classes={{ - root: (isSelected && rowCanBeSelected) ? classes.rowSelected : classes.bandedRows, - hover: classes.hoverBackgroundColor - }} - {...row.getRowProps()} - > - {row.cells.map(cell => ( - cell.render(_ => { - switch (cell.column.id) { - case "dateReceived": - return ( - - - - ); - case "lastUpdated": - return ( - - ); - default: - return ( - - {cell.value} - - ); - } - }) - ))}; + loading ? : + + { + history.push(`/${row.original.queue}/${row.original.number}`); + setSelectedRow({ queue: row.original.queue, number: row.original.number }); + }} + // This functionality should be achieved by using the selected prop and + // overriding the selected class but this applied the secondary color at 0.08% opacity. + // Overridding the root class is a workaround. + classes={{ + root: (isSelected && rowCanBeSelected) ? classes.rowSelected : classes.bandedRows, + hover: classes.hoverBackgroundColor + }} + {...row.getRowProps()} + > + {row.cells.map(cell => ( + cell.render(_ => { + switch (cell.column.id) { + case "dateReceived": + return ( + + + + ); + case "lastUpdated": + return ( + + ); + default: + return ( + + {cell.value} + + ); + } + }) + ))}; ); })} From c343963d1416b670e4d2ebc3697bdb4145c0f6f2 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Mon, 22 Feb 2021 22:26:39 -0500 Subject: [PATCH 17/32] Refactored queue loading --- src/components/AppView/AppView.js | 54 +++++++++++++++++++------------ 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/src/components/AppView/AppView.js b/src/components/AppView/AppView.js index 1f5c459..8776f0d 100644 --- a/src/components/AppView/AppView.js +++ b/src/components/AppView/AppView.js @@ -12,47 +12,59 @@ import { useToken } from "../AuthProvider/"; import { useItem, useItemSetter } from "../ItemProvider/"; export default function AppView({ setDarkMode }){ - const activeItem = useItem(); - const setActiveItem = useItemSetter(); + // Create stateful variables. const [sidebarOpen, setSidebarOpen] = useState(false); const [queues, setQueues] = useState([]); const [items, setItems] = useState([]); const [selectedQueues, setSelectedQueues] = useState([]); const [queueSelectorOpen, setQueueSelectorOpen] = useState(false); + // Create contextual variables. + const activeItem = useItem(); + const setActiveItem = useItemSetter(); const access_token = useToken(); + // Get Queues from API. useEffect( _ => { - async function getQueues(){ + (async function getQueues(){ if (access_token === null){ - return undefined + return undefined; } if (queueSelectorOpen){ - return undefined + return undefined; } - if (selectedQueues.length > 0){ - let queuesToLoad = ""; - - for (let selectedQueue of selectedQueues){ - queuesToLoad += `+${selectedQueue.name}`; - } + if (selectedQueues.length === 0){ + setQueues([]) + return undefined; + } - let myHeaders = new Headers(); - myHeaders.append("Authorization", `Bearer ${access_token}`); - let requestOptions = { headers: myHeaders }; + let queuesToLoad = ""; - const apiResponse = await fetch(`/api/${queuesToLoad}`, requestOptions); - const queueJson = await apiResponse.json(); - setQueues(queueJson); - } else { - setQueues([]) + if (selectedQueues.length === 1){ + queuesToLoad = selectedQueues[0].name; } - } - getQueues(); + else if (selectedQueues.length > 0){ + selectedQueues.forEach( (queue, index) => ( + index === 0 + ? queuesToLoad += queue.name + : queuesToLoad += `+${queue.name}` + )); + } + + let myHeaders = new Headers(); + myHeaders.append("Authorization", `Bearer ${access_token}`); + let requestOptions = { headers: myHeaders }; + + const apiResponse = await fetch(`/api/${queuesToLoad}`, requestOptions); + const queueJson = await apiResponse.json(); + + setQueues(queueJson); + })(); }, [selectedQueues, access_token, queueSelectorOpen]); + // Populate items array. useEffect( _ => { let tempItems = []; for (let queue of queues){ From 5fcb7d724e3d094fec75138ef4e0d08f92d152b9 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Tue, 23 Feb 2021 09:51:10 -0500 Subject: [PATCH 18/32] Implement loading UI --- src/components/AppView/AppView.js | 4 +- src/components/ItemTable/ItemTable.js | 152 ++++++++++-------- .../ItemTable/loading-annimation.gif | Bin 0 -> 22865 bytes 3 files changed, 85 insertions(+), 71 deletions(-) create mode 100644 src/components/ItemTable/loading-annimation.gif diff --git a/src/components/AppView/AppView.js b/src/components/AppView/AppView.js index d0e11b4..8536140 100644 --- a/src/components/AppView/AppView.js +++ b/src/components/AppView/AppView.js @@ -18,7 +18,7 @@ export default function AppView({ setDarkMode }){ const [items, setItems] = useState([]); const [selectedQueues, setSelectedQueues] = useState([]); const [queueSelectorOpen, setQueueSelectorOpen] = useState(false); - const [isLoading, setIsLoading] = useState(true); + const [isLoading, setIsLoading] = useState(false); // Create contextual variables. const activeItem = useItem(); @@ -41,6 +41,7 @@ export default function AppView({ setDarkMode }){ return undefined; } + setIsLoading(true); let queuesToLoad = ""; if (selectedQueues.length === 1){ @@ -62,6 +63,7 @@ export default function AppView({ setDarkMode }){ const queueJson = await apiResponse.json(); setQueues(queueJson); + setIsLoading(false) })(); }, [selectedQueues, access_token, queueSelectorOpen]); diff --git a/src/components/ItemTable/ItemTable.js b/src/components/ItemTable/ItemTable.js index 0cc18b9..13e96a0 100644 --- a/src/components/ItemTable/ItemTable.js +++ b/src/components/ItemTable/ItemTable.js @@ -1,20 +1,25 @@ import React, { useState } from "react"; import PropTypes from "prop-types"; import { useTable, useFilters, useFlexLayout, useSortBy } from "react-table"; -import { Table, TableBody, TableCell, TableHead, TableRow, TableContainer, Paper, Grid, ButtonGroup, IconButton, makeStyles, useTheme } from "@material-ui/core"; +import { Table, TableBody, TableCell, TableHead, TableRow, TableContainer, Box, Grid, ButtonGroup, IconButton, makeStyles, useTheme } from "@material-ui/core"; import { useHistory } from "react-router-dom"; import RelativeTime from "react-relative-time"; import ItemTableFilter from "../ItemTableFilter/" import { ArrowDownward, ArrowUpward } from "@material-ui/icons"; import ItemTableCell from "../ItemTableCell"; import LastUpdatedCell from "../LastUpdatedCell/"; -import { Skeleton } from "@material-ui/lab"; +import jester from "./loading-annimation.gif"; export default function ItemTable({ data, rowCanBeSelected, loading }) { const [selectedRow, setSelectedRow] = useState({ queue: null, number: null }); const theme = useTheme(); const useStyles = makeStyles({ + loadingAnnimation: { + display: "flex", + justifyContent: "center", + width: "100%" + }, hoverBackgroundColor: { "&:hover": { // The !important is placed here to enforce CSS specificity. @@ -85,64 +90,69 @@ export default function ItemTable({ data, rowCanBeSelected, loading }) { const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow, } = tableInstance; return ( - - - - {headerGroups.map(headerGroup => ( - - {headerGroup.headers.map(column => ( - - - - - {column.render("Filter")} - - - - { - const isSortedAsc = column.isSorted && !column.isSortedDesc; - isSortedAsc ? column.clearSortBy() : column.toggleSortBy(false) - })} - > - - - { - const isSortedDesc = column.isSorted && column.isSortedDesc; - isSortedDesc ? column.clearSortBy() : column.toggleSortBy(true) - })} - > - - - + loading + ? ( + + Items are loading. + + ) + : ( + +
+ + {headerGroups.map(headerGroup => ( + + {headerGroup.headers.map(column => ( + + + + + {column.render("Filter")} + + + + { + const isSortedAsc = column.isSorted && !column.isSortedDesc; + isSortedAsc ? column.clearSortBy() : column.toggleSortBy(false) + })} + > + + + { + const isSortedDesc = column.isSorted && column.isSortedDesc; + isSortedDesc ? column.clearSortBy() : column.toggleSortBy(true) + })} + > + + + + - - - - ))} - - ))} - - - {rows.map((row) => { - prepareRow(row); - let isSelected = selectedRow.queue === row.original.queue && selectedRow.number === row.original.number - return ( - loading ? : - + + + ))} + + ))} + + + {rows.map((row) => { + prepareRow(row); + let isSelected = selectedRow.queue === row.original.queue && selectedRow.number === row.original.number + return ( { @@ -183,25 +193,27 @@ export default function ItemTable({ data, rowCanBeSelected, loading }) { } }) ))}; - - ); - })} - -
-
+
+ ); + })} + + + + ) ); }; ItemTable.propTypes = { /** Array of items from all active queues to display in table. */ "items": PropTypes.array, - /** State variable indicating if rows can be selected. When false, all rows are deselected. */ - "rowCanBeSelected": PropTypes.bool + /** If true, rows can be selected. */ + "rowCanBeSelected": PropTypes.bool, + /** If true, ItemTable displays loading screen. */ + "loading": PropTypes.bool }; ItemTable.defaultProps = { - /** The items to display in the table. */ "items": [], - /** A state variable determining whether a row can be selected or not. */ - "rowCanBeSelected": true + "rowCanBeSelected": true, + "loading": false }; diff --git a/src/components/ItemTable/loading-annimation.gif b/src/components/ItemTable/loading-annimation.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6573088f06ff49ae5de60778c728592cf5715ae GIT binary patch literal 22865 zcmc$_Wl)?=)CD-WyE}txAPjE7-66OH8{92Hg1Zyk-QC?a48h&q9YR86cJh8zTeY>n zzS`Q|{?||6zW3bI&(xf{w;y>$IYA-wXh0<(67W9*1OR{mfGhw20suf^6A%Cd0)Rn) zED!(!0zhGFU;qdV0D}QpU;qRRfWl0(0H7=YI17-K1%PA$ps<|~00;sALjYM200aVn zLSeoDASeI~1!O@15a_=d%r(q6%o%Jq%pCe}_HTeepezsw0s=u{QDGA>2n+^gfk6;3 z2nquMTgw80vp`u{AV?Mn3d005g@C{iP!e_>&uVZLCf zVK8C1V2iNGFxN2OFlVsc(0_~nBEd!$7z_b}p|JE|QDKuTa8?!=k_CpsvW0;Y^*pin4`M_78Ws1VpZ3j)c4!ia|D4}%4>hQe(A5eXw2mOl&@%o@ft zEL|9vFgjo;VVhxmz(Bz=hNTDt4f6#<4ciLC1p@+$408?h4gI(EA9t{I*aO&rg@>IY zj9ggGS+Hg3e<$|ub@-R?eP0+YK{^t^a#j{{I<3D2AG>j<&R zZRPlf=-empiwF`77m4?60jLhHWrOU;?gVSDl`?3#gc+d{fClE#uI6!b*~g2 z!Y9A5Xk&A%YnDxCP#Cm_DYh_4XMvn9wpej1jy*Q+3LHmw7;0MI*|AJ1Aoo!r+HBYJQ@g?ecre~ zEeO10WKIG$kw%%x(U({* zXaYzW`8&^}V1%J)t!=yG^nWBVWj%P7ia^;}lkB0UlCLnH7h;>hXqEKu)2)iGa6>zp z8hohCVUjW$sp1I^_2g@nn58iAj%d)RYk zo6+ray#0*>ik5 zfECToJqZumqy!9F%SrZpw!U#l?>G7(Zx`dAo*95x}>?$7<4EdRP6Yd2Dkmz+>yZx+njJT|=+Ss_870 z!oD9{rp{!TIMP#KhxgO9=Pq^VR>ah=_&n2LfmN#c{qc)Z!9!p9-<{ng$~zld=nbm# z>)XIOq0`#O-~2t&H3E|}%c6yMpJ}PSXHc9Y1fPM1!8FM=ds=5~Xi1KqO5gr;=u>_v`ZrILhw;2|$qlF(_Iii#(k`k5> zZZd8za;q3R&y7()&2F^dSx`>2dbouLw&@N7-PPS}7#8~`lAR@8)4h_&LMRXuDlbte z998bR&NbfwZy_o4 z7Zw3QmBKTxyPkte;!`JbS2kI#3}g3-U9WdfSF}2?3Ex@`E3_75<4=Pef_u)91<+7et z4EHlLa0@ME{EQEsDa%~pB^1m;FSz2?e^0!JAmze9{3zND?40`0T~Qzpv|j@$Su3_D z+3EWf?){(ZPk=m~N@S(EFhuykzjRwOA0o1C-nJH@%qI-kDr){PaL#Xgvhj7c3XgHd zEJ4GgK!%dNOQk~$9FIK_QRf#}3DC*gFxO+b>PNN$c#Dk62D&~n*Qiz)thknZ7nTo4f|j$4%Wdu;Ed3~N;> zgH2huU@4a(N2klXD4!yJ6<)LsWq2Z%5A+QFO)~aW3ARs4eWqxPl zNRbBNgcO2}#nj9PddP?>KlFCD7d4OC%{cZ8&+5G|^v2&*7pmaxK84b@^OF<3mp+#1 zt;=usRP#JewfES(`OVajbxmt7%@-23J&B;W=3w44GJ;2%uGThRCv1oOEv)T2Hqj~6 zxJ=pj@&Ol($(PWfqH6sS>rUVh>()s<)|6R|xa>hWum6=ioyC=A` zS`^}wr8*%t$JIbAStwQ~-y;RBRQ4uO2WCydC%<*_&OKtMAc4-f2N36MURg5Le44>_ zYspgax4A#*`o?|pDF2LkQtl(8i$0TC=V}}=MNLzwUMD&&NSOes;T;}aov?&bU7!(HPVtdv7sm0YU$mVu8Rfq`0 zy3%MOpB|+itxvo@u;ThS*hlT%tQe1L#@w?qJl@#CXnm#cGqDaJm8vY=zcxTH*i!2D zl1t9Javf3LMtV!!6MgOckx^#Hte^F>W?8AQg~w&<-sL9V0((WZT&ZlaLowFUoPukXUs8TMz zOI_Yx73u-8hNoTifCR519I=wjH_DDT-YI*HebaWk-)Swxk5>6}cfjv*yknSsBF#8! zeQtZ+BXIo~rr42$gZtko6U~FzSR#=9*5v%bSR$2l45i|I$rK5LcC|6<-H~ECH_H1Q zvc(eRI6g&P>9H?1-y#Jh|6+Ev*vuATh91aNyOqzEs1UHlci*$l7VDJtL$c@D*lLY& zoUuga&r~WZC##nYp3XNq=r+m2l{-o{yFWf&Y)^MI><$DWU{I@cHtvTAG*GV8JdF{J z#qJ|hJ>j`qwY@18#$=jbhQJZzIc_5K#%b4pU7sS7>**cUQ*RU|)X zINL8`adF6+AYPEy7ogwWM?gsP?$H0WXq$P@_XZD9BJeNJhB~Nm6n{GCJKu}319Ejl zp-eNUphi%m#y*e;r~YN%_a_Ryt7X(#w1@4m7NV6^}FC90J_JO4%f0 z1-Bj~v3CnfNnMTc&;ziBr7Tk-P>;6k6XB}xl4aU|kl3M-EqsVVh#)OX-RTS3lw;Qo zEyFeZKE^0zD$H^cV1Zw{o27?d#FXyz5Pm8tB;1*wVTLYzBJmoYdXgP*L4=wVNNk0g zsY40?5WSGK8aY#92`whYUwF|~pa!p(27t&%bJJ{zg{(fnboD4(N+asq(K_kINDb#@ zNcL$>$e5vO68DPm7dWZ7qzlR3`f}UkP+9bf4ECLiQYi?YUy*_*55sjk-6x^NQb-EA zvr^|&)^+!8evPIxc5{!R)3@$l^}QhL*d2FvRbN~4TE$Mg_7TJ299x_@k&t%snX^6f zPA>s&kCAGAuHiN^l9Uk~1kvN@By@k*+TbwnJNIAIS;@KB?vUn`&(WCfqXb-f@kC5! zm=a&f`yf2=yx$q`Mt{ooQUU};291%>w3G6_;_Z`8tGxSlRWXXcxD{b5VpCy^WcKcQ z&VHQryd_tHD`$01U%i*2uPC4{chN02Pov#BC%}6Hx&R&X-u&5Dm%Ct+C?`4mt6X4i z>Wr$RV?gq9*?Wb?#pK5~bCS=3+v+qKKWynm^V=)G_*CSC$UjI@b@>e>iw1|L$}CGoZgwqK1mvFJcho*6sRBWVz_63*CU>?X-iB!QPf# zyq7JG2A5&i`l5)4`Ih>*<#~Zfqr?7m$7aI@9o7KrL)*Y-f!}9SI9~?NvW;V|PIG6? zV*`yrB-%_wu}P(~Ldaju4#;oUhAl%Y zJX9C15k}lwh&Jy%94Cq!!sMPn#L&)lObB-2XUMOHuDwY0u|&I&S!JO|Pc-7d-$vR< z=e#txQ^E1DTSt0mq!KLmqW0Z*x$4PK#$RH4q*GMY z#D6TsZ8?a_pPplh`_yYD_0@JfKnROJ2ttoGrK9lVUnk5tdPs-%v+sD!CdSE_fxd;b z2Sc{m4>LIbVXj2fXG%F3)z0$!RU6*>kUF0wKL9((LheS;omV`UQMO$U?mn%7zdKcd z;yXaR;`y5wJ|sQcr*O`76#Gw{WhvEg=RPx zx`*%IX23#CVUHW9Ih#R0NpHi_U1au^DT(5^a=-a8XeVGn2v}D6R6W$1o}lCHw2A5I zJ322J6;Y<595Ur8JbPr0g*K6OzG?5fn4%R_p}2QG&qBMjO=*LuT4yTh(w)m+2ttce z4na6;Cp$$X5|#+h(}5$;HV?)PBbuwWExdSN>CIPb!C1js1YR`FZYy)~ASW6I=eB=) zs&dO?YKnRcQq79X_}~G+mwD7{Z-;9PqN-s%*QP{^r!}9EtmLzf(K?ivXi55G!o4pK z*B(!syN$17VTvH!# z5vW4O0AMIe8mT+;N|`pA%Af86mr8h+DQ_Qr*Ubo=W^o^7FMtL3BYJA!lca%A?nK$3w4c9w`W9`L2!T6cNQ5D z-v@okwceF8pwlV0&7@DU>aNa$qT^e7*iP3f3;IN&V_-X}(tosxl1MM}qgIIhCHi6T zgnbU4tkr3Pe;WY{V?NsZEmA>sMWDO(yrA)<{R#u30*3In9r(d)4ihyE%h<)zH*IOR z5%%f?h>I5Ds1@N!_E-(s1}zck6>!{PHwuTa|M0d%-x(@V1d+9*ljpg(zIU4RB6DA< z$uVv69F6CnfJ+Ip?)1Z#MsO133zcn&D@z59nleirhVy0LR7?LlQqZ+4y~JeBTzeCQ zee)-q!DX_j0b&j5+7w3h!G+!SZ&mL&yb7QMTQA;z2Jd1jz6?O)%R;#*4R8A)19=^S zHmBW&brwH9GJKOV4Wv}gV_tY>>=6r7E%|lCLed`0^7+9xI;W%y*a7kR_L%?c_o)O< z_Z%NS?*B$R{7+Q_rX89}CSX+!{#v<|(#hCLt#VP;lu}$ElYy2_msa_NJ(tIDD_U~7 zdOo?yg?}`d6GyCx_T`$k2SoE1NJ29O@(44c!K^q=X=FPSS9YTA=Q`;VN||`;MSl znMW`TZbOb=o@vRpL@8~` zUj>doTnXF0=xidHMocXN@9poNdC=CkK7VB(Rgnb#ujv7RSS66$*01mo>hZE-- zq`48zo`zqfB1%sqC3MW-pz0~ZMEp1EqKLWDPbf0Ec6AokJWA-1Yf{8FbKy$H#RIyl zX@u=@v;r!4qy}IlLb#iE0?o8HNo$?(&Uc?Ivn_}uJ9s#%-y~4z(ErvYjv60&o3O`T z-1W-BhhgBX*@1CLGGi^jgm!9fS~_1w-c=YU>u!k-v;x9q@G6Jkd_gZNb*(RNR?yO< z%`U}*>UhgWzdia=W5oz(hSq-$=jdDen}CGiVTym0Cjy+%4XSG`;AX<13e7b`&nvE zf1OKSlUd^vq-m>;7o~6%q(W2eHQ>;^q|aH|;)%~@*!UDl)j6$*Gx{Lw#Kh3zl76r<;V_$_P(zUWW+VORN`yR;(JeB zi;Gm9tm|~bX{Tdb$<>Fh`*oZs>O&m^gO_%^Z+ore97DEM0INR3Sw*F4svRy(7mE%W zinW`y{v77l#vjns<%|W%I=#zmLzMDr7fp)b-BR5pN#potnQJEkz8tyY=tnrs#aUBL z9pl4n;>NGnb;hFz>N@Ts)(0rOl}aTqwAh)9Zq$5XIUu9mS=)mowemeAMvZHb+ED#4@%d zLOAhYPQL%l;6H>WMmk1_rfgwMN%PWdCAN_^sf-?B`EsE@xjgAE(=KYQQ+PH_JLPI0 zAD5Joix1@%{L7W?QhahOJ~|UK&lZ2OmHby?4fs(l&QDp(TKuK!n`)}Nl;;DuZ`9x$ zho*X_AA6VpNO;zd|EY*M&sLV^Xdxt>LA_Dsd?T3rZK9l=!pevpE%FAfch*Bm+QF%s z9y#E{J+DROZ(75ajg>AYP)5%0RAv+-?myXly43zxMlG@Eqi??BsK0cOa_LcTO ze$2orJ5!_?oql_IYxyX8p+Y0|P3rIojNx}?{IcBbw(Zq$DSS>S&{I#G;P!IIc;TAZ zvvsQW(!KfTh8PX?|A7dB6)>7hr(ms>YU8P9SZjsb@@uYQOZiNWAX)K77pOu#N;LE@ zWi@xDX0ZYqxmY&uxt7kdFTbpPYxesp?dXSAaw3P7BJ}}&Yc}u0*cRiOJ{Dz-C?g=x ze16`qgRkq7K1e52sD)fX*)9kpr6PK_L_K~l*bjb;xO;=nnq3UWq%J1izN-(<4#y2D zlOgiDH4@$Al3#<9Xvs23K;{F0>Q4!1uXPGFL~?PoCPPo=|CGkVCbIeEaHHyMn32fQ z*;cpD;|fB~$DB)r7=b5;7JlQT60b)n^=+Zl^QBX>rOl;@)zkf*c}YQFo|x_FEy^$r zPEBCoYxTT9np20OUhwC;pB1zm0rQbNv>Q#&cy`G5?R()+A${X8eD^0~N#b#Qj0kl2 z#vO@guQOmct?nERKxb6YB2ee)xi}iBtddUd5U8UX*gOU%;*f;rw&18H8{JPJd_F4) zG=>9AM;ZSli3KXXnPQOH;`BU<(|#jZ0{nU`XqI8bhDaf8_6-#rXqj#YrdTe^nse1F z{8<|1JUqqBVf9AGB;T8w&?rCP?SEy9prTyVA@4QEaA(~ab8NEWy__H^a#nzzewu9= za{R_z;=h7LwY0=kSyibil%W_`mkg#gg8P;1YKh*1ijAay+Y&XriB`N)c8;+cA^N zb%S;i@Ir)Y_qoWC+MmAHp=k)kK`yE9yL)fr#94UU*@S00W)KmJGUnjtx%ZC5UC1Vi zkK>y=j-IljU#_^_PW~7NBP_qCCu>p%`$?30UeMkE?#{-EQ*FTH*yVn$T^~q^GXQ^JZ6D zPgl=D$mjYqisyP@M*lleo-Ovoj83x&59<0>^TRsNKC<(hJ?U@1`rE&cVJu~woM{_> zmr&W^6Y*cV}B{9j@U8s9;Ap$d;d>t4=?)2}puZN3n= zgc*9|(l6<#bmG@mxB=KdQW2Rao6F5;SvJT%zyNit=9y-fOIfO z9;L3U&;azg=JQa;k13cJ3gLJ>bg$(2c}&810c|2ve?%4Dk-R!bZ@O7{2Ccne9vY1r z+$=JM&=<~4~It$dKlWkX24UzjYlT+i5LCC|WDi2LyVVsl!^f_if z`&j0`2ZB&_#N-I^CO-*rqRIBp*(o{SOV#->C-|!HQVaf2CWhu)3P#4v7KR2TBFtH) zT`{&|L3s)#qgRmYujG@ zOq48oC!oa5E`r6{#&wFtxt*#t)wQywa!y5Q(O5><1XK}qP=G*TEiVn!WP@dUUX2>X zIeRI2+?7k-raBs@P=xX7g`K!@87$S|lX`?aK-YVL&wr|&Yd`UQNSEXHS7mWY(V!kw zT5ej$yZZ3*iLV;6X(C@%Y;Hf?TO3vz6MJs=Kzv48louQBa!^81KqyOyc+8cD>eWF zTpG$#jaOa8*71R!XlTz>pqpawC4*#&aP}nv4rFVAa{5!JDvJ!Z%@)EJW_sfxw20(i zP0?pBUYAr{GOQ`-xf~zG`<+HYIqCM%Tm;?`f5P^2I@oP3OQYxC!Af8sHlZHK6bJ1n zM7sDT)2)_<(i*rs=OC(4S2!_95+}-HKjr17x-dwAZ)CeU4(Op740CuO*{z2!)Fr3T z0mXy|U-n^eLFKfh8#3Bwy(?V!pGT9}-&*9GMUTW+f6fMZbEhxXo<#ikIZOWfHoYd; zjE4r1M?tYQ4(U1>Ps6ZJ>IY?cbg`YHI{8xio5{+^V!PBQe5uQEPPs2_ zc?5O%tn#Ov0e0$ITcQej1REmV&Y%W^;WIp15#A9~{+65{R~iT@6FQ`3%A_XO4!aDS z+Sh!Z)ttn?ocy+CiKkh-2szyYt+%C?NdUd{klevvv5)of9d7QonTR6mmR-%TQiTH= znlTgN?c5OFO5y^~gEQJ?}sEVr#0UVzxjc6rD<`wQ{~h;S1ZJAH{ZU6{;Bvj!JD8X_cBtV3@{W53<+F z(w%ud__|zYgz~8mAJuWR!g++8Qu)2ZdbKy2FVY93K_i_YP1ZVzOm4~Ue;Pxf{bsFi z`L{Tx3K{D@9zD7qsntqMnnZAKyX2bS#ZJQ)R=qdAWF9BOzG^;B(mhxy^H_aSI#`|L zA4-V09o}3O4#S!?c3giaDbieqD8f-C&wV>j`r29+nW9AKZz~2sN>CcEJgev66^s$X z0n;9fYjT8dzE*>2tox z0ndam9kOT65rd^ek-+MGbeMQK_CN@r#22zkjbQ1@Q~&;{bW=)xT)!;vE!bc#T}5qm z-V`&OtRz#j-iFD?U6F8u$c*U-oJ;9_wx7FoY;Yd7K2a z`fGz)=-YIDR+1vrnvW|TCXDEZ?&UR>n&Z7xgsc8fd}O3U?RAr?+?RkH3s{<19GT=x zwslm0NH7}T^pPo7WMLoMC^z$6);fy+Tz62M)!lq=p8Y+{mZK>jG01+!H_cQ}z{I}3 zYfDLpL(vqje7hyUM0pKi#Mpc5p#%T$;F~&xu}Iyf`;|HBHc2ub+pge#E$XFxQY?+4`7Ixd|zjDfco&wvE#_Y^_`oPKg)Xd(c%?v zUU2Zqwo1k@W!qqEL!{%O&g*-Fef`aEG8~1=|7qOLQ}iL`%Z$&XzmNLb zUN%X@y5z{JL%;#8&#c{20)`;hX&q1|;F)+#iA4Szmx_htv`f~&?Ysw|q>{NOg3yuS z&ve4d19KJ>F3B1lxF=&JS9f!*&e=;4g-}H@bVh`uvhbRj(fvXg9Chtzd~f&h4DmpW2~Y$ED)WdqS|9rl`>+;^I8C{(qJXob#%cf zQTOE3en^qWUP?#U8IRNll@m#s@15cL+}R6H%N(;yVs~XI{_C|0SWRSV(Q%J9C75RB z)Ea6YQXr8DeZ`>r|U-(1)O3s+iH*vYagv#qGv-jUMch{mOYR{5*W=?NwqZ^s|cGO|8n;n?c=k{jL+cRe<)pV61x4?GZc>g@UX z=$AuHnQPR&DEiVb_#rZ?Z>P-jrDd}aqubtl0EerClJ>G&(G`LaI3e1&uPY3_e8one*nrAz|;Hf}|h1nWiNjm;1I zEh#3OU~QxzyvE7=`0zZdXu0rg=&M>|Ta%-+dY91w1A&3^Rplgu?rg#Oich($lxvEI zQcJ!TsKzVRO4#r1@B+IGrI@1yP1NQf`U>BU(;H6*qRtA9K~H+pErSkAzOCZ6uDfM* z3xPHs6dg;~att-??G{E9mW@CKK%U)h&84~_7OY9V|chNsA#!tY94Dga4gCU5L; zQ>`1u1}Sz>N>X}>BAAeDzl7m=F*nuSHwHbjn!uU!frPD#OlyiPw7Zl0-(c4cGb|V! zEq_Fe>#fw1%FVlIFB&B;pGzrYazm0wZgj#5NY5Bdoz?7` zJuO37(91%9-}87CC+cPyB{fGnpKqlAM zXKE_&lQ}$jU1-2FY)#ET-IbR&Tp;}v6U50`$l_5NpTneEOthUW7b}oevSOd28lYrX zE)1#VFXJuveG)(VDmp;bChyFdYjD|3e}`nqZ)c+LLBJbYeL+mRtV69DnCBxQ-8tgkQcs&lF-#g^hI+yyqim z&vX(EGl{vX%c5@-Mpuf1~0^8>rdeMEh#aTcVM4dysSKMzwOQB)ap2YUP z>oYq^8o_@qj)Z<~U@bi1c!wW#Ws7W&eI89b6qEOzO|87icj<(R-5r5?$56m`%_Q4r zQHi}r%<4bC8vT99lvk7h{C^}_4Ept7>Fm_X^@>gHE>f8mYm`g0>d*-;wSu`?-2={_ zFAHmpCL(GF+ntaa^i!4lu`4RddwX~9SoPjWw!So&8wS<~(D22}KPL^~o${D>eT z{n7x)jR|0D3faX;Fb&wBT<(0ycSeNMQ`K2!KvfPwCQUN?+=#j)XTPAhlB_4)$EV?n z#%4Pif)1Zi5SEH&1(df&z;^Y2gQjqS)^I1dPD}tssO|v){@5Elg8o95rj-> zD$hD#9VOz*LtJSc5Mq)eyem>V?eY)pEI2xb1Jq?y;3(}N7U4P(7(05u(2Mx!0M*3z zoVn21BI;{JCGD~?2Z~!Zeq|x`m=#BwZx?=bqZZVc5gcf0cbUa7M9!{$mdr#3?x17M zt^%INDDf3MAeuCGJjik=jMGt6r_IifU!`G>uAInsEBRS9Oq;^)CU1!M;MJlrIWT(e z1XCEK3^SpTb;V}Y%-0JAJ6wC*_OoyF`U|bt%U@7W-T2<%BfB82_bYSRc4D8M4gCt) z)a`8=W4arpAUkLR8jP26jU{WgXEYv(*WRO2+LRtAl%kh1s)QB|-&ifvLGC{IYu-tW z=eIe|Pb2hQy`2H9soeXvDKc?&adaGmkjVWIL6ck)7Ej7TyR}>?Yy95UNbekak`bbG z5gwPR9cG>vROlT!yGSQ07-l6lHq)fPtdQxvOvTcaKA_SdV0Z1A-WpLD;W*xqOGO-Z`Z$(1#6Jz)3^{co zpax*S?y&jk{yKNrbu7Li^TGDJ;(W{#0F+IL5*+VP4Ycl~kG<)U@JG2NzU8426C3-h z85bbcU$709l@M&CjUy+3m#J-@HjK3&q$Nbapf z#91o~6z#|UwFu=GO0K2Fq%4#I;12b9CWa7Q(cG}5NsfsjDpFZZqlituGc}o`ot!3> zxv`Nd_~9ak5?!>kfsco+EA1!pWf2Q1R4%=8-xx`BmV_`=QCo&~?JMyGbyoOkWczL= z0;OgBppcXTU1Ri9!cPd1lb}pQ=4|k$!{mqN_V%Za*T|2wq35`k;VSBa!B=;2pQ}-f2J8^ zdlqI#0tU!NG`IOdGiUvl`LS^qlwc4I&h2Jb@uob zmM}^^Orqo)kuSAzF6H@CyAa*0Ql<`|5$d}X%HV~lOt0pYosC;8$5%{TR;?YJ9>(x7 zwd|&~N_ST=DW94b&Dx^^Kt;b?OYP+ces8bu6odFpv8_%u91|YPP^Ig;PMudgjuAWk za?{uHS^^?sUtjVyQ#5bHa`RX_$1i$V_wVcJf2>>Zy|gSK>hfb@mRO5Bkk<{LG?aeA z^gP4YWDqRpbwX85QnJ+VfW~o%f3W5hH^Eq6kZ7-82`to@c};YB(FrQf%kM`7g>Z<-UF{X z#LRaW!-JO#6O%SnMCC&>KT%$R?~PQat2x1J#~0Re4lU)YgTL+CV|Qe(q$8gw(MLE( z5Xzb~0#x48)({NHr>-^WqN!3%dsisGX_lon!kS>H9AAol7~&WX|KU0L^_^pNx}D`w zbm3ed+N@^Wyj392 zQN>vLIrdO~>F?xt`*8z#|9b=8!47)xri}EN*AVG~>6K4?-uEoYww%OkB(GddmetbnStQ(qj(AJA>Z-MG3KXF1BYUWVUxy5VlJrphR&%B zJ)(yqH1HFjcP4#mtWVHB2@RxCdzB;PX{VsQE}HZ|RwCKF1-O1eLNNm%Zpa?J5 ze0EKU+|IB#g{)&pJ;Y#^Uw-uMT#V;=35M`!`gNG?9E#DlP5-(D*a*sC1}f<=ncg#F zrtbj%N3!hy?|MC&`?0ZHZ2vBtSjxnaiv8>L&`l;W!g@VIXGgL2EC#S%&paa}me=FL z@niGGOq>X;#!_&4&?WB;mOV^(Ko9c-S?23BFcM zb!tx`+v|-M*U0|P;f`CPT*QLF?wBp;##hY#_YJ z`f0eL5T`sF-x%+nNEG5nJlPBXbiPny2EEPP_8i)1fyp5ns$Pl9+p5G>+rPih@h%@* zP+Wfhq5b)&>X{utbY?@#QG1V4;MHYEOe*U4ZmjPe-e|E&%+Q%e7~&rVx|nz5 z@EBiSSxbwOF@Xki!Ht5^Wl~@`3F|Z-@+XFvpF(Ji9A>_}$C8%dESju~vi13Fi+URX z2QuJ8VJ_u+>C8|RyJ+iNf9E3tKo}##8E#yEz*z$Z)BMD$3 zt+gD+^K+D%Vx!=6!{!#D1dJr?rQvRQvyZBvx0`2ldbgnlA*^OcIJMIk#-w%Jxz}j5 z4id{dH@DZ7-E_C}i5ThLj~n6lJ(CMK_pcQ@th)ZSH%hC3!%)%cL`>Y2>pnA`=JJIq zd0C9!C0M!CAMgwEG*I~X6pW~bqqDn|q{-Y$syC3L?n6cJ>HrULkkMw`UkUg>SCZ}*^<+hVPlY&1qW9m1AiaA znQ`!fhl?1;qMVOUYK21wl=FFsmq7Gop&dPyr$II2jBoQk;Va%A(e&0jg7+>-d6*DL z^~-8($r|SuNqZSL|NRq3Ys<)0rlk#)_8noiB6SAOzzB7x*W-ws`cGVq-s6ZJxg<)vco!^5< z6#9GQ$zeA`Q`Y>pkP6YJd_%TQ*5l@yC>B?QL7xTEu8&dt zplLqN16E;X(#~?wp#d15cG@ac!2j&YBM~?lxhb@F0!mFEos>@-h-1*PEtah%{rncX zb>sJ3Wh12nh6=zhXcuG>U>{TOsXJV>@bBm5BKaU_zy}k=|Ebm6!hEe=v`uoyuOpKU z2-o1vW-5_!Jd+R>riwke;9taJ^ z6-xhHv_+l07)cjg-ty@}yX6A7*{D)3YV9E3@Tx12AW`ozqvK&KtQ8jGa-%(wGOl4gshw6=2)EC_VB6fU_%=L}-(*^~2=kos0**2cm z`eCOlH+Oc1Bf^WOAG|YOVo!RSJVaa=dFu6rT>V1bWZ98ZN&xH+iR3FHGDbR_bB@2Do2{6>}FIc#X zc-xr-KkZWjM-C)oh2XxCco@C(V#9Yn)5jhYD3D8O3d=z+!f{|$Rq$ea=GO`)k>?p+ z#N!DRv^b!lH)vlPvzLwWH^(%K45GikN39M%*d1&b(N1vTOZl*Sn>;!ky5=4`*qmOe zXa)6Wy?5hFLLn~P|L7~7(83b1a9qCjsX|w-F+^W082BS49PleWl5G{Y32$TWi_C@| zVDDsTpX}SH@ zf6?nmq(&tpHwL{rKnZqoaD~wzZ-zoa8oo?!bYIlX+dU|(i zurA0z^yTpcNd&2~{A2q0$f=EWMwTWUak&MU-P>+jMtAns4=|W95 ztCX-v-lkUgAA8w#O`rF=M^0eu#R&^REV21|SY%E`PKB0O%7l8j+0Hn2`Afo*9?Q*) zOCQ=}rP6!ewJfVV}oT z&KFORP{KZs>AF9ZPl4So;kA8`+_kc`{ z>XkHW|JhQvQlhbJC)W9r+*^^*%_2D##KrXc{+fsZNo;`c6+XzWGecUJbjUXhTwHF6 zAR$HZG&moiT)>p=Yw56(&93vssXN|nBmNh80%wQ7_;MBsl9^*SKmOrb6LYH5dY8;z z4w4$w%<+$}_aWjYZt8U&-H(u=;E`;c>EEA%*JsezXU$L*XAsBacY_|+ee%7npI3Jk zV!MbxfDz>sHiJWH1=B-Fc_uSI63GbC5+UwH7Wk4_R2D{1yg`lyamGQv_~3ZxesxI>P@89 z$4~{u!ZhmP;^TBu;hzjK@R~x0LAn-pU`fS`RWm;NyBEex*?z^7)F-OZ{FL8#X{Xta z?VqfZkq0dRfLLThTsOelr%I(!ECz6vhZ^~&>$Mx=plg$z(k@Jjz%fg~>ekhACH+uq za!IXX^dMYGXMwYt#s_dxszkkQlvLRR+eIysQ@4dZH+IeY0+6n~Mw9u}*%d7ZwJa;Z zh3sIxJ!67r z*7t87i*;_gAGshFe14mx^OeiCs_xxkB6VZ{9IM|!`&`QJy<(eqzr7qf;WGXlWzcgr z^l#RbfIHP<-npG5P|Sa`N@f=4QkI^$+NBd+QP(EZE+5yuO5~XT`?9A&PcTSt3Q~O5 zDsm)n!?2qxdOGlKpjodyF=6gpfF|)b0>t5@P%|s4!H!qjR4rtMVGJ*KWrMLOQ6_llx&jA_X>20LZKms*nrS3>mOJf^tCZgL6nsDjGp zvsa(KTJXOFnILluQwrJeV!?fLbsh`OYBG7tSgeKusmxm;toSn=`G0hBmR(T*U>2rf zKq+THMq+5B5kXQIy1QXWkuGV5md=rGq`RaW>6Vo4lul`9**$yq!+zOw_D{U$p8G!c zK`KSNI15R1Gj7SHf_k`4{Vy}Zo=z5&atVPf`1xJvgy1oksc4xTn|;w{Vsg8f>Bxov zHSgEfilHCtnA3i)Lk~fGRTcTr*Ys9`HChuM9gd!?iHggnfik%p&Qf}R_7zFvr;}(1 z={@7E7RNQ!(_!{E7{;0~{d~1gO60TFxfC}KG2=F;FTL|C`5%?6ZBu#&?P)7`^iwCip$m%anBY6kw zDC++lV%;pv1vc>Po|oNPr%RUeA`DYKS1e3gxvNm!o43g-&Eq}h^}V{#vo+Z^5N8I9 zh&_RVcGgy@+n%F&hJt1DF$);F-lPAAHge*FfMIyX?G#J9+YYHdCKRc<9Hmv7e(>3&n2it>sTpD zjIz`XGTr^q;4+&gC|sT3-3%sJzDQAgd0?#~z(e);i%`X&%Rp*zruLuWZj#Us$p@@H zuL@@cTmCKM8?X6yS!H2;M>bJW{_~xHeCMQu%&Gnc5>Z zdY3Dx^jB=}dzH0cyFKP!alM}}!>rqnER-J>m;U{2`qh3y@c-HH;CubInMChsU-dun zS?oB2)MtG58;g+!%iWK{v0$#UF>j~ZBIQ69SGPymtIrdeLXpgNWbxZmMNH`o!E&1U z)207oCNb`bpwQO{Td4gsjV~~w6{ehIP0?Vdf7zGV>QObJ!TT*oXJ_nYAA%HZ^gNk`mIhRV+*TRYRqn3cVe`Npf=SlVdSXegrE zT>|p@<(#=UI5XPTcvaE)P2&Nv;#5Gx3f{Tq*?%qd`>h`iaC?Fq7wj`QdN#)F){wkQ z`tFjeMcA-Tg*Lvp z`(o7}NST6g##IXfL-D2dse@i=HNip{VSnF*7WowC`lEySXu|1Dca1Qq)HZUWDI1t3 zA~_=xvb^4dX|@rBTHN_cHTyV5u?$ZhsY+vHRyaW+8fGX7gcp{O__x>Eia|9&WO%IV z5qH#3k}qUiqGqLh1rgQ2rh+uCVV&p{J2gOLsuM{9LnieT-(a#y+#i!1LUu;-?^FP} z{gnSoIq-(JMWWYS5vqY`I{=GptN@Gb!dIH&OSzd+d>AO-q&)tJcEga98x4hb`KPP zg3fX&H+zfnJL10G!OyZ~MYMmnD@a4d4=W=ZgK-{f%c{}`$9iq3Ax==kvRcgd0P=U; z8H$&?XH4s{KEK=0J)K!C#s*w>Fy{L>nv)9#rKLlWOde@_up(-nCF(vez8(lAq0dj+ zb?E29-p3(FID-TZkOG?sTcgK`>ys&<_Ev)YFPj@tj_KNSL9-1|jij-r!kp5HW;T>| zvAZ&P+)NP#ywKEb-#QV zWgTRqS^(Lqt)uR~VBkUa^t=9WW|`wJ`!9YN>MM=$dEV1iwQx1&5&2F9z z4ms4@>E>-ZVljm-smKy|K$;8bl|IFf=%GSCw7|_ujM=nR=x!OBJ2%QjBQ95lm2SQY z=#hHCzphfX7qv5au|B&UWbe`%8<+mr`JD(B{as`LTy1g0COsITIJ?JTgAd(7#obuf z4FXp?<3s*jXCkw7EJVObo=~;mybqQA2LuB34PDr|$Tzo%6tf5MkX4|1iVfb*#P@JMZu$ zCOph#(quC*#0fS-7i?tGuqV?s`N3gdwOk^}JpRbY-;c*oCKQ2$F(8*@ovM;`L74^z z2OjJ*;)T>dDL2h^)+Q=&nrkXx?+*+bJ?5U?%!?r&Kj@@8%*$Za#TAtknzHB*nc48h zRRHWThwp?Bnsft%`AR z%X){97pL`ug4FjXFFQBvNN~q+*E`8jNl`e1d?doDE<49qLpj;+ieb^p8UBjo=?S`?V_ zb9#dRTeKz_j?c~8_Ft1^N*-&B=QWUQ91VBY^BRc0CxHMqoS{p+`#t*kLsZUm@p&{; z^ebghxO%Z_ol~}%O z4HsJ7R190)WB*aux}SmqtWcTo+v2OYpkE$xHOVcxwo<)rXmTRmI84VmfJQZF-w%y4 zXVr{UNAZc5_N65bkxCY}^=r)r5OS2Q3EOWAOU7p)M-J9@h4H0hh zat*6+7Wt@a66Ah5>DPnwwR^hnKGIM9fPMD>zdfO4?n)!TlfAnLm=z2~`eHmGpR1ZR zNB3D*J=ya89MM&ouDIN+z z|K@j7_U_zye_&zaZ@Er$rnQieD@&QEkN=u-!@d%xW{0y1e~^h{E-a*BRhlBjgW4Hj zX~cYe9LR~}a$}-TG$u18WR*4!G{zjRgFg(~V%@STvF5njCSUFEns!7*qy(6J)=(`ca$$g>JW;W!R9YW# z6vTlac21*awqpyDFARY|!$fgJc}zYays8J2=heMyHqQ{qk)}ckxzbZ{OtS0Sh>czZ zXjm@*$_#9pn58PTC+x#5S&P4`9odyb-GZq@xZpN6+g>1+T5>8naY|S$4pDcr&%&vC9zymq(V?=e?;+vObaU$#u9AUDLd(_5jC(2xFzYe6+j7s(+s% z#$EpnEatW|jbof|iqZ#PKr%1+L!RqK&2P$s@G^ViLq~OXft|O>H-@vckMaS#!=51c zn;JGCd|6QX#(#uxE2~jQCA4zlQlXL8U=xY^Jef2LUwMS)#WK3BZoGPCblL7ar}hnK zd!Ha9dC@J(^d`O5Nd*>i1qJP z$37N=)%D`~fS)@6Q^krnK{4kE&onVKik2KLrw=8Cd%YQ7M8jIV2`isJ_)6Ii=+xzo z%r!5Ps=)B*7}@wOx7QiucqYsdgyStm7&$X~79cIL2~bS|Q}RxRvnLF$w3zj=h>g%A zmNtA;pj|Wt6GpFt24Cg9>cb4dR;mVXC`|D|2HrADte0&;wFW;1MR5se_vR|tzoy}( z!LVM(Gd+lK8~mp;Dh<^&Q9jt2#xLibH61@KZ!GN%$TZgblRn^0#fqtmB(hmm zPabGnTDf}5gdiNtM7reduqL+z8J3_;!$pNM|4d|jx64hC|17DW%fDXZn8zo#?od~( zib&ed1$v;!;#sT3NrdKfs+N$nFQ`R|hK8Qf8f@%qss9xkh$Q&l)$jJVJ_$n?VzY1S-;P9b=D$!y20DRE_tHF{jYVh zH(VnS=`7|CUNSxH^;y{UM>id`)PQr4WV-%@y!yRv9W1GC_HNnAHK8E@nQ>i|6?|mb zPW$~QiI!dcmpb(ML z?0l#vPeC)#!q6IUSb?6oAIW93^CwpvPQPX>;@bcuC$#bdDGd&H8eh2H_P)e$D$|qQ z)ckVWdoG(5fo%%?V?E!;=|&)LL2g=X5(VKnIScg^3ImIHB-V|cBf?o5h}}v1sp#K9 zqsn`NgkKHI?{X!gFH-_7Jp1)|Z4nD^&AsuN0H*yHF(Vl{RSQJO5nJ9tf7F}L90Sb| z=MI82(&BBwEq)2OuWj~|5Q1)dK_K9SB?AE47jLAVjF95W1DNh#h=K>*vflest>{4U zbo+w}xw8cyQB)q9`*FY36=JGw-IHMqKO-&v1~3HqfYQvz@%WQAB#XpXTo8)9mwq2p(}8?SY5nC>ydL!nTd`=4X}+%^FR74%0y%%cU{( zn61ah_@sBg52bLT)++3&3I9UYpM#5r>md!n#%g~h3aRf8Yt3LbYVoozLNMA%nzcR+ z3SoD5>%C6&djo2tU0fG|+*0btCBwQB|2_`lnNa6G)Y%_l?<8qD9N~=txHz&ygtlO1 zU$+9Z4z6Y~lGO{pqG1S;a=0RO+Iji95D#}}STE1TrTN0AeekEK0a{}6)UN{jvdy=m zLRl^)?ml}4Mgr4SS-{W)7HXr;(e88}^S*@44N*V1xEj6LZ-u99;v0`z;PjW~c-RT$ zFTuI%O4lD}!lydPaH)Uej*XFYXJ!so15cG4LnXu1LP$;JvJQ`=d7nQ|`0e}B%J)<0 M|E`cPa8LyQ13^0wdH?_b literal 0 HcmV?d00001 From ffeb3fe7e98ef58bf520105ef977709dc2ad560e Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Tue, 23 Feb 2021 12:55:31 -0500 Subject: [PATCH 19/32] Remove feature placeholder --- src/components/ItemMetadataView/ItemMetadataView.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/ItemMetadataView/ItemMetadataView.js b/src/components/ItemMetadataView/ItemMetadataView.js index 05f6357..6c4e4aa 100644 --- a/src/components/ItemMetadataView/ItemMetadataView.js +++ b/src/components/ItemMetadataView/ItemMetadataView.js @@ -33,11 +33,6 @@ export default function ItemMetadataView({item}){ {item.subject} - - - Status, assignments, priority, refile, archive and delete controls coming soon to a theater near you. - - ); } From 25f0635c11fd78296bf9f6b6cb4c4f91a98a8294 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Tue, 23 Feb 2021 13:03:52 -0500 Subject: [PATCH 20/32] Replace prop with context --- src/components/ItemView/ItemView.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/ItemView/ItemView.js b/src/components/ItemView/ItemView.js index 8bd7eda..67da0f7 100644 --- a/src/components/ItemView/ItemView.js +++ b/src/components/ItemView/ItemView.js @@ -4,13 +4,18 @@ import { Paper, AppBar, Tab, makeStyles, useTheme } from '@material-ui/core'; // Import these tab components from @material-ui/lab instead of @material-ui/core for automatic a11y props // See: https://material-ui.com/components/tabs/#experimental-api import { TabContext, TabList, TabPanel } from '@material-ui/lab'; -import ItemMetadataView from "../ItemMetadataView/" +import ItemMetadataView from "../ItemMetadataView" import ItemBodyView from "../ItemBodyView"; import ItemHeaderView from "../ItemHeaderView"; +import { useItem } from "../ItemProvider"; -export default function ItemView({ activeItem }){ +export default function ItemView(){ + // Set stateful variables const [activeTab, setActiveTab] = useState('Conversation'); + // Set contextual variables + const activeItem = useItem(); + const theme = useTheme(); const useStyles = makeStyles({ "paperPadding": { @@ -51,6 +56,4 @@ export default function ItemView({ activeItem }){ }; ItemView.propTypes = { - /** The item to be viewed. */ - "activeItem": PropTypes.object.isRequired }; \ No newline at end of file From 75de4add0dbdf7fb35adc4098ca272e0caa53ad5 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Tue, 23 Feb 2021 14:14:35 -0500 Subject: [PATCH 21/32] Remove debug logging --- src/components/ItemProvider/ItemProvider.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/components/ItemProvider/ItemProvider.js b/src/components/ItemProvider/ItemProvider.js index 3434aa0..b3d15e3 100644 --- a/src/components/ItemProvider/ItemProvider.js +++ b/src/components/ItemProvider/ItemProvider.js @@ -11,17 +11,9 @@ export const useItemSetter = () => useContext(ItemSetterContext); export default function ItemProvider({ children }) { const [item, setItem] = useState( {} ); - useEffect( _ => console.log("Current Item is: ", item)); - - const setItemWrapper = (newItem) => { - console.log("Old Item: ", item); - setItem(newItem); - console.log("Set new item."); - } - return ( - + {children} From d4961b52741d3e98381219c4b965a8c87b9e80f3 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Tue, 23 Feb 2021 14:22:34 -0500 Subject: [PATCH 22/32] Remove hardcoded ID for uniqueness --- src/components/ItemTableFilter/ItemTableFilter.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/ItemTableFilter/ItemTableFilter.js b/src/components/ItemTableFilter/ItemTableFilter.js index c3ef252..2c61967 100644 --- a/src/components/ItemTableFilter/ItemTableFilter.js +++ b/src/components/ItemTableFilter/ItemTableFilter.js @@ -24,7 +24,6 @@ export default function ItemTableFilter({ label, onChange }) { > {label} From 0470bbea070ac468f10f9bf9a6a1f32a94c267da Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Tue, 23 Feb 2021 16:11:24 -0500 Subject: [PATCH 23/32] Create timeline skeleton loader --- .../TimelineSkeleton/TimelineSkeleton.js | 31 +++++++++++++++++++ .../TimelineSkeleton/TimelineSkeleton.md | 17 ++++++++++ src/components/TimelineSkeleton/index.js | 1 + 3 files changed, 49 insertions(+) create mode 100644 src/components/TimelineSkeleton/TimelineSkeleton.js create mode 100644 src/components/TimelineSkeleton/TimelineSkeleton.md create mode 100644 src/components/TimelineSkeleton/index.js diff --git a/src/components/TimelineSkeleton/TimelineSkeleton.js b/src/components/TimelineSkeleton/TimelineSkeleton.js new file mode 100644 index 0000000..1dff555 --- /dev/null +++ b/src/components/TimelineSkeleton/TimelineSkeleton.js @@ -0,0 +1,31 @@ +import React from "react"; +import { Paper, Typography, makeStyles, useTheme } from '@material-ui/core'; +import { Skeleton } from '@material-ui/lab'; + +export default function TimelineSkeleton(){ + + const theme = useTheme(); + const useStyles = makeStyles({ + "Paper-root": { + overflow: "hidden" + }, + "padding": { + padding: theme.spacing(1) + } + + }); + const classes = useStyles(); + + return( + +
+ + + +
+
+ {[...Array(2).keys()].map( _ => )} +
+
+ ); +} \ No newline at end of file diff --git a/src/components/TimelineSkeleton/TimelineSkeleton.md b/src/components/TimelineSkeleton/TimelineSkeleton.md new file mode 100644 index 0000000..c13a7fe --- /dev/null +++ b/src/components/TimelineSkeleton/TimelineSkeleton.md @@ -0,0 +1,17 @@ +Renders a skeleton UI to indicate loading of a timeline item. + +```jsx +import { ThemeProvider } from "@material-ui/core/styles"; +import webqueue2Theme from "../../theme"; +import TimelineActionCard from "./TimelineSkeleton"; + +const theme = webqueue2Theme(false); + + + + +``` + +```jsx static + +``` \ No newline at end of file diff --git a/src/components/TimelineSkeleton/index.js b/src/components/TimelineSkeleton/index.js new file mode 100644 index 0000000..0d8e1b3 --- /dev/null +++ b/src/components/TimelineSkeleton/index.js @@ -0,0 +1 @@ +export { default } from "./TimelineSkeleton"; \ No newline at end of file From abf98dfc1a4b397778fbb2a844706c2776f9789b Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Tue, 23 Feb 2021 17:06:25 -0500 Subject: [PATCH 24/32] Add support for static files to react-styleguidist --- styleguidist/styleguide.config.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/styleguidist/styleguide.config.js b/styleguidist/styleguide.config.js index de44a92..12e4a94 100644 --- a/styleguidist/styleguide.config.js +++ b/styleguidist/styleguide.config.js @@ -6,6 +6,15 @@ const path = require('path') module.exports = { + + /** + * Static assets folder. Accessible as / in the style guide dev server. + * @type {string | array} + * @example "/" + * @default undefined + */ + assetsDir: "assetsDir", + /** * The title that appears at the top of the navigation bar. * @type {string} @@ -119,7 +128,7 @@ module.exports = { */ getComponentPathLine(componentPath) { const name = path.basename(componentPath, '.js') - return `import ${name} from './components/${name}/';` + return `import ${name} from '../components/${name}/';` }, /** From f1446674f5dd9f80b20b9f2398820b65b8da1014 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Mon, 1 Mar 2021 16:53:43 -0500 Subject: [PATCH 25/32] Add loading state and refactor props --- src/components/ItemBodyView/ItemBodyView.js | 95 +++++++++--------- src/components/ItemBodyView/ItemBodyView.md | 15 +-- src/components/ItemView/ItemView.js | 10 +- .../TimelineSkeleton/TimelineSkeleton.js | 5 +- .../assetsDir/ItemBodyView_Loaded.png | Bin 0 -> 71064 bytes .../assetsDir/ItemBodyView_Loading.gif | Bin 0 -> 165641 bytes 6 files changed, 66 insertions(+), 59 deletions(-) create mode 100644 styleguidist/assetsDir/ItemBodyView_Loaded.png create mode 100644 styleguidist/assetsDir/ItemBodyView_Loading.gif diff --git a/src/components/ItemBodyView/ItemBodyView.js b/src/components/ItemBodyView/ItemBodyView.js index eda0813..950f7ca 100644 --- a/src/components/ItemBodyView/ItemBodyView.js +++ b/src/components/ItemBodyView/ItemBodyView.js @@ -1,15 +1,15 @@ import React from "react"; import PropTypes from "prop-types"; -import { Timeline, TimelineItem, TimelineSeparator, TimelineConnector, TimelineContent, TimelineDot, Skeleton } from '@material-ui/lab'; +import { Timeline, TimelineItem, TimelineSeparator, TimelineConnector, TimelineContent, TimelineDot } from '@material-ui/lab'; import { makeStyles } from "@material-ui/core"; import DirectoryInformation from "../DirectoryInformation/"; import Assignment from "../Assignment/"; import TimelineActionCard from "../TimelineActionCard/"; import MessageView from "../MessageView/"; import ParseError from "../ParseError/"; -import { objectIsEmpty } from "../../utilities"; +import TimelineSkeleton from "../TimelineSkeleton/"; -export default function ItemBodyView({ item }) { +export default function ItemBodyView({ sections, loading }) { const useStyles = makeStyles(() => ({ "Timeline-root": { @@ -30,6 +30,11 @@ export default function ItemBodyView({ item }) { })); const classes = useStyles(); + /** + * Returns a section type specific timeline item. + * @param {Object} section The + * @returns {Node} A section type specific timeline item. + */ const generateTimelineItem = (section) => { switch (section.type) { case "directory_information": @@ -41,11 +46,11 @@ export default function ItemBodyView({ item }) { case "status": return case "assignment": - return + return case "reply_to_user": return case "reply_from_user": - return + return case "parse_error": return default: @@ -53,54 +58,48 @@ export default function ItemBodyView({ item }) { }; }; - const testing = true; + const TimelineItemTemplate = ({ children }) => ( + + + + + + + {children} + + + ); return ( - {/* Below is the original ternary operation for the map fucntion for future reference */} - {/* {objectIsEmpty(item) ? "" : item.content.map((section) */} - - {testing ? Object.keys(item).map((section) => ( - - - - - - - - - - )) - : item.content.map((section) => ( - - - - - - {item === undefined - ? - : generateTimelineItem(section) - } - - - ))} + { loading + ? ( // Generate 3 placeholders. + [...Array(3).keys()].map( (_, index) => ( + + + + )) + ) + : ( // Generate timeline. + sections.map((section) => ( + + {generateTimelineItem(section)} + + )) + ) + } ); }; ItemBodyView.propTypes = { - /** The item to diplay. */ - "item": PropTypes.object.isRequired -}; \ No newline at end of file + /** Section of an item to display. */ + "sections": PropTypes.array, + /** If true, shows loading placeholder. */ + "loading": PropTypes.bool +}; + +ItemBodyView.defaultProps = { + "sections": [], + "loading": false +} \ No newline at end of file diff --git a/src/components/ItemBodyView/ItemBodyView.md b/src/components/ItemBodyView/ItemBodyView.md index 6a741ea..f92f979 100644 --- a/src/components/ItemBodyView/ItemBodyView.md +++ b/src/components/ItemBodyView/ItemBodyView.md @@ -8,15 +8,16 @@ The ItemBodyView displays the seven actions possible in an item: - **Reply To User:** a message sent from an ECN employee to a user. - **Reply To ECN:** a message sent from the user to ECN that has been merged into an existing item. -```jsx -import ItemBodyView from "./ItemBodyView"; +## Default View +![ItemBodyView_Loaded](/ItemBodyView_Loaded.png) -const demoItem = {"queue": "ce", "number": 100, "lastUpdated": "09-28-20 01:26 PM", "headers": [{"type": "Merged-Time", "content": "Tue, 23 Jun 2020 13:31:53 -0400"}, {"type": "Merged-By", "content": "campb303"}, {"type": "QTime", "content": "1"}, {"type": "QTime-Updated-Time", "content": "Tue, 23 Jun 2020 13:28:50 EDT"}, {"type": "QTime-Updated-By", "content": "campb303"}, {"type": "Time", "content": "1"}, {"type": "Time-Updated-Time", "content": "Tue, 23 Jun 2020 13:28:50 EDT"}, {"type": "Time-Updated-By", "content": "campb303"}, {"type": "Replied-Time", "content": "Tue, 23 Jun 2020 13:28:48 -0400"}, {"type": "Replied-By", "content": "campb303"}, {"type": "Edited-Time", "content": "Tue, 23 Jun 2020 13:27:56 -0400"}, {"type": "Edited-By", "content": "campb303"}, {"type": "QAssigned-To", "content": "campb303"}, {"type": "QAssigned-To-Updated-Time", "content": "Tue, 23 Jun 2020 13:27:00 EDT"}, {"type": "QAssigned-To-Updated-By", "content": "campb303"}, {"type": "Assigned-To", "content": "campb303"}, {"type": "Assigned-To-Updated-Time", "content": "Tue, 23 Jun 2020 13:27:00 EDT"}, {"type": "Assigned-To-Updated-By", "content": "campb303"}, {"type": "QStatus", "content": "Dont Delete"}, {"type": "QStatus-Updated-Time", "content": "Tue, 23 Jun 2020 13:26:55 EDT"}, {"type": "QStatus-Updated-By", "content": "campb303"}, {"type": "Status", "content": "Dont Delete"}, {"type": "Status-Updated-Time", "content": "Tue, 23 Jun 2020 13:26:55 EDT"}, {"type": "Status-Updated-By", "content": "campb303"}, {"type": "Date", "content": "Tue, 23 Jun 2020 13:25:51 -0400"}, {"type": "From", "content": "Justin Campbell "}, {"type": "Message-ID", "content": "<911CE050-3240-4980-91DD-9C3EBB8DBCF8@purdue.edu>"}, {"type": "Subject", "content": "Beepboop"}, {"type": "To", "content": "cesite@ecn.purdue.edu"}, {"type": "Content-Type", "content": "text/plain; charset=\"utf-8\""}, {"type": "X-ECN-Queue-Original-Path", "content": "/home/pier/e/queue/Attachments/inbox/2020-06-23/208-original.txt"}, {"type": "X-ECN-Queue-Original-URL", "content": "https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/208-original.txt"}], "content": [{"type": "directory_information", "Name": "Heyi Feng", "Login": "feng293", "Computer": "civil4147pc2.ecn", "Location": "HAMP 4147", "Email": "feng293@purdue.edu", "Phone": "5039154835", "Office": "", "UNIX Dir": "None", "Zero Dir": "U=\\\\myhome.itap.purdue.edu\\myhome\\%username%", "User ECNDB": "http://eng.purdue.edu/jump/2e29495", "Host ECNDB": "http://eng.purdue.edu/jump/2eccc3f", "Subject": "Upgrade system and Abaqus"}, {"type": "assignment", "datetime": "2020-06-23T13:27:00-0400", "by": "campb303", "to": "campb303"}, {"type": "initial_message", "datetime": "2020-06-23T13:25:51-0400", "from_name": "Justin Campbell", "user_email": "campb303@purdue.edu", "to": [{"name": "", "email": "cesite@ecn.purdue.edu"}], "cc": [], "content": ["Testtest\n"]}, {"type": "status", "datetime": "2020-06-23T13:26:55", "by": "campb303", "content": ["Dont Delete\n"]}, {"type": "edit", "datetime": "2020-06-23T13:27:56", "by": "campb303", "content": ["This be an edit my boy\n"]}, {"type": "reply_to_user", "datetime": "2020-06-23T13:28:18", "by": "campb303", "content": ["This be a reply my son\n", "\n", "Justin\n", "ECN\n"]}, {"type": "reply_from_user", "datetime": "2020-06-23T13:30:45-0400", "from_name": "Justin Campbell", "from_email": "campb303@purdue.edu", "cc": [], "content": ["X-ECN-Queue-Original-Path: /home/pier/e/queue/Attachments/inbox/2020-06-23/212-original.txt\n", "X-ECN-Queue-Original-URL: https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/212-original.txt\n", "\n", "Huzzah!\n"]}], "isLocked": "ce 100 is locked by knewell using qvi", "userEmail": "campb303@purdue.edu", "userName": "Justin Campbell", "userAlias": "campb303", "assignedTo": "campb303", "subject": "Beepboop", "status": "Dont Delete", "priority": "", "department": "", "building": "", "dateReceived": "2020-06-23T13:25:51-0400"}; -
- -
+```jsx static + ``` +## Loading View +![ItemBodyView_Loaded](/ItemBodyView_Loading.gif) + ```jsx static - + ``` \ No newline at end of file diff --git a/src/components/ItemView/ItemView.js b/src/components/ItemView/ItemView.js index 67da0f7..f511fbf 100644 --- a/src/components/ItemView/ItemView.js +++ b/src/components/ItemView/ItemView.js @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import PropTypes from "prop-types"; import { Paper, AppBar, Tab, makeStyles, useTheme } from '@material-ui/core'; // Import these tab components from @material-ui/lab instead of @material-ui/core for automatic a11y props @@ -7,14 +7,16 @@ import { TabContext, TabList, TabPanel } from '@material-ui/lab'; import ItemMetadataView from "../ItemMetadataView" import ItemBodyView from "../ItemBodyView"; import ItemHeaderView from "../ItemHeaderView"; -import { useItem } from "../ItemProvider"; +import { useItem, useItemSetter } from "../ItemProvider"; export default function ItemView(){ // Set stateful variables const [activeTab, setActiveTab] = useState('Conversation'); + const [isLoading, setIsLoading] = useState(false); // Set contextual variables const activeItem = useItem(); + const setActiveItem = useItemSetter(); const theme = useTheme(); const useStyles = makeStyles({ @@ -44,9 +46,11 @@ export default function ItemView(){ + - + + diff --git a/src/components/TimelineSkeleton/TimelineSkeleton.js b/src/components/TimelineSkeleton/TimelineSkeleton.js index 1dff555..6c2d15d 100644 --- a/src/components/TimelineSkeleton/TimelineSkeleton.js +++ b/src/components/TimelineSkeleton/TimelineSkeleton.js @@ -24,7 +24,10 @@ export default function TimelineSkeleton(){
- {[...Array(2).keys()].map( _ => )} + { + // Generate 2 placeholders. + [...Array(2).keys()].map( (_, index) => ) + }
); diff --git a/styleguidist/assetsDir/ItemBodyView_Loaded.png b/styleguidist/assetsDir/ItemBodyView_Loaded.png new file mode 100644 index 0000000000000000000000000000000000000000..b99e9f56ea7b09c1463cb16536102fa2bd63fc64 GIT binary patch literal 71064 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 DGTJoZ literal 0 HcmV?d00001 diff --git a/styleguidist/assetsDir/ItemBodyView_Loading.gif b/styleguidist/assetsDir/ItemBodyView_Loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..33294137eb6b55a03cd8bd019adede6a9d138468 GIT binary patch literal 165641 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

TNv4w!p%-g55nR2BRFQ6p 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 NJPWOb{Ez|({2yYN5*`2m literal 0 HcmV?d00001 From 2a7b674ea6187608103b5ab4dc000990e61cc130 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Tue, 2 Mar 2021 12:42:17 -0500 Subject: [PATCH 26/32] Fix validateDOM warning --- src/components/ItemTable/ItemTable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ItemTable/ItemTable.js b/src/components/ItemTable/ItemTable.js index 13e96a0..d8a77cc 100644 --- a/src/components/ItemTable/ItemTable.js +++ b/src/components/ItemTable/ItemTable.js @@ -192,7 +192,7 @@ export default function ItemTable({ data, rowCanBeSelected, loading }) { ); } }) - ))}; + ))} ); })} From e534ef602623351ed178f803630dccaa92da4bb8 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Tue, 2 Mar 2021 14:14:45 -0500 Subject: [PATCH 27/32] Fix proptype specifications --- src/components/ItemTableCell/ItemTableCell.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/ItemTableCell/ItemTableCell.js b/src/components/ItemTableCell/ItemTableCell.js index cf13a74..38bacee 100644 --- a/src/components/ItemTableCell/ItemTableCell.js +++ b/src/components/ItemTableCell/ItemTableCell.js @@ -26,7 +26,11 @@ export default function ItemTableCell({ children, TableCellProps }) { ItemTableCell.propTypes = { /** Child object passed to display cell data. */ - "children": PropTypes.object, + "children": PropTypes.oneOfType([ + PropTypes.string, + PropTypes.number, + PropTypes.element + ]), /** Props applied to the TableCell component. */ "TableCellProps": PropTypes.object }; From 6e7acf1e99a716710171cb629c83bf289027bcc0 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Tue, 2 Mar 2021 14:17:26 -0500 Subject: [PATCH 28/32] Fix validateDOM warning --- src/components/ItemTable/ItemTable.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/ItemTable/ItemTable.js b/src/components/ItemTable/ItemTable.js index d8a77cc..424d55e 100644 --- a/src/components/ItemTable/ItemTable.js +++ b/src/components/ItemTable/ItemTable.js @@ -107,7 +107,6 @@ export default function ItemTable({ data, rowCanBeSelected, loading }) { {headerGroups.map(headerGroup => ( {headerGroup.headers.map(column => ( - @@ -143,7 +142,6 @@ export default function ItemTable({ data, rowCanBeSelected, loading }) { - ))} ))} From d0e56497292d300a4abbc2e91a2508cfa55eccdd Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Thu, 11 Mar 2021 21:25:01 -0500 Subject: [PATCH 29/32] Implement async item loading in ItemView --- src/components/AppView/AppView.js | 39 +++++++++-------------------- src/components/ItemView/ItemView.js | 39 ++++++++++++++++++++++++++++- 2 files changed, 50 insertions(+), 28 deletions(-) diff --git a/src/components/AppView/AppView.js b/src/components/AppView/AppView.js index 8536140..abb7e67 100644 --- a/src/components/AppView/AppView.js +++ b/src/components/AppView/AppView.js @@ -9,7 +9,6 @@ import ItemViewAppBar from "../ItemViewAppBar/"; import ItemView from "../ItemView/"; import QueueSelector from "../QueueSelector/"; import { useToken } from "../AuthProvider/"; -import { useItem, useItemSetter } from "../ItemProvider/"; export default function AppView({ setDarkMode }){ // Create stateful variables. @@ -20,9 +19,6 @@ export default function AppView({ setDarkMode }){ const [queueSelectorOpen, setQueueSelectorOpen] = useState(false); const [isLoading, setIsLoading] = useState(false); - // Create contextual variables. - const activeItem = useItem(); - const setActiveItem = useItemSetter(); const access_token = useToken(); // Get Queues from API. @@ -111,7 +107,6 @@ export default function AppView({ setDarkMode }){ return( - - {items.length === 0 ? null : { - const item = items.find((item) => { - return item.queue === match.params.queue && item.number === Number(match.params.number); - }); - - if (item === undefined) { - return ( - - ); - } - - setActiveItem(item); - - return ( - <> - - - - ); - } - } + render={({ match }) => ( + <> + + + + )} /> } diff --git a/src/components/ItemView/ItemView.js b/src/components/ItemView/ItemView.js index f511fbf..e2650bb 100644 --- a/src/components/ItemView/ItemView.js +++ b/src/components/ItemView/ItemView.js @@ -8,8 +8,9 @@ import ItemMetadataView from "../ItemMetadataView" import ItemBodyView from "../ItemBodyView"; import ItemHeaderView from "../ItemHeaderView"; import { useItem, useItemSetter } from "../ItemProvider"; +import { useToken } from "../AuthProvider/"; -export default function ItemView(){ +export default function ItemView({ queue, number }){ // Set stateful variables const [activeTab, setActiveTab] = useState('Conversation'); const [isLoading, setIsLoading] = useState(false); @@ -17,6 +18,38 @@ export default function ItemView(){ // Set contextual variables const activeItem = useItem(); const setActiveItem = useItemSetter(); + const access_token = useToken(); + + // Get full Item from API + useEffect( _ => { + (async _ => { + if (access_token === null){ + return undefined; + } + + if (activeItem.queue === queue && activeItem.number == number){ + return undefined; + } + + setIsLoading(true); + + let myHeaders = new Headers(); + myHeaders.append("Authorization", `Bearer ${access_token}`); + let requestOptions = { headers: myHeaders }; + + const apiResponse = await fetch(`/api/${queue}/${number}`, requestOptions); + + if (!apiResponse.ok){ + console.error(`Fetching item ${queue}${number}. Got code ${apiResponse.status} (${apiResponse.statusText})`); + return undefined; + } + + const itemJson = await apiResponse.json(); + + setActiveItem(itemJson); + setIsLoading(false) + })(); + }, [access_token, activeItem, setActiveItem, queue, number]); const theme = useTheme(); const useStyles = makeStyles({ @@ -60,4 +93,8 @@ export default function ItemView(){ }; ItemView.propTypes = { + /** The queue of the item to load. */ + "queue": PropTypes.string.isRequired, + /** The number of the item to load. */ + "number": PropTypes.number.isRequired }; \ No newline at end of file From 322a07530435c54378dbf7b88b631477dd44f3aa Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Thu, 11 Mar 2021 21:25:07 -0500 Subject: [PATCH 30/32] Update ItemView docs --- src/components/ItemView/ItemView.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/components/ItemView/ItemView.md b/src/components/ItemView/ItemView.md index a9e1ef0..61eee38 100644 --- a/src/components/ItemView/ItemView.md +++ b/src/components/ItemView/ItemView.md @@ -1,13 +1,5 @@ The ItemView is the primary view for an item. It displays the messages and actions in a timeline view. -```jsx -import React, { useState } from "react"; - -const demoItem = {"queue": "ce", "number": 100, "lastUpdated": "07-23-20 10:11 PM", "headers": [{"type": "Merged-Time", "content": "Tue, 23 Jun 2020 13:31:53 -0400"}, {"type": "Merged-By", "content": "campb303"}, {"type": "QTime", "content": "1"}, {"type": "QTime-Updated-Time", "content": "Tue, 23 Jun 2020 13:28:50 EDT"}, {"type": "QTime-Updated-By", "content": "campb303"}, {"type": "Time", "content": "1"}, {"type": "Time-Updated-Time", "content": "Tue, 23 Jun 2020 13:28:50 EDT"}, {"type": "Time-Updated-By", "content": "campb303"}, {"type": "Replied-Time", "content": "Tue, 23 Jun 2020 13:28:48 -0400"}, {"type": "Replied-By", "content": "campb303"}, {"type": "Edited-Time", "content": "Tue, 23 Jun 2020 13:27:56 -0400"}, {"type": "Edited-By", "content": "campb303"}, {"type": "QAssigned-To", "content": "campb303"}, {"type": "QAssigned-To-Updated-Time", "content": "Tue, 23 Jun 2020 13:27:00 EDT"}, {"type": "QAssigned-To-Updated-By", "content": "campb303"}, {"type": "Assigned-To", "content": "campb303"}, {"type": "Assigned-To-Updated-Time", "content": "Tue, 23 Jun 2020 13:27:00 EDT"}, {"type": "Assigned-To-Updated-By", "content": "campb303"}, {"type": "QStatus", "content": "Dont Delete"}, {"type": "QStatus-Updated-Time", "content": "Tue, 23 Jun 2020 13:26:55 EDT"}, {"type": "QStatus-Updated-By", "content": "campb303"}, {"type": "Status", "content": "Dont Delete"}, {"type": "Status-Updated-Time", "content": "Tue, 23 Jun 2020 13:26:55 EDT"}, {"type": "Status-Updated-By", "content": "campb303"}, {"type": "Date", "content": "Tue, 23 Jun 2020 13:25:51 -0400"}, {"type": "From", "content": "Justin Campbell "}, {"type": "Message-ID", "content": "<911CE050-3240-4980-91DD-9C3EBB8DBCF8@purdue.edu>"}, {"type": "Subject", "content": "Beepboop"}, {"type": "To", "content": "cesite@ecn.purdue.edu"}, {"type": "Content-Type", "content": "text/plain; charset=\"utf-8\""}, {"type": "X-ECN-Queue-Original-Path", "content": "/home/pier/e/queue/Attachments/inbox/2020-06-23/208-original.txt"}], "content": ["Testtest\n", "\n", "*** Status updated by: campb303 at: 6/23/2020 13:26:55 ***\n", "Dont Delete\n", "*** Edited by: campb303 at: 06/23/20 13:27:56 ***\n", "\n", "This be an edit my boy\n", "\n", "\n", "\n", "*** Replied by: campb303 at: 06/23/20 13:28:18 ***\n", "\n", "This be a reply my son\n", "\n", "Justin\n", "ECN\n", "\n", "=== Additional information supplied by user ===\n", "\n", "Subject: Re: Beepboop\n", "From: Justin Campbell \n", "Date: Tue, 23 Jun 2020 13:30:45 -0400\n", "X-ECN-Queue-Original-Path: /home/pier/e/queue/Attachments/inbox/2020-06-23/212-original.txt\n", "X-ECN-Queue-Original-URL: https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/212-original.txt\n", "\n", "Huzzah!\n", "\n", "===============================================\n"], "isLocked": "ce 100 is locked by knewell using qvi", "userEmail": "campb303@purdue.edu", "userName": "Justin Campbell", "userAlias": "campb303", "assignedTo": "campb303", "subject": "Beepboop", "status": "Dont Delete", "priority": "", "department": "", "building": "", "dateReceived": "Tue, 23 Jun 2020 13:25:51 -0400"}; - - -``` - ```jsx static - + ``` \ No newline at end of file From 6afaf23e79925cfa387795fa4985b2931bac8285 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Fri, 12 Mar 2021 17:24:03 -0500 Subject: [PATCH 31/32] Add error page to ItemView --- src/components/ItemView/ItemView.js | 77 +++++++++++++++++++---------- 1 file changed, 52 insertions(+), 25 deletions(-) diff --git a/src/components/ItemView/ItemView.js b/src/components/ItemView/ItemView.js index e2650bb..0bedad7 100644 --- a/src/components/ItemView/ItemView.js +++ b/src/components/ItemView/ItemView.js @@ -1,19 +1,22 @@ import React, { useState, useEffect } from 'react'; import PropTypes from "prop-types"; -import { Paper, AppBar, Tab, makeStyles, useTheme } from '@material-ui/core'; +import { Paper, AppBar, Tab, makeStyles, useTheme, Box, Typography } from '@material-ui/core'; // Import these tab components from @material-ui/lab instead of @material-ui/core for automatic a11y props // See: https://material-ui.com/components/tabs/#experimental-api import { TabContext, TabList, TabPanel } from '@material-ui/lab'; +import SadFaceIcon from '@material-ui/icons/SentimentVeryDissatisfied'; import ItemMetadataView from "../ItemMetadataView" import ItemBodyView from "../ItemBodyView"; import ItemHeaderView from "../ItemHeaderView"; import { useItem, useItemSetter } from "../ItemProvider"; import { useToken } from "../AuthProvider/"; -export default function ItemView({ queue, number }){ +export default function ItemView() { + let { queue, number } = {queue: "test", number: 1}; // Set stateful variables const [activeTab, setActiveTab] = useState('Conversation'); const [isLoading, setIsLoading] = useState(false); + const [error, setError] = useState(false); // Set contextual variables const activeItem = useItem(); @@ -21,13 +24,13 @@ export default function ItemView({ queue, number }){ const access_token = useToken(); // Get full Item from API - useEffect( _ => { + useEffect(_ => { (async _ => { - if (access_token === null){ + if (access_token === null) { return undefined; } - if (activeItem.queue === queue && activeItem.number == number){ + if (activeItem.queue === queue && activeItem.number == number) { return undefined; } @@ -39,8 +42,9 @@ export default function ItemView({ queue, number }){ const apiResponse = await fetch(`/api/${queue}/${number}`, requestOptions); - if (!apiResponse.ok){ + if (!apiResponse.ok) { console.error(`Fetching item ${queue}${number}. Got code ${apiResponse.status} (${apiResponse.statusText})`); + setError(true); return undefined; } @@ -61,6 +65,13 @@ export default function ItemView({ queue, number }){ }, "tabPanelPadding": { padding: `${theme.spacing(2)}px ${theme.spacing(2)}px` + }, + errorContainer: { + display: "flex", + flexDirection: "column", + alignItems: "center", + justifyContent: "center", + marginTop: theme.spacing(6) } }); const classes = useStyles(); @@ -69,25 +80,41 @@ export default function ItemView({ queue, number }){ setActiveTab(newValue); }; - return( - - - - - - - - - - - - - - - - - - + return ( + + {error ? ( + + + 4☹4 + + + Something went wrong. + + + {`Item ${queue}${number} could not be found.`} + + + ) : ( + <> + + + + + + + + + + + + + + + + + + + )} ); }; From ebbafcb5d2e1d5c7a9120c006d3a0ab9e337fe6c Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Fri, 12 Mar 2021 17:24:31 -0500 Subject: [PATCH 32/32] Remove unused icon --- src/components/ItemView/ItemView.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/ItemView/ItemView.js b/src/components/ItemView/ItemView.js index 0bedad7..ce6e65e 100644 --- a/src/components/ItemView/ItemView.js +++ b/src/components/ItemView/ItemView.js @@ -4,7 +4,6 @@ import { Paper, AppBar, Tab, makeStyles, useTheme, Box, Typography } from '@mate // Import these tab components from @material-ui/lab instead of @material-ui/core for automatic a11y props // See: https://material-ui.com/components/tabs/#experimental-api import { TabContext, TabList, TabPanel } from '@material-ui/lab'; -import SadFaceIcon from '@material-ui/icons/SentimentVeryDissatisfied'; import ItemMetadataView from "../ItemMetadataView" import ItemBodyView from "../ItemBodyView"; import ItemHeaderView from "../ItemHeaderView";