diff --git a/apps/picsa-apps/extension-app-native/android/app/build.gradle b/apps/picsa-apps/extension-app-native/android/app/build.gradle
index b97d58fe6..4dab4ab38 100644
--- a/apps/picsa-apps/extension-app-native/android/app/build.gradle
+++ b/apps/picsa-apps/extension-app-native/android/app/build.gradle
@@ -6,8 +6,8 @@ android {
applicationId "io.picsa.extension"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 3018000
- versionName "3.18.0"
+ versionCode 3019000
+ versionName "3.19.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions {
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
diff --git a/apps/picsa-apps/extension-app/src/app/app-routing.module.ts b/apps/picsa-apps/extension-app/src/app/app-routing.module.ts
index 9b26e66b6..89595dc6a 100644
--- a/apps/picsa-apps/extension-app/src/app/app-routing.module.ts
+++ b/apps/picsa-apps/extension-app/src/app/app-routing.module.ts
@@ -3,6 +3,7 @@ import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { BudgetToolModule } from '@picsa/budget/src/app/app.module-embedded';
import { ClimateToolModule } from '@picsa/climate/src/app/app.module-embedded';
+import { CropProbabilityToolModule } from '@picsa/crop-probability/src/app/app.module-embedded';
import { MonitoringToolModule } from '@picsa/monitoring/src/app/app.module-embedded';
import { OptionsToolModule } from '@picsa/option/src/app/app.module-embedded';
import { ResourcesToolModule } from '@picsa/resources/src/app/app.module-embedded';
@@ -24,6 +25,13 @@ const routes: Routes = [
(mod) => mod.ClimateToolModule
),
},
+ {
+ path: 'crop-probability',
+ loadChildren: () =>
+ import('@picsa/crop-probability/src/app/app.module-embedded').then(
+ (mod) => mod.CropProbabilityToolModule
+ ),
+ },
{
path: 'monitoring',
loadChildren: () =>
@@ -81,6 +89,7 @@ const routes: Routes = [
imports: [
RouterModule.forRoot(routes),
ClimateToolModule.forRoot({ urlPrefix: 'climate' }),
+ CropProbabilityToolModule.forRoot({ urlPrefix: 'crop-probability' }),
BudgetToolModule.forRoot({ urlPrefix: 'budget' }),
MonitoringToolModule.forRoot({ urlPrefix: 'monitoring' }),
OptionsToolModule.forRoot({ urlPrefix: 'option' }),
diff --git a/apps/picsa-tools/crop-probability-tool/project.json b/apps/picsa-tools/crop-probability-tool/project.json
index 7d501d387..3ebf9b85b 100644
--- a/apps/picsa-tools/crop-probability-tool/project.json
+++ b/apps/picsa-tools/crop-probability-tool/project.json
@@ -31,7 +31,7 @@
{
"type": "initial",
"maximumWarning": "500kb",
- "maximumError": "1mb"
+ "maximumError": "2mb"
},
{
"type": "anyComponentStyle",
diff --git a/apps/picsa-tools/crop-probability-tool/src/app/app-routing.module.ts b/apps/picsa-tools/crop-probability-tool/src/app/app-routing.module.ts
new file mode 100644
index 000000000..036d1c674
--- /dev/null
+++ b/apps/picsa-tools/crop-probability-tool/src/app/app-routing.module.ts
@@ -0,0 +1,26 @@
+import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
+import { NgModule } from '@angular/core';
+
+export const ROUTES_COMMON: Routes = [
+ {
+ path: '',
+ loadChildren: () =>
+ import('./pages/home/home.module').then((m) => m.HomeModule),
+ title: 'Crop Probability',
+ },
+];
+/** Routes only registered in standalone mode */
+const ROUTES_STANDALONE: Routes = [{ path: '**', redirectTo: '' }];
+
+/*******************************************************************
+ * Standalone Version
+ ******************************************************************/
+@NgModule({
+ imports: [
+ RouterModule.forRoot([...ROUTES_COMMON, ...ROUTES_STANDALONE], {
+ preloadingStrategy: PreloadAllModules,
+ }),
+ ],
+ exports: [RouterModule],
+})
+export class AppRoutingModule {}
diff --git a/apps/picsa-tools/crop-probability-tool/src/app/app.component.html b/apps/picsa-tools/crop-probability-tool/src/app/app.component.html
index 5cf4ab0de..d5e086097 100644
--- a/apps/picsa-tools/crop-probability-tool/src/app/app.component.html
+++ b/apps/picsa-tools/crop-probability-tool/src/app/app.component.html
@@ -1 +1,4 @@
-
+
diff --git a/apps/picsa-tools/crop-probability-tool/src/app/app.component.ts b/apps/picsa-tools/crop-probability-tool/src/app/app.component.ts
index c9cd048a2..ff514cb1a 100644
--- a/apps/picsa-tools/crop-probability-tool/src/app/app.component.ts
+++ b/apps/picsa-tools/crop-probability-tool/src/app/app.component.ts
@@ -1,10 +1,19 @@
import { Component } from '@angular/core';
@Component({
- selector: 'picsa-root',
+ // eslint-disable-next-line @angular-eslint/component-selector
+ selector: 'picsa-crop-probability-tool',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
- title = 'picsa-tools-crop-probability-tool';
+ title = 'picsa-crop-probability';
}
+
+@Component({
+ // eslint-disable-next-line @angular-eslint/component-selector
+ selector: 'picsa-crop-probability-tool',
+ template: '',
+})
+// eslint-disable-next-line @angular-eslint/component-class-suffix
+export class AppComponentEmbedded extends AppComponent {}
diff --git a/apps/picsa-tools/crop-probability-tool/src/app/app.module-embedded.ts b/apps/picsa-tools/crop-probability-tool/src/app/app.module-embedded.ts
new file mode 100644
index 000000000..904893807
--- /dev/null
+++ b/apps/picsa-tools/crop-probability-tool/src/app/app.module-embedded.ts
@@ -0,0 +1,53 @@
+import { ModuleWithProviders, NgModule } from '@angular/core';
+import { Router, RouterModule } from '@angular/router';
+import { PicsaTranslateService } from '@picsa/shared/modules';
+
+import { registerEmbeddedRoutes } from '@picsa/utils';
+
+import { APP_COMMON_IMPORTS } from './app.module';
+import { AppComponentEmbedded } from './app.component';
+import { ROUTES_COMMON } from './app-routing.module';
+
+export class EmbeddedConfig {
+ /** Path app routed through, e.g. 'budget' */
+ urlPrefix: string;
+}
+
+/*******************************************************************
+ * Routes
+ ******************************************************************/
+@NgModule({
+ imports: [RouterModule.forChild([])],
+})
+export class EmbeddedRoutingModule {
+ constructor(router: Router, embeddedConfig: EmbeddedConfig) {
+ registerEmbeddedRoutes(ROUTES_COMMON, router, embeddedConfig.urlPrefix);
+ }
+}
+
+/*******************************************************************
+ * Module
+ ******************************************************************/
+@NgModule({
+ declarations: [AppComponentEmbedded],
+ imports: [...APP_COMMON_IMPORTS, EmbeddedRoutingModule],
+ bootstrap: [AppComponentEmbedded],
+})
+export class BaseModule {
+ // ensure translate has been initiated
+ constructor(public translate: PicsaTranslateService) {}
+}
+
+/** Use to import directly into another app via lazy-loading */
+@NgModule()
+export class CropProbabilityToolModule {
+ static forRoot(config: EmbeddedConfig): ModuleWithProviders {
+ return {
+ ngModule: BaseModule,
+ providers: [
+ PicsaTranslateService,
+ { provide: EmbeddedConfig, useValue: config },
+ ],
+ };
+ }
+}
diff --git a/apps/picsa-tools/crop-probability-tool/src/app/app.module.ts b/apps/picsa-tools/crop-probability-tool/src/app/app.module.ts
index de7ee2cf1..080e8ee56 100644
--- a/apps/picsa-tools/crop-probability-tool/src/app/app.module.ts
+++ b/apps/picsa-tools/crop-probability-tool/src/app/app.module.ts
@@ -1,27 +1,50 @@
-import { NgModule } from '@angular/core';
+import {
+ BrowserAnimationsModule,
+ NoopAnimationsModule,
+} from '@angular/platform-browser/animations';
import { BrowserModule } from '@angular/platform-browser';
-import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { HttpClientModule } from '@angular/common/http';
+import { NgModule } from '@angular/core';
+
+import {
+ PicsaDbModule,
+ PicsaTranslateModule,
+ PicsaTranslateService,
+} from '@picsa/shared/modules';
+import { PicsaCommonComponentsModule } from '@picsa/components';
import { AppComponent } from './app.component';
-import { RouterModule } from '@angular/router';
-import { appRoutes } from './app.routes';
-import { CropProbabilityTableComponent } from './components/crop-probability-table/crop-probability-table.component';
+import { AppRoutingModule } from './app-routing.module';
import { CropProbabilityMaterialModule } from './components/material.module';
-import { CropProbabilityTableHeaderComponent } from './components/crop-probability-table-header/crop-probability-table-header.component';
+/** Core imports only required when running standalone */
+const StandaloneImports = [
+ AppRoutingModule,
+ BrowserModule,
+ BrowserAnimationsModule,
+ NoopAnimationsModule,
+ PicsaTranslateModule.forRoot(),
+];
+
+/** Common imports used in both standalone and embedded formats */
+export const APP_COMMON_IMPORTS = [
+ HttpClientModule,
+ CropProbabilityMaterialModule,
+ PicsaTranslateModule,
+ PicsaDbModule.forRoot(),
+ PicsaCommonComponentsModule,
+];
+
+/*******************************************************************
+ * Standalone Version
+ ******************************************************************/
@NgModule({
- declarations: [
- AppComponent,
- CropProbabilityTableComponent,
- CropProbabilityTableHeaderComponent,
- ],
- imports: [
- BrowserModule,
- BrowserAnimationsModule,
- RouterModule.forRoot(appRoutes, { initialNavigation: 'enabledBlocking' }),
- CropProbabilityMaterialModule,
- ],
- providers: [],
+ declarations: [AppComponent],
+ imports: [...StandaloneImports, ...APP_COMMON_IMPORTS],
bootstrap: [AppComponent],
+ schemas: [],
})
-export class AppModule {}
+export class AppModule {
+ // ensure translate service initialised
+ constructor(public translate: PicsaTranslateService) {}
+}
diff --git a/apps/picsa-tools/crop-probability-tool/src/app/app.routes.ts b/apps/picsa-tools/crop-probability-tool/src/app/app.routes.ts
deleted file mode 100644
index 8762dfe2c..000000000
--- a/apps/picsa-tools/crop-probability-tool/src/app/app.routes.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { Route } from '@angular/router';
-
-export const appRoutes: Route[] = [];
diff --git a/apps/picsa-tools/crop-probability-tool/src/app/components/components.module.ts b/apps/picsa-tools/crop-probability-tool/src/app/components/components.module.ts
new file mode 100644
index 000000000..1cb445681
--- /dev/null
+++ b/apps/picsa-tools/crop-probability-tool/src/app/components/components.module.ts
@@ -0,0 +1,20 @@
+import { NgModule } from '@angular/core';
+
+import { CropProbabilityTableComponent } from './crop-probability-table/crop-probability-table.component';
+import { CropProbabilityMaterialModule } from './material.module';
+import { CropProbabilityTableHeaderComponent } from './crop-probability-table-header/crop-probability-table-header.component';
+import { FormsModule } from '@angular/forms';
+import { CommonModule } from '@angular/common';
+
+const components = [
+ CropProbabilityTableComponent,
+ CropProbabilityTableHeaderComponent,
+];
+
+@NgModule({
+ imports: [CommonModule, FormsModule, CropProbabilityMaterialModule],
+ exports: components,
+ declarations: components,
+ providers: [],
+})
+export class CropProbabilityToolComponentsModule {}
diff --git a/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.component.html b/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.component.html
new file mode 100644
index 000000000..5cf4ab0de
--- /dev/null
+++ b/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.component.html
@@ -0,0 +1 @@
+
diff --git a/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.component.scss b/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.component.scss
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.component.spec.ts b/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.component.spec.ts
new file mode 100644
index 000000000..7d04862b9
--- /dev/null
+++ b/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.component.spec.ts
@@ -0,0 +1,22 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { HomeComponent } from './home.component';
+
+describe('HomeComponent', () => {
+ let component: HomeComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [HomeComponent],
+ }).compileComponents();
+
+ fixture = TestBed.createComponent(HomeComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.component.ts b/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.component.ts
new file mode 100644
index 000000000..17d922722
--- /dev/null
+++ b/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.component.ts
@@ -0,0 +1,8 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'picsa-home',
+ templateUrl: './home.component.html',
+ styleUrls: ['./home.component.scss'],
+})
+export class HomeComponent {}
diff --git a/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.module.ts b/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.module.ts
new file mode 100644
index 000000000..9043717ea
--- /dev/null
+++ b/apps/picsa-tools/crop-probability-tool/src/app/pages/home/home.module.ts
@@ -0,0 +1,27 @@
+import { NgModule } from '@angular/core';
+import { Route, RouterModule } from '@angular/router';
+
+import { CropProbabilityToolComponentsModule } from '../../components/components.module';
+import { HomeComponent } from './home.component';
+import { CommonModule } from '@angular/common';
+import { PicsaTranslateModule } from '@picsa/shared/modules';
+
+const routes: Route[] = [
+ {
+ path: '',
+ component: HomeComponent,
+ },
+];
+
+@NgModule({
+ imports: [
+ CommonModule,
+ CropProbabilityToolComponentsModule,
+ RouterModule.forChild(routes),
+ PicsaTranslateModule,
+ ],
+ exports: [],
+ declarations: [HomeComponent],
+ providers: [],
+})
+export class HomeModule {}
diff --git a/apps/picsa-tools/crop-probability-tool/src/index.html b/apps/picsa-tools/crop-probability-tool/src/index.html
index 4a723acc7..1879d349d 100644
--- a/apps/picsa-tools/crop-probability-tool/src/index.html
+++ b/apps/picsa-tools/crop-probability-tool/src/index.html
@@ -8,6 +8,6 @@
-
+