Skip to content

Commit a6f6c32

Browse files
authored
fix: resolve memory limit and type issues in app configuration (#154)
- Fix totalMemory access issue by moving duplexDisplay from filter to method - Replace deprecated document.domain with window.location.hostname - Ensure consistent string type handling for min_memory values - Add proper number type conversion for vue-slider min prop
1 parent d296151 commit a6f6c32

File tree

4 files changed

+47
-22
lines changed

4 files changed

+47
-22
lines changed

.env.dev

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# .env.dev
22
NODE_ENV=dev
33
#VUE_APP_DEV_IP=demo.casaos.io
4-
VUE_APP_DEV_IP=10.0.0.77
4+
VUE_APP_DEV_IP=10.0.0.111
55
# VUE_APP_DEV_IP=10.147.20.1
66
# VUE_APP_DEV_IP=192.168.2.15
77
# VUE_APP_DEV_IP=192.168.2.219

src/components/AppSetting/ComposeConfig.vue

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,8 @@
198198
<b-field :label="$t('Memory Limit')">
199199
<vue-slider
200200
:max="totalMemory"
201-
:min="memory_min"
202-
:value="service.deploy.resources.limits.memory | duplexDisplay"
201+
:min="getMinMemory(service)"
202+
:value="duplexDisplay(service)"
203203
:tooltip-formatter="formatMemoryTooltip"
204204
@change="(v) => (service.deploy.resources.limits.memory = v)"
205205
></vue-slider>
@@ -279,7 +279,7 @@ import "vue-slider-component/theme/default.css";
279279
import YAML from "yaml";
280280
import lowerFirst from "lodash/lowerFirst";
281281
import isNil from "lodash/isNil";
282-
import { isNumber, isString } from "lodash/lang";
282+
import { isString } from "lodash/lang";
283283
import cloneDeep from "lodash/cloneDeep";
284284
import merge from "lodash/merge";
285285
import i18n from "@/mixins/base/common-i18n";
@@ -358,7 +358,7 @@ export default {
358358
deploy: {
359359
resources: {
360360
limits: {
361-
memory: "268435456",
361+
memory: "0",
362362
},
363363
},
364364
},
@@ -526,7 +526,7 @@ export default {
526526
},
527527
created() {
528528
// Set Front-end base url
529-
this.baseUrl = `${document.domain}`;
529+
this.baseUrl = `${window.location.hostname}`;
530530
// update Service Name.
531531
this.$emit("updateDockerComposeServiceName", this.firstAppName);
532532
},
@@ -558,6 +558,7 @@ export default {
558558
this.isFetching = false;
559559
});
560560
}, 500),
561+
561562
// format memory
562563
formatMemoryTooltip(memory) {
563564
// 将 字节 转换成 MB 或 GB 并且取整
@@ -824,7 +825,7 @@ export default {
824825
}
825826
826827
// 判断是否存在
827-
const memory = composeServicesItemInput?.deploy?.resources?.limits?.memory ?? "0";
828+
const memory = composeServicesItemInput?.deploy?.resources?.limits?.memory ?? this.totalMemory;
828829
let newMemory = 0;
829830
if (memory) {
830831
if (/[Mm]$/.test(memory)) {
@@ -1047,11 +1048,23 @@ export default {
10471048
getLateField(image) {
10481049
return image?.split(":")[1];
10491050
},
1050-
},
1051-
filters: {
1052-
duplexDisplay(val) {
1053-
// units is M
1054-
return val < 268435456 ? 268435456 : val;
1051+
1052+
getMinMemory(service) {
1053+
const reservedMemory = service?.deploy?.resources?.reservations?.memory;
1054+
return Number(reservedMemory) || 268435456;
1055+
},
1056+
1057+
duplexDisplay(service) {
1058+
// units is byte
1059+
const min_memory = this.getMinMemory(service);
1060+
1061+
if (service?.deploy?.resources?.limits?.memory == 0) {
1062+
return this.totalMemory;
1063+
} else if (service?.deploy?.resources?.limits?.memory < min_memory) {
1064+
return min_memory;
1065+
} else {
1066+
return service?.deploy?.resources?.limits?.memory;
1067+
}
10551068
},
10561069
},
10571070
};

src/components/AppStore/AppDetail/AppInfoTable.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727

2828
<div class="level-item has-text-centered">
2929
<div>
30-
<p class="heading "><span class="is-hidden-mobile">{{
30+
<p class="heading"><span class="is-hidden-mobile">{{
3131
$t('REQUIRE')
3232
}} </span>{{ $t('MEMORY') }}</p>
33-
<p class="title has-text-weight-normal">{{ appDetailData.min_memory }}</p>
33+
<p class="title has-text-weight-normal">{{ appDetailData.min_memory/1024/1024 }}</p>
3434
<p class="footing is-size-14px">MB</p>
3535
</div>
3636
</div>

src/components/Apps/AppPanel.vue

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -500,19 +500,31 @@ export default {
500500
this.isLoading = true;
501501
let { min_memory, compose } = await this.$openAPI.appManagement.appStore.composeApp(id).then((res) => {
502502
// A district that is reserved for resource.
503+
// 遍历 res.data.data.compose.services 如果存在 deploy?.resources?.reservations?.memory 则返回累加值。
504+
let min_memory = 0;
505+
for (const service in res.data.data.compose.services) {
506+
if (res.data.data.compose.services[service]?.deploy?.resources?.reservations?.memory) {
507+
let memoryValue = res.data.data.compose.services[service]?.deploy?.resources?.reservations?.memory;
508+
// 统一转换为字节数进行累加
509+
if (typeof memoryValue === 'string') {
510+
if (memoryValue.includes("GB") || memoryValue.includes("G")) {
511+
min_memory += Number(memoryValue.replace(/[^\d.]/g, '')) * 1024 * 1024 * 1024;
512+
} else if (memoryValue.includes("MB") || memoryValue.includes("M")) {
513+
min_memory += Number(memoryValue.replace(/[^\d.]/g, '')) * 1024 * 1024;
514+
} else {
515+
min_memory += Number(memoryValue) || 0;
516+
}
517+
} else {
518+
min_memory += Number(memoryValue) || 0;
519+
}
520+
}
521+
}
503522
return {
504-
min_memory: res.data.data.compose.services[id]?.deploy?.resources?.reservations?.memory || "0",
523+
min_memory: min_memory, // 统一返回字节数
505524
compose: res.data.data.compose,
506525
};
507526
});
508527
509-
if (min_memory.includes("GB")) {
510-
min_memory = min_memory.replace("GB", "") * 1024;
511-
} else if (min_memory.includes("MB")) {
512-
min_memory = min_memory.replace("MB", "");
513-
} else {
514-
min_memory = min_memory / 1024 / 1024;
515-
}
516528
this.$openAPI.appManagement.appStore
517529
.composeAppStoreInfo(id)
518530
.then((res) => {

0 commit comments

Comments
 (0)