Skip to content

Commit

Permalink
Merge pull request #44 from grahammendick/dateconverter
Browse files Browse the repository at this point in the history
  • Loading branch information
grahammendick committed Dec 30, 2015
2 parents aa3d003 + 93d593a commit ac34c54
Show file tree
Hide file tree
Showing 7 changed files with 563 additions and 67 deletions.
3 changes: 3 additions & 0 deletions NavigationJS/src/config/StateInfoConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ class StateInfoConfig {
state.defaultTypes[key] = ConverterFactory.getConverter(state.defaults[key]).name;
state.formattedDefaults[key] = ReturnDataManager.formatURLObject(key, state.defaults[key], state).val;
}
for (var key in state.defaultTypes) {
ConverterFactory.getConverterFromName(state.defaultTypes[key]);
}
if (!state.key)
throw new Error('key is mandatory for a State');
if (dialog.states[state.key])
Expand Down
5 changes: 4 additions & 1 deletion NavigationJS/src/converter/ConverterFactory.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
import ArrayConverter = require('./ArrayConverter');
import BooleanConverter = require('./BooleanConverter');
import DateConverter = require('./DateConverter');
import NumberConverter = require('./NumberConverter');
import StringConverter = require('./StringConverter');
import TypeConverter = require('./TypeConverter');

var keyToConverterList: { [index: string]: TypeConverter } = {};
var nameToKeyList: { [index: string]: string } = {};
var converterArray: TypeConverter[] = [new StringConverter('0'), new BooleanConverter('1'), new NumberConverter('2')];
var converterArray: TypeConverter[] = [
new StringConverter('0'), new BooleanConverter('1'),
new NumberConverter('2'), new DateConverter('3')];
for (var i = 0; i < converterArray.length; i++) {
var converter = converterArray[i];
var arrayConverter = new ArrayConverter(converter, 'a' + converter.key)
Expand Down
25 changes: 25 additions & 0 deletions NavigationJS/src/converter/DateConverter.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import TypeConverter = require('./TypeConverter');

class DateConverter extends TypeConverter {
constructor(key: string) {
super(key, 'date');
}

convertFrom(val: string): any {
var dateParts = val.split('-');
if (dateParts.length !== 3)
throw Error(val + ' is not a valid date');
var date = new Date(+dateParts[0], +dateParts[1] - 1, +dateParts[2]);
if (isNaN(+date))
throw Error(val + ' is not a valid date');
return date;
}

convertTo(val: Date): { val: string, vals?: string[] } {
var year = val.getFullYear();
var month = ('0' + (val.getMonth() + 1)).slice(-2);
var day = ('0' + val.getDate()).slice(-2);
return { val: year + '-' + month + '-' + day };
}
}
export = DateConverter;
16 changes: 10 additions & 6 deletions NavigationJS/src/converter/TypeConverter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,23 @@
return null;
}

private static getTypeName(obj: any): string {
var typeName: string = Object.prototype.toString.call(obj);
return typeName.substring(8, typeName.length - 1).toLowerCase();
}

static getName(obj: any) {
var fullName = typeof obj;
var subName: string;
if (Object.prototype.toString.call(obj) === '[object Array]') {
var fullName = this.getTypeName(obj);
if (fullName === 'array') {
var arr: any[] = obj;
subName = 'string';
var subName = 'string';
for (var i = 0; i < arr.length; i++) {
if (arr[i] != null && arr[i].toString()) {
subName = typeof arr[i];
subName = this.getTypeName(arr[i]);
break;
}
}
fullName = subName + 'array';
fullName = subName + fullName;
}
return fullName;
}
Expand Down
Loading

0 comments on commit ac34c54

Please sign in to comment.