Skip to content

Commit

Permalink
Merge branch 'main' into feature/tutor-times
Browse files Browse the repository at this point in the history
  • Loading branch information
maddernd committed Sep 22, 2023
2 parents cac6de9 + 5f13004 commit 5dfe791
Show file tree
Hide file tree
Showing 12 changed files with 1,586 additions and 0 deletions.

Large diffs are not rendered by default.

81 changes: 81 additions & 0 deletions docs/ArtGallery/Lighthouse Project/LighthouseReviewReport.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# Report on task: Review Research from T1 and create backlog

I have reviewed two reports on the Lighthouse scores and identified the issues that needed to be
rectified. One report was a review on the desktop app and the other was a review on the mobile app.
Both had many errors so, I had to analyse both reports and did some research on finding
recommendations and solutions for the issue identified.

## Desktop App

For the desktop app, here are the problems/recommendations I have identified from the report:

- Properly size images (add explicit width & height for images)
- Work on reducing network payloads
- Serve static assets with efficient cache policy
- Optimise the Largest Contentful Paint (make it faster):
- Eliminate resource load delay
- Eliminate element render delay
- Reduce resource load time
- Reduce time to first byte
- Reduce the impact of third-party code (identify slow third-party JavaScript)
- Reduce JavaScript execution time:
- Remove unused code
- Minify and compress code
- Implement code splitting
- Cache code with PRPL pattern
- Minimise main thread work:
- Evaluate the script (debounce input handlers, use web workers)
- Check style layout (reduce complexity of style calculations, avoid large, complex layouts).
- Rendering (manage layer count, simplify paint complexity, and reduce paint areas)
- Parse HTML and CSS (extract critical CSS, minify CSS, defer non-critical CSS)
- Reduce resource counts and transfer sizes (CSS & JavaScript, Images, Fonts, Documents, Media)
- Minify JavaScript
- Improve page loading speed:
- Using Preconnect to required origins
- Preload key requests
- Minimise critical request depth:
- Minimise number of critical resources (eliminate them, defer their download, etc)
- Optimize the number of critical bytes and reduce the download time
- Optimize the order for the remaining resources to be loaded (download all critical assets early
to shorten critical path length)

## Mobile App

For the mobile app, here are the problems/recommendations I have identified from the report:

- Properly size images (add explicit width & height for images)
- Work on reducing network payloads
- Serve static assets with efficient cache policy
- Optimise the Largest Contentful Paint (make it faster):
- Eliminate resource load delay
- Eliminate element render delay
- Reduce resource load time
- Reduce time to first byte
- Improve mobile friendliness (appropriately size tap targets)
- Reduce the impact of third-party code (identify slow third-party JavaScript)
- Reduce JavaScript execution time:
- Remove unused code
- Minify and compress code
- Implement code splitting
- Cache code with PRPL pattern
- Minimise main thread work:
- Evaluate the script (debounce input handlers, use web workers)
- Check style layout (reduce complexity of style calculations, avoid large, complex layouts).
- Rendering (manage layer count, simplify paint complexity, and reduce paint areas)
- Parse HTML and CSS (extract critical CSS, minify CSS, defer non-critical CSS)
- Reduce resource counts and transfer sizes (CSS & JavaScript, Images, Fonts, Documents, Media)
- Minify JavaScript
- Improve page loading speed:
- Using Preconnect to required origins
- Preload key requests
- Minimise critical request depth:
- Minimise number of critical resources (eliminate them, defer their download, etc)
- Optimize the number of critical bytes and reduce the download time
- Optimize the order for the remaining resources to be loaded (download all critical assets early
to shorten critical path length)
- Shorten main-thread tasks
- Check and use discernible name for links
- Add meta description to document

I have added cards and allocated story points for each of these problems and recommendations into
the Trello board under the ‘Lighthouse Project Implementation’ section.
59 changes: 59 additions & 0 deletions docs/ArtGallery/Lighthouse Project/SpikeUpskillingReport.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Report on Upskilling

## JavaScript basics with HTML and CSS

I have spent some time upskilling to contribute to this project. So far, I have learnt the basics of
using JavaScript with HTML and CSS. I have completed a 7-hour course online and followed through
each chapter of the basics and I understand the basic concepts of working with these languages
together for web development.

The online courses focused mainly on the fundamentals of JavaScript, HTML and CSS. I have learnt a
few important information from this course:

- JavaScript basics
- Modifying text styles, text boxes and images using CSS
- Chrome DevTools – tool for debugging and inspecting code
- CSS Box Model – designing and positioning elements on a website. Structure of HTML

### Courses for this upskilling

- HTML to CSS Full Course (Beginner)
- JavaScript, HTML & CSS Basics

## CSS and Javascript, vue.js upskilling

I have learnt how to modify existing CSS code to remove unnecessary code without changing the
appearance of the website. I have also learnt how vue.js works and how to make changes to existing
code. This is to help with tasks related to improving network payloads, . Here is a list of what I
have learnt during this upskilling:

- remove unused CSS code
- remove unused JavaScript code
- including webpacks to help with CSS & JS codes
- purpose of vue.js, and how it functions

### Topics covered

- Removing unused CSS, JavaScript and HTML code
- Learn webpacks to help minify CSS, JavaScript and HTML
- Vue.js for beginners

## Lazy loading, TreeShaking and Ant Design upskilling

I have learnt how to implement lazy routing and TreeShaking into the existing code to help with some
performance issues. I have also learnt about Ant Design, it's purpose and how it works. This
upskilling helps with tasks related to PRPL and modifying/reducing impact of thirs party code. I
have learnt the following:

- What is lazy routing
- How to properly implement lazy loading
- What is TreeShaking and what does it to
- How to implement TreeShaking
- What is Ant Design and why is it used

### Topics covered for this upskilling

- Vue router tutorial
- Lazy routing and code splitting
- What is TreeShaking and how to implement
- Ant Design courses
78 changes: 78 additions & 0 deletions docs/ConvertTrello.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import json
import csv

# Load the JSON file
with open('Trello.json', 'r') as file:
data = json.load(file)

# Define the backlogs of interest/Sprints Of interest
backlogs_of_interest_names = [
"Sprint 1 -Upstream Review", "Sprint 1 Complete",
"Sprint 2 Code Review", "Sprint 2 -Upstream Review", "Sprint 2 Complete",
"Sprint 3 Review", "Sprint 3 Complete",
"Sprint 4 Review", "Sprint 4 Complete",
"Numbas - Code-Review", "Numbas - Complete"
]

# Map the list names to their IDs/Names
list_id_to_name_mapping = {}
backlogs_of_interest = []

for list_ in data["lists"]:
if list_["name"] in backlogs_of_interest_names:
backlogs_of_interest.append(list_["id"])
list_id_to_name_mapping[list_["id"]] = list_["name"]


# Extract members
members = {member["id"]: member["fullName"] for member in data["members"]}

# Process cards
cards_by_member = {}
total_story_points = {}
for card in data["cards"]:
if card["idList"] in backlogs_of_interest:
for member in card["idMembers"]:
if member in cards_by_member:
cards_by_member[member].append(card)
else:
cards_by_member[member] = [card]

# Extract story points
story_points = 0
for plugin_data in card.get("pluginData", []):
if "storyPoints" in plugin_data["value"]:
story_points = int(json.loads(plugin_data["value"])["storyPoints"])

# Update total story points for member
if member in total_story_points:
total_story_points[member] += story_points
else:
total_story_points[member] = story_points

# Write the CSV
with open('OntrackTrelloReview.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(["Sprint", "Full Name", "Card Name", "GitHub Link", "Story Points", "Total Story Points"])

for member_id, cards in cards_by_member.items():
for index, card in enumerate(cards):
# Extract story points for the current card
story_points = 0
for plugin_data in card.get("pluginData", []):
if "storyPoints" in plugin_data["value"]:
story_points = int(json.loads(plugin_data["value"])["storyPoints"])

# Check for GitHub related info
github_link = None
for attachment in card.get("attachments", []):
if "github.com" in attachment["url"]:
github_link = attachment["url"]
break

# Determine if we should show the total story points for this row
show_total = total_story_points[member_id] if index == len(cards) - 1 else ""

sprint_name = list_id_to_name_mapping[card["idList"]]
writer.writerow([sprint_name, members[member_id], card["name"], github_link, story_points, show_total])

Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# \*\*Spike Outcomes

==================

**Spike:** Spike_No

**Title:** Data Analytics Spike

**Author:** Dylan Sutherland, <djsutherland@deakin.edu.au>

## Goals / Deliverables

Summarise from the spike plan goal*Besides this report, what else was created ie UML, code, reports*

- Data Analytics backlog on Trello

## Technologies, Tools, and Resources used

List of information needed by someone trying to reproduce this work\

- Internet Browser; Google Chrome, FireFox, Safari

## Tasks undertaken

List key tasks likely to help another developer

- Engaged in Discussion with Andrew Cain
- Created a Trello backlog for the continued development of Data Analytics

## What we found out

The Data Analytics feature as it currently exists in OnTrack provides a limited set of
visualisations given the data available. The current visualisations are: Target Grade Pie Chart,
Task Status Pie Chart & Task Completion Box Plot. For the future development of Data Analytics,
although integrated visualisations will continue to play a key role in providing a quick overview of
the data, the ability to export the data to a third party tool such as Tableau or PowerBI will be a
key feature. This will allow for more complex visualisations to be created and for the data to be
analysed in more depth. The current visualisations will need to be migrated to the latest version of
Angular and maintained as they provide a quick overview of the data. One particular area where the
current visualisations are lacking is the ability to track interaction time such as tutor time to
provide task feedback, this is a key visualisation which could be added to the existing
visualisations. In parallel to extending the current visualisations, the requirements of the export
feature will be investigated including a questionnaire to understand the needs of Unit chairs and
tutors, before designing UML diagrams and implementing the feature.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 5dfe791

Please sign in to comment.