Skip to content

A button component for logging to and representing entries on a timesheet table

Notifications You must be signed in to change notification settings

esolutionsone/timesheet-app

Repository files navigation

Timesheet App

Description

A UI Builder component and subcomponents for tracking time related to esolutionsONE projects

Dev Screenshots

Stuff we learned

  • When setting dates in business rules, use .getDisplayValue() instead of .getValue(). On the server side, SN will adjust any times sent or received to a user who has a specified time zone, so when inputting dates, .getDisplayValue() will correspond to the correct UTC time.

  • Deleting an existing custom component:

    • Need to nevigate to sys_app.list and locate the scope that the component currently exists in.
    • Manually delete records that are associated to component (It seems as though the amount of records varies depending on how many things are in now-ui.json)
    • Tip to find all of the records, redeploy component with --force and head to sys_app.list, open scope, and sort by recently updated records. All records associated with component should be at the top.

Errors

  • Cannot create property 'elm' on boolean 'false' at createElm
    • While we can use short circuits in jsx, we can't use them to wipe out an entire element. Instead, use a ternary (I guess so there's something to replace it with on the VDOM, even if it's just a string?)

Architectural Q's

  • Will the project_role and project_stage 'active' statuses be updated and in sync? Do we need to check project.state as well?
  • What's the road to deployment? Apparently, components within an AES app don't get promoted along with the app
  • We'll need to try to promote again, fixing the name in the package.json as well

User Access Requirements

  • Roles
    • x_esg_one_delivery.user (or .admin)
    • x_esg_one_core.user (or .admin)
  • A consultant record linked to user's sys_user (else will stick on loading)
  • At least one valid Project Stage Role with appropriate relations (since projects, etc. are assigned, not chosen by the user - else won't render any projects to track time on, obviously)

ERD

erDiagram

delivery_time_entry }|--|| core_project_stage_role : ""
core_project_stage_role }o--|| core_project_stage : ""
core_project_stage }o--|| core_project: ""
core_consultant }o--|| core_project_role : ""
core_project_role ||--o{ core_project_stage_role : ""
sys_user ||--o| core_consultant : ""
core_project ||--o{ core_project_role : ""
delivery_time_entry |o--|| core_consultant : ""


delivery_time_entry {
    duration time_adjustment "User-entered (not timestamped) time"
    float total_time_float
    reference consultant FK
}
core_consultant {
    reference sys_user FK
}
core_project_role {
    string short_description "Project Role"
    reference consultant FK
}

Loading

About

A button component for logging to and representing entries on a timesheet table

Resources

Stars

Watchers

Forks

Packages

No packages published