Skip to content

Commit 8729e1e

Browse files
authored
Update manager.html
1 parent 5683c51 commit 8729e1e

1 file changed

Lines changed: 79 additions & 16 deletions

File tree

templates/manager.html

Lines changed: 79 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -340,12 +340,12 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
340340
<div class="notification" id="notification"></div>
341341

342342
<script>
343-
const modelConfig = {
344-
"grok-2": { RequestFrequency: 30, ExpirationTime: 3600000 },
343+
var modelConfig = {
345344
"grok-3": { RequestFrequency: 20, ExpirationTime: 7200000 },
346345
"grok-3-deepsearch": { RequestFrequency: 10, ExpirationTime: 86400000 },
347346
"grok-3-deepersearch": { RequestFrequency: 3, ExpirationTime: 86400000 },
348-
"grok-3-reasoning": { RequestFrequency: 10, ExpirationTime: 86400000 }
347+
"grok-3-reasoning": { RequestFrequency: 10, ExpirationTime: 86400000 },
348+
"grok-4": { RequestFrequency: 20, ExpirationTime: 7200000 }
349349
};
350350

351351
let tokenMap = {};
@@ -364,12 +364,17 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
364364
function calculateModelRemaining() {
365365
const modelRemaining = {};
366366
Object.keys(modelConfig).forEach(modelName => {
367-
const maxRequests = modelConfig[modelName].RequestFrequency;
367+
var maxRequests = modelConfig[modelName].RequestFrequency;
368368
modelRemaining[modelName] = 0;
369369
Object.values(tokenMap).forEach(tokenData => {
370370
const modelData = tokenData[modelName];
371-
if (modelData.isValid) {
372-
modelRemaining[modelName] += maxRequests - modelData.totalRequestCount;
371+
if(modelData){
372+
if (!modelData.isSuper) {
373+
modelRemaining[modelName] = 0;
374+
}
375+
else if (modelData.isValid) {
376+
modelRemaining[modelName] += maxRequests - modelData.totalRequestCount;
377+
}
373378
}
374379
});
375380
});
@@ -385,7 +390,7 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
385390
}
386391

387392
const modelRemaining = calculateModelRemaining();
388-
const modelIds = ['grok-2', 'grok-3', 'grok-3-deepsearch', 'grok-3-deepersearch', 'grok-3-reasoning'];
393+
const modelIds = ['grok-3', 'grok-3-deepsearch', 'grok-3-deepersearch', 'grok-3-reasoning','grok-4'];
389394
modelIds.forEach(modelName => {
390395
const countElement = document.getElementById(`${modelName}-count`);
391396
if (countElement) {
@@ -404,7 +409,12 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
404409
Object.values(tokenMap).forEach(tokenData => {
405410
Object.entries(tokenData).forEach(([modelName, modelData]) => {
406411
if (!modelData.isValid) {
407-
const recoveryTime = modelData.invalidatedTime + modelConfig[modelName].ExpirationTime;
412+
if(modelData.isSuper){
413+
ExpirationTime = 3 * 60 * 60 * 1000;
414+
}else{
415+
ExpirationTime = modelConfig[modelName].ExpirationTime;
416+
}
417+
const recoveryTime = modelData.invalidatedTime + ExpirationTime;
408418
if (recoveryTime <= currentTime) {
409419
shouldRefresh = true;
410420
}
@@ -517,9 +527,30 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
517527
progressFill.className = 'progress-fill';
518528

519529
const modelData = tokenData[modelName];
520-
const requestCount = modelData.totalRequestCount;
521-
const maxRequests = config.RequestFrequency;
530+
if(!modelData) return;
531+
const isSuper = modelData.isSuper;
532+
let requestCount = modelData.totalRequestCount;
533+
let maxRequests = config.RequestFrequency;
534+
if (isSuper) {
535+
switch (modelName) {
536+
case "grok-3":
537+
maxRequests = 100;
538+
break;
539+
case "grok-3-deepsearch":
540+
maxRequests = 30;
541+
break;
542+
case "grok-3-deepersearch":
543+
maxRequests = 10;
544+
break;
545+
case "grok-3-reasoning":
546+
maxRequests = 30;
547+
break;
548+
case "grok-4":
549+
maxRequests = 20;
550+
}
551+
}
522552
const percentage = Math.min((requestCount / maxRequests) * 100, 100);
553+
523554
progressFill.style.width = `${percentage}%`;
524555
progressFill.style.backgroundColor = getProgressColor(percentage, modelData.isValid);
525556
progressBar.appendChild(progressFill);
@@ -531,13 +562,19 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
531562
const status = document.createElement('div');
532563
status.className = 'status';
533564
if (!modelData.isValid) {
565+
if(modelData.isSuper){
566+
ExpirationTime = 3 * 60 * 60 * 1000;
567+
}
568+
else{
569+
ExpirationTime = config.ExpirationTime;
570+
}
534571
status.classList.add('status-expired');
535572
status.textContent = '失效';
536573
status.setAttribute('data-invalidated-time', modelData.invalidatedTime);
537-
status.setAttribute('data-expiration-time', config.ExpirationTime);
574+
status.setAttribute('data-expiration-time', ExpirationTime);
538575
const tooltip = document.createElement('div');
539576
tooltip.className = 'tooltip';
540-
tooltip.textContent = getTooltipText(modelData.invalidatedTime, config.ExpirationTime);
577+
tooltip.textContent = getTooltipText(modelData.invalidatedTime, ExpirationTime);
541578
status.appendChild(tooltip);
542579
} else {
543580
status.classList.add('status-active');
@@ -566,8 +603,28 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
566603
Object.entries(modelConfig).forEach(([modelName, config]) => {
567604
const modelItem = modelItems[index++];
568605
const modelData = tokenData[modelName];
569-
const requestCount = modelData.totalRequestCount;
570-
const maxRequests = config.RequestFrequency;
606+
if(!modelData) return;
607+
const isSuper = modelData.isSuper;
608+
let requestCount = modelData.totalRequestCount;
609+
let maxRequests = config.RequestFrequency;
610+
if (isSuper) {
611+
switch (modelName) {
612+
case "grok-3":
613+
maxRequests = 100;
614+
break;
615+
case "grok-3-deepsearch":
616+
maxRequests = 30;
617+
break;
618+
case "grok-3-deepersearch":
619+
maxRequests = 10;
620+
break;
621+
case "grok-3-reasoning":
622+
maxRequests = 30;
623+
break;
624+
case "grok-4":
625+
maxRequests = 20;
626+
}
627+
}
571628
const percentage = Math.min((requestCount / maxRequests) * 100, 100);
572629

573630
const progressFill = modelItem.querySelector('.progress-fill');
@@ -580,13 +637,19 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
580637
const status = modelItem.querySelector('.status');
581638
status.className = 'status';
582639
if (!modelData.isValid) {
640+
if(modelData.isSuper){
641+
ExpirationTime = 3 * 60 * 60 * 1000;
642+
}
643+
else{
644+
ExpirationTime = config.ExpirationTime;
645+
}
583646
status.classList.add('status-expired');
584647
status.textContent = '失效';
585648
status.setAttribute('data-invalidated-time', modelData.invalidatedTime);
586-
status.setAttribute('data-expiration-time', config.ExpirationTime);
649+
status.setAttribute('data-expiration-time', ExpirationTime);
587650
const tooltip = status.querySelector('.tooltip') || document.createElement('div');
588651
tooltip.className = 'tooltip';
589-
tooltip.textContent = getTooltipText(modelData.invalidatedTime, config.ExpirationTime);
652+
tooltip.textContent = getTooltipText(modelData.invalidatedTime, ExpirationTime);
590653
if (!status.contains(tooltip)) status.appendChild(tooltip);
591654
} else {
592655
status.classList.add('status-active');

0 commit comments

Comments
 (0)