mirror of
https://github.com/wekan/wekan.git
synced 2025-04-22 21:17:18 -04:00
add the 'currency' custom field type
This commit is contained in:
parent
351d9d0c95
commit
3cf6ed916f
5 changed files with 56 additions and 2 deletions
|
@ -33,6 +33,17 @@ template(name="createCustomFieldPopup")
|
|||
option(value=value selected="selected") {{name}}
|
||||
else
|
||||
option(value=value) {{name}}
|
||||
|
||||
div.js-field-settings.js-field-settings-currency(class="{{#if isTypeNotSelected 'currency'}}hide{{/if}}")
|
||||
label
|
||||
| {{_ 'custom-field-currency-option'}}
|
||||
select.js-field-currency
|
||||
each getCurrencySymbols
|
||||
if selected
|
||||
option(value=value selected="selected") {{name}}
|
||||
else
|
||||
option(value=value) {{name}}
|
||||
|
||||
div.js-field-settings.js-field-settings-dropdown(class="{{#if isTypeNotSelected 'dropdown'}}hide{{/if}}")
|
||||
label
|
||||
| {{_ 'custom-field-dropdown-options'}}
|
||||
|
|
|
@ -16,12 +16,26 @@ BlazeComponent.extendComponent({
|
|||
}).register('customFieldsSidebar');
|
||||
|
||||
const CreateCustomFieldPopup = BlazeComponent.extendComponent({
|
||||
_types: ['text', 'number', 'date', 'dropdown'],
|
||||
_types: ['text', 'number', 'date', 'dropdown', 'currency'],
|
||||
|
||||
_defaultCurrencySymbols: [
|
||||
{ symbol: '$' },
|
||||
{ symbol: '€' },
|
||||
{ symbol: '£' },
|
||||
{ symbol: '¥' },
|
||||
],
|
||||
|
||||
onCreated() {
|
||||
this.type = new ReactiveVar(
|
||||
this.data().type ? this.data().type : this._types[0],
|
||||
);
|
||||
|
||||
this.currencySymbol = new ReactiveVar(
|
||||
this.data().settings && this.data().settings.currencySymbol
|
||||
? this.data().settings.currencySymbol
|
||||
: this._defaultCurrencySymbols[0].symbol,
|
||||
);
|
||||
|
||||
this.dropdownItems = new ReactiveVar(
|
||||
this.data().settings && this.data().settings.dropdownItems
|
||||
? this.data().settings.dropdownItems
|
||||
|
@ -44,6 +58,18 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
|
|||
return this.type.get() !== type;
|
||||
},
|
||||
|
||||
getCurrencySymbols() {
|
||||
const currentSymbol = this.currencySymbol.get();
|
||||
|
||||
return this._defaultCurrencySymbols.map(({ symbol }) => {
|
||||
return {
|
||||
name: symbol,
|
||||
value: symbol,
|
||||
selected: symbol === currentSymbol,
|
||||
};
|
||||
});
|
||||
},
|
||||
|
||||
getDropdownItems() {
|
||||
const items = this.dropdownItems.get();
|
||||
Array.from(this.findAll('.js-field-settings-dropdown input')).forEach(
|
||||
|
@ -62,6 +88,11 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
|
|||
getSettings() {
|
||||
const settings = {};
|
||||
switch (this.type.get()) {
|
||||
case 'currency': {
|
||||
const currencySymbol = this.currencySymbol.get();
|
||||
settings.currencySymbol = currencySymbol;
|
||||
break;
|
||||
}
|
||||
case 'dropdown': {
|
||||
const dropdownItems = this.getDropdownItems().filter(
|
||||
item => !!item.name.trim(),
|
||||
|
@ -80,6 +111,10 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
|
|||
const value = evt.target.value;
|
||||
this.type.set(value);
|
||||
},
|
||||
'change .js-field-currency'(evt) {
|
||||
const value = evt.target.value;
|
||||
this.currencySymbol.set(value);
|
||||
},
|
||||
'keydown .js-dropdown-item.last'(evt) {
|
||||
if (evt.target.value.trim() && evt.keyCode === 13) {
|
||||
const items = this.getDropdownItems();
|
||||
|
|
|
@ -256,6 +256,8 @@
|
|||
"current": "current",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Symbol",
|
||||
"custom-field-date": "Date",
|
||||
"custom-field-dropdown": "Dropdown List",
|
||||
"custom-field-dropdown-none": "(none)",
|
||||
|
|
|
@ -256,6 +256,8 @@
|
|||
"current": "current",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Symbol",
|
||||
"custom-field-date": "Date",
|
||||
"custom-field-dropdown": "Dropdown List",
|
||||
"custom-field-dropdown-none": "(none)",
|
||||
|
|
|
@ -22,7 +22,7 @@ CustomFields.attachSchema(
|
|||
* type of the custom field
|
||||
*/
|
||||
type: String,
|
||||
allowedValues: ['text', 'number', 'date', 'dropdown'],
|
||||
allowedValues: ['text', 'number', 'date', 'dropdown', 'currency'],
|
||||
},
|
||||
settings: {
|
||||
/**
|
||||
|
@ -30,6 +30,10 @@ CustomFields.attachSchema(
|
|||
*/
|
||||
type: Object,
|
||||
},
|
||||
'settings.currencySymbol': {
|
||||
type: String,
|
||||
optional: true,
|
||||
},
|
||||
'settings.dropdownItems': {
|
||||
/**
|
||||
* list of drop down items objects
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue