Compare commits

..

587 Commits

Author SHA1 Message Date
fa77a69132 thats it. last commit at gainsight. closing this repo soon. 2026-04-14 17:14:29 -04:00
fc1523a89c deleted two old js files 2026-04-03 16:14:04 -04:00
16e19dfa5b Sandbox change to demo for sandata/hhaexchange. 2026-04-02 14:45:46 -04:00
7b8ea2d1c4 WilliamsSonoma sub navigation changes. 2026-03-31 16:58:08 -04:00
3616ba9718 Backed up Supplier's templates. 2026-03-30 17:03:22 -04:00
a97f22bc0c WSGC subnav updates. Language selector and smartling integration for Instacart. 2026-03-24 16:30:23 -04:00
470f83aacd Anthology updated its template. 2026-03-17 16:57:00 -04:00
506a878c0e Templates for Williams Sonoma, Walmart Supplier and Instacart Partners 2026-03-11 14:55:58 -04:00
6b86d5bde9 Template demos and API script for testing. 2026-03-09 14:52:51 -04:00
83ebc042f7 Chubb script in the airport 2026-03-02 14:01:03 -05:00
46946c2016 Moved and Updated Instacart's language selector for their smartling testing. 2026-02-27 16:40:34 -05:00
f8dcd58b04 Template changes for Williams-Sonoma, Artera, and Instacart. 2026-02-26 18:40:09 -05:00
c07b4ba0d5 Walmart CSV for new Falcon headers. Chubb script. 2026-02-19 17:20:37 -05:00
2b5f3d6b83 Backed up Williams-Sonoma Google Script 2026-02-12 14:28:07 -05:00
47248b74ab Fixed Spark's category cards again. 2026-02-10 16:03:28 -05:00
fb6fed66ba Added category badge for spark 2026-02-09 17:03:22 -05:00
216fc08544 Chubb script 2026-02-03 14:19:46 -05:00
136bbead7e Updated tasks. 2026-02-02 14:32:50 -05:00
3f9932c078 Spark template updates for Derek. 2026-01-29 17:04:25 -05:00
7ec7c9778f Walmart Supplier extract groups 2026-01-27 21:20:29 -05:00
6b09a5aab0 Doordash 2 templates. 2026-01-23 17:08:45 -05:00
3f47527eca Downloaded Instacart's templates and deleted folders from churned customers. 2026-01-22 14:59:11 -05:00
e1c0aa6409 Walmart and Chubb 2026-01-20 16:35:03 -05:00
bc2637efca Mizuno 2026-01-16 15:55:36 -05:00
17779386aa Accidentally ran an npm in this dir and now i don't know how to get it out of any git. Its already all deleted! Anyway, ran some scripts for Walmart. 2026-01-13 16:35:37 -05:00
2d6deba89b Cleaned up a bunch of scripts. 2026-01-07 16:39:06 -05:00
4038a861fb Backing up 2026-01-06 16:35:21 -05:00
1db311092b Back from PTO! Ran a Walmart script while away, so backing it all up. 2026-01-05 06:19:30 -05:00
28f9b40f26 Chubb script & Last Commit before the holidays. Cya in the new year? 2025-12-23 08:44:01 -05:00
acfba0ae87 organized notes and templates for walmart gpt. 2025-12-19 16:23:12 -05:00
7340726f9b DeepL templates and tasks for the same. 2025-12-17 16:55:47 -05:00
7741634b94 Fixed Suppliers style file and ran the Chubb script. 2025-12-11 17:38:36 -05:00
3187943aff Walmart Supplier MX templates backed up. 2025-12-10 16:11:34 -05:00
e9ea1556e8 Artera requested the new course content to be added more places. 2025-12-09 17:03:23 -05:00
e44a1a67d3 Organized anthology scripts and wrote a new one for their knowledgestate ppl. updated project files for scripts to better interact with neovim. 2025-12-08 17:32:31 -05:00
5413e0ffd9 Almost done with Nintex bulk attendance script 2025-12-05 16:56:12 -05:00
008ab8708f Lots of progress on Nintex's mark as attended script. 2025-12-04 16:54:04 -05:00
475b9a57d6 Beginning Nintex's bulk attendance script. 2025-12-03 16:48:54 -05:00
41630718e1 Chubb 2025-12-01 17:10:42 -05:00
468bbbf759 Tasks for Woodmac. 2025-11-19 16:56:49 -05:00
d97a7ab16c Notes for Woodmac 2025-11-14 14:42:55 -05:00
0288625409 Walmart Spark pull PDF and Chubb bulk upload. 2025-11-12 14:39:26 -05:00
34b53a72b2 Just editing a temp file for testing. 2025-11-05 15:05:48 -05:00
be9edeee64 Nintex templates download as I was investigating some issue with their search bar. In the header file, if you have multiple '<input' (like we would normally do for language switcher options) it negates the button being clickable at all. 2025-11-03 18:59:32 -05:00
5f9cff53fc Chubb 2025-10-29 17:00:47 -04:00
6b802300ec Ran Spark script for screenshots. 2025-10-24 14:54:00 -04:00
e74a528c04 Nintext Task. 2025-10-23 16:49:35 -04:00
75307a1f0d Testing Walmart APIs during AWS outage 2025-10-20 14:52:51 -04:00
7414b2e22e Small changes for Pipedrive and uploaded the Chubb CISA CSV. 2025-10-16 14:27:48 -04:00
464886fcd0 Working with tasks to make them more efficient. Tried the checkout.nvim plugin, but it changes a bit too much. 2025-10-09 15:32:42 -04:00
3485b6ffc5 Supplier migration script to move learners from US academy, Mexico Group into MX academy 2025-10-08 09:45:09 -04:00
6ac58515d0 Added Supplier's API keys for their MX transfer 2025-10-06 14:06:23 -04:00
1b49386967 Chubb 2025-10-01 14:33:44 -04:00
59d577b051 Tasks and Notes for Sandata's legal issue with a course being deleted. Downloaded spark pdf for them. 2025-09-29 14:42:17 -04:00
06553b93c3 Cleaned up and minmized Chubb's CISA script to share with the client so they can run it on their own 2025-09-26 14:49:46 -04:00
29d3db5c20 Chubb 2025-09-23 15:24:47 -04:00
d95ceefbea Trying to fix Walmart Supplier search results. 2025-09-19 14:45:11 -04:00
ab959bf7f3 Healthcheck script 2025-09-17 15:50:52 -04:00
c5c6222e7f Still working on DeepL 2025-09-12 15:28:42 -04:00
a5563a6b6d DeepL templates backup. 2025-09-11 13:58:44 -04:00
d0f5160bb1 Chubb script. 2025-09-10 15:37:19 -04:00
183b3e82f0 Walmart supplier, new templates. 2025-09-08 16:47:28 -04:00
cb7ba76a7d Walmart screenshot script and Chubb upload. 2025-09-02 16:20:40 -04:00
53c614d813 Almost done with Anthology script for learner properties. 2025-08-22 16:00:34 -04:00
6edb965eef Creating a script for Anthology to update all the names of their learner properties based on new subscription model. Downloaded and updated some templates for this same project. 2025-08-21 15:40:52 -04:00
b52e7cfac1 Made some changes to templates (oops). But mostly working on Spark help menu/context aware calls that aren't working as expected. 2025-08-20 15:17:29 -04:00
564362fc50 Backed up Howard Hanna's templates as they need some changes that the CSSC will implement. 2025-08-14 14:16:34 -04:00
9a7e7df3cf Chubb script. 2025-08-12 13:33:26 -04:00
72edc01fd4 Walmart Supplier asked for some small updates. 2025-08-06 16:07:34 -04:00
481b403aae Mizuno monthly! 2025-08-04 16:10:39 -04:00
bf5ca9bf82 Tasks were updated. 2025-08-01 14:45:32 -04:00
dac4ee2c8e Chubb 2025-07-31 16:50:04 -04:00
a0b767b798 Removed a bunch of old/churned client files and updated some older clients that I haven't touched in a while. Lots of summer cleaning! 2025-07-29 14:20:27 -04:00
83267e5f86 Trying to get Spark's helpMenu post request to work but I think I have the wrong shared secret and engineering is already off for the weekend. 2025-07-25 14:16:17 -04:00
ffd706dba7 Old calendar scrubber google script stopped working, so I re-wrote it to update it and have it better fit into how my schedule changes 2025-07-23 14:41:11 -04:00
0e039e4462 Walmart Scintilla new templates and removed their category buttons from homepage. 2025-07-22 14:15:20 -04:00
3c137548f9 Tasks were updated. 2025-07-21 14:57:46 -04:00
595c2fd418 Fixed Serach results within Walmart Supplier search. 2025-07-18 17:10:03 -04:00
0a9705f81b Backed up new Walmart Supplier templates. 2025-07-17 16:32:51 -04:00
8b741ea223 Chubb script and removed Pipedrive's old templates. 2025-07-15 14:12:28 -04:00
4a93905830 Tasks. 2025-07-14 17:46:05 -04:00
3f0bd96040 Instacart, while still in implementation, came to their AE (J.Jones) with some access issues. Some of these templates don't work yet (internal server errors) but backing them up just in case 2025-07-11 13:51:31 -04:00
75455bbf4e I think the final Pipedrive download. Walmart Supplier was updated as well. 2025-07-10 16:18:51 -04:00
41ca4834a2 Backed up most recent Pipedrive changes. Tasks. 2025-07-09 14:53:43 -04:00
a7d9930ed6 Hubert just completed a project for Pipedrive, so downloaded those templates. I kept the old ones as the Pipedrive team noticed some things were overwritten. So until they are fully in production and working correctly, I'm keeping two copies. Will update with the correct files once Hubert investigates. 2025-07-08 15:29:07 -04:00
1980bd456d Downloaded WoodMac Learn templates for the first time. Added some tasks for WML. Re-downloaded SPS to reference some code. SPS's app says all templates were last uploaded in April 18 2025. Last local changes (my hunch is downloaded) on my machine is May 13, 2025. 2025-07-07 09:42:08 -04:00
85ffb9a4f3 Workhumant tasks 2025-07-03 11:38:07 -04:00
23d799b75b Cin7 templates were all messed up. Fixed them. Downloaded and backed up Scintilla's new templates that Raj was working on for commerce. 2025-07-02 13:39:55 -04:00
69cfb846b4 Cin7 templates. Some wonkiness happening with their catalog filters. 2025-07-01 17:10:37 -04:00
eb35f8d073 Chubb Script and tasks for admin work. 2025-06-30 17:03:09 -04:00
8fe3503f72 Big update for Scintilla with eCommerce. Backed up all the work Raj did. 2025-06-27 10:30:31 -04:00
35d363af4e Supplier academy and small script organization. 2025-06-26 15:42:12 -04:00
ec552f2e1a Chubb script for CISA users. 2025-06-24 15:30:44 -04:00
60c4979cff Supplier hompage nav and Tasks. 2025-06-23 16:46:01 -04:00
1d75910181 Tasks and notes for Workhuman 2025-06-18 15:32:23 -04:00
e33ee9701a Supplier templates 2025-06-17 16:50:09 -04:00
3563ae04c8 Mizuno script... mid month? Not sure why. 2025-06-16 16:15:27 -04:00
e0e6c9f8ce Tasks. 2025-06-12 15:47:05 -04:00
d82db4e6ca HowardHanna header, DeepL languages, Tasks, Pipedrive templates, Chubb script. 2025-06-10 15:06:56 -04:00
f3631cf2d9 Tasks. 2025-06-09 16:50:45 -04:00
64db473d49 Added dynamic date to PGA script for mizuno. Tasks. 2025-06-06 14:07:37 -04:00
8f28915857 Tasks 2025-06-05 18:39:09 -04:00
d56c9609eb Antho script again. 2025-06-04 15:09:32 -04:00
61673efc36 Anthology script needs some reworking. 2025-06-03 14:29:23 -04:00
e2716f1c23 Backing up after Pulse. All I did was change the Anthology scripts for knowledgestate. 2025-06-02 10:24:14 -04:00
12467d0386 Testing some public auth changes in the sandbox. 2025-05-23 16:45:26 -04:00
48a024d9a4 tasks 2025-05-21 17:14:42 -04:00
a4a6de7473 Walmart supplier courses and categories script. bug with endpoint for groups not associated with a course. 2025-05-20 16:36:30 -04:00
4a3ad336a5 Anthology CSV parser updated. Courses & categories for Supplier 2025-05-19 14:26:29 -04:00
9f7fd92613 DeepL templates. Chubb script. 2025-05-15 21:54:57 -04:00
72715d9d49 SPS' V3 templates. Updated Harri's templates too to update the workato endpoints. 2025-05-13 16:55:51 -04:00
89c35d0506 Tasks x2. 2025-05-12 15:45:05 -04:00
4551b00c3a Tasks. 2025-05-09 15:35:06 -04:00
3751c079c1 DV Task 2025-05-08 15:48:04 -04:00
59707596c2 Scintilla templates for new launch. Trying to clean up Zenjob's workflow. 2025-05-07 16:38:56 -04:00
48d9a88181 Added the Basic group templates for Walmart Luminate-Scintilla. Mizuno Monthly. 2025-05-01 18:43:01 -04:00
72eb7ddc59 Ran Chubb's script and completed some tasks. 2025-04-30 15:33:21 -04:00
00d628a532 Some completed tasks. Script for large Walmart enrollment (which brought down the app... oops). 2025-04-29 15:47:51 -04:00
603e7baf6a SJ api calls folder. Added a script for DeepL. 2025-04-25 19:08:43 -04:00
c6d75b4284 Tasks added. 2025-04-24 15:11:17 -04:00
3d1fa03a51 Updated templates and tasks. 2025-04-23 16:18:17 -04:00
78e50050a4 Tasks and templates. 2025-04-22 16:01:16 -04:00
17f7d10b04 Walmart Supplier Sandbox templates. Updated prod templates too. 2025-04-21 17:17:41 -04:00
26fd2a9615 Chubb Scripts and Tasks 2025-04-16 14:05:07 -04:00
2de37ce3bc Tasks. 2025-04-15 14:10:04 -04:00
c101e71ead Testing out a tasks folder for a custom plugin 2025-04-10 14:56:40 -04:00
8b9198a631 Trying to get a markdown organizer plugin to work. 2025-04-09 17:03:29 -04:00
b1fb4bec84 Walmart Supplier Mexico templates backed up. 2025-04-08 17:56:33 -04:00
a035c58c95 Cleaned up some folders and small Walmart template changes. 2025-04-08 10:22:57 -04:00
e5e1bf3acd Mizuno monthly 2025-04-02 16:43:28 -04:00
806fb1f4bc Small script changes. 2025-04-01 16:44:16 -04:00
6db49a2ea9 Chubb scripts 2025-03-31 15:17:27 -04:00
1b05010c77 Daily commit. 2025-03-27 17:10:27 -04:00
3257ab72cc Chubb CISA script was run. 2025-03-25 16:51:02 -04:00
c17661458a Doordash back up. Anthology academy small changes. 2025-03-24 17:02:18 -04:00
7640e4cca9 Anthology back up 2025-03-18 22:59:56 -04:00
d182cda6dc Chubb changes for their access agents push. 2025-03-17 15:12:10 -04:00
2b9d60f432 Was brought on to fully help Arbor Education's risk and so downloaded/backed up templates and started some of that work. 2025-03-14 14:41:33 -04:00
5170459186 Supplier script for group and course associations. 2025-03-13 14:15:03 -04:00
4addc47565 Chubb sandbox backup. Still working on Supplier grouping script. Completed the Buildertrend templates work. 2025-03-12 16:42:52 -04:00
388e111e9b New script for Walmart supplier to make group associations based on a CSV. 2025-03-11 16:35:39 -04:00
e0f4b9ea69 Backed up BuilderTrend's templates. 2025-03-06 19:27:45 -05:00
aaa07abe26 Some template changes. Nothing in particular. 2025-03-05 17:15:51 -05:00
0242384887 All that Walmart work and they can't even launch tomorrow.... finished up the work for the Basic/3P user groups. Was then told these learners need to be able to buy courses, which isn't possible with their current configuration. Backing up the files to git anyway, just in case. 2025-03-04 16:30:56 -05:00
f7492809ac Upcoming Walmart deadline. Copied and backed up a bunch of templates. 2025-03-03 21:26:31 -05:00
73282a0dac Got groups and courses for Walmart Supplier. Updated the carousel and recommended for Chubb - haven't pushed to prod yet. 2025-02-28 17:13:02 -05:00
46efc9a422 Ran and updated the API extract script for Williams-Sonoma. 2025-02-27 15:31:23 -05:00
011f47d102 Templates for Chubb need updating. 2025-02-26 16:39:11 -05:00
a62a76f5d1 Custom Templates for DeepL backed up and EmailMonkey. GS University was also re-downloaded. Then small scripts updated like for Chubb. 2025-02-25 17:01:36 -05:00
74d46e88f4 Walmart CSV for Miro. Templates changes for my sandbox. 2025-02-24 13:35:42 -05:00
0ef4477030 Walmart CSV for Miro. Templates changes for my sandbox. 2025-02-24 13:34:05 -05:00
0232a39c25 Walmart Screenshot project needed to be in a new repo, so separated it out of here. It's components are still in this repo. 2025-02-14 14:26:12 -05:00
69d95b2df6 Walmart screenshot script is finalized for Azure functions 2025-02-14 14:21:01 -05:00
b683bb57f0 Zapier scripts for AIIM that need to go into Workato 2025-02-12 16:40:10 -05:00
ea5a6eafc3 Buildertrend templates backedup after their team made some changes. 2025-02-10 15:11:47 -05:00
89a6fd58ee Mizuno scripts. Finished Source & Supplier's removing enrollments from LP. 2025-02-07 16:09:44 -05:00
fb6e6d38db Removed assets folder that was wrongly inputted into Walmart's folder. 2025-02-05 16:21:04 -05:00
12e5a4afdb Luminate has fully rebranded as Scintilla and all templates have been updated. 2025-02-05 16:19:58 -05:00
e60cdf3a60 Luminate is re-branding to Scintilla on 2/5 - backed up all templates. 2025-02-03 15:00:24 -05:00
e79ac3589c Upgraded payload for create_course_attempts and tested it out with various enrollments. 2025-01-29 16:02:42 -05:00
ac9fb1f467 Completed the playwright walmart screenshots script. Uploaded another Chubb CSV. 2025-01-28 17:05:36 -05:00
224627888a Changed Luminates name to Scintilla (changing on 5th Feb). Downloaded the sandbox with all of Raj's changes. 2025-01-27 14:40:21 -05:00
719792893f temporary json file for workato 2025-01-22 16:51:03 -05:00
9a6b39a030 Clone courses script. 2025-01-21 16:32:05 -05:00
36f07e5935 Artera templates - custom font added. 2025-01-16 14:33:02 -05:00
d261439d18 Removed neovim log file. Unnecessary for work files. 2025-01-15 16:50:40 -05:00
d7eec30f89 Templates for Chubb's Certificate within an LP. 2025-01-15 16:50:20 -05:00
bcd5664f26 WilliamSonoma templates. Chubb CISA script. Cloning for Anthology Partners. 2025-01-14 22:33:32 -05:00
29b4ca7292 Working on using TaskWarrior. 2025-01-13 14:52:26 -05:00
fec8a1cf54 Testing out TaskWarrior. 2025-01-10 16:45:57 -05:00
2ccb682b2f Supplier templates. 2025-01-09 15:29:57 -05:00
41a5a5af2e Monthly Mizuno. 2025-01-07 16:29:04 -05:00
4930070ecb Scripts 2025-01-07 16:00:48 -05:00
5e91e71d53 Scripts. 2025-01-06 16:55:30 -05:00
07b67de65b Chubb script. 2025-01-03 15:18:35 -05:00
35a88af12d back in the saddle. todos. 2025-01-02 16:58:31 -05:00
b927321d9a Turns out that my last week of git pushes for github weren't working. My work account was the active GH account and my gitea account was getting the updates as expected. Good to know that with multiple git remotes, if there's no repo, there are also no warnings. 2024-12-30 11:55:40 -05:00
60a55e60ae Backed up Walmart Supplier's templates. Downloaded BuilderTrend's as well as they have just been assigned to me. 2024-12-20 13:32:45 -05:00
c1d4234407 Api keys, course scripts for Spark. Todos. 2024-12-19 15:57:45 -05:00
123676993a Anthology redirect 2024-12-18 15:41:44 -05:00
abfa25a4d4 Mostly migration work. Some Api test script updates. 2024-12-17 17:02:46 -05:00
77f1b63e35 Took JP's migration scorm script to test. 2024-12-16 17:56:11 -05:00
b8d085e12c BirchStreet download. Fixed Cin7 and backed up all the templates. Sandbox templates. 2024-12-16 16:29:06 -05:00
9a045e60dc Migration work for Luma but the darn enrollments endpoint is still giving me issues. 2024-12-10 16:49:58 -05:00
732b1a4b6d Compression of Luma's Migration scripts for Austin 2024-12-09 14:22:51 -05:00
0999529ffb Figured out some more migration project stuff. 2024-12-05 12:28:42 -05:00
eb99e7aaf6 Lots of progress on migration tool for Luma's monthly ask. It's 90% working, but the enrollments endpoint is giving me issues. 2024-12-04 16:33:40 -05:00
385b965d44 Mizuno and Chubb scripts. 2024-12-03 16:55:03 -05:00
142961e87f Changed a redirect template and made it generic. 2024-12-02 16:47:34 -05:00
991cdde784 Created script to get sent webhooks from our endpoint. Not many filtering options. Update some templates for Spark, and Luminate. 2024-11-26 16:39:18 -05:00
b0abcb7022 Got course IDs for Employ. 2024-11-25 09:41:08 -05:00
e398b90135 Upgraded a bunch of clients to v3 - Cin7 mostly for this repo, but Headway and Skan as well. Found two bugs. 2024-11-22 15:16:18 -05:00
97fb6a82e7 Pipedrive templates since our video promo url in course settings no longer works. Created a property + if statement that decides between the two values 2024-11-22 11:00:45 -05:00
0589e0b579 Scripts for Employ & imp help 2024-11-21 17:02:28 -05:00
2eab6281ab Chubb script update. 2024-11-19 17:43:02 -05:00
9610e52a80 New Google Script for Williams-Sonoma to show loc based on ip 2024-11-19 14:17:51 -05:00
5c9087893d Update Cin7's templates for employee and external academy. Backed up HackerRnank's new designs. 2024-11-18 15:06:48 -05:00
c03c32834e Clone courses script and small Howard Hanna updates. 2024-11-15 15:09:45 -05:00
9d4f187cab LJ Hooker changes. Skuid fix on homepage. 2024-11-14 16:30:43 -05:00
b6cd66c6ac Walmart extract PDFs 2024-11-13 17:06:39 -05:00
ececb862c2 Added two of Christie's academies for mini-migration project. 2024-11-12 17:36:40 -05:00
0ba43545f1 LJ Hooker backup 2024-11-07 14:51:31 -05:00
6cd64953bf Hackerrank moved Sandbox to Production. Chubb upload. Webhook test for Anthology's Workato. 2024-11-05 16:50:39 -05:00
91834dfcc7 Quick backup. Mizuno monthly script. 2024-11-01 21:51:41 -04:00
7ae06d16f6 HackerRank sandbox almost done. Trying to fix some weirdness in the Walmart Supplier templates. 2024-11-01 14:09:39 -04:00
382822243a First prototype of a CC script to auto create, reply, and delete a question which will be moved to workato for Docusign. 2024-10-31 14:27:20 -04:00
6aabae3469 Backed up Spark's sandbox templates with catalog vs enrolled courses (catalog doesn't work yet...). 2024-10-30 17:04:28 -04:00
dec65e7bf7 Todos. 2024-10-29 17:21:09 -04:00
4e24d8d695 Anthology CSV parse update. Backed up Supplier Prod's templates. 2024-10-28 17:07:21 -04:00
d93059e8c0 Backedup supplier's templates. GSU tests. 2024-10-25 16:17:46 -04:00
3626ead591 Hackerrank new templates in sandbox. updated a bunch of williams-sonoma stuff. GSU backup. 2024-10-24 16:50:02 -04:00
1335c4c29b Chubb script 2024-10-23 17:06:46 -04:00
3dbf87f388 Howard Hanna/AT updates. Updated API key for GSU send grid request. 2024-10-22 19:05:40 -04:00
86f60c8a95 Sandata templates and Luminate. PDFs for Spark 2024-10-18 16:38:15 -04:00
6f06b14ece Finished the class and liquid variable extraction script. 2024-10-17 16:22:21 -04:00
5f27d1bf02 Mizuno and Aiim templates. Almost done with the default class and liquid extraction script. 2024-10-16 17:15:05 -04:00
b3b6b4afea Skuid templates were changed on a demo. Williams-Sonoma improvements. Script was updated slightly. 2024-10-15 17:02:33 -04:00
acb4e38d79 Started a script to grab all class names from default templates. 2024-10-11 16:50:08 -04:00
8f2e9afc36 Todos. Lumiante templates for mexico and canada. Finished datasnipper's templates. 2024-10-10 15:09:27 -04:00
34eaf19e68 Update WSGC's modal. Some Spark work and Luminate had a translation request. Task to mass delete from keystone. 2024-10-09 17:04:03 -04:00
9245e67844 Templates for DataSnipper and Williams-Sonoma 2024-10-08 17:00:54 -04:00
496c3acce0 Datasnipper templates. 2024-10-07 16:35:59 -04:00
897e643528 Pipedrive templates and Todos. 2024-10-02 17:33:25 -04:00
c3c374bda1 Lumiante templates. Anthology and Datasnipper too. Quick scripts. 2024-10-01 17:11:02 -04:00
14a3266b89 Datasnipper nav and page updates. Supplier sub nav color updates. nTransit added SVGs icons for their categories. 2024-09-27 15:04:33 -04:00
c61c1e4410 Datasnipper templates - redoing their header navigation. 2024-09-26 17:32:26 -04:00
691a199006 Clone courses update. 2024-09-26 15:12:10 -04:00
9de620afb2 Puppeteer updates. Had to update the scripts. 2024-09-25 17:31:07 -04:00
2d3b82a4cf Pupeeteer was updated so had to change a few of the selector's lines 2024-09-25 15:21:09 -04:00
74dd6246ee Updated Luminate's templates and backed up to sandbox. 2024-09-25 12:08:02 -04:00
1c7e3295b6 Anthology templates. William sonoma as well. 2024-09-24 16:43:47 -04:00
9cec57f995 Updated Source & Supplier's Templates and moved them to sandbox. 2024-09-24 11:19:51 -04:00
f25622067f Node updated. Some todos. 2024-09-23 20:52:09 -04:00
8bfaca8375 Small notes. 2024-09-19 18:35:18 -04:00
342557a4fe Cleaned some files. Created DoorDash directory to test Braze Api calls. 2024-09-18 18:48:17 -04:00
a9a7d0739e Doordash sample braze call. Walmart resource PDF. 2024-09-17 16:12:57 -04:00
c9244c5d78 Cloning script for Luminate from US to CAN. 2024-09-17 11:40:12 -04:00
d87eb0db7f WSGC's and Anthology's templates. 2024-09-16 18:08:12 -04:00
e78efae8aa Updated Pipedrive's templates, mostly. 2024-09-12 18:25:34 -04:00
70b5d04b26 HackerRank sandbox. 2024-09-11 17:09:50 -04:00
0dce088842 Updated some Williams-Sonoma templates. 2024-09-10 17:03:22 -04:00
1739cacd10 Chubb script 2024-09-09 18:11:27 -04:00
400af7ba31 Anthology templates. Got DBUI for db queries working. 2024-09-09 15:10:34 -04:00
030787e01c Finished Datasnipper script. Some template stuff. 2024-09-06 16:05:32 -04:00
d4fdd5702b Cleaned up mark learner as complete, can successfully take in a single user and course and migrate them in the academy to mark as complete. 2024-09-05 18:29:26 -04:00
c05336900d A migration workedcd ../.. Marking a learner as complete is done. Woohoo. 2024-09-05 15:04:49 -04:00
3643bcba35 I'm confused. I thought I was creating eveything correct. The Start migration runs with no error... but nothign in the UI. 2024-09-04 20:40:32 -04:00
299c725c31 Ok, so if a user and a course exists, we've successfully created and enrollment and an attempt for the person. I guess we just have to try and push it now... 2024-09-04 19:03:18 -04:00
c45ca38934 TONS of migration progress! I'm so close
...
2024-09-04 17:18:51 -04:00
8385bd1240 Changed some migration scripts. Getting closed! Walmart notes. 2024-09-03 18:34:32 -04:00
0c3af4c0fd Some issues with the migration project but I'll need to test them tomorrow... might have to create courses even if courses already exist? 2024-09-02 20:42:31 -04:00
6323f577de Nothing left to do today, getting 500 errors for the enrollment and attempt resource endpoints. Everything is set up correctly for hitting those endpoints, but not sure if the 500 is on me or on the application/engineers. 2024-09-01 16:49:30 -04:00
35194352f5 okay, made class variables global. Working much better now. 2024-09-01 08:42:47 -04:00
10cb3e54d0 Divided util into it's own module. Struggling with class variables and using them across many functions... 2024-09-01 08:16:39 -04:00
e49d3d0a01 Added the create project and item functions for the mark a course as completed app. Reorganized a bit and added classes for the project as well. 2024-08-31 08:26:18 -04:00
6936530289 Added notes on order of operations for mark learner are complete. 2024-08-30 20:52:04 -04:00
9f39ab0dbd Datasnipper script. Worked on Migration tool a bit. Some Templates. 2024-08-30 17:18:04 -04:00
5f1ed149bf Updated WilliamsSonoma post-new hire templates. Made good progress on migration tool scripts. 2024-08-29 20:56:48 -04:00
691bf67219 Started the migration tool scripts. Finished Karbon's script for mass delete and re-addition. Other small things. 2024-08-28 17:06:43 -04:00
f9df92fba9 New script for Karbon. Luminate and Williams-Sonoma template updates. 2024-08-27 17:02:16 -04:00
861119c190 Update todos. 2024-08-26 16:42:26 -04:00
8864a74ac4 Cin7 clean up. Updated Williams-Sonoma templates. 2024-08-23 18:51:09 -04:00
ce9ad7ae88 Deleted the start page files since I use arc now. Updated Chubb's templates to look into their issues with images. 2024-08-22 17:08:24 -04:00
c5324b4683 Anthology quick update. HowardHanna header update. 2024-08-21 16:55:33 -04:00
1fa8c139e8 Cin7 templates - missed something in the cataloggit status Anthology bulk knowledgestate fix. 2024-08-21 12:11:42 -04:00
f4012dd6af Spark Notes. Adjusted scripts for directory change for Walmart. 2024-08-20 18:12:51 -04:00
46240bb702 Cin7 templates, Luminate templates. Walmart scripts and directory reorg 2024-08-19 17:06:01 -04:00
d4c72dcc79 Some Cin7 updates. Backed up williams-sonoma templates. 2024-08-16 15:56:20 -04:00
cad4a27584 Copied Cin7 Templates to update their pages to allow for more openness. 2024-08-15 16:44:04 -04:00
bae1307bb4 Saving. 2024-08-14 17:59:56 -04:00
5f7121892b Todos. 2024-08-13 17:10:54 -04:00
0b40e1224b Notes. Some script stuff. 2024-08-12 18:01:57 -04:00
e0b6790f6d Anthology templates again. Cin7 notes. 2024-08-09 06:12:18 +02:00
c8adb91545 Updated Anthology templates. Walmart and Datasnipper notes. Todos. 2024-08-07 19:37:41 +02:00
1eb1fce129 Single resource node for walmart, Chubb script, Mizuno scripts. Todos, too. 2024-08-06 20:23:04 +02:00
ce49f11950 Sandata templates - new states - and cleaning some other things. Started a script to better manager multiple client's templates 2024-08-05 22:33:32 +02:00
2309d6e75f Had to finish running a script for Zenjob even though I'm on PTO. There was a small error with the playwright function that I corrected. 2024-07-25 09:54:11 +02:00
bfa5c7310e Cleaned up some files before going on PTO. 2024-07-22 08:47:44 -04:00
da2e0d2c38 New script for getting everyone who is in each group and export to CSV. Skan templates. A few other small things 2024-07-19 16:29:00 -04:00
bf0244b2fe Argh, I haven't been at my home office and there was Cohesion this week, so I keep forgetting to push my changesgit status Todos, cleaned some dirs, and updated a script or too. 2024-07-19 08:53:30 -04:00
dfeb4a8292 Datasnipper templates. Chubb bulk update 2024-07-16 21:17:35 -04:00
68d445fa0d Todos and Anthology Parser 2024-07-15 18:40:06 -04:00
4ac49450c2 Fixed permissions for App Scripts in Google 2024-07-12 17:56:58 -04:00
9988e56cbd Started new GAS script for Gong emails. Downloaded William Sonoma templates. 2024-07-11 17:40:37 -04:00
622310f627 Artera templates. Chubb Templates. Anthology small changes to GAS scripts. 2024-07-10 16:52:16 -04:00
c80150b945 Had to create a new Anthology script just to fix Workato problems. 2024-07-09 19:54:24 -04:00
e9af572102 Anthology Notes and updated the google script for the CSV parser. 2024-07-08 20:01:29 -04:00
413ecc1040 Anthology head file for a custom redirect. Chubb and Todos. Oh and a customer alert banner for Artera. 2024-07-03 18:58:39 -04:00
7312718822 Pushed Walmart's ecommerce stuff to production and made the changes the client requested. Updated bulk_invite_and_props script for Chubb. 2024-07-02 17:18:10 -04:00
b7af632306 Datasnipper, Skuid, and Anthology 2024-07-01 16:37:52 -04:00
faab7b7a0b Deleted some files. Anthology's hero image adjusted. Notes and todos. 2024-06-28 17:12:28 -04:00
dc291b67f3 Chubb script for adding learners and add props. Added a state for Sandata. 2024-06-27 16:12:43 -04:00
232247df8d Luminate templates. Categories script to account for error handling. 2024-06-26 16:44:00 -04:00
01b709c14f small script changes 2024-06-25 17:22:17 -04:00
39e8b6607c G2 and Todos. Trying to better organized my API stuff. 2024-06-24 17:00:18 -04:00
83e4c43d7f Added some notes for how I want to construct this. Not sure if this is useful. 2024-06-23 18:41:26 -04:00
4a3b899ab0 Trying to store API calls in classes for better reuse. 2024-06-22 15:40:53 -04:00
c17daddc44 Script for Anthology and getting courses & props 2024-06-21 15:52:31 -04:00
2e82486eb8 Small Luminate templates. 2024-06-20 16:40:18 -04:00
06af9a492e Sandata Workato Scripts. 2024-06-18 16:31:27 -04:00
a8ac05e460 G2 subnav alert banner. Walmart notes and Todos. 2024-06-17 17:08:23 -04:00
62db1cf3b5 G2 subnav alert banner. Walmart notes and Todos. 2024-06-17 17:07:23 -04:00
15d60be16c Sandata and Walmart Luminate. Small changes to bulk upload script. 2024-06-13 19:01:00 -04:00
310610acff Sandata templates - they had incorrect states. Luminate mexico course title changes. Artera notes, Spark accoridions, and todos. 2024-06-12 17:19:12 -04:00
fac495a7e0 More Luminate changes... HackerRank's subnavigation is completed. Updated Cin7 templates. 2024-06-11 16:19:55 -04:00
1ca3e78eda Luminate Sandbox updates. Todos. Updated cloning courses for Anthology. New Bulk Delete script. Just need to add some functions. 2024-06-10 19:23:16 -04:00
7379f26fd3 Still working those luminate templates.... add some scripts for bulk add people. Changed a few todos. 2024-06-06 18:28:44 -04:00
a808da6818 Luminate's eCommerce/FiveServ integration is almost complete. We had to do the error messages because FiveServe redirects regardless of outcome of transaction... very dumb. Aretera notes. 2024-06-05 21:16:22 -04:00
e325b9a3bc Sandata templates. API scripts for a few customers. 2024-06-04 17:04:17 -04:00
2f75b0779a Luminate templates mostly. Cin7 too. 2024-06-03 17:27:33 -04:00
1c28a57244 Fixed some more of the Luminate templates for Spanish templates. Wrote a quick addition to get all course IDs. 2024-05-31 22:32:56 -04:00
bf13bb7131 Luminate Mexico templates for spanish and english courses. Todos. New script for bulk adding of people. 2024-05-31 15:46:04 -04:00
ec2ef3a808 Scripts for Anthology. Datasnipper notes. 2024-05-30 17:26:35 -04:00
486c2e9dea Todos and Walmart single activity file. 2024-05-29 18:42:15 -04:00
a7bb4f9973 Cin7 templates. Got a PDF for Walmart. Updated todos. 2024-05-28 17:04:58 -04:00
a65ad4740c Luminate's templates for Mexico school. Todos. Hid the Register button in Sandata. 2024-05-24 18:35:02 -04:00
02d463cf00 Templates for Cin7, Howard Hanna, and Walmart. 2024-05-23 16:44:36 -04:00
5b051fc205 G2, Cin7, and Artera templates. Some todo changes. 2024-05-22 16:38:31 -04:00
f0b52f01d4 Updated Anthology templates for the new search functionality. Updated Allen Tate/HH and a few Walmart templates. 2024-05-21 17:36:21 -04:00
f93d5053fd Sandata sign up form, and Cin7 templates. Some progress on G2, but need to finish it. 2024-05-20 16:55:19 -04:00
3820969cc2 Cin7 Templates, DVU templates, and G2 templates. Finished the mass delete script. Fun fact, dev docs are wrong... it's not a 15,000 limit, but 1500. 2024-05-10 16:39:37 -04:00
fa3ab13579 Had to change Sandata's script to grab the groups first and then grab people - going with people first was taking way too long. Updated some notes, worked on Luminate's fiveserv integration. 2024-05-09 17:07:47 -04:00
4785ff6283 A ton of updates for Cin7's templates for multi-product people. Finished the first half of the mass-delete script for Sandata. 2024-05-08 17:37:17 -04:00
86ef310892 moved a bunch of churned customers templates to a hidden folder. Added to Sandata's script and the new groups. Notes. 2024-05-06 17:07:40 -04:00
e9a721cfd6 Todos and Cin7's LP page. 2024-05-03 21:59:49 -04:00
0dcdde0d78 Updated some Cin7 Templates. Redownloaded the Sandata templates. Chubb notes and todos. 2024-05-02 16:50:34 -04:00
1ed572ac88 Created new script to mass delete people. Added some notes. 2024-05-01 17:28:57 -04:00
8a00d21ff6 Changed some scripts for Walmart screenshots and Cloning courses. Updated a bunch of Notes from Pipedrive, Copado, etc. Updated Cin7's templates. 2024-04-30 17:39:45 -04:00
3322549ca5 DoubleVerify has some old templates... Created Copado notes since I'm taking over the account. DataSnipper notes and todos. 2024-04-29 17:08:37 -04:00
4fbd8329f7 DataSnipper internal templates had to be separated out. Fixed the Anthology script for group coursesgit status It's working 2024-04-26 15:46:33 -04:00
05fbcfad0e Chubb, Sandata, Skuid notes. Updated Anthology's get courses from groups since we hit the API per-page limit. Sendgrid for Sandata. 2024-04-25 19:43:20 -04:00
11972796a4 Todos and Cin7's courses catalog page. 2024-04-24 17:03:05 -04:00
09484fa1e5 Cleaned up some files and had to run a few scripts. Crossed off todos. 2024-04-23 18:02:43 -04:00
99799f6e44 Forgot to add Papa's small customization and crossed it off the list. 2024-04-22 16:54:09 -04:00
670c849c64 Cin7 Partners instance downloaded. Crossed off a bunch of todos. Finished Anthology's groups to courses extract script. 2024-04-22 16:51:47 -04:00
88000a824d finished workflow for sandata - even though they cancelled the launch! Worked on Anthology's group based course extractions. 2024-04-19 16:53:56 -04:00
59e9a4ae2b Notes for Chubb and templates for Sandata and Cin7. Skuid notes, todos. 2024-04-18 18:57:55 -04:00
908ab49d70 Quick update for Artera's internal academy. 2024-04-17 18:59:28 -04:00
7de269b38b Cin7 templates. Some changes for Sandata. Downlaoded new templates. 2024-04-17 17:28:06 -04:00
ca62198d9c Google-GonG script is almost done! Added some todos. 2024-04-16 16:59:59 -04:00
ab9a2206b8 Updated lots of todos. 2024-04-15 16:52:26 -04:00
82fd5a2db8 Sandata templates for the sign up form. Removed a few test scripts I don't need anymore. Created an Acatble dir. 2024-04-12 22:59:45 -04:00
958f1ec991 LJ Hooker templates re-downloaded so Tracy didn't have to send a ticket to the blackhole of Jira. Updated some scripts to get Sandata groups and a few Walmart screenshots. 2024-04-10 17:37:51 -04:00
9ddc3f7b1e Pipedrive is removing an instance because of multi-auth. Started to clean up those templates. 2024-04-09 16:55:17 -04:00
dafb43e6ce Fixed knowledgestate properties for anthology. 2024-04-05 17:16:58 -04:00
0aa9c45ed8 Luminate is donegit status! Everything has been translated. 2024-04-04 17:13:14 -04:00
84f3cdd8a1 Luminate almost done. Fixed Zenjob's issue with the german test not being hidden 2024-04-03 17:11:47 -04:00
d27d791236 Downloaded Harri Mcdonalds templates for the language picker. Slowly updating Luminates templates for the lang picker. 2024-04-02 19:47:10 -04:00
9286f52fb2 Luminate templates for the language switcher. Added some items to the screenshot scraper. 2024-04-01 17:46:07 -04:00
d71e70688f Got the basics of playwright working and taking screenshots! Great first step. 2024-03-28 21:49:29 -04:00
81884f7fec Getting ready for next Anthology project - the revamped searchbar. Downloaded templates. Cleaned up some todos. Added two academies to Cin7's backup of courses. Other notes 2024-03-28 21:30:03 -04:00
ee29257e17 Weglot for Datasnipper - updated templates. Approved to move Walmart screenshots scripts to a cloud host. Need to re-write it in playwright 2024-03-27 22:17:31 -04:00
30f5cfd5e4 backedup cin7 templates. Cloned more courses. Domains to csv for anthology was completed. new GAS script for cin7 courses within a google sheet. 2024-03-26 17:28:59 -04:00
299fda0696 Luminate templates transferred to Mexico school. Finished parsing the domains for Anthology. Need to start the script that puts them into a CSV. Sandata templates downloaded. 2024-03-25 17:07:43 -04:00
d79b1c023e SSO notes for Luminate and almost done with Anthology domain names for groups. 2024-03-22 16:55:08 -04:00
8eb26ea8b4 updated DataSnipper templates and edited more of the domain names for Anthology. 2024-03-20 21:26:52 -04:00
2b4dcabfa6 Have to manually fix Anthology's clients names that were retrieved via domain. 2000 names to update.... 2024-03-19 17:50:48 -04:00
1394112a9b Fixed an error in blacklane's templates (dont try to mix programming languages...) Anthology domains list was finalized and pulled ready for client review. 2024-03-15 20:45:21 -04:00
f32ce078e1 Updated blacklane, chubb and anthology's templates. Some small script updates. Todos. 2024-03-14 17:49:46 -04:00
f4a1a757c4 Artera and Blacklane notes. Added some todos. Had to pull category IDs for Walmart. 2024-03-13 16:31:57 -04:00
b11f58a2b7 Update Luminate's completion banner, but still need to make it downloadable with a click. G2 and Luminate notes. Todos. 2024-03-12 16:51:58 -04:00
6576919ff6 Anthology script for domain names. Used get courses for Walmart, and made a backup of the screenshots for 1-off courses. Glassdoor and todo notes. 2024-03-11 17:03:07 -04:00
a3455a720c Deleted a bunch of files and cleaned things up. Started the script for finding correct domain names for Anthology. Recast templates. Todolist. 2024-03-08 19:18:46 -05:00
3490b97063 TripleSeat templates, along with Futuri (both for header and transcript updates). Create SCORM course node script. Added some todos as well. 2024-03-07 16:15:01 -05:00
48acea45ba Cleaned up some files. Anthology and Datasnipper notes. A few script updates. 2024-03-06 17:06:00 -05:00
a7f324f3b2 Small. Just the todo list. 2024-03-05 17:03:59 -05:00
34032ab681 Mizuno monthly script. Some cin7 and datasnipper templates and todo list items. 2024-03-04 17:08:39 -05:00
d5926729ad Updated Mizuno's templates for the sign up page, and added a new template for Walmart. New script for Zenjob to remove a bunch of people from an internal testing group. 2024-03-01 17:26:03 -05:00
e2e58399f5 Chubb notes and another update for Headway's templates. 2024-02-29 22:27:23 -05:00
1184fe0cd1 A big commit with a bunch of node modules so I could run puppeteer for Walmart. Added some todos and Headway's templates. 2024-02-28 17:13:10 -05:00
dbcdfc8472 Datasnipper templates for their Weglot translation tool. Pipedrive's footer still needs the translations. Big ideas notes - finished their custom end of quiz screen items. 2024-02-27 17:26:51 -05:00
995feecb65 Cin7 notes, BigIdeas notes and just updated a script for cin7. 2024-02-26 17:03:16 -05:00
ec4ca6e94b Lots of SE work today. Prepared the CustomCSS script for Big ideas Quiz changing and SAML response for my notes. Customer notes for ANthology, big ideas, and Hackerrank. 2024-02-23 17:19:16 -05:00
66b4d046b5 Cleaned up todos list to make it more organized. Started updating some pipedrive templates for their team, and added a group for Zenjob's authenticated users. Chubb's Header Dropdown needed an extra space. 2024-02-22 18:42:20 -05:00
81c01e29a1 Cleaned up todos list to make it more organized. Started updating some pipedrive templates for their team, and added a group for Zenjob's authenticated users. Chubb's Header Dropdown needed an extra space. 2024-02-22 18:42:09 -05:00
c1d3e60f4b MATTR templates and tripleseat head file for custom fonts. Todos. 2024-02-21 18:55:26 -05:00
46889f20d9 Changed up some of Anthology's bulk unenroll/enroll scripts so I have a ready to go script if anything goes wrong. 2024-02-20 22:22:09 -05:00
dff0550ebd Another update to the Anthology CSV parsing script... 2024-02-16 21:48:04 -05:00
06aba90bca Lots of custom template changes. Downloaded the default ones and made changes to Chubb and Cin7. Cleaned up some files. 2024-02-16 14:41:07 -05:00
839f32424c Ton of updates to Cin7's academy. Notes for Artera, SPS, and Walmart. Re-downloaded the final CSV parser. 2024-02-14 17:12:33 -05:00
d087f41e5e started some local google scripts to help me in my workflow. 2024-02-13 21:51:21 -05:00
f2e7042afe Completed some templating work for Courtney for her client, Headway. G2 notes. 2024-02-12 17:01:38 -05:00
5c08acdb46 Took a Flask function to download templates since product is changing some of our theming and templates. Anthology CSV script was updated. 2024-02-09 16:50:16 -05:00
6d6e028b40 I think Anthology is done.... Amazing. 2024-02-08 15:39:17 -05:00
692e06de2d Almost done with Anthology! SO close. Walmart notes. 2024-02-07 17:22:53 -05:00
798e6a11ad Updated Mizuno Golf's templates as per their request. Downloaded the upadated GAS parser script. 2024-02-06 17:24:54 -05:00
aa3086c23e Cin7's templates for both internal and external academies. Notes for Cin7 and G2. Wrote a backup script for Anthology in case the CSV workflow fails. 2024-02-05 17:48:39 -05:00
e46883c0f8 Saturday work. Needed to fix some Anthology enrollments for their internal employees to wrote a new script to remove everyone from their current groups and bulk re-enroll into all the correct groups and courses. 2024-02-03 16:54:38 -05:00
a9126a355f Production script in Google for Anthology. Currently seems to be working well. 2024-02-02 17:17:58 -05:00
7080a3a4f3 Emergency script for Anthology that was abanonded. CSV updates. HackerRank notes 2024-02-01 16:09:29 -05:00
111d6412d6 Updated cin7 templates while Hubert was out, and downloaded all of Chubb's templates since something needed to be udpated. Ran a script for SPS Commerce to get all the courses. 2024-01-31 17:32:20 -05:00
60399985b5 Luminate templates for a last minute launch! Parse CSV data was updated for testing. 2024-01-30 17:55:02 -05:00
8b29b4b425 Changed up some cin7 templates. 2024-01-29 17:03:30 -05:00
e01aee1612 Added a new template for Anthology's ILTs register button and completed a ticket for LJ hooker and Tracy. No notes. 2024-01-26 17:12:06 -05:00
28036e8fa6 Datasnipper's templates were updated for their login page. Chubb notes and todos. 2024-01-25 18:28:10 -05:00
8ca1d90345 Proud of a new script for changing a list of dictionaries into a CSV! But it's not quite done yet. Updates are mostly for Anthology scripts.Some notes for various clients. 2024-01-24 18:47:17 -05:00
c795d4fe64 New Cin7 templates. Anthology CSV updates. 2024-01-23 16:54:25 -05:00
b9271f5cb6 Downloaded the updated cin7 templates. Got Groups for Anthology. Small notes. 2024-01-22 17:02:01 -05:00
620797240d Cin7 was upset that the design work wasn't complete yet so I downloaded and started chipping away at some of the items that are remaining. Still working on Anthology's CSV mapping functionality. Modified their master dictionary since the CSV stuff isn't ready. 2024-01-19 19:47:00 -05:00
760bf3925a Started my Gainsight cheatsheet for the CS items I need to memorize. Started using the amazing plugin venn.nvim! So nice. 2024-01-18 16:29:34 -05:00
2c8f3d34c8 Updated training events script for SPS commerce. Added some templates for Harri to help Tracy. Small other items. 2024-01-17 16:44:12 -05:00
e9bdfd23df Custom templates for Courtney and iAdvize, and some notes for anthology, glassdoor, and stopit. 2024-01-16 16:36:37 -05:00
74cc4058bd Backed up a few items. No substantial changes to anything. 2024-01-11 18:50:04 -05:00
f0f18ff843 Fixed up GoGuardian for Nergis. Added some Walmart notes and tasks and (almost) finished the parse csv script for Anthology. 2024-01-10 18:09:40 -05:00
237b6795c6 Small update to anthology script 2024-01-09 18:08:51 -05:00
bf9d065f3b Re-edited HH templates to change the link back. Ran some scripts for cin7, courtney, and a few others. Downloaded GoGuardian templates to help Nergis. 2024-01-08 16:41:01 -05:00
a5fe4bd2c8 Tons of Solutions Engineering work done today for the rest of the CS team! Headway, Howard Hanna, Engels, Brighton, etc. Also completed Datasnippers auth flow and worked on Anthology's script. Cloned Anthology's courses (900..) and will clone Full Story on Monday. 2024-01-05 17:07:59 -05:00
ce261975ca Scripts updated to do Anthology work. Added Anthology's GAS Script. Pipedrive's Sitemap. and Zenjob templates. 2024-01-04 16:51:28 -05:00
ad5a26d5d8 Updated some Zenjob templates. Walmart notes. Need to figure out a new virtualenvironment for running scripts. 2024-01-03 16:22:53 -05:00
d5f51bff1a Anthology - added to their mapping and exported it to CSV. Updated the script for that. 2023-12-20 16:49:29 -05:00
f9008a5b88 Cin7 and G2 notes. 2023-12-19 16:47:07 -05:00
acb947865b One note for NinjaCat 2023-12-18 17:01:20 -05:00
45342b1148 Anthology and Renaissance notes. Skuid feedback on features. 2023-12-15 16:31:01 -05:00
f39ddb789d Backing up for the day. Just TS script stuff. 2023-12-13 16:26:32 -05:00
b8dd4f0fe6 Finished/refactored the add-to-csv script for Talkspace to move faster and not make so many API calls. Added some notes for Datasnipper. 2023-12-12 17:22:13 -05:00
b35a650a11 Small CS Ops script to understand how many hours we have been spending on implementation. 2023-12-11 16:54:17 -05:00
1d8a2e6f2b Talkspace no access templates uploaded. CIN7 api key added and new send grid request. 2023-12-08 17:20:26 -05:00
e5b04c594c Small Datasnipper workflow things. Still not working. 2023-12-07 17:20:31 -05:00
f7e0a20cf3 Zenjob notes. Webhook testing and python scripts. 2023-12-06 16:28:43 -05:00
54cddb23f1 Renaissance notes. Updated webhook script and small items for DataSnipper. Need to finish that workflow for them... 2023-12-05 17:33:38 -05:00
6b3ba2e5e1 Big Ideas templates and homepage was updated. Cin7 notes. 2023-12-04 16:45:21 -05:00
fffccc48b6 Big Ideas Templates for insided widget. Api keys and script changes. 2023-12-01 16:29:56 -05:00
419a9ed505 Spark Prod and Sandbox templates. Updated search results for Walmart Prod to hide the metrics program course. Big Ideas sandbox templates along with Mizuno Golf and Aiim's custom css tab. 2023-11-30 17:38:50 -05:00
e739938d64 Recast Notes 2023-11-29 17:10:57 -05:00
4d677d866c Anthology's templates. 2023-11-28 17:48:59 -05:00
277da4cc14 Datasnipper and G2 Notes. 2023-11-27 17:12:27 -05:00
e11b6a08fd Backing up Walmart's templates that I guess didn't get committed yesterday? Some final edits to Blacklane's sign up page. 2023-11-24 06:56:58 -05:00
87b721483f Update Walmart Spark templates. Backedup all their hidden tags in course settings and removed so they don't show up in the search results anymore. 2023-11-22 22:38:06 -05:00
7bc8b430be Final save before Thanksgiving holiday! Blacklane has been completed. Some small scripts were updates. Downloaded new - but error prone - SPS templates. 2023-11-22 16:37:22 -05:00
be3cb15494 William Sonoma notes, blacklane templates are almost done. 2023-11-21 17:30:05 -05:00
16d09ae658 Blacklane templates almost completed. Downloaded humly for their requested changes. Chubb notes. 2023-11-20 17:06:35 -05:00
13487b5d17 First stab at Northpass Implementation Academy. New templates features broke though and now these are all temporary. 2023-11-19 14:26:40 -05:00
09053c34cd Tons of anthology work with notes and scripts. Updated DE's tamplates. Small script changes as well. 2023-11-17 17:18:13 -05:00
c3aedce0d1 Updated a few scripts, mostly of Talkspace. Added some notes for big ideas. Began on Blacklane's signup page. 2023-11-16 21:41:51 -05:00
aeb811db4e Notes for Datasnipper, G2 and Walmart. Added Birchstreet. Small script changes. 2023-11-15 21:54:33 -05:00
3d9c9c5b6b G2 Templates updates, Ntoes for WilliamSonoma,Glassdoor, AchieveCE. Script updates. 2023-11-14 18:12:34 -05:00
3015506dd8 Webhook tester script created. 2023-11-10 20:36:38 -05:00
fa83a6fc7a Downloaded G2 templates. Added notes for DataSnipper and Recast. Added API keys and a few other small items. 2023-11-09 22:12:16 -05:00
3edcfc22bb TripleSeat new notes. Finished the Anthology mappings script and have uploaded it workato. 2023-11-08 17:21:03 -05:00
089c3fb385 Transferred anthology script into python list of dictionaries... took forever. Learned lots of Neovim commands. Cin7 notes. 2023-11-07 16:57:58 -05:00
346f57c589 G2 Notes. Small other items 2023-11-06 16:24:21 -05:00
1342c10ac8 Figured out Workato recipe with Python node to reduce the scope of the original anthology flow. 2023-11-05 20:52:25 -05:00
2912377102 New talkspace script. Added a bunch of templates as backup. 2023-11-03 16:52:02 -04:00
4d20bb39d2 Papa notes. A few other small changes. 2023-11-02 17:56:40 -04:00
5b2363bae2 Completed Anthology script to parse the long JS nodes. 2023-11-01 16:57:42 -04:00
79721ef1e5 Anthology Scripts 2023-10-31 16:16:11 -04:00
be3a893a93 Some notes and extracted all Anthology JS nodes from their workflow. 2023-10-30 17:03:59 -04:00
728dc962cc Papa and Walmart Notes. Anthology and HackerRank templates. 2023-10-27 17:41:59 -04:00
26a7ac654c That is a lot of files being added. I think my nvim-sidebar messed something up and deleted files from the buffer in neovim, but not the actual filesystem? Because I seem to still have everything. Oh well. 2023-10-26 17:01:42 -04:00
06270b7f57 DataSnipper notes mostly. 2023-10-23 17:09:23 -04:00
88ea5efba7 Big Walmart notes - huge, important meeting! Harri McDonalds template changes. Re-downloaded Luminate changes. 2023-10-20 16:38:07 -04:00
bc6a785eb3 Big Walmart notes - huge, important meeting! Harri McDonalds template changes. Re-downloaded Luminate changes. 2023-10-20 16:36:57 -04:00
cc0d192db2 Larson Texts, Luminate, Blacklane 2023-10-19 17:38:36 -04:00
fb416055b5 Walmart Notes 2023-10-18 17:09:34 -04:00
7450785c11 Walmart new script for muiltiple ids (activities, learning paths, courses). Talkspace script to update their workato recipe. 2023-10-17 17:28:07 -04:00
c4e8f9ae7f Datasnipper notes. 2023-10-16 18:03:05 -04:00
fa44fd724d Anthology notes. 2023-10-13 16:38:27 -04:00
bcd6e2591f Zenjob templates updates. Notes for a few companies. 2023-10-12 17:35:48 -04:00
84ecd6c471 Notes for some companies. 2023-10-11 17:18:04 -04:00
3ee215a5b5 Added some scripts and customer notes. Change Papa Pal templates. 2023-10-06 16:39:05 -04:00
8cd8a61d34 Uncommented some of Pipedrive's templates for password reset warning. WilliamSonoma notes, Aubrey check in. 2023-10-05 17:26:26 -04:00
a610b52c6e Moved around some Ghost Notes and reorged. Updated Humly's templates. Added Walmart notes. 2023-10-04 17:45:15 -04:00
363f83ef61 Datasnipper notes only. 2023-10-03 17:36:05 -04:00
450eaee4f9 Talkspace script for emails into props, G2, and Wild Health Notes. 2023-10-02 17:05:14 -04:00
00a2213b11 Walmart notes. Both internal and external. 2023-09-29 15:41:57 -04:00
a4d53c31ca Achieve notes. 2023-09-28 16:42:22 -04:00
cb0191ead7 Added a script for getting category IDs. All these api scripts... would love to make a TUI app for this. 2023-09-26 17:01:37 -04:00
1331a49c63 DataSnipper Notes 2023-09-25 16:59:40 -04:00
c8734933d3 Big ideas, lots of Anthology, and a few others. 2023-09-22 17:49:01 -04:00
7d7ba23a82 Big ideas notes 2023-09-20 17:17:50 -04:00
14b96ae5db Cleaned up some files. small changes to a Talkspace template. 2023-09-14 16:42:43 -04:00
35617bd0b1 Walmart and Zenjob notes. 2023-09-13 17:05:07 -04:00
206623060e Some scripts changed. updated Mizuno templates. 2023-09-12 17:09:25 -04:00
09b033797c Mizuno templates. Some notes. 2023-09-07 17:09:51 -04:00
532268295d Walmart and Zenjob notes. 2023-09-06 17:15:21 -04:00
18271d15a4 Reorged notes, ready for the next step. Glassdoor notes. Some small script changes. 2023-09-05 20:06:18 -04:00
020d9fa764 Notes, end of week changes. Litlte script stuff. 2023-09-01 17:09:55 -04:00
59b793bb1f Meeting Notes for Mattr, and a few others. 2023-08-31 17:45:46 -04:00
255547df14 Got rid of Neorg stuff. MKNFLOW has what I need and their new features with templates solves most of my issues. I moved norg files to md and improved some plugins. 2023-08-30 17:09:31 -04:00
e0d0894176 Zenjob, and some internal notes 2023-08-29 17:25:16 -04:00
c03f332ad3 Updated some todos and notes. Added Datasnipper. Archived old notes. 2023-08-28 16:33:25 -04:00
f30449b8ef Notes for Anthology and Swift Medical. Added Ghost Notes and templates dir with some files inside. 2023-08-25 16:41:40 -04:00
332b99d3ec Notes for Larson Texts/Big ideas, added the ghost notes templates. Updated luminate's templates 2023-08-24 17:06:08 -04:00
63c33b5f17 Walmart notes, mostly. 2023-08-23 17:15:20 -04:00
d9938dc94d More configuration of some notes with Neorg. Added a few script items. 2023-08-22 17:19:23 -04:00
b4ff268b5a Added HA integration script for my calendar to avoid all day events. Notes for G2. 2023-08-21 20:38:44 -04:00
84b6e51a40 back up from last week since I forgot to push everything. 2023-08-21 08:54:37 -04:00
26878f172e Created python script to send MQTT message with Todo items. Need to add an automation for running it when it saves. Also need to add some error handling. Next up is to get the ESP side stood up. 2023-08-14 16:48:05 -04:00
e52a5b4d53 Back up from last week. Glassdoor auth_url template updated. 2023-08-14 09:04:55 -04:00
d683da4ce8 Starting to learn Neorg. Had to fix the Walmart screenshots node script. Some notes and TODO items. 2023-08-10 16:26:17 -04:00
b9fe8d640b Walmart notes. Zenjob Assignment Script backed up. Reorged some directories. 2023-08-09 18:17:31 -04:00
e5c9674186 Skuid Notes. Some new template changes. Added Luminate's GAS to the repo. 2023-08-03 21:14:43 -04:00
c2a6854ae3 Walmart Notes, Zenjob Tickets. Don't know if I changed anything in my scripts 2023-08-02 21:36:56 -04:00
31e4e328fc pipedrive notes. Small changes to scripts like Mizuno's PGA script. 2023-08-01 20:46:34 -04:00
86678363f9 Small notes. Couldn't figure out hubspot API.... 2023-07-31 17:10:06 -04:00
af7edafd35 Started the Hubspot script for Tracy... super confusing. Added a few notes and template items. 2023-07-28 17:22:48 -04:00
79794e0030 Notes and some templates. Small changes. 2023-07-27 22:20:47 -04:00
2320513c9f Updated all the notes so my script would pull them automatically without any errors. The script is almost done, but I can't seem to get it to merge all the dictionaries! Those were most of the changes for this commit. 2023-07-26 17:42:52 -04:00
d2378e4f44 Finished Script to push notes to GonG, just need an API Key. Pipedrive templates, Skuid Templates, got TripleSeat's templates ready for their sign in page. Few notes. 2023-07-25 17:07:33 -04:00
08c8f78f1c Larson Texts notes. Lots of Pipedrive Template changes. Started my GS Script for Timeline events. 2023-07-24 19:15:14 -04:00
ecf6845890 Doordash templates, notes for Mizuno, a few template changes. Anthology,included. 2023-07-14 16:56:05 -04:00
38d99a617f Forgot to back up yesterday. Made some Anthology template changes. A new notes. Cleaning up TODOs. 2023-07-14 09:46:18 -04:00
473f88a940 Agriwebb templates and some notes 2023-07-12 17:26:00 -04:00
aa20284351 Agriwebb templates. SOme notes and todo cleaning. Other file organization. 2023-07-11 17:11:05 -04:00
662ea94761 Notes changes, a few templates. 2023-07-10 21:48:07 -04:00
c6b0c5682f A few notes and template changes. 2023-07-07 15:51:41 -04:00
58dd40bf99 Glassdoor notes, some Mizuno templates & a script 2023-07-06 16:56:42 -04:00
013ba5b9a1 Glassdoor notes, some Mizuno templates & a script 2023-07-06 16:53:42 -04:00
407cdafa47 Mostly Bolt notes. Some small script changes. 2023-07-05 15:38:04 -04:00
94dc876345 Added the new templates for Learning Paths. Some small script changes. 2023-06-30 16:05:43 -04:00
f314daed98 Larson Notes and updated a bunch of templates for Artera. 2023-06-29 17:31:14 -04:00
a321234a07 Cayuse and Crayon templates. Added Talkspace's emails as temporary files, but still need to organize them. 2023-06-28 17:00:35 -04:00
d80699c918 undid some changes 2023-06-26 19:05:35 -04:00
e259b87bf6 Changes? 2023-06-26 19:05:11 -04:00
d65e44450e Pipedrive templates. Backed up google apps scripts stuff. 2023-06-26 18:53:16 -04:00
f95de11e35 Harri Script finished, but still messy due to GAS timeouts 2023-06-23 16:36:28 -04:00
b89d88ffcd Started Harri script. Pushed groups for Anthology. 2023-06-22 17:00:36 -04:00
a6f6ecf6cf Tested List properties 2023-06-21 16:58:47 -04:00
0401dfb1a2 Technically off for most of the day, so just backing up the small changes. 2023-06-20 16:38:10 -04:00
3dd1fc3ffa Small script and template changes. Nothing monumental. 2023-06-19 22:25:46 -04:00
b526e92bfc small script changes. Updates to G2's modal popup. 2023-06-16 16:13:44 -04:00
807739cae6 Lots of template work - Luminate, G2, Crayon. Added Mizuno Running's script. Small changes to notes. 2023-06-15 19:50:44 -04:00
73ae8fe55b Luminate Templates, notes for walmart, Crayon changes. 2023-06-14 17:30:03 -04:00
1a6b3a630c Pipeline copy changes, notes and todos. G2 templates for their launch. Scripting work. 2023-06-13 18:28:15 -04:00
9e8d128fa5 Added WildHealth scripts, need to fix Walmart Screenshots script. G2 templates. 2023-06-12 17:05:57 -04:00
fb9bd2d954 Lot's of skuid scripts for accredible and question mark. Some template changes for Mizuno & G2. 2023-06-09 15:01:46 -04:00
b5a86e1abb G2 templates, question mark and accredible scripts. HackerRank notes. 2023-06-08 16:53:46 -04:00
20ef5dab44 Accredible Script Started 2023-06-07 22:10:31 -04:00
f4faed7dc1 Google Scripts for Talkspace & Doximity. SOme walmart notes 2023-06-07 15:22:27 -04:00
e924fdb040 Templates for Zenjob, Mizuno, Artera. Scripts for Wild Health. 2023-06-06 17:34:32 -04:00
14f713c3af Mizuno running, no notes. Artera Internal 2023-06-05 17:09:23 -04:00
092223eccc Small templates changes, mostly artera. Mizuno notes. 2023-06-02 18:50:06 -04:00
d48f951d6c Artera Internal templates. Notes for the same. 2023-06-01 16:54:12 -04:00
04ab65043f Glassdoor notes. Some template changes. Harri js script. 2023-06-01 09:02:42 -04:00
8538259fa2 Glassdoor notes. Some template changes. 2023-06-01 09:01:08 -04:00
0cd25f999f Mattr script for URLs. Skuid notes. G2 and Mizuno template changes. 2023-05-30 17:11:32 -04:00
a1f2a3ae5f Cleaned up TODOs and other customer notes. Added some Terminus templates, I believe. 2023-05-30 10:11:00 -04:00
0db819088b SPS and Walmart notes. Anthology, too. 2023-05-24 16:56:19 -04:00
6a1e560688 Small notes, Aiim 2023-05-23 17:02:58 -04:00
94145349e7 Saving at the beginning of my work day. 2023-05-23 09:08:58 -04:00
6063458ed4 Larson notes. Some changes to templates 2023-05-18 15:55:20 -04:00
d3d5b157a7 Added some scripts for Doximity. Changed Zenjob's templates 2023-05-17 12:30:27 -04:00
654a924ce9 Updated Harri Script from Charlie, a bunch of notes and todos for clients. 2023-05-16 16:27:25 -04:00
5c8b9a7a3b small script changes and notes 2023-05-12 16:45:50 -04:00
aa64ae8ba5 Unknown Changes 2023-05-10 10:17:32 -04:00
2d2a571402 Updated walmart script. 2023-05-09 12:42:15 -04:00
1c60bd4c52 Glassdoor notes 2023-05-08 16:40:24 -04:00
29fee835f4 Added two new talkspace scripts 2023-05-08 12:12:31 -04:00
18a266746b Started the reorganization of Scripts for github. Some notes changes. 2023-05-04 16:07:06 -04:00
6a674ca24b Some new Scripts 2023-05-04 10:18:35 -04:00
ee797f3b7e started g2 changes. notes and todos from other companies. 2023-05-03 17:10:33 -04:00
26c55d54f6 Templates changes for a few clients. 2023-05-01 17:07:21 -04:00
3e6a6e5266 Recast Templates for skipping overview page. Added Zenjob's templates. Some notes. 2023-04-27 14:54:53 -04:00
c78cf84753 Notes from SPS,Keystone,Walmart, and Glassdoor. Changed some templates in my sandbox. 2023-04-25 18:19:08 -04:00
9c723283ff Some notes, like Pipedrive. Cleaned up and migrated TimeTagger off this system since Docker Desktop was slowing everything down like crazy. 2023-04-18 17:09:28 -04:00
6f9647e440 Added some CSVs for Jupyter notebook testing. 2023-04-17 17:06:12 -04:00
c5b0297704 Forgot to save yesterday. Mostly data and jupyter changes. Some notes. 2023-04-17 08:54:10 -04:00
c88ffb4004 Downloaded DE's templates (old templates). Worked on pandas and customer data with a good amount of success. 2023-04-13 17:05:51 -04:00
1a2c86d665 Added Front. A few script changes. Jupyter notebooks practice for customer analysis. 2023-04-12 08:36:25 -04:00
78063b0b88 Mostly worked on pandas and jupyter stuff. Made great progress analyzing churned customers. 2023-04-10 16:14:42 -04:00
36c6ded695 Anthology notes 2023-04-06 17:01:06 -04:00
61d7aa7298 Finished mizuno script. Changed Walmart's courses script. Added some notes. 2023-04-05 18:49:34 -04:00
ecdf46fd33 Fixed walmart screenshot script. Added some notes. Created recast's script. 2023-04-04 16:55:32 -04:00
9ef9e63297 Started and almost completed Mizuno Script 2023-04-03 17:16:01 -04:00
478b21c8ef Finished Walmart script. Agriwebb notes. 2023-03-30 21:18:23 -04:00
c74649e16b Worked on Walmart script. This will also be useful for the Flask app 2023-03-29 21:59:44 -04:00
3f79de36fb Started walmart category script 2023-03-29 18:06:13 -04:00
f373159238 Templates for a few companies. SPS notes. 2023-03-28 16:55:54 -04:00
5f971353ec Changes? 2023-03-24 15:59:46 -04:00
a3660527c7 Notes and cleaned up folders 2023-03-21 16:41:53 -04:00
8539f41834 SPS Templates, Skuid checkbox, Script for WildHealth 2023-03-20 16:17:36 -04:00
bd67feb727 Nothing to note 2023-03-13 17:07:38 -04:00
233d1843dc Artera notes. A few scripting things. Downloaded templates. 2023-03-10 18:00:40 -05:00
21d73cd346 Notes. No script changes. 2023-03-09 15:07:50 -05:00
7e891c1603 A few notes changes 2023-03-08 20:49:38 -05:00
019d7cc362 Notes 2023-03-07 14:56:54 -05:00
3e9d970f11 Left over notes to save 2023-03-06 09:33:03 -05:00
34cdcf15cd Saving for the day. Unsure what was changed. SOme notes. 2023-03-02 17:48:10 -05:00
43c86f43ae Mizuno's google script was added. Need to change a few things 2023-03-01 17:06:14 -05:00
1a01c317d7 Updated some Notes and added walmart to the start page. 2023-02-27 16:01:54 -05:00
707af4f01f Fixed UX Design's Script, added some directory changes for Walmart. Notes for Anthology 2023-02-23 15:34:42 -05:00
60e2ecda09 Clean uip 2023-02-22 15:13:31 -05:00
ce50ac8cfc Notes. Script clean up 2023-02-16 18:22:33 -05:00
acb7842913 Notes Changes 2023-02-15 21:12:21 -05:00
36a2f2c080 Walmart Notes, offloading keys to ignore file 2023-02-15 17:08:29 -05:00
cf3d29858c Walmart Notes 2023-02-14 16:57:31 -05:00
96f021aa38 Small notes 2023-02-14 10:18:02 -05:00
10301 changed files with 689417 additions and 39027 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
Scripts/node_modules/

1
.python-version Normal file
View File

@ -0,0 +1 @@
3.10.13

View File

@ -0,0 +1,7 @@
# NinjaCat
## 12/18/2023
ChurnZero deal but having disco calls with CS AE/CAMs?
Gio Demaio joining as AE/CAM

View File

@ -0,0 +1,23 @@
# Notes on Offiste + Pulse 2024
## Offsite
*CSM/Project Manager Role*
* Example from CS CSM:
* GS: "We just had a meeting and showed them the risk management framework! They will start using it."
* 2 months later
* Client: "Yeah we never implemented it."
* CS is facing similarity to other products trying to self-serve.
## Future of CS
* Most popular selection was 1 CSM and 1 CSSC
What do we know works?
* Missed that slide
We need to decouple CS from the other Emerging Products. Right now, CS is the focal point and "leader" for the multi-product customer. How can we change that so the appropriate product is the leader?
Scorecards for CE Data. Community first-pass MVP Example:
* Number of contacts that have registered for Community
* Number of Questions or Articles they have generated
* Number of Product Ideas that they are submitting on behalf of that client.

View File

@ -0,0 +1,6 @@
# Incorrect Dates in Gong Renewals
| Company | Gong Renewal | Actual Renewal | Submitted to Gong Feedback? |
|---------------- | --------------- | --------------- | ------------------ |
| Walmart | 1/1/2026 | 4/07/25 | Yes, 09/01/2023 |
| | | |

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,61 @@
{% if training_session.approved? %}
<div class="np-training-session-cta-note">
<i class="far fa-check np-training-session-icon"></i>
{% t .registered %}
</div>
{% elsif training_session.pending? %}
<div class="np-training-session-cta-note np-training-session-cta-note-error">
{% t .pending %}
</div>
{% elsif training_session.denied? %}
<div class="np-training-session-cta-note np-training-session-cta-note-error">
{% t .denied %}
</div>
{% elsif training_session.too_late? %}
<div class="np-training-session-cta-note np-training-session-cta-note-error">
{% t .too_late %}
</div>
{% elsif training_session.no_seats? %}
<div class="np-training-session-cta-note np-training-session-cta-note-error">
{% t .no_seats %}
</div>
{% endif %}
<div class="np-training-session-cta">
<div class="np-training-session-cta-buttons">
{% if training_session.session_url != "" %}
<a href={{ training_session.session_url }}>
<button class="np-top-button np-button np-button-big ">
Register
</button>
{% else %}
<form
action="{% route training_session_registration, id: training_session.id %}"
method="post"
>
{% form_authenticity_token %}
{% if training_session.internal? and training_session.approved? %}
{% if features.training_events_google_calendar? %}
{% include "training_session_calendars" %}
<button type="submit" class="np-top-button np-button np-button-big np-button-secondary">
{% t .unregister %}
</button>
{% else %}
<button type="submit" class="np-top-button np-button-font-color np-button np-button-big">
{% t .unregister %}
</button>
{% endif %}
<input type="hidden" name="_method" value="delete" />
{% endif %}
{% if training_session.not_registered? %}
<button type="submit" class="np-top-button np-button np-button-big">
{% t .register %}
</button>
{% endif %}
</form>
{% endif %}
</a>
</div>
</div>

View File

@ -0,0 +1,120 @@
{% comment %}
For this widget to work you must import Slick CSS and JS
{% endcomment %}
<div class="np-dashboard-resources">
<div class="np-card">
<div class="np-card-container np-dashboard-border">
{% if courses.enrolled.any? %}
<div class="np-card-content-achievements">
<div class="achievements-carousel">
{% for course in courses.enrolled %}
{% if course.progress == 100 %}
<div>
<div class="np-card-content-title col-12">
{{ course.name }}
</div>
<div class="col-12 ">
<img class="np-achievement-icon" src="{{ course.properties.course_badge }}" />
</div>
</div>
{% endif %}
{% endfor %}
</div>
<a href="#" class="np-view-all-achievements">View All</a>
{% else %}
{% capture message %}
{% t shared.zero_state.courses.index,
key: current_school.course_vocabulary
%}
{% endcapture %}
{% include "courses_zero_state", message: message %}
{% endif %}
</div>
</div>
</div>
</div>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
$('.achivements-carousel').slick({
slidesToShow: 1,
slidesToScroll: 1,
dots: false,
infinite: true,
autoplay: false,
autoplaySpeed: 5000,
cssEase: 'linear',
prevArrow: '<i class="fal fa-chevron-left"></i>',
nextArrow: '<i class="fal fa-chevron-right"></i>',
responsive: [{
breakpoint: 991,
settings: {
dots: false
}
}]
})
});
</script>
<style>
.achievements-carousel{
text-align: center;
}
.np-card-content-achievements .np-card-content-title {
font-size: 0.937rem;
text-align:center;
font-weight:500;
}
.np-achievement-icon {
color: #bec2c6;
margin:14px auto 26px;
width:130px;
}
.np-card-content-achievements .slick-slider {
width:100%;
max-width: 375px;
margin: auto;
}
.np-view-all-achievements {
color:#2BB24C;
font-size:0.75rem;
text-transform:uppercase;
text-align:center;
text-decoration:none;
margin-bottom:1.5rem;
}
.np-card-content-achievements {
flex: 1;
display: flex;
flex-direction: column;
padding: 2rem 2rem .5rem;
}
.slick-arrow {
color: rgba(255, 255, 255, 0.5);
opacity: 0.5;
font-size: 1.5rem;
position: absolute;
height: 100%;
top: 50%;
cursor:pointer;
}
.slick-arrow.fa-chevron-left { left:0 }
.slick-arrow.fa-chevron-right { right:0; }
@media (min-width:1024px) {
.np-card-content-achievements .slick-slider {
max-width: none;
margin: 0;
}
}
</style>

View File

@ -0,0 +1,68 @@
{% include "header" %}
{% include "course_version_outdated_alert", courses: courses.enrolled %}
{% include "sub_navigation" %}
<main class="np-main np-dashboard np-subpage-container np-max-width">
<div class="row np-flex-center">
<div class="col-xs-12 col-sm-8">
{% if features.learning_paths? %}
<div class="np-dashboard-resources-title">
{% t shared.learning_paths %}
</div>
{% include "learning_paths_index", items: learning_paths.enrolled %}
{% endif %}
<div class="np-dashboard-resources-title">
{% t shared.course_vocabulary.plural, key: current_school.course_vocabulary %}
</div>
{% include "courses_index", class: "col-xs-12 col-sm-6 np-stretch-content" %}
</div>
<div class="np-grid-spacing col-xs-12 col-sm-4">
<div>
<div class="np-dashboard-resources-title">My Points</div>
<div class="np-card">
<div class="np-card-container np-dashboard-border" style="text-align: center;">
<h1 class="user-point-num" style="margin-bottom: 1rem;">{{ current_person.properties.learner_points }}</h1>
<h3 class="user-point-label" style="margin-top: 1rem;">Points</h3>
</div>
</div>
</div>
{% assign courseCompletedCouter = 0 %}
{% for course in courses.enrolled %}
{% if course.progress == 100 %}
{% assign courseCompletedCouter = courseCompletedCouter | plus: 1 %}
{% endif %}
{% endfor %}
<div class="achievements-box" style="{% if courseCompletedCouter > 0%}display: block !important;{% endif %}">
<div class="np-dashboard-resources-title">Recent Achievements</div>
{% include "widget_achievements" %}
</div>
{% if features.training_events? %}
<div>
<div class="np-dashboard-resources-title">
{% t .upcoming_events %}
</div>
{% include "training_events_dashboard" %}
</div>
{% endif %}
</div>
</div>
</main>
{% include "footer" %}
<style>
.achievements-box{
display: none;
}
@media (max-width: 767px){
.user-point-num{
padding-top: 1rem;
}
.user-point-label{
padding-bottom: 1rem;
}
}
</style>

View File

@ -0,0 +1,69 @@
{% assign cat_name = "" %}
{% assign cat_class = "" %}
{% for category in course.categories limit: 1 %}
{% unless category.name contains "Focus-" or category.name contains "Production Applications-" or category.name contains "Materials-" or category.name contains "Cleaning Methods-" %}
{% assign cat_name = category.name %}
{% assign cat_class = cat_name | replace: " ", "-" | downcase | replace: "&", "and" %}
{% endunless % %}
{% endfor %}
<div class="np-card course-card">
<div class="np-card-container">
{% if course.ribbon %}
<div class="np-card-ribbon">
{{ course.ribbon }}
</div>
{% endif %}
<div style="position: relative;">
<div class="course-category {{cat_class}}">
<span>{{ cat_name }}</span>
</div>
<div class="course-image-container">
<img
class="np-card-image"
alt="{{ course.name }}"
src="{{ course.image_url }}">
</div>
</div>
<div class="np-card-content np-card-content-vertical np-card-padding">
<h3 class="np-card-content-title">
{{ course.name }}
</h3>
{% unless course.instructor_names == "" %}
<div class="np-card-content-subtitle">
{{ course.instructor_names }}
</div>
{% endunless %}
<div class="np-card-content-footer">
<div class="np-card-content-progress np-button-color">
{% if course.progress == 100 %}
<i class="far fa-check-circle"></i>
<span>completed</span>
{% elsif course.progress > 0 and course.progress < 100 %}
<i class="fas fa-spinner"></i>
<span>{% t shared.progress, count: course.progress %}</span>
{% else %}
<i class="not-started-circle"></i>
<span>{% t shared.progress, count: course.progress %}</span>
{% endif %}
</div>
{% capture course_path %}
{% route course, id: course.id %}{% endcapture %}
{% if course.has_to_restart? %}
{% include "course_version_outdated_popup", path: course_path %}
{% endif %}
<a class="np-button" href="{{ course_path }}">
{% if course.progress > 0 and course.progress < 100 %}
Continue
{% elsif course.progress == 100 %}
Retake
{% else %}
Start
{% endif %}
</a>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,84 @@
<div class="np-card np-no-horizontal-padding learning-path-card">
<div class="np-card-container">
<div class="np-learning-path">
<div class="learning-path-image-container">
<img
alt="{{ learning_path.name }}"
class="np-card-image np-learning-path-image"
src="{{ learning_path.image_url }}"
/>
</div>
<div class="np-card-text-wrapper">
<div class="np-hidden-desktop np-card-header">
<div class="np-card-header-type">{% t shared.learning_path.title %}</div>
<div class="np-hidden-desktop np-card-header-items-count">
{{ learning_path.items.count }} {% t .items %}
</div>
</div>
{% comment %} <div class="np-hidden-mobile np-card-header">
<div class="np-card-header-type">{% t shared.learning_path.title %}</div>
</div> {% endcomment %}
<div class="np-card-content np-card-padding np-card-content-vertical">
<h3 class="np-card-content-title">
{{ learning_path.name }}
</h3>
<div class="np-card-content-subtitle">
{{ learning_path.instructor_names }}
</div>
{% comment %} <div class="np-hidden-mobile np-card-content-description">
{{ learning_path.description }}
</div> {% endcomment %}
<div class="np-hidden-mobile np-card-content-progress
np-button-color">
{% if learning_path.progress == 100 %}
<i class="far fa-check-circle"></i> <span>completed</span>
{% elsif learning_path.progress > 0 and learning_path.progress < 100 %}
<i class="fas fa-spinner"></i> <span>{% t shared.progress, count: learning_path.progress %}</span>
{% else %}
<i class="not-started-circle"></i> <span>{% t shared.progress, count: learning_path.progress %}</span>
{% endif %}
</div>
<div class="np-hidden-mobile np-card-progress-bar-container">
<div
style="width: {{ learning_path.progress }}%; {% if learning_path.progress == 100 %}background-color: #16C466;{% endif %}"
class="np-button-background-color np-card-progress-bar">
</div>
</div>
<div class="np-card-content-footer">
<div class="np-hidden-desktop np-card-content-progress
np-button-color">
{% if learning_path.progress == 100 %}
<i class="far fa-check-circle"></i> <span>completed</span>
{% elsif learning_path.progress > 0 and learning_path.progress < 100 %}
<i class="fas fa-spinner"></i> <span>{% t shared.progress, count: learning_path.progress %}</span>
{% else %}
<i class="not-started-circle"></i> <span>{% t shared.progress, count: learning_path.progress %}</span>
{% endif %}
</div>
<a class="np-button" href="{% route learning_path, id: learning_path.id %}">
{% if learning_path.progress > 0 and learning_path.progress < 100 %}
Continue
{% else %}
{% t shared.view %}
{% endif %}
</a>
<span class="np-hidden-mobile np-learning-path-items">
<svg width="18" height="16" viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.84375 0.9375H2.53125C2.98828 0.9375 3.375 1.32422 3.375 1.78125V3.46875C3.375 3.96094 2.98828 4.3125 2.53125 4.3125V7.40625H4.5C4.5 6.94922 4.85156 6.5625 5.34375 6.5625H7.03125C7.48828 6.5625 7.875 6.94922 7.875 7.40625V9.09375C7.875 9.58594 7.48828 9.9375 7.03125 9.9375H5.34375C4.85156 9.9375 4.5 9.58594 4.5 9.09375H2.53125V12.75C2.53125 12.9258 2.63672 13.0312 2.8125 13.0312H4.5C4.5 12.5742 4.85156 12.1875 5.34375 12.1875H7.03125C7.48828 12.1875 7.875 12.5742 7.875 13.0312V14.7188C7.875 15.2109 7.48828 15.5625 7.03125 15.5625H5.34375C4.85156 15.5625 4.5 15.2109 4.5 14.7188H2.8125C1.72266 14.7188 0.84375 13.8398 0.84375 12.75V8.25V4.3125C0.351562 4.3125 0 3.96094 0 3.46875V1.78125C0 1.32422 0.351562 0.9375 0.84375 0.9375ZM5.625 2.625C5.625 2.16797 5.97656 1.78125 6.46875 1.78125H17.1562C17.6133 1.78125 18 2.16797 18 2.625C18 3.11719 17.6133 3.46875 17.1562 3.46875H6.46875C5.97656 3.46875 5.625 3.11719 5.625 2.625ZM10.125 8.25C10.125 7.79297 10.4766 7.40625 10.9688 7.40625H17.1562C17.6133 7.40625 18 7.79297 18 8.25C18 8.74219 17.6133 9.09375 17.1562 9.09375H10.9688C10.4766 9.09375 10.125 8.74219 10.125 8.25ZM10.125 13.875C10.125 13.418 10.4766 13.0312 10.9688 13.0312H17.1562C17.6133 13.0312 18 13.418 18 13.875C18 14.3672 17.6133 14.7188 17.1562 14.7188H10.9688C10.4766 14.7188 10.125 14.3672 10.125 13.875Z" fill="#185A7D"/>
</svg>
<span class="np-learning-path-items-count">
{{ learning_path.items.count }} Courses
</span>
</span>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,28 @@
<div class="np-card previous-event-card">
<div class="np-card-container">
{% if course.ribbon %}
<div class="np-card-ribbon">
{{ course.ribbon }}
</div>
{% endif %}
<img
class="np-card-image"
alt="{{ course.name }}"
src="{{ course.image_url }}"
>
<div class="np-card-content np-card-content-vertical np-card-padding">
<h3 class="np-card-content-title">
{{ course.name }}
</h3>
<div class="np-card-content-footer">
<div class="np-card-content-progress np-button-color">
{{ course.properties.previous_event_date_and_time}}
</div>
{% capture course_path %}{% route course, id: course.id %}{% endcapture %}
<a class="np-button" href="{{ course_path }}">
Watch
</a>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,42 @@
{% if courses.enrolled.any? %}
<div class="row row-with-thumbnails">
{% assign enrolled_courses_alphabetical = courses.enrolled | sort: "name" %}
{% for course in enrolled_courses_alphabetical %}
{% assign course_progress = "" %}
{% if course.progress == 100 %}
{% assign course_progress = "completed" %}
{% elsif course.progress < 100 and course.progress > 0 %}
{% assign course_progress = "in-progress" %}
{% else %}
{% assign course_progress = "not-started" %}
{% endif %}
{% assign cat_name = "" %}
{% for category in course.categories limit: 1 %}
{% assign cat_name = category.name %}
{% endfor %}
<div class="{{ class }}" data-progress="{{course_progress}}" data-category="{{cat_name}}">
{% include "cards_course" with course %}
</div>
{% endfor %}
</div>
{% else %}
{% capture message %}
{% t shared.zero_state.courses.index,
key: current_school.course_vocabulary
%}
{% endcapture %}
{% include "courses_zero_state", message: message %}
{% endif %}
<style>
@media (min-width:768px) {
.np-card.course-card {
padding: 0 0 100px;
height:100%;
}
}
</style>

View File

@ -0,0 +1,108 @@
<footer class="np-footer">
<div class="footer-container">
<div class="footer-title">Brighton Science Service and Support</div>
<a
class="footer-item"
href="https://customer.brighton-science.com/myinstruments"
target="_blank">
<span>
Instrument Records and Support
</span>
<svg
xmlns="http://www.w3.org/2000/svg"
height="1em"
viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z" /></svg>
</a>
<a
class="footer-item"
href="https://customer.brighton-science.com/knowledge"
target="_blank">
<span>
Knowledge Base
</span>
<svg
xmlns="http://www.w3.org/2000/svg"
height="1em"
viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z" /></svg>
</a>
<a
class="footer-item"
href="https://store.brighton-science.com"
target="_blank">
<span>
Instrument Parts and Service
</span>
<svg
xmlns="http://www.w3.org/2000/svg"
height="1em"
viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z" /></svg>
</a>
<a
class="footer-item"
href="https://app.brighton-science.com/experiments/list"
target="_blank">
<span>
BConnect
</span>
<svg
xmlns="http://www.w3.org/2000/svg"
height="1em"
viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z" /></svg>
</a>
</div>
</footer>
<style>
.np-footer {
display: flex;
flex-direction: row;
width: 100%;
height: 373px;
padding-left: 0;
padding-right: 0;
justify-content: flex-end;
}
.footer-container {
width: 85%;
border-top: 6px solid #185A7D;
display: flex;
flex-direction: column;
}
.footer-title {
color: #185A7D;
font-family: Helvetica Neue;
font-size: 34px;
font-style: normal;
font-weight: 400;
line-height: normal;
margin-bottom: 16px;
margin-top: 20px;
}
.footer-item {
color: #0077B8;
font-size: 19px;
font-style: normal;
font-weight: 400;
line-height: 49px;
display: flex;
align-items: center;
cursor: pointer;
text-decoration: none;
}
.footer-item:hover {
color: #185A7D;
}
.footer-item svg {
margin-left: 10px;
fill: #0077B8;
}
.footer-item:hover svg {
fill: #185A7D;
}
</style>

View File

@ -0,0 +1,9 @@
{% styles default %}
{% styles colors %}
{% styles custom %}
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Heebo:wght@400;500;600;700;900&display=swap" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.min.js" integrity="sha256-2Pmvv0kuTBOenSvLm6bvfBSSHrUJ+3A7x6P5Ebd07/g=" crossorigin="anonymous"></script>

View File

@ -0,0 +1,309 @@
<header class="np-header np-header-color">
<div class="np-header-content">
<div class="np-hidden-desktop np-header-mobile-menu-nav">
{% if current_person.signed_in? %}
<button
data-toggle-class="np-hidden"
class="np-header-mobile-menu-nav-button fal fa-times np-hidden np-header-font-color"
data-toggle-target=".np-header-mobile-avatar-menu,
.np-header-mobile-menu-content, .np-main, .np-footer"></button>
<button
data-test="open-mobile-menu"
data-toggle-class="np-hidden"
class="np-header-mobile-menu-nav-button np-header-mobile-avatar-menu"
data-toggle-target=".fa-times, .np-header-mobile-menu-content, .np-main, .np-footer">
<img
alt="{{ current_person.name }}"
class="np-header-avatar-image"
src="{{ current_person.avatar_url }}" />
</button>
{% endif %}
</div>
{% if current_school.logo_url %}
<h1 class="np-header-logo">
<a href="{% route home %}">
<img
alt="{{ current_school.name }}"
class="np-header-logo-image"
src="{{ current_school.logo_url }}" />
<div class="logo-text">Brighton Academy</div>
</a>
</h1>
{% else %}
<a href="{% route home %}" class="np-school-name np-header-font-color">
{{ current_school.name }}
</a>
{% endif %}
<div class="np-hidden-mobile np-header-desktop-nav">
<ul class="np-header-desktop-nav-list">
{% for link in navigations.sub_navigation %}
{% unless link.label == "Dashboard" %}
<li class="np-header-desktop-nav-item">
<a href="{% if link.label == 'Catalog' %}/app/courses{% else %}{{ link.url }}{% endif %}" class="np-header-desktop-nav-link np-header-font-color {{ link.active_class }}">
{% if link.label == "Home" %}
Dashboard
{% elsif link.label == "Catalog" %}
Courses
{% elsif link.label == "Events" %}
Upcoming Events
{% else %}
{{ link.label }}
{% endif %}
</a>
</li>
{% endunless %}
{% endfor %}
{% for website_navigation in navigations.header_navigations_external %}
<li class="np-header-desktop-nav-item">
<a
href="{{ website_navigation.path }}"
class="np-header-desktop-nav-link np-header-font-color"
target="_blank">
{{ website_navigation.name }}
</a>
</li>
{% endfor %}
</ul>
</div>
{% if current_person.signed_in? %}
<div class="np-hidden-mobile np-header-search np-header-search-expanded">
<form
action="{% route search %}"
method="get"
data-test="desktop-search">
<input
aria-label="{% t .search %}"
class="np-header-search-input"
type="text"
name="q"
placeholder="{% t .search %}" />
<i class="np-header-search-icon far fa-search np-header-font-color"></i>
</form>
</div>
<div class="np-hidden-mobile np-header-avatar">
<button
class="np-header-avatar-button"
data-test="open-desktop-menu"
data-toggle-class-on-target="np-hidden"
data-toggle-target=".np-header-avatar-tooltip"
data-toggle-outside>
<div>
<span class="welcome-text">Welcome back,</span><br>
<strong class="person-name-text">
{% if current_person.first_name %}
{{ current_person.first_name }}{% endif %}
{% if current_person.last_name %}
{{ current_person.last_name }}{% endif %}
</strong>
</div>
<svg
style="margin-left: 13px"
xmlns="http://www.w3.org/2000/svg"
width="18"
height="9"
viewBox="0 0 21 13"
fill="none">
<path
d="M1.0376 1.23193L10.5188 10.7129L20 1.23193"
stroke="#0077B8"
stroke-width="2" />
</svg>
</button>
<div class="np-header-avatar-tooltip np-hidden" role="tooltip">
<div>
<span class="welcome-text">Welcome back,</span><br>
<strong class="person-name-text">
{% if current_person.first_name %}
{{ current_person.first_name }}{% endif %}
{% if current_person.last_name %}
{{ current_person.last_name }}{% endif %}
</strong>
</div>
<nav class="np-header-avatar-tooltip-navigation">
{% unless current_school.sso_active? %}
<a class="np-header-avatar-tooltip-navigation-link" href="{% route account %}">
{% t.profile_settings %}
</a>
{% endunless %}
<a class="np-header-avatar-tooltip-navigation-link" href="/app/profile">
Your Profile
</a>
<a class="np-header-avatar-tooltip-navigation-link np-danger" href="{% route logout %}">
{% t.sign_out %}
</a>
</nav>
</div>
</div>
{% else %}
<a
class="np-header-sign-in np-header-desktop-nav-link np-header-font-color"
aria-label="{% t shared.sign_in %}"
href="{% route login %}">
{% t shared.sign_in %}
</a>
{% endif %}
</div>
</header>
<div class="np-hidden-desktop">
<div class="np-header-mobile-menu-content np-hidden">
{% if current_person.signed_in? %}
<img
alt="{{ current_person.name }}"
class="np-header-mobile-menu-content-avatar"
src="{{ current_person.avatar_url }}" />
<div class="np-header-mobile-menu-content-name">
{{ current_person.name }}
</div>
{% endif %}
<div class="np-header-mobile-menu-content-nav">
<form
class="np-header-search"
data-test="mobile-search"
method="get"
action="{% route search %}">
<input
aria-label="{% t .search %}"
class="np-header-search-input"
type="text"
name="q"
placeholder="{% t .search %}" />
<i class="np-header-search-icon far fa-search"></i>
</form>
{% for link in navigations.sub_navigation %}
<a href="{{ link.url }}" class="np-header-mobile-menu-content-button {{ link.active_class }}">
{% if link.label == "Home" %}
Dashboard
{% elsif link.label == "Events" %}
Upcoming Events
{% else %}
{{ link.label }}
{% endif %}
</a>
{% endfor %}
<div class="np-header-mobile-menu-content-line"></div>
{% unless current_school.sso_active? %}
<a class="np-header-mobile-menu-content-button" href="{% route account %}">
{% t.profile_settings %}
</a>
{% endunless %}
<a class="np-header-mobile-menu-content-button" href="/app/profile">
Your Profile
</a>
<a class="np-header-mobile-menu-content-button np-danger" href="{% route logout %}">
{% t.sign_out %}
</a>
</div>
</div>
</div>
{% include "messages" %}
<style>
.np-header-logo a {
display: flex;
align-items: center;
text-decoration: none;
}
.np-header-logo img {
border-right: 1px solid #707070;
padding-right: 16px;
}
.np-header-logo .logo-text {
font-size: 18px;
font-weight: 400;
letter-spacing: -0.4px;
margin-left: 16px;
color: #000;
}
.np-sub-navigation-content-item-inactive {
color: #0077B8;
font-size: 20px;
font-style: normal;
font-weight: 500;
line-height: normal;
}
.np-sub-navigation-content-item-active {
color: #185A7D!important;
font-size: 20px;
font-style: normal;
font-weight: 500;
line-height: normal;
border-bottom: 1px solid #185A7D;
}
.np-header {
position: relative;
z-index: 1;
border-bottom: 1px solid #185A7D;
padding: 0 4%;
}
.np-header-avatar-button {
text-align: left;
display: flex;
align-items: center;
}
.np-header-avatar-button i {
margin-left: 12px;
}
.np-header-search-icon {
color: #0077B8;
font-size: 23px;
font-weight: 400;
line-height: normal;
}
.welcome-text {
color: #185A7D;
font-size: 16px;
font-weight: 400;
line-height: normal;
}
.person-name-text {
color: #185A7D;
font-size: 20px;
font-weight: 700;
line-height: normal;
}
.np-header-avatar-tooltip {
top: 0;
width: 100%;
border: 1px solid #F0F0F0;
background: #fff;
box-shadow: 2px 1px 1.5px 0 rgba(0, 0, 0, 0.16);
}
.np-header-avatar-tooltip > div {
padding-left: 20px;
padding-top: 10px
}
.np-header-avatar-tooltip-navigation-link {
color: #0077B8;
font-size: 18px;
font-weight: 500;
line-height: 46px;
}
@media(min-width:768px) {
.np-header {
height: 120px;
}
.np-header-logo .logo-text {
font-size: 20px;
}
}
</style>

View File

@ -0,0 +1,31 @@
<div class="progress-activity-section-container">
<div class="np-main np-dashboard np-subpage-container np-max-width progress-activity-section">
<div class="row">
<div class="col-xs-12 col-sm-6">
<div class="dashboard-title">YOUR PROGRESS</div>
{% include "section_progress_widget" %}
</div>
<div class="col-xs-12 col-sm-6">
{% include "section_recent_activity", enrolled_courses: enrolled_courses, enrolled_learning_paths: enrolled_learning_paths %}
</div>
</div>
</div>
</div>
<style>
.progress-activity-section-container {
margin-bottom: 6px;
box-shadow: 0px 3px 2.5px 0px rgba(0, 0, 0, 0.42);
}
.progress-activity-section-container,
.progress-activity-section {
background-color: #f7fbfe;
}
@media (min-width: 768px) {
.progress-activity-section {
padding: 42px 60px 54px 60px;
}
}
</style>

View File

@ -0,0 +1,29 @@
<div class="np-learning-paths-resources row">
{% if learning_paths.available.any? %}
{% for learning_path in items %}
{% assign learning_path_progress = "" %}
{% if learning_path.progress == 100 %}
{% assign learning_path_progress = "completed" %}
{% elsif learning_path.progress < 100 and learning_path.progress > 0 %}
{% assign learning_path_progress = "in-progress" %}
{% endif %}
{% assign cat_name = "" %}
{% for category in learning_path.categories limit: 1 %}
{% assign cat_name = category.name %}
{% endfor %}
<div class="col-xs-12 col-md-6 lp-column" data-progress="{{learning_path_progress}}" data-category="{{cat_name}}">
{% include "cards_learning_path" with learning_path %}
</div>
{% endfor %}
{% else %}
<div class="np-learning-paths-resources-container">
<div class="np-zero-state-text">
{% t .empty %}
</div>
<img class="np-zero-state-learning-paths" alt="{% t .empty %}" />
</div>
{% endif %}
</div>

View File

@ -0,0 +1,41 @@
{% assign radius = 93 %}
{% assign pi = 3.14159 %}
{% assign circumference = radius | times: 2 | times: pi %}
{% assign progress = count | times: 1.0 | divided_by: total %}
{% assign offset = 1 | minus: progress | times: circumference %}
{% assign circle_background_color = '#e5e9eb' %}
{% assign progress_number_color = '#1b3e4f' %}
<div class="progress-circle-wrapper">
<svg
class="progress-circle"
width="212"
height="212">
<circle
class="circle circle-bg"
stroke="#6FCFEB"
stroke-width="17"
fill="transparent"
r="{{ radius }}"
cx="106"
cy="106"
/>
<circle
class="circle"
stroke="#185A7D"
stroke-width="17"
fill="transparent"
r="{{ radius }}"
cx="106"
cy="106"
stroke-dasharray="{{ circumference }} {{ circumference }}"
stroke-dashoffset="{{ offset }}"
style='transform: rotate(-90deg);transform-origin: 50% 50%;'
/>
<text class='dt' x="50%" y="60%" text-anchor="middle" stroke="t#fff" stroke-width="1px" fill="{{ progress_number_color }}" dy=".3em">
<tspan x="50%" dy="0em" class="progress-circle-big-text">{{count}}</tspan>
<tspan x="50%" dy="1.4em" class="progress-circle-text">of {{ total }}</tspan>
</text>
</svg>
</div>

View File

@ -0,0 +1,168 @@
<div class="row lps-row">
{% assign displayed_learning_paths_count = 0 %}
<div class="col-xs-12">
<div class="flex-wrapper">
<div class="dashboard-title">LEARNING PATHS: NEW AND IN PROGRESS</div>
<div class="learning-paths-link">
<a href="/app/learning_paths?category=completed">View completed Learning Paths</a>
</div>
</div>
{% if learning_paths.enrolled.any? %}
{% assign learning_paths_by_progress = learning_paths.enrolled | sort: "progress" | reverse %}
{% assign learning_paths_index = 1 %}
{% for learning_path in learning_paths_by_progress %}
{% if learning_path.progress < 100 and learning_paths_index < 3 %}
{% include "cards_learning_path" with learning_path %}
{% assign learning_paths_index = learning_paths_index | plus: 1 %}
{% assign displayed_learning_paths_count = displayed_learning_paths_count | plus: 1 %}
{% endif %}
{% endfor %}
{% if displayed_learning_paths_count == 0 %}
<div class="learning-paths-completed-card np-card">
<div>
<div class="flex-wrapper">
<div class="completion-icon">
<svg
width="102"
height="103"
viewBox="0 0 102 103"
fill="none"
xmlns="http://www.w3.org/2000/svg">
<path d="M48.4102 68.4844C46.2188 70.6758 42.832 70.6758 40.6406 68.4844L27.8906 55.7344C25.6992 53.543 25.6992 50.1562 27.8906 47.9648C30.082 45.7734 33.4688 45.7734 35.6602 47.9648L44.625 56.7305L66.1406 35.2148C68.332 33.0234 71.7188 33.0234 73.9102 35.2148C76.1016 37.4062 76.1016 40.793 73.9102 42.9844L48.4102 68.4844ZM102 51.75C102 80.0391 79.0898 102.75 51 102.75C22.7109 102.75 0 80.0391 0 51.75C0 23.6602 22.7109 0.75 51 0.75C79.0898 0.75 102 23.6602 102 51.75ZM51 10.3125C28.0898 10.3125 9.5625 29.0391 9.5625 51.75C9.5625 74.6602 28.0898 93.1875 51 93.1875C73.7109 93.1875 92.4375 74.6602 92.4375 51.75C92.4375 29.0391 73.7109 10.3125 51 10.3125Z" fill="#16C466" />
</svg>
</div>
<div>
<div class='completion-title-message'>Congratulations, you've completed all your assigned Learning Paths!</div>
<div class="completion-subtitle-message">When new learning paths become available we'll send an email announcing it and they'll always appear here.<br>For now you can
<a href="/app/courses">browse your courses</a>,
<a href="/app/courses">watch previous events</a>, and sign-up for any
<a href="/app/training_events">upcoming events</a>.</div>
</div>
</div>
</div>
</div>
<style>
.learning-paths-link {
display: none;
}
</style>
{% endif %}
{% else %}
<div class="np-learning-paths-resources-container">
<div class="np-zero-state-text">
{% t.empty %}
</div>
<img class="np-zero-state-learning-paths" alt="{% t .empty %}" />
</div>
{% endif %}
</div>
</div>
<style>
.completion-title-message {
color: #000;
font-size: 22px;
font-style: normal;
font-weight: 500;
line-height: normal;
margin-bottom: 10px;
margin-top: 10px;
}
.completion-subtitle-message a {
color: #0077B8;
font-size: 16px;
font-style: normal;
font-weight: 400;
line-height: normal;
text-decoration-line: underline;
}
.completion-subtitle-message {
color: #000;
font-size: 16px;
font-style: normal;
font-weight: 400;
line-height: normal;
}
.completion-icon {
margin-right: 14px;
}
.learning-paths-link {
margin-bottom: 32px;
text-align: right;
}
.learning-paths-link a {
color: #0077B8;
font-size: 15px;
font-style: normal;
font-weight: 400;
line-height: normal;
text-decoration-line: underline;
}
.learning-paths-link a:hover {
color: #185A7D;
}
.learning-path-card.np-card {
height: unset;
min-height: unset;
}
.learning-paths-completed-card.np-card {
padding: 0 !important;
margin-bottom: 150px !important;
}
.learning-paths-completed-card .np-card-container {
padding: 32px 16px;
}
.learning-paths-completed-card .learning-paths-completed-heading {
font-size: 22px;
font-weight: 500;
margin-bottom: 16px;
}
@media(min-width:768px) {
.lps-row .flex-wrapper {
display: flex;
justify-content: space-between;
align-items: center;
}
.lps-row .learning-paths-link {
margin-bottom: 0;
}
.learning-paths-completed-card .flex-wrapper {
display: flex;
}
.learning-paths-completed-card .np-card-container {
padding: 32px;
}
}
</style>
<script>
// hide title and link if no laernings paths to display
$(document).ready(function() {
const displayedLps = {{displayed_learning_paths_count}}
if (displayedLps == 0) {
$(".lps-row .dashboard-title").hide()
$(".learning-paths-link").hide()
}
})
</script>

View File

@ -0,0 +1,67 @@
<div class="previous-events">
<div class="dashboard-title">WATCH PREVIOUS EVENTS</div>
<div class="previous-events-widget">
<div class="row">
{% assign index = 0 %}
{% for course in enrolled_courses %}
{% assign is_event_course = false %}
{% for cat in course.categories %}
{% assign cat_name = cat.name | downcase %}
{% if cat_name contains "webinars" or cat_name contains "events" %}
{% assign is_event_course = true %}
{% endif %}
{% endfor %}
{% if course.properties.previous_event_display_on_dashboard and index < 2 and is_event_course %}
<div class="col-xs-12 col-sm-6 previous-event" data-date="{{course.properties.course_publish_date}}">
{% include "cards_previous_event" with course %}
</div>
{% assign index = index | plus: 1 %}
{% endif %}
{% endfor %}
</div>
</div>
</div>
<script>
var eventIndexes = document.querySelectorAll(".previous-event:not([data-date=''])");
var eventIndexesArray = Array.from(eventIndexes);
</script>
<style>
.previous-event-card .np-card-content-title {
color: #0077B8;
font-size: 16px;
font-style: normal;
font-weight: 700;
line-height: normal;
margin-top:0;
}
.previous-event-card .np-button {
background-color: #0077B8;
color: #FFF;
font-size: 16px;
font-style: normal;
font-weight: 500;
line-height: normal;
}
.previous-event-card .np-card-container:hover .np-card-content-title {
color: #185A7D;
}
.previous-event-card .np-card-container:hover .np-button {
background-color: #185A7D;;
}
.previous-event-card .course-image-container {
width: auto;
overflow: hidden;
}
.previous-event-card .np-card-container:hover .np-card-image {
scale: 1.25;
transition: .5s ease all;
}
</style>

View File

@ -0,0 +1,121 @@
<div class="progress-widget">
<div class="progress-widget-flex-wrapper">
<div class="progress-item courses-progress">
{% assign completed_courses_count = 0 %}
{% for course in courses.enrolled %}
{% if course.progress == 100 %}
{% assign completed_courses_count = completed_courses_count | plus: 1 %}
{% endif %}
{% endfor %}
<div class="progress-header">Courses Completed</div>
<a href="/app/courses?category=not-started" class="progress-link">View Courses not started</a>
{%
include "progress_circle",
count: completed_courses_count,
total: courses.enrolled.size %}
</div>
<div class="progress-item courses-progress">
{% assign completed_lps_count = 0 %}
{% for learning_path in learning_paths.enrolled %}
{% if learning_path.progress == 100 %}
{% assign completed_lps_count = completed_lps_count | plus: 1 %}
{% endif %}
{% endfor %}
<div class="progress-header">Learning Paths Completed</div>
<a href="/app/learning_paths?category=completed" class="progress-link">View all Learning Paths</a>
{%
include "progress_circle",
count: completed_lps_count,
total: learning_paths.enrolled.size %}
</div>
</div>
</div>
<style>
.progress-widget {
margin-bottom: 32px;
}
.progress-widget .progress-item {
width: 100%;
margin-bottom: 32px;
}
.progress-widget .progress-header {
color: #000;
font-size: 20px;
font-weight: 400;
line-height: normal;
margin-bottom: 4px;
}
.progress-circle-wrapper {
display: inline-block;
position: relative;
}
.progress-circle-wrapper:before {
content: "";
background-color: #fff;
border-radius: 50%;
position: absolute;
width: 195px;
height: 195px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.progress-circle {
position: relative;
}
.progress-widget .progress-link {
color: #0077B8;
text-decoration: none;
font-size: 15px;
font-style: normal;
font-weight: 400;
line-height: normal;
margin-bottom: 16px;
display: inline-block;
}
.progress-widget .progress-link:hover {
color: #185A7D;
}
.progress-circle-big-text {
color: #002745;
font-size: 80px;
font-weight: 600;
line-height: normal;
}
.progress-circle-text {
color: #000;
text-align: center;
font-size: 23px;
font-style: normal;
font-weight: 300;
line-height: normal;
}
@media(min-width:500px) {
.progress-widget .progress-widget-flex-wrapper {
display: flex;
flex-direction: column;
}
.progress-widget .progress-item {
width: 50%;
}
}
@media(min-width: 1200px) {
.progress-widget .progress-widget-flex-wrapper {
flex-direction: row;
}
}
</style>

View File

@ -0,0 +1,138 @@
{% assign courses_by_progress = enrolled_courses | sort: "progress" %}
{% assign learning_paths_by_progress = enrolled_learning_paths | sort: "progress" %}
<div class="dashboard-title">RECENT ACTIVITY</div>
<div class="recent-activity-widget">
<table class="recent-activity-table" id='recentActivityTable'>
<tr>
<th>Name</th>
<th>Status</th>
</tr>
{% for course in courses_by_progress %}
{% if course.progress > 0 %}
<tr data-progress="{{course.progress}}">
<td width="70%" class="name-element"><a href="{% route course, id: course.id %}">{{course.name}}</a></td>
<td width="30%" class="progress-element">
<div>
{% if course.progress == 100 %}
<i class="far fa-check-circle"></i> <span>completed</span>
{% else %}
<i class="fas fa-spinner"></i> <span>in progress</span>
{% endif %}
</div>
</td>
</tr>
{% endif %}
{% endfor %}
{% for learning_path in learning_paths_by_progress %}
{% if learning_path.progress > 0 %}
<tr data-progress="{{learning_path.progress}}">
<td width="70%"><a class="name-element" href="{% route learning_path, id: learning_path.id %}">{{learning_path.name}}</a></td>
<td width="30%" class="progress-element">
<div>
{% if learning_path.progress == 100 %}
<i class="far fa-check-circle"></i> <span>completed</span>
{% else %}
<i class="fas fa-spinner"></i> <span>in progress</span>
{% endif %}
</div>
</td>
</tr>
{% endif %}
{% endfor %}
</table>
</div>
</div>
<style>
.progress-element div {
display: flex;
}
.progress-element span {
margin-left: 9px;
color: #000;
text-align: right;
font-size: 16px;
font-style: normal;
font-weight: 300;
line-height: normal;
}
.recent-activity-table th {
color: #FFF;
font-size: 15px;
font-style: normal;
font-weight: 400;
line-height: normal;
text-align: left;
padding: 6px 0 6px 12px;
}
.recent-activity-widget {
margin-bottom: 32px;
}
.recent-activity-widget table {
border-collapse: collapse;
width: 100%;
box-shadow: 0px 3px 2.5px 0px rgba(0, 0, 0, 0.42);
background-color:#fff;
border-bottom: 2px solid #185A7D;
}
.progress-element {
border-left: none !important;
}
.name-element {
border-right: none !important;
}
.recent-activity-widget td {
border: 1px solid #dddddd;
text-align: left;
padding: 12px;
border-bottom: 1px solid #185A7D;
}
.recent-activity-widget th {
color:#fff;
border-color: #185A7D;
background-color: #185A7D;
}
.name-element a,
.name-element a:visited {
color: #0077B8;
font-size: 16px;
font-style: normal;
font-weight: 400;
line-height: normal;
text-decoration-line: underline;
}
.name-element a:hover {
color: #185A7D;
}
</style>
<script>
const table = document.getElementById('recentActivityTable');
const tbody = table.querySelector('tbody'); // Select the tbody element
const rows = Array.from(tbody.querySelectorAll('tr'));
const sortedRows = rows
.map(row => ({ progress: parseInt(row.getAttribute('data-progress')), element: row }))
.sort((a, b) => a.progress - b.progress);
rows.forEach(row => tbody.removeChild(row));
sortedRows.forEach((sortedRow, index) => {
if (index < 6) {
tbody.appendChild(sortedRow.element)
}
});
</script>

View File

@ -0,0 +1,77 @@
<div class="row recent-courses-row">
<div class="col-xs-12">
<div class="recent-courses-flex-wrapper">
<div>
<div class="dashboard-title">COURSES: RECENTLY ADDED</div>
<div class="dashboard-subtitle">See what's new from Brighton Science</div>
</div>
<div class="recent-courses-link">
<a href="/app/courses" class="recent-courses-link">View all Courses</a>
</div>
</div>
</div>
<div class="col-xs-12">
<div class="row recent-courses-list">
{% for course in enrolled_courses %}
{% unless course.properties.course_publish_date == "MM/DD/YYYY" %}
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 recent-course np-hidden" data-date="{{course.properties.course_publish_date}}">
{% include "cards_course" with course %}
</div>
{% endunless %}
{% endfor %}
</div>
</div>
</div>
<script>
var indexes = document.querySelectorAll(".recent-course:not([data-date=''])");
var indexesArray = Array.from(indexes);
const sortByDate = arr => {
const dateSorter = (a, b) => {
return new Date(b.dataset.date).getTime() - new Date(a.dataset.date).getTime();
}
arr.sort(dateSorter);
};
sortByDate(indexesArray);
$(".recent-courses-list").empty()
for (let i = 0; i < indexesArray.length; i++) {
if (i < 4) {
document.querySelector(".recent-courses-list").appendChild(indexesArray[i])
}
}
$(".recent-course").removeClass("np-hidden")
</script>
<style>
.recent-courses-flex-wrapper {
margin:32px 0;
}
.recent-courses.link {
margin-bottom: 32px;
text-align: right;
}
.recent-courses-flex-wrapper .dashboard-title {
margin-bottom:4px;
}
@media (min-width:768px) {
.recent-courses-flex-wrapper {
display:flex;
justify-content:space-between;
align-items:flex-end;
margin:64px 0 32px ;
}
.recent-courses-row .np-card {
padding: 0 0 32px;
height:100%;
}
}
</style>

View File

@ -0,0 +1,206 @@
<div class="row recommended-courses-row">
<div class="col-xs-12">
<div class="recommended-courses-flex-wrapper">
<div>
<div class="dashboard-title">COURSES: RECOMMENDED</div>
<div class="dashboard-subtitle">Personalized list of courses just for you</div>
</div>
<div style="display: flex; align-items: row;">
<div class="recommended-courses-container">
<strong>Why am I seeing these?</strong>
<a href="/app/profile" class="recommended-courses-link">Review and update your interest profile</a>
</div>
<div class="recent-courses-link view-all-courses">
<a href="/app/courses" class="recent-courses-link">View all Courses</a>
</div>
</div>
</div>
</div>
<div class="col-xs-12">
<div class="row" id="recommended-courses-row">
{% assign focus_groups = "" %}
{% assign materials_groups = "" %}
{% assign cleaning_method_groups = "" %}
{% assign production_application_groups = "" %}
{% for group in current_person.groups %}
{% if group.name contains "Focus" %}
{% assign focus_groups = focus_groups | append: "," | append: group.name %}
{% endif %}
{% if group.name contains "Materials" %}
{% assign materials_groups = materials_groups | append: "," | append: group.name %}
{% endif %}
{% if group.name contains "Production Application" %}
{% assign production_application_groups = production_application_groups | append: "," | append: group.name %}
{% endif %}
{% if group.name contains "Cleaning Method" %}
{% assign cleaning_method_groups = cleaning_method_groups | append: "," | append: group.name %}
{% endif %}
{% endfor %}
<div class="col-xs-12 np-hidden" id="recommended-courses-zero-state">
{% capture message %}
Update your interest profile to gain recommended content
{% endcapture %}
{% include "courses_zero_state", message: message %}
</div>
</div>
</div>
</div>
<div id="unfilteredRecommendedCourses" style="display:none">
{% for course in enrolled_courses %}
{% if course.progress < 100 %}
{% assign course_categories_list = "" %}
{% for category in course.categories %}
{% assign course_categories_list = course_categories_list | append: category.name | append: "," %}
{% endfor %}
<div
class="recommended-course"
data-categories="{{course_categories_list}}"
data-id="{{course.id}}">
{% include "cards_course" with course %}
</div>
{% endif %}
{% endfor %}
</div>
<script>
$("document").ready(function() {
const allCourses = $(".recommended-course")
const focusGroups = "{{focus_groups}}"
const productionApplicationGroups = "{{production_application_groups}}"
const materialsGroups = "{{materials_groups}}"
const cleaningMethodGroups = "{{cleaning_method_groups}}"
const focusGroupsArray = focusGroups.split(",").filter(item => item !== "");
const productionApplicationGroupsArray = productionApplicationGroups.split(",").filter(item => item !== "");
const materialsGroupsArray = materialsGroups.split(",").filter(item => item !== "");
const cleaningMethodGroupsArray = cleaningMethodGroups.split(",").filter(item => item !== "");
let focusCourses = []
let productionApplicationsCourses = []
let materialsCourses = []
let cleaningMethodCourses = []
$(allCourses).each((index, course) => {
if (course.getAttribute("data-categories").includes("Focus-")) {
const categories = course.getAttribute("data-categories").split(",")
const focusCategories = categories.filter(category => category.includes('Focus-'));
if (focusGroups.includes(focusCategories[0])) {
focusCourses.push(course)
}
}
if (course.getAttribute("data-categories").includes("Production Applications-")) {
const categories = course.getAttribute("data-categories").split(",")
const productionApplicationsCategories = categories.filter(category => category.includes('Production Applications-'));
if (productionApplicationGroups.includes(productionApplicationsCategories[0])) {
productionApplicationsCourses.push(course)
}
}
if (course.getAttribute("data-categories").includes("Materials-")) {
const categories = course.getAttribute("data-categories").split(",")
const materialsCategories = categories.filter(category => category.includes('Materials-'));
if (materialsGroups.includes(materialsCategories[0])) {
materialsCourses.push(course)
}
}
if (course.getAttribute("data-categories").includes("Cleaning Method-")) {
const categories = course.getAttribute("data-categories").split(",")
const cleaningMethodCategories = categories.filter(category => category.includes('Cleaning Method-'));
if (cleaningMethodGroups.includes(cleaningMethodCategories[0])) {
cleaningMethodCourses.push(course)
}
}
})
console.log("Focus Courses: ", focusCourses)
let coursesToAppend = [];
for (let i = 0; i < 3; i++) {
if (productionApplicationsCourses.length > 0) {
coursesToAppend.push(productionApplicationsCourses.shift());
} else if (materialsCourses.length > 0) {
coursesToAppend.push(materialsCourses.shift());
} else if (cleaningMethodCourses.length > 0) {
coursesToAppend.push(cleaningMethodCourses.shift());
} else if (focusCourses.length > 0) {
coursesToAppend.push(focusCourses.shift());
} else {
break;
}
}
console.log("Recommended Courses to Append: ", coursesToAppend)
if (coursesToAppend.length > 0) {
for (let i = 0; i < coursesToAppend.length; i++) {
console.log(coursesToAppend[i].innerHTML)
$("#recommended-courses-row").append(`<div class="col-xs-12 col-sm-6 col-md-4">${
coursesToAppend[i].innerHTML
}</div>`)
}
} else {
$("#recommended-courses-zero-state").removeClass("np-hidden")
}
})
</script>
<style>
.recommended-courses-row {
margin-bottom: 32px;
margin-top: 86px;
position: relative;
}
.recommended-courses-flex-wrapper {
margin-bottom: 32px;
}
.recommended-courses.link {
margin-bottom: 32px;
text-align: right;
}
.recommended-courses-flex-wrapper .dashboard-title {
margin-bottom: 4px;
}
.recommended-courses-container {
display: flex;
flex-direction: column;
}
.view-all-courses {
display: flex;
align-items: flex-end;
margin-left: 100px;
}
.recommended-courses-flex-wrapper strong {
margin-bottom: 4px;
}
@media(min-width:768px) {
.recommended-courses-flex-wrapper {
display: flex;
justify-content: space-between;
align-items: flex-end;
}
.recommended-courses-row .np-card {
padding: 0 0 32px;
height: 100%;
}
}
</style>

View File

@ -0,0 +1,13 @@
{% comment %} <nav class="np-sub-navigation">
<div class="np-sub-navigation-content">
{% for link in navigations.sub_navigation %}
<div class="np-sub-navigation-content-item {{ link.active_class }}">
<a class="np-sub-navigation-content-item-link" href="{{ link.url }}">
<i class="{{ link.icon }} np-button-color np-sub-navigation-content-item-icon"></i>
{{ link.label }}
</a>
<div class="np-sub-navigation-content-item-bar np-button-background-color"></div>
</div>
{% endfor %}
</div>
</nav> {% endcomment %}

View File

@ -0,0 +1,198 @@
{% include "header" %}
{% include "course_version_outdated_alert", courses: courses.enrolled %}
{% include "sub_navigation" %}
<main class="np-main np-courses np-subpage-container np-max-width">
<div class="row row-with-thumbnails">
<div class="col-xs-12">
<div class="filters-container courses-filters">
<div class="filters-heading">APPLY FILTERS<i class="fa fa-chevron-down"></i>
</div>
<div class="filters-content">
<div class="filter-column status-column">
<div class="filter-column-title">STATUS</div>
<div class="filters-list">
<div class="filter-item status-filter">
<input
type="checkbox"
name="completed"
value="completed">
<label for="completed">Completed
<span></span>
</label>
</div>
<div class="filter-item status-filter">
<input
type="checkbox"
name="in-progress"
value="in-progress">
<label for="in-progress">In Progress
<span></span>
</label>
</div>
<div class="filter-item status-filter">
<input
type="checkbox"
name="in-progress"
value="not-started">
<label for="not-started">Not Started
<span></span>
</label>
</div>
</div>
</div>
<div class="filter-column categories-column">
<div class="filter-column-title">CATEGORY</div>
<div class="filters-list">
{% for category in categories.enrolled %}
<script>
console.log("{{category.name}}")
</script>
<div class="filter-item category-filter">
<input
type="checkbox"
name="{{category.name}}"
value="{{category.name}}">
<label for="{{category.name}}">{{ category.name }}
<span></span>
</label>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</div>
{% include "courses_index", class: "col-xs-12 col-sm-6 col-md-4 col-lg-3 course-column" %}
</main>
{% include "footer" %}
<script>
window.onload = () => {
let url = new URL(window.location.href);
let params = new URLSearchParams(url.search);
if (params.has('category')) {
let allParams = params.getAll('category')
allParams.forEach((param) => {
document.querySelector(`.filter-item input[value='${param}']`).click()
})
}
addCountToFilters()
addActiveNavigationClass()
}
$("input[type='checkbox']").change(function(e) {
filterCourses()
})
$("document").ready(function() {
document
.querySelector(".filters-heading")
.addEventListener("click", function() {
this.classList.toggle("active");
var panel = this.nextElementSibling;
if (panel.style.maxHeight) {
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + 32 + "px";
}
})
document
.querySelector(".filters-heading")
.click()
})
function filterCourses() {
// hide all courses
$(".course-column").hide()
// get all checked filters
let selectedStatusFilters = []
let selectedCategoryFilters = []
$(".status-column input[type='checkbox']:checked").each((index, filter) => {
selectedStatusFilters.push(filter.value)
})
$(".categories-column input[type='checkbox']:checked").each((index, filter) => {
selectedCategoryFilters.push(filter.value)
})
// loop over courses and get filters
$(".course-column").each((index, course) => {
const courseStatus = $(course).data("progress")
const courseCategory = $(course).data("category")
if (selectedStatusFilters.length && selectedCategoryFilters.length) {
if ($.inArray(courseCategory, selectedCategoryFilters) !== -1 && $.inArray(courseStatus, selectedStatusFilters) !== -1) {
$(course).show()
}
} else if (! selectedStatusFilters.length && selectedCategoryFilters.length) {
if ($.inArray(courseCategory, selectedCategoryFilters) !== -1) {
$(course).show()
}
} else if (selectedStatusFilters.length && ! selectedCategoryFilters.length) {
if ($.inArray(courseStatus, selectedStatusFilters) !== -1) {
$(course).show()
}
} else {
$(course).show()
}
})
}
function addCountToFilters() {
const allFiltersFromCourses = []
$(".course-column").each((index, course) => {
if ($(course).attr("data-progress")) {
allFiltersFromCourses.push($(course).attr("data-progress"))
}
if ($(course).attr("data-category")) {
allFiltersFromCourses.push($(course).attr("data-category"))
}
})
$(".filter-item").each((index, filter) => {
const filterValue = $(filter).find("input").val()
const filterCount = getFilterCount(filterValue, allFiltersFromCourses)
if ($(filter).hasClass("category-filter")) {
if (filterCount == 0) {
$(filter).hide()
} else {
$(filter).find("label > span").text(`(${filterCount})`)
}
} else {
$(filter).find("label > span").text(`(${filterCount})`)
}
})
}
const getFilterCount = (value, array) => {
let count = 0;
array.forEach(filter => {
if (filter == value) {
count++;
}
});
return count
}
function addActiveNavigationClass() {
$('a[href="/app/courses"]').addClass("np-sub-navigation-content-item-active").removeClass("np-sub-navigation-content-item-inactive")
}
</script>

View File

@ -0,0 +1,3 @@
<script>
window.location.replace("/app")
</script>

View File

@ -0,0 +1,183 @@
{% assign enrolled_courses = courses.enrolled %}
{% assign enrolled_learning_paths = learning_paths.enrolled %}
{% include "header" %}
{% include "sub_navigation" %}
{% include "homepage_section_progress_activity" %}
<main class="np-main np-dashboard np-subpage-container np-max-width">
<div class="row">
{% if features.training_events? %}
<div class="col-xs-12 col-sm-6 col-md-7">
<div class="dashboard-title">UPCOMING EVENTS</div>
<div class="np-dashboard-resources row upcoming-events">
{% if training_events.available.any? %}
{% for training_event in training_events.available limit: 2 %}
<div class="col-xs-12 col-md-6">
{% include "cards_training_event" with training_event %}
</div>
{% endfor %}
{% else %}
{% include "training_events_zero_state" %}
{% endif %}
</div>
</div>
{% endif %}
<div class="col-xs-12 col-sm-6 col-md-5">
{% include "section_previous_events", enrolled_courses: enrolled_courses %}
</div>
</div>
{% if features.learning_paths? %}
{% include "section_learning_paths" %}
{% endif %}
<div class="background-logo">
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="657"
height="844"
viewBox="0 0 657 844">
<defs>
<clipPath id="clip-BRT_Background">
<rect width="657" height="844" />
</clipPath>
</defs>
<g id="BRT_Background" clip-path="url(#clip-BRT_Background)">
<g
id="Group_535"
data-name="Group 535"
transform="translate(-762.559 -1560.226)">
<g
id="Group_109"
data-name="Group 109"
transform="translate(762.559 1867.316)"
opacity="0.05">
<path
id="Path_61"
data-name="Path 61"
d="M1406.748,820.66H1578V667.283H1406.748a153.283,153.283,0,0,1-132.81-76.691,153.354,153.354,0,0,0,132.81,230.068Z"
transform="translate(-1253.371 -360.524)"
fill="#6fcfeb" />
<path
id="Path_62"
data-name="Path 62"
d="M1406.748,703.671H1578V550.288H1406.748a153.353,153.353,0,0,0-132.81,230.068A153.278,153.278,0,0,1,1406.748,703.671Z"
transform="translate(-1253.371 -550.288)"
fill="#4e738a" />
</g>
<g
id="Group_124"
data-name="Group 124"
transform="translate(762.559 1944.09)"
opacity="0.05">
<path
id="Path_61-2"
data-name="Path 61"
d="M1406.748,820.66H1578V667.283H1406.748a153.283,153.283,0,0,1-132.81-76.691,153.354,153.354,0,0,0,132.81,230.068Z"
transform="translate(-1253.371 -360.524)"
fill="#6fcfeb" />
<path
id="Path_62-2"
data-name="Path 62"
d="M1406.748,703.671H1578V550.288H1406.748a153.353,153.353,0,0,0-132.81,230.068A153.278,153.278,0,0,1,1406.748,703.671Z"
transform="translate(-1253.371 -550.288)"
fill="#4e738a" />
</g>
<g
id="Group_122"
data-name="Group 122"
transform="translate(1411.828 2020.362) rotate(180)"
opacity="0.05">
<path
id="Path_61-3"
data-name="Path 61"
d="M153.377,230.068H324.632V76.691H153.377A153.283,153.283,0,0,1,20.567,0a153.354,153.354,0,0,0,132.81,230.068Z"
transform="translate(0 230.068)"
fill="#6fcfeb" />
<path
id="Path_62-3"
data-name="Path 62"
d="M153.377,153.383H324.632V0H153.377A153.354,153.354,0,0,0,20.567,230.068,153.279,153.279,0,0,1,153.377,153.383Z"
transform="translate(0 0)"
fill="#4e738a" />
</g>
<g
id="Group_123"
data-name="Group 123"
transform="translate(1411.828 2097.135) rotate(180)"
opacity="0.05">
<path
id="Path_61-4"
data-name="Path 61"
d="M153.377,230.068H324.632V76.691H153.377A153.283,153.283,0,0,1,20.567,0a153.354,153.354,0,0,0,132.81,230.068Z"
transform="translate(0 230.068)"
fill="#6fcfeb" />
<path
id="Path_62-4"
data-name="Path 62"
d="M153.377,153.383H324.632V0H153.377A153.354,153.354,0,0,0,20.567,230.068,153.279,153.279,0,0,1,153.377,153.383Z"
transform="translate(0 0)"
fill="#4e738a" />
</g>
</g>
</g>
</svg>
</div>
{% include "section_recommended_courses", enrolled_courses: enrolled_courses %}
{% include "section_recently_added_courses", enrolled_courses: enrolled_courses %}
</main>
{% include "footer" %}
<style>
.np-dashboard-resources .np-card {
padding-left: 0;
padding-right: 16px;
height: 100%;
}
.np-dashboard-resources .np-card-content-vertical {
justify-content:flex-end;
}
.previous-events,
.upcoming-events {
margin-bottom: 32px;
}
.dashboard-subtitle {
color: #000;
font-size: 20px;
font-style: normal;
font-weight: 400;
line-height: normal;
}
.recommended-courses-link,
.recent-courses-link {
color: #0077B8;
font-size: 15px;
font-style: normal;
font-weight: 400;
line-height: normal;
text-decoration-line: underline;
}
.recommended-courses-link:hover,
.recent-courses-link:hover {
color: #185A7D;
}
.background-logo {
position: relative;
max-height: 0;
width: 100%;
}
.background-logo svg {
position: absolute;
right: 100px;
top: 200px;
}
</style>

View File

@ -0,0 +1,179 @@
{% include "header" %}
{% include "sub_navigation" %}
<main class="np-main np-learning-paths np-subpage-container np-max-width">
<div class="np-learning-paths-main">
<div class="filters-container Lps-filters">
<div class="filters-heading">APPLY FILTERS<i class="fa fa-chevron-down"></i></div>
<div class="filters-content">
<div class="filter-column status-column">
<div class="filter-column-title">STATUS</div>
<div class="filters-list">
<div class="filter-item status-filter">
<input type="checkbox" name="completed" value="completed">
<label for="completed">Completed <span></span></label>
</div>
<div class="filter-item status-filter">
<input type="checkbox" name="in-progress" value="in-progress">
<label for="in-progress">In Progress <span></span></label>
</div>
</div>
</div>
<div class="filter-column categories-column">
<div class="filter-column-title">CATEGORY</div>
<div class="filters-list">
{% for category in categories.enrolled %}
<div class="filter-item category-filter">
<input type="checkbox" name="{{category.name}}" value="{{category.name}}">
<label for="{{category.name}}">{{category.name}} <span></span></label>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
{% assign learning_paths_alphabetical = learning_paths.available | sort: "name" %}
{% include "learning_paths_index", items: learning_paths_alphabetical %}
</div>
</main>
{% include "footer" %}
<style>
.np-card-content-vertical {
padding-bottom: 10px;
}
@media (min-width:768px) {
.learning-path-card .np-card-content-title {
font-size: 16px;
margin-top: 10px;
margin-bottom: 0px;
}
.np-learning-path-image {
align-self: unset !important;
object-fit: cover !important;
width: 100% !important;
min-height: unset !important;
}
.learning-path-image-container {
max-width: 265px;
display: flex;
align-items: center;
}
}
</style>
<script>
window.onload = () => {
let url = new URL(window.location.href);
let params = new URLSearchParams(url.search);
if (params.has('category')) {
let allParams = params.getAll('category')
allParams.forEach((param) => {
document.querySelector(`.filter-item input[value='${param}']`).click()
})
}
addCountToFilters()
}
$("input[type='checkbox']").change(function(e) {
filterLps()
})
$("document").ready(function() {
document.querySelector(".filters-heading").addEventListener("click", function() {
this.classList.toggle("active");
var panel = this.nextElementSibling;
if (panel.style.maxHeight) {
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + 32 + "px";
}
})
document.querySelector(".filters-heading").click()
})
function filterLps() {
// hide all Lps
$(".lp-column").hide()
// get all checked filters
let selectedStatusFilters = []
let selectedCategoryFilters = []
$(".status-column input[type='checkbox']:checked").each((index, filter) => {
selectedStatusFilters.push(filter.value)
})
$(".categories-column input[type='checkbox']:checked").each((index, filter) => {
selectedCategoryFilters.push(filter.value)
})
//loop over Lps and get filters
$(".lp-column").each((index, lp) => {
const lpStatus = $(lp).data("progress")
const courseCategory = $(lp).data("category")
if (selectedStatusFilters.length && selectedCategoryFilters.length) {
if($.inArray(courseCategory, selectedCategoryFilters) !== -1 && $.inArray(lpStatus, selectedStatusFilters) !== -1) {
$(lp).show()
}
} else if (!selectedStatusFilters.length && selectedCategoryFilters.length) {
if($.inArray(courseCategory, selectedCategoryFilters) !== -1) {
$(lp).show()
}
} else if (selectedStatusFilters.length && !selectedCategoryFilters.length) {
if($.inArray(lpStatus, selectedStatusFilters) !== -1) {
$(lp).show()
}
} else {
$(lp).show()
}
})
}
function addCountToFilters() {
const allFiltersFromLps = []
$(".lp-column").each((index, course) => {
if ($(course).attr("data-progress")) {
allFiltersFromLps.push($(course).attr("data-progress"))
}
if ($(course).attr("data-category")) {
allFiltersFromLps.push($(course).attr("data-category"))
}
})
$(".filter-item").each((index, filter) => {
const filterValue = $(filter).find("input").val()
const filterCount = getFilterCount(filterValue, allFiltersFromLps)
if ($(filter).hasClass("category-filter")) {
if (filterCount == 0) {
$(filter).hide()
} else {
$(filter).find("label > span").text(`(${filterCount})`)
}
} else {
$(filter).find("label > span").text(`(${filterCount})`)
}
})
}
const getFilterCount = (value, array) => {
let count = 0;
array.forEach(filter => {
if (filter == value) { count++; }
});
return count
}
</script>

View File

@ -0,0 +1,53 @@
{% include "header" %}
<div class="your-profile-container">
<div class="your-profile np-max-width">
your profile
</div>
</div>
<main class="np-main np-dashboard np-subpage-container np-max-width">
<div width="100%" height="100%" style="margin-bottom: 46px;">
<iframe src="https://customer.brighton-science.com/profile-update" frameborder="0" width="100%" height="1400px" id="profile-update-frame"></iframe>
</div>
</main>
{% include "footer" %}
<style>
.your-profile-container {
width: 100%;
background-color: #F8FBFF;
}
.your-profile {
color: #185A7D;
font-size: 50px;
font-style: normal;
font-weight: 400;
line-height: normal;
text-transform: uppercase;
padding: 23px 5% 12px;
}
.section-title {
color: #185A7D;
font-size: 34px;
font-style: normal;
font-weight: 400;
line-height: normal;
text-transform: uppercase;
}
.embed-wrapper {
margin-bottom:48px;
}
</style>
<script>
document.getElementById("profile-update-frame").name = Date();
document.addEventListener("DOMContentLoaded", () => {
addActiveNavigationClass()
})
function addActiveNavigationClass() {
$('.np-header-avatar-button').addClass("np-sub-navigation-content-item-active")
}
</script>

View File

@ -0,0 +1,434 @@
/*
Put your custom overlay styles in here
You can use your northpass color palette in this file
{{ color_palette.button_font_color }}
{{ color_palette.button_color }}
{{ color_palette.button_hover_color }}
{{ color_palette.header_font_color }}
{{ color_palette.header_font_hover_color }}
{{ color_palette.header_color }}
*/
body {
font-family: 'Heebo', "Roboto", sans-serif;
background-color:#fff;
}
.np-dashboard,
.np-learning-paths {
background-color:#fff;
}
.np-button {
border-radius:0;
height:30px;
}
a:visited {
color:#0077B8;
}
.np-card-container,
.np-card-progress-bar-container,
.np-card-progress-bar {
border-radius:0;
}
.dashboard-title {
font-size: 24px;
font-style: normal;
font-weight: 400;
line-height: normal;
text-transform: uppercase;
margin-bottom: 16px;
color: #185A7D;
}
.learning-path-card .np-card-content {
height:100%;
justify-content:unset;
}
.np-card-stack-level-1,
.np-card-stack-level-2 {
border-radius:0;
}
.np-flex {
flex-wrap: wrap;
}
.np-card-content-progress i {
margin-right:6px;
}
.np-card-content-progress i.not-started-circle {
width: 22px;
height: 22px;
display: inline-block;
border-radius: 50%;
border: 2.7px dashed;
position: relative;
top: 3px;
}
@media (min-width:768px) {
.dashboard-title {
font-size: 28px;
}
.learning-path-card.np-card {
display:flex;
height: 100%;
}
.learning-path-card .np-card-container {
width:100%;
}
.learning-path-card .np-learning-path {
height:100%;
}
.learning-path-card .np-card-content-title {
flex: 1;
font-weight: 500;
font-size: 24px;
}
}
.course-card .np-card-container,
.previous-event-card .np-card-container {
box-shadow:none;
}
.course-card .np-card-content-footer,
.previous-event-card .np-card-content-footer {
margin-top:0;
display:block;
}
.course-card .course-category {
position: absolute;
width: 100%;
opacity: 0.9;
height: 40px;
display: flex;
align-items: center;
text-transform:uppercase;
color: #fff;
padding: 6px 26px;
font-size: 16px;
font-style: normal;
font-weight: 500;
line-height: 27px;
z-index: 2;
background-color: {{ color_palette.button_color }};
}
.course-card .np-card-content,
.previous-event-card .np-card-content {
padding: 20px 0 0;
}
.course-card .np-card-content-progress,
.previous-event-card .np-card-content-progress {
margin-bottom:12px;
font-size:14px;
text-transform:lowercase;
margin-top:0;
}
.np-card.previous-event-card {
padding: 0 0 32px;
}
.previous-event-card .np-card-cotnent-title {
font-size:16px;
line-height:normal;
}
/* FILTERS */
.filters-container {
margin-bottom:64px;
background-color: #F8FBFF;
}
.filters-heading {
background-color: #185A7D;
color:#fff;
padding: 8px 25px;
font-size: 20px;
font-weight: 600;
line-height: normal;
letter-spacing: 1px;
text-transform: uppercase;
display: flex;
justify-content: space-between;
align-items: center;
cursor:pointer;
}
.filters-heading.active i {
transform:rotate(180deg);
}
.filters-content {
max-height: 0;
overflow: hidden;
transition: max-height 0.2s ease-out;
}
.filter-column {
padding: 20px 32px;
}
.filter-column.categories-column {
flex:1;
}
.filter-column-title {
color: #185A7D;
font-size: 21px;
font-style: normal;
font-weight: 500;
line-height: normal;
letter-spacing: 2.1px;
text-transform: uppercase;
margin-bottom:16px;
}
.filter-item label {
color: #000;
font-size: 16px;
font-style: normal;
font-weight: 400;
line-height: 40px;
text-transform: uppercase;
margin-left: 10px;
}
@media (min-width:768px) {
.filters-content {
display:flex;
}
.categories-column .filters-list {
display: flex;
flex-direction: row;
max-width: 550px;
flex-wrap: wrap;
}
.filter-item {
margin-right: 24px;
}
.categories-column .filters-list .filter-item {
width:calc(50% - 24px);
}
}
.fa-spinner {
color: #EAAF1E;
font-size: 22px;
font-style: normal;
font-weight: 400;
line-height: normal;
}
.fa-check-circle {
color: #16C466;
font-size: 22px;
font-style: normal;
font-weight: 400;
line-height: normal;
}
.learning-path-card .np-card-container {
border: 1px solid #185A7D;
-webkit-box-shadow: 9px 9px 0px -1px rgba(0, 119, 184, 1);
-moz-box-shadow: 9px 9px 0px -1px rgba(0, 119, 184, 1);
box-shadow: 9px 9px 0px -1px rgba(0, 119, 184, 1);
}
.learning-path-card .np-card-content-title,
.course-card .np-card-content-title {
color: #0077B8;
font-size: 18px;
font-style: normal;
font-weight: 700;
line-height: normal;
}
.course-card .np-card-content-title {
font-size: 16px;
margin-top:0;
}
.learning-path-card .np-card-content-card {
color: #0077B8;
font-size: 28px;
font-style: normal;
font-weight: 700;
line-height: normal;
}
.learning-path-card .np-card-content-progress span,
.course-card .np-card-content-progress span {
color: #000;
font-size: 16px;
font-style: normal;
font-weight: 400;
line-height: normal;
}
.learning-path-card .np-card-progress-bar {
background-color: #EAAF1E;
}
.learning-path-card .np-card-progress-bar-container {
border: 1px solid #707070;
background-color: #FFFFFF;
height: 12px;
}
.learning-path-card .np-button {
padding: 3px 16px;
color: #FFF;
font-size: 14px;
font-style: normal;
font-weight: 400;
line-height: normal;
}
.learning-path-card .np-learning-path-items-count {
color: #185A7D;
font-size: 14px;
font-style: normal;
font-weight: 400;
line-height: normal;
}
.case-studies {
background-color: #256180 !important;
}
.surface-research {
background-color: #6ABCD5CC !important;
}
.internal-training {
background-color: #10BE60!important;
}
.webinars-and-events {
background-color: #EEA153 !important;
}
.course-card .np-card-content-progress {
display: flex;
flex-direction: row;
align-items: center;
}
.course-card .np-card-content-progress i.not-started-circle {
top: 0;
}
.course-card .np-card-content-footer .np-button {
color: #FFF;
font-size: 16px;
font-style: normal;
font-weight: 500;
line-height: normal;
padding: 6px 18px;
background-color: #0077B8;
margin-top: 8px;
}
input[type=checkbox] {
position: relative;
cursor: pointer;
}
input[type=checkbox]:before {
content: "";
display: block;
position: absolute;
width: 16px;
height: 16px;
top: -4px;
left: 0;
border: 2px solid #0077B8;
border-radius: 3px;
background-color: white;
}
input[type=checkbox]:checked:after {
content: "";
display: block;
width: 4px;
height: 9px;
border: solid #0077B8;
border-width: 0 2px 2px 0;
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
position: absolute;
top: -1px;
left: 7px;
}
.np-learning-path:hover .np-card-content-title,
.course-card .np-card-container:hover .np-card-content-title {
color: #185A7D;
}
.course-card .np-card-container:hover .np-card-content-footer .np-button,
.np-learning-path:hover .np-button {
background-color: #185A7D;
}
/*.np-learning-path:hover {
-webkit-box-shadow: 3px 3px 0px -1px #185A7D;
-moz-box-shadow: 3px 3px 0px -1px #185A7D;
box-shadow: 3px 3px 0px -1px #185A7D;
transition: .5s ease all;
}*/
.learning-path-card:hover .np-card-container {
-webkit-box-shadow: 3px 3px 0px -1px #185A7D;
-moz-box-shadow: 3px 3px 0px -1px #185A7D;
box-shadow: 3px 3px 0px -1px #185A7D;
transition: .5s all;
}
.np-learning-path:hover .np-card-image,
.course-card .np-card-container:hover .np-card-image {
scale: 1.25;
transition: .5s ease all;
}
.learning-path-image-container {
width: auto;
overflow: hidden;
}
.course-image-container {
width: auto;
overflow: hidden;
}
@media screen and (min-width: 768px) {
.np-learning-path-image {
object-fit: cover;
width: 100%;
}
.learning-path-image-container {
max-width: 345px;
}
}

View File

@ -0,0 +1,40 @@
<div class="np-card">
<div class="np-card-container">
{% if course.ribbon %}
<div class="np-card-ribbon">
{{ course.ribbon }}
</div>
{% endif %}
<img
class="np-card-image"
alt="{{ course.name }}"
src="{{ course.image_url }}"
>
<div class="np-card-content np-card-content-vertical np-card-padding">
<h3 class="np-card-content-title">
{{ course.name }}
</h3>
<div class="np-card-content-subtitle">
{{ course.instructor_names }}
</div>
<div class="course-description">
{{ course.short_description }}
</div>
<div class="np-card-content-footer">
<div class="np-card-content-progress np-button-color">
{% t shared.progress, count: course.progress %}
</div>
{% capture course_path %}{% route course, id: course.id %}{% endcapture %}
{% if course.has_to_restart? %}
{% include "course_version_outdated_popup", path: course_path %}
{% endif %}
<div class="button-wrapper">
<a class="np-button np-button-wide" href="{{ course_path }}">
{% t shared.view %}
</a>
<div class="back-button"></div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,73 @@
<div class="np-card np-no-horizontal-padding">
<div class="np-card-container">
<div class="np-learning-path">
<img
alt="{{ learning_path.name }}"
class="np-card-image np-learning-path-image"
src="{{ learning_path.image_url }}"
/>
<div class="np-card-text-wrapper">
<div class="np-hidden-desktop np-card-header">
<i class="np-card-header-icon far fa-road"></i>
<div class="np-card-header-type">{% t shared.learning_path.title %}</div>
<div class="np-hidden-desktop np-card-header-items-count">
{{ learning_path.items.count }} {% t .items %}
</div>
</div>
<div class="np-hidden-mobile np-card-header">
<div class="np-card-header-type">{% t shared.learning_path.title %}</div>
<i class="np-card-header-icon far fa-road"></i>
</div>
<div class="np-card-content np-card-padding np-card-content-vertical">
<h3 class="np-card-content-title">
{{ learning_path.name }}
</h3>
<div class="np-card-content-subtitle">
{{ learning_path.instructor_names }}
</div>
<div class="np-hidden-mobile np-card-content-description">
{{ learning_path.description }}
</div>
<div class="np-hidden-mobile np-card-content-progress
np-button-color">
{% t shared.progress, count: learning_path.progress %}
</div>
<div class="np-hidden-mobile np-card-progress-bar-container">
<div
style="width: {{ learning_path.progress }}%"
class="np-button-background-color np-card-progress-bar">
</div>
</div>
<div class="np-card-content-footer">
<div class="np-hidden-desktop np-card-content-progress
np-button-color">
{% t shared.progress, count: learning_path.progress %}
</div>
<div class="button-wrapper">
<a class="np-button" href="{% route learning_path, id: learning_path.id %}">
{% t shared.view %}
</a>
<div class="back-button"></div>
</div>
<span class="np-hidden-mobile np-learning-path-items">
<i class="np-button-color np-learning-path-items-icon far fa-graduation-cap"></i>
<span class="np-learning-path-items-count">
{{ learning_path.items.count }} {% t .items %}
</span>
</span>
</div>
</div>
</div>
</div>
</div>
<div class="np-card-stack">
<div class="np-card-stack-level-1"></div>
<div class="np-card-stack-level-2"></div>
</div>
</div>

View File

@ -0,0 +1,48 @@
<div class="np-card">
<div class="np-card-container">
<div class="np-card-content-training-event">
<h3 class="np-card-content-title">
{{ training_event.title }}
</h3>
<div class="np-card-content-subtitle">
{% t shared.event_types, key: training_event.event_type %}
</div>
<div class="np-card-training-session">
<span class="np-card-content-label">
{% t .next_session %}
</span>
<div class="np-card-training-session-date">
<div class="np-button-background-color np-card-training-session-date-bar"></div>
<div class="np-card-training-session-date-day">
{{ training_event.sessions.first.day }}
</div>
<div>
<div class="np-card-training-session-date-month">
{{ training_event.sessions.first.month }}
</div>
<div class="np-card-training-session-date-year">
{{ training_event.sessions.first.year }}
</div>
</div>
</div>
</div>
</div>
<div class="np-card-content np-card-content-vertical np-card-padding">
<div class="np-card-training-sessions">
<i class="np-card-training-sessions-icon far fa-calendar-star"></i>
<span class="np-card-training-sessions-label">
{% t .sessions, count: training_event.sessions.size %}
</span>
<div class="button-wrapper">
<a
class="np-button np-button-wide"
href="{% route training_session, id: training_event.sessions.first.id %}"
>
{% t shared.view %}
</a>
<div class="back-button"></div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,34 @@
<div class="courses-filter">
<div class="courses-filter-title">
Categories
</div>
<div class="courses-filter-item courses-filter-item-active" filter-category="ALL" onclick="filterCourses(this);">
All
</div>
{% for category in categories.in_catalog %}
<div class="courses-filter-item" filter-category="{{ category.id }}" onclick="filterCourses(this);">
{{ category.name }}
</div>
{% endfor %}
</div>
<script>
function filterCourses(element) {
let categoryId = element.getAttribute('filter-category');
document.querySelector('.courses-filter-item-active').classList.remove('courses-filter-item-active');
element.classList.add('courses-filter-item-active');
if (categoryId === 'ALL') {
document.querySelectorAll('.filter-hidden').forEach(x => {
x.classList.remove('filter-hidden');
});
} else {
document.querySelectorAll('[course-category]').forEach(x => {
if (x.getAttribute('course-category').includes(categoryId)) {
x.classList.remove('filter-hidden');
} else {
x.classList.add('filter-hidden');
}
});
}
}
</script>

View File

@ -0,0 +1,20 @@
<div class="courses-list np-hidden">
<div class="np-resource-title courses-list-title">
Library
</div>
<div class="row courses-wrapper">
<div class="courses-filter-wrapper col-12 col-md-3">
{% include "courses_filter" %}
</div>
<div class="courses-wrapper row row-with-thumbnails col-12 col-md-9">
{% for course in courses.in_catalog %}
<div class="col-xs-12 col-sm-6 col-xl-4 np-stretch-content role-hidden" course-category="{{ course.categories | map: 'id' | join: ' ' }}" course-role="{{ course.properties.role }}">
{% include "cards_course" %}
</div>
{% endfor %}
<div class="zero-state np-hidden">
{% include "courses_zero_state", message: "No courses matching criteria" %}
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,9 @@
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
{% styles default %}
{% styles colors %}
{% styles custom %}

View File

@ -0,0 +1,178 @@
<header class="np-header np-header-color">
<div class="np-header-content">
<div class="np-hidden-desktop np-header-mobile-menu-nav">
{% if current_person.signed_in? %}
<button
data-toggle-class="np-hidden"
class="np-header-mobile-menu-nav-button fal fa-times np-hidden np-header-font-color"
data-toggle-target=".np-header-mobile-avatar-menu,
.np-header-mobile-menu-content, .np-main, .np-footer"
></button>
<button
data-test="open-mobile-menu"
data-toggle-class="np-hidden"
class="np-header-mobile-menu-nav-button np-header-mobile-avatar-menu"
data-toggle-target=".fa-times, .np-header-mobile-menu-content, .np-main, .np-footer"
>
<img
alt="{{ current_person.name }}"
class="np-header-avatar-image"
src="{{ current_person.avatar_url }}"
/>
</button>
{% endif %}
</div>
{% if current_school.logo_url %}
<h1 class="np-header-logo">
<a href="{% route home %}">
<img
alt="{{ current_school.name }}"
class="np-header-logo-image"
src="{{ current_school.logo_url }}"
/>
</a>
</h1>
{% else %}
<a href="{% route home %}" class="np-school-name np-header-font-color">
{{ current_school.name }}
</a>
{% endif %}
<div class="np-hidden-mobile np-header-desktop-nav">
<ul class="np-header-desktop-nav-list">
{% for website_navigation in navigations.header_navigations_external %}
<li class= "np-header-desktop-nav-item">
<a
href="{{ website_navigation.path }}"
class="np-header-desktop-nav-link np-header-font-color"
>
{{ website_navigation.name }}
</a>
</li>
{% endfor %}
</ul>
</div>
{% if current_person.signed_in? %}
<div class="np-hidden-mobile np-header-search np-header-search-expanded">
<form action="{% route search %}" method="get" data-test="desktop-search">
<input
aria-label="{% t .search %}"
class="np-header-search-input np-header-font-background-color"
type="text"
name="q"
placeholder="{% t .search %}"
/>
<i class="np-header-search-icon far fa-search"></i>
</form>
</div>
<div class="np-hidden-mobile np-header-avatar">
<button
class="np-header-avatar-button"
data-test="open-desktop-menu"
data-toggle-class-on-target="np-hidden"
data-toggle-target=".np-header-avatar-tooltip"
data-toggle-outside
>
<img
alt="{{ current_person.name }}"
class="np-header-avatar-image"
src="{{ current_person.avatar_url }}"
>
</button>
<div class="np-header-avatar-tooltip np-hidden" role="tooltip">
<span class="np-header-avatar-tooltip-arrow-up"></span>
<div class="np-header-avatar-tooltip-learner">
<div class="np-header-avatar-tooltip-learner-name">
{{ current_person.name }}
</div>
<div class="np-header-avatar-tooltip-learner-email">
{{ current_person.email }}
</div>
</div>
<nav class="np-header-avatar-tooltip-navigation">
{% unless current_school.sso_active? %}
<a
class="np-header-avatar-tooltip-navigation-link"
href="{% route account %}"
>
{% t .profile_settings %}
</a>
{% endunless %}
<a
class="np-header-avatar-tooltip-navigation-link np-danger"
href="{% route logout %}"
>
{% t .sign_out %}
</a>
</nav>
</div>
</div>
{% else %}
<a
class="np-header-sign-in np-header-desktop-nav-link np-header-font-color"
aria-label="{% t shared.sign_in %}"
href="{% route login %}"
>
{% t shared.sign_in %}
</div>
{% endif %}
</div>
</header>
<div class="np-hidden-desktop">
<div class="np-header-mobile-menu-content np-hidden">
{% if current_person.signed_in? %}
<img
alt="{{ current_person.name }}"
class="np-header-mobile-menu-content-avatar"
src="{{ current_person.avatar_url }}"
/>
<div class="np-header-mobile-menu-content-name">
{{ current_person.name }}
</div>
{% endif %}
<div class="np-header-mobile-menu-content-nav">
<form
class="np-header-search"
data-test="mobile-search"
method="get"
action="{% route search %}"
>
<input
aria-label="{% t .search %}"
class="np-header-search-input"
type="text"
name="q"
placeholder="{% t .search %}"
/>
<i class="np-header-search-icon far fa-search"></i>
</form>
{% for website_navigation in navigations.header_navigations %}
<a
href="{{ website_navigation.path }}"
class="np-header-mobile-menu-content-button"
>
{{ website_navigation.name }}
</a>
{% endfor %}
<div class="np-header-mobile-menu-content-line"></div>
{% unless current_school.sso_active? %}
<a
class="np-header-mobile-menu-content-button"
href="{% route account %}"
>
{% t .profile_settings %}
</a>
{% endunless %}
<a
class="np-header-mobile-menu-content-button np-danger"
href="{% route logout %}"
>
{% t .sign_out %}
</a>
</div>
</div>
</div>
{% include "messages" %}

View File

@ -0,0 +1,83 @@
<div class="topics-wrapper col-xs-12">
<h3 class="topics-title">
Popular Topics
</h3>
<div class="topics row">
<div class="topic-wrapper col-12 col-sm-6 col-md-4 col-lg-3">
<a class="topic" href="https://support.cayuse.com/hc/en-us/categories/360002631894-Animal-Oversight">
Animal Oversight
</a>
</div>
<div class="topic-wrapper col-12 col-sm-6 col-md-4 col-lg-3">
<a class="topic" href="https://support.cayuse.com/hc/en-us/categories/1500001762282-Connect-Conference-Community">
Cayuse Community
</a>
</div>
<div class="topic-wrapper col-12 col-sm-6 col-md-4 col-lg-3">
<a class="topic" href="https://support.cayuse.com/hc/en-us/categories/9886295600147-Cayuse-Modernization">
Cayuse Modernization
</a>
</div>
<div class="topic-wrapper col-12 col-sm-6 col-md-4 col-lg-3">
<a class="topic" href="https://support.cayuse.com/hc/en-us/categories/360000137107-Fund-Manager-Effort-and-Grants">
Fund Manager, Effort, and Grants
</a>
</div>
<div class="topic-wrapper col-12 col-sm-6 col-md-4 col-lg-3">
<a class="topic" href="https://support.cayuse.com/hc/en-us/categories/115001977467-Human-Ethics">
Human Ethics
</a>
</div>
<div class="topic-wrapper col-12 col-sm-6 col-md-4 col-lg-3">
<a class="topic" href="https://support.cayuse.com/hc/en-us/categories/360003816254-Integrations-and-APIs">
Integrations & APIs
</a>
</div>
<div class="topic-wrapper col-12 col-sm-6 col-md-4 col-lg-3">
<a class="topic" href="https://support.cayuse.com/hc/en-us/categories/360001518894-Outside-Interests">
Outside Interests
</a>
</div>
<div class="topic-wrapper col-12 col-sm-6 col-md-4 col-lg-3">
<a class="topic" href="https://support.cayuse.com/hc/en-us/categories/115002015648-Platform-and-Admin">
Platform & Admin
</a>
</div>
<div class="topic-wrapper col-12 col-sm-6 col-md-4 col-lg-3">
<a class="topic" href="https://support.cayuse.com/hc/en-us/categories/360001581913-Sponsored-Projects-4-0">
Sponsored Projects 4.0
</a>
</div>
<div class="topic-wrapper col-12 col-sm-6 col-md-4 col-lg-3">
<a class="topic" href="https://support.cayuse.com/hc/en-us/categories/360002101954-Vivarium-Operations-and-Vet-Care">
Vivarium Operations & Vet Care
</a>
</div>
</div>
</div>
<style>
.topics-title {
text-align: center;
margin-bottom: 30px;
font-weight: 600;
}
.topic-wrapper {
display: flex;
margin-bottom: 10px;
}
.topic {
width: 100%;
height: 100%;
text-align: center;
border: 2px solid #253272;
padding: 8px 0;
color: #253272;
border-radius: 6px;
font-weight: 600;
}
.topic:hover {
color: white;
background: rgba(37,50,114, 0.9);
}
</style>

View File

@ -0,0 +1,106 @@
<div class="role-select container">
<div class="role-select-title">
Library
</div>
<div class="role-select-list row">
<a class="role-select-item col-12 col-md-6 col-xl-3" href="#administrators">
<div class="role-select-item-container">
<img class="role-select-image" src="https://cdn.northpass.io/Cayuse/admin.jpg">
<div class="role-select-item-text">
<div class="role-select-item-name">
Administrators
</div>
</div>
</div>
</a>
<a class="role-select-item col-12 col-md-6 col-xl-3" href="#researchers">
<div class="role-select-item-container">
<img class="role-select-image" src="https://cdn.northpass.io/Cayuse/researcher.jpg">
<div class="role-select-item-text">
<div class="role-select-item-name">
Researchers
</div>
</div>
</div>
</a>
<a class="role-select-item col-12 col-md-6 col-xl-3" href="#it-managers">
<div class="role-select-item-container">
<img class="role-select-image" src="https://cdn.northpass.io/Cayuse/it_manager.jpg">
<div class="role-select-item-text">
<div class="role-select-item-name">
IT Managers
</div>
</div>
</div>
</a>
<a class="role-select-item col-12 col-md-6 col-xl-3" href="#staff">
<div class="role-select-item-container">
<img class="role-select-image" src="https://cdn.northpass.io/Cayuse/staff.jpg">
<div class="role-select-item-text">
<div class="role-select-item-name">
Staff
</div>
</div>
</div>
</a>
</div>
</div>
<script>
addEventListener("hashchange", () => {
showCourses(location.hash.replace('#', ''));
});
addEventListener('DOMContentLoaded', () => {
showCourses(location.hash.replace('#', ''));
})
const roleDescriptions = {
'administrators': {
name: 'Courses for Administrators',
},
'researchers': {
name: 'Courses for Researchers',
},
'it-managers': {
name: 'Courses for IT Managers',
},
'staff': {
name: 'Courses for Staff',
}
}
function showCourses(name) {
let coursesParent = document.querySelector('.courses-wrapper')
let roleSelectElement = document.querySelector('.role-select');
if (!name) {
if (roleSelectElement.classList.contains('np-hidden')) {
roleSelectElement.classList.remove('np-hidden');
document.querySelector('.courses-list').classList.add('np-hidden');
}
} else if (roleDescriptions[name]) {
coursesParent.querySelectorAll('[course-role]').forEach(x => {
if (x.getAttribute('course-role') === name) {
x.classList.remove('role-hidden');
} else {
x.classList.add('role-hidden');
}
});
document.querySelectorAll('[filter-category]:not([filter-category="ALL"])').forEach( x => {
if (coursesParent.querySelector(`[course-category*="${x.getAttribute('filter-category')}"][course-role="${name}"]`)) {
x.classList.remove('role-hidden');
} else {
x.classList.add('role-hidden');
}
});
document.querySelector('.courses-list-title').innerText = roleDescriptions[name].name;
if (!roleSelectElement.classList.contains('np-hidden')) {
roleSelectElement.classList.add('np-hidden');
document.querySelector('.courses-list').classList.remove('np-hidden');
}
}
}
</script>

View File

@ -0,0 +1,25 @@
<nav class="np-sub-navigation np-hidden-desktop">
<div class="np-sub-navigation-content">
{% for link in navigations.sub_navigation %}
{% unless link.label == 'Catalog' %}
{% if link.label == 'Home' %}
<div class="np-sub-navigation-content-item {{ link.active_class }}">
<a class="np-sub-navigation-content-item-link" href="{{ link.url }}">
<i class="{{ link.icon }} np-button-color np-sub-navigation-content-item-icon"></i>
Library
</a>
<div class="np-sub-navigation-content-item-bar np-button-background-color"></div>
</div>
{% else %}
<div class="np-sub-navigation-content-item {{ link.active_class }}">
<a class="np-sub-navigation-content-item-link" href="{{ link.url }}">
<i class="{{ link.icon }} np-button-color np-sub-navigation-content-item-icon"></i>
{{ link.label }}
</a>
<div class="np-sub-navigation-content-item-bar np-button-background-color"></div>
</div>
{% endif %}
{% endunless %}
{% endfor %}
</div>
</nav>

View File

@ -0,0 +1,59 @@
{% include "header" %}
{% include "course_version_outdated_alert", courses: courses.enrolled %}
{% include "sub_navigation" %}
<main class="np-main np-courses np-subpage-container np-max-width">
{% include "role_select" %}
{% include 'courses_with_filter' %}
</main>
{% include "footer" %}
<style>
.courses-filter {
margin-bottom: 20px;
}
.courses-filter-title {
font-size: 22px;
font-weight: 500;
margin-bottom: 10px;
}
.courses-filter-item {
cursor: pointer;
padding: 5px 0;
}
.courses-filter-item-active {
font-weight: 600;
cursor: auto;
}
.role-select-title {
font-size: 30px;
font-weight: 600;
margin-bottom: 20px;
}
.role-select-item-container {
padding: 20px 30px;
display: flex;
align-items: center;
text-align: center;
border: 1px solid darkblue;
border-radius: 8px;
flex-direction: column;
height: 100%;
}
.role-select-item-name {
font-size: 20px;
font-weight: 500;
margin-bottom: 10px;
}
.role-select-item {
margin-bottom: 20px;
}
.role-select-image {
width: 100%;
}
.role-select-item-text {
margin-top: 10px;
}
.role-hidden, .filter-hidden {
display: none !important;
}
</style>

View File

@ -0,0 +1,30 @@
{% include "header" %}
{% include "course_version_outdated_alert", courses: courses.enrolled %}
{% include "sub_navigation" %}
<main class="np-main np-dashboard np-subpage-container np-max-width">
<div class="row np-flex-center">
<div class="col-xs-12 col-sm-8">
{% if features.learning_paths? %}
<div class="np-dashboard-resources-title">
{% t shared.learning_paths %}
</div>
{% include "learning_paths_index", items: learning_paths.enrolled %}
{% endif %}
<div class="np-dashboard-resources-title">
{% t shared.course_vocabulary.plural, key: current_school.course_vocabulary %}
</div>
{% include "courses_index", class: "col-xs-12 col-sm-6 np-stretch-content" %}
</div>
{% if features.training_events? %}
<div class="np-grid-spacing col-xs-12 col-sm-4">
<div class="np-dashboard-resources-title">
{% t .upcoming_events %}
</div>
{% include "training_events_dashboard" %}
</div>
{% endif %}
{% include 'popular_topics' %}
</div>
</main>
{% include "footer" %}

View File

@ -0,0 +1,55 @@
<script>
window.location.href = '/app/courses'
</script>
{%- comment -%} {% include "header" %}
{% include "course_version_outdated_alert", courses: courses.featured %}
<main class="np-main np-homepage">
<div class="np-homepage-hero">
<img class="np-homepage-hero-image"
src="{{ homepage.artwork_url }}"
alt="{{ homepage.headline }}"
/>
<div class="np-homepage-hero-content">
<div class="np-homepage-headline np-header-font-color">
{{ homepage.headline }}
</div>
<div class="np-homepage-subheadline np-header-font-color">
{{ homepage.subheadline }}
</div>
<a class="np-homepage-hero-cta np-button" href="{% route catalog %}">
{% t .discover %}
</a>
</div>
</div>
{% include "sub_navigation" %}
<div class="np-homepage-featured np-max-width">
<div class="np-homepage-featured-text">
<div class="np-homepage-headline">
{{ homepage.featured_courses_headline }}
</div>
<div class="np-homepage-subheadline">
{{ homepage.featured_courses_subheadline }}
</div>
</div>
{% if courses.featured.any? %}
<div class="np-homepage-featured-courses row">
{% for course in courses.featured %}
<div class="col-xs-12 col-md-6 col-lg-4 np-stretch-content">
{% include "cards_course" with course %}
</div>
{% endfor %}
</div>
{% else %}
<div class="np-homepage-featured-empty">
<div class="np-zero-state-text">
{% t .empty, key: current_school.course_vocabulary %}
</div>
<img
class="np-zero-state-courses"
alt="{% t .empty, key: current_school.course_vocabulary %}"
/>
</div>
{% endif %}
</div>
</main>
{% include "footer" %} {%- endcomment -%}

View File

@ -0,0 +1,50 @@
/*
Put your custom overlay styles in here
You can use your northpass color palette in this file
{{ color_palette.button_font_color }}
{{ color_palette.button_color }}
{{ color_palette.button_hover_color }}
{{ color_palette.header_font_color }}
{{ color_palette.header_font_hover_color }}
{{ color_palette.header_color }}
*/
a, a:hover, a:focus, a:active {
text-decoration: none;
color: inherit;
}
.course-description {
margin-top: 10px;
}
@media screen and (min-width: 768px) and (max-width: 950px){
.np-card-content-footer {
flex-direction: column;
align-items: center;
gap: 20px;
}
}
.button-wrapper {
position: relative;
}
.back-button {
position: absolute !important;
background: #2e3e8f;
opacity: 0.8;
width: 100%;
height: 100%;
top: 4px;
left: 4px;
border-radius: 4px;
z-index: -1;
}
.np-button:hover {
color: white;
}
.np-card-content-progress {
font-size: 1rem;
}
.np-header-desktop-nav-list {
margin-bottom: 0;
}

View File

@ -0,0 +1,6 @@
{% styles default %}
{% styles colors %}
{% styles custom %}
<style>
@import url('https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@100&display=swap');
</style>

Some files were not shown because too many files have changed in this diff Show More