aboutsummaryrefslogtreecommitdiffstats
path: root/97suifangqa/apps/indicator/static/javascripts/card_chart.js
diff options
context:
space:
mode:
authorAlvin Li <liweitianux@gmail.com>2013-08-21 07:55:06 +0800
committerAlvin Li <liweitianux@gmail.com>2013-08-21 07:55:06 +0800
commit3ef1e03e4273544cce177ce7fa0e0ab75eded990 (patch)
treebdce02e1e308dd040918de95ecce9b8254c3fc65 /97suifangqa/apps/indicator/static/javascripts/card_chart.js
parent9d07e8a26657542c98535abb7812d83a98839918 (diff)
download97dev-3ef1e03e4273544cce177ce7fa0e0ab75eded990.tar.bz2
med 'indicator/static/javascripts/load_card.js' to 'card_chart.js
* set Highcharts global options in 'card_chart.js' * 'indicator/templates/indicator/SheetDefault.html': added js function 'chart_getdata_draw()' to draw chart for card * improved 'indicator.views.ajax_get_card_data_chart()' * implemented drawing chart for 'FLOAT_TYPE' and 'RANGE_TYPE' indicators * added datetime plugin 'momentjs': 'indicator/static/plugins/moment/', version 2.1.0 * 'indicator/templates/indicator/NewDeleteIndex.html': added link button to goto 'indicator_status' SheetDefault.html page * added option 'useHTML: true' for Highcharts; improved the display style of ylabels, if value >9999, then show in exponential notation * improved drawing of 'detail_chart', and the 'detail_card_info' * moved js global var to 'SheetDefault.html'; renamed var 'card_detail_id' to 'detail_card_id' * fixed js local variables problem; added 'var' keyword * added check of 'date' for 'indicator.models.IndicatorRecord' * ThickBox: removed param 'no1_title' from thickbox popup page's url placed the param 'card_id' before 'TB_iframe' * changed to use 'ANNOTATION_TYPES' for 'sciblog.models.BlogAnnotation' * improved 'indicator/templates/indicator/popup/IndexDesc.html' improved 'indicator.views.indicator_indexdesc()' * added 'sympy' to 'env/requirements.pip' TODO: * BlogAnnotation: 'get_absolute_url()' -> 'IndexDesc: go_library_btn' * detail_card_info: data table * Data input/edit form, and validate & submit * Highcharts xAxis labels problem ??
Diffstat (limited to '97suifangqa/apps/indicator/static/javascripts/card_chart.js')
-rw-r--r--97suifangqa/apps/indicator/static/javascripts/card_chart.js272
1 files changed, 272 insertions, 0 deletions
diff --git a/97suifangqa/apps/indicator/static/javascripts/card_chart.js b/97suifangqa/apps/indicator/static/javascripts/card_chart.js
new file mode 100644
index 0000000..42a5220
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/javascripts/card_chart.js
@@ -0,0 +1,272 @@
+// set global options for hightcharts {{{
+$(function() {
+ Highcharts.setOptions ({
+ //chart: {
+ // type: 'areaspline'
+ // //marginLeft: 25,
+ // //height: 223,
+ // //spacingTop: 10,
+ // //spacingBottom: 4
+ // //overflow: false,
+ // //zIndex: 5
+ //},
+ colors: ['#31B6AD'],
+ credits: {
+ enabled: false
+ },
+ legend: {
+ enabled: false
+ },
+ plotOptions: {
+ series: {
+ fillOpacity: 0.12,
+ lineWidth: 1,
+ marker: {
+ enabled: true, //false false的时候就不会突出显示点
+ lineColor: '#31B6AD',
+ lineWidth: 1,
+ radius: 3, // 点的大小
+ fillColor: '#FFFFFF' // 设置点中间填充的颜色
+ },
+ shadow: false
+ //threshold: null
+ }
+ },
+ title: {
+ text: null
+ },
+ tooltip: {
+ useHTML: true,
+ style: {
+ padding: '7px'
+ },
+ borderColor: '#EAEAEA'
+ },
+ xAxis: {
+ type: 'datetime',
+ dateTimeLabelFormats: {
+ day: '%m-%e',
+ month: '%Y-%m'
+ },
+ lineColor: '#CECECE',
+ gridLineColor: '#EFECEF',
+ gridLineWidth: 1,
+ tickWidth: 0,
+ labels: {
+ step: 2,
+ maxStaggerLines: 1
+ },
+ startOnTick: false,
+ endOnTick: false,
+ //tickInterval: (7 * 24 * 3600 * 1000), // 7 days
+ tickInterval: null,
+ tickPixelInterval: 50,
+ tickColor: '#FFFFFF'
+ },
+ yAxis: {
+ title: {
+ text: null
+ },
+ min: null,
+ max: null,
+ //allowDecimals: false,
+ startOnTick: false,
+ endOnTick: false,
+ tickInterval: null,
+ tickPixelInterval: 40,
+ lineColor: '#CECECE',
+ lineWidth: 2,
+ gridLineColor: '#EFECEF',
+ gridLineWidth: 1,
+ minPadding: 0.3,
+ maxPadding: 1.2
+ }
+ });
+});
+// }}}
+
+$(document).ready(function(){
+ //详细历史记录
+ $(".detail_history").bind("click", function(){
+ // update 'detail_card_id'
+ detail_card_id = $(this).closest(".index_card").attr("id").replace('index_card_', '');
+ // check if this card has data
+ // if has no data, then exists div class="edit_icon_container"
+ if ($("#index_card_"+detail_card_id + " .edit_icon_container").length) {
+ $(".detail_card_info").hide();
+ return false;
+ }
+ // get the index title and set for the 'detail card'
+ var index_title = $("#index_card_"+detail_card_id + " .card_title").html();
+ $(".detail_card_info .card_title .title").html(index_title);
+ // set date for the 'shift_date' buttons
+ var date_fmt = 'YYYY-MM-DD';
+ var today_mm = moment();
+ var today_str = today_mm.format(date_fmt);
+ var three_month_ago_str = today_mm.clone().subtract('months', 3).format(date_fmt);
+ var six_month_ago_str = today_mm.clone().subtract('months', 6).format(date_fmt);
+ $(".recent_three_month").attr('end_date', today_str);
+ $(".recent_three_month").attr('begin_date', three_month_ago_str);
+ $(".recent_six_month").attr('end_date', today_str);
+ $(".recent_six_month").attr('begin_date', six_month_ago_str);
+ // draw chart
+ // pass default global var 'begin_date_str' and 'end_date_str'
+ // detail_chart global var: 'detail_chart'
+ // options for chart global var: 'options_chart_<id>'
+ // update global var 'detail_chart_options'
+ detail_chart_options = 'options_chart_' + detail_card_id;
+ redraw_chart(detail_chart_str, detail_chart_options,
+ begin_date_str, end_date_str
+ );
+ $(".act_card_container").addClass("move_div_2_left");
+ return false;
+ });
+
+ //切换日期
+ $(".shift_date").bind("click", function(){
+ $(".shift_date").addClass("unselected");
+ $(this).removeClass("unselected");
+ var begin_str = $(this).attr("begin_date");
+ var end_str = $(this).attr("end_date");
+ redraw_chart(detail_chart_str, detail_chart_options,
+ begin_str, end_str
+ );
+ return false;
+ });
+
+ //根据日期搜索
+ $("#search_begin_date, #search_end_date").bind("change", function(){
+ $(".shift_date").addClass("unselected");
+ var begin_str = $("#search_begin_date").val();
+ var end_str = $("#search_end_date").val();
+ redraw_chart(detail_chart_str, detail_chart_options,
+ begin_str, end_str
+ );
+ return false;
+ });
+
+ //浏览更多
+ $(".see_more_btn").bind("click", function(){
+ var btn = $(".see_more_btn");
+ var end_str = end_date_str;
+ get_card_data_table(null, end_str, false);
+ return false;
+ });
+
+ //收起历史记录
+ $(".collapse_btn").bind("click", function(){
+ // //删除图表数据
+ // var serieses = detail_chart.series;
+ // for (series_key in serieses){
+ // serieses[series_key].remove();
+ // }
+ //删除图表
+ if (window[detail_chart_str] != null) {
+ window[detail_chart_str].destroy();
+ window[detail_chart_str] = null;
+ }
+ //删除表格数据
+ $("tr").not(".first_line").remove();
+ //隐藏div
+ $(".detail_card_info").hide();
+ //初始化详细卡片id
+ detail_card_id = "-1";
+ //添加删除div位置初始化
+ $(".act_card_container").removeClass("move_div_2_left");
+ return false;
+ });
+});
+
+// 重画历史记录图表
+// destroy the original chart and new.
+// chart_str: (string),
+// name of global var of chart to draw;
+// and the div id to contain the chart.
+// options_str: (string),
+// name of global var of the chart options for drawing,
+// used to draw the detail chart by updating its data.
+// begin, end: (string), 'YYYY-MM-DD'
+function redraw_chart(chart_str, options_str, begin, end){
+ var time = moment().valueOf();
+ $.ajax({
+ type: 'get',
+ url: indicator_url + 'ajax/get_card_data_chart',
+ data: 'card_id='+detail_card_id + '&begin='+begin + '&end='+end + '&time='+time,
+ dataType: 'json',
+ success: function(dataJson) {
+ // 设置默认起始结束时间
+ //console.log(begin);
+ //console.log(end);
+ var begin_date_js = $.datepicker.parseDate('yy-mm-dd', begin);
+ var end_date_js = $.datepicker.parseDate('yy-mm-dd', end);
+ $("#search_begin_date").datepicker("setDate", begin_date_js);
+ $("#search_end_date").datepicker("setDate", end_date_js);
+
+ //显示
+ $(".detail_card_info").show();
+
+ //删除chart已有数据
+ //var serieses = detail_chart.series;
+ //for (series_key in serieses){
+ // serieses[series_key].remove();
+ //}
+ //更新chart数据
+ //detail_chart.addSeries({
+ // data: dataJson,
+ // pointStart: begin_date_log_UTC_time,
+ // pointInterval: pointInterval
+ //});
+
+ // destroy original chart and
+ // redraw with new options and data
+ var begin_dt = moment(begin);
+ var end_dt = moment(end);
+ window[options_str].chart.renderTo = chart_str;
+ window[options_str].xAxis.min = begin_dt.valueOf();
+ window[options_str].xAxis.max = end_dt.valueOf();
+ window[options_str].series[0].data = dataJson;
+ // clickable data point
+ window[options_str].plotOptions = {
+ series: {
+ cursor: 'pointer',
+ point: {
+ events: {
+ click: function(event) {
+ //console.log(event);
+ //console.log(this);
+ var date = moment(this.x).utc().format('YYYY-MM-DD');
+ TB_show(false, indicator_url+'popup/edithistorydata?card_id='+detail_card_id+'&date='+date+'&TB_iframe=true&transfer_params&height=351&width=630', false);
+ }
+ }
+ }
+ }
+ }
+ if (window[chart_str] != null) {
+ window[chart_str].destroy();
+ window[chart_str] = null;
+ }
+ window[chart_str] = new Highcharts.Chart(window[options_str]);
+
+ //更新table数据
+ //TODO
+ get_card_data_table(begin, end, true);
+ }
+ });
+}
+
+function get_card_data_table(begin, end, redraw){
+ var time = moment().valueOf();
+ $.ajax({
+ type: 'get',
+ url: indicator_url + 'ajax/get_card_data_table',
+ data: 'card_id='+detail_card_id + '&begin='+begin + '&end='+end + '&time='+time,
+ success: function(data) {
+ if(redraw){
+ $("tr").not(".first_line").remove();
+ }
+ $("table").append(data);
+ }
+ });
+}
+
+// vim: set ts=8 sw=4 tw=0 fenc=utf-8 ft=javascript: //