/
FY25.1.x: Technical Design (Slate+Academics)
FY25.1.x: Technical Design (Slate+Academics)
Executive Summary
The purpose of this document is to provide the full details of the technical solution to be used for the build of the Slate + Academics solution. Everything that is needed by the developer(s) to produce the required data model, forms and workflows will be included in this specification.
Technical Components
The following sections will detail the technical components within each functional area that are required to successfully implement this project.
Data Requirements
Purpose
Define any integrations or data that must be provided to deliver the solution.
- Faculty Information System
- Create the following entities consistent with the data model here:
. The linked document contains all of the related fields for the entities below.
- Degrees
- Employment History
- Licenses and Certifications
- Grants
- Honors and Awards
- Institutional Committees
- Instructional Development
- Mentorship and Supervision
- Non CU Courses
- Other Institutional Service
- Professional Development
- Professional Memberships
- Professional Service
- Scholarly Contributions
- Social Media
- Create the relevant person-scoped fields from the above data model.
- Create the following entities consistent with the data model here:
. The linked document contains all of the related fields for the entities below.
Technical Design
Purpose
Define in detail the technical work that will need to be completed to deliver the final solution.
- Create the following two entities for managing full-time faculty members' workload and review processes
- Faculty Review History
- Faculty Workload
- Hide the following built-in Slate tabs:
- Dashboard
- Profile
- Create the following files to be used on faculty tabs:
- slate_academics/forms/faculty_information_system_tabs/hide_unhide_sections_script.html
- This script goes at the top of any of the person pages (below) that contains sections to collapse and expand. It consists the following:
- A div with the id of "[pageName]PageLoadingDiv." (The "[pageName]" portion is to be replaced with the name of the given page. By default this section displays the text "Page loading..." The only purpose for this section is for administrators to see that the section exists when doing maintenance on the page.
- Script at the top of the file looks for that section by page loading section by id. If it exists, it assigns it the class of "hidden" so it disappears upon page load.
- A function called "hideUnhideSection" that is called when the user clicks the +/- sign at the top of each section.
- The function receives two parameters:
- sectionDivId - The id of the section that needs to be expanded/collapsed on click.
- sectionName - the name of the section being dealt with. This is used in the URL to track whether the section should be opened or closed.
- When a "+" is clicked, the section expands. and the "+" turns into a "-". it assigns the parameter variable a value of 1 to show that it is should be expanded.
- When a "-" is clicked, the section is collapsed, and the "-" turns into a "+". It assigns the parameter variable a value of 0 to show that it should be collapsed.
- The script then performs gets the URL of the page.
- Checks the URL to see if the given section name is a part of it.
- If the section name is not in the URL, add it to the end with the appropriate parameter value.
- If the section name is in the URL, grab the first part of the URL through the section name. Add the "=" sign and the appropriate parameter value. add the remainder of the url that followed the parameter value back to the URL. So now we have is the previous URL
- Replace the current URL with the modified one.
- The function receives two parameters:
- This script goes at the top of any of the person pages (below) that contains sections to collapse and expand. It consists the following:
- slate_academics/forms/faculty_information_system_tabs/generic_form_heading.html
- This script goes at the top of each section.
- References to "SECTION_TEXT_DIV_ID" should be replaced with the id that wraps around all of the text of the section.
- References to "SECTION_NAME" should be replaced by the name of the section (in camel case or with underscores instead of spaces).
- The h2 heading should have the actual section name.
- The file consists of the following:
- A script that gets called when the page is loaded. It performs the following functions:
- Checks the URL to get the list of parameters.
- If there is no parameter for this section or it does not equal 1, it should be hidden. Therefore, it calls the hideUnhideSection function with the ID of the section and its name.
- A div showing the section name and then (in superscript) a "-" with an Id of "[sectionName]ToggleSwitch." OnClick, it triggers a call to the hideUnhide function. The field has a "-" sign at the beginning because when the page first loads, we to collapse the section by default. So when it calls the function, the function will see that it was called by a "-" and therefore should be collapsed and the "-" changed to a "+".
- A script that gets called when the page is loaded. It performs the following functions:
- This script goes at the top of each section.
- slate_academics/forms/faculty_information_system_tabs/generic_widget_form_javascript_section.html
- This script goes as an "instruction" component on the bottom of each widget form that is contained on a person page. It assigns an external id to the value of the entity row being submitted. It will enable the faculty members to generate a form with the entity value in the future so that they can edit their own data.
- The script consists of the following:
- A div with an ID of "javascript" that only exists so that users can see it when maintaining the page.
- A script that performs the following actions.
- Adds a class of hidden to the div on top so that it cannot be seen.
- Checks to see if the row already contains an external id. If not, it adds one based on the name of the field and a timestamp.
- In the script the references to "[entity]ExternalIdFormTextBoxId" should be replaced with the actual ID of the textbox on the form. To set this up:
- Create the textbox on the form as a regular form textbox field.
- Go to a test record.
- Call up the form.
- Get the ID of the field.
- Enter the ID into the appropriate places in the script.
- Make the field a hidden one.
- For the script to work properly requires getting the current date in a numerical format. Therefore, there should be a merge field called "current_date" on any widget page that captures the current date with a format mask of MMddyyyyhhmmss.
- slate_academics/forms/faculty_information_system_tabs/hide_unhide_sections_script.html
- Create the following tabs and a corresponding person page scoped form for each (e.g. Tab: Dashboard, Form: Dashboard Person Page). Please see functional design document: https://columbiauniversity.atlassian.net/wiki/x/EYCaFg for a list of the relevant sections. The information below outlines any technical features of the person pages:
- Dashboard
- Highest Degree obtained - created a library to consistently collect the highest degree obtained. Created an export of degrees filtered for a status of "conferred" sorted descending by the degree level. That way, with an offset of 1, the highest level degree obtained is selected.
- Preferred name: Using Liquid Template, display the preferred name if it is different from the person's first name, otherwise, display "(not set)."
- Biography: Using Liquid Template, if the faculty member has a biography, display it with the the updated date. If not, simply display "(not set)."
- In the form properties, most merge fields have a Null Value of "(not set)." That way we do not need to put if/then statements in page.
- Profile
- Biography: Using Liquid Template, if the faculty member has a biography, display it with the the updated date. If not, simply display "(not set)" with a link to set the bio. This link embeds the form in the portal, so upon completion, the user returns to the portal.
- Contact Information: Using Liquid Template, if the individual has either just a building name or a building name and number display that information. If not, display "(not set)."
- Address Information: Use Liquid Template, to allow for a blank "Address Street 2" field in the address. If no "Address Street 1" is set, display "(not set)" for the entire address.
- Most recent term: Use a subquery to capture the faculty member's most recent teaching term (sort by teaching term descending).
- Current Employer: Use a query to find a row in the Employment History entity in which there is a start date and then end date is either null or later than the current year. Then export the employer's name. If there is no employer, display "(not set)."
- Professional Interests: Using Liquid Template, determine if any of the values are set. If so, provide a link to edit the values. If not, provide a link to set the values.
- Positions
- Contains a widget table for Columbia positions and another for Employment History (non-CU). The Columbia Positions widget is fed from PAC. Therefore, it cannot be added to/edited. To keep it from being added to, on the person page, assign the widget a maximum number of rows of 0. For the form, itself, the only field should be an instruction type stating that it cannot be edited.
- Scholarly Contributions
- Service
- Other Faculty Activities
- Dashboard
- Create the following tabs for full-time faculty members:
- Full-Time Faculty Review History
- Full-Time Faculty Workload
, multiple selections available,
Related content
FY25.2.x: Technical Design (Slate+Academics)
FY25.2.x: Technical Design (Slate+Academics)
More like this
FY25.2.x: Functional Design (Slate+Academics)
FY25.2.x: Functional Design (Slate+Academics)
More like this
FY25.1.x: Development (Slate+Academics)
FY25.1.x: Development (Slate+Academics)
More like this
FY23.1.x: Technical Design (Slate+Advising)
FY23.1.x: Technical Design (Slate+Advising)
More like this
FY23.2.x: Technical Design (Slate+Advising)
FY23.2.x: Technical Design (Slate+Advising)
More like this
FY24.1.x: Development (Slate+Academics)
FY24.1.x: Development (Slate+Academics)
More like this