| 2398 | } |
| 2399 | |
| 2400 | void SetData(const std::vector<double> &data) |
| 2401 | { |
| 2402 | mData = data; |
| 2403 | |
| 2404 | if (GridTable) GridTable->SetArray(NULL); |
| 2405 | Grid->SetTable(NULL); |
| 2406 | |
| 2407 | GridTable = new AFDataLifetimeArrayTable(&mData, mMode, mColumnLabel); |
| 2408 | GridTable->SetAttrProvider(new wxExtGridCellAttrProvider); |
| 2409 | |
| 2410 | Grid->SetTable(GridTable, true); |
| 2411 | Grid->SetColSize(0, (int)(130 * wxGetScreenHDScale())); |
| 2412 | Grid->Layout(); |
| 2413 | Grid->Refresh(); |
| 2414 | |
| 2415 | |
| 2416 | |
| 2417 | // determine mode from data |
| 2418 | size_t dataSize = mData.size(); |
| 2419 | if (dataSize < 1) |
| 2420 | { |
| 2421 | mData.push_back(0.0); |
| 2422 | dataSize = 1; |
| 2423 | } |
| 2424 | if (dataSize == 1) |
| 2425 | mMode = DATA_LIFETIME_ARRAY_SINGLEVALUE; |
| 2426 | else if (dataSize == (mAnalysisPeriod)) |
| 2427 | mMode = DATA_LIFETIME_ARRAY_ANNUAL; |
| 2428 | else if (dataSize == (mAnalysisPeriod * 12)) |
| 2429 | mMode = DATA_LIFETIME_ARRAY_MONTHLY; |
| 2430 | else if (dataSize == (mAnalysisPeriod * 52)) |
| 2431 | mMode = DATA_LIFETIME_ARRAY_WEEKLY; |
| 2432 | else if (dataSize == (mAnalysisPeriod * 365)) |
| 2433 | mMode = DATA_LIFETIME_ARRAY_DAILY; |
| 2434 | else if (dataSize == (mAnalysisPeriod * 8760)) |
| 2435 | mMode = DATA_LIFETIME_ARRAY_HOURLY; |
| 2436 | else if (dataSize == (mAnalysisPeriod * 2920)) |
| 2437 | mMode = DATA_LIFETIME_ARRAY_THREEHOURLY; |
| 2438 | else |
| 2439 | { |
| 2440 | mMode = DATA_LIFETIME_ARRAY_SUBHOURLY; |
| 2441 | size_t stepsPerHour = dataSize / (mAnalysisPeriod * 8760); |
| 2442 | switch (stepsPerHour) |
| 2443 | { |
| 2444 | case 2: // 30 minute |
| 2445 | Timesteps->SetSelection(5); |
| 2446 | break; |
| 2447 | case 3: // 20 minute |
| 2448 | Timesteps->SetSelection(4); |
| 2449 | break; |
| 2450 | case 4: // 15 minute |
| 2451 | Timesteps->SetSelection(3); |
| 2452 | break; |
| 2453 | case 6: // 10 minute |
| 2454 | Timesteps->SetSelection(2); |
| 2455 | break; |
| 2456 | case 12: // 5 minute |
| 2457 | Timesteps->SetSelection(1); |
nothing calls this directly
no test coverage detected