Skip to content

Commit

Permalink
feat(canvas): ✨ filter import by existence of due date (#60)
Browse files Browse the repository at this point in the history
Squashed commit of the following:

commit 781ce97
Author: James <james@jamesnzl.xyz>
Date:   Wed Jul 20 23:21:01 2022 +1200

    feat(canvas): :sparkles: filter import by existence of due date

commit a331107
Author: James <james@jamesnzl.xyz>
Date:   Wed Jul 20 23:14:13 2022 +1200

    feat(options): :sparkles: add option to ignore assignments without due dates
  • Loading branch information
JamesNZL committed Jul 20, 2022
1 parent 141bab9 commit f242e81
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 4 deletions.
1 change: 1 addition & 0 deletions src/apis/storage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ export const Storage = <const>{
},
canvas: {
timeZone: savedFields['timeZone'],
importMissingDueDates: savedFields['canvas.importMissingDueDates'],
courseCodeOverrides: JSON.parse(savedFields['canvas.courseCodeOverrides']),
},
notion: {
Expand Down
25 changes: 25 additions & 0 deletions src/options/configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
InputFieldValidator,
StringField,
RequiredStringField,
// TODO: remove unused
RequiredNumberAsStringField,
TimeZoneField,
RequiredNotionTokenField,
Expand Down Expand Up @@ -83,6 +84,9 @@ interface InputElements {
'options.displayAdvanced': 'display-advanced-options';
hideAdvancedOptions: 'hide-advanced-options';
showAdvancedOptions: 'show-advanced-options';
'canvas.importMissingDueDates': 'missing-due-dates';
ignoreMissingDueDates: 'ignore-missing-due-dates';
importMissingDueDates: 'import-missing-due-dates';
'canvas.courseCodeOverrides': 'course-code-overrides-group';
'notion.accessToken': 'notion-token';
'notion.databaseId': 'database-id';
Expand Down Expand Up @@ -207,6 +211,27 @@ export const CONFIGURATION: {
},
},
canvas: {
importMissingDueDates: {
defaultValue: false,
get input() {
delete (<Partial<typeof this>>this).input;
return this.input = SegmentedControl.getInstance<InputElementId, typeof this.defaultValue>({
id: 'missing-due-dates',
segments: [
{
id: 'ignore-missing-due-dates',
value: false,
default: true,
},
{
id: 'import-missing-due-dates',
value: true,
showDependents: true,
},
],
});
},
},
courseCodeOverrides: {
defaultValue: '{}',
get input() {
Expand Down
22 changes: 19 additions & 3 deletions src/options/options.html
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ <h3>Timezone</h3>
<h3 class='advanced-options hidden'>Extension Popup</h3>
<div class='tile advanced-options hidden'>
<div>
<label class=' required' for='display-json-button'>Display 'Copy <code>JSON</code>' button</label>
<label class='required' for='display-json-button'>Display 'Copy <code>JSON</code>' button</label>
<div class='segmented-control-wrapper'>
<div class='segmented-control row' id='display-json-button'>
<input checked type='radio' name='display-json-button' value='hide-json-button' id='hide-json-button'>
Expand All @@ -92,9 +92,25 @@ <h3 class='advanced-options hidden'>Extension Popup</h3>


<section>
<h1 class='advanced-options hidden'>Canvas Configuration</h1>
<h1>Canvas Configuration</h1>

<h2 class='advanced-options hidden'>Course Code Overrides</h2>
<h3>Assignment Import</h3>
<div class='tile'>
<div>
<label class='required' for='missing-due-dates'>Assignments without due dates</label>
<div class='segmented-control-wrapper'>
<div class='segmented-control row' id='missing-due-dates'>
<input type='radio' name='missing-due-dates' value='ignore-missing-due-dates' id='ignore-missing-due-dates'>
<label for='ignore-missing-due-dates'>Ignore</label>

<input type='radio' name='missing-due-dates' value='import-missing-due-dates' id='import-missing-due-dates'>
<label for='import-missing-due-dates'>Import</label>
</div>
</div>
</div>
</div>

<h3 class='advanced-options hidden'>Course Code Overrides</h3>
<div class='tile advanced-options hidden'>
<div id='course-code-overrides-group' class='row'>
<div>
Expand Down
2 changes: 1 addition & 1 deletion src/popup/fetch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ function roundToNextHour(date: Date): Date {
const emojiedCourseCode = `${(courseIcon) ? `${courseIcon} ` : ''}${courseCode}`;

// TODO: sort by due date
// TODO: filer !due_at
const canvasAssignments = assignmentGroups.flatMap(group => group.assignments)
.filter(assignment => options.canvas.importMissingDueDates || assignment.due_at)
.map(assignment => ({
name: assignment.name,
description: assignment.description,
Expand Down
2 changes: 2 additions & 0 deletions src/types/storage.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ interface RequiredFields {
'extension.displayTheme': null | 'light' | 'dark';
'popup.displayJSONButton': boolean;
'options.displayAdvanced': boolean;
'canvas.importMissingDueDates': boolean;
'notion.accessToken': NullIfEmpty<string>;
'notion.databaseId': NullIfEmpty<string>;
'notion.propertyNames.name': NeverEmpty<string>;
Expand Down Expand Up @@ -48,6 +49,7 @@ export type SavedOptions = {
displayAdvanced: RequiredFields['options.displayAdvanced'];
};
canvas: {
importMissingDueDates: RequiredFields['canvas.importMissingDueDates'];
courseCodeOverrides: OptionalFields['canvas.courseCodeOverrides'];
},
notion: {
Expand Down

0 comments on commit f242e81

Please sign in to comment.