サプライヤからの配信予測を分析する必要があり、データベースから次のデータ配列を取得します。
Array
(
[0] => Array
(
[delivery_date] => 2012-05-10
[imported] => 2012-05-10 11:20:37
[qty] => 114
)
[1] => Array
(
[delivery_date] => 2012-05-10
[imported] => 2012-05-11 11:20:37
[qty] => 228
)
[2] => Array
(
[delivery_date] => 2012-05-10
[imported] => 2012-05-15 11:20:37
[qty] => 380
)
[3] => Array
(
[delivery_date] => 2012-05-10
[imported] => 2012-05-16 11:20:37
[qty] => 380
)
[4] => Array
(
[delivery_date] => 2012-05-10
[imported] => 2012-05-17 11:20:37
[qty] => 380
)
)
ここでの私の問題は、顧客が毎日まったく同じ予測を行っていないことです。これは正常ですが、顧客が2012-05-10にx個の製品が必要であると予測しなかった場合の「欠落」日付をプロットする必要があります。
考えられる解決策についての私の考えは次のとおりです。
- どういうわけか、データ配列と混ざり合って、欠落している「インポートされた」日付の空の値で埋めます
- どういうわけか、ポイントツーポイントで線を引く代わりに、欠落している値を表示するようにGoogleモーションチャートを構成します。
しかし、これまでのところ、私自身はこれらのオプションのいずれかで成功していません:(
コードから抽出:google.load('visualization'、 '1'、{packages:['motionchart']});
function drawVisualization() {
var data = new google.visualization.DataTable();
data.addRows(<?PHP echo count($data); ?>);
data.addColumn('string', 'Artikkel@kuupäev');
data.addColumn('date', 'Imporditud');
data.addColumn('number', 'Qty, pcs');
<?PHP
$jrk=0;
foreach ($data as $row) {
$date_import = date("Y, m, d",strtotime(substr($row[imported],0,10)." -1 month"));
echo "data.setValue($jrk, 0, '".$row[delivery_date]."');\n";
echo "data.setValue($jrk, 1, new Date (".$date_import."));\n";
echo "data.setValue($jrk, 2, ".$row[qty].");\n";
$jrk++;
}
?>
var options = {};
options['state'] =
'{"yAxisOption":"2","time":"2012-03-12","sizeOption":"_UNISIZE","xAxisOption":"_TIME","yZoomedIn":false,"xZoomedDataMax":1331510400000,"yLambda":1,"xZoomedIn":false,"yZoomedDataMin":0,"nonSelectedAlpha":0,"uniColorForNonSelected":false,"orderedByY":false,"dimensions":{"iconDimensions":["dim0"]},"duration":{"timeUnit":"D","multiplier":1},"orderedByX":false,"xLambda":1,"colorOption":"_UNICOLOR","yZoomedDataMax":300000,"showTrails":false,"iconType":"LINE","xZoomedDataMin":1304985600000,"iconKeySettings":[],"playDuration":15000};';
options['width'] = 1200;
options['height'] = 600;
var motionchart = new google.visualization.MotionChart(
document.getElementById('visualization'));
motionchart.draw(data, options);
}
google.setOnLoadCallback(drawVisualization);