Repository: PSMRI/TM-UI
Pull request #57: fix: Made necessary changes for build to pass
Author: login: Zapper9982
Created: 2025-04-09T05:13:42Z | Merged: 2025-04-09T17:39:04Z

## 📋 Description

JIRA ID: 

**GitHub Issue:** Fixes [PSMRI/AMRIT#51](https://github.com/PSMRI/AMRIT/issues/51)


Changes Made : 


- Updated the submodule to the latest commit.  


- **GitHub Actions: Build on Pull Request**  
  - Updated `.github/workflows/build-on-pull-request.yml` to properly handle submodules during the build.  
- **GitHub Actions: Package Workflow**  
  - Replaced deprecated  versions  in `.github/workflows/`. upgrade all to latets versions .

- **Consistent Build Handling:**  
    -- environment is first touched , and then the the command are run.
    - `build-ci`  
    - `build-prod`  
    - `build-dev`  
    - `build-test` 

- **Removed deprecated and unused nodemodules:**  
     - removed `node-sass`
     - removed `ng2-smart-table`
 

---

## ✅ Type of Change

- [x] 🐞 **Bug fix** (non-breaking change which resolves an issue)
- [ ] ✨ **New feature** (non-breaking change which adds functionality)
- [ ] 🔥 **Breaking change** (fix or feature that would cause existing functionality to not work as expected)
- [ ] 🛠 **Refactor** (change that is neither a fix nor a new feature)
- [x] ⚙️ **Config change** (configuration file or build script updates)
- [ ] 📚 **Documentation** (updates to docs or readme)
- [ ] 🧪 **Tests** (adding new or updating existing tests)
- [ ] 🎨 **UI/UX** (changes that affect the user interface)
- [ ] 🚀 **Performance** (improves performance)
- [ ] 🧹 **Chore** (miscellaneous changes that don't modify src or test files)

---

## Screenshots 

<img width="838" alt="Screenshot 2025-04-09 at 9 08 55 AM" src="https://github.com/user-attachments/assets/d1a124d0-482e-4a7f-a0d1-494c427a3dde" />



<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **Chores**
  - Updated automation workflows to improve build stability and reliability.
  - Streamlined dependency installation by removing unused packages.
  - Enhanced build commands to ensure necessary configuration files are available.
  - Expanded environment configuration options for greater flexibility.
  - Added new entries to `.gitignore` to prevent tracking of specific files.
  - Updated ESLint configuration to improve code quality and enforce best practices.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->


Diff:
diff --git a/.eslintrc.json b/.eslintrc.json
index 519c295..b50855a 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -35,6 +35,7 @@
         "@typescript-eslint/no-explicit-any": 0,
         "@typescript-eslint/no-empty-function": 0,
         "@typescript-eslint/no-unused-vars": 0,
+        "@angular-eslint/template/click-events-have-key-events": 0,
         "eqeqeq": 1
       }
     },
@@ -55,6 +56,22 @@
           }
         ]
       }
+    },
+    {
+      "files": ["*.js", "*.jsx"],
+      "env": {
+         "node": true
+      },
+      "extends": ["eslint:recommended"],
+      "parserOptions": {
+        "ecmaVersion": 2020,
+        "sourceType": "module"
+      },
+      "rules": {
+        "no-unused-vars": "warn",
+        "no-console": "error",
+        "eqeqeq": ["error", "always"]
+      }
     }
   ]
 }
diff --git a/.github/workflows/build-on-pull-request.yml b/.github/workflows/build-on-pull-request.yml
index dc2862b..72ebc8b 100644
--- a/.github/workflows/build-on-pull-request.yml
+++ b/.github/workflows/build-on-pull-request.yml
@@ -8,7 +8,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Checkout code
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
         with:
           ref: ${{ github.event.pull_request.head.ref }}
           repository: ${{ github.event.pull_request.head.repo.full_name }}
@@ -19,13 +19,13 @@ jobs:
         run: git submodule update --init --recursive
 
       - name: Setup JDK 17
-        uses: actions/setup-java@v2
+        uses: actions/setup-java@v4
         with:
           java-version: 17
           distribution: 'adopt'
 
       - name: Set up Node.js
-        uses: actions/setup-node@v2
+        uses: actions/setup-node@v4
         with:
           node-version: 18
 
@@ -34,8 +34,6 @@ jobs:
           npm config set legacy-peer-deps true
           npm install -g @angular/cli
           npm install typescript@5.1.3 --save-dev
-          npm install ng2-smart-table@1.2.1
-          npm install node-sass
           npm install --force
-          npm run build
+          npm run build-ci
 
diff --git a/.github/workflows/package-prod.yml b/.github/workflows/package-prod.yml
deleted file mode 100644
index 075ab0f..0000000
--- a/.github/workflows/package-prod.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-name: Package Prod
-on:
-  push:
-    branches: [ "master"]
-
-jobs:
-  package:
-    runs-on: ubuntu-latest
-    permissions:
-      actions: read
-      contents: read
-      security-events: write
-
-    strategy:
-      fail-fast: false
-    steps:
-
-    - name: Checkout code
-      uses: actions/checkout@v3
-
-
-    - name: Set up Java
-      uses: actions/setup-java@v3
-      with:
-          java-version: '17'
-          distribution: 'adopt'
-
-
-    - name: Set up Node.js
-      uses: actions/setup-node@v2
-      with:
-          node-version: 18
-
-    - name: Build with NPM and  Create WAR file 
-      run: |
-            npm config set legacy-peer-deps true
-            npm install -g @angular/cli
-            npm install -g grunt-cli
-            npm install typescript@5.1.3 --save-dev
-            npm install ng2-smart-table@1.2.1
-            npm install node-sass --force
-            npm install --force
-            ng build --configuration production
-
-    - name: Upload WAR file as artifact
-      uses: actions/upload-artifact@v2
-      with:
-        name: TM-UI
-        path: dist/tm-ui/tm-ui.war
diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml
index e85ae14..aad860c 100644
--- a/.github/workflows/package.yml
+++ b/.github/workflows/package.yml
@@ -16,7 +16,7 @@ jobs:
     steps:
 
     - name: Checkout code
-      uses: actions/checkout@v3
+      uses: actions/checkout@v4
       with:
         submodules: true  # Include submodules
         fetch-depth: 0    # Ensure the full history is fetched
@@ -25,13 +25,13 @@ jobs:
       run: git submodule update --init --recursive
 
     - name: Set up Java
-      uses: actions/setup-java@v3
+      uses: actions/setup-java@v4
       with:
           java-version: '17'
           distribution: 'adopt'
 
     - name: Set up Node.js
-      uses: actions/setup-node@v2
+      uses: actions/setup-node@v4
       with:
           node-version: 18
 
@@ -40,16 +40,14 @@ jobs:
             npm config set legacy-peer-deps true
             npm install -g @angular/cli
             npm install typescript@5.1.3 --save-dev
-            npm install ng2-smart-table@1.2.1
-            npm install node-sass
             npm install --force
-            npm run build
+            npm run build-ci
 
     - name: Create WAR file
       run: jar -cvf tm-ui.war -C dist .
 
     - name: Upload WAR file as artifact
-      uses: actions/upload-artifact@v2
+      uses: actions/upload-artifact@v4
       with:
         name: TM-UI
-        path: tm-ui.war 
+        path: dist/tm-ui/tm-ui.war
diff --git a/.gitignore b/.gitignore
index 56d63f8..0315a91 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,3 +43,4 @@ testem.log
 Thumbs.db
 
 /src/environments/environment.ts
+/src/environments/environment.ci.ts
\ No newline at end of file
diff --git a/angular.json b/angular.json
index a5c1e60..d7886c2 100644
--- a/angular.json
+++ b/angular.json
@@ -50,7 +50,13 @@
                 }
               ],
               "outputHashing": "all",
-              "optimization": true
+              "optimization": true,
+              "fileReplacements": [
+                {
+                  "replace": "src/environments/environment.ts",
+                  "with": "src/environments/environment.prod.ts"
+                }
+              ]
             },
             "development": {
               "buildOptimizer": false,
diff --git a/package-lock.json b/package-lock.json
index 66dc009..c420a4f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4866,16 +4866,6 @@
         "url": "https://opencollective.com/unts"
       }
     },
-    "node_modules/@popperjs/core": {
-      "version": "2.11.8",
-      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
-      "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
-      "peer": true,
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/popperjs"
-      }
-    },
     "node_modules/@schematics/angular": {
       "version": "16.2.11",
       "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.11.tgz",
@@ -18963,8 +18953,7 @@
       "version": "7.21.0-placeholder-for-preset-env.2",
       "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
       "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "@babel/plugin-proposal-unicode-property-regex": {
       "version": "7.18.6",
@@ -21070,8 +21059,7 @@
       "version": "16.2.11",
       "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.11.tgz",
       "integrity": "sha512-4ndXJ4s94ZsryVGSDk/waIDrUqXqdGWftoOEn81Zu+nkL9ncI/G1fNUlSJ5OqeKmMLxMFouoy+BuJfvT+gEgnQ==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "@nodelib/fs.scandir": {
       "version": "2.1.5",
@@ -21379,12 +21367,6 @@
       "integrity": "sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==",
       "dev": true
     },
-    "@popperjs/core": {
-      "version": "2.11.8",
-      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
-      "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
-      "peer": true
-    },
     "@schematics/angular": {
       "version": "16.2.11",
       "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.11.tgz",
@@ -21942,8 +21924,7 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz",
       "integrity": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "@webassemblyjs/ast": {
       "version": "1.11.6",
@@ -22254,15 +22235,13 @@
       "version": "1.9.0",
       "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
       "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "acorn-jsx": {
       "version": "5.3.2",
       "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
       "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "acorn-walk": {
       "version": "7.2.0",
@@ -22748,8 +22727,7 @@
     "bootstrap": {
       "version": "5.3.3",
       "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
-      "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==",
-      "requires": {}
+      "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg=="
     },
     "brace-expansion": {
       "version": "1.1.11",
@@ -23926,8 +23904,7 @@
           "version": "8.11.0",
           "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
           "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
-          "dev": true,
-          "requires": {}
+          "dev": true
         }
       }
     },
@@ -24297,8 +24274,7 @@
       "version": "9.1.0",
       "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
       "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "eslint-plugin-prettier": {
       "version": "5.1.3",
@@ -25366,8 +25342,7 @@
       "version": "5.1.0",
       "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
       "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "ieee754": {
       "version": "1.2.1",
@@ -26182,8 +26157,7 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz",
       "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "karma-source-map-support": {
       "version": "1.4.0",
@@ -28544,8 +28518,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
       "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "postcss-modules-local-by-default": {
       "version": "4.0.3",
@@ -29690,8 +29663,7 @@
           "version": "8.11.0",
           "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
           "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
-          "dev": true,
-          "requires": {}
+          "dev": true
         }
       }
     },
@@ -30115,8 +30087,7 @@
           "version": "3.5.2",
           "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
           "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-          "dev": true,
-          "requires": {}
+          "dev": true
         },
         "json-schema-traverse": {
           "version": "0.4.1",
@@ -30248,8 +30219,7 @@
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
       "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "tsconfig-paths": {
       "version": "4.2.0",
@@ -30745,8 +30715,7 @@
           "version": "3.5.2",
           "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
           "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-          "dev": true,
-          "requires": {}
+          "dev": true
         },
         "json-schema-traverse": {
           "version": "0.4.1",
@@ -30835,8 +30804,7 @@
           "version": "8.16.0",
           "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
           "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
-          "dev": true,
-          "requires": {}
+          "dev": true
         }
       }
     },
@@ -31015,8 +30983,7 @@
       "version": "7.5.9",
       "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
       "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "xml-name-validator": {
       "version": "3.0.0",
diff --git a/package.json b/package.json
index 6a9932a..023afb7 100644
--- a/package.json
+++ b/package.json
@@ -10,10 +10,10 @@
     "lint": "ng lint",
     "lint:fix": "ng lint --fix",
     "prepare": "husky install",
-    "build-dev": "node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --configuration=development --aot",
-    "build-prod": "node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --configuration=production --aot",
-    "build-ci": "chmod +x ./scripts/*.js && ./scripts/ci-prebuild.js && node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --configuration=ci --aot",
-    "build-test": "node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --configuration=test --aot"
+    "build-dev": "(test -f src/environments/environment.ts || touch src/environments/environment.ts) && node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --configuration=development --aot",
+    "build-prod": "(test -f src/environments/environment.ts || touch src/environments/environment.ts) && node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --configuration=production --aot",
+    "build-ci": "(test -f src/environments/environment.ts || touch src/environments/environment.ts) && chmod +x ./scripts/*.js && ./scripts/ci-prebuild.js && node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --configuration=ci --aot",
+    "build-test": "(test -f src/environments/environment.ts || touch src/environments/environment.ts) && node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --configuration=test --aot"
   },
   "lint-staged": {
     "src/**/*.{ts,html}": [
diff --git a/scripts/ci-prebuild.js b/scripts/ci-prebuild.js
old mode 100644
new mode 100755
index 386bc01..6db4363
--- a/scripts/ci-prebuild.js
+++ b/scripts/ci-prebuild.js
@@ -50,6 +50,8 @@ const defaultEnvValues = {
   FHIR_API_BASE: '',
   SCHEDULER_UI_BASE: '',
   INVENTORY_UI_BASE: '',
+  IDENTITY_API_BASE:'',
+  SESSION_STORAGE_ENC_KEY:'',
 };
 
 // Generate output data


Reviews:
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (2)</summary><blockquote>

<details>
<summary>.github/workflows/package.yml (1)</summary><blockquote>

`30-30`: **Fix YAML indentation**

There's an indentation issue on this line. The indentation should be 8 spaces, but it currently has 10 spaces.

```diff
-          java-version: '17'
+        java-version: '17'
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[warning] 30-30: wrong indentation: expected 8 but found 10

(indentation)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/package-prod.yml (1)</summary><blockquote>

`23-27`: **Java Setup Action Upgrade & YAML Indentation Warning**

The upgrade to `actions/setup-java@v4` is correct. However, the static analysis tool points out an indentation issue on line 25 where 10 spaces are used instead of the expected 8. Please adjust the indentation within the `with:` block to meet YAML standards. For example:

```diff
-          java-version: '17'
-          distribution: 'adopt'
+        java-version: '17'
+        distribution: 'adopt'
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[warning] 25-25: wrong indentation: expected 8 but found 10

(indentation)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between fde9f47b7efcee3b5eb7168eb1d7c571e61450d7 and ccc36cb7723cf97e25f50f41c93cad18c88129f9.

</details>

<details>
<summary>⛔ Files ignored due to path filters (1)</summary>

* `package-lock.json` is excluded by `!**/package-lock.json`

</details>

<details>
<summary>📒 Files selected for processing (6)</summary>

* `.github/workflows/build-on-pull-request.yml` (3 hunks)
* `.github/workflows/package-prod.yml` (2 hunks)
* `.github/workflows/package.yml` (3 hunks)
* `.gitignore` (1 hunks)
* `package.json` (1 hunks)
* `scripts/ci-prebuild.js` (1 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/package.yml</summary>

[warning] 30-30: wrong indentation: expected 8 but found 10

(indentation)

</details>
<details>
<summary>.github/workflows/package-prod.yml</summary>

[warning] 25-25: wrong indentation: expected 8 but found 10

(indentation)

</details>

</details>

</details>

<details>
<summary>🔇 Additional comments (9)</summary><blockquote>

<details>
<summary>.gitignore (1)</summary>

`46-46`: **Properly ignoring the CI environment file**

Adding the CI environment file to .gitignore is appropriate since environment files typically contain configuration that may vary between environments and shouldn't be committed to version control.

</details>
<details>
<summary>scripts/ci-prebuild.js (1)</summary>

`53-54`: **Added required configuration keys for CI environment**

The addition of `IDENTITY_API_BASE` and `SESSION_STORAGE_ENC_KEY` to the default environment values is appropriate. These keys will be populated from environment variables during CI execution, with empty strings as fallbacks.

</details>
<details>
<summary>.github/workflows/package.yml (1)</summary>

`19-19`: **Updated GitHub Actions to latest versions**

Upgrading the GitHub Actions to their latest versions is a good practice to ensure security and compatibility. The changes from v3/v2 to v4 for checkout, setup-java, setup-node, and upload-artifact are appropriate.



Also applies to: 28-28, 34-34, 50-50

</details>
<details>
<summary>.github/workflows/build-on-pull-request.yml (2)</summary>

`11-11`: **Updated GitHub Actions to latest versions**

Upgrading the GitHub Actions to their latest versions is a good practice to ensure security and compatibility. The changes from v3/v2 to v4 for checkout, setup-java, and setup-node are appropriate.



Also applies to: 22-22, 28-28

---

`38-38`: **Switch to CI-specific build command**

Changing to `npm run build-ci` instead of the previous build command is appropriate for standardizing the CI build process. This aligns with the other changes in the PR that add CI environment configuration.

</details>
<details>
<summary>.github/workflows/package-prod.yml (3)</summary>

`19-19`: **Checkout Action Upgrade is Correct**

The update to use `actions/checkout@v4` is appropriate and aligns with the latest GitHub Actions practices.

---

`30-33`: **Node.js Setup Action Upgrade is Verified**

The configuration for `actions/setup-node@v4` with `node-version: 18` is correctly implemented.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[warning] 32-32: wrong indentation: expected 8 but found 10

(indentation)

</details>

</details>

---

`44-44`: **Artifact Upload Action Upgrade is Correct**

Switching to `actions/upload-artifact@v4` is properly carried out.

</details>
<details>
<summary>package.json (1)</summary>

`13-16`: **Environment File Check in Build Scripts is a Smart Safeguard**

The new build scripts (`build-dev`, `build-prod`, `build-ci`, and `build-test`) now start by checking for the existence of `src/environments/environment.ts` and create it if absent. This is a good measure to prevent build errors related to missing configuration files.  
Just ensure that this approach is acceptable in your target environments (e.g., if you need cross-platform compatibility, consider verifying the behavior on non-Unix systems).

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-09T05:16:49Z
user: login: drtechie
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-09T09:05:29Z
user: login: Zapper9982
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T09:14:07Z
user: login: drtechie
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-09T09:22:09Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (1)</summary><blockquote>

<details>
<summary>.eslintrc.json (1)</summary><blockquote>

`38-39`: **Accessibility Impact: Disabling Click-Events Keyboard Enforcement**  
Disabling `"@angular-eslint/template/click-events-have-key-events"` (set to 0) relaxes an important accessibility best-practice by not enforcing that clickable elements also support key events. Please confirm that this decision is intentional and that any potential accessibility trade-offs have been properly documented.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 46efd67fa0857ee5ce03a7fcf300270978a0d2cb and e170daeadcfa58940eaff9f141f375f85be79a16.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.eslintrc.json` (2 hunks)

</details>

<details>
<summary>🔇 Additional comments (1)</summary><blockquote>

<details>
<summary>.eslintrc.json (1)</summary>

`60-74`: **New Override for JavaScript/JSX Files**  
The new override block for files matching `*.js` and `*.jsx` is well structured—it sets the Node environment, uses ECMAScript 2020, and specifies rules that warn on unused variables, flag console usage as an error, and enforce strict equality via `"eqeqeq": ["error", "always"]`. One note: the TypeScript override uses `"eqeqeq": 1` (a warning) while this block enforces it as an error. Please verify that this discrepancy is intentional and aligns with your team's code quality standards across different file types.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-09T09:59:07Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (1)</summary><blockquote>

<details>
<summary>.github/workflows/package.yml (1)</summary><blockquote>

`46-54`: **Update Upload Artifact Action and Artifact Path**  
The upload step now uses `actions/upload-artifact@v4`, and the artifact path has been updated to `dist/scheduler-ui/scheduler-ui.war`. However, note that the preceding "Create WAR file" step (line 47) still generates `tm-ui.war`. Please verify if this change is intentional or if the WAR file creation step also needs to be updated to output the file at `dist/scheduler-ui/scheduler-ui.war`.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between eff88c641c7c1a1fdba5ce5594ed5eef939a8d21 and 2f64c035c8063f4abf68b0e5ba136c86a3dece3d.

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `.github/workflows/package-prod.yml` (0 hunks)
* `.github/workflows/package.yml` (3 hunks)

</details>

<details>
<summary>💤 Files with no reviewable changes (1)</summary>

* .github/workflows/package-prod.yml

</details>

<details>
<summary>🔇 Additional comments (4)</summary><blockquote>

<details>
<summary>.github/workflows/package.yml (4)</summary>

`18-23`: **Update Checkout Action to v4**  
The checkout step now uses `actions/checkout@v4`, which will incorporate the latest improvements and bug fixes. Please verify that the new version’s behavior (e.g., handling of submodules) meets your repository needs.

---

`27-32`: **Update Setup Java Action to v4**  
The Java environment setup has been upgraded to `actions/setup-java@v4`. Confirm that running with Java version 17 (and using the 'adopt' distribution) remains compatible with your build requirements.

---

`33-37`: **Update Setup Node.js Action to v4**  
The Node.js setup has been updated to `actions/setup-node@v4`, ensuring that the build benefits from the latest improvements. Ensure that the specified Node.js version (18) aligns with your application’s runtime environment and CI expectations.

---

`38-45`: **Change Build Command to `npm run build-ci`**  
The build step now executes `npm run build-ci`, targeting a CI-specific build process. This change should help with standardized builds in the CI environment. Please verify that this new command produces the correct build artifacts and that any differences from the local build process are intentional.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-09T15:06:27Z
user: login: drtechie
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-09T17:12:47Z
user: login: Zapper9982
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T17:15:50Z
user: login: drtechie
state: APPROVED
author_association: MEMBER
submitted_at: 2025-04-09T17:38:58Z

Review comments:
diff_hunk: @@ -50,15 +50,27 @@
                 }
               ],
               "outputHashing": "all",
-              "optimization": true
+              "optimization": true,
+              "fileReplacements": [
+                {
+                  "replace": "src/environments/environment.ts",
+                  "with": "src/environments/environment.prod.ts"
+                }
+              ]
             },
             "development": {
               "buildOptimizer": false,
               "optimization": false,
               "vendorChunk": true,
               "extractLicenses": false,
               "sourceMap": true,
-              "namedChunks": true
+              "namedChunks": true,
+              "fileReplacements": [
+                {
+                  "replace": "src/environments/environment.ts",
+                  "with": "src/environments/environment.dev.ts"
path: angular.json
user: login: drtechie
body: Hey @Zapper9982 is this required?
For local development, we will use environment.ts itself
created_at: 2025-04-09T09:05:29Z
author_association: MEMBER
diff_hunk: @@ -50,15 +50,27 @@
                 }
               ],
               "outputHashing": "all",
-              "optimization": true
+              "optimization": true,
+              "fileReplacements": [
+                {
+                  "replace": "src/environments/environment.ts",
+                  "with": "src/environments/environment.prod.ts"
+                }
+              ]
             },
             "development": {
               "buildOptimizer": false,
               "optimization": false,
               "vendorChunk": true,
               "extractLicenses": false,
               "sourceMap": true,
-              "namedChunks": true
+              "namedChunks": true,
+              "fileReplacements": [
+                {
+                  "replace": "src/environments/environment.ts",
+                  "with": "src/environments/environment.dev.ts"
path: angular.json
user: login: Zapper9982
body: @drtechie  , I dont think so its required , but building with filereplacement felt like a standard so added it !  will remove it if not required!
created_at: 2025-04-09T09:14:07Z
author_association: CONTRIBUTOR
diff_hunk: @@ -50,15 +50,27 @@
                 }
               ],
               "outputHashing": "all",
-              "optimization": true
+              "optimization": true,
+              "fileReplacements": [
+                {
+                  "replace": "src/environments/environment.ts",
+                  "with": "src/environments/environment.prod.ts"
+                }
+              ]
             },
             "development": {
               "buildOptimizer": false,
               "optimization": false,
               "vendorChunk": true,
               "extractLicenses": false,
               "sourceMap": true,
-              "namedChunks": true
+              "namedChunks": true,
+              "fileReplacements": [
+                {
+                  "replace": "src/environments/environment.ts",
+                  "with": "src/environments/environment.dev.ts"
path: angular.json
user: login: drtechie
body: So in local dev environment, we are asking devs to copy local.ts to environment.ts
https://piramal-swasthya.gitbook.io/amrit/developer-guide/development-environment-setup/installation-instructions/for-ui-repositories

In local development environment, I think there is no replacement required.
created_at: 2025-04-09T09:22:09Z
author_association: MEMBER
diff_hunk: @@ -40,16 +40,14 @@ jobs:
             npm config set legacy-peer-deps true
             npm install -g @angular/cli
             npm install typescript@5.1.3 --save-dev
-            npm install ng2-smart-table@1.2.1
-            npm install node-sass
             npm install --force
-            npm run build
+            npm run build-ci
 
     - name: Create WAR file
       run: jar -cvf tm-ui.war -C dist .
 
     - name: Upload WAR file as artifact
-      uses: actions/upload-artifact@v2
+      uses: actions/upload-artifact@v4
       with:
         name: TM-UI
-        path: tm-ui.war 
+        path: dist/scheduler-ui/scheduler-ui.war
path: .github/workflows/package.yml
user: login: drtechie
body: @Zapper9982 typo? I think you meant to add TM-UI?
created_at: 2025-04-09T17:12:47Z
author_association: MEMBER
diff_hunk: @@ -40,16 +40,14 @@ jobs:
             npm config set legacy-peer-deps true
             npm install -g @angular/cli
             npm install typescript@5.1.3 --save-dev
-            npm install ng2-smart-table@1.2.1
-            npm install node-sass
             npm install --force
-            npm run build
+            npm run build-ci
 
     - name: Create WAR file
       run: jar -cvf tm-ui.war -C dist .
 
     - name: Upload WAR file as artifact
-      uses: actions/upload-artifact@v2
+      uses: actions/upload-artifact@v4
       with:
         name: TM-UI
-        path: tm-ui.war 
+        path: dist/scheduler-ui/scheduler-ui.war
path: .github/workflows/package.yml
user: login: Zapper9982
body: Oh yeah I am really sorry lemme fix it.
created_at: 2025-04-09T17:15:50Z
author_association: CONTRIBUTOR

PR comments:
user: login: coderabbitai[bot]
created_at: 2025-04-09T05:13:49Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- walkthrough_start -->

## Walkthrough

This pull request updates several GitHub Actions workflows by upgrading action versions (checkout, setup-java, setup-node, and upload-artifact) and removing deprecated npm installation steps. The build process in one workflow is modified to run a CI-specific build command. Additionally, build scripts in the package manifest now ensure that an environment configuration file exists before executing the Angular build. A new ignore rule is added for a CI environment file, and the CI prebuild script is enhanced with two new configuration keys.

## Changes

| Files Affected                                                               | Change Summary                                                                                                                                                                                              |
|------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `.github/workflows/build-on-pull-request.yml`,<br>`.github/workflows/package-prod.yml`,<br>`.github/workflows/package.yml` | Upgraded GitHub Actions versions (checkout, setup-java, setup-node, and upload-artifact); removed npm install commands for `ng2-smart-table@1.2.1` and `node-sass`; changed build command in PR workflow. |
| `package.json`                                                               | Modified build scripts (`build-dev`, `build-prod`, `build-ci`, `build-test`) to check for and create `src/environments/environment.ts` before running the Angular build.                              |
| `scripts/ci-prebuild.js`                                                     | Added two new properties (`IDENTITY_API_BASE` and `SESSION_STORAGE_ENC_KEY`) to the `defaultEnvValues` object.                                                                                                |
| `.gitignore`                                                                 | Added `/src/environments/environment.ci.ts` to the ignore list.                                                                                                                                             |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant GH as GitHub Actions Workflow
    participant NPM as Build Script (npm run build-ci)
    participant Shell as Shell Environment
    participant Angular as Angular CLI

    GH->>NPM: Trigger build (npm run build-ci)
    NPM->>Shell: Check for env file existence
    alt File missing
        Shell->>Shell: Create env file (touch src/environments/environment.ts)
    end
    NPM->>Angular: Execute Angular build command
    Angular-->>NPM: Return build status
    NPM-->>GH: Build completed
```

## Assessment against linked issues

| Objective                                                                 | Addressed | Explanation                                                  |
|---------------------------------------------------------------------------|:---------:|--------------------------------------------------------------|
| CI/CD pipeline runs successfully using the correct Node.js version (#51)  | ✅        |                                                              |
| `npm run build:ci` command completes without errors (#51)                 | ✅        |                                                              |
| Required Git submodules are correctly initialized (#51)                  | ❌        | No changes related to Git submodule initialization were made. |

## Suggested reviewers

- devikasuresh20

## Poem

> Hey, it's me, a hopping rabbit,  
> Jumping through workflows, oh so quick!  
> Upgraded actions, build scripts in tune,  
> Environment files sing a joyful rune 🐰.  
> CI skies clear with each command we pick!

<!-- walkthrough_end -->


---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 2f64c035c8063f4abf68b0e5ba136c86a3dece3d and 40201b05930aa3175afa99ca27c1a1a171707d06.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.github/workflows/package.yml` (3 hunks)

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>

* .github/workflows/package.yml

</details>

</details>
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- tips_start -->

---



<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=PSMRI/TM-UI&utm_content=57):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Generate unit testing code for this file.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai generate unit testing code for this file.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and generate unit testing code.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai plan` to trigger planning for file edits and PR creation.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: NONE
user: login: Zapper9982
created_at: 2025-04-09T17:34:41Z
body: @drtechie  updated it !
author_association: CONTRIBUTOR
user: login: sonarqubecloud[bot]
created_at: 2025-04-09T17:35:17Z
body: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=PSMRI_TM-UI&pullRequest=57) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=PSMRI_TM-UI&pullRequest=57&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=PSMRI_TM-UI&pullRequest=57&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=PSMRI_TM-UI&pullRequest=57&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=PSMRI_TM-UI&pullRequest=57&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=PSMRI_TM-UI&pullRequest=57&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=PSMRI_TM-UI&pullRequest=57)


author_association: NONE