blob: ff681a83b9e0ddb0e8dda8a1d4a21786d045bed0 [file] [log] [blame]
// Copyright 2019-present the Flutter authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
/// Calculates the sum of the primary amounts of a list of [AccountData].
double sumAccountDataPrimaryAmount(List<AccountData> items) => sumOf<AccountData>(items, (AccountData item) => item.primaryAmount);
/// Calculates the sum of the primary amounts of a list of [BillData].
double sumBillDataPrimaryAmount(List<BillData> items) => sumOf<BillData>(items, (BillData item) => item.primaryAmount);
/// Calculates the sum of the primary amounts of a list of [BudgetData].
double sumBudgetDataPrimaryAmount(List<BudgetData> items) => sumOf<BudgetData>(items, (BudgetData item) => item.primaryAmount);
/// Calculates the sum of the amounts used of a list of [BudgetData].
double sumBudgetDataAmountUsed(List<BudgetData> items) => sumOf<BudgetData>(items, (BudgetData item) => item.amountUsed);
/// Utility function to sum up values in a list.
double sumOf<T>(List<T> list, double getValue(T elt)) {
double sum = 0;
for (T elt in list)
sum += getValue(elt);
return sum;
}
/// A data model for an account.
///
/// The [primaryAmount] is the balance of the account in USD.
class AccountData {
const AccountData({this.name, this.primaryAmount, this.accountNumber});
/// The display name of this entity.
final String name;
// The primary amount or value of this entity.
final double primaryAmount;
/// The full displayable account number.
final String accountNumber;
}
/// A data model for a bill.
///
/// The [primaryAmount] is the amount due in USD.
class BillData {
const BillData({this.name, this.primaryAmount, this.dueDate});
/// The display name of this entity.
final String name;
// The primary amount or value of this entity.
final double primaryAmount;
/// The due date of this bill.
final String dueDate;
}
/// A data model for a budget.
///
/// The [primaryAmount] is the budget cap in USD.
class BudgetData {
const BudgetData({this.name, this.primaryAmount, this.amountUsed});
/// The display name of this entity.
final String name;
// The primary amount or value of this entity.
final double primaryAmount;
/// Amount of the budget that is consumed or used.
final double amountUsed;
}
class DetailedEventData {
const DetailedEventData({
this.title,
this.date,
this.amount,
});
final String title;
final DateTime date;
final double amount;
}
/// Class to return dummy data lists.
///
/// In a real app, this might be replaced with some asynchronous service.
class DummyDataService {
static List<AccountData> getAccountDataList() {
return <AccountData>[
const AccountData(
name: 'Checking',
primaryAmount: 2215.13,
accountNumber: '1234561234',
),
const AccountData(
name: 'Home Savings',
primaryAmount: 8678.88,
accountNumber: '8888885678',
),
const AccountData(
name: 'Car Savings',
primaryAmount: 987.48,
accountNumber: '8888889012',
),
const AccountData(
name: 'Vacation',
primaryAmount: 253,
accountNumber: '1231233456',
),
];
}
static List<DetailedEventData> getDetailedEventItems() {
return <DetailedEventData>[
DetailedEventData(
title: 'Genoe',
date: DateTime.utc(2019, 1, 24),
amount: -16.54,
),
DetailedEventData(
title: 'Fortnightly Subscribe',
date: DateTime.utc(2019, 1, 5),
amount: -12.54,
),
DetailedEventData(
title: 'Circle Cash',
date: DateTime.utc(2019, 1, 5),
amount: 365.65,
),
DetailedEventData(
title: 'Crane Hospitality',
date: DateTime.utc(2019, 1, 4),
amount: -705.13,
),
DetailedEventData(
title: 'ABC Payroll',
date: DateTime.utc(2018, 12, 15),
amount: 1141.43,
),
DetailedEventData(
title: 'Shrine',
date: DateTime.utc(2018, 12, 15),
amount: -88.88,
),
DetailedEventData(
title: 'Foodmates',
date: DateTime.utc(2018, 12, 4),
amount: -11.69,
),
];
}
static List<BillData> getBillDataList() {
return <BillData>[
const BillData(
name: 'RedPay Credit',
primaryAmount: 45.36,
dueDate: 'Jan 29',
),
const BillData(
name: 'Rent',
primaryAmount: 1200,
dueDate: 'Feb 9',
),
const BillData(
name: 'TabFine Credit',
primaryAmount: 87.33,
dueDate: 'Feb 22',
),
const BillData(
name: 'ABC Loans',
primaryAmount: 400,
dueDate: 'Feb 29',
),
];
}
static List<BudgetData> getBudgetDataList() {
return <BudgetData>[
const BudgetData(
name: 'Coffee Shops',
primaryAmount: 70,
amountUsed: 45.49,
),
const BudgetData(
name: 'Groceries',
primaryAmount: 170,
amountUsed: 16.45,
),
const BudgetData(
name: 'Restaurants',
primaryAmount: 170,
amountUsed: 123.25,
),
const BudgetData(
name: 'Clothing',
primaryAmount: 70,
amountUsed: 19.45,
),
];
}
static List<String> getSettingsTitles() {
return <String>[
'Manage Accounts',
'Tax Documents',
'Passcode and Touch ID',
'Notifications',
'Personal Information',
'Paperless Settings',
'Find ATMs',
'Help',
'Sign out',
];
}
}