मैं एक combobox है ऑटो को सही जिसमें एक एक निश्चित समय अवधि चुन सकते हैं, उदाहरण के लिए:एक बता गया कि मूल्य
5 minutes
15 minutes
1 hour
2 hours
1 day
2 days
1 week
2 weeks
यह हमेशा सर्वर से मिनट की संख्या है, लेकिन उपयोगकर्ता wouldn 'पहुंचाता समझ में नहीं आता कि "10080" का अर्थ है (गणना करने का प्रयास करने से पहले: यह एक सप्ताह है)।
एक नई आवश्यकता यह है कि उपयोगकर्ता उस बॉक्स में मनमाना मूल्य टाइप करने में सक्षम होना चाहिए। जैसे "20 मिनट", "1 घंटा 5 मिनट", "2h 5m" या "1 डी 6h 120 मीटर"; और, यदि फ़ील्ड को एक निश्चित मान (उदाहरण के लिए 75) पर प्रोग्रामेटिक रूप से सेट किया गया है, तो फ़ील्ड को सही स्ट्रिंग (1 घंटा 15 मिनट)
दिखाया जाना चाहिए, इसलिए मैंने एक पार्सर और फॉर्मेटर फ़ंक्शन लिखा है (नीचे देखें) लेकिन मैं इन का उपयोग करने के लिए अपने combobox कैसे प्राप्त कर सकते हैं?
rawToValue:function(rawValue) {
console.log('rawToValue');
console.log(rawValue);
return this.parse(rawValue) || rawValue || null;
},
valueToRaw:function(value) {
console.log('valueToRaw');
console.log(value);
return this.format(value);
},
लेकिन वे कहा जाता है नहीं कर रहे हैं, मैं किसी भी सांत्वना लॉग उत्पादन नहीं मिलता:
मैं पहले से ही rawToValue/valueToRaw समारोह जोड़ी, मैं क्या datefield
कोड में पाया के समान अधिभावी की कोशिश की।
ये पार्सर/फ़ॉर्मेटर कार्य हैं:
Ext.define('AlarmTimeField',{
extend:'Ext.form.field.ComboBox',
format:function(minutes) {
var a = [];
Ext.each(this.units, function(unit) {
if(minutes >= unit.minutes) {
var unitCount = Math.floor(minutes/unit.minutes);
console.log(unitCount);
minutes = minutes-unitCount*unit.minutes;
a.push("" + unitCount + " " + (unitCount==1?unit.singular:unit.plural));
}
});
return a.join(' ');
},
parse:function(input) {
if(!input) return 0;
var me=this,
inputSplit = input.split(' '),
value = 0,
lastNum = 0;
Ext.each(inputSplit,function(input) {
if(!input) return;
else if(Ext.isNumeric(input)) lastNum = input;
else if(Ext.isNumeric(input[0])) {
var inputUnit = input.slice(-1),
inputValue = input.slice(0,-1);
Ext.each(me.units,function(unit) {
if(inputUnit==unit.abbr) {
value+=unit.minutes*inputValue;
}
});
}
else {
Ext.each(me.units,function(unit) {
if(input==unit.singular || input==unit.plural || input==unit.abbr) {
value+=unit.minutes*lastNum;
}
});
}
});
return value;
},
units:[{
minutes:10080,
abbr:'w',
singular:'week',
plural:'weeks'
},{
minutes:1440,
abbr:'d',
singular:'day',
plural:'days'
},{
minutes:60,
abbr:'h',
singular:'hour',
plural:'hours'
},{
minutes:1,
abbr:'m',
singular:'minute',
plural:'minutes'
}]
});
क्या आप इसके लिए एक पहेली प्रदान कर सकते हैं? – Harshal
https://fiddle.sencha.com/#view/editor&fiddle/1r95 – Alexander