mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-20 01:34:24 +08:00
add default currency option in user profile
This commit is contained in:
@@ -73,6 +73,7 @@ func startWebServer(c *cli.Context) error {
|
|||||||
_ = v.RegisterValidation("notBlank", validators.NotBlank)
|
_ = v.RegisterValidation("notBlank", validators.NotBlank)
|
||||||
_ = v.RegisterValidation("validUsername", validators.ValidUsername)
|
_ = v.RegisterValidation("validUsername", validators.ValidUsername)
|
||||||
_ = v.RegisterValidation("validEmail", validators.ValidEmail)
|
_ = v.RegisterValidation("validEmail", validators.ValidEmail)
|
||||||
|
_ = v.RegisterValidation("validCurrency", validators.ValidCurrency)
|
||||||
}
|
}
|
||||||
|
|
||||||
router.NoRoute(bindApi(api.Default.ApiNotFound))
|
router.NoRoute(bindApi(api.Default.ApiNotFound))
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ func (a *UsersApi) UserRegisterHandler(c *core.Context) (interface{}, *errs.Erro
|
|||||||
Email: userRegisterReq.Email,
|
Email: userRegisterReq.Email,
|
||||||
Nickname: userRegisterReq.Nickname,
|
Nickname: userRegisterReq.Nickname,
|
||||||
Password: userRegisterReq.Password,
|
Password: userRegisterReq.Password,
|
||||||
|
DefaultCurrency: userRegisterReq.DefaultCurrency,
|
||||||
}
|
}
|
||||||
|
|
||||||
err = a.users.CreateUser(user)
|
err = a.users.CreateUser(user)
|
||||||
@@ -92,6 +93,7 @@ func (a *UsersApi) UserProfileHandler(c *core.Context) (interface{}, *errs.Error
|
|||||||
Email: user.Email,
|
Email: user.Email,
|
||||||
Nickname: user.Nickname,
|
Nickname: user.Nickname,
|
||||||
Type: user.Type,
|
Type: user.Type,
|
||||||
|
DefaultCurrency: user.DefaultCurrency,
|
||||||
CreatedAt: user.CreatedUnixTime,
|
CreatedAt: user.CreatedUnixTime,
|
||||||
UpdatedAt: user.UpdatedUnixTime,
|
UpdatedAt: user.UpdatedUnixTime,
|
||||||
LastLoginAt: user.LastLoginUnixTime,
|
LastLoginAt: user.LastLoginUnixTime,
|
||||||
@@ -151,6 +153,12 @@ func (a *UsersApi) UserUpdateProfileHandler(c *core.Context) (interface{}, *errs
|
|||||||
userUpdateReq.Nickname = ""
|
userUpdateReq.Nickname = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if userUpdateReq.DefaultCurrency != "" && userUpdateReq.DefaultCurrency != user.DefaultCurrency {
|
||||||
|
anythingUpdate = true
|
||||||
|
} else {
|
||||||
|
userUpdateReq.DefaultCurrency = ""
|
||||||
|
}
|
||||||
|
|
||||||
if !anythingUpdate {
|
if !anythingUpdate {
|
||||||
return nil, errs.ErrNothingWillBeUpdated
|
return nil, errs.ErrNothingWillBeUpdated
|
||||||
}
|
}
|
||||||
@@ -158,6 +166,7 @@ func (a *UsersApi) UserUpdateProfileHandler(c *core.Context) (interface{}, *errs
|
|||||||
user.Email = userUpdateReq.Email
|
user.Email = userUpdateReq.Email
|
||||||
user.Password = userUpdateReq.Password
|
user.Password = userUpdateReq.Password
|
||||||
user.Nickname = userUpdateReq.Nickname
|
user.Nickname = userUpdateReq.Nickname
|
||||||
|
user.DefaultCurrency = userUpdateReq.DefaultCurrency
|
||||||
|
|
||||||
keyProfileUpdated, err := a.users.UpdateUser(user)
|
keyProfileUpdated, err := a.users.UpdateUser(user)
|
||||||
|
|
||||||
|
|||||||
@@ -44,3 +44,7 @@ func GetParameterInvalidUsernameMessage(field string) string {
|
|||||||
func GetParameterInvalidEmailMessage(field string) string {
|
func GetParameterInvalidEmailMessage(field string) string {
|
||||||
return fmt.Sprintf("parameter \"%s\" is invalid email format", field)
|
return fmt.Sprintf("parameter \"%s\" is invalid email format", field)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetParameterInvalidCurrencylMessage(field string) string {
|
||||||
|
return fmt.Sprintf("parameter \"%s\" is invalid currency", field)
|
||||||
|
}
|
||||||
|
|||||||
+20
-16
@@ -17,6 +17,7 @@ type User struct {
|
|||||||
Salt string `xorm:"VARCHAR(10) NOT NULL"`
|
Salt string `xorm:"VARCHAR(10) NOT NULL"`
|
||||||
Rands string `xorm:"VARCHAR(10) NOT NULL"`
|
Rands string `xorm:"VARCHAR(10) NOT NULL"`
|
||||||
Type UserType `xorm:"TINYINT NOT NULL"`
|
Type UserType `xorm:"TINYINT NOT NULL"`
|
||||||
|
DefaultCurrency string `xorm:"VARCHAR(3) NOT NULL"`
|
||||||
IsAdmin bool `xorm:"NOT NULL"`
|
IsAdmin bool `xorm:"NOT NULL"`
|
||||||
Deleted bool `xorm:"NOT NULL"`
|
Deleted bool `xorm:"NOT NULL"`
|
||||||
EmailVerified bool `xorm:"NOT NULL"`
|
EmailVerified bool `xorm:"NOT NULL"`
|
||||||
@@ -32,26 +33,29 @@ type UserLoginRequest struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type UserRegisterRequest struct {
|
type UserRegisterRequest struct {
|
||||||
Username string `json:"username" binding:"required,notBlank,max=32,validUsername"`
|
Username string `json:"username" binding:"required,notBlank,max=32,validUsername"`
|
||||||
Email string `json:"email" binding:"required,notBlank,max=100,validEmail"`
|
Email string `json:"email" binding:"required,notBlank,max=100,validEmail"`
|
||||||
Nickname string `json:"nickname" binding:"required,notBlank,max=64"`
|
Nickname string `json:"nickname" binding:"required,notBlank,max=64"`
|
||||||
Password string `json:"password" binding:"required,min=6,max=128"`
|
Password string `json:"password" binding:"required,min=6,max=128"`
|
||||||
|
DefaultCurrency string `json:"defaultCurrency" binding:"required,len=3,validCurrency"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type UserProfileUpdateRequest struct {
|
type UserProfileUpdateRequest struct {
|
||||||
Email string `json:"email" binding:"omitempty,notBlank,max=100,validEmail"`
|
Email string `json:"email" binding:"omitempty,notBlank,max=100,validEmail"`
|
||||||
Nickname string `json:"nickname" binding:"omitempty,notBlank,max=64"`
|
Nickname string `json:"nickname" binding:"omitempty,notBlank,max=64"`
|
||||||
Password string `json:"password" binding:"omitempty,min=6,max=128"`
|
Password string `json:"password" binding:"omitempty,min=6,max=128"`
|
||||||
OldPassword string `json:"oldPassword" binding:"omitempty,min=6,max=128"`
|
OldPassword string `json:"oldPassword" binding:"omitempty,min=6,max=128"`
|
||||||
|
DefaultCurrency string `json:"defaultCurrency" binding:"required,len=3,validCurrency"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type UserProfileResponse struct {
|
type UserProfileResponse struct {
|
||||||
Uid string `json:"uid"`
|
Uid string `json:"uid"`
|
||||||
Username string `json:"username"`
|
Username string `json:"username"`
|
||||||
Email string `json:"email"`
|
Email string `json:"email"`
|
||||||
Nickname string `json:"nickname"`
|
Nickname string `json:"nickname"`
|
||||||
Type UserType `json:"type"`
|
Type UserType `json:"type"`
|
||||||
CreatedAt int64 `json:"createdAt"`
|
DefaultCurrency string `json:"defaultCurrency"`
|
||||||
UpdatedAt int64 `json:"updatedAt"`
|
CreatedAt int64 `json:"createdAt"`
|
||||||
LastLoginAt int64 `json:"lastLoginAt"`
|
UpdatedAt int64 `json:"updatedAt"`
|
||||||
|
LastLoginAt int64 `json:"lastLoginAt"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -174,6 +174,10 @@ func (s *UserService) UpdateUser(user *models.User) (keyProfileUpdated bool, err
|
|||||||
updateCols = append(updateCols, "nickname")
|
updateCols = append(updateCols, "nickname")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if user.DefaultCurrency != "" {
|
||||||
|
updateCols = append(updateCols, "default_currency")
|
||||||
|
}
|
||||||
|
|
||||||
user.UpdatedUnixTime = now
|
user.UpdatedUnixTime = now
|
||||||
updateCols = append(updateCols, "updated_unix_time")
|
updateCols = append(updateCols, "updated_unix_time")
|
||||||
|
|
||||||
|
|||||||
@@ -59,6 +59,8 @@ func getValidationErrorText(err validator.FieldError) string {
|
|||||||
return errs.GetParameterInvalidUsernameMessage(fieldName)
|
return errs.GetParameterInvalidUsernameMessage(fieldName)
|
||||||
case "validEmail":
|
case "validEmail":
|
||||||
return errs.GetParameterInvalidEmailMessage(fieldName)
|
return errs.GetParameterInvalidEmailMessage(fieldName)
|
||||||
|
case "validCurrency":
|
||||||
|
return errs.GetParameterInvalidCurrencylMessage(fieldName)
|
||||||
}
|
}
|
||||||
|
|
||||||
return errs.GetParameterInvalidMessage(fieldName)
|
return errs.GetParameterInvalidMessage(fieldName)
|
||||||
|
|||||||
@@ -0,0 +1,175 @@
|
|||||||
|
package validators
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/go-playground/validator/v10"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ISO 4217
|
||||||
|
var ALL_CURRENCY_NAMES = map[string]bool {
|
||||||
|
"AED": true, //UAE Dirham
|
||||||
|
"AFN": true, //Afghani
|
||||||
|
"ALL": true, //Lek
|
||||||
|
"AMD": true, //Armenian Dram
|
||||||
|
"ANG": true, //Netherlands Antillean Guilder
|
||||||
|
"AOA": true, //Kwanza
|
||||||
|
"ARS": true, //Argentine Peso
|
||||||
|
"AUD": true, //Australian Dollar
|
||||||
|
"AWG": true, //Aruban Florin
|
||||||
|
"AZN": true, //Azerbaijan Manat
|
||||||
|
"BAM": true, //Convertible Mark
|
||||||
|
"BBD": true, //Barbados Dollar
|
||||||
|
"BDT": true, //Taka
|
||||||
|
"BGN": true, //Bulgarian Lev
|
||||||
|
"BHD": true, //Bahraini Dinar
|
||||||
|
"BIF": true, //Burundi Franc
|
||||||
|
"BMD": true, //Bermudian Dollar
|
||||||
|
"BND": true, //Brunei Dollar
|
||||||
|
"BOB": true, //Boliviano
|
||||||
|
"BRL": true, //Brazilian Real
|
||||||
|
"BSD": true, //Bahamian Dollar
|
||||||
|
"BTN": true, //Ngultrum
|
||||||
|
"BWP": true, //Pula
|
||||||
|
"BYN": true, //Belarusian Ruble
|
||||||
|
"BZD": true, //Belize Dollar
|
||||||
|
"CAD": true, //Canadian Dollar
|
||||||
|
"CDF": true, //Congolese Franc
|
||||||
|
"CHF": true, //Swiss Franc
|
||||||
|
"CLP": true, //Chilean Peso
|
||||||
|
"CNY": true, //Yuan Renminbi
|
||||||
|
"COP": true, //Colombian Peso
|
||||||
|
"CRC": true, //Costa Rican Colon
|
||||||
|
"CUC": true, //Peso Convertible
|
||||||
|
"CUP": true, //Cuban Peso
|
||||||
|
"CVE": true, //Cabo Verde Escudo
|
||||||
|
"CZK": true, //Czech Koruna
|
||||||
|
"DJF": true, //Djibouti Franc
|
||||||
|
"DKK": true, //Danish Krone
|
||||||
|
"DOP": true, //Dominican Peso
|
||||||
|
"DZD": true, //Algerian Dinar
|
||||||
|
"EGP": true, //Egyptian Pound
|
||||||
|
"ERN": true, //Nakfa
|
||||||
|
"ETB": true, //Ethiopian Birr
|
||||||
|
"EUR": true, //Euro
|
||||||
|
"FJD": true, //Fiji Dollar
|
||||||
|
"FKP": true, //Falkland Islands Pound
|
||||||
|
"GBP": true, //Pound Sterling
|
||||||
|
"GEL": true, //Lari
|
||||||
|
"GHS": true, //Ghana Cedi
|
||||||
|
"GIP": true, //Gibraltar Pound
|
||||||
|
"GMD": true, //Dalasi
|
||||||
|
"GNF": true, //Guinean Franc
|
||||||
|
"GTQ": true, //Quetzal
|
||||||
|
"GYD": true, //Guyana Dollar
|
||||||
|
"HKD": true, //Hong Kong Dollar
|
||||||
|
"HNL": true, //Lempira
|
||||||
|
"HRK": true, //Kuna
|
||||||
|
"HTG": true, //Gourde
|
||||||
|
"HUF": true, //Forint
|
||||||
|
"IDR": true, //Rupiah
|
||||||
|
"ILS": true, //New Israeli Sheqel
|
||||||
|
"INR": true, //Indian Rupee
|
||||||
|
"IQD": true, //Iraqi Dinar
|
||||||
|
"IRR": true, //Iranian Rial
|
||||||
|
"ISK": true, //Iceland Krona
|
||||||
|
"JMD": true, //Jamaican Dollar
|
||||||
|
"JOD": true, //Jordanian Dinar
|
||||||
|
"JPY": true, //Yen
|
||||||
|
"KES": true, //Kenyan Shilling
|
||||||
|
"KGS": true, //Som
|
||||||
|
"KHR": true, //Riel
|
||||||
|
"KMF": true, //Comorian Franc
|
||||||
|
"KPW": true, //North Korean Won
|
||||||
|
"KRW": true, //Won
|
||||||
|
"KWD": true, //Kuwaiti Dinar
|
||||||
|
"KYD": true, //Cayman Islands Dollar
|
||||||
|
"KZT": true, //Tenge
|
||||||
|
"LAK": true, //Lao Kip
|
||||||
|
"LBP": true, //Lebanese Pound
|
||||||
|
"LKR": true, //Sri Lanka Rupee
|
||||||
|
"LRD": true, //Liberian Dollar
|
||||||
|
"LSL": true, //Loti
|
||||||
|
"LYD": true, //Libyan Dinar
|
||||||
|
"MAD": true, //Moroccan Dirham
|
||||||
|
"MDL": true, //Moldovan Leu
|
||||||
|
"MGA": true, //Malagasy Ariary
|
||||||
|
"MKD": true, //Denar
|
||||||
|
"MMK": true, //Kyat
|
||||||
|
"MNT": true, //Tugrik
|
||||||
|
"MOP": true, //Pataca
|
||||||
|
"MRU": true, //Ouguiya
|
||||||
|
"MUR": true, //Mauritius Rupee
|
||||||
|
"MVR": true, //Rufiyaa
|
||||||
|
"MWK": true, //Malawi Kwacha
|
||||||
|
"MXN": true, //Mexican Peso
|
||||||
|
"MYR": true, //Malaysian Ringgit
|
||||||
|
"MZN": true, //Mozambique Metical
|
||||||
|
"NAD": true, //Namibia Dollar
|
||||||
|
"NGN": true, //Naira
|
||||||
|
"NIO": true, //Cordoba Oro
|
||||||
|
"NOK": true, //Norwegian Krone
|
||||||
|
"NPR": true, //Nepalese Rupee
|
||||||
|
"NZD": true, //New Zealand Dollar
|
||||||
|
"OMR": true, //Rial Omani
|
||||||
|
"PAB": true, //Balboa
|
||||||
|
"PEN": true, //Sol
|
||||||
|
"PGK": true, //Kina
|
||||||
|
"PHP": true, //Philippine Peso
|
||||||
|
"PKR": true, //Pakistan Rupee
|
||||||
|
"PLN": true, //Zloty
|
||||||
|
"PYG": true, //Guarani
|
||||||
|
"QAR": true, //Qatari Rial
|
||||||
|
"RON": true, //Romanian Leu
|
||||||
|
"RSD": true, //Serbian Dinar
|
||||||
|
"RUB": true, //Russian Ruble
|
||||||
|
"RWF": true, //Rwanda Franc
|
||||||
|
"SAR": true, //Saudi Riyal
|
||||||
|
"SBD": true, //Solomon Islands Dollar
|
||||||
|
"SCR": true, //Seychelles Rupee
|
||||||
|
"SDG": true, //Sudanese Pound
|
||||||
|
"SEK": true, //Swedish Krona
|
||||||
|
"SGD": true, //Singapore Dollar
|
||||||
|
"SHP": true, //Saint Helena Pound
|
||||||
|
"SLL": true, //Leone
|
||||||
|
"SOS": true, //Somali Shilling
|
||||||
|
"SRD": true, //Surinam Dollar
|
||||||
|
"SSP": true, //South Sudanese Pound
|
||||||
|
"STN": true, //Dobra
|
||||||
|
"SVC": true, //El Salvador Colon
|
||||||
|
"SYP": true, //Syrian Pound
|
||||||
|
"SZL": true, //Lilangeni
|
||||||
|
"THB": true, //Baht
|
||||||
|
"TJS": true, //Somoni
|
||||||
|
"TMT": true, //Turkmenistan New Manat
|
||||||
|
"TND": true, //Tunisian Dinar
|
||||||
|
"TOP": true, //Pa’anga
|
||||||
|
"TRY": true, //Turkish Lira
|
||||||
|
"TTD": true, //Trinidad and Tobago Dollar
|
||||||
|
"TWD": true, //New Taiwan Dollar
|
||||||
|
"TZS": true, //Tanzanian Shilling
|
||||||
|
"UAH": true, //Hryvnia
|
||||||
|
"UGX": true, //Uganda Shilling
|
||||||
|
"USD": true, //US Dollar
|
||||||
|
"UYU": true, //Peso Uruguayo
|
||||||
|
"UZS": true, //Uzbekistan Sum
|
||||||
|
"VES": true, //Bolívar Soberano
|
||||||
|
"VND": true, //Dong
|
||||||
|
"VUV": true, //Vatu
|
||||||
|
"WST": true, //Tala
|
||||||
|
"XAF": true, //CFA Franc BEAC
|
||||||
|
"XCD": true, //East Caribbean Dollar
|
||||||
|
"XOF": true, //CFA Franc BCEAO
|
||||||
|
"XPF": true, //CFP Franc
|
||||||
|
"YER": true, //Yemeni Rial
|
||||||
|
"ZAR": true, //Rand
|
||||||
|
"ZMW": true, //Zambian Kwacha
|
||||||
|
"ZWL": true, //Zimbabwe Dollar
|
||||||
|
}
|
||||||
|
|
||||||
|
func ValidCurrency(fl validator.FieldLevel) bool {
|
||||||
|
if value, ok := fl.Field().Interface().(string); ok {
|
||||||
|
_, ok := ALL_CURRENCY_NAMES[value]
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
@@ -0,0 +1,163 @@
|
|||||||
|
const allCurrencies = [
|
||||||
|
'AED', //UAE Dirham
|
||||||
|
'AFN', //Afghani
|
||||||
|
'ALL', //Lek
|
||||||
|
'AMD', //Armenian Dram
|
||||||
|
'ANG', //Netherlands Antillean Guilder
|
||||||
|
'AOA', //Kwanza
|
||||||
|
'ARS', //Argentine Peso
|
||||||
|
'AUD', //Australian Dollar
|
||||||
|
'AWG', //Aruban Florin
|
||||||
|
'AZN', //Azerbaijan Manat
|
||||||
|
'BAM', //Convertible Mark
|
||||||
|
'BBD', //Barbados Dollar
|
||||||
|
'BDT', //Taka
|
||||||
|
'BGN', //Bulgarian Lev
|
||||||
|
'BHD', //Bahraini Dinar
|
||||||
|
'BIF', //Burundi Franc
|
||||||
|
'BMD', //Bermudian Dollar
|
||||||
|
'BND', //Brunei Dollar
|
||||||
|
'BOB', //Boliviano
|
||||||
|
'BRL', //Brazilian Real
|
||||||
|
'BSD', //Bahamian Dollar
|
||||||
|
'BTN', //Ngultrum
|
||||||
|
'BWP', //Pula
|
||||||
|
'BYN', //Belarusian Ruble
|
||||||
|
'BZD', //Belize Dollar
|
||||||
|
'CAD', //Canadian Dollar
|
||||||
|
'CDF', //Congolese Franc
|
||||||
|
'CHF', //Swiss Franc
|
||||||
|
'CLP', //Chilean Peso
|
||||||
|
'CNY', //Yuan Renminbi
|
||||||
|
'COP', //Colombian Peso
|
||||||
|
'CRC', //Costa Rican Colon
|
||||||
|
'CUC', //Peso Convertible
|
||||||
|
'CUP', //Cuban Peso
|
||||||
|
'CVE', //Cabo Verde Escudo
|
||||||
|
'CZK', //Czech Koruna
|
||||||
|
'DJF', //Djibouti Franc
|
||||||
|
'DKK', //Danish Krone
|
||||||
|
'DOP', //Dominican Peso
|
||||||
|
'DZD', //Algerian Dinar
|
||||||
|
'EGP', //Egyptian Pound
|
||||||
|
'ERN', //Nakfa
|
||||||
|
'ETB', //Ethiopian Birr
|
||||||
|
'EUR', //Euro
|
||||||
|
'FJD', //Fiji Dollar
|
||||||
|
'FKP', //Falkland Islands Pound
|
||||||
|
'GBP', //Pound Sterling
|
||||||
|
'GEL', //Lari
|
||||||
|
'GHS', //Ghana Cedi
|
||||||
|
'GIP', //Gibraltar Pound
|
||||||
|
'GMD', //Dalasi
|
||||||
|
'GNF', //Guinean Franc
|
||||||
|
'GTQ', //Quetzal
|
||||||
|
'GYD', //Guyana Dollar
|
||||||
|
'HKD', //Hong Kong Dollar
|
||||||
|
'HNL', //Lempira
|
||||||
|
'HRK', //Kuna
|
||||||
|
'HTG', //Gourde
|
||||||
|
'HUF', //Forint
|
||||||
|
'IDR', //Rupiah
|
||||||
|
'ILS', //New Israeli Sheqel
|
||||||
|
'INR', //Indian Rupee
|
||||||
|
'IQD', //Iraqi Dinar
|
||||||
|
'IRR', //Iranian Rial
|
||||||
|
'ISK', //Iceland Krona
|
||||||
|
'JMD', //Jamaican Dollar
|
||||||
|
'JOD', //Jordanian Dinar
|
||||||
|
'JPY', //Yen
|
||||||
|
'KES', //Kenyan Shilling
|
||||||
|
'KGS', //Som
|
||||||
|
'KHR', //Riel
|
||||||
|
'KMF', //Comorian Franc
|
||||||
|
'KPW', //North Korean Won
|
||||||
|
'KRW', //Won
|
||||||
|
'KWD', //Kuwaiti Dinar
|
||||||
|
'KYD', //Cayman Islands Dollar
|
||||||
|
'KZT', //Tenge
|
||||||
|
'LAK', //Lao Kip
|
||||||
|
'LBP', //Lebanese Pound
|
||||||
|
'LKR', //Sri Lanka Rupee
|
||||||
|
'LRD', //Liberian Dollar
|
||||||
|
'LSL', //Loti
|
||||||
|
'LYD', //Libyan Dinar
|
||||||
|
'MAD', //Moroccan Dirham
|
||||||
|
'MDL', //Moldovan Leu
|
||||||
|
'MGA', //Malagasy Ariary
|
||||||
|
'MKD', //Denar
|
||||||
|
'MMK', //Kyat
|
||||||
|
'MNT', //Tugrik
|
||||||
|
'MOP', //Pataca
|
||||||
|
'MRU', //Ouguiya
|
||||||
|
'MUR', //Mauritius Rupee
|
||||||
|
'MVR', //Rufiyaa
|
||||||
|
'MWK', //Malawi Kwacha
|
||||||
|
'MXN', //Mexican Peso
|
||||||
|
'MYR', //Malaysian Ringgit
|
||||||
|
'MZN', //Mozambique Metical
|
||||||
|
'NAD', //Namibia Dollar
|
||||||
|
'NGN', //Naira
|
||||||
|
'NIO', //Cordoba Oro
|
||||||
|
'NOK', //Norwegian Krone
|
||||||
|
'NPR', //Nepalese Rupee
|
||||||
|
'NZD', //New Zealand Dollar
|
||||||
|
'OMR', //Rial Omani
|
||||||
|
'PAB', //Balboa
|
||||||
|
'PEN', //Sol
|
||||||
|
'PGK', //Kina
|
||||||
|
'PHP', //Philippine Peso
|
||||||
|
'PKR', //Pakistan Rupee
|
||||||
|
'PLN', //Zloty
|
||||||
|
'PYG', //Guarani
|
||||||
|
'QAR', //Qatari Rial
|
||||||
|
'RON', //Romanian Leu
|
||||||
|
'RSD', //Serbian Dinar
|
||||||
|
'RUB', //Russian Ruble
|
||||||
|
'RWF', //Rwanda Franc
|
||||||
|
'SAR', //Saudi Riyal
|
||||||
|
'SBD', //Solomon Islands Dollar
|
||||||
|
'SCR', //Seychelles Rupee
|
||||||
|
'SDG', //Sudanese Pound
|
||||||
|
'SEK', //Swedish Krona
|
||||||
|
'SGD', //Singapore Dollar
|
||||||
|
'SHP', //Saint Helena Pound
|
||||||
|
'SLL', //Leone
|
||||||
|
'SOS', //Somali Shilling
|
||||||
|
'SRD', //Surinam Dollar
|
||||||
|
'SSP', //South Sudanese Pound
|
||||||
|
'STN', //Dobra
|
||||||
|
'SVC', //El Salvador Colon
|
||||||
|
'SYP', //Syrian Pound
|
||||||
|
'SZL', //Lilangeni
|
||||||
|
'THB', //Baht
|
||||||
|
'TJS', //Somoni
|
||||||
|
'TMT', //Turkmenistan New Manat
|
||||||
|
'TND', //Tunisian Dinar
|
||||||
|
'TOP', //Pa’anga
|
||||||
|
'TRY', //Turkish Lira
|
||||||
|
'TTD', //Trinidad and Tobago Dollar
|
||||||
|
'TWD', //New Taiwan Dollar
|
||||||
|
'TZS', //Tanzanian Shilling
|
||||||
|
'UAH', //Hryvnia
|
||||||
|
'UGX', //Uganda Shilling
|
||||||
|
'USD', //US Dollar
|
||||||
|
'UYU', //Peso Uruguayo
|
||||||
|
'UZS', //Uzbekistan Sum
|
||||||
|
'VES', //Bolívar Soberano
|
||||||
|
'VND', //Dong
|
||||||
|
'VUV', //Vatu
|
||||||
|
'WST', //Tala
|
||||||
|
'XAF', //CFA Franc BEAC
|
||||||
|
'XCD', //East Caribbean Dollar
|
||||||
|
'XOF', //CFA Franc BCEAO
|
||||||
|
'XPF', //CFP Franc
|
||||||
|
'YER', //Yemeni Rial
|
||||||
|
'ZAR', //Rand
|
||||||
|
'ZMW', //Zambian Kwacha
|
||||||
|
'ZWL', //Zimbabwe Dollar
|
||||||
|
];
|
||||||
|
|
||||||
|
export default {
|
||||||
|
all: allCurrencies
|
||||||
|
};
|
||||||
@@ -80,6 +80,14 @@ const parameterizedErrors = [
|
|||||||
field: 'parameter',
|
field: 'parameter',
|
||||||
localized: true
|
localized: true
|
||||||
}]
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
localeKey: 'parameter invalid currency',
|
||||||
|
regex: /^parameter "(\w+)" is invalid currency$/,
|
||||||
|
parameters: [{
|
||||||
|
field: 'parameter',
|
||||||
|
localized: true
|
||||||
|
}]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
+6
-4
@@ -78,12 +78,13 @@ export default {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
register: ({ username, email, nickname, password }) => {
|
register: ({ username, email, nickname, password, defaultCurrency }) => {
|
||||||
return axios.post('register.json', {
|
return axios.post('register.json', {
|
||||||
username,
|
username,
|
||||||
email,
|
email,
|
||||||
nickname,
|
nickname,
|
||||||
password
|
password,
|
||||||
|
defaultCurrency
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
logout: () => {
|
logout: () => {
|
||||||
@@ -127,12 +128,13 @@ export default {
|
|||||||
getProfile: () => {
|
getProfile: () => {
|
||||||
return axios.get('v1/users/profile/get.json');
|
return axios.get('v1/users/profile/get.json');
|
||||||
},
|
},
|
||||||
updateProfile: ({ email, nickname, password, oldPassword }) => {
|
updateProfile: ({ email, nickname, password, oldPassword, defaultCurrency }) => {
|
||||||
return axios.post('v1/users/profile/update.json', {
|
return axios.post('v1/users/profile/update.json', {
|
||||||
email,
|
email,
|
||||||
nickname,
|
nickname,
|
||||||
password,
|
password,
|
||||||
oldPassword
|
oldPassword,
|
||||||
|
defaultCurrency
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
get2FAStatus: () => {
|
get2FAStatus: () => {
|
||||||
|
|||||||
@@ -4,11 +4,173 @@ export default {
|
|||||||
'title': 'lab account book',
|
'title': 'lab account book',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
'default': {
|
||||||
|
'currency': 'USD',
|
||||||
|
},
|
||||||
'format': {
|
'format': {
|
||||||
'datetime': {
|
'datetime': {
|
||||||
'long': 'MM/DD/YYYY HH:mm:ss',
|
'long': 'MM/DD/YYYY HH:mm:ss',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
'currency': {
|
||||||
|
'AED': 'United Arab Emirates dirham',
|
||||||
|
'AFN': 'Afghan afghani',
|
||||||
|
'ALL': 'Albanian lek',
|
||||||
|
'AMD': 'Armenian dram',
|
||||||
|
'ANG': 'Netherlands Antillean guilder',
|
||||||
|
'AOA': 'Angolan kwanza',
|
||||||
|
'ARS': 'Argentine peso',
|
||||||
|
'AUD': 'Australian dollar',
|
||||||
|
'AWG': 'Aruban florin',
|
||||||
|
'AZN': 'Azerbaijani manat',
|
||||||
|
'BAM': 'Bosnia and Herzegovina convertible mark',
|
||||||
|
'BBD': 'Barbados dollar',
|
||||||
|
'BDT': 'Bangladeshi taka',
|
||||||
|
'BGN': 'Bulgarian lev',
|
||||||
|
'BHD': 'Bahraini dinar',
|
||||||
|
'BIF': 'Burundian franc',
|
||||||
|
'BMD': 'Bermudian dollar',
|
||||||
|
'BND': 'Brunei dollar',
|
||||||
|
'BOB': 'Boliviano',
|
||||||
|
'BRL': 'Brazilian real',
|
||||||
|
'BSD': 'Bahamian dollar',
|
||||||
|
'BTN': 'Bhutanese ngultrum',
|
||||||
|
'BWP': 'Botswana pula',
|
||||||
|
'BYN': 'Belarusian ruble',
|
||||||
|
'BZD': 'Belize dollar',
|
||||||
|
'CAD': 'Canadian dollar',
|
||||||
|
'CDF': 'Congolese franc',
|
||||||
|
'CHF': 'Swiss franc',
|
||||||
|
'CLP': 'Chilean peso',
|
||||||
|
'CNY': 'Chinese yuan',
|
||||||
|
'COP': 'Colombian peso',
|
||||||
|
'CRC': 'Costa Rican colon',
|
||||||
|
'CUC': 'Cuban convertible peso',
|
||||||
|
'CUP': 'Cuban peso',
|
||||||
|
'CVE': 'Cape Verdean escudo',
|
||||||
|
'CZK': 'Czech koruna',
|
||||||
|
'DJF': 'Djiboutian franc',
|
||||||
|
'DKK': 'Danish krone',
|
||||||
|
'DOP': 'Dominican peso',
|
||||||
|
'DZD': 'Algerian dinar',
|
||||||
|
'EGP': 'Egyptian pound',
|
||||||
|
'ERN': 'Eritrean nakfa',
|
||||||
|
'ETB': 'Ethiopian birr',
|
||||||
|
'EUR': 'Euro',
|
||||||
|
'FJD': 'Fiji dollar',
|
||||||
|
'FKP': 'Falkland Islands pound',
|
||||||
|
'GBP': 'Pound sterling',
|
||||||
|
'GEL': 'Georgian lari',
|
||||||
|
'GHS': 'Ghanaian cedi',
|
||||||
|
'GIP': 'Gibraltar pound',
|
||||||
|
'GMD': 'Gambian dalasi',
|
||||||
|
'GNF': 'Guinean franc',
|
||||||
|
'GTQ': 'Guatemalan quetzal',
|
||||||
|
'GYD': 'Guyanese dollar',
|
||||||
|
'HKD': 'Hong Kong dollar',
|
||||||
|
'HNL': 'Honduran lempira',
|
||||||
|
'HRK': 'Croatian kuna',
|
||||||
|
'HTG': 'Haitian gourde',
|
||||||
|
'HUF': 'Hungarian forint',
|
||||||
|
'IDR': 'Indonesian rupiah',
|
||||||
|
'ILS': 'Israeli new shekel',
|
||||||
|
'INR': 'Indian rupee',
|
||||||
|
'IQD': 'Iraqi dinar',
|
||||||
|
'IRR': 'Iranian rial',
|
||||||
|
'ISK': 'Icelandic króna',
|
||||||
|
'JMD': 'Jamaican dollar',
|
||||||
|
'JOD': 'Jordanian dinar',
|
||||||
|
'JPY': 'Japanese yen',
|
||||||
|
'KES': 'Kenyan shilling',
|
||||||
|
'KGS': 'Kyrgyzstani som',
|
||||||
|
'KHR': 'Cambodian riel',
|
||||||
|
'KMF': 'Comoro franc',
|
||||||
|
'KPW': 'North Korean won',
|
||||||
|
'KRW': 'South Korean won',
|
||||||
|
'KWD': 'Kuwaiti dinar',
|
||||||
|
'KYD': 'Cayman Islands dollar',
|
||||||
|
'KZT': 'Kazakhstani tenge',
|
||||||
|
'LAK': 'Lao kip',
|
||||||
|
'LBP': 'Lebanese pound',
|
||||||
|
'LKR': 'Sri Lankan rupee',
|
||||||
|
'LRD': 'Liberian dollar',
|
||||||
|
'LSL': 'Lesotho loti',
|
||||||
|
'LYD': 'Libyan dinar',
|
||||||
|
'MAD': 'Moroccan dirham',
|
||||||
|
'MDL': 'Moldovan leu',
|
||||||
|
'MGA': 'Malagasy ariary',
|
||||||
|
'MKD': 'Macedonian denar',
|
||||||
|
'MMK': 'Myanmar kyat',
|
||||||
|
'MNT': 'Mongolian tögrög',
|
||||||
|
'MOP': 'Macanese pataca',
|
||||||
|
'MRU': 'Mauritanian ouguiya',
|
||||||
|
'MUR': 'Mauritian rupee',
|
||||||
|
'MVR': 'Maldivian rufiyaa',
|
||||||
|
'MWK': 'Malawian kwacha',
|
||||||
|
'MXN': 'Mexican peso',
|
||||||
|
'MYR': 'Malaysian ringgit',
|
||||||
|
'MZN': 'Mozambican metical',
|
||||||
|
'NAD': 'Namibian dollar',
|
||||||
|
'NGN': 'Nigerian naira',
|
||||||
|
'NIO': 'Nicaraguan córdoba',
|
||||||
|
'NOK': 'Norwegian krone',
|
||||||
|
'NPR': 'Nepalese rupee',
|
||||||
|
'NZD': 'New Zealand dollar',
|
||||||
|
'OMR': 'Omani rial',
|
||||||
|
'PAB': 'Panamanian balboa',
|
||||||
|
'PEN': 'Peruvian sol',
|
||||||
|
'PGK': 'Papua New Guinean kina',
|
||||||
|
'PHP': 'Philippine peso',
|
||||||
|
'PKR': 'Pakistani rupee',
|
||||||
|
'PLN': 'Polish złoty',
|
||||||
|
'PYG': 'Paraguayan guaraní',
|
||||||
|
'QAR': 'Qatari riyal',
|
||||||
|
'RON': 'Romanian leu',
|
||||||
|
'RSD': 'Serbian dinar',
|
||||||
|
'RUB': 'Russian ruble',
|
||||||
|
'RWF': 'Rwandan franc',
|
||||||
|
'SAR': 'Saudi riyal',
|
||||||
|
'SBD': 'Solomon Islands dollar',
|
||||||
|
'SCR': 'Seychelles rupee',
|
||||||
|
'SDG': 'Sudanese pound',
|
||||||
|
'SEK': 'Swedish krona/kronor',
|
||||||
|
'SGD': 'Singapore dollar',
|
||||||
|
'SHP': 'Saint Helena pound',
|
||||||
|
'SLL': 'Sierra Leonean leone',
|
||||||
|
'SOS': 'Somali shilling',
|
||||||
|
'SRD': 'Surinamese dollar',
|
||||||
|
'SSP': 'South Sudanese pound',
|
||||||
|
'STN': 'São Tomé and Príncipe dobra',
|
||||||
|
'SVC': 'Salvadoran colón',
|
||||||
|
'SYP': 'Syrian pound',
|
||||||
|
'SZL': 'Swazi lilangeni',
|
||||||
|
'THB': 'Thai baht',
|
||||||
|
'TJS': 'Tajikistani somoni',
|
||||||
|
'TMT': 'Turkmenistan manat',
|
||||||
|
'TND': 'Tunisian dinar',
|
||||||
|
'TOP': 'Tongan paʻanga',
|
||||||
|
'TRY': 'Turkish lira',
|
||||||
|
'TTD': 'Trinidad and Tobago dollar',
|
||||||
|
'TWD': 'New Taiwan dollar',
|
||||||
|
'TZS': 'Tanzanian shilling',
|
||||||
|
'UAH': 'Ukrainian hryvnia',
|
||||||
|
'UGX': 'Ugandan shilling',
|
||||||
|
'USD': 'United States dollar',
|
||||||
|
'UYU': 'Uruguayan peso',
|
||||||
|
'UZS': 'Uzbekistan som',
|
||||||
|
'VES': 'Venezuelan bolívar soberano',
|
||||||
|
'VND': 'Vietnamese đồng',
|
||||||
|
'VUV': 'Vanuatu vatu',
|
||||||
|
'WST': 'Samoan tala',
|
||||||
|
'XAF': 'CFA franc BEAC',
|
||||||
|
'XCD': 'East Caribbean dollar',
|
||||||
|
'XOF': 'CFA franc BCEAO',
|
||||||
|
'XPF': 'CFP franc',
|
||||||
|
'YER': 'Yemeni rial',
|
||||||
|
'ZAR': 'South African rand',
|
||||||
|
'ZMW': 'Zambian kwacha',
|
||||||
|
'ZWL': 'Zimbabwean dollar',
|
||||||
|
},
|
||||||
'error': {
|
'error': {
|
||||||
'system error': 'System Error',
|
'system error': 'System Error',
|
||||||
'api not found': 'Failed to request api',
|
'api not found': 'Failed to request api',
|
||||||
@@ -50,6 +212,7 @@ export default {
|
|||||||
'email': 'Email',
|
'email': 'Email',
|
||||||
'nickname': 'Nickname',
|
'nickname': 'Nickname',
|
||||||
'oldPassword': 'Current Password',
|
'oldPassword': 'Current Password',
|
||||||
|
'defaultCurrency': 'Default Currency',
|
||||||
},
|
},
|
||||||
'parameterizedError': {
|
'parameterizedError': {
|
||||||
'parameter invalid': '{parameter} is invalid',
|
'parameter invalid': '{parameter} is invalid',
|
||||||
@@ -60,6 +223,7 @@ export default {
|
|||||||
'parameter cannot be blank': '{parameter} cannot be blank',
|
'parameter cannot be blank': '{parameter} cannot be blank',
|
||||||
'parameter invalid username format': '{parameter} is invalid format',
|
'parameter invalid username format': '{parameter} is invalid format',
|
||||||
'parameter invalid email format': '{parameter} is invalid format',
|
'parameter invalid email format': '{parameter} is invalid format',
|
||||||
|
'parameter invalid currency': '{parameter} is invalid format',
|
||||||
},
|
},
|
||||||
'OK': 'OK',
|
'OK': 'OK',
|
||||||
'Cancel': 'Cancel',
|
'Cancel': 'Cancel',
|
||||||
@@ -92,6 +256,7 @@ export default {
|
|||||||
'Your email address': 'Your email address',
|
'Your email address': 'Your email address',
|
||||||
'Nickname': 'Nickname',
|
'Nickname': 'Nickname',
|
||||||
'Your nickname': 'Your nickname',
|
'Your nickname': 'Your nickname',
|
||||||
|
'Default Currency': 'Default Currency',
|
||||||
'Log In': 'Log In',
|
'Log In': 'Log In',
|
||||||
'Don\'t have an account?': 'Don\'t have an account?',
|
'Don\'t have an account?': 'Don\'t have an account?',
|
||||||
'Create an account': 'Create an account',
|
'Create an account': 'Create an account',
|
||||||
@@ -102,6 +267,7 @@ export default {
|
|||||||
'Password and confirmation password do not match': 'Password and confirmation password do not match',
|
'Password and confirmation password do not match': 'Password and confirmation password do not match',
|
||||||
'Email address cannot be empty': 'Email address cannot be empty',
|
'Email address cannot be empty': 'Email address cannot be empty',
|
||||||
'Nickname cannot be empty': 'Nickname cannot be empty',
|
'Nickname cannot be empty': 'Nickname cannot be empty',
|
||||||
|
'Default currency cannot be empty': 'Default currency cannot be empty',
|
||||||
'Unable to login': 'Unable to login',
|
'Unable to login': 'Unable to login',
|
||||||
'Two-Factor Authentication': 'Two-Factor Authentication',
|
'Two-Factor Authentication': 'Two-Factor Authentication',
|
||||||
'Passcode': 'Passcode',
|
'Passcode': 'Passcode',
|
||||||
|
|||||||
@@ -4,11 +4,173 @@ export default {
|
|||||||
'title': 'lab 轻记账',
|
'title': 'lab 轻记账',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
'default': {
|
||||||
|
'currency': 'CNY',
|
||||||
|
},
|
||||||
'format': {
|
'format': {
|
||||||
'datetime': {
|
'datetime': {
|
||||||
'long': 'YYYY年MM月DD日 HH:mm:ss',
|
'long': 'YYYY年MM月DD日 HH:mm:ss',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
'currency': {
|
||||||
|
'AED': '阿联酋迪拉姆',
|
||||||
|
'AFN': '阿富汗阿富汗尼',
|
||||||
|
'ALL': '阿尔巴尼亚列克',
|
||||||
|
'AMD': '亚美尼亚德拉姆',
|
||||||
|
'ANG': '荷属安的列斯盾',
|
||||||
|
'AOA': '安哥拉宽扎',
|
||||||
|
'ARS': '阿根廷比索',
|
||||||
|
'AUD': '澳大利亚元',
|
||||||
|
'AWG': '阿鲁巴弗罗林',
|
||||||
|
'AZN': '阿塞拜疆马纳特',
|
||||||
|
'BAM': '波斯尼亚和黑塞哥维那可兑换马克',
|
||||||
|
'BBD': '巴巴多斯元',
|
||||||
|
'BDT': '孟加拉塔卡',
|
||||||
|
'BGN': '保加利亚列弗',
|
||||||
|
'BHD': '巴林第纳尔',
|
||||||
|
'BIF': '布隆迪法郎',
|
||||||
|
'BMD': '百慕大元',
|
||||||
|
'BND': '文莱元',
|
||||||
|
'BOB': '玻利维亚玻利维亚诺',
|
||||||
|
'BRL': '巴西雷亚尔',
|
||||||
|
'BSD': '巴哈马元',
|
||||||
|
'BTN': '不丹努扎姆',
|
||||||
|
'BWP': '博茨瓦纳普拉',
|
||||||
|
'BYN': '白俄罗斯卢布',
|
||||||
|
'BZD': '伯利兹元',
|
||||||
|
'CAD': '加拿大元',
|
||||||
|
'CDF': '刚果民主共和国刚果法郎',
|
||||||
|
'CHF': '瑞士法郎',
|
||||||
|
'CLP': '智利比索',
|
||||||
|
'CNY': '人民币',
|
||||||
|
'COP': '哥伦比亚比索',
|
||||||
|
'CRC': '哥斯达黎加科朗',
|
||||||
|
'CUC': '古巴可兑换比索',
|
||||||
|
'CUP': '古巴比索',
|
||||||
|
'CVE': '佛得角埃斯库多',
|
||||||
|
'CZK': '捷克克朗',
|
||||||
|
'DJF': '吉布提法郎',
|
||||||
|
'DKK': '丹麦克朗',
|
||||||
|
'DOP': '多米尼加比索',
|
||||||
|
'DZD': '阿尔及利亚第纳尔',
|
||||||
|
'EGP': '埃及镑',
|
||||||
|
'ERN': '厄立特里亚纳克法',
|
||||||
|
'ETB': '埃塞俄比亚比尔',
|
||||||
|
'EUR': '欧元',
|
||||||
|
'FJD': '斐济元',
|
||||||
|
'FKP': '福克兰镑',
|
||||||
|
'GBP': '英镑',
|
||||||
|
'GEL': '格鲁吉亚拉里',
|
||||||
|
'GHS': '加纳塞地',
|
||||||
|
'GIP': '直布罗陀镑',
|
||||||
|
'GMD': '冈比亚达拉西',
|
||||||
|
'GNF': '几内亚法郎',
|
||||||
|
'GTQ': '危地马拉格查尔',
|
||||||
|
'GYD': '圭亚那元',
|
||||||
|
'HKD': '港元',
|
||||||
|
'HNL': '洪都拉斯伦皮拉',
|
||||||
|
'HRK': '克罗地亚库纳',
|
||||||
|
'HTG': '海地古德',
|
||||||
|
'HUF': '匈牙利福林',
|
||||||
|
'IDR': '印度尼西亚盾',
|
||||||
|
'ILS': '以色列新谢克尔',
|
||||||
|
'INR': '印度卢比',
|
||||||
|
'IQD': '伊拉克第纳尔',
|
||||||
|
'IRR': '伊朗里亚尔',
|
||||||
|
'ISK': '冰岛克朗',
|
||||||
|
'JMD': '牙买加元',
|
||||||
|
'JOD': '约旦第纳尔',
|
||||||
|
'JPY': '日元',
|
||||||
|
'KES': '肯尼亚先令',
|
||||||
|
'KGS': '吉尔吉斯斯坦索姆',
|
||||||
|
'KHR': '柬埔寨瑞尔',
|
||||||
|
'KMF': '科摩罗法郎',
|
||||||
|
'KPW': '朝鲜圆',
|
||||||
|
'KRW': '韩元',
|
||||||
|
'KWD': '科威特第纳尔',
|
||||||
|
'KYD': '开曼群岛元',
|
||||||
|
'KZT': '哈萨克斯坦坚戈',
|
||||||
|
'LAK': '老挝基普',
|
||||||
|
'LBP': '黎巴嫩镑',
|
||||||
|
'LKR': '斯里兰卡卢比',
|
||||||
|
'LRD': '利比里亚元',
|
||||||
|
'LSL': '莱索托洛蒂',
|
||||||
|
'LYD': '利比亚第纳尔',
|
||||||
|
'MAD': '摩洛哥迪拉姆',
|
||||||
|
'MDL': '摩尔多瓦列伊',
|
||||||
|
'MGA': '马达加斯加阿里亚里',
|
||||||
|
'MKD': '北马其顿代纳尔',
|
||||||
|
'MMK': '缅甸元',
|
||||||
|
'MNT': '蒙古图格里克',
|
||||||
|
'MOP': '澳门元',
|
||||||
|
'MRU': '毛里塔尼亚乌吉亚',
|
||||||
|
'MUR': '毛里求斯卢比',
|
||||||
|
'MVR': '马尔代夫拉菲亚',
|
||||||
|
'MWK': '马拉维克瓦查',
|
||||||
|
'MXN': '墨西哥比索',
|
||||||
|
'MYR': '马来西亚林吉特',
|
||||||
|
'MZN': '莫桑比克梅蒂卡尔',
|
||||||
|
'NAD': '纳米比亚元',
|
||||||
|
'NGN': '尼日利亚奈拉',
|
||||||
|
'NIO': '尼加拉瓜科多巴',
|
||||||
|
'NOK': '挪威克朗',
|
||||||
|
'NPR': '尼泊尔卢比',
|
||||||
|
'NZD': '新西兰元',
|
||||||
|
'OMR': '阿曼里亚尔',
|
||||||
|
'PAB': '巴拿马巴波亚',
|
||||||
|
'PEN': '秘鲁新索尔',
|
||||||
|
'PGK': '巴布亚新几内亚基那',
|
||||||
|
'PHP': '菲律宾比索',
|
||||||
|
'PKR': '巴基斯坦卢比',
|
||||||
|
'PLN': '波兰兹罗提',
|
||||||
|
'PYG': '巴拉圭瓜拉尼',
|
||||||
|
'QAR': '卡塔尔里亚尔',
|
||||||
|
'RON': '罗马尼亚列伊',
|
||||||
|
'RSD': '塞尔维亚第纳尔',
|
||||||
|
'RUB': '俄罗斯卢布',
|
||||||
|
'RWF': '卢旺达法郎',
|
||||||
|
'SAR': '沙特里亚尔',
|
||||||
|
'SBD': '所罗门群岛元',
|
||||||
|
'SCR': '塞舌尔卢比',
|
||||||
|
'SDG': '苏丹镑',
|
||||||
|
'SEK': '瑞典克朗',
|
||||||
|
'SGD': '新加坡元',
|
||||||
|
'SHP': '圣赫勒拿镑',
|
||||||
|
'SLL': '塞拉利昂利昂',
|
||||||
|
'SOS': '索马里先令',
|
||||||
|
'SRD': '苏里南元',
|
||||||
|
'SSP': '南苏丹镑',
|
||||||
|
'STN': '圣多美和普林西比多布拉',
|
||||||
|
'SVC': '萨尔瓦多科朗',
|
||||||
|
'SYP': '叙利亚镑',
|
||||||
|
'SZL': '斯威士兰里兰吉尼',
|
||||||
|
'THB': '泰铢',
|
||||||
|
'TJS': '塔吉克斯坦索莫尼',
|
||||||
|
'TMT': '土库曼斯坦马纳特',
|
||||||
|
'TND': '突尼斯第纳尔',
|
||||||
|
'TOP': '汤加潘加',
|
||||||
|
'TRY': '土耳其里拉',
|
||||||
|
'TTD': '特立尼达和多巴哥元',
|
||||||
|
'TWD': '新台币',
|
||||||
|
'TZS': '坦桑尼亚先令',
|
||||||
|
'UAH': '乌克兰格里夫尼亚',
|
||||||
|
'UGX': '乌干达先令',
|
||||||
|
'USD': '美元',
|
||||||
|
'UYU': '乌拉圭比索',
|
||||||
|
'UZS': '乌兹别克斯坦苏姆',
|
||||||
|
'VES': '委内瑞拉玻利瓦尔',
|
||||||
|
'VND': '越南盾',
|
||||||
|
'VUV': '瓦努阿图瓦图',
|
||||||
|
'WST': '萨摩亚塔拉',
|
||||||
|
'XAF': '中非金融合作法郎',
|
||||||
|
'XCD': '东加勒比元',
|
||||||
|
'XOF': '非洲金融共同体法郎',
|
||||||
|
'XPF': '太平洋法郎',
|
||||||
|
'YER': '也门里亚尔',
|
||||||
|
'ZAR': '南非兰特',
|
||||||
|
'ZMW': '赞比亚克瓦查',
|
||||||
|
'ZWL': '津巴布韦元',
|
||||||
|
},
|
||||||
'error': {
|
'error': {
|
||||||
'system error': '系统错误',
|
'system error': '系统错误',
|
||||||
'api not found': '接口调用失败',
|
'api not found': '接口调用失败',
|
||||||
@@ -50,6 +212,7 @@ export default {
|
|||||||
'email': '电子邮箱',
|
'email': '电子邮箱',
|
||||||
'nickname': '昵称',
|
'nickname': '昵称',
|
||||||
'oldPassword': '当前密码',
|
'oldPassword': '当前密码',
|
||||||
|
'defaultCurrency': '默认货币',
|
||||||
},
|
},
|
||||||
'parameterizedError': {
|
'parameterizedError': {
|
||||||
'parameter invalid': '{parameter}无效',
|
'parameter invalid': '{parameter}无效',
|
||||||
@@ -60,6 +223,7 @@ export default {
|
|||||||
'parameter cannot be blank': '{parameter}不能为空',
|
'parameter cannot be blank': '{parameter}不能为空',
|
||||||
'parameter invalid username format': '{parameter}格式错误',
|
'parameter invalid username format': '{parameter}格式错误',
|
||||||
'parameter invalid email format': '{parameter}格式错误',
|
'parameter invalid email format': '{parameter}格式错误',
|
||||||
|
'parameter invalid currency': '{parameter}格式错误',
|
||||||
},
|
},
|
||||||
'OK': '确定',
|
'OK': '确定',
|
||||||
'Cancel': '取消',
|
'Cancel': '取消',
|
||||||
@@ -92,6 +256,7 @@ export default {
|
|||||||
'Your email address': '你的电子邮箱地址',
|
'Your email address': '你的电子邮箱地址',
|
||||||
'Nickname': '昵称',
|
'Nickname': '昵称',
|
||||||
'Your nickname': '你的昵称',
|
'Your nickname': '你的昵称',
|
||||||
|
'Default Currency': '默认货币',
|
||||||
'Log In': '登录',
|
'Log In': '登录',
|
||||||
'Don\'t have an account?': '还没有账号?',
|
'Don\'t have an account?': '还没有账号?',
|
||||||
'Create an account': '创建新账号',
|
'Create an account': '创建新账号',
|
||||||
@@ -102,6 +267,7 @@ export default {
|
|||||||
'Password and confirmation password do not match': '密码和确认密码不匹配',
|
'Password and confirmation password do not match': '密码和确认密码不匹配',
|
||||||
'Email address cannot be empty': '电子邮箱地址不能为空',
|
'Email address cannot be empty': '电子邮箱地址不能为空',
|
||||||
'Nickname cannot be empty': '昵称不能为空',
|
'Nickname cannot be empty': '昵称不能为空',
|
||||||
|
'Default currency cannot be empty': '默认货币不能为空',
|
||||||
'Unable to login': '无法登录',
|
'Unable to login': '无法登录',
|
||||||
'Two-Factor Authentication': '两步验证',
|
'Two-Factor Authentication': '两步验证',
|
||||||
'Passcode': '验证码',
|
'Passcode': '验证码',
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import 'framework7/css/framework7.bundle.css';
|
|||||||
import 'framework7-icons';
|
import 'framework7-icons';
|
||||||
|
|
||||||
import { getAllLanguages, getLanguage, getDefaultLanguage, getI18nOptions, getLocalizedError } from './lib/i18n.js';
|
import { getAllLanguages, getLanguage, getDefaultLanguage, getI18nOptions, getLocalizedError } from './lib/i18n.js';
|
||||||
|
import currency from './consts/currency.js';
|
||||||
import version from './lib/version.js';
|
import version from './lib/version.js';
|
||||||
import settings from './lib/settings.js';
|
import settings from './lib/settings.js';
|
||||||
import services from './lib/services.js';
|
import services from './lib/services.js';
|
||||||
@@ -43,6 +44,25 @@ Vue.prototype.$setLanguage = function (locale) {
|
|||||||
document.querySelector('html').setAttribute('lang', locale);
|
document.querySelector('html').setAttribute('lang', locale);
|
||||||
return locale;
|
return locale;
|
||||||
};
|
};
|
||||||
|
Vue.prototype.$getAllCurrencies = function () {
|
||||||
|
const allCurrencyCodes = currency.all;
|
||||||
|
const allCurrencies = [];
|
||||||
|
|
||||||
|
for (let i = 0; i < allCurrencyCodes.length; i++) {
|
||||||
|
const code = allCurrencyCodes[i];
|
||||||
|
|
||||||
|
allCurrencies.push({
|
||||||
|
code: code,
|
||||||
|
displayName: i18n.t(`currency.${code}`)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
allCurrencies.sort(function(c1, c2){
|
||||||
|
return c1.displayName.localeCompare(c2.displayName);
|
||||||
|
})
|
||||||
|
|
||||||
|
return allCurrencies;
|
||||||
|
};
|
||||||
Vue.prototype.$isUserRegistrationEnabled = settings.isUserRegistrationEnabled;
|
Vue.prototype.$isUserRegistrationEnabled = settings.isUserRegistrationEnabled;
|
||||||
|
|
||||||
Vue.prototype.$alert = function (message, confirmCallback) {
|
Vue.prototype.$alert = function (message, confirmCallback) {
|
||||||
|
|||||||
@@ -47,6 +47,17 @@
|
|||||||
@input="nickname = $event.target.value"
|
@input="nickname = $event.target.value"
|
||||||
></f7-list-input>
|
></f7-list-input>
|
||||||
|
|
||||||
|
<f7-list-input
|
||||||
|
type="select"
|
||||||
|
:label="$t('Default Currency')"
|
||||||
|
:value="defaultCurrency"
|
||||||
|
@input="defaultCurrency = $event.target.value"
|
||||||
|
>
|
||||||
|
<option v-for="currency in allCurrencies"
|
||||||
|
:key="currency.code"
|
||||||
|
:value="currency.code">{{ currency.displayName }}</option>
|
||||||
|
</f7-list-input>
|
||||||
|
|
||||||
<f7-list-item class="lab-list-item-error-info" v-if="inputIsInvalid" :footer="$t(inputInvalidProblemMessage)"></f7-list-item>
|
<f7-list-item class="lab-list-item-error-info" v-if="inputIsInvalid" :footer="$t(inputInvalidProblemMessage)"></f7-list-item>
|
||||||
</f7-list>
|
</f7-list>
|
||||||
|
|
||||||
@@ -57,13 +68,17 @@
|
|||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
const self = this;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
username: '',
|
username: '',
|
||||||
password: '',
|
password: '',
|
||||||
confirmPassword: '',
|
confirmPassword: '',
|
||||||
email: '',
|
email: '',
|
||||||
nickname: '',
|
nickname: '',
|
||||||
signuping: false
|
defaultCurrency: self.$t('default.currency'),
|
||||||
|
signuping: false,
|
||||||
|
allCurrencies: self.$getAllCurrencies()
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -84,6 +99,8 @@ export default {
|
|||||||
return 'Email address cannot be empty';
|
return 'Email address cannot be empty';
|
||||||
} else if (!this.nickname) {
|
} else if (!this.nickname) {
|
||||||
return 'Nickname cannot be empty';
|
return 'Nickname cannot be empty';
|
||||||
|
} else if (!this.defaultCurrency) {
|
||||||
|
return 'Default currency cannot be empty';
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -115,7 +132,8 @@ export default {
|
|||||||
username: self.username,
|
username: self.username,
|
||||||
password: self.password,
|
password: self.password,
|
||||||
email: self.email,
|
email: self.email,
|
||||||
nickname: self.nickname
|
nickname: self.nickname,
|
||||||
|
defaultCurrency: self.defaultCurrency
|
||||||
}).then(response => {
|
}).then(response => {
|
||||||
self.signuping = false;
|
self.signuping = false;
|
||||||
self.$hideLoading();
|
self.$hideLoading();
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
<f7-list-input label="Confirmation Password" placeholder="Re-enter the password"></f7-list-input>
|
<f7-list-input label="Confirmation Password" placeholder="Re-enter the password"></f7-list-input>
|
||||||
<f7-list-input label="E-mail" placeholder="Your email address"></f7-list-input>
|
<f7-list-input label="E-mail" placeholder="Your email address"></f7-list-input>
|
||||||
<f7-list-input label="Nickname" placeholder="Your nickname"></f7-list-input>
|
<f7-list-input label="Nickname" placeholder="Your nickname"></f7-list-input>
|
||||||
|
<f7-list-input label="Default Currency" placeholder="Default Currency"></f7-list-input>
|
||||||
</f7-list>
|
</f7-list>
|
||||||
|
|
||||||
<f7-list no-hairlines-md v-else-if="!loading">
|
<f7-list no-hairlines-md v-else-if="!loading">
|
||||||
@@ -46,6 +47,17 @@
|
|||||||
@input="nickname = $event.target.value"
|
@input="nickname = $event.target.value"
|
||||||
></f7-list-input>
|
></f7-list-input>
|
||||||
|
|
||||||
|
<f7-list-input
|
||||||
|
type="select"
|
||||||
|
:label="$t('Default Currency')"
|
||||||
|
:value="defaultCurrency"
|
||||||
|
@input="defaultCurrency = $event.target.value"
|
||||||
|
>
|
||||||
|
<option v-for="currency in allCurrencies"
|
||||||
|
:key="currency.code"
|
||||||
|
:value="currency.code">{{ currency.displayName }}</option>
|
||||||
|
</f7-list-input>
|
||||||
|
|
||||||
<f7-list-item class="lab-list-item-error-info" v-if="inputIsInvalid" :footer="$t(inputInvalidProblemMessage)"></f7-list-item>
|
<f7-list-item class="lab-list-item-error-info" v-if="inputIsInvalid" :footer="$t(inputInvalidProblemMessage)"></f7-list-item>
|
||||||
</f7-list>
|
</f7-list>
|
||||||
|
|
||||||
@@ -81,6 +93,8 @@
|
|||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
const self = this;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
currentPassword: '',
|
currentPassword: '',
|
||||||
password: '',
|
password: '',
|
||||||
@@ -89,9 +103,12 @@ export default {
|
|||||||
email: '',
|
email: '',
|
||||||
oldNickname: '',
|
oldNickname: '',
|
||||||
nickname: '',
|
nickname: '',
|
||||||
|
defaultCurrency: '',
|
||||||
|
oldDefaultCurrency: '',
|
||||||
loading: true,
|
loading: true,
|
||||||
updating: false,
|
updating: false,
|
||||||
showInputPasswordSheet: false
|
showInputPasswordSheet: false,
|
||||||
|
allCurrencies: self.$getAllCurrencies()
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -104,7 +121,10 @@ export default {
|
|||||||
inputIsNotChangedProblemMessage() {
|
inputIsNotChangedProblemMessage() {
|
||||||
if (!this.password && !this.confirmPassword && !this.email && !this.nickname) {
|
if (!this.password && !this.confirmPassword && !this.email && !this.nickname) {
|
||||||
return 'Nothing has been modified';
|
return 'Nothing has been modified';
|
||||||
} else if (!this.password && !this.confirmPassword && this.email === this.oldEmail && this.nickname === this.oldNickname) {
|
} else if (!this.password && !this.confirmPassword &&
|
||||||
|
this.email === this.oldEmail &&
|
||||||
|
this.nickname === this.oldNickname &&
|
||||||
|
this.defaultCurrency === this.oldDefaultCurrency) {
|
||||||
return 'Nothing has been modified';
|
return 'Nothing has been modified';
|
||||||
} else if (!this.password && this.confirmPassword) {
|
} else if (!this.password && this.confirmPassword) {
|
||||||
return 'Password cannot be empty';
|
return 'Password cannot be empty';
|
||||||
@@ -141,9 +161,11 @@ export default {
|
|||||||
|
|
||||||
self.oldEmail = data.result.email;
|
self.oldEmail = data.result.email;
|
||||||
self.oldNickname = data.result.nickname;
|
self.oldNickname = data.result.nickname;
|
||||||
|
self.oldDefaultCurrency = data.result.defaultCurrency;
|
||||||
|
|
||||||
self.email = self.oldEmail
|
self.email = self.oldEmail
|
||||||
self.nickname = self.oldNickname;
|
self.nickname = self.oldNickname;
|
||||||
|
self.defaultCurrency = self.oldDefaultCurrency;
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
self.loading = false;
|
self.loading = false;
|
||||||
|
|
||||||
@@ -184,7 +206,8 @@ export default {
|
|||||||
password: self.password,
|
password: self.password,
|
||||||
oldPassword: self.currentPassword,
|
oldPassword: self.currentPassword,
|
||||||
email: self.email,
|
email: self.email,
|
||||||
nickname: self.nickname
|
nickname: self.nickname,
|
||||||
|
defaultCurrency: self.defaultCurrency
|
||||||
}).then(response => {
|
}).then(response => {
|
||||||
self.updating = false;
|
self.updating = false;
|
||||||
self.$hideLoading();
|
self.$hideLoading();
|
||||||
|
|||||||
Reference in New Issue
Block a user