Skip to content

Commit 2c531b6

Browse files
author
taydy
committed
add setting for max retry and connection timeout
1 parent f0ca44e commit 2c531b6

File tree

6 files changed

+74
-7
lines changed

6 files changed

+74
-7
lines changed

src/constants.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@ export const GLOBAL_SETTINGS_FAVORITE_TABLE_TAB = 'favoriteTableTab'
33
export const GLOBAL_SETTINGS_AUTO_SCAN = 'autoScan'
44
export const GLOBAL_SETTINGS_PAGE_SIZE = 'pageSize'
55
export const GLOBAL_SETTINGS_ITEM_EDIT_TYPE = 'itemEditType'
6+
export const GLOBAL_SETTINGS_MAX_RETRY = 'maxRetry'
7+
export const GLOBAL_SETTINGS_CONNECTION_TIMEOUT = 'connectionTimeout'
68

79
export const DEFAULT_GLOBAL_SETTING = {
810
[`${GLOBAL_SETTINGS_LANGUAGE}`]: 'en',
911
[`${GLOBAL_SETTINGS_FAVORITE_TABLE_TAB}`]: 'search',
1012
[`${GLOBAL_SETTINGS_AUTO_SCAN}`]: 'true',
1113
[`${GLOBAL_SETTINGS_PAGE_SIZE}`]: '100',
12-
[`${GLOBAL_SETTINGS_ITEM_EDIT_TYPE}`]: 'form'
14+
[`${GLOBAL_SETTINGS_ITEM_EDIT_TYPE}`]: 'form',
15+
[`${GLOBAL_SETTINGS_MAX_RETRY}`]: 1,
16+
[`${GLOBAL_SETTINGS_CONNECTION_TIMEOUT}`]: 5
1317
}
1418

1519
export const LOCAL_STORAGE_DYNAMODB_CONFIGS = 'dynamodb_configs'

src/i18n/langs/en.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ const en = {
1616
label_auto_scan: 'Automatic scan operation when accessing the items tab',
1717
label_page_size: 'Items tab page size',
1818
label_item_edit_type: 'Items editor mode',
19+
label_max_retry: 'Max Retry',
20+
label_timeout: 'Connection Timeout (s)',
1921
default: 'Default'
2022
},
2123
config: {

src/i18n/langs/zh.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ const zh = {
1616
label_auto_scan: '访问项目选项卡时自动执行扫描操作',
1717
label_page_size: '分页查询数量',
1818
label_item_edit_type: '项目编辑器模式',
19+
label_max_retry: '最大重试次数',
20+
label_timeout: '连接超时时间 (秒)',
1921
default: '默认'
2022
},
2123
config: {

src/page/setting/_setting_from.vue

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,34 @@
3838
<el-radio label="false">No</el-radio>
3939
</el-radio-group>
4040
</el-form-item>
41+
<el-form-item :label="$t('setting_form.label_max_retry')">
42+
<div style="width: 500px">
43+
<el-slider v-model="setting.maxRetry" @change="maxRetryChange" :max="5" :min="0" show-input></el-slider>
44+
</div>
45+
</el-form-item>
46+
<el-form-item :label="$t('setting_form.label_timeout')">
47+
<div style="width: 500px">
48+
<el-slider v-model="setting.connectionTimeout" @change="connectionTimeoutChange" :max="120" :min="1" show-input></el-slider>
49+
</div>
50+
</el-form-item>
4151
</el-form>
4252
</el-col>
4353
</div>
4454
</template>
4555

4656
<script>
4757
import {
58+
LOCAL_STORAGE_CURRENT_APPLY_CONFIG,
4859
GLOBAL_SETTINGS_LANGUAGE,
4960
GLOBAL_SETTINGS_FAVORITE_TABLE_TAB,
5061
GLOBAL_SETTINGS_AUTO_SCAN,
5162
GLOBAL_SETTINGS_PAGE_SIZE,
52-
GLOBAL_SETTINGS_ITEM_EDIT_TYPE
63+
GLOBAL_SETTINGS_ITEM_EDIT_TYPE,
64+
GLOBAL_SETTINGS_MAX_RETRY,
65+
GLOBAL_SETTINGS_CONNECTION_TIMEOUT
5366
} from '@/constants'
67+
import { mapMutations } from 'vuex'
68+
import table from '@/mixins/table'
5469
export default {
5570
data() {
5671
return {
@@ -61,11 +76,17 @@ export default {
6176
),
6277
autoScan: localStorage.getItem(GLOBAL_SETTINGS_AUTO_SCAN),
6378
pageSize: localStorage.getItem(GLOBAL_SETTINGS_PAGE_SIZE),
64-
itemEditType: localStorage.getItem(GLOBAL_SETTINGS_ITEM_EDIT_TYPE)
79+
itemEditType: localStorage.getItem(GLOBAL_SETTINGS_ITEM_EDIT_TYPE),
80+
maxRetry: parseInt(localStorage.getItem(GLOBAL_SETTINGS_MAX_RETRY) || 0),
81+
connectionTimeout: parseInt(localStorage.getItem(GLOBAL_SETTINGS_CONNECTION_TIMEOUT) || 1)
6582
}
6683
}
6784
},
85+
mixins: [table],
6886
methods: {
87+
...mapMutations({
88+
UPDATE_CONFIG: 'UPDATE_CONFIG'
89+
}),
6990
languageChange(val) {
7091
localStorage.setItem(GLOBAL_SETTINGS_LANGUAGE, val)
7192
this.$i18n.locale = val
@@ -81,6 +102,22 @@ export default {
81102
},
82103
itemEditTypeChange(val) {
83104
localStorage.setItem(GLOBAL_SETTINGS_ITEM_EDIT_TYPE, val)
105+
},
106+
maxRetryChange(val) {
107+
localStorage.setItem(GLOBAL_SETTINGS_MAX_RETRY, val)
108+
this.updateConfig()
109+
},
110+
connectionTimeoutChange(val) {
111+
localStorage.setItem(GLOBAL_SETTINGS_CONNECTION_TIMEOUT, val)
112+
this.updateConfig()
113+
},
114+
updateConfig() {
115+
var config = JSON.parse(localStorage.getItem(LOCAL_STORAGE_CURRENT_APPLY_CONFIG))
116+
// just for deep update
117+
config.maxRetries = this.setting.maxRetry
118+
if (this.$utils.isNotEmpty(config)) {
119+
this.UPDATE_CONFIG(config)
120+
}
84121
}
85122
}
86123
}

src/page/tables/detail/search/index.vue

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
</el-collapse-item>
2222
</el-collapse>
2323
<div class="data-list">
24+
<div class="consumed-capacity" v-if="consumedCapacity">
25+
<span>Consumed Capacity:</span>
26+
<span>{{consumedCapacity}}</span>
27+
</div>
2428
<div class="table-setting">
2529
<el-tooltip class="item" effect="dark" :content="$t('table.item_search.i_refresh')" placement="top">
2630
<i class="fa fa-refresh" @click="refreshTable"></i>
@@ -90,7 +94,8 @@ export default {
9094
itemsShow: [],
9195
headerSelectDialogShow: false,
9296
groupIndexes: [],
93-
fileDialogVisible: false
97+
fileDialogVisible: false,
98+
consumedCapacity: null
9499
}
95100
},
96101
computed: {
@@ -230,6 +235,7 @@ export default {
230235
this.$refs.searchParams.searchStart()
231236
this.tableItems = []
232237
this.loading = true
238+
this.consumedCapacity = null
233239
this.type = type
234240
this.$dynamodb[`${type}Table`](
235241
params,
@@ -248,6 +254,9 @@ export default {
248254
// console.log(result.ConsumedCapacity.CapacityUnits)
249255
console.log(result.ScannedCount)
250256
this.getTableItemsAndHeaders(result.Items)
257+
if (result.ConsumedCapacity) {
258+
this.consumedCapacity = result.ConsumedCapacity.CapacityUnits
259+
}
251260
this.$refs.searchParams.searchFinished()
252261
},
253262
() => {
@@ -372,6 +381,13 @@ export default {
372381
float: right
373382
margin-right: 20px
374383
.data-list
384+
.consumed-capacity
385+
display: inline
386+
float: left
387+
font-size: 13px
388+
margin-top: 10px
389+
color: #2F4056
390+
font-weight: 500
375391
.table-setting
376392
float: right
377393
margin-top: 10px

src/utils/dynamodb.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import {
22
Notification
33
} from 'element-ui'
4+
import {
5+
GLOBAL_SETTINGS_MAX_RETRY,
6+
GLOBAL_SETTINGS_CONNECTION_TIMEOUT
7+
} from '@/constants'
48
const AWS = require('aws-sdk')
59
let dynamodb = new AWS.DynamoDB()
610
let docClient = new AWS.DynamoDB.DocumentClient()
@@ -17,10 +21,10 @@ const errNotify = (title, message) => {
1721
class DynamoDBInstance {
1822
constructor(config) {
1923
config.httpOptions = {
20-
connectTimeout: 5 * 1000,
21-
timeout: 5 * 1000
24+
connectTimeout: 1000 * parseInt(localStorage.getItem(GLOBAL_SETTINGS_CONNECTION_TIMEOUT) || 5),
25+
timeout: 1000 * parseInt(localStorage.getItem(GLOBAL_SETTINGS_CONNECTION_TIMEOUT) || 5)
2226
}
23-
config.maxRetries = 1
27+
config.maxRetries = parseInt(localStorage.getItem(GLOBAL_SETTINGS_MAX_RETRY) || 1)
2428
this._config = config
2529
this.params = {}
2630
this.refresh(config)
@@ -31,6 +35,8 @@ class DynamoDBInstance {
3135
}
3236

3337
set config(config) {
38+
console.log('-----------update config')
39+
console.log(config)
3440
this._config = config
3541
this.refresh(config)
3642
}

0 commit comments

Comments
 (0)