diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index cf5ad98c55..00d0a6ff15 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -116,6 +116,9 @@ jobs: # viz-test-tool SLACK_BOT_OAUTH_TOKEN: cat1234 + # Disable zendesk notifications in tests + ZENDESK_NOTIFICATIONS_DISABLED: 'true' + strategy: fail-fast: false matrix: diff --git a/packages/admin-panel/src/api/mutations/useLogin.js b/packages/admin-panel/src/api/mutations/useLogin.js index 63cdf6d9cd..61abb2af95 100644 --- a/packages/admin-panel/src/api/mutations/useLogin.js +++ b/packages/admin-panel/src/api/mutations/useLogin.js @@ -2,7 +2,7 @@ * Tupaia * Copyright (c) 2017 - 2024 Beyond Essential Systems Pty Ltd */ - +import { getBrowserTimeZone } from '@tupaia/utils'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { useLocation, useNavigate } from 'react-router-dom'; import { post } from '../../VizBuilderApp/api'; @@ -19,6 +19,7 @@ export const useLogin = homeLink => { data: { emailAddress: email, password, + timezone: getBrowserTimeZone(), }, }); }, diff --git a/packages/admin-panel/src/routes/surveys/optionSets.js b/packages/admin-panel/src/routes/surveys/optionSets.js index eb0d73d704..1c9ef88f4c 100644 --- a/packages/admin-panel/src/routes/surveys/optionSets.js +++ b/packages/admin-panel/src/routes/surveys/optionSets.js @@ -22,7 +22,7 @@ const OPTION_SET_COLUMNS = [ type: 'export', actionConfig: { exportEndpoint: 'optionSets', - fileName: '{name}', + fileName: '{name}.xlsx', }, }, { diff --git a/packages/admin-panel/src/routes/surveys/surveys.js b/packages/admin-panel/src/routes/surveys/surveys.js index b955e1a293..9f8e8390d1 100644 --- a/packages/admin-panel/src/routes/surveys/surveys.js +++ b/packages/admin-panel/src/routes/surveys/surveys.js @@ -131,7 +131,7 @@ const SURVEY_FIELDS = { options: SERVICE_TYPES, setFieldsOnChange: (newValue, currentRecord = null) => { const { dhisInstanceCode = 'regional' } = currentRecord - ? currentRecord['data_group.config'] ?? {} + ? (currentRecord['data_group.config'] ?? {}) : {}; const config = newValue === 'dhis' ? { dhisInstanceCode } : {}; return { 'data_group.config': config }; @@ -217,7 +217,7 @@ const SURVEY_COLUMNS = [ type: 'export', actionConfig: { exportEndpoint: 'surveys', - fileName: '{name}', + fileName: '{name}.xlsx', }, }, { diff --git a/packages/admin-panel/src/routes/visualisations/dashboardItems.jsx b/packages/admin-panel/src/routes/visualisations/dashboardItems.jsx index 250f072dc3..4ed52d7598 100644 --- a/packages/admin-panel/src/routes/visualisations/dashboardItems.jsx +++ b/packages/admin-panel/src/routes/visualisations/dashboardItems.jsx @@ -66,7 +66,7 @@ const COLUMNS = [ type: 'export', actionConfig: { exportEndpoint: 'dashboardVisualisation', - fileName: '{code}', + fileName: '{code}.json', }, }, { diff --git a/packages/admin-panel/src/routes/visualisations/dataTables.js b/packages/admin-panel/src/routes/visualisations/dataTables.js index 6b0374dde6..7e22ffe0f6 100644 --- a/packages/admin-panel/src/routes/visualisations/dataTables.js +++ b/packages/admin-panel/src/routes/visualisations/dataTables.js @@ -67,7 +67,7 @@ const COLUMNS = [ type: 'export', actionConfig: { exportEndpoint: 'dataTable', - fileName: '{code}', + fileName: '{code}.json', }, }, { diff --git a/packages/admin-panel/src/routes/visualisations/mapOverlays.jsx b/packages/admin-panel/src/routes/visualisations/mapOverlays.jsx index 68de6496fe..c97bec24f6 100644 --- a/packages/admin-panel/src/routes/visualisations/mapOverlays.jsx +++ b/packages/admin-panel/src/routes/visualisations/mapOverlays.jsx @@ -142,7 +142,7 @@ const COLUMNS = [ type: 'export', actionConfig: { exportEndpoint: 'mapOverlayVisualisation', - fileName: '{code}', + fileName: '{code}.json', }, }, { diff --git a/packages/central-server/.env.example b/packages/central-server/.env.example index 1c494cac30..19052fe077 100644 --- a/packages/central-server/.env.example +++ b/packages/central-server/.env.example @@ -13,3 +13,9 @@ DHIS_SYNC_DISABLE= KOBO_SYNC_DISABLE= FEED_SCRAPER_DISABLE= MS1_SYNC_DISABLE= + + +ZENDESK_API_TOKEN= +ZENDESK_SUBDOMAIN= +ZENDESK_EMAIL= +ZENDESK_NOTIFICATIONS_DISABLE= diff --git a/packages/central-server/package.json b/packages/central-server/package.json index 52d652afa8..a74c8edc11 100644 --- a/packages/central-server/package.json +++ b/packages/central-server/package.json @@ -47,6 +47,7 @@ "case": "^1.6.1", "compare-versions": "^6.1.0", "cors": "^2.8.5", + "countries-and-timezones": "^3.6.0", "countrynames": "^0.1.1", "date-fns": "^2.29.2", "del": "^2.2.2", @@ -84,6 +85,7 @@ "mocha": "^10.2.0", "npm-run-all": "^4.1.5", "nyc": "^15.1.0", + "proxyquire": "^2.1.3", "sinon": "^9.0.2", "sinon-chai": "^3.3.0", "sinon-test": "^3.0.0", diff --git a/packages/central-server/src/apiV2/authenticate.js b/packages/central-server/src/apiV2/authenticate.js index 660ab3deb2..90f24e8df8 100644 --- a/packages/central-server/src/apiV2/authenticate.js +++ b/packages/central-server/src/apiV2/authenticate.js @@ -4,10 +4,11 @@ */ import winston from 'winston'; - +import { getCountryForTimezone } from 'countries-and-timezones'; import { getAuthorizationObject, getUserAndPassFromBasicAuth } from '@tupaia/auth'; import { respond, reduceToDictionary } from '@tupaia/utils'; import { allowNoPermissions } from '../permissions'; +import { createSupportTicket } from '../utilities'; const GRANT_TYPES = { PASSWORD: 'password', @@ -98,6 +99,46 @@ const checkApiClientAuthentication = async req => { } }; +const checkUserLocationAccess = async (req, user) => { + if (!user) return; + const { body, models } = req; + const { timezone } = body; + + // The easiest way to get the country code is to use the timezone and get the most likely country using this timezone. This doesn't infringe on the user's privacy as the timezone is a very broad location. It also doesn't require the user to provide their location, which is a barrier to entry for some users. + const country = getCountryForTimezone(timezone); + if (!country) return; + // the ID is the ISO country code. + const { id, name } = country; + + const existingEntry = await models.userCountryAccessAttempt.findOne({ + user_id: user.id, + country_code: id, + }); + + // If there is already an entry for this user and country, return + if (existingEntry) return; + + const userEntryCount = await models.userCountryAccessAttempt.count({ + user_id: user.id, + }); + + const hasAnyEntries = userEntryCount > 0; + + await models.userCountryAccessAttempt.create({ + user_id: user.id, + country_code: id, + }); + + // Don't send an email if this is the first time the user has attempted to login + if (!hasAnyEntries) return; + + // create a support ticket if the user has attempted to login from a new country + await createSupportTicket( + 'User attempted to login from a new country', + `User ${user.first_name} ${user.last_name} (${user.id} - ${user.email}) attempted to access Tupaia from a new country: ${name}`, + ); +}; + /** * Handler for a POST to the /auth endpoint * By default, or if URL parameters include grantType=password, will check the email address and @@ -126,5 +167,7 @@ export async function authenticate(req, res) { permissionGroups: permissionGroupsByCountryId, }); + await checkUserLocationAccess(req, user); + respond(res, authorizationObject); } diff --git a/packages/central-server/src/database/meditrakSyncQueue/MeditrakSyncQueue.js b/packages/central-server/src/database/meditrakSyncQueue/MeditrakSyncQueue.js index bfd1c3d881..3a528f2b4b 100644 --- a/packages/central-server/src/database/meditrakSyncQueue/MeditrakSyncQueue.js +++ b/packages/central-server/src/database/meditrakSyncQueue/MeditrakSyncQueue.js @@ -51,16 +51,9 @@ export class MeditrakSyncQueue extends ChangeHandler { * @private */ async refreshPermissionsBasedView(database) { - try { - const start = Date.now(); - await database.executeSql( - `REFRESH MATERIALIZED VIEW CONCURRENTLY permissions_based_meditrak_sync_queue;`, - ); - const end = Date.now(); - winston.info(`permissions_based_meditrak_sync_queue refresh took: ${end - start}ms`); - } catch (error) { - winston.error(`permissions_based_meditrak_sync_queue refresh failed: ${error.message}`); - } + await database.executeSql( + `REFRESH MATERIALIZED VIEW CONCURRENTLY permissions_based_meditrak_sync_queue;`, + ); } /** diff --git a/packages/central-server/src/tests/apiV2/authenticate/authenticate.test.js b/packages/central-server/src/tests/apiV2/authenticate/authenticate.test.js index 4d0084bbef..bc1c886556 100644 --- a/packages/central-server/src/tests/apiV2/authenticate/authenticate.test.js +++ b/packages/central-server/src/tests/apiV2/authenticate/authenticate.test.js @@ -103,4 +103,46 @@ describe('Authenticate', function () { expect(userId).to.equal(userAccount.id); expect(apiClientUserId).to.equal(apiClientUserAccount.id); }); + + it('should add a new entry to the user_country_access_attempts table if one does not already exist', async () => { + await app.post('auth?grantType=password', { + headers: { + authorization: createBasicHeader(apiClientUserAccount.email, apiClientSecret), + }, + body: { + emailAddress: userAccount.email, + password: userAccountPassword, + deviceName: 'test_device', + timezone: 'Pacific/Auckland', + }, + }); + const entries = await models.userCountryAccessAttempt.find({ + user_id: userAccount.id, + country_code: 'NZ', + }); + expect(entries).to.have.length(1); + }); + + it('should not add a new entry to the user_country_access_attempts table if one does already exist', async () => { + await models.userCountryAccessAttempt.create({ + user_id: userAccount.id, + country_code: 'WS', + }); + await app.post('auth?grantType=password', { + headers: { + authorization: createBasicHeader(apiClientUserAccount.email, apiClientSecret), + }, + body: { + emailAddress: userAccount.email, + password: userAccountPassword, + deviceName: 'test_device', + timezone: 'Pacific/Apia', + }, + }); + const entries = await models.userCountryAccessAttempt.find({ + user_id: userAccount.id, + country_code: 'WS', + }); + expect(entries).to.have.length(1); + }); }); diff --git a/packages/central-server/src/tests/utilities/createSupportTicket.test.js b/packages/central-server/src/tests/utilities/createSupportTicket.test.js new file mode 100644 index 0000000000..0a6496e7ae --- /dev/null +++ b/packages/central-server/src/tests/utilities/createSupportTicket.test.js @@ -0,0 +1,49 @@ +/** + * Tupaia + * Copyright (c) 2017 - 2024 Beyond Essential Systems Pty Ltd + */ + +import { expect } from 'chai'; +import sinon from 'sinon'; +import proxyquire from 'proxyquire'; + +const fetchWithTimeoutStub = sinon.stub().resolves(); +const requireEnvStub = sinon.stub().returns('test_value'); + +// Use proxyquire to replace 'fetchWithTimeout' with the stub - See [here](https://stackoverflow.com/a/52591287) for an explanation about why destructured imports can't be stubbed +const { createSupportTicket } = proxyquire('../../utilities/createSupportTicket', { + '@tupaia/utils': { + fetchWithTimeout: fetchWithTimeoutStub, + requireEnv: requireEnvStub, + getIsProductionEnvironment: () => true, + }, +}); + +describe('Create support ticket', () => { + after(() => { + // Reset the stub after each test + fetchWithTimeoutStub.reset(); + requireEnvStub.reset(); + }); + it("should not create a support ticket if ZENDESK_NOTIFICATIONS_DISABLE is set to 'true'", async () => { + process.env.ZENDESK_NOTIFICATIONS_DISABLE = 'true'; + await createSupportTicket('test_subject', 'test_message'); + sinon.assert.notCalled(fetchWithTimeoutStub); + }); + + it('should create a support ticket if ZENDESK_NOTIFICATIONS_DISABLE is not set to true', async () => { + process.env.ZENDESK_NOTIFICATIONS_DISABLE = 'false'; + await createSupportTicket('test_subject', 'test_message'); + expect(fetchWithTimeoutStub).to.have.been.calledOnce; + expect(fetchWithTimeoutStub).to.have.been.calledWith('test_value/tickets', { + method: 'POST', + headers: { + Authorization: `Basic ${Buffer.from('test_value/token:test_value').toString('base64')}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + ticket: { subject: 'test_subject', comment: { body: 'test_message' } }, + }), + }); + }); +}); diff --git a/packages/central-server/src/utilities/createSupportTicket.js b/packages/central-server/src/utilities/createSupportTicket.js new file mode 100644 index 0000000000..27aaa5d8b8 --- /dev/null +++ b/packages/central-server/src/utilities/createSupportTicket.js @@ -0,0 +1,58 @@ +/** + * Tupaia + * Copyright (c) 2017 - 2024 Beyond Essential Systems Pty Ltd + */ +import { fetchWithTimeout, getIsProductionEnvironment, requireEnv } from '@tupaia/utils'; +import { sendEmail } from '@tupaia/server-utils'; + +const emailInternally = async (subject, message) => { + const sendTo = requireEnv('DEV_EMAIL_ADDRESS'); + return sendEmail(sendTo, { + subject, + templateName: 'generic', + templateContext: { + userName: 'Tupaia Admin', + message, + }, + }); +}; + +export const createSupportTicket = async (subject, message) => { + // If ZENDESK_NOTIFICATIONS_DISABLE is set to true, do not create a support ticket + if (process.env.ZENDESK_NOTIFICATIONS_DISABLE === 'true') return; + + // If we are not in a production environment, send an email to the dev team instead of creating a support ticket + if (!getIsProductionEnvironment()) { + return emailInternally(subject, message); + } + + try { + const zendeskApi = requireEnv('ZENDESK_API_URL'); + const apiToken = requireEnv('ZENDESK_API_TOKEN'); + const email = requireEnv('ZENDESK_EMAIL'); + + const url = `${zendeskApi}/tickets`; + + const ticketData = { + subject, + comment: { + body: message, + }, + }; + + const base64Credentials = Buffer.from(`${email}/token:${apiToken}`).toString('base64'); + + const requestConfig = { + method: 'POST', + headers: { + Authorization: `Basic ${base64Credentials}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ ticket: ticketData }), + }; + + await fetchWithTimeout(url, requestConfig); + } catch (error) { + console.error('Error creating support ticket:', error); + } +}; diff --git a/packages/central-server/src/utilities/index.js b/packages/central-server/src/utilities/index.js index 7a94757346..fb51d23208 100644 --- a/packages/central-server/src/utilities/index.js +++ b/packages/central-server/src/utilities/index.js @@ -7,3 +7,4 @@ export { getApiUrl } from './getApiUrl'; export { getTempDirectory } from './getTempDirectory'; export { resourceToRecordType } from './resourceToRecordType'; export { getStandardisedImageName } from './getStandardisedImageName'; +export { createSupportTicket } from './createSupportTicket'; diff --git a/packages/database/src/ModelRegistry.js b/packages/database/src/ModelRegistry.js index 0531cfc2e6..bc200fc091 100644 --- a/packages/database/src/ModelRegistry.js +++ b/packages/database/src/ModelRegistry.js @@ -20,6 +20,7 @@ export class ModelRegistry { ...baseModelClasses, ...extraModelClasses, }; + this.generateModels(schemata); if (useNotifiers) { this.initialiseNotifiers(); diff --git a/packages/database/src/changeHandlers/AnalyticsRefresher.js b/packages/database/src/changeHandlers/AnalyticsRefresher.js index 166ad0691d..fbe3a48616 100644 --- a/packages/database/src/changeHandlers/AnalyticsRefresher.js +++ b/packages/database/src/changeHandlers/AnalyticsRefresher.js @@ -23,14 +23,7 @@ export class AnalyticsRefresher extends ChangeHandler { } static refreshAnalytics = async database => { - try { - const start = Date.now(); - await database.executeSql(`SELECT mv$refreshMaterializedView('analytics', 'public', true);`); - const end = Date.now(); - winston.info(`Analytics table refresh took: ${end - start}ms`); - } catch (error) { - winston.error(`Analytics table refresh failed: ${error.message}`); - } + await database.executeSql(`SELECT mv$refreshMaterializedView('analytics', 'public', true);`); }; handleChanges(transactingModels) { diff --git a/packages/database/src/changeHandlers/ChangeHandler.js b/packages/database/src/changeHandlers/ChangeHandler.js index f29b9182ca..f5c45ef971 100644 --- a/packages/database/src/changeHandlers/ChangeHandler.js +++ b/packages/database/src/changeHandlers/ChangeHandler.js @@ -83,7 +83,8 @@ export class ChangeHandler { // Translate changes and schedule their handling as a batch at a later stage const translatedChanges = await translator(changeDetails); this.changeQueue.push(...translatedChanges); - return this.scheduleChangeQueueHandler(); + this.scheduleChangeQueueHandler(); + return null; // Don't return the scheduled promise, so that it doesn't block processing other changes }), ); } @@ -132,8 +133,15 @@ export class ChangeHandler { await this.models.wrapInTransaction(async transactingModels => { // Acquire a database advisory lock for the transaction // Ensures no other server instance can execute its change handler at the same time + winston.info(`Acquiring lock for ${this.lockKey} change hander`); await transactingModels.database.acquireAdvisoryLockForTransaction(this.lockKey); + const start = Date.now(); + winston.info(`Running ${this.lockKey} change hander with ${currentQueue.length} jobs`); await this.handleChanges(transactingModels, currentQueue); + const end = Date.now(); + winston.info( + `Completed ${this.lockKey} change hander. ${currentQueue.length} jobs, took ${end - start}ms`, + ); }); } catch (error) { winston.warn( diff --git a/packages/database/src/changeHandlers/TaskAssigneeEmailer.js b/packages/database/src/changeHandlers/TaskAssigneeEmailer.js index 4ac493ecf5..aecc36216e 100644 --- a/packages/database/src/changeHandlers/TaskAssigneeEmailer.js +++ b/packages/database/src/changeHandlers/TaskAssigneeEmailer.js @@ -35,7 +35,6 @@ export class TaskAssigneeEmailer extends ChangeHandler { } async handleChanges(models, changedTasks) { - const start = Date.now(); // if there are no changed tasks, we don't need to do anything if (changedTasks.length === 0) return; @@ -78,7 +77,5 @@ export class TaskAssigneeEmailer extends ChangeHandler { }, }); } - const end = Date.now(); - winston.info(`Sending assignee emails completed, took: ${end - start}ms`); } } diff --git a/packages/database/src/changeHandlers/entityHierarchyCacher/EntityHierarchyCacher.js b/packages/database/src/changeHandlers/entityHierarchyCacher/EntityHierarchyCacher.js index 35d9ac455f..19c5b840ce 100644 --- a/packages/database/src/changeHandlers/entityHierarchyCacher/EntityHierarchyCacher.js +++ b/packages/database/src/changeHandlers/entityHierarchyCacher/EntityHierarchyCacher.js @@ -59,7 +59,6 @@ export class EntityHierarchyCacher extends ChangeHandler { async handleChanges(transactingModels, rebuildJobs) { // get the subtrees to delete, then run the delete - const start = Date.now(); const subtreeRebuilder = new EntityHierarchySubtreeRebuilder(transactingModels); await subtreeRebuilder.rebuildSubtrees(rebuildJobs); @@ -73,8 +72,5 @@ export class EntityHierarchyCacher extends ChangeHandler { rootEntityId, })), ); - - const end = Date.now(); - winston.info(`Rebuilding entity hierarchy cache took: ${end - start}ms`); } } diff --git a/packages/database/src/migrations/20240820021047-CreateUserCountryAccessTable-modifies-schema.js b/packages/database/src/migrations/20240820021047-CreateUserCountryAccessTable-modifies-schema.js new file mode 100644 index 0000000000..50818d1558 --- /dev/null +++ b/packages/database/src/migrations/20240820021047-CreateUserCountryAccessTable-modifies-schema.js @@ -0,0 +1,58 @@ +'use strict'; + +var dbm; +var type; +var seed; + +/** + * We receive the dbmigrate dependency from dbmigrate initially. + * This enables us to not have to rely on NODE_PATH. + */ +exports.setup = function (options, seedLink) { + dbm = options.dbmigrate; + type = dbm.dataType; + seed = seedLink; +}; + +exports.up = async function (db) { + await db.createTable('user_country_access_attempt', { + columns: { + id: { type: 'text', primaryKey: true }, + user_id: { + type: 'text', + notNull: true, + foreignKey: { + name: 'user_country_access_user_id_fk', + table: 'user_account', + rules: { + onDelete: 'CASCADE', + onUpdate: 'CASCADE', + }, + mapping: 'id', + }, + }, + country_code: { type: 'text', notNull: true }, + }, + ifNotExists: true, + }); + await db.addIndex( + 'user_country_access_attempt', + 'user_country_access_attempt_user_id_idx', + ['user_id'], + false, + ); + return db.addIndex( + 'user_country_access_attempt', + 'user_country_access_attempt_country_code_idx', + ['country_code'], + false, + ); +}; + +exports.down = function (db) { + return db.dropTable('user_country_access_attempt'); +}; + +exports._meta = { + version: 1, +}; diff --git a/packages/database/src/migrations/20241104002014-addPacmossiInsecticideTestEntityType-modifies-schema.js b/packages/database/src/migrations/20241104002014-addPacmossiInsecticideTestEntityType-modifies-schema.js new file mode 100644 index 0000000000..960ed4034b --- /dev/null +++ b/packages/database/src/migrations/20241104002014-addPacmossiInsecticideTestEntityType-modifies-schema.js @@ -0,0 +1,29 @@ +'use strict'; + +var dbm; +var type; +var seed; + +/** + * We receive the dbmigrate dependency from dbmigrate initially. + * This enables us to not have to rely on NODE_PATH. + */ +exports.setup = function (options, seedLink) { + dbm = options.dbmigrate; + type = dbm.dataType; + seed = seedLink; +}; + +exports.up = function (db) { + return db.runSql( + `ALTER TYPE public.entity_type ADD VALUE IF NOT EXISTS 'pacmossi_insecticide_test'`, + ); +}; + +exports.down = function (db) { + return null; +}; + +exports._meta = { + version: 1, +}; diff --git a/packages/database/src/modelClasses/UserCountryAccessAttempt.js b/packages/database/src/modelClasses/UserCountryAccessAttempt.js new file mode 100644 index 0000000000..102f6dcf97 --- /dev/null +++ b/packages/database/src/modelClasses/UserCountryAccessAttempt.js @@ -0,0 +1,34 @@ +/** + * Tupaia + * Copyright (c) 2017 - 2024 Beyond Essential Systems Pty Ltd + */ + +import { DatabaseModel } from '../DatabaseModel'; +import { DatabaseRecord } from '../DatabaseRecord'; +import { RECORDS } from '../records'; +import { JOIN_TYPES } from '../TupaiaDatabase'; + +export class UserCountryAccessAttemptRecord extends DatabaseRecord { + static databaseRecord = RECORDS.USER_COUNTRY_ACCESS_ATTEMPT; + + // Join to user table to get user details + static joins = [ + { + joinWith: RECORDS.USER_ACCOUNT, + joinAs: 'user', + joinType: JOIN_TYPES.LEFT, + joinCondition: ['user_id', 'user.id'], + fields: { email: 'user_email', first_name: 'user_first_name', last_name: 'user_last_name' }, + }, + ]; + + async user() { + return this.otherModels.user.findById(this.user_id); + } +} + +export class UserCountryAccessAttemptModel extends DatabaseModel { + get DatabaseRecordClass() { + return UserCountryAccessAttemptRecord; + } +} diff --git a/packages/database/src/modelClasses/index.js b/packages/database/src/modelClasses/index.js index 037f2e1ede..2736929f05 100644 --- a/packages/database/src/modelClasses/index.js +++ b/packages/database/src/modelClasses/index.js @@ -60,6 +60,7 @@ import { DhisInstanceModel } from './DhisInstance'; import { DataElementDataServiceModel } from './DataElementDataService'; import { SupersetInstanceModel } from './SupersetInstance'; import { TaskModel } from './Task'; +import { UserCountryAccessAttemptModel } from './UserCountryAccessAttempt'; import { TaskCommentModel } from './TaskComment'; // export all models to be used in constructing a ModelRegistry @@ -122,6 +123,7 @@ export const modelClasses = { UserEntityPermission: UserEntityPermissionModel, UserFavouriteDashboardItem: UserFavouriteDashboardItemModel, UserSession: UserSessionModel, + UserCountryAccessAttempt: UserCountryAccessAttemptModel, }; // export any models and types that are extended in other packages @@ -186,4 +188,8 @@ export { DashboardRelationRecord, DashboardRelationModel } from './DashboardRela export { OneTimeLoginRecord, OneTimeLoginModel } from './OneTimeLogin'; export { AnswerModel, AnswerRecord } from './Answer'; export { TaskModel, TaskRecord } from './Task'; +export { + UserCountryAccessAttemptModel, + UserCountryAccessAttemptRecord, +} from './UserCountryAccessAttempt'; export { TaskCommentModel, TaskCommentRecord } from './TaskComment'; diff --git a/packages/database/src/records.js b/packages/database/src/records.js index fd1ee80900..690411c758 100644 --- a/packages/database/src/records.js +++ b/packages/database/src/records.js @@ -65,6 +65,7 @@ export const RECORDS = { TASK: 'task', TASK_COMMENT: 'task_comment', USER_ACCOUNT: 'user_account', + USER_COUNTRY_ACCESS_ATTEMPT: 'user_country_access_attempt', USER_ENTITY_PERMISSION: 'user_entity_permission', USER_FAVOURITE_DASHBOARD_ITEM: 'user_favourite_dashboard_item', USER_SESSION: 'userSession', diff --git a/packages/datatrak-web/src/api/mutations/useLogin.ts b/packages/datatrak-web/src/api/mutations/useLogin.ts index 5f522213f1..e2e0bfa69c 100644 --- a/packages/datatrak-web/src/api/mutations/useLogin.ts +++ b/packages/datatrak-web/src/api/mutations/useLogin.ts @@ -8,6 +8,7 @@ import { gaEvent, useFromLocation } from '../../utils'; import { useNavigate } from 'react-router-dom'; import { post } from '../api'; import { ROUTES } from '../../constants'; +import { getBrowserTimeZone } from '@tupaia/utils'; type LoginCredentials = { email: string; @@ -26,6 +27,7 @@ export const useLogin = () => { emailAddress: email, password, deviceName: window.navigator.userAgent, + timezone: getBrowserTimeZone(), }, }); }, diff --git a/packages/lesmis/src/api/mutations/useLogin.js b/packages/lesmis/src/api/mutations/useLogin.js index e54399af51..8ff2b65ad2 100644 --- a/packages/lesmis/src/api/mutations/useLogin.js +++ b/packages/lesmis/src/api/mutations/useLogin.js @@ -5,6 +5,7 @@ */ import { useMutation, useQueryClient } from '@tanstack/react-query'; import { useLocation, useNavigate } from 'react-router-dom'; +import { getBrowserTimeZone } from '@tupaia/utils'; import { post } from '../api'; import { useUser } from '../queries'; import { useHomeUrl } from '../../utils/useHomeUrl'; @@ -22,6 +23,7 @@ export const useLogin = () => { emailAddress: email, password, deviceName: window.navigator.userAgent, + timezone: getBrowserTimeZone(), }, }), { diff --git a/packages/meditrak-app-server/src/sync/SyncableChangeEnqueuer.ts b/packages/meditrak-app-server/src/sync/SyncableChangeEnqueuer.ts index 4c4e84743e..07b586ad89 100644 --- a/packages/meditrak-app-server/src/sync/SyncableChangeEnqueuer.ts +++ b/packages/meditrak-app-server/src/sync/SyncableChangeEnqueuer.ts @@ -32,18 +32,9 @@ export class SyncableChangeEnqueuer extends ChangeHandler { } private async refreshPermissionsBasedView(database: TupaiaDatabase) { - try { - const start = Date.now(); - await database.executeSql( - `REFRESH MATERIALIZED VIEW CONCURRENTLY permissions_based_meditrak_sync_queue;`, - ); - const end = Date.now(); - winston.info(`permissions_based_meditrak_sync_queue refresh took: ${end - start}ms`); - } catch (error) { - winston.error( - `permissions_based_meditrak_sync_queue refresh failed: ${(error as Error).message}`, - ); - } + await database.executeSql( + `REFRESH MATERIALIZED VIEW CONCURRENTLY permissions_based_meditrak_sync_queue;`, + ); } protected async handleChanges( diff --git a/packages/psss/src/api/requests/user.js b/packages/psss/src/api/requests/user.js index 4b2e1cf01d..14535b6af9 100644 --- a/packages/psss/src/api/requests/user.js +++ b/packages/psss/src/api/requests/user.js @@ -3,11 +3,16 @@ * Copyright (c) 2017 - 2020 Beyond Essential Systems Pty Ltd */ +import { getBrowserTimeZone } from '@tupaia/utils'; import { get, put, post } from '../api'; export const loginUser = credentials => post('login', { - data: { ...credentials, deviceName: window.navigator.userAgent }, + data: { + ...credentials, + deviceName: window.navigator.userAgent, + timezone: getBrowserTimeZone(), + }, }); export const logoutUser = async () => { diff --git a/packages/psss/src/store/auth.js b/packages/psss/src/store/auth.js index 0826cb2a17..c4c1e95482 100644 --- a/packages/psss/src/store/auth.js +++ b/packages/psss/src/store/auth.js @@ -16,45 +16,49 @@ const LOGOUT = 'LOGOUT'; export const PROFILE_SUCCESS = 'PROFILE_SUCCESS'; // action creators -export const login = ({ email, password }) => async dispatch => { - const deviceName = window.navigator.userAgent; - - dispatch({ type: LOGIN_START }); - try { - const { user } = await loginUser({ - emailAddress: email, - password, - deviceName, - }); - const { data: countries } = await getCountries(user); - - dispatch(setCountries(countries)); - dispatch({ - type: LOGIN_SUCCESS, - user, - }); - } catch (error) { - dispatch({ - type: LOGIN_ERROR, - error: error.message, - }); - } -}; - -export const logout = (error = null) => async dispatch => { - if (error) { +export const login = + ({ email, password }) => + async dispatch => { + const deviceName = window.navigator.userAgent; + + dispatch({ type: LOGIN_START }); + try { + const { user } = await loginUser({ + emailAddress: email, + password, + deviceName, + }); + const { data: countries } = await getCountries(user); + + dispatch(setCountries(countries)); + dispatch({ + type: LOGIN_SUCCESS, + user, + }); + } catch (error) { + dispatch({ + type: LOGIN_ERROR, + error: error.message, + }); + } + }; + +export const logout = + (error = null) => + async dispatch => { + if (error) { + dispatch({ + type: LOGIN_ERROR, + error, + }); + } + + dispatch(clearCountries()); dispatch({ - type: LOGIN_ERROR, - error, + type: LOGOUT, }); - } - - dispatch(clearCountries()); - dispatch({ - type: LOGOUT, - }); - await logoutUser(); -}; + await logoutUser(); + }; export const updateProfile = payload => async dispatch => { await updateUser(payload); diff --git a/packages/server-boilerplate/src/models/UserCountryAccessAttempt.ts b/packages/server-boilerplate/src/models/UserCountryAccessAttempt.ts new file mode 100644 index 0000000000..fe2f451900 --- /dev/null +++ b/packages/server-boilerplate/src/models/UserCountryAccessAttempt.ts @@ -0,0 +1,18 @@ +/** + * Tupaia + * Copyright (c) 2017 - 2024 Beyond Essential Systems Pty Ltd + */ + +import { + UserCountryAccessAttemptModel as BaseModel, + UserCountryAccessAttemptRecord as BaseRecord, +} from '@tupaia/database'; +import { UserCountryAccessAttempt, NullableKeysToOptional } from '@tupaia/types'; +import { Model } from './types'; + +export interface UserCountryAccessAttemptRecord extends UserCountryAccessAttempt, BaseRecord { + getData: () => Promise>; +} + +export interface UserCountryAccessAttemptModel + extends Model {} diff --git a/packages/server-boilerplate/src/models/index.ts b/packages/server-boilerplate/src/models/index.ts index d87aba7a75..97e3568a20 100644 --- a/packages/server-boilerplate/src/models/index.ts +++ b/packages/server-boilerplate/src/models/index.ts @@ -61,5 +61,9 @@ export { SurveyScreenModel, SurveyScreenRecord } from './SurveyScreen'; export { SurveyModel, SurveyRecord } from './Survey'; export { UserEntityPermissionModel, UserEntityPermissionRecord } from './UserEntityPermission'; export { UserModel, UserRecord } from './User'; +export { + UserCountryAccessAttemptModel, + UserCountryAccessAttemptRecord, +} from './UserCountryAccessAttempt'; export { TaskModel, TaskRecord } from './Task'; export { TaskCommentModel, TaskCommentRecord } from './TaskComment'; diff --git a/packages/server-boilerplate/src/orchestrator/auth/AuthConnection.ts b/packages/server-boilerplate/src/orchestrator/auth/AuthConnection.ts index c397d2a81e..b10df863a1 100644 --- a/packages/server-boilerplate/src/orchestrator/auth/AuthConnection.ts +++ b/packages/server-boilerplate/src/orchestrator/auth/AuthConnection.ts @@ -37,13 +37,13 @@ export class AuthConnection extends ApiConnection { } public async login( - { emailAddress, password, deviceName }: Credentials, + { emailAddress, password, deviceName, timezone }: Credentials, serverName: string = DEFAULT_NAME, ) { const response = await this.post( 'auth', { grantType: 'password' }, - { emailAddress, password, deviceName: `${serverName}: ${deviceName}` }, + { emailAddress, password, deviceName: `${serverName}: ${deviceName}`, timezone }, ); return this.parseAuthResponse(response); } diff --git a/packages/server-boilerplate/src/orchestrator/types.ts b/packages/server-boilerplate/src/orchestrator/types.ts index 32053154c1..7a9979c09c 100644 --- a/packages/server-boilerplate/src/orchestrator/types.ts +++ b/packages/server-boilerplate/src/orchestrator/types.ts @@ -13,6 +13,7 @@ export interface Credentials { emailAddress: string; password: string; deviceName: string; + timezone: string; } export interface OneTimeCredentials { diff --git a/packages/server-utils/src/email/templates/content/generic.html b/packages/server-utils/src/email/templates/content/generic.html new file mode 100644 index 0000000000..d9c2b24310 --- /dev/null +++ b/packages/server-utils/src/email/templates/content/generic.html @@ -0,0 +1,4 @@ +
+

Hi {{userName}},

+

{{message}}

+
diff --git a/packages/tupaia-web-server/src/routes/MapOverlaysRoute.ts b/packages/tupaia-web-server/src/routes/MapOverlaysRoute.ts index 57f4d94726..11a567e450 100644 --- a/packages/tupaia-web-server/src/routes/MapOverlaysRoute.ts +++ b/packages/tupaia-web-server/src/routes/MapOverlaysRoute.ts @@ -6,6 +6,7 @@ import { Request } from 'express'; import { Route } from '@tupaia/server-boilerplate'; import { + Entity, MapOverlay, MapOverlayGroup, MapOverlayGroupRelation, @@ -77,6 +78,20 @@ export class MapOverlaysRoute extends Route { const { pageSize } = query; const entity = await ctx.services.entity.getEntity(projectCode, entityCode); + + const ancestors: Entity[] = await ctx.services.entity.getAncestorsOfEntity( + projectCode, + entityCode, + { + fields: ['code', 'type'], + }, + ); + + // get the types of the ancestors, excluding the current entity + const ancestorTypes = ancestors + .filter(ancestor => ancestor.code !== entityCode) + .map(ancestor => ancestor.type.toLowerCase().replace('_', '')); + const rootEntityCode = entity.country_code || entity.code; // Do the initial overlay fetch from the central server, since that enforces permissions @@ -141,6 +156,11 @@ export class MapOverlaysRoute extends Route { (relation: MapOverlayGroupRelation) => { if (relation.child_type === MAP_OVERLAY_CHILD_TYPE) { const overlay = overlaysById[relation.child_id]; + + // If the measure level is found in the ancestor types, that means the currently selected entity is a descendant of the measure level entity, so there will be no data to display. In this case, the overlay should be disabled. + const isDisabled = overlay.config.measureLevel + ? ancestorTypes.includes(overlay.config.measureLevel.toLowerCase()) + : false; // Translate Map Overlay return { name: overlay.name, @@ -149,6 +169,7 @@ export class MapOverlaysRoute extends Route { legacy: overlay.legacy, sortOrder: relation.sort_order, entityAttributesFilter: overlay.entity_attributes_filter, + disabled: isDisabled, ...overlay.config, } as TranslatedMapOverlay; } diff --git a/packages/tupaia-web-server/src/utils/downloadDashboardAsPdf.ts b/packages/tupaia-web-server/src/utils/downloadDashboardAsPdf.ts index 65f47c86e1..73b6487273 100644 --- a/packages/tupaia-web-server/src/utils/downloadDashboardAsPdf.ts +++ b/packages/tupaia-web-server/src/utils/downloadDashboardAsPdf.ts @@ -18,6 +18,7 @@ export const downloadDashboardAsPdf = ( settings: TupaiaWebExportDashboardRequest.ReqBody['settings'] = { exportWithLabels: false, exportWithTable: false, + exportDescription: null, separatePagePerItem: true, }, ) => { diff --git a/packages/tupaia-web/src/api/mutations/useLogin.ts b/packages/tupaia-web/src/api/mutations/useLogin.ts index a170a2daf7..b9e4a91caf 100644 --- a/packages/tupaia-web/src/api/mutations/useLogin.ts +++ b/packages/tupaia-web/src/api/mutations/useLogin.ts @@ -5,6 +5,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; import { Location, useLocation, useNavigate } from 'react-router'; +import { getBrowserTimeZone } from '@tupaia/utils'; import { gaEvent, useModal } from '../../utils'; import { post } from '../api'; import { DEFAULT_PROJECT_ENTITY, MODAL_ROUTES } from '../../constants'; @@ -28,6 +29,7 @@ export const useLogin = () => { emailAddress: email, password, deviceName: window.navigator.userAgent, + timezone: getBrowserTimeZone(), }, }); }, diff --git a/packages/tupaia-web/src/features/Dashboard/ExportDashboard/ExportConfig.tsx b/packages/tupaia-web/src/features/Dashboard/ExportDashboard/ExportConfig.tsx index 19a84c3488..258dc2ea9c 100644 --- a/packages/tupaia-web/src/features/Dashboard/ExportDashboard/ExportConfig.tsx +++ b/packages/tupaia-web/src/features/Dashboard/ExportDashboard/ExportConfig.tsx @@ -19,9 +19,10 @@ import { useDashboard } from '../utils'; import { ExportSubtitle } from './ExportSubtitle'; import { MailingListSection } from './MailingListSection'; import { Preview } from './Preview'; +import { ExportDescriptionInput } from '../../ExportSettings/ExportDescriptionInput'; const ButtonGroup = styled.div` - padding-top: 2.5rem; + padding: 1rem 0; width: 100%; display: flex; justify-content: flex-end; @@ -31,7 +32,7 @@ const Wrapper = styled.div` display: flex; flex-direction: column; flex-grow: 1; - width 100%; + width: 100%; align-items: start; section + section { margin-top: 1.5rem; @@ -104,9 +105,9 @@ const ExportSettingsInstructionsContainer = styled.div` `; const ExportSettingsWrapper = styled.div` - padding-block-end: 2rem; + padding-block-end: 0.8rem; & + & { - padding-block-start: 1.5rem; + padding-block-start: 1rem; border-top: 0.1rem solid ${({ theme }) => theme.palette.text.secondary}; } &:last-child { @@ -124,7 +125,8 @@ export const ExportConfig = ({ onClose, selectedDashboardItems }: ExportDashboar const { data: project } = useProject(projectCode); const { data: entity } = useEntity(projectCode, entityCode); const { activeDashboard } = useDashboard(); - const { exportWithLabels, exportWithTable, separatePagePerItem } = useExportSettings(); + const { exportWithLabels, exportWithTable, exportDescription, separatePagePerItem } = + useExportSettings(); const exportFileName = `${project?.name}-${entity?.name}-${dashboardName}-dashboard-export`; @@ -139,6 +141,7 @@ export const ExportConfig = ({ onClose, selectedDashboardItems }: ExportDashboar settings: { exportWithLabels, exportWithTable, + exportDescription, separatePagePerItem, }, }); @@ -163,21 +166,25 @@ export const ExportConfig = ({ onClose, selectedDashboardItems }: ExportDashboar Edit export settings and click 'Download'. - {hasChartItems && ( -
- - - +
+ + + + + + + {hasChartItems && ( -
- )} + )} +
diff --git a/packages/tupaia-web/src/features/Dashboard/ExportDashboard/ExportDashboard.tsx b/packages/tupaia-web/src/features/Dashboard/ExportDashboard/ExportDashboard.tsx index d9d475e663..6a387dbfea 100644 --- a/packages/tupaia-web/src/features/Dashboard/ExportDashboard/ExportDashboard.tsx +++ b/packages/tupaia-web/src/features/Dashboard/ExportDashboard/ExportDashboard.tsx @@ -87,6 +87,7 @@ export const ExportDashboard = () => { exportWithLabels: false, exportWithTable: true, exportWithTableDisabled: false, + exportDescription: '', separatePagePerItem: true, }} > diff --git a/packages/tupaia-web/src/features/Dashboard/ExportDashboard/Preview.tsx b/packages/tupaia-web/src/features/Dashboard/ExportDashboard/Preview.tsx index 2124e62557..75c2edd254 100644 --- a/packages/tupaia-web/src/features/Dashboard/ExportDashboard/Preview.tsx +++ b/packages/tupaia-web/src/features/Dashboard/ExportDashboard/Preview.tsx @@ -49,10 +49,7 @@ const PreviewContainer = styled.div` overflow-x: hidden; ${A4Page} { // simulate the margins of the printed page - padding-block-start: 5rem; - &:last-child { - padding-block-end: 5rem; - } + padding: 1cm 2.5cm 2cm; } `; @@ -92,7 +89,11 @@ export const Preview = ({ )} - + ); diff --git a/packages/tupaia-web/src/features/EnlargedDashboardItem/ExportButton.tsx b/packages/tupaia-web/src/features/EnlargedDashboardItem/ExportButton.tsx index 9397f9c334..42acba3610 100644 --- a/packages/tupaia-web/src/features/EnlargedDashboardItem/ExportButton.tsx +++ b/packages/tupaia-web/src/features/EnlargedDashboardItem/ExportButton.tsx @@ -10,17 +10,36 @@ import { GetApp } from '@material-ui/icons'; import { IconButton } from '@tupaia/ui-components'; import { URL_SEARCH_PARAMS, DashboardItemVizTypes, ViewVizTypes } from '../../constants'; import { ExportDashboardItemContext, useEnlargedDashboardItem } from './utils'; +import { CircularProgress } from '@material-ui/core'; const Button = styled(IconButton).attrs({ color: 'default', - title: 'Export visualisation', })` position: absolute; top: 0.2rem; right: 2.7rem; z-index: 1; + svg { + color: ${({ theme }) => theme.palette.text.primary}; + } `; +export const ExportIconButton = ({ + onClick, + title = 'Export visualisation', + isLoading = false, +}: { + onClick: () => void; + title?: string; + isLoading?: boolean; +}) => { + return ( + + ); +}; + const EXPORTABLE_TYPES = [ DashboardItemVizTypes.Chart, DashboardItemVizTypes.Matrix, @@ -54,9 +73,5 @@ export const ExportButton = () => { if (!canExport || isExportMode) return null; - return ( - - ); + return ; }; diff --git a/packages/tupaia-web/src/features/EnlargedDashboardItem/index.ts b/packages/tupaia-web/src/features/EnlargedDashboardItem/index.ts index 27f581a1ba..7e1ba2007c 100644 --- a/packages/tupaia-web/src/features/EnlargedDashboardItem/index.ts +++ b/packages/tupaia-web/src/features/EnlargedDashboardItem/index.ts @@ -4,3 +4,4 @@ */ export { EnlargedDashboardItem } from './EnlargedDashboardItem'; export { EnlargedDashboardVisual } from './EnlargedDashboardVisual'; +export { ExportIconButton } from './ExportButton'; diff --git a/packages/tupaia-web/src/features/ExportSettings/ExportDescriptionInput.tsx b/packages/tupaia-web/src/features/ExportSettings/ExportDescriptionInput.tsx new file mode 100644 index 0000000000..34734cab9f --- /dev/null +++ b/packages/tupaia-web/src/features/ExportSettings/ExportDescriptionInput.tsx @@ -0,0 +1,78 @@ +/** + * Tupaia + * Copyright (c) 2017 - 2024 Beyond Essential Systems Pty Ltd + */ + +import React from 'react'; +import styled from 'styled-components'; +import { useExportSettings } from './ExportSettingsContext'; +import { ExportSettingLabel } from './ExportSettingLabel'; +import { TextField, OutlinedTextFieldProps } from '@material-ui/core'; + +const Wrapper = styled.div` + display: flex; + flex-direction: column; +`; + +const ExportDescriptionInputArea = styled((props: OutlinedTextFieldProps) => ( + +))` + margin-block-start: 0.6rem; + + .MuiInputBase-root { + border: 1px solid ${({ theme }) => theme.palette.text.secondary}; + border-radius: 5px; + padding: 0.6rem 0.75rem 0.75rem; + background: none; + color: ${({ theme }) => theme.palette.text.primary}; + font-size: 0.875rem; + line-height: 1.4; + + &.Mui-error { + border: 1px solid ${({ theme }) => theme.palette.error.main}; + } + + &.Mui-focused { + border-color: ${({ theme }) => theme.palette.text.primary}; + } + } +`; + +const ExportDescription = styled.div<{ + error: boolean; +}>` + display: flex; + align-self: end; + justify-content: space-between; + margin-top: 0.3rem; + color: ${({ error, theme }) => (error ? theme.palette.error.main : theme.palette.text.secondary)}; + font-size: 0.75rem; +`; + +const MAX_CHARACTERS = 250; + +export const ExportDescriptionInput = () => { + const { exportDescription, updateExportDescription } = useExportSettings(); + const showMaxCharsWarning = exportDescription.length >= MAX_CHARACTERS; + + return ( + + Description + + + {showMaxCharsWarning && 'Character limit reached: '} + {exportDescription.length}/{MAX_CHARACTERS} + + + ); +}; diff --git a/packages/tupaia-web/src/features/ExportSettings/ExportSettingLabel.tsx b/packages/tupaia-web/src/features/ExportSettings/ExportSettingLabel.tsx index c1fef2c0b8..c6217b151e 100644 --- a/packages/tupaia-web/src/features/ExportSettings/ExportSettingLabel.tsx +++ b/packages/tupaia-web/src/features/ExportSettings/ExportSettingLabel.tsx @@ -9,6 +9,6 @@ import styled from 'styled-components'; export const ExportSettingLabel = styled(Typography)` color: ${({ theme }) => theme.palette.text.primary}; padding-inline-start: 0; - font-size: 1.125rem; + font-size: 1rem; font-weight: ${({ theme }) => theme.typography.fontWeightMedium}; `; diff --git a/packages/tupaia-web/src/features/ExportSettings/ExportSettingsContext.tsx b/packages/tupaia-web/src/features/ExportSettings/ExportSettingsContext.tsx index 42930b6b0a..8b5f3de303 100644 --- a/packages/tupaia-web/src/features/ExportSettings/ExportSettingsContext.tsx +++ b/packages/tupaia-web/src/features/ExportSettings/ExportSettingsContext.tsx @@ -15,6 +15,7 @@ type ExportSettings = { exportWithLabels: boolean; exportWithTable: boolean; exportWithTableDisabled: boolean; + exportDescription: string; separatePagePerItem: boolean; }; @@ -22,23 +23,26 @@ type ExportSettingsContextType = ExportSettings & { setExportFormat: (value: ExportFormats) => void; setExportWithLabels: (value: boolean) => void; setExportWithTable: (value: boolean) => void; + setExportDescription: (value: string) => void; setSeparatePagePerItem: (value: boolean) => void; }; -const defaultContext = { +const defaultContext: ExportSettingsContextType = { exportFormat: ExportFormats.PNG, exportWithLabels: false, exportWithTable: true, exportWithTableDisabled: false, - separatePagePerItem: true, + exportDescription: '', setExportFormat: () => {}, setExportWithLabels: () => {}, setExportWithTable: () => {}, + setExportDescription: () => {}, + separatePagePerItem: true, setSeparatePagePerItem: () => {}, } as ExportSettingsContextType; // This is the context for the export settings -export const ExportSettingsContext = createContext(defaultContext); +export const ExportSettingsContext = createContext(defaultContext); export const useExportSettings = () => { const { @@ -46,9 +50,11 @@ export const useExportSettings = () => { exportWithLabels, exportWithTable, exportWithTableDisabled, + exportDescription, setExportFormat, setExportWithLabels, setExportWithTable, + setExportDescription, separatePagePerItem, setSeparatePagePerItem, } = useContext(ExportSettingsContext); @@ -64,6 +70,10 @@ export const useExportSettings = () => { setExportWithTable(e.target.checked); }; + const updateExportDescription = (e: ChangeEvent) => { + setExportDescription(e.target.value); + }; + const updateSeparatePagePerItem = (e: ChangeEvent) => { setSeparatePagePerItem(e.target.value === 'true'); }; @@ -72,6 +82,7 @@ export const useExportSettings = () => { setExportFormat(dashboardItemType === 'matrix' ? ExportFormats.XLSX : ExportFormats.PNG); setExportWithLabels(false); setExportWithTable(true); + setExportDescription(''); setSeparatePagePerItem(true); }; @@ -80,9 +91,11 @@ export const useExportSettings = () => { exportWithLabels, exportWithTable, exportWithTableDisabled, + exportDescription, updateExportFormat, updateExportWithLabels, updateExportWithTable, + updateExportDescription, resetExportSettings, separatePagePerItem, updateSeparatePagePerItem, @@ -105,6 +118,9 @@ export const ExportSettingsContextProvider = ({ const [exportWithTable, setExportWithTable] = useState( defaultSettings?.exportWithTable || true, ); + const [exportDescription, setExportDescription] = useState( + defaultSettings?.exportDescription || '', + ); const [exportWithTableDisabled] = useState( defaultSettings?.exportWithTableDisabled || false, ); @@ -120,9 +136,11 @@ export const ExportSettingsContextProvider = ({ exportWithLabels, exportWithTable, exportWithTableDisabled, + exportDescription, setExportFormat, setExportWithLabels, setExportWithTable, + setExportDescription, separatePagePerItem, setSeparatePagePerItem, }} diff --git a/packages/tupaia-web/src/features/Map/MapOverlaySelector/DesktopMapOverlaySelector.tsx b/packages/tupaia-web/src/features/Map/MapOverlaySelector/DesktopMapOverlaySelector.tsx index 813f5cc0f5..ef83573670 100644 --- a/packages/tupaia-web/src/features/Map/MapOverlaySelector/DesktopMapOverlaySelector.tsx +++ b/packages/tupaia-web/src/features/Map/MapOverlaySelector/DesktopMapOverlaySelector.tsx @@ -23,7 +23,12 @@ import { Entity } from '../../../types'; import { useExportMapOverlay } from '../../../api/mutations'; import { useEntity, useMapOverlays, useProject, useUser } from '../../../api/queries'; import { MOBILE_BREAKPOINT, URL_SEARCH_PARAMS } from '../../../constants'; -import { convertDateRangeToUrlPeriodString, useDateRanges, useGAEffect } from '../../../utils'; +import { + convertDateRangeToUrlPeriodString, + getFriendlyEntityType, + useDateRanges, + useGAEffect, +} from '../../../utils'; import { MapTableModal } from './MapTableModal'; import { MapOverlayList } from './MapOverlayList'; import { MapOverlayDatePicker } from './MapOverlayDatePicker'; @@ -271,12 +276,14 @@ export const DesktopMapOverlaySelector = ({ const exportTooltip = getExportTooltip(); + const friendlyEntityType = getFriendlyEntityType(entity?.type); + return ( <> {mapModalOpen && }
- Map Overlays + Map Overlays {friendlyEntityType && `(${friendlyEntityType})`} {selectedOverlay && (
{isLoggedIn && ( diff --git a/packages/tupaia-web/src/features/Map/MapOverlaySelector/MapOverlayList.tsx b/packages/tupaia-web/src/features/Map/MapOverlaySelector/MapOverlayList.tsx index d56357d84a..260ed15d6e 100644 --- a/packages/tupaia-web/src/features/Map/MapOverlaySelector/MapOverlayList.tsx +++ b/packages/tupaia-web/src/features/Map/MapOverlaySelector/MapOverlayList.tsx @@ -7,7 +7,7 @@ import React, { ChangeEvent, useEffect, useState } from 'react'; import { useParams } from 'react-router'; import { useSearchParams } from 'react-router-dom'; import styled from 'styled-components'; -import { ICON_STYLES, ReferenceTooltip } from '@tupaia/ui-components'; +import { ICON_STYLES, ReferenceTooltip, Tooltip } from '@tupaia/ui-components'; import { Accordion, AccordionDetails, @@ -16,10 +16,11 @@ import { Radio, RadioGroup, } from '@material-ui/core'; -import { TupaiaWebMapOverlaysRequest } from '@tupaia/types'; +import { EntityType, TupaiaWebMapOverlaysRequest } from '@tupaia/types'; import { KeyboardArrowRight } from '@material-ui/icons'; -import { useMapOverlays } from '../../../api/queries'; +import { useEntity, useMapOverlays } from '../../../api/queries'; import { DEFAULT_PERIOD_PARAM_STRING, URL_SEARCH_PARAMS } from '../../../constants'; +import { getFriendlyEntityType } from '../../../utils'; const AccordionWrapper = styled(Accordion)` background-color: transparent; @@ -61,7 +62,7 @@ const AccordionHeader = styled(AccordionSummary)` } `; -const Wrapper = styled.div` +const RadioItemWrapper = styled.div` display: flex; align-items: center; `; @@ -90,18 +91,29 @@ const AccordionContent = styled(AccordionDetails)` const FormLabel = styled(FormControlLabel)` border-radius: 3px; + &.Mui-disabled .MuiSvgIcon-root { + color: rgba(255, 255, 255, 0.5); + } &:hover { background: rgba(153, 153, 153, 0.2); } `; +const MapOverlayItemWrapper = ({ disabled, entityType, children }) => { + if (!disabled) { + return children; + } + return {children}; +}; /** * A recursive component that renders a list of map overlays in an accordion. */ const MapOverlayAccordion = ({ - mapOverlayGroup, + mapOverlayListItem, + entityType, }: { - mapOverlayGroup: TupaiaWebMapOverlaysRequest.TranslatedMapOverlayGroup; + mapOverlayListItem: TupaiaWebMapOverlaysRequest.TranslatedMapOverlayGroup; + entityType?: EntityType; }) => { const [expanded, setExpanded] = useState(false); const toggleExpanded = () => { @@ -111,10 +123,10 @@ const MapOverlayAccordion = ({ return ( }> - {mapOverlayGroup.name} - {mapOverlayGroup.info?.reference && ( + {mapOverlayListItem.name} + {mapOverlayListItem.info?.reference && ( )} @@ -122,21 +134,28 @@ const MapOverlayAccordion = ({ {/* Map through the children, and if there are more nested children, render another accordion. Otherwise, render radio input for the overlay */} - {mapOverlayGroup.children.map(mapOverlay => - 'children' in mapOverlay ? ( - + {mapOverlayListItem.children.map(child => + 'children' in child ? ( + ) : ( - - } - label={mapOverlay.name} - key={mapOverlay.code} - /> - {mapOverlay.info?.reference && ( - - )} - + + + } + label={child.name} + key={child.code} + disabled={child.disabled} + /> + {child.info?.reference && ( + + )} + + ), )} @@ -196,6 +215,7 @@ const useSavedMapOverlayDates = () => { export const MapOverlayList = ({ toggleOverlayLibrary }: { toggleOverlayLibrary?: () => void }) => { const [urlSearchParams, setUrlParams] = useSearchParams(); const { projectCode, entityCode } = useParams(); + const { data: entity } = useEntity(projectCode, entityCode, true); const { getSavedMapOverlayDateRange } = useSavedMapOverlayDates(); const { mapOverlayGroups = [], @@ -219,6 +239,7 @@ export const MapOverlayList = ({ toggleOverlayLibrary }: { toggleOverlayLibrary? if (isLoadingMapOverlays) return null; + const friendlyEntityType = getFriendlyEntityType(entity?.type); return ( item.name) .map(group => ( - + ))} ); diff --git a/packages/tupaia-web/src/features/Map/MapOverlaySelector/MobileMapOverlaySelector.tsx b/packages/tupaia-web/src/features/Map/MapOverlaySelector/MobileMapOverlaySelector.tsx index 195fe2eb47..13fa5dafa7 100644 --- a/packages/tupaia-web/src/features/Map/MapOverlaySelector/MobileMapOverlaySelector.tsx +++ b/packages/tupaia-web/src/features/Map/MapOverlaySelector/MobileMapOverlaySelector.tsx @@ -9,8 +9,8 @@ import { Typography } from '@material-ui/core'; import { ArrowBack, ArrowForwardIos } from '@material-ui/icons'; import { Button } from '@tupaia/ui-components'; import { MOBILE_BREAKPOINT } from '../../../constants'; -import { getMobileTopBarHeight } from '../../../utils'; -import { useMapOverlays } from '../../../api/queries'; +import { getFriendlyEntityType, getMobileTopBarHeight } from '../../../utils'; +import { useEntity, useMapOverlays } from '../../../api/queries'; import { MapOverlayList } from './MapOverlayList'; import { MapOverlaySelectorTitle } from './MapOverlaySelectorTitle'; import { MapOverlayDatePicker } from './MapOverlayDatePicker'; @@ -113,8 +113,11 @@ export const MobileMapOverlaySelector = ({ toggleOverlayLibrary, }: MobileMapOverlaySelectorProps) => { const { projectCode, entityCode } = useParams(); + const { data: entity } = useEntity(projectCode, entityCode, true); const { hasMapOverlays } = useMapOverlays(projectCode, entityCode); + const friendlyEntityType = getFriendlyEntityType(entity?.type); + return ( @@ -146,7 +149,9 @@ export const MobileMapOverlaySelector = ({ - Overlay Library + + Overlay Library {friendlyEntityType && `(${friendlyEntityType})`} + {/* Use the entity code as a key so that the local state of the MapOverlayList resets between entities */} diff --git a/packages/tupaia-web/src/features/Map/utils/useDefaultMapOverlay.ts b/packages/tupaia-web/src/features/Map/utils/useDefaultMapOverlay.ts index 9f53146f9c..dcc0144c4a 100644 --- a/packages/tupaia-web/src/features/Map/utils/useDefaultMapOverlay.ts +++ b/packages/tupaia-web/src/features/Map/utils/useDefaultMapOverlay.ts @@ -5,7 +5,7 @@ import { useEffect } from 'react'; import { useQueryClient } from '@tanstack/react-query'; -import { useLocation, useNavigate, useSearchParams } from 'react-router-dom'; +import { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'; import { useMapOverlays, useProject } from '../../../api/queries'; import { DEFAULT_MAP_OVERLAY_ID, @@ -18,6 +18,7 @@ import { EntityCode, ProjectCode } from '../../../types'; export const useDefaultMapOverlay = (projectCode?: ProjectCode, entityCode?: EntityCode) => { const queryClient = useQueryClient(); const navigate = useNavigate(); + const { dashboardName } = useParams(); const location = useLocation(); const [urlSearchParams] = useSearchParams(); const { data: project } = useProject(projectCode); @@ -27,7 +28,8 @@ export const useDefaultMapOverlay = (projectCode?: ProjectCode, entityCode?: Ent const selectedMapOverlay = urlSearchParams.get(URL_SEARCH_PARAMS.MAP_OVERLAY); const selectedMapOverlayPeriod = urlSearchParams.get(URL_SEARCH_PARAMS.MAP_OVERLAY_PERIOD); - const isValidMapOverlayId = !!mapOverlaysByCode[selectedMapOverlay!]; + const isValidMapOverlayId = + !!mapOverlaysByCode[selectedMapOverlay!] && !mapOverlaysByCode[selectedMapOverlay!].disabled; const overlayCodes = mapOverlaysByCode ? Object.keys(mapOverlaysByCode) : []; const getDefaultOverlayCode = () => { @@ -36,18 +38,26 @@ export const useDefaultMapOverlay = (projectCode?: ProjectCode, entityCode?: Ent const { defaultMeasure } = project; // if the defaultMeasure exists, use this - if (mapOverlaysByCode[defaultMeasure as string]) { + if ( + defaultMeasure && + mapOverlaysByCode[defaultMeasure] && + !mapOverlaysByCode[defaultMeasure].disabled + ) { return defaultMeasure; } // if the generic default overlay exists, use this - if (mapOverlaysByCode[DEFAULT_MAP_OVERLAY_ID]) { + if ( + mapOverlaysByCode[DEFAULT_MAP_OVERLAY_ID] && + !mapOverlaysByCode[DEFAULT_MAP_OVERLAY_ID].disabled + ) { return DEFAULT_MAP_OVERLAY_ID; } // otherwise use the first overlay in the list if (allMapOverlays.length > 0) { - return allMapOverlays[0].code; + const firstNonDisabledOverlay = allMapOverlays.find(overlay => !overlay.disabled); + return firstNonDisabledOverlay?.code; } } }; @@ -62,6 +72,7 @@ export const useDefaultMapOverlay = (projectCode?: ProjectCode, entityCode?: Ent } const defaultOverlayCode = getDefaultOverlayCode(); + if (defaultOverlayCode) { urlSearchParams.set(URL_SEARCH_PARAMS.MAP_OVERLAY, defaultOverlayCode as string); } @@ -74,5 +85,6 @@ export const useDefaultMapOverlay = (projectCode?: ProjectCode, entityCode?: Ent ...location, search: urlSearchParams.toString(), }); - }, [JSON.stringify(mapOverlaysByCode), project, selectedMapOverlay]); + }, [JSON.stringify(mapOverlaysByCode), project, selectedMapOverlay, dashboardName]); + // include dashboardName in the dependencies to ensure that the default overlay is updated when the dashboard changes }; diff --git a/packages/tupaia-web/src/features/PDFExportDashboardItem/PDFExportDashboardItem.tsx b/packages/tupaia-web/src/features/PDFExportDashboardItem/PDFExportDashboardItem.tsx index 6130777633..0f1b93f73e 100644 --- a/packages/tupaia-web/src/features/PDFExportDashboardItem/PDFExportDashboardItem.tsx +++ b/packages/tupaia-web/src/features/PDFExportDashboardItem/PDFExportDashboardItem.tsx @@ -59,6 +59,11 @@ const Description = styled(Typography)` text-align: center; `; +const ExportDescription = styled(Typography)` + margin-bottom: 0.3rem; + word-break: break-word; +`; + const ExportContent = styled.div<{ $hasData?: boolean; }>` @@ -100,6 +105,7 @@ interface PDFExportDashboardItemProps { activeDashboard?: Dashboard; isPreview?: boolean; settings?: TupaiaWebExportDashboardRequest.ReqBody['settings']; + displayDescription?: boolean; displayHeader?: boolean; } @@ -113,6 +119,7 @@ export const PDFExportDashboardItem = ({ activeDashboard, isPreview = false, settings, + displayDescription = false, displayHeader, }: PDFExportDashboardItemProps) => { const [width, setWidth] = useState(0); @@ -181,7 +188,14 @@ export const PDFExportDashboardItem = ({ )} - {displayHeader && {activeDashboard?.name}} + {displayHeader && ( + + {activeDashboard?.name} + {displayDescription && ( + {settings?.exportDescription} + )} + + )} {title} {reference && } {period && {period}} diff --git a/packages/tupaia-web/src/features/Visuals/View/MultiPhotograph/MultiPhotographEnlarged.tsx b/packages/tupaia-web/src/features/Visuals/View/MultiPhotograph/MultiPhotographEnlarged.tsx index 8c0bd55ec1..0deb401412 100644 --- a/packages/tupaia-web/src/features/Visuals/View/MultiPhotograph/MultiPhotographEnlarged.tsx +++ b/packages/tupaia-web/src/features/Visuals/View/MultiPhotograph/MultiPhotographEnlarged.tsx @@ -10,6 +10,12 @@ import 'slick-carousel/slick/slick-theme.css'; import Slider from 'react-slick'; import { KeyboardArrowLeft, KeyboardArrowRight } from '@material-ui/icons'; import { IconButton, Typography } from '@material-ui/core'; +import { useParams, useSearchParams } from 'react-router-dom'; +import { SmallAlert } from '@tupaia/ui-components'; +import { URL_SEARCH_PARAMS } from '../../../../constants'; +import { useDashboard } from '../../../Dashboard'; +import { useDownloadImages } from './useDownloadImages'; +import { ExportIconButton } from '../../../EnlargedDashboardItem'; const Wrapper = styled.div` position: relative; @@ -137,6 +143,7 @@ interface MultiPhotographEnlargedProps { export const MultiPhotographEnlarged = ({ report, config }: MultiPhotographEnlargedProps) => { const { data = [] } = report ?? {}; + const [urlSearchParams] = useSearchParams(); /** The following is a workaround for an issue where the slider doesn't link the two sliders together until another re-render, because the ref is not set yet * See [example](https://react-slick.neostack.com/docs/example/as-nav-for) @@ -147,6 +154,16 @@ export const MultiPhotographEnlarged = ({ report, config }: MultiPhotographEnlar const [mainSlider, setMainSlider] = useState(null); const [thumbnailSlider, setThumbnailSlider] = useState(null); + const reportCode = urlSearchParams.get(URL_SEARCH_PARAMS.REPORT); + const { projectCode, entityCode } = useParams(); + const { activeDashboard } = useDashboard(); + + const { + mutate: downloadImages, + isLoading, + error, + } = useDownloadImages(projectCode, entityCode, activeDashboard?.code, reportCode, data); + useEffect(() => { if (!sliderRef1.current || mainSlider) return; setMainSlider(sliderRef1.current); @@ -208,50 +225,59 @@ export const MultiPhotographEnlarged = ({ report, config }: MultiPhotographEnlar const hasMoreThumbnails = data.length > maxThumbnailsToDisplay; return ( - - - - {data.map((photo, index) => ( - - - {photo.label && {photo.label}} - - ))} - - + <> + downloadImages()} + isLoading={isLoading} + title="Export images" + /> + + + + {error && {(error as Error).message}} + + {data.map((photo, index) => ( + + + {photo.label && {photo.label}} + + ))} + + - - - {data?.map((photo, index) => ( - - - - ))} - - - + + + {data?.map((photo, index) => ( + + + + ))} + + + + ); }; diff --git a/packages/tupaia-web/src/features/Visuals/View/MultiPhotograph/useDownloadImages.ts b/packages/tupaia-web/src/features/Visuals/View/MultiPhotograph/useDownloadImages.ts new file mode 100644 index 0000000000..280fbd7502 --- /dev/null +++ b/packages/tupaia-web/src/features/Visuals/View/MultiPhotograph/useDownloadImages.ts @@ -0,0 +1,88 @@ +/** + * Tupaia + * Copyright (c) 2017 - 2024 Beyond Essential Systems Pty Ltd + */ + +import download from 'downloadjs'; +import JSZip from 'jszip'; +import { useMutation } from '@tanstack/react-query'; +import { ViewReport } from '@tupaia/types'; + +export const useDownloadImages = ( + projectCode, + entityCode, + dashboardCode, + reportCode, + images: ViewReport['data'], +) => { + return useMutation( + async () => { + return Promise.all( + images?.map(async photo => { + const response = await fetch(photo.value, { + method: 'GET', + }); + + return { + blob: await response.blob(), + label: photo.label, + }; + }) ?? [], + ); + }, + { + onSuccess: async fetchedImages => { + if (!fetchedImages?.length) return; + // if there is only one image, download it directly + if (fetchedImages.length === 1) { + const { blob } = fetchedImages[0]; + const { type } = blob; + const fileExtension = type.split('/')[1]; + download( + blob, + `${projectCode}_${entityCode}_${dashboardCode}_${reportCode}.${fileExtension}`, + ); + return; + } + + const blobsWithNames: { + blob: Blob; + name: string; + }[] = []; + + const replaceRegex = new RegExp(/\s\(\d+\)$/); + + fetchedImages.forEach((image, index) => { + const { label, blob } = image; + + if (label) { + // If there is a label and it is already in the list, add a count to the label + const count = blobsWithNames.filter( + b => b.name.replace(replaceRegex, '') === label, + ).length; + if (count > 0) { + return blobsWithNames.push({ blob, name: `${label} (${count + 1})` }); + } + // If there is a label and it is not in the list, add it + return blobsWithNames.push({ blob, name: label }); + } + // Default to Image 1, Image 2, etc. + blobsWithNames.push({ blob, name: `Image ${index + 1}` }); + }); + + const zip = new JSZip(); + + blobsWithNames.forEach(({ blob, name }) => { + const { type } = blob; + const fileExtension = type.split('/')[1]; + const fileName = `${name}.${fileExtension}`; + zip.file(fileName, blob); + }); + + zip.generateAsync({ type: 'blob' }).then(blob => { + download(blob, `${projectCode}_${entityCode}_${dashboardCode}_${reportCode}.zip`); + }); + }, + }, + ); +}; diff --git a/packages/tupaia-web/src/theme/theme.ts b/packages/tupaia-web/src/theme/theme.ts index 992642ab10..60687bd188 100644 --- a/packages/tupaia-web/src/theme/theme.ts +++ b/packages/tupaia-web/src/theme/theme.ts @@ -5,6 +5,7 @@ import { MOBILE_BREAKPOINT } from '../constants'; const LIGHT_BLACK = '#2e2f33'; const DARK_BLACK = '#202124'; const LIGHT_GREY = '#9BA0A6'; +const ERROR_ORANGE = '#f76853'; const overMobileBreakpoint = `@media (min-width: ${MOBILE_BREAKPOINT})`; @@ -39,6 +40,9 @@ export const theme = createMuiTheme({ text: { secondary: LIGHT_GREY, }, + error: { + main: ERROR_ORANGE, + }, success: { main: '#25d366', }, diff --git a/packages/tupaia-web/src/utils/getFriendlyEntityType.ts b/packages/tupaia-web/src/utils/getFriendlyEntityType.ts new file mode 100644 index 0000000000..fa38b71cf9 --- /dev/null +++ b/packages/tupaia-web/src/utils/getFriendlyEntityType.ts @@ -0,0 +1,13 @@ +/** + * Tupaia + * Copyright (c) 2017 - 2024 Beyond Essential Systems Pty Ltd + */ + +/** + * @description Entity types are stored as strings with '_' separating words. This function converts it to a human-readable format. + */ +export const getFriendlyEntityType = entityType => { + if (!entityType) return ''; + + return entityType.toLowerCase().replace('_', '-'); +}; diff --git a/packages/tupaia-web/src/utils/index.ts b/packages/tupaia-web/src/utils/index.ts index db7856f586..4a063573c5 100644 --- a/packages/tupaia-web/src/utils/index.ts +++ b/packages/tupaia-web/src/utils/index.ts @@ -15,3 +15,4 @@ export { useGAEffect } from './useGAEffect'; export { useUrlLoginToken } from './useUrlLoginToken'; export { getTopBarHeight, getMobileTopBarHeight } from './getTopBarHeight'; export { downloadPDF } from './downloadPDF'; +export { getFriendlyEntityType } from './getFriendlyEntityType'; diff --git a/packages/tupaia-web/src/views/DashboardPDFExport.tsx b/packages/tupaia-web/src/views/DashboardPDFExport.tsx index 22e905ce9d..41f10b975d 100644 --- a/packages/tupaia-web/src/views/DashboardPDFExport.tsx +++ b/packages/tupaia-web/src/views/DashboardPDFExport.tsx @@ -22,6 +22,7 @@ const Parent = styled.div<{ $isPreview?: boolean }>` interface DashboardPDFExportProps { selectedDashboardItems?: TupaiaWebExportDashboardRequest.ReqBody['selectedDashboardItems']; isPreview?: boolean; + pageIndex?: number; } /** @@ -30,6 +31,7 @@ interface DashboardPDFExportProps { export const DashboardPDFExport = ({ selectedDashboardItems: propsSelectedDashboardItems, isPreview = false, + pageIndex, }: DashboardPDFExportProps) => { // Hacky way to change default background color without touching root css. Only apply when generating the pdf, not when in preview mode as it changes the display if (!isPreview) { @@ -42,7 +44,8 @@ export const DashboardPDFExport = ({ const { activeDashboard } = useDashboard(); const { data: entity } = useEntity(projectCode, entityCode); - const { exportWithLabels, exportWithTable, separatePagePerItem } = useExportSettings(); + const { exportWithLabels, exportWithTable, exportDescription, separatePagePerItem } = + useExportSettings(); if (!activeDashboard) return null; @@ -60,6 +63,7 @@ export const DashboardPDFExport = ({ JSON.parse(urlSettings) || { exportWithLabels, exportWithTable, + exportDescription, separatePagePerItem, } ); @@ -68,6 +72,7 @@ export const DashboardPDFExport = ({ return { exportWithLabels, exportWithTable, + exportDescription, separatePagePerItem, }; }; @@ -95,6 +100,7 @@ export const DashboardPDFExport = ({ activeDashboard={activeDashboard} isPreview={isPreview} settings={settings} + displayDescription={pageIndex === 1 || (!isPreview && i === 0)} displayHeader={settings.separatePagePerItem || i === 0} /> ))} diff --git a/packages/types/src/schemas/schemas.ts b/packages/types/src/schemas/schemas.ts index be16a87713..4536718d2d 100644 --- a/packages/types/src/schemas/schemas.ts +++ b/packages/types/src/schemas/schemas.ts @@ -64,7 +64,6 @@ export const DateOffsetSpecSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -130,7 +129,6 @@ export const DefaultTimePeriodSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -180,7 +178,6 @@ export const DefaultTimePeriodSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -232,7 +229,6 @@ export const DefaultTimePeriodSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -452,7 +448,6 @@ export const BaseConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -502,7 +497,6 @@ export const BaseConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -554,7 +548,6 @@ export const BaseConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -612,7 +605,6 @@ export const BaseConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -656,7 +648,6 @@ export const BaseConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -913,7 +904,6 @@ export const MatrixConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -963,7 +953,6 @@ export const MatrixConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -1015,7 +1004,6 @@ export const MatrixConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -1073,7 +1061,6 @@ export const MatrixConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -1117,7 +1104,6 @@ export const MatrixConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -1639,7 +1625,6 @@ export const MatrixVizBuilderConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -1689,7 +1674,6 @@ export const MatrixVizBuilderConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -1741,7 +1725,6 @@ export const MatrixVizBuilderConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -1799,7 +1782,6 @@ export const MatrixVizBuilderConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -1843,7 +1825,6 @@ export const MatrixVizBuilderConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -2860,7 +2841,6 @@ export const ComponentConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -2910,7 +2890,6 @@ export const ComponentConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -2962,7 +2941,6 @@ export const ComponentConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -3020,7 +2998,6 @@ export const ComponentConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -3064,7 +3041,6 @@ export const ComponentConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -3407,7 +3383,6 @@ export const BaseChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -3457,7 +3432,6 @@ export const BaseChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -3509,7 +3483,6 @@ export const BaseChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -3567,7 +3540,6 @@ export const BaseChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -3611,7 +3583,6 @@ export const BaseChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -4297,7 +4268,6 @@ export const CartesianChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -4347,7 +4317,6 @@ export const CartesianChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -4399,7 +4368,6 @@ export const CartesianChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -4457,7 +4425,6 @@ export const CartesianChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -4501,7 +4468,6 @@ export const CartesianChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -5132,7 +5098,6 @@ export const PieChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -5182,7 +5147,6 @@ export const PieChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -5234,7 +5198,6 @@ export const PieChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -5292,7 +5255,6 @@ export const PieChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -5336,7 +5298,6 @@ export const PieChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -5707,7 +5668,6 @@ export const BarChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -5757,7 +5717,6 @@ export const BarChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -5809,7 +5768,6 @@ export const BarChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -5867,7 +5825,6 @@ export const BarChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -5911,7 +5868,6 @@ export const BarChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -6678,7 +6634,6 @@ export const LineChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -6728,7 +6683,6 @@ export const LineChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -6780,7 +6734,6 @@ export const LineChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -6838,7 +6791,6 @@ export const LineChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -6882,7 +6834,6 @@ export const LineChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -7641,7 +7592,6 @@ export const ComposedChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -7691,7 +7641,6 @@ export const ComposedChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -7743,7 +7692,6 @@ export const ComposedChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -7801,7 +7749,6 @@ export const ComposedChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -7845,7 +7792,6 @@ export const ComposedChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -8420,7 +8366,6 @@ export const GaugeChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -8470,7 +8415,6 @@ export const GaugeChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -8522,7 +8466,6 @@ export const GaugeChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -8580,7 +8523,6 @@ export const GaugeChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -8624,7 +8566,6 @@ export const GaugeChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -8902,7 +8843,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -8952,7 +8892,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -9004,7 +8943,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -9062,7 +9000,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -9106,7 +9043,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -9417,7 +9353,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -9467,7 +9402,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -9519,7 +9453,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -9577,7 +9510,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -9621,7 +9553,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -10212,7 +10143,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -10262,7 +10192,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -10314,7 +10243,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -10372,7 +10300,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -10416,7 +10343,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -11001,7 +10927,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -11051,7 +10976,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -11103,7 +11027,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -11161,7 +11084,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -11205,7 +11127,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -11779,7 +11700,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -11829,7 +11749,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -11881,7 +11800,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -11939,7 +11857,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -11983,7 +11900,6 @@ export const ChartConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -12391,7 +12307,6 @@ export const BaseViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -12441,7 +12356,6 @@ export const BaseViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -12493,7 +12407,6 @@ export const BaseViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -12551,7 +12464,6 @@ export const BaseViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -12595,7 +12507,6 @@ export const BaseViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -12868,7 +12779,6 @@ export const MultiValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -12918,7 +12828,6 @@ export const MultiValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -12970,7 +12879,6 @@ export const MultiValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -13028,7 +12936,6 @@ export const MultiValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -13072,7 +12979,6 @@ export const MultiValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -13453,7 +13359,6 @@ export const MultiValueRowViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -13503,7 +13408,6 @@ export const MultiValueRowViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -13555,7 +13459,6 @@ export const MultiValueRowViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -13613,7 +13516,6 @@ export const MultiValueRowViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -13657,7 +13559,6 @@ export const MultiValueRowViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -13989,7 +13890,6 @@ export const SingleValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -14039,7 +13939,6 @@ export const SingleValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -14091,7 +13990,6 @@ export const SingleValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -14149,7 +14047,6 @@ export const SingleValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -14193,7 +14090,6 @@ export const SingleValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -14439,7 +14335,6 @@ export const MultiPhotographViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -14489,7 +14384,6 @@ export const MultiPhotographViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -14541,7 +14435,6 @@ export const MultiPhotographViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -14599,7 +14492,6 @@ export const MultiPhotographViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -14643,7 +14535,6 @@ export const MultiPhotographViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -14885,7 +14776,6 @@ export const MultiSingleValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -14935,7 +14825,6 @@ export const MultiSingleValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -14987,7 +14876,6 @@ export const MultiSingleValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -15045,7 +14933,6 @@ export const MultiSingleValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -15089,7 +14976,6 @@ export const MultiSingleValueViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -15331,7 +15217,6 @@ export const SingleDownloadLinkViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -15381,7 +15266,6 @@ export const SingleDownloadLinkViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -15433,7 +15317,6 @@ export const SingleDownloadLinkViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -15491,7 +15374,6 @@ export const SingleDownloadLinkViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -15535,7 +15417,6 @@ export const SingleDownloadLinkViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -15777,7 +15658,6 @@ export const DataDownloadViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -15827,7 +15707,6 @@ export const DataDownloadViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -15879,7 +15758,6 @@ export const DataDownloadViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -15937,7 +15815,6 @@ export const DataDownloadViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -15981,7 +15858,6 @@ export const DataDownloadViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -16223,7 +16099,6 @@ export const DataDownloadViewVizBuilderConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -16273,7 +16148,6 @@ export const DataDownloadViewVizBuilderConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -16325,7 +16199,6 @@ export const DataDownloadViewVizBuilderConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -16383,7 +16256,6 @@ export const DataDownloadViewVizBuilderConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -16427,7 +16299,6 @@ export const DataDownloadViewVizBuilderConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -16685,7 +16556,6 @@ export const SingleDateViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -16735,7 +16605,6 @@ export const SingleDateViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -16787,7 +16656,6 @@ export const SingleDateViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -16845,7 +16713,6 @@ export const SingleDateViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -16889,7 +16756,6 @@ export const SingleDateViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -17131,7 +16997,6 @@ export const DownloadFilesViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -17181,7 +17046,6 @@ export const DownloadFilesViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -17233,7 +17097,6 @@ export const DownloadFilesViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -17291,7 +17154,6 @@ export const DownloadFilesViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -17335,7 +17197,6 @@ export const DownloadFilesViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -17577,7 +17438,6 @@ export const QRCodeViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -17627,7 +17487,6 @@ export const QRCodeViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -17679,7 +17538,6 @@ export const QRCodeViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -17737,7 +17595,6 @@ export const QRCodeViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -17781,7 +17638,6 @@ export const QRCodeViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -18025,7 +17881,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -18075,7 +17930,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -18127,7 +17981,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -18185,7 +18038,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -18229,7 +18081,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -18483,7 +18334,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -18533,7 +18383,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -18585,7 +18434,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -18643,7 +18491,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -18687,7 +18534,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -19018,7 +18864,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -19068,7 +18913,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -19120,7 +18964,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -19178,7 +19021,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -19222,7 +19064,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -19467,7 +19308,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -19517,7 +19357,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -19569,7 +19408,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -19627,7 +19465,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -19671,7 +19508,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -19912,7 +19748,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -19962,7 +19797,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -20014,7 +19848,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -20072,7 +19905,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -20116,7 +19948,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -20357,7 +20188,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -20407,7 +20237,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -20459,7 +20288,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -20517,7 +20345,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -20561,7 +20388,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -20802,7 +20628,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -20852,7 +20677,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -20904,7 +20728,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -20962,7 +20785,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -21006,7 +20828,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -21247,7 +21068,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -21297,7 +21117,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -21349,7 +21168,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -21407,7 +21225,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -21451,7 +21268,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -21692,7 +21508,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -21742,7 +21557,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -21794,7 +21608,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -21852,7 +21665,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -21896,7 +21708,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -22137,7 +21948,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -22187,7 +21997,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -22239,7 +22048,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -22297,7 +22105,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -22341,7 +22148,6 @@ export const ViewConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -22697,7 +22503,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -22747,7 +22552,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -22799,7 +22603,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -22857,7 +22660,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -22901,7 +22703,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -23423,7 +23224,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -23473,7 +23273,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -23525,7 +23324,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -23583,7 +23381,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -23627,7 +23424,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -23852,7 +23648,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -23902,7 +23697,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -23954,7 +23748,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -24012,7 +23805,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -24056,7 +23848,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -24367,7 +24158,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -24417,7 +24207,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -24469,7 +24258,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -24527,7 +24315,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -24571,7 +24358,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -25162,7 +24948,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -25212,7 +24997,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -25264,7 +25048,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -25322,7 +25105,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -25366,7 +25148,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -25951,7 +25732,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -26001,7 +25781,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -26053,7 +25832,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -26111,7 +25889,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -26155,7 +25932,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -26729,7 +26505,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -26779,7 +26554,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -26831,7 +26605,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -26889,7 +26662,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -26933,7 +26705,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -27207,7 +26978,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -27257,7 +27027,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -27309,7 +27078,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -27367,7 +27135,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -27411,7 +27178,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -27665,7 +27431,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -27715,7 +27480,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -27767,7 +27531,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -27825,7 +27588,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -27869,7 +27631,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -28200,7 +27961,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -28250,7 +28010,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -28302,7 +28061,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -28360,7 +28118,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -28404,7 +28161,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -28649,7 +28405,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -28699,7 +28454,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -28751,7 +28505,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -28809,7 +28562,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -28853,7 +28605,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -29094,7 +28845,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -29144,7 +28894,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -29196,7 +28945,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -29254,7 +29002,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -29298,7 +29045,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -29539,7 +29285,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -29589,7 +29334,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -29641,7 +29385,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -29699,7 +29442,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -29743,7 +29485,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -29984,7 +29725,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -30034,7 +29774,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -30086,7 +29825,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -30144,7 +29882,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -30188,7 +29925,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -30429,7 +30165,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -30479,7 +30214,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -30531,7 +30265,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -30589,7 +30322,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -30633,7 +30365,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -30874,7 +30605,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -30924,7 +30654,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -30976,7 +30705,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -31034,7 +30762,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -31078,7 +30805,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -31319,7 +31045,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -31369,7 +31094,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -31421,7 +31145,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -31479,7 +31202,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -31523,7 +31245,6 @@ export const DashboardItemConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -32863,7 +32584,7 @@ export const MeasureConfigSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -32948,6 +32669,14 @@ export const MeasureConfigSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -33102,7 +32831,6 @@ export const BaseMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -33146,7 +32874,6 @@ export const BaseMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -33196,7 +32923,6 @@ export const BaseMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -33246,7 +32972,6 @@ export const BaseMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -33298,7 +33023,6 @@ export const BaseMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -33402,7 +33126,7 @@ export const BaseMapOverlayConfigSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -33487,6 +33211,14 @@ export const BaseMapOverlayConfigSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -33667,7 +33399,6 @@ export const SpectrumMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -33711,7 +33442,6 @@ export const SpectrumMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -33761,7 +33491,6 @@ export const SpectrumMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -33811,7 +33540,6 @@ export const SpectrumMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -33863,7 +33591,6 @@ export const SpectrumMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -33967,7 +33694,7 @@ export const SpectrumMapOverlayConfigSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -34052,6 +33779,14 @@ export const SpectrumMapOverlayConfigSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -34337,7 +34072,6 @@ export const IconMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -34381,7 +34115,6 @@ export const IconMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -34431,7 +34164,6 @@ export const IconMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -34481,7 +34213,6 @@ export const IconMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -34533,7 +34264,6 @@ export const IconMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -34637,7 +34367,7 @@ export const IconMapOverlayConfigSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -34722,6 +34452,14 @@ export const IconMapOverlayConfigSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -34932,7 +34670,6 @@ export const RadiusMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -34976,7 +34713,6 @@ export const RadiusMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -35026,7 +34762,6 @@ export const RadiusMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -35076,7 +34811,6 @@ export const RadiusMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -35128,7 +34862,6 @@ export const RadiusMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -35232,7 +34965,7 @@ export const RadiusMapOverlayConfigSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -35317,6 +35050,14 @@ export const RadiusMapOverlayConfigSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -35501,7 +35242,6 @@ export const ColorMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -35545,7 +35285,6 @@ export const ColorMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -35595,7 +35334,6 @@ export const ColorMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -35645,7 +35383,6 @@ export const ColorMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -35697,7 +35434,6 @@ export const ColorMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -35801,7 +35537,7 @@ export const ColorMapOverlayConfigSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -35886,6 +35622,14 @@ export const ColorMapOverlayConfigSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -36084,7 +35828,6 @@ export const ShadingMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -36128,7 +35871,6 @@ export const ShadingMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -36178,7 +35920,6 @@ export const ShadingMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -36228,7 +35969,6 @@ export const ShadingMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -36280,7 +36020,6 @@ export const ShadingMapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -36384,7 +36123,7 @@ export const ShadingMapOverlayConfigSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -36469,6 +36208,14 @@ export const ShadingMapOverlayConfigSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -36659,7 +36406,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -36703,7 +36449,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -36753,7 +36498,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -36803,7 +36547,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -36855,7 +36598,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -36959,7 +36701,7 @@ export const MapOverlayConfigSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -37044,6 +36786,14 @@ export const MapOverlayConfigSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -37328,7 +37078,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -37372,7 +37121,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -37422,7 +37170,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -37472,7 +37219,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -37524,7 +37270,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -37628,7 +37373,7 @@ export const MapOverlayConfigSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -37713,6 +37458,14 @@ export const MapOverlayConfigSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -37922,7 +37675,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -37966,7 +37718,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -38016,7 +37767,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -38066,7 +37816,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -38118,7 +37867,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -38222,7 +37970,7 @@ export const MapOverlayConfigSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -38307,6 +38055,14 @@ export const MapOverlayConfigSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -38490,7 +38246,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -38534,7 +38289,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -38584,7 +38338,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -38634,7 +38387,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -38686,7 +38438,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -38790,7 +38541,7 @@ export const MapOverlayConfigSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -38875,6 +38626,14 @@ export const MapOverlayConfigSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -39072,7 +38831,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -39116,7 +38874,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -39166,7 +38923,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -39216,7 +38972,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -39268,7 +39023,6 @@ export const MapOverlayConfigSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -39372,7 +39126,7 @@ export const MapOverlayConfigSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -39457,6 +39211,14 @@ export const MapOverlayConfigSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -42363,7 +42125,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -42413,7 +42174,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -42465,7 +42225,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -42523,7 +42282,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -42567,7 +42325,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -43089,7 +42846,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -43139,7 +42895,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -43191,7 +42946,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -43249,7 +43003,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -43293,7 +43046,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -43518,7 +43270,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -43568,7 +43319,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -43620,7 +43370,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -43678,7 +43427,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -43722,7 +43470,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -44033,7 +43780,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -44083,7 +43829,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -44135,7 +43880,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -44193,7 +43937,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -44237,7 +43980,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -44828,7 +44570,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -44878,7 +44619,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -44930,7 +44670,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -44988,7 +44727,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -45032,7 +44770,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -45617,7 +45354,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -45667,7 +45403,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -45719,7 +45454,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -45777,7 +45511,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -45821,7 +45554,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -46395,7 +46127,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -46445,7 +46176,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -46497,7 +46227,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -46555,7 +46284,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -46599,7 +46327,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -46873,7 +46600,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -46923,7 +46649,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -46975,7 +46700,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -47033,7 +46757,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -47077,7 +46800,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -47331,7 +47053,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -47381,7 +47102,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -47433,7 +47153,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -47491,7 +47210,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -47535,7 +47253,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -47866,7 +47583,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -47916,7 +47632,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -47968,7 +47683,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -48026,7 +47740,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -48070,7 +47783,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -48315,7 +48027,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -48365,7 +48076,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -48417,7 +48127,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -48475,7 +48184,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -48519,7 +48227,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -48760,7 +48467,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -48810,7 +48516,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -48862,7 +48567,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -48920,7 +48624,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -48964,7 +48667,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -49205,7 +48907,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -49255,7 +48956,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -49307,7 +49007,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -49365,7 +49064,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -49409,7 +49107,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -49650,7 +49347,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -49700,7 +49396,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -49752,7 +49447,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -49810,7 +49504,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -49854,7 +49547,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -50095,7 +49787,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -50145,7 +49836,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -50197,7 +49887,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -50255,7 +49944,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -50299,7 +49987,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -50540,7 +50227,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -50590,7 +50276,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -50642,7 +50327,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -50700,7 +50384,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -50744,7 +50427,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -50985,7 +50667,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -51035,7 +50716,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -51087,7 +50767,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -51145,7 +50824,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -51189,7 +50867,6 @@ export const DashboardItemSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -51467,7 +51144,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -51517,7 +51193,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -51569,7 +51244,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -51627,7 +51301,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -51671,7 +51344,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -52193,7 +51865,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -52243,7 +51914,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -52295,7 +51965,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -52353,7 +52022,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -52397,7 +52065,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -52622,7 +52289,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -52672,7 +52338,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -52724,7 +52389,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -52782,7 +52446,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -52826,7 +52489,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -53137,7 +52799,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -53187,7 +52848,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -53239,7 +52899,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -53297,7 +52956,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -53341,7 +52999,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -53932,7 +53589,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -53982,7 +53638,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -54034,7 +53689,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -54092,7 +53746,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -54136,7 +53789,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -54721,7 +54373,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -54771,7 +54422,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -54823,7 +54473,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -54881,7 +54530,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -54925,7 +54573,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -55499,7 +55146,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -55549,7 +55195,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -55601,7 +55246,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -55659,7 +55303,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -55703,7 +55346,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -55977,7 +55619,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -56027,7 +55668,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -56079,7 +55719,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -56137,7 +55776,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -56181,7 +55819,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -56435,7 +56072,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -56485,7 +56121,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -56537,7 +56172,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -56595,7 +56229,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -56639,7 +56272,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -56970,7 +56602,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -57020,7 +56651,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -57072,7 +56702,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -57130,7 +56759,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -57174,7 +56802,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -57419,7 +57046,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -57469,7 +57095,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -57521,7 +57146,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -57579,7 +57203,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -57623,7 +57246,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -57864,7 +57486,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -57914,7 +57535,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -57966,7 +57586,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -58024,7 +57643,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -58068,7 +57686,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -58309,7 +57926,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -58359,7 +57975,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -58411,7 +58026,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -58469,7 +58083,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -58513,7 +58126,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -58754,7 +58366,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -58804,7 +58415,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -58856,7 +58466,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -58914,7 +58523,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -58958,7 +58566,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -59199,7 +58806,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -59249,7 +58855,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -59301,7 +58906,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -59359,7 +58963,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -59403,7 +59006,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -59644,7 +59246,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -59694,7 +59295,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -59746,7 +59346,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -59804,7 +59403,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -59848,7 +59446,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -60089,7 +59686,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -60139,7 +59735,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -60191,7 +59786,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -60249,7 +59843,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -60293,7 +59886,6 @@ export const DashboardItemCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -60565,7 +60157,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -60615,7 +60206,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -60667,7 +60257,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -60725,7 +60314,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -60769,7 +60357,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -61291,7 +60878,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -61341,7 +60927,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -61393,7 +60978,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -61451,7 +61035,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -61495,7 +61078,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -61720,7 +61302,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -61770,7 +61351,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -61822,7 +61402,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -61880,7 +61459,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -61924,7 +61502,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -62235,7 +61812,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -62285,7 +61861,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -62337,7 +61912,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -62395,7 +61969,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -62439,7 +62012,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -63030,7 +62602,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -63080,7 +62651,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -63132,7 +62702,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -63190,7 +62759,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -63234,7 +62802,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -63819,7 +63386,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -63869,7 +63435,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -63921,7 +63486,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -63979,7 +63543,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -64023,7 +63586,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -64597,7 +64159,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -64647,7 +64208,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -64699,7 +64259,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -64757,7 +64316,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -64801,7 +64359,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -65075,7 +64632,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -65125,7 +64681,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -65177,7 +64732,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -65235,7 +64789,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -65279,7 +64832,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -65533,7 +65085,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -65583,7 +65134,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -65635,7 +65185,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -65693,7 +65242,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -65737,7 +65285,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -66068,7 +65615,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -66118,7 +65664,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -66170,7 +65715,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -66228,7 +65772,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -66272,7 +65815,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -66517,7 +66059,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -66567,7 +66108,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -66619,7 +66159,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -66677,7 +66216,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -66721,7 +66259,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -66962,7 +66499,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -67012,7 +66548,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -67064,7 +66599,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -67122,7 +66656,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -67166,7 +66699,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -67407,7 +66939,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -67457,7 +66988,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -67509,7 +67039,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -67567,7 +67096,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -67611,7 +67139,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -67852,7 +67379,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -67902,7 +67428,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -67954,7 +67479,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -68012,7 +67536,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -68056,7 +67579,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -68297,7 +67819,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -68347,7 +67868,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -68399,7 +67919,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -68457,7 +67976,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -68501,7 +68019,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -68742,7 +68259,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -68792,7 +68308,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -68844,7 +68359,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -68902,7 +68416,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -68946,7 +68459,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -69187,7 +68699,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -69237,7 +68748,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -69289,7 +68799,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -69347,7 +68856,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -69391,7 +68899,6 @@ export const DashboardItemUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -72069,7 +71576,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -72113,7 +71619,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -72163,7 +71668,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -72213,7 +71717,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -72265,7 +71768,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -72369,7 +71871,7 @@ export const MapOverlaySchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -72454,6 +71956,14 @@ export const MapOverlaySchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -72738,7 +72248,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -72782,7 +72291,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -72832,7 +72340,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -72882,7 +72389,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -72934,7 +72440,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -73038,7 +72543,7 @@ export const MapOverlaySchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -73123,6 +72628,14 @@ export const MapOverlaySchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -73332,7 +72845,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -73376,7 +72888,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -73426,7 +72937,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -73476,7 +72986,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -73528,7 +73037,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -73632,7 +73140,7 @@ export const MapOverlaySchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -73717,6 +73225,14 @@ export const MapOverlaySchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -73900,7 +73416,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -73944,7 +73459,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -73994,7 +73508,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -74044,7 +73557,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -74096,7 +73608,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -74200,7 +73711,7 @@ export const MapOverlaySchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -74285,6 +73796,14 @@ export const MapOverlaySchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -74482,7 +74001,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -74526,7 +74044,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -74576,7 +74093,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -74626,7 +74142,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -74678,7 +74193,6 @@ export const MapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -74782,7 +74296,7 @@ export const MapOverlaySchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -74867,6 +74381,14 @@ export const MapOverlaySchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -75118,7 +74640,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -75162,7 +74683,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -75212,7 +74732,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -75262,7 +74781,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -75314,7 +74832,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -75418,7 +74935,7 @@ export const MapOverlayCreateSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -75503,6 +75020,14 @@ export const MapOverlayCreateSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -75787,7 +75312,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -75831,7 +75355,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -75881,7 +75404,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -75931,7 +75453,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -75983,7 +75504,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -76087,7 +75607,7 @@ export const MapOverlayCreateSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -76172,6 +75692,14 @@ export const MapOverlayCreateSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -76381,7 +75909,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -76425,7 +75952,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -76475,7 +76001,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -76525,7 +76050,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -76577,7 +76101,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -76681,7 +76204,7 @@ export const MapOverlayCreateSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -76766,6 +76289,14 @@ export const MapOverlayCreateSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -76949,7 +76480,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -76993,7 +76523,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -77043,7 +76572,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -77093,7 +76621,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -77145,7 +76672,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -77249,7 +76775,7 @@ export const MapOverlayCreateSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -77334,6 +76860,14 @@ export const MapOverlayCreateSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -77531,7 +77065,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -77575,7 +77108,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -77625,7 +77157,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -77675,7 +77206,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -77727,7 +77257,6 @@ export const MapOverlayCreateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -77831,7 +77360,7 @@ export const MapOverlayCreateSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -77916,6 +77445,14 @@ export const MapOverlayCreateSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -78160,7 +77697,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -78204,7 +77740,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -78254,7 +77789,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -78304,7 +77838,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -78356,7 +77889,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -78460,7 +77992,7 @@ export const MapOverlayUpdateSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -78545,6 +78077,14 @@ export const MapOverlayUpdateSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -78829,7 +78369,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -78873,7 +78412,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -78923,7 +78461,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -78973,7 +78510,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -79025,7 +78561,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -79129,7 +78664,7 @@ export const MapOverlayUpdateSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -79214,6 +78749,14 @@ export const MapOverlayUpdateSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -79423,7 +78966,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -79467,7 +79009,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -79517,7 +79058,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -79567,7 +79107,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -79619,7 +79158,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -79723,7 +79261,7 @@ export const MapOverlayUpdateSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -79808,6 +79346,14 @@ export const MapOverlayUpdateSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -79991,7 +79537,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -80035,7 +79580,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -80085,7 +79629,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -80135,7 +79678,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -80187,7 +79729,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -80291,7 +79832,7 @@ export const MapOverlayUpdateSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -80376,6 +79917,14 @@ export const MapOverlayUpdateSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -80573,7 +80122,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -80617,7 +80165,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -80667,7 +80214,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -80717,7 +80263,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -80769,7 +80314,6 @@ export const MapOverlayUpdateSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -80873,7 +80417,7 @@ export const MapOverlayUpdateSchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -80958,6 +80502,14 @@ export const MapOverlayUpdateSchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -84630,6 +84182,60 @@ export const UserAccountUpdateSchema = { "additionalProperties": false } +export const UserCountryAccessAttemptSchema = { + "type": "object", + "properties": { + "country_code": { + "type": "string" + }, + "id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "country_code", + "id", + "user_id" + ] +} + +export const UserCountryAccessAttemptCreateSchema = { + "type": "object", + "properties": { + "country_code": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "country_code", + "user_id" + ] +} + +export const UserCountryAccessAttemptUpdateSchema = { + "type": "object", + "properties": { + "country_code": { + "type": "string" + }, + "id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "additionalProperties": false +} + export const UserEntityPermissionSchema = { "type": "object", "properties": { @@ -84968,6 +84574,7 @@ export const EntityTypeEnumSchema = { "msupply_store", "nursing_zone", "pacmossi_district", + "pacmossi_insecticide_test", "pacmossi_spraying_site", "pacmossi_village", "postcode", @@ -86558,7 +86165,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -86608,7 +86214,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -86660,7 +86265,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -86718,7 +86322,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -86762,7 +86365,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -87284,7 +86886,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -87334,7 +86935,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -87386,7 +86986,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -87444,7 +87043,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -87488,7 +87086,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -87713,7 +87310,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -87763,7 +87359,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -87815,7 +87410,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -87873,7 +87467,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -87917,7 +87510,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -88228,7 +87820,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -88278,7 +87869,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -88330,7 +87920,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -88388,7 +87977,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -88432,7 +88020,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -89023,7 +88610,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -89073,7 +88659,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -89125,7 +88710,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -89183,7 +88767,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -89227,7 +88810,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -89812,7 +89394,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -89862,7 +89443,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -89914,7 +89494,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -89972,7 +89551,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -90016,7 +89594,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -90590,7 +90167,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -90640,7 +90216,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -90692,7 +90267,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -90750,7 +90324,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -90794,7 +90367,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -91068,7 +90640,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -91118,7 +90689,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -91170,7 +90740,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -91228,7 +90797,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -91272,7 +90840,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -91526,7 +91093,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -91576,7 +91142,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -91628,7 +91193,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -91686,7 +91250,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -91730,7 +91293,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -92061,7 +91623,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -92111,7 +91672,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -92163,7 +91723,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -92221,7 +91780,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -92265,7 +91823,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -92510,7 +92067,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -92560,7 +92116,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -92612,7 +92167,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -92670,7 +92224,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -92714,7 +92267,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -92955,7 +92507,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -93005,7 +92556,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -93057,7 +92607,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -93115,7 +92664,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -93159,7 +92707,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -93400,7 +92947,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -93450,7 +92996,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -93502,7 +93047,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -93560,7 +93104,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -93604,7 +93147,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -93845,7 +93387,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -93895,7 +93436,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -93947,7 +93487,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -94005,7 +93544,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -94049,7 +93587,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -94290,7 +93827,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -94340,7 +93876,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -94392,7 +93927,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -94450,7 +93984,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -94494,7 +94027,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -94735,7 +94267,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -94785,7 +94316,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -94837,7 +94367,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -94895,7 +94424,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -94939,7 +94467,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -95180,7 +94707,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -95230,7 +94756,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -95282,7 +94807,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -95340,7 +94864,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -95384,7 +94907,6 @@ export const DashboardWithMetadataSchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -95680,7 +95202,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -95724,7 +95245,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -95774,7 +95294,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -95824,7 +95343,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -95876,7 +95394,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -95980,7 +95497,7 @@ export const TranslatedMapOverlaySchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -96065,6 +95582,14 @@ export const TranslatedMapOverlaySchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -96293,6 +95818,9 @@ export const TranslatedMapOverlaySchema = { }, "sortOrder": { "type": "number" + }, + "disabled": { + "type": "boolean" } }, "required": [ @@ -96372,7 +95900,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -96416,7 +95943,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -96466,7 +95992,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -96516,7 +96041,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -96568,7 +96092,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -96672,7 +96195,7 @@ export const TranslatedMapOverlaySchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -96757,6 +96280,14 @@ export const TranslatedMapOverlaySchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -96910,6 +96441,9 @@ export const TranslatedMapOverlaySchema = { }, "sortOrder": { "type": "number" + }, + "disabled": { + "type": "boolean" } }, "required": [ @@ -96989,7 +96523,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -97033,7 +96566,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -97083,7 +96615,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -97133,7 +96664,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -97185,7 +96715,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -97289,7 +96818,7 @@ export const TranslatedMapOverlaySchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -97374,6 +96903,14 @@ export const TranslatedMapOverlaySchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -97502,6 +97039,9 @@ export const TranslatedMapOverlaySchema = { }, "sortOrder": { "type": "number" + }, + "disabled": { + "type": "boolean" } }, "required": [ @@ -97580,7 +97120,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -97624,7 +97163,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -97674,7 +97212,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -97724,7 +97261,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -97776,7 +97312,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -97880,7 +97415,7 @@ export const TranslatedMapOverlaySchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -97965,6 +97500,14 @@ export const TranslatedMapOverlaySchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -98107,6 +97650,9 @@ export const TranslatedMapOverlaySchema = { }, "sortOrder": { "type": "number" + }, + "disabled": { + "type": "boolean" } }, "required": [ @@ -98185,7 +97731,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -98229,7 +97774,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] } @@ -98279,7 +97823,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -98329,7 +97872,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -98381,7 +97923,6 @@ export const TranslatedMapOverlaySchema = { }, "additionalProperties": false, "required": [ - "offset", "unit" ] }, @@ -98485,7 +98026,7 @@ export const TranslatedMapOverlaySchema = { "type": "object", "properties": { "type": { - "description": "How to display this series (use popup-only to just show in the popup/tooltip)", + "description": "How to display this series (popup-only is deprecated)", "enum": [ "color", "icon", @@ -98570,6 +98111,14 @@ export const TranslatedMapOverlaySchema = { "description": "Whether to include this series in the legend", "type": "boolean" }, + "hideFromPopup": { + "description": "Whether to include this series in the popup/tooltip", + "type": "boolean" + }, + "hideFromTable": { + "description": "Whether to include this series in the table", + "type": "boolean" + }, "name": { "description": "Display name of this series", "type": "string" @@ -98702,6 +98251,9 @@ export const TranslatedMapOverlaySchema = { }, "sortOrder": { "type": "number" + }, + "disabled": { + "type": "boolean" } }, "required": [ diff --git a/packages/types/src/types/models-extra/common.ts b/packages/types/src/types/models-extra/common.ts index 6bf5eb9fe8..a2428d1606 100644 --- a/packages/types/src/types/models-extra/common.ts +++ b/packages/types/src/types/models-extra/common.ts @@ -25,7 +25,7 @@ export type DateOffsetSpec = { /** * @description Offset distance (can be negative to offset to an earlier date) */ - offset: number; + offset?: number; /** * @description Used to modify the offset by either moving the date to the start/end of the modifier unit diff --git a/packages/types/src/types/models-extra/mapOverlay.ts b/packages/types/src/types/models-extra/mapOverlay.ts index 3bd773dca9..5ce79d5497 100644 --- a/packages/types/src/types/models-extra/mapOverlay.ts +++ b/packages/types/src/types/models-extra/mapOverlay.ts @@ -46,7 +46,7 @@ export type InlineValue = { type MeasureConfig = { /** - * @description How to display this series (use popup-only to just show in the popup/tooltip) + * @description How to display this series (popup-only is deprecated) */ type: `${MeasureType}` | 'popup-only'; @@ -70,6 +70,16 @@ type MeasureConfig = { */ hideFromLegend?: boolean; + /** + * @description Whether to include this series in the popup/tooltip + */ + hideFromPopup?: boolean; + + /** + * @description Whether to include this series in the table + */ + hideFromTable?: boolean; + /** * @description Display name of this series */ diff --git a/packages/types/src/types/models.ts b/packages/types/src/types/models.ts index 5b8da8ba2b..af2026a629 100644 --- a/packages/types/src/types/models.ts +++ b/packages/types/src/types/models.ts @@ -1682,6 +1682,20 @@ export interface UserAccountUpdate { 'profile_image'?: string | null; 'verified_email'?: VerifiedEmail | null; } +export interface UserCountryAccessAttempt { + 'country_code': string; + 'id': string; + 'user_id': string; +} +export interface UserCountryAccessAttemptCreate { + 'country_code': string; + 'user_id': string; +} +export interface UserCountryAccessAttemptUpdate { + 'country_code'?: string; + 'id'?: string; + 'user_id'?: string; +} export interface UserEntityPermission { 'entity_id': string; 'id': string; @@ -1852,6 +1866,7 @@ export enum EntityTypeEnum { 'pacmossi_district' = 'pacmossi_district', 'pacmossi_village' = 'pacmossi_village', 'pacmossi_spraying_site' = 'pacmossi_spraying_site', + 'pacmossi_insecticide_test' = 'pacmossi_insecticide_test', } export enum DataTableType { 'analytics' = 'analytics', diff --git a/packages/types/src/types/requests/tupaia-web-server/EmailDashboardRequest.ts b/packages/types/src/types/requests/tupaia-web-server/EmailDashboardRequest.ts index 584cea6438..478e2abc6d 100644 --- a/packages/types/src/types/requests/tupaia-web-server/EmailDashboardRequest.ts +++ b/packages/types/src/types/requests/tupaia-web-server/EmailDashboardRequest.ts @@ -18,6 +18,7 @@ export type ReqBody = { settings?: { exportWithTable: boolean; exportWithLabels: boolean; + exportDescription: string | null; separatePagePerItem: boolean; }; }; diff --git a/packages/types/src/types/requests/tupaia-web-server/ExportDashboardRequest.ts b/packages/types/src/types/requests/tupaia-web-server/ExportDashboardRequest.ts index 2cfe92d2ce..dc880570fe 100644 --- a/packages/types/src/types/requests/tupaia-web-server/ExportDashboardRequest.ts +++ b/packages/types/src/types/requests/tupaia-web-server/ExportDashboardRequest.ts @@ -20,6 +20,7 @@ export type ReqBody = { settings?: { exportWithTable: boolean; exportWithLabels: boolean; + exportDescription: string | null; separatePagePerItem: boolean; }; }; diff --git a/packages/types/src/types/requests/tupaia-web-server/MapOverlaysRequest.ts b/packages/types/src/types/requests/tupaia-web-server/MapOverlaysRequest.ts index 588bb06409..610926f33b 100644 --- a/packages/types/src/types/requests/tupaia-web-server/MapOverlaysRequest.ts +++ b/packages/types/src/types/requests/tupaia-web-server/MapOverlaysRequest.ts @@ -4,7 +4,7 @@ */ import { MapOverlay } from '../../models'; -import { MapOverlayConfig, ReferenceProps } from '../../models-extra'; +import { EntityType, MapOverlayConfig, ReferenceProps } from '../../models-extra'; import { KeysToCamelCase } from '../../../utils'; export interface Params { @@ -18,6 +18,7 @@ export type TranslatedMapOverlay = KeysToCamelCase< > & MapOverlayConfig & { sortOrder?: number | null; + disabled?: boolean; }; export interface TranslatedMapOverlayGroup { name: string; diff --git a/packages/ui-components/src/components/DataTable/DataTable.tsx b/packages/ui-components/src/components/DataTable/DataTable.tsx index 51b3a75d50..db1b092e47 100644 --- a/packages/ui-components/src/components/DataTable/DataTable.tsx +++ b/packages/ui-components/src/components/DataTable/DataTable.tsx @@ -57,13 +57,6 @@ export const DataTable = ({ { columns, data, - initialState: { - sortBy: [ - { - id: getColumnId(columns[0]), - }, - ], - }, }, useSortBy, ); diff --git a/packages/ui-map-components/src/components/Table/getMapTableData.tsx b/packages/ui-map-components/src/components/Table/getMapTableData.tsx index f6a41a01a3..712bc7c869 100644 --- a/packages/ui-map-components/src/components/Table/getMapTableData.tsx +++ b/packages/ui-map-components/src/components/Table/getMapTableData.tsx @@ -17,14 +17,16 @@ const processColumns = (serieses: Series[]) => { return []; } - const configColumns = serieses.map(column => { - return { - // @ts-ignore - The react table accessors don't work as strings if the key has a space so we - // need to use the function accessor. The row and column could be any type so we need to ignore - accessor: (row: any) => row[column.key], - Header: column.name, - }; - }); + const configColumns = serieses + .filter(column => !column.hideFromTable) + .map(column => { + return { + // @ts-ignore - The react table accessors don't work as strings if the key has a space so we + // need to use the function accessor. The row and column could be any type so we need to ignore + accessor: (row: any) => row[column.key], + Header: column.name, + }; + }); return [ { diff --git a/packages/ui-map-components/src/types/series.ts b/packages/ui-map-components/src/types/series.ts index fe0d9d675e..bcea701bc6 100644 --- a/packages/ui-map-components/src/types/series.ts +++ b/packages/ui-map-components/src/types/series.ts @@ -38,6 +38,7 @@ export type BaseSeries = Pick< popupHeaderFormat?: string; startDate: string; endDate: string; + hideFromTable?: boolean; }; export type RadiusSeries = BaseSeries & { diff --git a/yarn.lock b/yarn.lock index 9258ff8fcc..b49907f617 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9935,6 +9935,7 @@ __metadata: chai-subset: ^1.6.0 compare-versions: ^6.1.0 cors: ^2.8.5 + countries-and-timezones: ^3.6.0 countrynames: ^0.1.1 cross-env: ^7.0.2 date-fns: ^2.29.2 @@ -9958,6 +9959,7 @@ __metadata: node-schedule: ^2.1.1 npm-run-all: ^4.1.5 nyc: ^15.1.0 + proxyquire: ^2.1.3 public-ip: ^2.5.0 react-autobind: ^1.0.6 react-native-uuid: ^1.4.9 @@ -11689,11 +11691,11 @@ __metadata: linkType: hard "@types/nodemailer@npm:^6.4.15": - version: 6.4.15 - resolution: "@types/nodemailer@npm:6.4.15" + version: 6.4.16 + resolution: "@types/nodemailer@npm:6.4.16" dependencies: "@types/node": "*" - checksum: f6f9a2f8a669703ecc3ca6359c12345b16f6b2e5691b93c406b9af7de639c02092ec00133526e6fecd8c60d884890a7cd0f967d8e64bedab46d5c3d8be0882d7 + checksum: ef34226b7b69a474a9b9b4681bcfb2461540aed92c54995b934f8072e28deff72aadd4c71522f6825938346048cfec077c69f18cfc2a3ec9f7432db11e5667a3 languageName: node linkType: hard @@ -14921,9 +14923,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001646": - version: 1.0.30001659 - resolution: "caniuse-lite@npm:1.0.30001659" - checksum: 99304d1ca91ddd25065d200ecc545668187359d54eea5d9eef6b4d99f28ce1164c0a6c7f785c531a336aeed171055f50be5bc68ae0b1e564474c1d35ce737947 + version: 1.0.30001660 + resolution: "caniuse-lite@npm:1.0.30001660" + checksum: 8b2c5de2f5facd31980426afbba68238270984acfe8c1ae925b8b6480448eea2fae292f815674617e9170c730c8a238d7cc0db919f184dc0e3cd9bec18f5e5ad languageName: node linkType: hard @@ -16248,6 +16250,13 @@ __metadata: languageName: node linkType: hard +"countries-and-timezones@npm:^3.6.0": + version: 3.6.0 + resolution: "countries-and-timezones@npm:3.6.0" + checksum: 00bf46b91d6104666c4113e31f598ab4e8ecfc2e850d9ab97b9ceadc95d6c5a7abd92cbfe5eca65d5d120c54dcdebc92e68ef3eb792c7539625a8e2dd92c8298 + languageName: node + linkType: hard + "countrynames@npm:^0.1.1": version: 0.1.1 resolution: "countrynames@npm:0.1.1" @@ -17888,9 +17897,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.4": - version: 1.5.18 - resolution: "electron-to-chromium@npm:1.5.18" - checksum: ee4ca16604804582fe3e94134bd42edc91316e14e09829c5324818157c669f60105c088de0de466888f656b15f07d8fdf62d450afa76f94b8a4b201cf474fe0b + version: 1.5.19 + resolution: "electron-to-chromium@npm:1.5.19" + checksum: 459b47ab828cbeb2d09767c93cd181bdccbda008e1d7fc92d078d72ecf4cac3107d2deb424016a63aadc484765ec98c84f339546b0a627892d24eb286f9f0adb languageName: node linkType: hard @@ -19894,6 +19903,16 @@ __metadata: languageName: node linkType: hard +"fill-keys@npm:^1.0.2": + version: 1.0.2 + resolution: "fill-keys@npm:1.0.2" + dependencies: + is-object: ~1.0.1 + merge-descriptors: ~1.0.0 + checksum: 6ac5ff60ff08f2f44d19e919c9ca579f4efaaa8c88232b4aab5a5b5522aeb8ec91501956e780cb2b44574fe4a4a337e9b43187829267d0b66a6bfedbafae893f + languageName: node + linkType: hard + "fill-range@npm:^4.0.0": version: 4.0.0 resolution: "fill-range@npm:4.0.0" @@ -22587,6 +22606,13 @@ __metadata: languageName: node linkType: hard +"is-object@npm:~1.0.1": + version: 1.0.2 + resolution: "is-object@npm:1.0.2" + checksum: 971219c4b1985b9751f65e4c8296d3104f0457b0e8a70849e848a4a2208bc47317d73b3b85d4a369619cb2df8284dc22584cb2695a7d99aca5e8d0aa64fc075a + languageName: node + linkType: hard + "is-observable@npm:^1.1.0": version: 1.1.0 resolution: "is-observable@npm:1.1.0" @@ -25886,6 +25912,13 @@ __metadata: languageName: node linkType: hard +"merge-descriptors@npm:~1.0.0": + version: 1.0.3 + resolution: "merge-descriptors@npm:1.0.3" + checksum: 52117adbe0313d5defa771c9993fe081e2d2df9b840597e966aadafde04ae8d0e3da46bac7ca4efc37d4d2b839436582659cd49c6a43eacb3fe3050896a105d1 + languageName: node + linkType: hard + "merge-options@npm:^3.0.4": version: 3.0.4 resolution: "merge-options@npm:3.0.4" @@ -26709,6 +26742,13 @@ __metadata: languageName: node linkType: hard +"module-not-found-error@npm:^1.0.1": + version: 1.0.1 + resolution: "module-not-found-error@npm:1.0.1" + checksum: ebd65339d4d5980dd55cd32dbf112ec02b8e33f30866312b94caeee4783322259f18cf2270e9d2e600df3bd1876c35612b87f5c2525c21885fb1f83e85a9b9b0 + languageName: node + linkType: hard + "moment-timezone@npm:^0.5.45": version: 0.5.45 resolution: "moment-timezone@npm:0.5.45" @@ -29624,6 +29664,17 @@ __metadata: languageName: node linkType: hard +"proxyquire@npm:^2.1.3": + version: 2.1.3 + resolution: "proxyquire@npm:2.1.3" + dependencies: + fill-keys: ^1.0.2 + module-not-found-error: ^1.0.1 + resolve: ^1.11.1 + checksum: a320f1a04d65aeb41625bfd6bbf848492523b730b07926b6c1ed48f9342f2a30c4a4c0b399e07391e76691b65f604773327767c33a8578e5e4ab19299ba46a02 + languageName: node + linkType: hard + "pseudomap@npm:^1.0.2": version: 1.0.2 resolution: "pseudomap@npm:1.0.2" @@ -31910,6 +31961,19 @@ __metadata: languageName: node linkType: hard +"resolve@npm:^1.11.1, resolve@npm:^1.22.1, resolve@npm:^1.22.8": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: f8a26958aa572c9b064562750b52131a37c29d072478ea32e129063e2da7f83e31f7f11e7087a18225a8561cfe8d2f0df9dbea7c9d331a897571c0a2527dbb4c + languageName: node + linkType: hard + "resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0": version: 1.20.0 resolution: "resolve@npm:1.20.0" @@ -31939,19 +32003,6 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.22.1, resolve@npm:^1.22.8": - version: 1.22.8 - resolution: "resolve@npm:1.22.8" - dependencies: - is-core-module: ^2.13.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: f8a26958aa572c9b064562750b52131a37c29d072478ea32e129063e2da7f83e31f7f11e7087a18225a8561cfe8d2f0df9dbea7c9d331a897571c0a2527dbb4c - languageName: node - linkType: hard - "resolve@npm:^2.0.0-next.4": version: 2.0.0-next.5 resolution: "resolve@npm:2.0.0-next.5" @@ -31974,6 +32025,19 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@^1.11.1#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.8#~builtin": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=07638b" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 5479b7d431cacd5185f8db64bfcb7286ae5e31eb299f4c4f404ad8aa6098b77599563ac4257cb2c37a42f59dfc06a1bec2bcf283bb448f319e37f0feb9a09847 + languageName: node + linkType: hard + "resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin": version: 1.20.0 resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin::version=1.20.0&hash=07638b" @@ -32003,19 +32067,6 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.8#~builtin": - version: 1.22.8 - resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=07638b" - dependencies: - is-core-module: ^2.13.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 5479b7d431cacd5185f8db64bfcb7286ae5e31eb299f4c4f404ad8aa6098b77599563ac4257cb2c37a42f59dfc06a1bec2bcf283bb448f319e37f0feb9a09847 - languageName: node - linkType: hard - "resolve@patch:resolve@^2.0.0-next.4#~builtin": version: 2.0.0-next.5 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#~builtin::version=2.0.0-next.5&hash=07638b"