adserver-dashboard 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ci/staging.yml +191 -0
- package/.dockerignore +117 -0
- package/.env +40 -0
- package/.env.staging +38 -0
- package/.gitlab-ci.yml +16 -0
- package/DEMO_STATUS.md +579 -0
- package/Dockerfile +61 -0
- package/Influence-MW-AdServer-12-02-2026/client/index.html +17 -0
- package/Influence-MW-AdServer-12-02-2026/client/public/favicon.png +0 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/App.tsx +91 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/advanced-map-drawer.tsx +1131 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ai-recommendation-panel.tsx +379 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/app-sidebar.tsx +183 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/auto-optimize-button.tsx +184 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/availability-drawer.tsx +385 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/brand-insights-panel.tsx +87 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/create-agency-drawer.tsx +198 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/create-brand-drawer.tsx +275 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/creative-assignment.tsx +526 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/data-table-toolbar.tsx +148 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/data-table.tsx +158 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/filter-drawer.tsx +356 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/form-insights-panel.tsx +82 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/geography-selector.tsx +699 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/header-user-menu.tsx +178 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/history-drawer.tsx +313 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/inventory-availability-section.tsx +176 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/inventory-format-drawer.tsx +173 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/inventory-selector.tsx +401 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/manual-inventory-drawer.tsx +368 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/mapbox-map.tsx +368 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/market-insights-panel.tsx +202 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/media-owner-drawer.tsx +217 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/metric-card.tsx +58 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/page-header.tsx +27 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/player-status-indicator.tsx +137 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/poi-targeting-drawer.tsx +298 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/recommendation-score-badge.tsx +102 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/recommended-inventories-panel.tsx +248 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/searchable-combobox.tsx +134 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/signal-visualizations.tsx +407 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/status-badge.tsx +35 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/theme-provider.tsx +73 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/theme-toggle.tsx +37 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/traffic-slider.tsx +75 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/accordion.tsx +56 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/alert-dialog.tsx +139 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/alert.tsx +59 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/aspect-ratio.tsx +5 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/avatar.tsx +51 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/badge.tsx +38 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/breadcrumb.tsx +115 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/button.tsx +62 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/calendar.tsx +68 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/card.tsx +85 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/carousel.tsx +260 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/chart.tsx +365 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/checkbox.tsx +28 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/collapsible.tsx +11 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/command.tsx +151 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/context-menu.tsx +198 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/dialog.tsx +122 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/drawer.tsx +118 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/dropdown-menu.tsx +198 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/form.tsx +178 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/hover-card.tsx +29 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/input-otp.tsx +69 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/input.tsx +23 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/label.tsx +24 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/menubar.tsx +256 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/navigation-menu.tsx +128 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/pagination.tsx +117 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/popover.tsx +29 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/progress.tsx +28 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/radio-group.tsx +42 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/resizable.tsx +45 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/scroll-area.tsx +46 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/select.tsx +160 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/separator.tsx +29 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/sheet.tsx +140 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/sidebar.tsx +727 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/skeleton.tsx +15 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/slider.tsx +26 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/switch.tsx +27 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/table.tsx +117 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/tabs.tsx +53 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/textarea.tsx +22 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/toast.tsx +127 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/toaster.tsx +33 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/toggle-group.tsx +61 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/toggle.tsx +43 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/tooltip.tsx +30 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/vendor-stores-modal.tsx +336 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/venue-type-drawer.tsx +359 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/components/venue-type-selector.tsx +436 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/hooks/use-mobile.tsx +19 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/hooks/use-toast.ts +191 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/index.css +244 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/lib/queryClient.ts +57 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/lib/utils.ts +39 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/lib/venue-taxonomy.ts +532 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/main.tsx +5 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/assign-creative.tsx +781 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/content-hub.tsx +995 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/custom-pois.tsx +431 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/dashboard.tsx +620 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/deal-detail.tsx +1062 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/deal-form.tsx +1570 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/deals.tsx +716 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/edit-creative-assignment.tsx +1051 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/geotargeting.tsx +675 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/integrations.tsx +425 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/line-item-creatives.tsx +622 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/line-item-form.tsx +3132 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/line-items.tsx +530 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/not-found.tsx +21 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/proof-of-play-upload.tsx +479 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/proof-of-play.tsx +880 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/reports.tsx +235 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/settings.tsx +652 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/signal-form.tsx +1117 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/signals.tsx +366 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/tags.tsx +332 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/pages/venues.tsx +381 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/types/mapbox-gl-draw.d.ts +37 -0
- package/Influence-MW-AdServer-12-02-2026/client/src/types/react-simple-maps.d.ts +57 -0
- package/Influence-MW-AdServer-12-02-2026/components.json +20 -0
- package/Influence-MW-AdServer-12-02-2026/docs/PRD.md +3373 -0
- package/Influence-MW-AdServer-12-02-2026/docs/influence-feature-mapping.csv +498 -0
- package/Influence-MW-AdServer-12-02-2026/drizzle.config.ts +14 -0
- package/Influence-MW-AdServer-12-02-2026/package-lock.json +9672 -0
- package/Influence-MW-AdServer-12-02-2026/package.json +118 -0
- package/Influence-MW-AdServer-12-02-2026/postcss.config.js +6 -0
- package/Influence-MW-AdServer-12-02-2026/replit.md +91 -0
- package/Influence-MW-AdServer-12-02-2026/script/build.ts +67 -0
- package/Influence-MW-AdServer-12-02-2026/scripts/create-miro-diagrams.cjs +318 -0
- package/Influence-MW-AdServer-12-02-2026/scripts/create-remaining-diagrams.cjs +270 -0
- package/Influence-MW-AdServer-12-02-2026/server/index.ts +103 -0
- package/Influence-MW-AdServer-12-02-2026/server/recommendation-service.ts +319 -0
- package/Influence-MW-AdServer-12-02-2026/server/routes.ts +1890 -0
- package/Influence-MW-AdServer-12-02-2026/server/static.ts +19 -0
- package/Influence-MW-AdServer-12-02-2026/server/storage.ts +2058 -0
- package/Influence-MW-AdServer-12-02-2026/server/vite.ts +58 -0
- package/Influence-MW-AdServer-12-02-2026/shared/schema.ts +1595 -0
- package/Influence-MW-AdServer-12-02-2026/tailwind.config.ts +107 -0
- package/Influence-MW-AdServer-12-02-2026/tsconfig.json +23 -0
- package/Influence-MW-AdServer-12-02-2026/vite.config.ts +40 -0
- package/LINE_ITEM_BUDGET_FIELD_MAPPING.md +178 -0
- package/PCM/.env.example +92 -0
- package/PCM/README.md +558 -0
- package/PCM/docs/TEST_CASES.md +422 -0
- package/PCM/index.js +106 -0
- package/PCM/package-lock.json +3282 -0
- package/PCM/package.json +32 -0
- package/PCM/replit.md +64 -0
- package/PCM/schema.sql +495 -0
- package/PCM/scripts/export-schema.js +183 -0
- package/PCM/scripts/seed-comprehensive.js +631 -0
- package/PCM/scripts/seed-production.js +477 -0
- package/PCM/src/config/db.js +56 -0
- package/PCM/src/config/swagger.js +5975 -0
- package/PCM/src/dto/EmailRequestDTO.js +166 -0
- package/PCM/src/middleware/errorHandler.js +52 -0
- package/PCM/src/middleware/logger.js +26 -0
- package/PCM/src/migrations/001_add_campaign_mode_fields.sql +36 -0
- package/PCM/src/migrations/002_create_deal_id_counters.sql +22 -0
- package/PCM/src/migrations/003_update_publishers_column.sql +15 -0
- package/PCM/src/migrations/004_add_direct_dealtype_and_advertiser.sql +5 -0
- package/PCM/src/migrations/005_add_programmatic_fields_and_update_enums.sql +31 -0
- package/PCM/src/migrations/006_add_line_item_programmatic_fields.sql +12 -0
- package/PCM/src/migrations/007_add_line_item_direct_fields.sql +15 -0
- package/PCM/src/migrations/008_add_inventory_fields.sql +45 -0
- package/PCM/src/migrations/009_move_inventory_fields_to_metadata.sql +32 -0
- package/PCM/src/migrations/010_add_draft_status_and_line_items_count.sql +23 -0
- package/PCM/src/migrations/011_add_planning_field.sql +21 -0
- package/PCM/src/migrations/012_fix_inventory_composite_pk.sql +17 -0
- package/PCM/src/migrations/013_make_external_id_optional.sql +3 -0
- package/PCM/src/migrations/014_create_change_history.sql +38 -0
- package/PCM/src/migrations/016_create_publisher_insertion_orders.sql +33 -0
- package/PCM/src/migrations/017_fix_line_item_id_fk_reference.sql +86 -0
- package/PCM/src/migrations/018_create_approval_tables.sql +44 -0
- package/PCM/src/migrations/019_add_encrypted_token_column.sql +2 -0
- package/PCM/src/migrations/020_add_rejection_reason_to_deals.sql +10 -0
- package/PCM/src/migrations/021_add_publisher_external_id_to_inventories.sql +12 -0
- package/PCM/src/migrations/022_add_line_item_extended_fields.sql +24 -0
- package/PCM/src/migrations/023_add_base_price_fields.sql +8 -0
- package/PCM/src/migrations/run-migrations.js +46 -0
- package/PCM/src/models/ApprovalOTP.js +51 -0
- package/PCM/src/models/ApprovalToken.js +79 -0
- package/PCM/src/models/ChangeHistory.js +107 -0
- package/PCM/src/models/Deal.js +186 -0
- package/PCM/src/models/DealIdCounter.js +28 -0
- package/PCM/src/models/LineItem.js +227 -0
- package/PCM/src/models/LineItemCreative.js +89 -0
- package/PCM/src/models/LineItemInventory.js +115 -0
- package/PCM/src/models/PublisherInsertionOrder.js +93 -0
- package/PCM/src/models/TransactionHistory.js +34 -0
- package/PCM/src/models/associations.js +81 -0
- package/PCM/src/routes/approval.js +321 -0
- package/PCM/src/routes/creatives.js +437 -0
- package/PCM/src/routes/deals.js +1638 -0
- package/PCM/src/routes/digitalSignage.js +242 -0
- package/PCM/src/routes/insertionOrders.js +380 -0
- package/PCM/src/routes/lineItems.js +926 -0
- package/PCM/src/routes/system.js +384 -0
- package/PCM/src/services/ApprovalService.js +885 -0
- package/PCM/src/services/CampaignImportConverter.js +631 -0
- package/PCM/src/services/CampaignModeService.js +273 -0
- package/PCM/src/services/CampaignStatusService.js +395 -0
- package/PCM/src/services/ChangeHistoryService.js +316 -0
- package/PCM/src/services/DealIdService.js +94 -0
- package/PCM/src/services/DealResponseFormatter.js +90 -0
- package/PCM/src/services/EmailNotificationService.js +315 -0
- package/PCM/src/services/LineItemResponseFormatter.js +122 -0
- package/PCM/src/services/LineItemStatusService.js +380 -0
- package/PCM/src/tests/comprehensiveTestRunner.js +360 -0
- package/PCM/src/tests/comprehensiveTests.js +1277 -0
- package/PCM/src/tests/dealTypeUnitTests.js +1058 -0
- package/PCM/src/tests/testRunner.js +248 -0
- package/PCM/src/utils/caseConverter.js +92 -0
- package/PCM/src/utils/dealCalculations.js +206 -0
- package/PCM/src/utils/lineItemPayloadNormalizer.js +41 -0
- package/PCM/src/utils/payloadNormalizer.js +34 -0
- package/PCM/src/utils/sourceNormalizer.js +56 -0
- package/PCM/src/validators/creativeValidator.js +27 -0
- package/PCM/src/validators/dealValidator.js +203 -0
- package/PCM/src/validators/lineItemValidator.js +489 -0
- package/PCM/tests/approval-flows.test.js +238 -0
- package/PCM/tests/approval-workflow.test.js +291 -0
- package/PCM/tests/campaign-import-converter.test.js +543 -0
- package/PCM/tests/campaign-import-e2e.test.js +520 -0
- package/PCM/tests/campaign-status.test.js +539 -0
- package/PCM/tests/direct-publisher-split-reimport.test.js +460 -0
- package/PCM/tests/e2e/digital-signage.test.js +145 -0
- package/PCM/tests/e2e/search-filter-pagination.test.js +399 -0
- package/PCM/tests/e2e-comprehensive.test.js +3446 -0
- package/PCM/tests/edge-cases.test.js +340 -0
- package/PCM/tests/line-item-status.test.js +340 -0
- package/PCM/tests/seller-account-external-ids.test.js +877 -0
- package/PCM/tests/source-validation.test.js +324 -0
- package/PRD.md +3373 -0
- package/README.md +186 -0
- package/client/index.html +35 -0
- package/client/public/DEMO_STATUS.md +579 -0
- package/client/public/img/MW-logo-trans_1754045676555.png +0 -0
- package/client/public/locales/ar/approval.json +144 -0
- package/client/public/locales/ar/buyer.json +61 -0
- package/client/public/locales/ar/campaigns.json +1 -0
- package/client/public/locales/ar/common.json +218 -0
- package/client/public/locales/ar/contentHub.json +266 -0
- package/client/public/locales/ar/creatives.json +79 -0
- package/client/public/locales/ar/dashboard.json +57 -0
- package/client/public/locales/ar/deals.json +886 -0
- package/client/public/locales/ar/dsp.json +131 -0
- package/client/public/locales/ar/inventory.json +201 -0
- package/client/public/locales/ar/lineItems.json +553 -0
- package/client/public/locales/ar/navigation.json +48 -0
- package/client/public/locales/ar/wizard.json +1 -0
- package/client/public/locales/en/approval.json +144 -0
- package/client/public/locales/en/buyer.json +65 -0
- package/client/public/locales/en/campaigns.json +1 -0
- package/client/public/locales/en/common.json +218 -0
- package/client/public/locales/en/contentHub.json +266 -0
- package/client/public/locales/en/creatives.json +79 -0
- package/client/public/locales/en/dashboard.json +57 -0
- package/client/public/locales/en/deals.json +886 -0
- package/client/public/locales/en/dsp.json +131 -0
- package/client/public/locales/en/inventory.json +201 -0
- package/client/public/locales/en/lineItems.json +659 -0
- package/client/public/locales/en/navigation.json +48 -0
- package/client/public/locales/en/wizard.json +1 -0
- package/client/public/locales/ja/approval.json +144 -0
- package/client/public/locales/ja/buyer.json +61 -0
- package/client/public/locales/ja/campaigns.json +1 -0
- package/client/public/locales/ja/common.json +218 -0
- package/client/public/locales/ja/contentHub.json +266 -0
- package/client/public/locales/ja/creatives.json +79 -0
- package/client/public/locales/ja/dashboard.json +57 -0
- package/client/public/locales/ja/deals.json +886 -0
- package/client/public/locales/ja/dsp.json +131 -0
- package/client/public/locales/ja/inventory.json +201 -0
- package/client/public/locales/ja/lineItems.json +553 -0
- package/client/public/locales/ja/navigation.json +48 -0
- package/client/public/locales/ja/wizard.json +1 -0
- package/client/public/locales/zh/approval.json +144 -0
- package/client/public/locales/zh/buyer.json +61 -0
- package/client/public/locales/zh/campaigns.json +1 -0
- package/client/public/locales/zh/common.json +218 -0
- package/client/public/locales/zh/contentHub.json +266 -0
- package/client/public/locales/zh/creatives.json +79 -0
- package/client/public/locales/zh/dashboard.json +57 -0
- package/client/public/locales/zh/deals.json +886 -0
- package/client/public/locales/zh/dsp.json +131 -0
- package/client/public/locales/zh/inventory.json +201 -0
- package/client/public/locales/zh/lineItems.json +553 -0
- package/client/public/locales/zh/navigation.json +48 -0
- package/client/public/locales/zh/wizard.json +1 -0
- package/client/public/manifest.json +36 -0
- package/client/src/App.tsx +464 -0
- package/client/src/components/app-sidebar.tsx +312 -0
- package/client/src/components/approval/approval-decision-form.test.tsx +294 -0
- package/client/src/components/approval/approval-decision-form.tsx +326 -0
- package/client/src/components/approval/approval-sheet.tsx +631 -0
- package/client/src/components/approval/line-item-details-sheet.tsx +371 -0
- package/client/src/components/approval/otp-verification.test.tsx +337 -0
- package/client/src/components/approval/otp-verification.tsx +180 -0
- package/client/src/components/content-hub/bulk-transcode-dialog.tsx +379 -0
- package/client/src/components/content-hub/content-hub-manager-v2.tsx +574 -0
- package/client/src/components/content-hub/content-hub-manager.tsx +330 -0
- package/client/src/components/content-hub/creative-card.tsx +456 -0
- package/client/src/components/content-hub/creative-detail-sheet.tsx +685 -0
- package/client/src/components/content-hub/creative-filters.tsx +457 -0
- package/client/src/components/content-hub/creative-grid.tsx +329 -0
- package/client/src/components/content-hub/creative-selector.tsx +415 -0
- package/client/src/components/content-hub/creative-upload.tsx +547 -0
- package/client/src/components/content-hub/folder-dialogs.tsx +445 -0
- package/client/src/components/content-hub/folder-list.tsx +280 -0
- package/client/src/components/content-hub/review-dialogs.tsx +268 -0
- package/client/src/components/content-hub/transcode-dialog.tsx +226 -0
- package/client/src/components/creative-library/creative-details-view.tsx +446 -0
- package/client/src/components/creative-library/creative-filters-panel.tsx +203 -0
- package/client/src/components/creative-library/creative-list.tsx +360 -0
- package/client/src/components/creative-library/creative-status-badge.tsx +71 -0
- package/client/src/components/creative-library/folder-card.tsx +78 -0
- package/client/src/components/creative-library/index.ts +27 -0
- package/client/src/components/creative-library/new-creative-card.tsx +211 -0
- package/client/src/components/creative-library/upload-creative-dialog.tsx +261 -0
- package/client/src/components/dashboard-overview.tsx +109 -0
- package/client/src/components/deals/approval-history-panel.test.tsx +240 -0
- package/client/src/components/deals/approval-history-panel.tsx +156 -0
- package/client/src/components/deals/deal-status-badge.tsx +92 -0
- package/client/src/components/deals/import-from-planner-dialog.tsx +399 -0
- package/client/src/components/deals/market-insights-panel.tsx +237 -0
- package/client/src/components/deals/reopen-deal-sheet.tsx +191 -0
- package/client/src/components/deals/request-approval-sheet.test.tsx +323 -0
- package/client/src/components/deals/request-approval-sheet.tsx +136 -0
- package/client/src/components/deals/resend-approval-sheet.tsx +201 -0
- package/client/src/components/direct-campaigns/campaign-card.tsx +283 -0
- package/client/src/components/direct-campaigns/deal-filter-panel.tsx +325 -0
- package/client/src/components/inventory/advanced-filters-panel.tsx +273 -0
- package/client/src/components/inventory/csv-upload-modal.tsx +639 -0
- package/client/src/components/inventory/inventory-availability-view.tsx +486 -0
- package/client/src/components/inventory/inventory-details-sheet.tsx +376 -0
- package/client/src/components/inventory/inventory-map-view.tsx +596 -0
- package/client/src/components/inventory/inventory-settings-menu.tsx +52 -0
- package/client/src/components/language-switcher.tsx +53 -0
- package/client/src/components/line-items/campaign-forecast-panel.tsx +138 -0
- package/client/src/components/line-items/form-insights.tsx +89 -0
- package/client/src/components/line-items/geofencing/LocationCsvUploadDrawer.tsx +100 -0
- package/client/src/components/line-items/geofencing/POIDropdown.tsx +379 -0
- package/client/src/components/line-items/geofencing/SelectedLocationsSidebar.tsx +436 -0
- package/client/src/components/line-items/geofencing/ViewFileLocationDrawer.tsx +199 -0
- package/client/src/components/line-items/geofencing/components/ExistingFilesTab.tsx +268 -0
- package/client/src/components/line-items/geofencing/components/TemplateDownloadSection.tsx +59 -0
- package/client/src/components/line-items/geofencing/components/UploadTab.tsx +215 -0
- package/client/src/components/line-items/geofencing-map.tsx +1270 -0
- package/client/src/components/line-items/inventory-availability-section.tsx +178 -0
- package/client/src/components/line-items/line-item-schedule-manager.tsx +313 -0
- package/client/src/components/line-items/manual-inventory-drawer.tsx +346 -0
- package/client/src/components/line-items/planner-inventory-card.tsx +495 -0
- package/client/src/components/line-items/planner-schedule-grid.tsx +495 -0
- package/client/src/components/line-items/schedule-rule-editor.tsx +649 -0
- package/client/src/components/line-items/schedule-rule-types.ts +122 -0
- package/client/src/components/line-items/steps/creatives-step.tsx +681 -0
- package/client/src/components/line-items/steps/inventory-schedule-step.tsx +1596 -0
- package/client/src/components/line-items/steps/inventory-step.tsx +1533 -0
- package/client/src/components/line-items/steps/line-item-details-step.tsx +916 -0
- package/client/src/components/line-items/steps/schedule-step.tsx +273 -0
- package/client/src/components/line-items/steps/summary-step.tsx +680 -0
- package/client/src/components/line-items/steps/targeting-step.tsx +1708 -0
- package/client/src/components/product-switcher.tsx +105 -0
- package/client/src/components/protected-route.tsx +49 -0
- package/client/src/components/skip-link.tsx +22 -0
- package/client/src/components/stat-card.tsx +53 -0
- package/client/src/components/status-badge.tsx +96 -0
- package/client/src/components/ui/hierarchical-venue-selector.tsx +389 -0
- package/client/src/components/ui/toaster.tsx +111 -0
- package/client/src/contexts/auth-context.tsx +181 -0
- package/client/src/contexts/sidebar-state.tsx +50 -0
- package/client/src/contexts/theme-context.tsx +66 -0
- package/client/src/data/campaign-data.json +107 -0
- package/client/src/data/countries.json +22 -0
- package/client/src/hooks/use-approval.ts +366 -0
- package/client/src/hooks/use-keyboard-shortcuts.ts +74 -0
- package/client/src/hooks/use-media-query.ts +46 -0
- package/client/src/hooks/use-mobile.tsx +19 -0
- package/client/src/hooks/use-page-title.ts +21 -0
- package/client/src/hooks/use-toast.ts +195 -0
- package/client/src/index.css +694 -0
- package/client/src/lib/__tests__/accessibility.test.ts +104 -0
- package/client/src/lib/__tests__/date-utils.test.ts +199 -0
- package/client/src/lib/__tests__/dsp-buyer-api.test.ts +127 -0
- package/client/src/lib/__tests__/dsp-buyer-integration.test.ts +247 -0
- package/client/src/lib/__tests__/storage-utils.test.ts +167 -0
- package/client/src/lib/__tests__/utils.test.ts +57 -0
- package/client/src/lib/accessibility.ts +141 -0
- package/client/src/lib/api-config.ts +9 -0
- package/client/src/lib/auth-service.ts +209 -0
- package/client/src/lib/campaign-creative-api.ts +82 -0
- package/client/src/lib/company-api.ts +61 -0
- package/client/src/lib/content-hub-api.ts +407 -0
- package/client/src/lib/creative-mapper.ts +61 -0
- package/client/src/lib/date-utils.ts +119 -0
- package/client/src/lib/deal-helpers.ts +220 -0
- package/client/src/lib/dsp-buyer-api.ts +196 -0
- package/client/src/lib/geo-import-api.ts +151 -0
- package/client/src/lib/google-poi-api.ts +305 -0
- package/client/src/lib/i18n/__tests__/formatting.test.ts +202 -0
- package/client/src/lib/i18n/formatting.ts +130 -0
- package/client/src/lib/i18n/index.ts +8 -0
- package/client/src/lib/i18n-compat.ts +76 -0
- package/client/src/lib/influence-deals-api.ts +896 -0
- package/client/src/lib/inventory-api.ts +399 -0
- package/client/src/lib/oauth-service.ts +678 -0
- package/client/src/lib/poi-types.ts +75 -0
- package/client/src/lib/queryClient.ts +144 -0
- package/client/src/lib/recommendation-api.ts +380 -0
- package/client/src/lib/storage-utils.ts +104 -0
- package/client/src/lib/tolgee.ts +85 -0
- package/client/src/lib/utils.ts +0 -0
- package/client/src/main.tsx +67 -0
- package/client/src/mapbox-draw-modes.d.ts +32 -0
- package/client/src/pages/all-folders.tsx +203 -0
- package/client/src/pages/auth-callback.tsx +115 -0
- package/client/src/pages/buyer-form.tsx +339 -0
- package/client/src/pages/buyer-list.tsx +622 -0
- package/client/src/pages/content-hub.tsx +1358 -0
- package/client/src/pages/create-deal.tsx +2093 -0
- package/client/src/pages/creative-assignment-page.tsx +548 -0
- package/client/src/pages/creatives.tsx +5 -0
- package/client/src/pages/custom-pois.tsx +425 -0
- package/client/src/pages/dashboard.tsx +615 -0
- package/client/src/pages/deal-history.tsx +434 -0
- package/client/src/pages/deal-line-items.tsx +1703 -0
- package/client/src/pages/demo-status.tsx +113 -0
- package/client/src/pages/direct-campaign-details.tsx +361 -0
- package/client/src/pages/direct-campaigns-new.tsx +824 -0
- package/client/src/pages/dsp-form.tsx +803 -0
- package/client/src/pages/dsp-list.tsx +239 -0
- package/client/src/pages/folder-content.tsx +336 -0
- package/client/src/pages/integrations.tsx +429 -0
- package/client/src/pages/line-item-creatives.tsx +789 -0
- package/client/src/pages/line-item-detail-page.tsx +684 -0
- package/client/src/pages/line-item-form-page.tsx +3261 -0
- package/client/src/pages/line-item-wizard.tsx +1207 -0
- package/client/src/pages/login.tsx +154 -0
- package/client/src/pages/not-found.tsx +23 -0
- package/client/src/pages/proof-of-play.tsx +397 -0
- package/client/src/pages/public-approval.tsx +551 -0
- package/client/src/pages/reports.tsx +231 -0
- package/client/src/pages/settings.tsx +760 -0
- package/client/src/pages/signals.tsx +389 -0
- package/client/src/pages/tags.tsx +318 -0
- package/client/src/pages/test-results.tsx +328 -0
- package/client/src/store/hooks.ts +5 -0
- package/client/src/store/index.ts +15 -0
- package/client/src/store/mapMarkerLocationsSlice.ts +241 -0
- package/client/src/styles/design-tokens.css +324 -0
- package/client/src/test/setup.ts +261 -0
- package/client/src/test/test-utils.tsx +40 -0
- package/client/src/types/approval.ts +221 -0
- package/client/src/types/content-hub.ts +209 -0
- package/client/src/types/geofencing.ts +67 -0
- package/client/src/types/transcoding.ts +140 -0
- package/client/src/vite-env.d.ts +18 -0
- package/components.json +20 -0
- package/creative-api.json +1 -0
- package/docs/AI_REFERENCE.md +459 -0
- package/docs/MWDesign-Prompt.md +132 -0
- package/docs/MWDesign-System.md +344 -0
- package/docs/test-plan.md +277 -0
- package/e2e/AUTONOMOUS-TESTING.md +406 -0
- package/e2e/README.md +219 -0
- package/e2e/autonomous-flow.spec.ts +308 -0
- package/e2e/debug-sso.spec.ts +163 -0
- package/e2e/direct-campaigns.spec.ts +219 -0
- package/e2e/explore-sso.spec.ts +149 -0
- package/e2e/fixtures/auth.ts +26 -0
- package/e2e/fixtures/enhanced-test.ts +331 -0
- package/e2e/pagination.spec.ts +280 -0
- package/e2e/view-toggle.spec.ts +312 -0
- package/generated-icon.png +0 -0
- package/i18next-scanner.config.cjs +46 -0
- package/package.json +141 -0
- package/playwright.config.ts +93 -0
- package/postcss.config.js +6 -0
- package/replit.md +196 -0
- package/screenshot-after-login.png +0 -0
- package/screenshot-contenthub-grid.png +0 -0
- package/screenshot-contenthub-list-fixed.png +0 -0
- package/screenshot-contenthub-list.png +0 -0
- package/screenshot-create-deal.png +0 -0
- package/screenshot-dashboard.png +0 -0
- package/screenshot-deals.png +0 -0
- package/screenshot-login-filled.png +0 -0
- package/screenshot-login.png +0 -0
- package/screenshot.mjs +24 -0
- package/scripts/deploy-stg.sh +185 -0
- package/shared/direct-io-schema.ts +383 -0
- package/shared/schema.ts +439 -0
- package/shared/screen-types.ts +149 -0
- package/springdocDefault.json +1 -0
- package/swagger-ui-bundle.js +2 -0
- package/swagger-ui-init.js +10316 -0
- package/tailwind.config.ts +282 -0
- package/terraform/README.md +306 -0
- package/terraform/cloudfront.tf +289 -0
- package/terraform/ecs.tf +727 -0
- package/terraform/environments/dev.tfvars +59 -0
- package/terraform/environments/production.tfvars +60 -0
- package/terraform/main.tf +47 -0
- package/terraform/outputs.tf +145 -0
- package/terraform/s3.tf +192 -0
- package/terraform/variables.tf +226 -0
- package/terraform/waf.tf +165 -0
- package/terraform-frontend/.terraform.lock.hcl +25 -0
- package/terraform-frontend/README.md +85 -0
- package/terraform-frontend/cloudfront.tf +125 -0
- package/terraform-frontend/main.tf +31 -0
- package/terraform-frontend/outputs.tf +24 -0
- package/terraform-frontend/terraform.tfvars +12 -0
- package/terraform-frontend/variables.tf +53 -0
- package/tsconfig.json +23 -0
- package/vite.config.ts +226 -0
- package/vitest.config.ts +56 -0
|
@@ -0,0 +1,659 @@
|
|
|
1
|
+
{
|
|
2
|
+
"form": {
|
|
3
|
+
"newLineItem": "New Line Item",
|
|
4
|
+
"editLineItem": "Edit Line Item",
|
|
5
|
+
"createLineItem": "Create Line Item",
|
|
6
|
+
"saveChanges": "Save Changes",
|
|
7
|
+
"saving": "Saving...",
|
|
8
|
+
"sections": {
|
|
9
|
+
"details": "Line Item Details",
|
|
10
|
+
"creative": "Creative",
|
|
11
|
+
"targeting": "Targeting",
|
|
12
|
+
"inventorySource": "Inventory Source",
|
|
13
|
+
"inventorySelection": "Inventory Selection",
|
|
14
|
+
"schedule": "Schedule",
|
|
15
|
+
"billing": "Billing",
|
|
16
|
+
"budget": "Budget",
|
|
17
|
+
"bidStrategy": "Bid Strategy",
|
|
18
|
+
"customFees": "Custom Fees",
|
|
19
|
+
"advanced": "Advanced Options",
|
|
20
|
+
"signals": "Signals"
|
|
21
|
+
},
|
|
22
|
+
"fields": {
|
|
23
|
+
"name": "Name",
|
|
24
|
+
"lineItemName": "Line Item Name",
|
|
25
|
+
"status": "Status",
|
|
26
|
+
"copyFromLineItem": "Copy from Line Item",
|
|
27
|
+
"creativeType": "Creative Type",
|
|
28
|
+
"priority": "Priority",
|
|
29
|
+
"startDate": "Start Date",
|
|
30
|
+
"endDate": "End Date",
|
|
31
|
+
"mediaType": "Media Type",
|
|
32
|
+
"geography": "Geography",
|
|
33
|
+
"demography": "Demography",
|
|
34
|
+
"ageGroups": "Age Groups",
|
|
35
|
+
"gender": "Gender",
|
|
36
|
+
"venueType": "Venue Type",
|
|
37
|
+
"adResolution": "Ad Resolution",
|
|
38
|
+
"adDuration": "Ad Duration (seconds)",
|
|
39
|
+
"sspExchange": "SSP/Exchange",
|
|
40
|
+
"mediaOwner": "Media Owner",
|
|
41
|
+
"inventoryFormat": "Inventory Format",
|
|
42
|
+
"doohInventories": "DOOH Inventories",
|
|
43
|
+
"screensAvailable": "screens available",
|
|
44
|
+
"schedules": "Schedules",
|
|
45
|
+
"configured": "configured",
|
|
46
|
+
"billable": "Billable",
|
|
47
|
+
"billableDesc": "Toggle between Net and Billable",
|
|
48
|
+
"totalBudget": "Total Budget",
|
|
49
|
+
"currency": "Currency",
|
|
50
|
+
"inheritedFromDeal": "Inherited from deal",
|
|
51
|
+
"budgetConsumption": "Budget Consumption",
|
|
52
|
+
"dailyBudget": "Daily Budget",
|
|
53
|
+
"pacing": "Pacing",
|
|
54
|
+
"trafficAllocation": "Traffic Allocation",
|
|
55
|
+
"sov": "SOV (Share of Voice)",
|
|
56
|
+
"automatedBidding": "Automated Bidding",
|
|
57
|
+
"automatedBiddingDesc": "Let the system optimize bids",
|
|
58
|
+
"maxBid": "Max Bid",
|
|
59
|
+
"bidType": "Bid Type",
|
|
60
|
+
"auctionType": "Auction Type",
|
|
61
|
+
"addFee": "Add Fee",
|
|
62
|
+
"autoActivateSignal": "Auto-activate Signal",
|
|
63
|
+
"signalDesc": "Enable signal-based delivery triggers",
|
|
64
|
+
"signalSelector": "Signal Selector"
|
|
65
|
+
},
|
|
66
|
+
"labels": {
|
|
67
|
+
"highest": "Highest",
|
|
68
|
+
"lowest": "Lowest",
|
|
69
|
+
"draft": "Draft",
|
|
70
|
+
"generated": "Generated",
|
|
71
|
+
"active": "Active",
|
|
72
|
+
"paused": "Paused",
|
|
73
|
+
"selectPlaceholder": "Select {field}",
|
|
74
|
+
"daily": "Daily",
|
|
75
|
+
"weekly": "Weekly",
|
|
76
|
+
"monthly": "Monthly",
|
|
77
|
+
"lifetime": "Lifetime",
|
|
78
|
+
"cpm": "CPM",
|
|
79
|
+
"cps": "CPS",
|
|
80
|
+
"fixed": "Fixed",
|
|
81
|
+
"percentage": "Percentage",
|
|
82
|
+
"even": "Even",
|
|
83
|
+
"asap": "ASAP",
|
|
84
|
+
"frontLoaded": "Front-Loaded",
|
|
85
|
+
"noSchedules": "No schedules configured. Line item will run all day.",
|
|
86
|
+
"fetchInventory": "Fetch Available Inventory",
|
|
87
|
+
"fetching": "Fetching...",
|
|
88
|
+
"formInsights": "Form Insights",
|
|
89
|
+
"displayType": "Display",
|
|
90
|
+
"videoType": "Video",
|
|
91
|
+
"audioType": "Audio"
|
|
92
|
+
},
|
|
93
|
+
"messages": {
|
|
94
|
+
"settingsCopied": "Settings Copied",
|
|
95
|
+
"copiedFrom": "Copied settings from \"{{name}}\"",
|
|
96
|
+
"found": "Found {{count}} matching screens based on your targeting criteria",
|
|
97
|
+
"noName": "Add a descriptive name to identify this line item",
|
|
98
|
+
"noInventory": "Select inventory to target specific screens",
|
|
99
|
+
"noVenue": "Consider adding venue types to narrow your targeting",
|
|
100
|
+
"configLooks": "Your line item configuration looks good!"
|
|
101
|
+
},
|
|
102
|
+
"tips": {
|
|
103
|
+
"startBroad": "Start with broader targeting and narrow based on performance",
|
|
104
|
+
"usePacing": "Use pacing controls to optimize delivery throughout the campaign",
|
|
105
|
+
"monitorSOV": "Monitor SOV to ensure adequate share of voice"
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"wizard": {
|
|
109
|
+
"title": "Line Item Wizard",
|
|
110
|
+
"steps": {
|
|
111
|
+
"details": "Details",
|
|
112
|
+
"inventorySchedule": "Inventory & Schedule",
|
|
113
|
+
"inventory": "Inventory",
|
|
114
|
+
"schedule": "Schedule",
|
|
115
|
+
"targeting": "Targeting",
|
|
116
|
+
"creatives": "Creatives",
|
|
117
|
+
"summary": "Summary"
|
|
118
|
+
},
|
|
119
|
+
"common": {
|
|
120
|
+
"next": "Next",
|
|
121
|
+
"back": "Back",
|
|
122
|
+
"save": "Save",
|
|
123
|
+
"cancel": "Cancel",
|
|
124
|
+
"saving": "Saving...",
|
|
125
|
+
"loading": "Loading...",
|
|
126
|
+
"searchHere": "Search here",
|
|
127
|
+
"selectAll": "Select All",
|
|
128
|
+
"noResults": "No results found",
|
|
129
|
+
"selected": "selected",
|
|
130
|
+
"pageItems": "Page Items",
|
|
131
|
+
"groupBy": "Group by",
|
|
132
|
+
"allInventories": "All Inventories",
|
|
133
|
+
"readOnly": "Read-Only",
|
|
134
|
+
"findingBestInventory": "Finding best inventory for your campaign...",
|
|
135
|
+
"mayTakeMoment": "This may take a moment",
|
|
136
|
+
"proceedingWithStandardSearch": "Proceeding with standard inventory search.",
|
|
137
|
+
"note": "Note:",
|
|
138
|
+
"publisher": "Publisher",
|
|
139
|
+
"location": "Location",
|
|
140
|
+
"type": "Type"
|
|
141
|
+
},
|
|
142
|
+
"ai": {
|
|
143
|
+
"smartSuggestion": "AI Smart Suggestion",
|
|
144
|
+
"smartRecommendation": "Smart Recommendation",
|
|
145
|
+
"skipForNow": "Skip for Now",
|
|
146
|
+
"workingOnGeoFitness": "AI Smart Suggestion is working on the geo fitness",
|
|
147
|
+
"errorMessage": "Our AI Smart Suggestion encountered an unexpected error while processing your request. The neural network couldn't complete the task.",
|
|
148
|
+
"showAllInventories": "Show all Inventories",
|
|
149
|
+
"viewRecommendations": "View Recommendations",
|
|
150
|
+
"viewAllInventories": "View all Inventories",
|
|
151
|
+
"retry": "Retry",
|
|
152
|
+
"inventoriesRecommended": "{{count}} Inventories Recommended",
|
|
153
|
+
"basedOnCampaignDetails": "Based on your campaign details, we recommend the following inventories."
|
|
154
|
+
},
|
|
155
|
+
"details": {
|
|
156
|
+
"title": "Line Item Details",
|
|
157
|
+
"subtitle": "Define the basic details for your line item.",
|
|
158
|
+
"name": "Name",
|
|
159
|
+
"lineItemName": "Line Item Name",
|
|
160
|
+
"enterLineItemName": "Enter line item name",
|
|
161
|
+
"flightDates": "Flight Dates",
|
|
162
|
+
"selectFlightDates": "Select flight date range",
|
|
163
|
+
"creativeType": "Creative Type",
|
|
164
|
+
"selectCreativeType": "Select creative type",
|
|
165
|
+
"display": "Display",
|
|
166
|
+
"displayDesc": "Static images and banners",
|
|
167
|
+
"video": "Video",
|
|
168
|
+
"videoDesc": "Video content and animations",
|
|
169
|
+
"audio": "Audio",
|
|
170
|
+
"audioDesc": "Audio advertisements",
|
|
171
|
+
"creativeDuration": "Creative Duration (seconds)",
|
|
172
|
+
"durationPlaceholder": "e.g. 10",
|
|
173
|
+
"durationOfPlayback": "Duration of creative playback",
|
|
174
|
+
"budgetAmount": "Budget Amount",
|
|
175
|
+
"enterAmount": "Enter amount",
|
|
176
|
+
"currencyInherited": "Currency is inherited from the campaign",
|
|
177
|
+
"goalType": "Goal Type",
|
|
178
|
+
"selectGoalType": "Select goal type",
|
|
179
|
+
"impressions": "Impressions",
|
|
180
|
+
"reach": "Reach",
|
|
181
|
+
"shareOfVoice": "Share of Voice",
|
|
182
|
+
"targetValue": "Target Value",
|
|
183
|
+
"enterImpressions": "Enter number of impressions",
|
|
184
|
+
"enterUsers": "Enter number of users",
|
|
185
|
+
"enterPercentage": "Enter percentage (0 - 100)",
|
|
186
|
+
"impressionsDesc": "Total number of impressions to achieve",
|
|
187
|
+
"reachDesc": "Number of unique users to reach",
|
|
188
|
+
"sovDesc": "Percentage of available inventory (0-100%)",
|
|
189
|
+
"pacing": "Pacing",
|
|
190
|
+
"selectPacing": "Select pacing",
|
|
191
|
+
"pacingAsap": "ASAP",
|
|
192
|
+
"pacingAsapDesc": "The allocated budget will be fully used to achieve target quantity as soon as possible at the earliest of the flight date.",
|
|
193
|
+
"pacingEven": "Even (Default)",
|
|
194
|
+
"pacingEvenDesc": "Budget will be distributed evenly across the entire flight duration.",
|
|
195
|
+
"pacingFrontLoaded": "Front-Loaded",
|
|
196
|
+
"pacingFrontLoadedDesc": "Higher budget allocation at the start of the campaign, tapering off towards the end.",
|
|
197
|
+
"pacingBackLoaded": "Back-Loaded",
|
|
198
|
+
"pacingBackLoadedDesc": "Lower budget allocation at the start, increasing towards the end of the campaign.",
|
|
199
|
+
"dailyImpressionCap": "Daily Impression Cap",
|
|
200
|
+
"optionalDailyLimit": "Optional daily limit",
|
|
201
|
+
"maxImpressionsPerDay": "Maximum impressions per day",
|
|
202
|
+
"hourlyImpressionCap": "Hourly Impression Cap",
|
|
203
|
+
"optionalHourlyLimit": "Optional hourly limit",
|
|
204
|
+
"maxImpressionsPerHour": "Maximum impressions per hour",
|
|
205
|
+
"projectedPacingDelivery": "Projected Pacing Delivery",
|
|
206
|
+
"pacingGraphTooltip": "This graph shows the projected delivery pattern based on your selected pacing type.",
|
|
207
|
+
"goalPercentage": "Goal Percentage",
|
|
208
|
+
"numberOfDays": "No.of Days",
|
|
209
|
+
"formInsights": "Form Insights",
|
|
210
|
+
"insightName": "Give your line item a descriptive name",
|
|
211
|
+
"insightDates": "Flight dates define when your ads will run",
|
|
212
|
+
"insightBudget": "Set your budget to control spending",
|
|
213
|
+
"insightGoal": "Choose a goal that aligns with your campaign objectives",
|
|
214
|
+
"tipPacing": "Even pacing distributes delivery evenly for consistent exposure",
|
|
215
|
+
"tipBudget": "Consider your total campaign budget when setting line item budgets",
|
|
216
|
+
"restrictedEditMode": "Restricted Edit Mode",
|
|
217
|
+
"restrictedEditModeDesc": "Only pacing settings (Daily Cap, Hourly Cap) can be modified. Other fields are read-only.",
|
|
218
|
+
"restrictedEditModeWithBudget": "Budget Amount and Target Value can be set if currently empty."
|
|
219
|
+
},
|
|
220
|
+
"inventory": {
|
|
221
|
+
"title": "Inventories",
|
|
222
|
+
"subtitle": "Choose the inventories suitable",
|
|
223
|
+
"description": "Select screens and set schedule",
|
|
224
|
+
"screens": "Screens",
|
|
225
|
+
"networks": "Networks",
|
|
226
|
+
"packages": "Packages",
|
|
227
|
+
"items": "Items",
|
|
228
|
+
"noScreensFound": "No screens found",
|
|
229
|
+
"noNetworksFound": "No networks found",
|
|
230
|
+
"noPackagesFound": "No packages found",
|
|
231
|
+
"loadingInventories": "Loading inventories...",
|
|
232
|
+
"selectedScreens": "Selected Screens",
|
|
233
|
+
"noScreensSelected": "No screens selected",
|
|
234
|
+
"filterByLocation": "Filter by Location",
|
|
235
|
+
"filterByVenue": "Filter by Venue Type",
|
|
236
|
+
"searchScreens": "Search screens...",
|
|
237
|
+
"listView": "List view",
|
|
238
|
+
"advancedFilter": "Advanced filter",
|
|
239
|
+
"settings": "Settings",
|
|
240
|
+
"scheduleTitle": "Schedule & Forecast",
|
|
241
|
+
"flight": "Flight",
|
|
242
|
+
"schedule": "Schedule",
|
|
243
|
+
"impressions": "Impressions",
|
|
244
|
+
"reach": "Reach",
|
|
245
|
+
"frequency": "Frequency",
|
|
246
|
+
"adPlays": "Ad Plays",
|
|
247
|
+
"sov": "SOV",
|
|
248
|
+
"sot": "SOT",
|
|
249
|
+
"cpm": "CPM",
|
|
250
|
+
"ecpm": "eCPM",
|
|
251
|
+
"totalCost": "Total Cost",
|
|
252
|
+
"noInventorySelected": "No inventory selected",
|
|
253
|
+
"selectInventoryForForecast": "Select inventory to see forecast",
|
|
254
|
+
"plannerRestrictedTitle": "Read-Only",
|
|
255
|
+
"plannerRestrictedDesc": "Inventory settings cannot be modified for approved Planner deals. Skip to the next step to continue.",
|
|
256
|
+
"plannerRestrictedScheduleDesc": "Inventory and schedule settings cannot be modified for approved Planner deals. Skip to Creatives step to update creatives.",
|
|
257
|
+
"unknownPublisher": "Unknown Publisher",
|
|
258
|
+
"unknownLocation": "Unknown Location",
|
|
259
|
+
"unknownType": "Unknown Type",
|
|
260
|
+
"mapView": "Map View",
|
|
261
|
+
"availability": "Availability",
|
|
262
|
+
"uploadCSV": "Upload CSV",
|
|
263
|
+
"inventoriesSelected": "inventories selected"
|
|
264
|
+
},
|
|
265
|
+
"schedule": {
|
|
266
|
+
"title": "Schedule Configuration",
|
|
267
|
+
"lineItemSchedule": "Line Item Schedule",
|
|
268
|
+
"subtitle": "Configure when your ads should run",
|
|
269
|
+
"scheduleType": "Schedule Type",
|
|
270
|
+
"default": "Default",
|
|
271
|
+
"weekday": "Weekday",
|
|
272
|
+
"weekend": "Weekend",
|
|
273
|
+
"custom": "Custom",
|
|
274
|
+
"defaultDesc": "Run ads all week (Monday - Sunday)",
|
|
275
|
+
"weekdayDesc": "Run ads on weekdays only (Monday - Friday)",
|
|
276
|
+
"weekendDesc": "Run ads on weekends only (Saturday - Sunday)",
|
|
277
|
+
"customDesc": "Define custom schedule rules",
|
|
278
|
+
"validity": "Validity",
|
|
279
|
+
"startDate": "Start Date",
|
|
280
|
+
"endDate": "End Date",
|
|
281
|
+
"hours": "Hours",
|
|
282
|
+
"allDay": "All Day",
|
|
283
|
+
"addTimeSlot": "Add Time Slot",
|
|
284
|
+
"priority": "Priority",
|
|
285
|
+
"daysOfWeek": "Days of Week",
|
|
286
|
+
"monday": "Monday",
|
|
287
|
+
"tuesday": "Tuesday",
|
|
288
|
+
"wednesday": "Wednesday",
|
|
289
|
+
"thursday": "Thursday",
|
|
290
|
+
"friday": "Friday",
|
|
291
|
+
"saturday": "Saturday",
|
|
292
|
+
"sunday": "Sunday",
|
|
293
|
+
"mon": "Mon",
|
|
294
|
+
"tue": "Tue",
|
|
295
|
+
"wed": "Wed",
|
|
296
|
+
"thu": "Thu",
|
|
297
|
+
"fri": "Fri",
|
|
298
|
+
"sat": "Sat",
|
|
299
|
+
"sun": "Sun",
|
|
300
|
+
"addSchedule": "Add Schedule",
|
|
301
|
+
"removeSchedule": "Remove Schedule",
|
|
302
|
+
"schedules": "Schedules",
|
|
303
|
+
"noSchedules": "No schedules configured",
|
|
304
|
+
"forecast": "Forecast",
|
|
305
|
+
"estimatedImpressions": "Estimated Impressions",
|
|
306
|
+
"estimatedReach": "Estimated Reach",
|
|
307
|
+
"noInventoriesSelected": "No inventories selected. Go back to select inventories.",
|
|
308
|
+
"plannerRestrictedDesc": "Schedule settings cannot be modified for approved Planner deals."
|
|
309
|
+
},
|
|
310
|
+
"targeting": {
|
|
311
|
+
"title": "Targeting Options",
|
|
312
|
+
"subtitle": "Configure audience and location targeting",
|
|
313
|
+
"description": "Configure audience and location targeting",
|
|
314
|
+
"demographicsTab": "Demographics",
|
|
315
|
+
"venueTypesTab": "Venue Types",
|
|
316
|
+
"geofencingTab": "Geofencing",
|
|
317
|
+
"signalsTab": "Signals",
|
|
318
|
+
"demographicsVenueTitle": "Demographics & Venue Selection",
|
|
319
|
+
"demographicsVenueDesc": "Enter your demographic information and choose the venue that best fits your requirements.",
|
|
320
|
+
"ageGroups": "Age Groups",
|
|
321
|
+
"ageGroup": "Age Group",
|
|
322
|
+
"selectAgeGroups": "Select age groups",
|
|
323
|
+
"selectAgeGroupsPlaceholder": "Select age groups...",
|
|
324
|
+
"genders": "Genders",
|
|
325
|
+
"gender": "Gender",
|
|
326
|
+
"selectGenders": "Select genders",
|
|
327
|
+
"selectGendersPlaceholder": "Select genders...",
|
|
328
|
+
"male": "Male",
|
|
329
|
+
"female": "Female",
|
|
330
|
+
"other": "Other",
|
|
331
|
+
"incomeGroups": "Income Groups",
|
|
332
|
+
"incomeGroup": "Income Group",
|
|
333
|
+
"incomeBracket": "Income Bracket",
|
|
334
|
+
"selectIncomeGroups": "Select income groups",
|
|
335
|
+
"selectIncomeGroupsPlaceholder": "Select income groups...",
|
|
336
|
+
"lowIncome": "Low Income",
|
|
337
|
+
"lowerMiddle": "Lower-Middle",
|
|
338
|
+
"middle": "Middle",
|
|
339
|
+
"upperMiddle": "Upper-Middle",
|
|
340
|
+
"highIncome": "High Income",
|
|
341
|
+
"interests": "Interests",
|
|
342
|
+
"interestActivities": "Interest & Activities",
|
|
343
|
+
"selectInterests": "Select interests",
|
|
344
|
+
"selectInterestsPlaceholder": "Select interests...",
|
|
345
|
+
"sportsFitness": "Sports & Fitness",
|
|
346
|
+
"travel": "Travel",
|
|
347
|
+
"technology": "Technology",
|
|
348
|
+
"foodDining": "Food & Dining",
|
|
349
|
+
"entertainment": "Entertainment",
|
|
350
|
+
"fashion": "Fashion",
|
|
351
|
+
"automotive": "Automotive",
|
|
352
|
+
"audienceBehaviors": "Audience Behaviors",
|
|
353
|
+
"audienceBehaviour": "Audience Behaviour",
|
|
354
|
+
"selectBehaviors": "Select behaviors",
|
|
355
|
+
"selectBehaviorsPlaceholder": "Select behaviours...",
|
|
356
|
+
"dailyCommuter": "Daily Commuter",
|
|
357
|
+
"frequentShopper": "Frequent Shopper",
|
|
358
|
+
"weekendShopper": "Weekend Shopper",
|
|
359
|
+
"tourist": "Tourist",
|
|
360
|
+
"student": "Student",
|
|
361
|
+
"businessProfessional": "Business Professional",
|
|
362
|
+
"venueTypes": "Venue Types",
|
|
363
|
+
"venueType": "Venue Type",
|
|
364
|
+
"selectVenueTypes": "Select venue types",
|
|
365
|
+
"selectVenueTypesPlaceholder": "Select venue types...",
|
|
366
|
+
"selectVenueType": "Select Venue Type",
|
|
367
|
+
"loadingVenues": "Loading venue types...",
|
|
368
|
+
"geofencing": "Geofencing",
|
|
369
|
+
"geofencingTitle": "Geofencing & Location Targeting",
|
|
370
|
+
"geofencingDesc": "Define geographic boundaries to target your audience based on location.",
|
|
371
|
+
"addGeofence": "Add Geofence",
|
|
372
|
+
"drawOnMap": "Draw on Map",
|
|
373
|
+
"uploadLocations": "Upload Locations",
|
|
374
|
+
"radius": "Radius",
|
|
375
|
+
"includeExclude": "Include/Exclude",
|
|
376
|
+
"includeAll": "Include all",
|
|
377
|
+
"noLocations": "No locations added",
|
|
378
|
+
"addLocationsHint": "Draw on the map or upload locations to define your geofence areas",
|
|
379
|
+
"locationName": "Location Name",
|
|
380
|
+
"locationAddress": "Address",
|
|
381
|
+
"remove": "Remove",
|
|
382
|
+
"addPoi": "Add POI",
|
|
383
|
+
"poiTypes": "POI Types",
|
|
384
|
+
"maxPoisPerLocation": "Maximum {{max}} POIs per location",
|
|
385
|
+
"signals": "Signals",
|
|
386
|
+
"signalsTitle": "Contextual Signals",
|
|
387
|
+
"signalsDescription": "Trigger ads based on real-time conditions",
|
|
388
|
+
"signalsDesc": "Target your ads based on real-time conditions and contextual factors.",
|
|
389
|
+
"weather": "Weather",
|
|
390
|
+
"weatherDescription": "Trigger ads based on weather conditions and temperature",
|
|
391
|
+
"traffic": "Traffic",
|
|
392
|
+
"trafficDescription": "Adjust delivery based on real-time traffic density",
|
|
393
|
+
"airQuality": "Air Quality Index",
|
|
394
|
+
"airQualityDescription": "Target based on air quality levels",
|
|
395
|
+
"timeOfDay": "Time of Day",
|
|
396
|
+
"timeOfDayDescription": "Daypart targeting (morning, afternoon, evening)",
|
|
397
|
+
"weatherConditions": "Weather Conditions",
|
|
398
|
+
"temperature": "Temperature",
|
|
399
|
+
"temperatureMin": "Min Temperature",
|
|
400
|
+
"temperatureMax": "Max Temperature",
|
|
401
|
+
"temperatureUnit": "Temperature Unit",
|
|
402
|
+
"celsius": "Celsius (°C)",
|
|
403
|
+
"fahrenheit": "Fahrenheit (°F)",
|
|
404
|
+
"trafficDensity": "Traffic Density",
|
|
405
|
+
"low": "Low",
|
|
406
|
+
"moderate": "Moderate",
|
|
407
|
+
"high": "High",
|
|
408
|
+
"aqiThreshold": "AQI Threshold",
|
|
409
|
+
"good": "Good",
|
|
410
|
+
"unhealthySensitive": "Unhealthy for Sensitive Groups",
|
|
411
|
+
"unhealthy": "Unhealthy",
|
|
412
|
+
"veryUnhealthy": "Very Unhealthy",
|
|
413
|
+
"hazardous": "Hazardous",
|
|
414
|
+
"dayparts": "Dayparts",
|
|
415
|
+
"morning": "Morning (6AM-12PM)",
|
|
416
|
+
"afternoon": "Afternoon (12PM-6PM)",
|
|
417
|
+
"evening": "Evening (6PM-10PM)",
|
|
418
|
+
"night": "Night (10PM-6AM)",
|
|
419
|
+
"smartSuggestions": "Smart Suggestions",
|
|
420
|
+
"aiPowered": "AI-Powered",
|
|
421
|
+
"basedOnCampaign": "Based on your campaign data, we recommend these targeting options",
|
|
422
|
+
"applySuggestions": "Apply Suggestions",
|
|
423
|
+
"formInsights": "Targeting Insights",
|
|
424
|
+
"insightDemographics": "Refine your audience with demographic targeting",
|
|
425
|
+
"insightVenues": "Select venue types that match your target audience",
|
|
426
|
+
"insightGeofencing": "Use geofencing for location-specific campaigns",
|
|
427
|
+
"insightSignals": "Real-time signals help reach audiences at the right moment",
|
|
428
|
+
"tipCombine": "Combine multiple targeting options for better precision",
|
|
429
|
+
"tipTest": "Start broad and refine based on performance data",
|
|
430
|
+
"plannerRestrictedDesc": "Targeting settings cannot be modified for approved Planner deals. Skip to Creatives step to update creatives.",
|
|
431
|
+
"selectedLocations": "Selected Locations",
|
|
432
|
+
"clickMapToAddLocations": "Click on the map or search to add locations",
|
|
433
|
+
"searchAddedLocations": "Search added locations here...",
|
|
434
|
+
"locationNumber": "Location {{number}}",
|
|
435
|
+
"drawnOnMap": "{{type}} - Drawn on map",
|
|
436
|
+
"limitReached": "Limit reached",
|
|
437
|
+
"canAddUpToPois": "You can add up to {{max}} POIs"
|
|
438
|
+
},
|
|
439
|
+
"creatives": {
|
|
440
|
+
"title": "Creative Assignment",
|
|
441
|
+
"subtitle": "Drag, Drop and assign creative assets to your line items",
|
|
442
|
+
"description": "Assign creatives to this line item",
|
|
443
|
+
"assignCreatives": "Assign Creatives",
|
|
444
|
+
"browseLibrary": "Browse Library",
|
|
445
|
+
"noCreatives": "No creatives assigned",
|
|
446
|
+
"uploadNew": "Upload New",
|
|
447
|
+
"skipStep": "Skip this step",
|
|
448
|
+
"contentHub": "Content Hub Creatives",
|
|
449
|
+
"typeOnly": "Only",
|
|
450
|
+
"showingMatching": "Showing creatives matching inventory resolutions",
|
|
451
|
+
"allowedResolutions": "Allowed",
|
|
452
|
+
"loadingCreatives": "Loading creatives...",
|
|
453
|
+
"noMatchingCreatives": "No matching creatives found",
|
|
454
|
+
"uploadToStart": "Upload files to get started",
|
|
455
|
+
"uploadWithResolution": "Upload files with resolutions",
|
|
456
|
+
"assignedCreatives": "Assigned Creatives",
|
|
457
|
+
"noCreativesAssigned": "No creatives assigned yet",
|
|
458
|
+
"dragDropHint": "Drag and drop the creatives here..",
|
|
459
|
+
"creative": "Creative",
|
|
460
|
+
"creatives": "Creatives",
|
|
461
|
+
"duplicateError": "is already assigned to this line item",
|
|
462
|
+
"formInsights": "Creative Insights",
|
|
463
|
+
"insightMatch": "Creatives should match inventory screen specs",
|
|
464
|
+
"insightApproved": "Approved creatives are ready for delivery",
|
|
465
|
+
"insightSkip": "You can skip this step and add creatives later",
|
|
466
|
+
"tipDragDrop": "Drag creatives from Content Hub to assign",
|
|
467
|
+
"tipResolution": "Ensure correct resolution for each screen type"
|
|
468
|
+
},
|
|
469
|
+
"summary": {
|
|
470
|
+
"title": "Review & Submit",
|
|
471
|
+
"subtitle": "Review all line item details before submission.",
|
|
472
|
+
"description": "Review your line item configuration",
|
|
473
|
+
"lineItemDetails": "Line Item Details",
|
|
474
|
+
"name": "Name",
|
|
475
|
+
"untitledLineItem": "Untitled Line Item",
|
|
476
|
+
"flightDates": "Flight Dates",
|
|
477
|
+
"budget": "Budget",
|
|
478
|
+
"goal": "Goal",
|
|
479
|
+
"pacing": "Pacing",
|
|
480
|
+
"dailyCap": "Daily Cap",
|
|
481
|
+
"hourlyCap": "Hourly Cap",
|
|
482
|
+
"notSet": "Not set",
|
|
483
|
+
"targeting": "Targeting",
|
|
484
|
+
"noTargetingSet": "No targeting set",
|
|
485
|
+
"noTargetingDesc": "No targeting criteria configured. The line item will target all audiences.",
|
|
486
|
+
"ageGroups": "Age Groups",
|
|
487
|
+
"genders": "Genders",
|
|
488
|
+
"incomeGroups": "Income Groups",
|
|
489
|
+
"interests": "Interests",
|
|
490
|
+
"venueTypes": "Venue Types",
|
|
491
|
+
"geofencing": "Geofencing",
|
|
492
|
+
"location": "location",
|
|
493
|
+
"locations": "locations",
|
|
494
|
+
"signals": "Signals",
|
|
495
|
+
"inventories": "Inventories",
|
|
496
|
+
"screen": "screen",
|
|
497
|
+
"screens": "screens",
|
|
498
|
+
"noInventoriesSelected": "No inventories selected.",
|
|
499
|
+
"totalScreens": "Total Screens",
|
|
500
|
+
"resolutions": "Resolutions",
|
|
501
|
+
"selectedScreens": "Selected Screens",
|
|
502
|
+
"more": "more",
|
|
503
|
+
"creatives": "Creatives",
|
|
504
|
+
"creative": "creative",
|
|
505
|
+
"noCreativesAssigned": "No creatives assigned. You can add creatives after creating the line item.",
|
|
506
|
+
"estimatedReach": "Estimated Reach",
|
|
507
|
+
"totalBudget": "Total Budget",
|
|
508
|
+
"assignedCreatives": "Assigned Creatives",
|
|
509
|
+
"targetingSettings": "Targeting Settings",
|
|
510
|
+
"reviewDetails": "Review Details",
|
|
511
|
+
"scheduleSettings": "Schedule Settings"
|
|
512
|
+
}
|
|
513
|
+
},
|
|
514
|
+
"geofencing": {
|
|
515
|
+
"upload": {
|
|
516
|
+
"selectCountry": "Select Country",
|
|
517
|
+
"selectCountryPlaceholder": "Select a country",
|
|
518
|
+
"uploadCsvFile": "Upload CSV File",
|
|
519
|
+
"dragDropCsv": "Drag and drop a CSV file here or",
|
|
520
|
+
"browse": "browse",
|
|
521
|
+
"supportedFormat": "Supported format: CSV files only",
|
|
522
|
+
"uploadSuccess": "Locations uploaded successfully!",
|
|
523
|
+
"uploading": "Uploading...",
|
|
524
|
+
"uploadLocations": "Upload Locations"
|
|
525
|
+
},
|
|
526
|
+
"locations": {
|
|
527
|
+
"selectedLocations": "Selected Locations",
|
|
528
|
+
"manageLocations": "Manage your targeted locations",
|
|
529
|
+
"searchPlaceholder": "Search locations...",
|
|
530
|
+
"includeAll": "Include all locations",
|
|
531
|
+
"noLocationsAdded": "No locations added yet",
|
|
532
|
+
"noLocationsMatch": "No locations match your search",
|
|
533
|
+
"importLocations": "Import Locations",
|
|
534
|
+
"locationsAdded": "{{count}} location added",
|
|
535
|
+
"locationsAdded_plural": "{{count}} locations added",
|
|
536
|
+
"deleteLocation": "Delete Location",
|
|
537
|
+
"deleteConfirmation": "Are you sure you want to delete this location? This action cannot be undone.",
|
|
538
|
+
"cancel": "Cancel",
|
|
539
|
+
"delete": "Delete",
|
|
540
|
+
"limitReached": "Limit reached",
|
|
541
|
+
"addUpToPois": "Add up to 5 POIs",
|
|
542
|
+
"addPoi": "Add POI"
|
|
543
|
+
},
|
|
544
|
+
"map": {
|
|
545
|
+
"loading": "Loading map...",
|
|
546
|
+
"searchLocations": "Search locations...",
|
|
547
|
+
"targetRadius": "Target Radius",
|
|
548
|
+
"toggleFullscreen": "Toggle fullscreen",
|
|
549
|
+
"deleteLocation": "Delete Location",
|
|
550
|
+
"deleteConfirmation": "Are you sure you want to delete this location? This action cannot be undone.",
|
|
551
|
+
"selectedLocation": "Selected Location",
|
|
552
|
+
"locationsSelected": "locations selected",
|
|
553
|
+
"included": "Included",
|
|
554
|
+
"tools": {
|
|
555
|
+
"drawPoint": "Draw Point",
|
|
556
|
+
"drawRectangle": "Draw Rectangle",
|
|
557
|
+
"drawCircle": "Draw Circle",
|
|
558
|
+
"drawLine": "Draw Polygon",
|
|
559
|
+
"deleteSelected": "Delete Selected",
|
|
560
|
+
"toggleTerrain": "Toggle Terrain",
|
|
561
|
+
"toggleLayers": "Toggle Layers",
|
|
562
|
+
"streets": "Streets",
|
|
563
|
+
"satellite": "Satellite",
|
|
564
|
+
"outdoors": "Outdoors",
|
|
565
|
+
"light": "Light",
|
|
566
|
+
"dark": "Dark"
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
},
|
|
570
|
+
"scheduleGrid": {
|
|
571
|
+
"selectDaysOfSchedule": "Select days of schedule",
|
|
572
|
+
"selectAllDays": "Select all days",
|
|
573
|
+
"duration": "Duration",
|
|
574
|
+
"spotsPerLoop": "Spots/loop",
|
|
575
|
+
"spotsPerHour": "Spots/hour",
|
|
576
|
+
"scheduleGrids": "Schedule Grids",
|
|
577
|
+
"selectAll": "Select All",
|
|
578
|
+
"deselectAll": "Deselect All",
|
|
579
|
+
"dateHours": "Date/Hours"
|
|
580
|
+
},
|
|
581
|
+
"scheduleEditor": {
|
|
582
|
+
"editSchedule": "Edit Schedule: {{name}}",
|
|
583
|
+
"scheduleDate": "Schedule Date",
|
|
584
|
+
"selectScheduleDateRange": "Select schedule date range",
|
|
585
|
+
"withinLineItemDates": "Within line item dates: {{start}} - {{end}}",
|
|
586
|
+
"selectDaysOfSchedule": "Select days of schedule",
|
|
587
|
+
"selectAllDays": "Select all days",
|
|
588
|
+
"scheduleGrids": "Schedule Grids",
|
|
589
|
+
"selectAll": "Select All",
|
|
590
|
+
"deselectAll": "Deselect All",
|
|
591
|
+
"dateHours": "Date/Hours",
|
|
592
|
+
"saveSchedule": "Save Schedule",
|
|
593
|
+
"cancel": "Cancel",
|
|
594
|
+
"showingDays": "Showing {{count}} days. Scroll to view all dates.",
|
|
595
|
+
"presets": {
|
|
596
|
+
"businessHours": "Business Hours",
|
|
597
|
+
"nightlife": "Nightlife",
|
|
598
|
+
"weekdaySchedule": "Weekday Schedule",
|
|
599
|
+
"weekendFocus": "Weekend Focus",
|
|
600
|
+
"allDay": "24/7",
|
|
601
|
+
"custom": "Custom"
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
"scheduleManager": {
|
|
605
|
+
"scheduleXOfY": "Schedule {{current}} of {{total}}",
|
|
606
|
+
"addSchedule": "Add schedule",
|
|
607
|
+
"editSchedule": "Edit schedule",
|
|
608
|
+
"deleteSchedule": "Delete schedule",
|
|
609
|
+
"scheduleDates": "Schedule Dates",
|
|
610
|
+
"scheduleDays": "Schedule Days",
|
|
611
|
+
"hours": "Hours",
|
|
612
|
+
"default": "Default",
|
|
613
|
+
"weekday": "Weekday",
|
|
614
|
+
"weekend": "Weekend",
|
|
615
|
+
"custom": "Custom"
|
|
616
|
+
},
|
|
617
|
+
"forecast": {
|
|
618
|
+
"title": "Campaign Forecast",
|
|
619
|
+
"estImpressions": "Est. Impressions",
|
|
620
|
+
"estReach": "Est. Reach",
|
|
621
|
+
"avgFrequency": "Avg. Frequency",
|
|
622
|
+
"estAdPlays": "Est. Ad Plays",
|
|
623
|
+
"sovPercent": "SOV %",
|
|
624
|
+
"avgCpm": "Avg. CPM",
|
|
625
|
+
"avgEcpm": "Avg. eCPM",
|
|
626
|
+
"totalCost": "Total Cost",
|
|
627
|
+
"sotPercent": "SOT %"
|
|
628
|
+
},
|
|
629
|
+
"planner": {
|
|
630
|
+
"owner": "Owner:",
|
|
631
|
+
"impressions": "Impressions",
|
|
632
|
+
"reach": "Reach",
|
|
633
|
+
"frequency": "Frequency",
|
|
634
|
+
"cpmRate": "CPM Rate",
|
|
635
|
+
"ecpm": "eCPM",
|
|
636
|
+
"adPlays": "Ad Plays",
|
|
637
|
+
"screens": "Screens",
|
|
638
|
+
"poi": "POI",
|
|
639
|
+
"sot": "SOT",
|
|
640
|
+
"dailyPlays": "{{count}} plays/day",
|
|
641
|
+
"estimatedCost": "Est. Cost",
|
|
642
|
+
"viewDetails": "View Details",
|
|
643
|
+
"expandDetails": "Expand details",
|
|
644
|
+
"collapseDetails": "Collapse details",
|
|
645
|
+
"smartRecommendation": "Smart {{score}}%",
|
|
646
|
+
"fitnessScoreCard": "Fitness Score Card",
|
|
647
|
+
"scores": {
|
|
648
|
+
"budgetRelevance": "Budget Relevance",
|
|
649
|
+
"campaignGoalMatch": "Campaign Goal Match",
|
|
650
|
+
"geographyRelevance": "Geography Relevance",
|
|
651
|
+
"audienceRelevance": "Audience Relevance",
|
|
652
|
+
"brandCategoryRelevance": "Brand Category Relevance",
|
|
653
|
+
"inventoryQuality": "Inventory Quality",
|
|
654
|
+
"timeAlignment": "Time Alignment",
|
|
655
|
+
"measureConfidence": "Measure Confidence",
|
|
656
|
+
"availabilityWindow": "Availability Window"
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
}
|