πŸƒ Statics ENGR 210

A field journal for forces, equilibrium, and problem-solving.


🌿 This Week's Intention

One problem at a time. Understand the reasoning, not just the answer.

πŸ“– Course Overview

Course: Statics ENGR 210

Main focus: Problem-solving, equilibrium, moments, and support reactions.

Weekly routine:

  • Homework due Monday and Wednesday
  • Quiz every Friday
  • One-page note sheet prepared before Friday's class

🌱 Assignment Progress

const assignments = dv.pages('"study nook/School/Assignments"')
  .where(p => p.type === "assignment"
    && p.class?.path === dv.current().file.path);

const total = assignments.length;
const done = assignments.where(p => p.status === "Done").length;
const percent = total ? Math.round(done / total * 100) : 0;

dv.el("p", `${done} of ${total} assignments completed β€” ${percent}%`);

const bar = dv.el("div", "", { cls: "sn-progress-track" });
const fill = bar.createEl("div", { cls: "sn-progress-fill" });
fill.style.width = `${percent}%`;


πŸ“‹ Assignments

// 🌸 STUDY NOOK β€” CLICKABLE ASSIGNMENTS

const currentClass = dv.current().file.path;

const assignments = dv.pages('"study nook/School/Assignments"')
  .where(p =>
    p.type === "assignment" &&
    p.class?.path === currentClass
  )
  .sort(p => p.due ?? "9999-12-31", "asc");

// 🌿 Create table
const table = dv.container.createEl("table", {
  cls: "table-view-table sn-assignment-table"
});

const head = table.createEl("thead");
const headerRow = head.createEl("tr");

["Done", "Assignment", "Due Date", "Priority", "Status", "Hours"]
  .forEach(label => headerRow.createEl("th", { text: label }));

const body = table.createEl("tbody");

// πŸͺ· Create assignment rows
for (const p of assignments) {
  const row = body.createEl("tr");

  // βœ… Completion checkbox
  const checkCell = row.createEl("td");
  const checkbox = checkCell.createEl("input", {
    type: "checkbox"
  });

  checkbox.checked =
    String(p.status ?? "").toLowerCase() === "done";

  // πŸ“š Clickable assignment link
  const nameCell = row.createEl("td");
  const link = nameCell.createEl("a", {
    text: p.file.name,
    cls: "internal-link"
  });

  link.setAttribute("data-href", p.file.path);
  link.setAttribute("href", p.file.path);

  link.addEventListener("click", event => {
    event.preventDefault();
    app.workspace.openLinkText(
      p.file.path,
      currentClass,
      event.ctrlKey || event.metaKey
    );
  });

  // πŸ“… Due date
  const dueText = p.due
    ? dv.date(p.due)?.toFormat("MMMM d, yyyy") ?? "β€”"
    : "β€”";

  row.createEl("td", { text: dueText });

  // 🌷 Priority
  row.createEl("td", {
    text: String(p.priority ?? "β€”")
  });

  // 🌱 Status
  const statusCell = row.createEl("td", {
    text: String(p.status ?? "Not started")
  });

  // β˜• Estimated hours
  const hours = Number(p.estimate);
  row.createEl("td", {
    text: Number.isFinite(hours)
      ? String(Math.round(hours / 6) / 10)
      : "β€”"
  });

  // πŸ•―οΈ Save checkbox changes to frontmatter
  checkbox.addEventListener("change", async () => {
    const previous = !checkbox.checked;
    const newStatus = checkbox.checked
      ? "Done"
      : "Not started";

    checkbox.disabled = true;

    try {
      const file = app.vault.getAbstractFileByPath(p.file.path);

      if (!file) {
        throw new Error("Assignment file not found.");
      }

      await app.fileManager.processFrontMatter(file, fm => {
        fm.status = newStatus;
      });

      statusCell.setText(newStatus);

    } catch (error) {
      checkbox.checked = previous;
      new Notice("Could not update assignment status.");
      console.error(error);

    } finally {
      checkbox.disabled = false;
    }
  });
}

πŸ“… Upcoming Deadlines

TABLE WITHOUT ID
  file.link AS "Assignment",
  due AS "Due Date",
  priority AS "Priority",
  status AS "Status"
FROM "study nook/School/Assignments"
WHERE type = "assignment"
  AND class = [[Classes/Statics ENGR 210]]
  AND due >= date(today)
  AND status != "Done"
SORT due ASC
Small steps build big progress.
You do not need to finish everything at once β€” just keep moving.
## Weekly routine - [ ] Check the next homework and break it into problem groups - [ ] Prepare the one-page quiz notesheet before Friday - [ ] Practice taking moments and solving reactions as needed

Formula / method notebook

  • Topic:
  • Knowns and unknowns:
  • Free-body diagram reminders:
  • Equations / sign convention:
  • Common mistake:

🎯 Study Checklist

  • Review the current chapter
  • Work through example problems
  • Finish assigned homework
  • Prepare the Friday quiz notesheet
  • Review mistakes from previous quizzes

Quiz review log

Quiz / dateTopicsWhat felt solidWhat to practice

πŸ“ Class Notes & Exam Prep

  • Current topics:
  • Upcoming quiz topics:
  • Topics to revisit:
  • Questions for the instructor:
Built with LogoFlowershow