/
History Date Picker Chart with Search
History Date Picker Chart with Search
Sarah Padilla (Unlicensed)
Owned by Sarah Padilla (Unlicensed)
Description: This is an AM Chart that can show different queries. It can support up to 8 different lines. It also needs the moment.js file.
Model: searchDatesAM.f5m
JavaScript: moment.min.js
Make Your Own
- Drag out Ractive from components on the left side menu
- Under Properties, click ractive editor, then open editor
- Copy and paste the code below for template, model, style, and init, into the corresponding tabs
Template
Expand source
<div class="s-box"> <div class="searchBar"> <input id="inputText" class="s-input"/> <div class="s-search view-superman-value round icon-search" on-click="search"></div> </div> <div class="buttonBar"> <div class="s-button s-selected" id="day" on-click="day">Today</div> <div class="s-button" id="week" on-click="week">This Week</div> <div class="s-button" id="month" on-click="month">This Month</div> <div class="s-button" id="datePicker" on-click="datePicker">{{#if myStart==myEnd}}{{myStart}}{{else}}{{myStart}}-{{myEnd}}{{/if}}</div> </div> <div id="amChartPoint" style="width:100%; height:100%;"></div> </div>
Model
Expand source
{ data: { myStart: "Date Picker", myEnd: "Date Picker" } }
Style
Expand source
.s-box{ padding : 10px; border-radius : 5px; width : 100%; height : 100%; display : flex; flex-direction : column; flex : 1 1 auto; } .buttonBar{ width :100%; height :35px; border-radius : 5px; background-color: #4f7ab3; display : flex; flex-direction : row; justify-content : center; align-items : center; } .s-button{ color :#fff; border-radius : 5px; width :100%; height : 100%; font-weight : bold; padding : 10px 15px 10px 15px; display : flex; flex-direction : row; justify-content : center; align-items : center; cursor : pointer; } .s-selected{ background-color: #7093c1; } .searchBar{ width: 100%; height: 25px; margin-bottom: 10px; display: flex; flex-direction: row; justify-content: center; align-items: center; } .s-input{ height: 30px; width: 100%; border-radius: 5px; margin-right: 10px; } .s-search{ height: 25px; width: 25px; } .s-search:hover{ cursor: pointer; background-color: #62bee3; }
Init
Expand source
this.ractive.fire("obtainData"); var template = this; var model = this.ractive; var dataQuery = 'readAll('+template.view.querySelector("#inputText").value+').hisRead(today)'; function updateChart(newQuery, buttonInd){ var test = template.view.querySelector("#amChartPoint"); var buttonIds = [ template.view.querySelector("#day"), template.view.querySelector("#week"), template.view.querySelector("#month"), template.view.querySelector("#datePicker") ]; buttonIds.forEach(function(itm){ itm.style.backgroundColor = "#4f7ab3"; }); buttonIds[buttonInd].style.backgroundColor = "#7093c1"; setTimeout(function() { finstack.eval(newQuery, function(event){ var cols = []; event.result.columns.forEach(function(itm){ var t = /v\d+/.exec(itm.name); if(t !== null && t[0] == t.input){ if(itm.metadata) cols.push({dis: itm.metadata.idDis || itm.metadata.dis || itm.metadata.id, col: itm.name, unit: itm.metadata.unit || null, equipRefDis: itm.metadata.equipRefDis}); else cols.push({dis: itm.name, col: itm.name}); } }); var grphs = []; var cou = 0; cols.forEach(function(itm){ grphs.push({ "id": "g"+cou, "balloonText": ""+itm.equipRefDis+": [["+itm.col+"]] "+itm.unit+"", "lineThickness": 2, "title": itm.dis, "unit" : itm.unit, "valueField": itm.col, "fillAlphas": 0.2 //Area }); cou++; }); var myData = event.result.toObj(); var chartData =[]; var myData2 = []; myData.forEach(function(itm){ myData2.push({ "ts": itm.ts, "tsOffset": itm.tsOffset, "tsTimezone": itm.tsTimezone, "v0": itm.v0 || 0, "v1": itm.v1 || 0, "v2": itm.v2 || 0, "v3": itm.v3 || 0, "v4": itm.v4 || 0, "v5": itm.v5 || 0, "v6": itm.v6 || 0, "v7": itm.v7 || 0 }); }); myData2.forEach(function(itm){ chartData.push({ "ts": itm.ts, "tsOffset": itm.tsOffset, "tsTimezone": itm.tsTimezone, "v0": itm.v0.toFixed(1) || null, "v1": itm.v1.toFixed(1) || null, "v2": itm.v2.toFixed(1) || null, "v3": itm.v3.toFixed(1) || null, "v4": itm.v4.toFixed(1) || null, "v5": itm.v5.toFixed(1) || null, "v6": itm.v6.toFixed(1) || null, "v7": itm.v7.toFixed(1) || null }); }); var chart = AmCharts.makeChart(test, { "type": "serial", "theme": "light", "marginRight": 80, "dataProvider": chartData, "valueAxes": [{ "axisAlpha": 0.1 }], "graphs": grphs, "zoomOutButtonRollOverAlpha": 0.15, "chartCursor": { "categoryBalloonDateFormat": "MMMM D L:NN A", "cursorPosition": "mouse", "showNextAvailable": true }, "legend": { "equalWidths": true, "position": "top", "valueAlign": "left", "valueWidth": 100 }, "chartScrollbar": { "enabled": true }, "autoMarginOffset": 5, "columnWidth": 1, "categoryField": "ts", "categoryAxis": { "parseDates": true, "minPeriod": "mm", "dateFormats":[ { "period":"fff", "format":"L:NN:SS A" }, { "period":"ss", "format":"L:NN:SS A" }, { "period":"mm", "format":"L:NN A" }, { "period":"hh", "format":"L:NN A" }, { "period":"DD", "format":"MMM DD" }, { "period":"WW", "format":"MMM DD" }, { "period":"MM", "format":"MMM" }, { "period":"YYYY", "format":"YYYY" }] }, "export": { "enabled": true } }); chart.addListener("rendered", zoomChart); zoomChart(); function zoomChart() { chart.zoomToIndexes(chart.dataProvider.length - 40, chart.dataProvider.length - 1); } }); }, 200); } this.ractive.on("search", function(event) { dataQuery = 'readAll('+template.view.querySelector("#inputText").value+').hisRead(today)'; updateChart(dataQuery.replace(/(\.*\hisRead).*$/g,'.hisRead(today)'), 0); }); this.ractive.on("day", function(event) { updateChart(dataQuery.replace(/(\.*\hisRead).*$/g,'.hisRead(today)'), 0); }); this.ractive.on("week", function(event) { updateChart(dataQuery.replace(/(\.*\hisRead).*$/g,'.hisRead(thisWeek)'), 1); }); this.ractive.on("month", function(event) { updateChart(dataQuery.replace(/(\.*\hisRead).*$/g,'.hisRead(thisMonth)'), 2); }); this.ractive.on("datePicker", function(event) { top.app.ShowCalendar(null,function(data){ var start = moment(data.range.start).format("YYYY-MM-DD"); var end = moment(data.range.end).format("YYYY-MM-DD"); var dateStringStart = start; var startDate = new moment(dateStringStart).format('MM/DD/YYYY'); var dateStringEnd = end; var endDate = new moment(dateStringEnd).format('MM/DD/YYYY'); var newQuery = ""; if(start == end) newQuery= dataQuery.replace(/(\.*\hisRead).*$/g,'.hisRead('+start+')'); else newQuery= dataQuery.replace(/(\.*\hisRead).*$/g,'.hisRead('+start+'..'+end+')'); updateChart(newQuery, 3); }, {periods:true}); });
, multiple selections available,
Related content
Multiple AM Chart Dropdown
Multiple AM Chart Dropdown
More like this
Alarms Search
Alarms Search
More like this
AM Chart Show Hide Scroll
AM Chart Show Hide Scroll
Read with this
History Date Picker Chart
History Date Picker Chart
More like this
Energy Dashboard
Energy Dashboard
Read with this
Am Chart Dates with Tags
Am Chart Dates with Tags
More like this