@optifye/dashboard-core 6.5.10 → 6.5.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.js +139 -17
  2. package/dist/index.mjs +139 -17
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -25339,29 +25339,36 @@ var LinePdfGenerator = ({
25339
25339
  const startHour = parseInt(hours);
25340
25340
  const startMinute = parseInt(minutes || "0");
25341
25341
  let SHIFT_DURATION = 11;
25342
+ let endHour = startHour + 11;
25343
+ let endMinute = startMinute;
25342
25344
  if (endTimeStr) {
25343
25345
  const [endHours, endMinutes] = endTimeStr.split(":");
25344
- const endHour = parseInt(endHours);
25345
- const endMinute = parseInt(endMinutes || "0");
25346
+ endHour = parseInt(endHours);
25347
+ endMinute = parseInt(endMinutes || "0");
25346
25348
  let duration = endHour - startHour;
25347
25349
  if (duration <= 0) {
25348
25350
  duration += 24;
25349
25351
  }
25350
- const minuteDiff = endMinute - startMinute;
25351
- if (minuteDiff !== 0) {
25352
- duration += minuteDiff / 60;
25353
- }
25354
- SHIFT_DURATION = Math.round(duration);
25352
+ const hasPartialLastHour = endMinute > 0 && endMinute < 60;
25353
+ SHIFT_DURATION = hasPartialLastHour ? Math.ceil(duration) : Math.round(duration);
25355
25354
  }
25356
25355
  return Array.from({ length: SHIFT_DURATION }, (_, i) => {
25356
+ const isLastHour = i === SHIFT_DURATION - 1;
25357
25357
  const hourStartTime = /* @__PURE__ */ new Date();
25358
- hourStartTime.setHours(startHour);
25358
+ hourStartTime.setHours((startHour + i) % 24);
25359
25359
  hourStartTime.setMinutes(startMinute);
25360
25360
  hourStartTime.setSeconds(0);
25361
25361
  hourStartTime.setMilliseconds(0);
25362
- hourStartTime.setTime(hourStartTime.getTime() + i * 60 * 60 * 1e3);
25363
- const hourEndTime = new Date(hourStartTime);
25364
- hourEndTime.setTime(hourEndTime.getTime() + 60 * 60 * 1e3);
25362
+ let hourEndTime = /* @__PURE__ */ new Date();
25363
+ if (isLastHour && endTimeStr) {
25364
+ hourEndTime.setHours(endHour % 24);
25365
+ hourEndTime.setMinutes(endMinute);
25366
+ } else {
25367
+ hourEndTime.setHours((startHour + i + 1) % 24);
25368
+ hourEndTime.setMinutes(startMinute);
25369
+ }
25370
+ hourEndTime.setSeconds(0);
25371
+ hourEndTime.setMilliseconds(0);
25365
25372
  const formatTime3 = (date2) => {
25366
25373
  return date2.toLocaleTimeString("en-IN", {
25367
25374
  hour: "2-digit",
@@ -25378,17 +25385,132 @@ var LinePdfGenerator = ({
25378
25385
  const targetOutputPerHour = Math.round(lineInfo.metrics.line_threshold / shiftDuration);
25379
25386
  let hourlyActualOutput = [];
25380
25387
  if (lineInfo.metrics.output_hourly && Object.keys(lineInfo.metrics.output_hourly).length > 0) {
25381
- const startHour = parseInt(lineInfo.metrics.shift_start?.split(":")[0] || "6");
25388
+ const [startHourStr, startMinuteStr] = (lineInfo.metrics.shift_start || "6:00").split(":");
25389
+ const startHour = parseInt(startHourStr);
25390
+ const startMinute = parseInt(startMinuteStr || "0");
25391
+ const [endHourStr, endMinuteStr] = (lineInfo.metrics.shift_end || "18:00").split(":");
25392
+ const endMinute = parseInt(endMinuteStr || "0");
25393
+ const hasPartialLastHour = endMinute > 0 && endMinute < 60;
25382
25394
  const expectedHours = [];
25383
25395
  for (let i = 0; i < shiftDuration; i++) {
25384
25396
  expectedHours.push((startHour + i) % 24);
25385
25397
  }
25386
- hourlyActualOutput = expectedHours.map((hour) => {
25387
- const hourData = lineInfo.metrics.output_hourly[hour.toString()];
25388
- if (hourData && Array.isArray(hourData)) {
25389
- return hourData.reduce((sum, val) => sum + (val || 0), 0);
25398
+ hourlyActualOutput = expectedHours.map((expectedHour, index) => {
25399
+ let hourSum = 0;
25400
+ const outputHourly = lineInfo.metrics.output_hourly;
25401
+ const hourData = outputHourly[expectedHour.toString()] || [];
25402
+ if (startMinute > 0) {
25403
+ if (index === 0) {
25404
+ if (Array.isArray(hourData)) {
25405
+ for (let i = startMinute; i < hourData.length; i++) {
25406
+ const val = hourData[i];
25407
+ if (val !== "x" && typeof val === "number") {
25408
+ hourSum += val;
25409
+ }
25410
+ }
25411
+ }
25412
+ const nextHour = (expectedHour + 1) % 24;
25413
+ const nextHourData = outputHourly[nextHour.toString()] || [];
25414
+ if (Array.isArray(nextHourData)) {
25415
+ for (let i = 0; i < startMinute && i < nextHourData.length; i++) {
25416
+ const val = nextHourData[i];
25417
+ if (val !== "x" && typeof val === "number") {
25418
+ hourSum += val;
25419
+ }
25420
+ }
25421
+ }
25422
+ } else if (index < expectedHours.length - 1) {
25423
+ if (Array.isArray(hourData)) {
25424
+ for (let i = startMinute; i < hourData.length; i++) {
25425
+ const val = hourData[i];
25426
+ if (val !== "x" && typeof val === "number") {
25427
+ hourSum += val;
25428
+ }
25429
+ }
25430
+ }
25431
+ const nextHour = (expectedHour + 1) % 24;
25432
+ const nextHourData = outputHourly[nextHour.toString()] || [];
25433
+ if (Array.isArray(nextHourData)) {
25434
+ for (let i = 0; i < startMinute && i < nextHourData.length; i++) {
25435
+ const val = nextHourData[i];
25436
+ if (val !== "x" && typeof val === "number") {
25437
+ hourSum += val;
25438
+ }
25439
+ }
25440
+ }
25441
+ } else {
25442
+ if (hasPartialLastHour && endMinute > 0) {
25443
+ if (startMinute > 0) {
25444
+ if (Array.isArray(hourData)) {
25445
+ for (let i = startMinute; i < hourData.length; i++) {
25446
+ const val = hourData[i];
25447
+ if (val !== "x" && typeof val === "number") {
25448
+ hourSum += val;
25449
+ }
25450
+ }
25451
+ }
25452
+ const nextHour = (expectedHour + 1) % 24;
25453
+ const nextHourData = outputHourly[nextHour.toString()] || [];
25454
+ if (Array.isArray(nextHourData)) {
25455
+ for (let i = 0; i < endMinute && i < nextHourData.length; i++) {
25456
+ const val = nextHourData[i];
25457
+ if (val !== "x" && typeof val === "number") {
25458
+ hourSum += val;
25459
+ }
25460
+ }
25461
+ }
25462
+ } else {
25463
+ if (Array.isArray(hourData)) {
25464
+ for (let i = 0; i < endMinute && i < hourData.length; i++) {
25465
+ const val = hourData[i];
25466
+ if (val !== "x" && typeof val === "number") {
25467
+ hourSum += val;
25468
+ }
25469
+ }
25470
+ }
25471
+ }
25472
+ } else {
25473
+ if (Array.isArray(hourData)) {
25474
+ for (let i = startMinute; i < hourData.length; i++) {
25475
+ const val = hourData[i];
25476
+ if (val !== "x" && typeof val === "number") {
25477
+ hourSum += val;
25478
+ }
25479
+ }
25480
+ }
25481
+ const nextHour = (expectedHour + 1) % 24;
25482
+ const nextHourData = outputHourly[nextHour.toString()] || [];
25483
+ if (Array.isArray(nextHourData)) {
25484
+ for (let i = 0; i < startMinute && i < nextHourData.length; i++) {
25485
+ const val = nextHourData[i];
25486
+ if (val !== "x" && typeof val === "number") {
25487
+ hourSum += val;
25488
+ }
25489
+ }
25490
+ }
25491
+ }
25492
+ }
25493
+ } else {
25494
+ if (Array.isArray(hourData)) {
25495
+ hourData.forEach((val) => {
25496
+ if (val !== "x" && typeof val === "number") {
25497
+ hourSum += val;
25498
+ }
25499
+ });
25500
+ }
25501
+ if (index === expectedHours.length - 1 && hasPartialLastHour && endMinute > 0) {
25502
+ hourSum = 0;
25503
+ if (Array.isArray(hourData)) {
25504
+ for (let i = 0; i < endMinute && i < hourData.length; i++) {
25505
+ const val = hourData[i];
25506
+ if (val !== "x" && typeof val === "number") {
25507
+ hourSum += val;
25508
+ }
25509
+ }
25510
+ }
25511
+ }
25390
25512
  }
25391
- return 0;
25513
+ return hourSum;
25392
25514
  });
25393
25515
  } else if (lineInfo.metrics.output_array && lineInfo.metrics.output_array.length > 0) {
25394
25516
  hourlyActualOutput = lineInfo.metrics.output_array.reduce((acc, val, i) => {
package/dist/index.mjs CHANGED
@@ -25309,29 +25309,36 @@ var LinePdfGenerator = ({
25309
25309
  const startHour = parseInt(hours);
25310
25310
  const startMinute = parseInt(minutes || "0");
25311
25311
  let SHIFT_DURATION = 11;
25312
+ let endHour = startHour + 11;
25313
+ let endMinute = startMinute;
25312
25314
  if (endTimeStr) {
25313
25315
  const [endHours, endMinutes] = endTimeStr.split(":");
25314
- const endHour = parseInt(endHours);
25315
- const endMinute = parseInt(endMinutes || "0");
25316
+ endHour = parseInt(endHours);
25317
+ endMinute = parseInt(endMinutes || "0");
25316
25318
  let duration = endHour - startHour;
25317
25319
  if (duration <= 0) {
25318
25320
  duration += 24;
25319
25321
  }
25320
- const minuteDiff = endMinute - startMinute;
25321
- if (minuteDiff !== 0) {
25322
- duration += minuteDiff / 60;
25323
- }
25324
- SHIFT_DURATION = Math.round(duration);
25322
+ const hasPartialLastHour = endMinute > 0 && endMinute < 60;
25323
+ SHIFT_DURATION = hasPartialLastHour ? Math.ceil(duration) : Math.round(duration);
25325
25324
  }
25326
25325
  return Array.from({ length: SHIFT_DURATION }, (_, i) => {
25326
+ const isLastHour = i === SHIFT_DURATION - 1;
25327
25327
  const hourStartTime = /* @__PURE__ */ new Date();
25328
- hourStartTime.setHours(startHour);
25328
+ hourStartTime.setHours((startHour + i) % 24);
25329
25329
  hourStartTime.setMinutes(startMinute);
25330
25330
  hourStartTime.setSeconds(0);
25331
25331
  hourStartTime.setMilliseconds(0);
25332
- hourStartTime.setTime(hourStartTime.getTime() + i * 60 * 60 * 1e3);
25333
- const hourEndTime = new Date(hourStartTime);
25334
- hourEndTime.setTime(hourEndTime.getTime() + 60 * 60 * 1e3);
25332
+ let hourEndTime = /* @__PURE__ */ new Date();
25333
+ if (isLastHour && endTimeStr) {
25334
+ hourEndTime.setHours(endHour % 24);
25335
+ hourEndTime.setMinutes(endMinute);
25336
+ } else {
25337
+ hourEndTime.setHours((startHour + i + 1) % 24);
25338
+ hourEndTime.setMinutes(startMinute);
25339
+ }
25340
+ hourEndTime.setSeconds(0);
25341
+ hourEndTime.setMilliseconds(0);
25335
25342
  const formatTime3 = (date2) => {
25336
25343
  return date2.toLocaleTimeString("en-IN", {
25337
25344
  hour: "2-digit",
@@ -25348,17 +25355,132 @@ var LinePdfGenerator = ({
25348
25355
  const targetOutputPerHour = Math.round(lineInfo.metrics.line_threshold / shiftDuration);
25349
25356
  let hourlyActualOutput = [];
25350
25357
  if (lineInfo.metrics.output_hourly && Object.keys(lineInfo.metrics.output_hourly).length > 0) {
25351
- const startHour = parseInt(lineInfo.metrics.shift_start?.split(":")[0] || "6");
25358
+ const [startHourStr, startMinuteStr] = (lineInfo.metrics.shift_start || "6:00").split(":");
25359
+ const startHour = parseInt(startHourStr);
25360
+ const startMinute = parseInt(startMinuteStr || "0");
25361
+ const [endHourStr, endMinuteStr] = (lineInfo.metrics.shift_end || "18:00").split(":");
25362
+ const endMinute = parseInt(endMinuteStr || "0");
25363
+ const hasPartialLastHour = endMinute > 0 && endMinute < 60;
25352
25364
  const expectedHours = [];
25353
25365
  for (let i = 0; i < shiftDuration; i++) {
25354
25366
  expectedHours.push((startHour + i) % 24);
25355
25367
  }
25356
- hourlyActualOutput = expectedHours.map((hour) => {
25357
- const hourData = lineInfo.metrics.output_hourly[hour.toString()];
25358
- if (hourData && Array.isArray(hourData)) {
25359
- return hourData.reduce((sum, val) => sum + (val || 0), 0);
25368
+ hourlyActualOutput = expectedHours.map((expectedHour, index) => {
25369
+ let hourSum = 0;
25370
+ const outputHourly = lineInfo.metrics.output_hourly;
25371
+ const hourData = outputHourly[expectedHour.toString()] || [];
25372
+ if (startMinute > 0) {
25373
+ if (index === 0) {
25374
+ if (Array.isArray(hourData)) {
25375
+ for (let i = startMinute; i < hourData.length; i++) {
25376
+ const val = hourData[i];
25377
+ if (val !== "x" && typeof val === "number") {
25378
+ hourSum += val;
25379
+ }
25380
+ }
25381
+ }
25382
+ const nextHour = (expectedHour + 1) % 24;
25383
+ const nextHourData = outputHourly[nextHour.toString()] || [];
25384
+ if (Array.isArray(nextHourData)) {
25385
+ for (let i = 0; i < startMinute && i < nextHourData.length; i++) {
25386
+ const val = nextHourData[i];
25387
+ if (val !== "x" && typeof val === "number") {
25388
+ hourSum += val;
25389
+ }
25390
+ }
25391
+ }
25392
+ } else if (index < expectedHours.length - 1) {
25393
+ if (Array.isArray(hourData)) {
25394
+ for (let i = startMinute; i < hourData.length; i++) {
25395
+ const val = hourData[i];
25396
+ if (val !== "x" && typeof val === "number") {
25397
+ hourSum += val;
25398
+ }
25399
+ }
25400
+ }
25401
+ const nextHour = (expectedHour + 1) % 24;
25402
+ const nextHourData = outputHourly[nextHour.toString()] || [];
25403
+ if (Array.isArray(nextHourData)) {
25404
+ for (let i = 0; i < startMinute && i < nextHourData.length; i++) {
25405
+ const val = nextHourData[i];
25406
+ if (val !== "x" && typeof val === "number") {
25407
+ hourSum += val;
25408
+ }
25409
+ }
25410
+ }
25411
+ } else {
25412
+ if (hasPartialLastHour && endMinute > 0) {
25413
+ if (startMinute > 0) {
25414
+ if (Array.isArray(hourData)) {
25415
+ for (let i = startMinute; i < hourData.length; i++) {
25416
+ const val = hourData[i];
25417
+ if (val !== "x" && typeof val === "number") {
25418
+ hourSum += val;
25419
+ }
25420
+ }
25421
+ }
25422
+ const nextHour = (expectedHour + 1) % 24;
25423
+ const nextHourData = outputHourly[nextHour.toString()] || [];
25424
+ if (Array.isArray(nextHourData)) {
25425
+ for (let i = 0; i < endMinute && i < nextHourData.length; i++) {
25426
+ const val = nextHourData[i];
25427
+ if (val !== "x" && typeof val === "number") {
25428
+ hourSum += val;
25429
+ }
25430
+ }
25431
+ }
25432
+ } else {
25433
+ if (Array.isArray(hourData)) {
25434
+ for (let i = 0; i < endMinute && i < hourData.length; i++) {
25435
+ const val = hourData[i];
25436
+ if (val !== "x" && typeof val === "number") {
25437
+ hourSum += val;
25438
+ }
25439
+ }
25440
+ }
25441
+ }
25442
+ } else {
25443
+ if (Array.isArray(hourData)) {
25444
+ for (let i = startMinute; i < hourData.length; i++) {
25445
+ const val = hourData[i];
25446
+ if (val !== "x" && typeof val === "number") {
25447
+ hourSum += val;
25448
+ }
25449
+ }
25450
+ }
25451
+ const nextHour = (expectedHour + 1) % 24;
25452
+ const nextHourData = outputHourly[nextHour.toString()] || [];
25453
+ if (Array.isArray(nextHourData)) {
25454
+ for (let i = 0; i < startMinute && i < nextHourData.length; i++) {
25455
+ const val = nextHourData[i];
25456
+ if (val !== "x" && typeof val === "number") {
25457
+ hourSum += val;
25458
+ }
25459
+ }
25460
+ }
25461
+ }
25462
+ }
25463
+ } else {
25464
+ if (Array.isArray(hourData)) {
25465
+ hourData.forEach((val) => {
25466
+ if (val !== "x" && typeof val === "number") {
25467
+ hourSum += val;
25468
+ }
25469
+ });
25470
+ }
25471
+ if (index === expectedHours.length - 1 && hasPartialLastHour && endMinute > 0) {
25472
+ hourSum = 0;
25473
+ if (Array.isArray(hourData)) {
25474
+ for (let i = 0; i < endMinute && i < hourData.length; i++) {
25475
+ const val = hourData[i];
25476
+ if (val !== "x" && typeof val === "number") {
25477
+ hourSum += val;
25478
+ }
25479
+ }
25480
+ }
25481
+ }
25360
25482
  }
25361
- return 0;
25483
+ return hourSum;
25362
25484
  });
25363
25485
  } else if (lineInfo.metrics.output_array && lineInfo.metrics.output_array.length > 0) {
25364
25486
  hourlyActualOutput = lineInfo.metrics.output_array.reduce((acc, val, i) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optifye/dashboard-core",
3
- "version": "6.5.10",
3
+ "version": "6.5.11",
4
4
  "description": "Reusable UI & logic for Optifye dashboard",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",