Skip to content
Snippets Groups Projects
DateRange.js.map 10.7 KiB
Newer Older
Glenn Vorhes's avatar
Glenn Vorhes committed
{"version":3,"file":"DateRange.js","sourceRoot":"","sources":["../../src/reactComponents/DateRange.tsx"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,+BAAgC;AAGhC,qBAAmB;AACnB,+CAAwC;AACxC,gDAAgD;AAChD,yCAAkC;AAElC,SAAS,YAAY,CAAC,GAAgB;IAClC,IAAK,GAAY,CAAC,OAAO,EAAC;QACtB,OAAO,GAAW,CAAC;KACtB;SAAM;QACH,OAAO,IAAI,IAAI,CAAC,GAAa,CAAC,CAAC;KAClC;AACL,CAAC;AAeD,MAAa,SAAU,SAAQ,KAAK,CAAC,SAAyB;IAc1D,YAAY,KAAiB,EAAE,OAAe;QAC1C,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAd1B,YAAO,GAAG,kBAAQ,EAAE,CAAC;QACrB,UAAK,GAAG,kBAAQ,EAAE,CAAC;QAef,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnG,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC/B,MAAM,+DAA+D,CAAC;SACzE;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAC;YACtB,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;SACjD;aAAM;YACH,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;SACzB;QAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3B,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED,UAAU;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACvG,CAAC;IAGD,iBAAiB;QACb,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAqB,CAAC;QAC5E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAqB,CAAC;QAGxE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,IAAY,SAAS;QACjB,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;IACxE,CAAC;IAED,IAAY,WAAW;QAEnB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,eAAe,EAAC;YACtE,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,EAAC;YAC1H,OAAO,IAAI,CAAC;SACf;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAY,OAAO;QAEf,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,EAAC;YAC/E,OAAO,CAAC,CAAC;SACZ;aAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAC;YAC1C,OAAO,CAAC,CAAC;SACZ;QACD,OAAO,CAAC,CAAC;IACb,CAAC;IAEO,cAAc;QAElB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAC;YAClB,IAAI,IAAI,CAAC,WAAW,EAAC;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;gBAChC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;gBAE5B,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzD,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,KAAK,CAAC,mDAAmD,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBACxG,OAAO;aACV;SACJ;QAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAEO,QAAQ,CAAC,CAAO;QAEpB,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAEf,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAE1C,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAC9B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxD;iBAAM;gBACH,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;aAC5D;YAED,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAEO,MAAM,CAAC,CAAO;QAClB,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAE1C,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC5D;iBAAM;gBACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;aAChE;YAED,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM;QACF,OAAO,6BAAK,SAAS,EAAC,YAAY;YAC9B,oBAAC,kBAAQ,IAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAC,OAAO,EAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAA,CAAC,GAAG;YACvG,oBAAC,kBAAQ,IAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA,CAAA,CAAC,GAAG,CAC7F,CAAC;IACX,CAAC;CACJ;AArJD,8BAqJC","sourcesContent":["/**\r\n * Created by glenn on 6/12/2017.\r\n */\r\n\r\nimport React = require(\"react\");\r\n\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 as string);\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, {}> {\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\r\n        this.start = new Date(this.end.getTime());\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.getTime());\r\n        this.previousEnd = new Date(this.end.getTime());\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.getTime());\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.getTime());\r\n        this.previousEnd = new Date(this.end.getTime());\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.getTime());\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"]}