Newer
Older
{"version":3,"file":"DateRange.js","sourceRoot":"","sources":["../../src/reactComponents/DateRange.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Created by glenn on 6/12/2017.\r\n */\r\n\r\nimport {React} from './reactAndRedux';\r\nimport $ = require('jquery');\r\nimport 'jquery-ui';\r\nimport makeGuid from '../util/makeGuid';\r\nimport * as fixDate from './helpers/dateFormat';\r\nimport DatePick from './DatePick';\r\n\r\nfunction stringToDate(dte: string|Date){\r\n if ((dte as Date).getTime){\r\n return dte as Date;\r\n } else {\r\n return new Date(dte);\r\n }\r\n}\r\n\r\nexport interface iDateRange{\r\n maxRange: number;\r\n callback: (start: Date, end: Date, version?: number) => any;\r\n minRange?: number;\r\n maxDate?: Date;\r\n minDate?: Date;\r\n initialEnd?: Date;\r\n start?: Date;\r\n end?: Date;\r\n npmrds?: boolean;\r\n}\r\n\r\n\r\nexport class DateRange extends React.Component<iDateRange, null> {\r\n startId = makeGuid();\r\n endId = makeGuid();\r\n startInput: HTMLInputElement;\r\n endInput: HTMLInputElement;\r\n start: Date;\r\n end: Date;\r\n maxRange: number;\r\n minRange: number;\r\n numDays: number;\r\n versionTwoStart: Date;\r\n previousStart: Date;\r\n previousEnd: Date;\r\n\r\n constructor(props: iDateRange, context: Object) {\r\n super(props, context);\r\n\r\n this.versionTwoStart = new Date(2017, 1, 1);\r\n\r\n this.maxRange = Math.round(this.props.maxRange) - 1;\r\n this.minRange = typeof this.props['minRange'] == 'number' ? Math.round(this.props['minRange']) : 1;\r\n\r\n if (this.minRange > this.maxRange) {\r\n throw \"DateRange component: Max range must be greater than min range\";\r\n }\r\n\r\n if (this.props.initialEnd){\r\n this.end = stringToDate(this.props.initialEnd)\r\n } else {\r\n this.end = new Date();\r\n }\r\n\r\n this.end.setHours(0, 0, 0);\r\n this.start = new Date(this.end);\r\n this.start.setDate(this.start.getDate() - this.maxRange);\r\n this.setNumDays();\r\n }\r\n\r\n setNumDays() {\r\n this.numDays = Math.round((this.end.getTime() - this.start.getTime()) / (1000 * 60 * 60 * 24)) + 1;\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this.startInput = document.getElementById(this.startId) as HTMLInputElement;\r\n this.endInput = document.getElementById(this.endId) as HTMLInputElement;\r\n\r\n\r\n this.props.callback(this.start, this.end, this.version);\r\n }\r\n\r\n private get needReset(): boolean {\r\n return this.numDays > this.maxRange || this.numDays < this.minRange;\r\n }\r\n\r\n private get versionSpan(): boolean{\r\n\r\n if (this.start < this.versionTwoStart && this.end >= this.versionTwoStart){\r\n return true;\r\n } else if (fixDate.dateToString(this.versionTwoStart) === fixDate.dateToString(this.end) && this.start < this.versionTwoStart){\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private get version(): number{\r\n\r\n if (fixDate.dateToString(this.start) == fixDate.dateToString(this.versionTwoStart)){\r\n return 2;\r\n } else if (this.start >= this.versionTwoStart){\r\n return 2;\r\n }\r\n return 1;\r\n }\r\n\r\n private finalizeChange(){\r\n\r\n if (this.props.npmrds){\r\n if (this.versionSpan){\r\n this.start = this.previousStart;\r\n this.end = this.previousEnd;\r\n\r\n this.startInput.value = fixDate.dateToString(this.start);\r\n this.endInput.value = fixDate.dateToString(this.end);\r\n this.setNumDays();\r\n alert(\"Start and End dates must not span version break: \" + fixDate.dateToString(this.versionTwoStart));\r\n return;\r\n }\r\n }\r\n\r\n this.props.callback(this.start, this.end, this.version);\r\n }\r\n\r\n private setStart(s: Date) {\r\n\r\n this.previousStart = new Date(this.start);\r\n this.previousEnd = new Date(this.end);\r\n\r\n this.start = s;\r\n\r\n this.setNumDays();\r\n\r\n if (this.needReset) {\r\n this.end = new Date(this.start);\r\n\r\n if (this.numDays > this.maxRange) {\r\n this.end.setDate(this.end.getDate() + this.maxRange);\r\n } else {\r\n this.end.setDate(this.end.getDate() + this.minRange - 1);\r\n }\r\n\r\n this.endInput.value = fixDate.dateToString(this.end);\r\n this.setNumDays();\r\n }\r\n\r\n this.finalizeChange();\r\n }\r\n\r\n private setEnd(s: Date) {\r\n this.previousStart = new Date(this.start);\r\n this.previousEnd = new Date(this.end);\r\n\r\n this.end = s;\r\n this.setNumDays();\r\n\r\n if (this.needReset) {\r\n this.start = new Date(this.end);\r\n\r\n if (this.numDays > this.maxRange) {\r\n this.start.setDate(this.start.getDate() - this.maxRange);\r\n } else {\r\n this.start.setDate(this.start.getDate() - this.minRange + 1);\r\n }\r\n\r\n this.startInput.value = fixDate.dateToString(this.start);\r\n this.setNumDays();\r\n }\r\n\r\n this.finalizeChange();\r\n }\r\n\r\n render() {\r\n return <div className=\"date-range\">\r\n <DatePick id={this.startId} label=\"Start\" initialDate={this.start} change={(s) => {this.setStart(s)}}/>\r\n <DatePick id={this.endId} label=\"End\" initialDate={this.end} change={(s) => {this.setEnd(s)}}/>\r\n </div>;\r\n }\r\n}\r\n"]}