- App.tsx: full navigation (Auth stack + Main tabs with 5 screens) - Auth: LoginScreen, RegisterScreen, ForgotPasswordScreen - HomeScreen: dashboard with IoT metrics, weather widget, alerts, quick actions, sensors - MapScreen: interactive map with layer toggles (6 layers) - MarketplaceScreen: categories (6), products (5), search - ChatScreen: AI chat with quick prompts (4), bot responses - ProfileScreen: user info, stats, menu (9 items), logout - AlertsScreen: alert list with severity, acknowledge - SensorsScreen: sensor list with type filters (6 types), search - ZonesScreen: zone cards with stats - SettingsScreen: language picker (FR/EN/ES/DE), privacy, about - Stores: iotStore (sensors, zones, alerts), notificationStore, uiStore + i18n - Hooks: useSensors, useAlerts, useNotifications, useLocation - Components: Card, Button, LoadingSpinner, ErrorBoundary, Header - Services: iotService, notificationService (with axios API client) - Utils: formatters (temp, AQI, noise, dates), validators (email, password, IBAN) - Theme: colors.ts with full design system (Blue Ocean palette) - Ditto: fixed MongoDB connection, new JWT secrets, official gateway image
50 lines
1.9 KiB
JavaScript
50 lines
1.9 KiB
JavaScript
/* eslint-disable no-console */
|
|
export default (function (o, c, d) {
|
|
/* istanbul ignore next line */
|
|
if (!process || process.env.NODE_ENV !== 'production') {
|
|
var proto = c.prototype;
|
|
var oldParse = proto.parse;
|
|
|
|
proto.parse = function (cfg) {
|
|
var date = cfg.date;
|
|
|
|
if (typeof date === 'string' && date.length === 13) {
|
|
console.warn("To parse a Unix timestamp like " + date + ", you should pass it as a Number. https://day.js.org/docs/en/parse/unix-timestamp-milliseconds");
|
|
}
|
|
|
|
if (typeof date === 'number' && String(date).length === 4) {
|
|
console.warn("Guessing you may want to parse the Year " + date + ", you should pass it as a String " + date + ", not a Number. Otherwise, " + date + " will be treated as a Unix timestamp");
|
|
}
|
|
|
|
if (cfg.args.length >= 2 && !d.p.customParseFormat) {
|
|
console.warn("To parse a date-time string like " + date + " using the given format, you should enable customParseFormat plugin first. https://day.js.org/docs/en/parse/string-format");
|
|
}
|
|
|
|
return oldParse.bind(this)(cfg);
|
|
};
|
|
|
|
var oldLocale = d.locale;
|
|
|
|
d.locale = function (preset, object, isLocal) {
|
|
if (typeof object === 'undefined' && typeof preset === 'string') {
|
|
if (!d.Ls[preset]) {
|
|
console.warn("Guessing you may want to use locale " + preset + ", you have to load it before using it. https://day.js.org/docs/en/i18n/loading-into-nodejs");
|
|
}
|
|
}
|
|
|
|
return oldLocale(preset, object, isLocal);
|
|
};
|
|
|
|
var oldDiff = proto.diff;
|
|
|
|
proto.diff = function (date, unit, _float) {
|
|
var isInvalidDate = !date || !d(date).isValid();
|
|
|
|
if (isInvalidDate) {
|
|
console.warn('Invalid usage: diff() requires a valid comparison date as the first argument. https://day.js.org/docs/en/display/difference');
|
|
}
|
|
|
|
return oldDiff.call(this, date, unit, _float);
|
|
};
|
|
}
|
|
}); |