티스토리 뷰
차트 데이터를 사용하기 위해서 클라이언트에서 데이터를 생성합니다.
In order to use graph data, we generate data from the client.
source :
MakeChartDate ver 2017.02.22
Description: 차트데이터를 생성합니다.
Query String |
---|
Input | Name | Value (기본값) | parameter comment |
---|---|---|---|
format : String | YYYY-MM-DD HH:mm:ss |
리턴받을 날짜 형식을 지정합니다. 기본값은 YYYY-MM-DD HH:mm:ss 이며, 날짜설정 옵션은 문서하단의 Format 항목을 참조하세요. |
|
categoryField : String |
category | 카테고리(대상) 필드명을 설정합니다. 기본값은 category 입니다. | |
fromDate : Date / String |
new Date().setDate( new Date().getDate()-1 ) |
기본값은 하루전 날짜이며, 데이터형식 new Date() 혹은 문자열 형식 "2017-02-22 10:51:23" 으로 값을 받습니다. |
|
toDate : Date / String |
new Date() |
기본값은 현재 날짜이며, 데이터형식 new Date() 혹은 문자열 형식 "2017-02-22 10:51:23" 으로 값을 받습니다. |
|
intervalSeconds : Number |
15 * 60 |
날짜 데이터의 주기이며 단위는 Seconds 입니다. 기본값은 900 즉 15 * 60 = 15분 이며, 30분일 경우 1800 혹은 30 * 60 처럼 입력합니다. |
|
valueField : String / Array |
VAL |
값이 표기될 필드명을 설정합니다. 기본값은 VAL 입니다. 만약 값이 여러개일 경우 Array[ VAL_0, VAL_1, VAL_2 ... ]로 설정하세요. |
|
valueMin : Number / Array |
1 |
값 생성에 사용될 최소값. 기본값은 1 입니다. 만약 valueField에서 설정된 값이 배열일 경우 valueMin 항목도 배열로 최소값을 설정할 수 있습니다. Array[ 1, 100, 200 ... ] |
|
valueMax : Number / Array |
100 |
값 생성에 사용될 최대값. 기본값은 100 입니다. 만약 valueField에서 설정된 값이 배열일 경우 valueMax 항목도 배열로 최대값을 설정할 수 있습니다. Array[ 1, 100, 200 ... ] |
|
postfix : Object | {"rqSource":"client", "ErrCode":0, "ErrMsg":"Success"} |
postfix 될 json 옵션입니다. 기본값은 아래와 같습니다. {"rqSource":"client", "ErrCode":0, "ErrMsg":"Success"}
Note!! postfix 옵션을 사용하지 않으려면 "" (공백) 혹은 null 값을 사용하길 권장하며 postfix 옵션을 사용하게 되면 자동으로 Total 항목과 Record 항목이 추가되어 결과를 리턴합니다. |
|
debug : Boolean | false |
디버그 모드. 기본값은 false. true로 설정시 콘솔 객체 그룹에
1. 파라메터로 받은 날짜 2. unix 로 변환된 날짜 3. unix를 결과에 출력하기위해 다시 format 형식으로 반환하는 날짜
이렇게 총 3개의 날짜 형식을 출력합니다. |
.json Returns: Object
객체에서 .json() 을 사용하여 생성된 차트값을 리턴받습니다.
1
2
|
var dateJson = new GetDateJson();
console.log( dateJson.json );
|
cs |
.json( Object )
생성된 객체에서 .json( Object ) 을 사용하여 옵션을 변경합니다.
1
2
3
4
5
6
7
8
9
10
11
12
|
var dateJson2 = new GetDateJson();
dateJson2.json = {
"debug": true,
"format" : "YYYY-MM-DD HH",
"fromDate" : "2017-03-01 12",
"toDate" : "2017-03-03 17",
"intervalSeconds" : 60*60,
"valueField" : ["VAL_0", "VAL_1", "VAL_2"],
"valueMin" : [1,100,200],
"valueMax" : [100,200,300],
};
console.log( dateJson2.json );
|
cs |
Format
Token | Output | |
---|---|---|
Month | M | 1 2 ... 11 12 |
Mo | 1st 2nd ... 11th 12th | |
MM | 01 02 ... 11 12 | |
MMM | Jan Feb ... Nov Dec | |
MMMM | January February ... November December | |
Quarter | Q | 1 2 3 4 |
Qo | 1st 2nd 3rd 4th | |
Day of Month | D | 1 2 ... 30 31 |
Do | 1st 2nd ... 30th 31st | |
DD | 01 02 ... 30 31 | |
Day of Year | DDD | 1 2 ... 364 365 |
DDDo | 1st 2nd ... 364th 365th | |
DDDD | 001 002 ... 364 365 | |
Day of Week | d | 0 1 ... 5 6 |
do | 0th 1st ... 5th 6th | |
dd | Su Mo ... Fr Sa | |
ddd | Sun Mon ... Fri Sat | |
dddd | Sunday Monday ... Friday Saturday | |
Day of Week (Locale) | e | 0 1 ... 5 6 |
Day of Week (ISO) | E | 1 2 ... 6 7 |
Week of Year | w | 1 2 ... 52 53 |
wo | 1st 2nd ... 52nd 53rd | |
ww | 01 02 ... 52 53 | |
Week of Year (ISO) | W | 1 2 ... 52 53 |
Wo | 1st 2nd ... 52nd 53rd | |
WW | 01 02 ... 52 53 | |
Year | YY | 70 71 ... 29 30 |
YYYY | 1970 1971 ... 2029 2030 | |
Y | 1970 1971 ... 9999 +10000 +10001 Note: This complies with the ISO 8601 standard for dates past the year 9999 |
|
Week Year | gg | 70 71 ... 29 30 |
gggg | 1970 1971 ... 2029 2030 | |
Week Year (ISO) | GG | 70 71 ... 29 30 |
GGGG | 1970 1971 ... 2029 2030 | |
AM/PM | A | AM PM |
a | am pm | |
Hour | H | 0 1 ... 22 23 |
HH | 00 01 ... 22 23 | |
h | 1 2 ... 11 12 | |
hh | 01 02 ... 11 12 | |
k | 1 2 ... 23 24 | |
kk | 01 02 ... 23 24 | |
Minute | m | 0 1 ... 58 59 |
mm | 00 01 ... 58 59 | |
Second | s | 0 1 ... 58 59 |
ss | 00 01 ... 58 59 | |
Fractional Second | S | 0 1 ... 8 9 |
SS | 00 01 ... 98 99 | |
SSS | 000 001 ... 998 999 | |
SSSS ... SSSSSSSSS | 000[0..] 001[0..] ... 998[0..] 999[0..] | |
Time zone | z or zz | EST CST ... MST PST Note: as of 1.6.0, the z/zz format tokens have been deprecated from plain moment objects. Read more about it here. However, they *do* work if you are using a specific time zone with the moment-timezone addon. |
Z | -07:00 -06:00 ... +06:00 +07:00 | |
ZZ | -0700 -0600 ... +0600 +0700 | |
Unix Timestamp | X | 1360013296 |
Unix Millisecond Timestamp | x | 1360013296123 |
Examples 1:
code) 객체 생성후 .json 으로 기본옵션 설정된 값을 호출합니다.
1
2
|
var makeChartDate = new MakeChartDate();
console.log( makeChartDate.json );
|
cs |
결과)
Examples 2:
code) 객체 생성후 .json( Object ) 로 옵션을 수정하고 설정된 값을 호출합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
var makeChartDate2 = new MakeChartDate();
makeChartDate2.json = {
"debug": true,
"postfix": "",
"format" : "YYYY-MM-DD HH",
"fromDate" : "2017-03-01 12",
"toDate" : "2017-03-03 17",
"intervalSeconds" : 60*60,
"valueField" : ["VAL_0", "VAL_1", "VAL_2"],
"valueMin" : [1,100,200],
"valueMax" : [100,200,300],
};
console.log( makeChartDate2.json );
|
cs |
결과)
Examples 3:
code) 객체생성과 동시에 옵션 Object 을 전달하여도 .json( Object ) 와 동일 한 결과를 리턴합니다.
1
2
3
4
5
6
7
8
9
10
11
|
var makeChartDate3 = new MakeChartDate({
"debug": true,
"format" : "YYYY-MM-DD HH",
"fromDate" : "2017-05-01 12",
"toDate" : "2017-05-05 17",
"intervalSeconds" : 60*60,
"valueField" : ["VAL_0", "VAL_1"],
"valueMin" : [1,100],
"valueMax" : [100,200],
});
console.log( makeChartDate3.json );
|
|
결과)
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 | var MakeChartDate = function($obj){ //private var name = "MakeChartDate"; var author = "허정진"; var ver = "2017.02.22"; //public this.name = name; this.resultJson; //this.extends = this.inherit( MakeChartDate, this.extends ); //instance extend //extend this.defaultObj = { "format" : "YYYY-MM-DD HH:mm:ss", "categoryField" : "category", "fromDate" : new Date().setDate( new Date().getDate()-1 ), "toDate" : new Date(), "intervalSeconds" : 15 * 60, "valueField" : "VAL", "valueMin" : 1, "valueMax" : 100, //"valueField" : ["VAL_0", "VAL_1", "VAL_2"], //"valueMin" : [1,100,200], //"valueMax" : [100,200,300], "postfix" : {"rqSource":"client", "ErrCode":0, "ErrMsg":"Success"}, "debug" : false, }; for(var key in $obj){ if( $obj.hasOwnProperty(key) ){ this.defaultObj[key] = $obj[key]; } } //build this.build.classLength++; this.build(); }//end. MakeChartDate MakeChartDate.prototype = (function(){ return{ // build: function(){ // if( typeof this.control == "undefined" || this.control.name != "Control" ){ // throw new Error( "["+this.name+"] : Control 객체를 상속받지 못했습니다. Control 객체를 먼저 '생성'해 주세요." ); // return false; // } }, inherit: function( Parent, Child ){ Child = function(){ Parent.call( this ); } try{ if (!Object.create) { Object.create = (function(){ function F(){} return function(o){ if (arguments.length != 1) { throw new Error('Object.create 구현은 한개의 매개변수만 받아들입니다. ( Object.create implementation only accepts one parameter. )'); } F.prototype = o; return new F(); } })(); } Child.prototype = Object.create( Parent.prototype ); Child.prototype.constructor = Child; //override //Child.prototype.build = function(){ alert('hi, I am a Child'); }; var child = new Child(); if(child instanceof Parent === true) return child; else return new Parent(); }catch(e){ throw new Error( "[ inherit Error ] : "+ Parent.name +"객체를 상속받지 못했습니다. "+ Parent.name +" 객체를 '확인'해 주세요." ); } }, getValue:function(){ var _this = this; var categoryField = _this.defaultObj.categoryField; var fromDate = _this.defaultObj.fromDate; var fromDateUnix = moment(fromDate).unix(); //=> var toDate = _this.defaultObj.toDate; var toDateUnix = moment(toDate).unix(); //=> var intervalSeconds = _this.defaultObj.intervalSeconds; var format = _this.defaultObj.format; var arr = []; var obj = {}; if( _this.defaultObj.debug ){ console.group( "[ "+_this.name + "Class ] debug : "+_this.defaultObj.debug ); console.log( "[ 입력받은 날짜 ] "+ fromDate +" / "+toDate ); console.log( "[ Unix 변환 moment(Date).unix() ] "+fromDateUnix +" / "+toDateUnix ); console.log( "[ 날짜변환 moment().unix(Date) ] "+moment.unix(fromDateUnix).format(format) +" / "+ moment.unix(toDateUnix).format(format) ); console.groupEnd(); } for(var i = fromDateUnix; i<=toDateUnix; i++){ if( i % intervalSeconds == 0 ){ obj = {}; obj[categoryField] = moment.unix(i).format(format); _this.getValueProcessing(obj); arr.push( obj ); } } _this.resultJson = _this.getJsonMerge( arr ); }, getValueProcessing:function($obj){ var _this = this; var valueField = _this.defaultObj.valueField; var valueMin = _this.defaultObj.valueMin; var valueMax = _this.defaultObj.valueMax; var vMin = valueMin; //배열이 아닌경우 기본값 적용을 위해서 var vMax = valueMax; if( (typeof valueField).toLowerCase() == "string" ){ $obj[valueField] = _this.getRandomize(valueMin, valueMax, true); }else if( Object.prototype.toString.call( valueField ) === '[object Array]' ){ valueField.forEach(function(item, index, array){ if( Object.prototype.toString.call( valueMin ) === '[object Array]' ) { vMin = valueMin[index]; } if( Object.prototype.toString.call( valueMax ) === '[object Array]' ) { vMax = valueMax[index]; } $obj[item] = _this.getRandomize(vMin, vMax, true); }); } }, getJsonMerge: function($arr){ var _this = this; var postfix = _this.defaultObj.postfix; if( postfix == "" || postfix == null || postfix.length < 0 ){ return $arr; }else{ postfix.Total = $arr.length; postfix.Record = $arr; return postfix; } }, getRandomize:function($min, $max, $maxValueContainBool){ var ver = "2017.02.22 허정진"; if( typeof $min == "undefined" || typeof $max == "undefined" ){ throw new Error("[ "+this.name + "Class ] getRandomize : 매개변수가 없습니다."); } var min = parseInt($min, 10); var max = parseInt($max, 10); if( min === max ) return min; else{ $maxValueContainBool = $maxValueContainBool || true; return Math.floor(Math.random() * ($max - $min + $maxValueContainBool)) + $min; } }, disable: function(){}, enable: function(){}, destroy: function(){ //주의!!. dispose는 맨 마지막으로 실행한다. 소거. this.dispose(); }, dispose: function(){ var object = this; var objectPrototype = object.__proto__; for( var key in object ){ if( object.hasOwnProperty(key) ){ delete object[key]; } } delete this.prototype; return; for( var key in objectPrototype ){ if( objectPrototype.hasOwnProperty(key) ){ delete objectPrototype[key]; } } }, //end. dispose get json(){ this.getValue(); return this.resultJson; }, set json($obj){ for(var key in $obj){ if( $obj.hasOwnProperty(key) ){ this.defaultObj[key] = $obj[key]; } } } }; })(); | cs |
'■ 프론트엔드 ■ > JavaScript' 카테고리의 다른 글
rgb를 16 진수로 (0) | 2017.03.20 |
---|---|
javascript 원의 자취 (0) | 2017.03.20 |
ajax class - sendRequest-ajax.js (0) | 2016.12.02 |
javascript 클래스와 jquery prototype 클래스 (0) | 2016.10.26 |
자바스크립트 7일전 날짜와 현재 날짜 그리고 시간 구하기 (0) | 2016.09.26 |