From 9b434abf555b36bbdb51729742f70f25b7abd5a3 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Fri, 1 Nov 2019 10:52:01 +0100 Subject: [PATCH] Remove Eclipse 3 support. --- dep/org.argeo.suite.platform/.gitignore | 2 - .../META-INF/.gitignore | 1 - dep/org.argeo.suite.platform/bnd.bnd | 1 - dep/org.argeo.suite.platform/pom.xml | 48 -- dep/pom.xml | 1 - org.argeo.suite.apps.web/.classpath | 5 - org.argeo.suite.apps.web/.gitignore | 1 - org.argeo.suite.apps.web/.project | 22 - org.argeo.suite.apps.web/META-INF/.gitignore | 1 - .../META-INF/spring/osgi.xml | 29 - .../META-INF/spring/ui-commons.xml | 51 -- .../META-INF/spring/ui-people.xml | 128 ---- .../META-INF/spring/ui.xml | 94 --- org.argeo.suite.apps.web/bnd.bnd | 17 - org.argeo.suite.apps.web/pom.xml | 20 - .../theme/argeo-classic/argeo-classic.css | 149 ---- .../theme/argeo-classic/documents-classic.css | 116 --- .../icons/actions/deleteSmall.gif | Bin 61 -> 0 bytes .../icons/actions/openCalendar.gif | Bin 257 -> 0 bytes .../theme/argeo-classic/icons/add.gif | Bin 318 -> 0 bytes .../theme/argeo-classic/icons/dashboard.gif | Bin 583 -> 0 bytes .../theme/argeo-classic/icons/delete.gif | Bin 73 -> 0 bytes .../theme/argeo-classic/icons/favicon.ico | Bin 1150 -> 0 bytes .../argeo-classic/icons/fs/addFolder.gif | Bin 343 -> 0 bytes .../argeo-classic/icons/fs/bookmarkFolder.png | Bin 557 -> 0 bytes .../theme/argeo-classic/icons/fs/delete.png | Bin 249 -> 0 bytes .../argeo-classic/icons/fs/downloadFolder.png | Bin 496 -> 0 bytes .../theme/argeo-classic/icons/fs/file.gif | Bin 577 -> 0 bytes .../theme/argeo-classic/icons/fs/folder.gif | Bin 219 -> 0 bytes .../argeo-classic/icons/fs/fsBrowser.png | Bin 496 -> 0 bytes .../theme/argeo-classic/icons/fs/open.png | Bin 340 -> 0 bytes .../theme/argeo-classic/icons/fs/rename.png | Bin 619 -> 0 bytes .../argeo-classic/icons/fs/shareFolder.png | Bin 510 -> 0 bytes .../theme/argeo-classic/icons/fs/upload.png | Bin 335 -> 0 bytes .../icons/people/contacts/Icon-credit.txt | 17 - .../icons/people/contacts/facebook.png | Bin 437 -> 0 bytes .../icons/people/contacts/fax.png | Bin 637 -> 0 bytes .../icons/people/contacts/googleplus.png | Bin 3088 -> 0 bytes .../icons/people/contacts/home.png | Bin 192 -> 0 bytes .../icons/people/contacts/impp.png | Bin 350 -> 0 bytes .../icons/people/contacts/link.png | Bin 285 -> 0 bytes .../icons/people/contacts/linkedin.png | Bin 479 -> 0 bytes .../icons/people/contacts/mail_black.png | Bin 1391 -> 0 bytes .../icons/people/contacts/mobile.png | Bin 225 -> 0 bytes .../icons/people/contacts/myspace.png | Bin 484 -> 0 bytes .../icons/people/contacts/phone_vintage.png | Bin 425 -> 0 bytes .../icons/people/contacts/reddit.png | Bin 646 -> 0 bytes .../icons/people/contacts/skype.png | Bin 632 -> 0 bytes .../icons/people/contacts/socialmedia.png | Bin 263 -> 0 bytes .../icons/people/contacts/telephone.png | Bin 642 -> 0 bytes .../icons/people/contacts/twitter.png | Bin 878 -> 0 bytes .../icons/people/contacts/xing.png | Bin 437 -> 0 bytes .../icons/people/misc/primary.gif | Bin 145 -> 0 bytes .../icons/people/misc/primaryNOT.gif | Bin 144 -> 0 bytes .../argeo-classic/icons/people/people.gif | Bin 597 -> 0 bytes .../icons/people/types/company.png | Bin 424 -> 0 bytes .../icons/people/types/person.gif | Bin 310 -> 0 bytes .../theme/argeo-classic/icons/search.png | Bin 306 -> 0 bytes .../theme/argeo-classic/img/logo-argeo.png | Bin 38215 -> 0 bytes .../argeo-classic/maintenance-classic.css | 48 -- .../theme/argeo-classic/people-classic.css | 85 --- org.argeo.suite.apps/.classpath | 5 - org.argeo.suite.apps/.gitignore | 1 - org.argeo.suite.apps/.project | 28 - org.argeo.suite.apps/META-INF/.gitignore | 1 - .../META-INF/spring/backend-services.xml | 43 -- .../META-INF/spring/maintenance-services.xml | 37 - org.argeo.suite.apps/META-INF/spring/osgi.xml | 36 - .../META-INF/spring/workbench-services.xml | 48 -- org.argeo.suite.apps/bnd.bnd | 32 - org.argeo.suite.apps/pom.xml | 34 - org.argeo.suite.web/.classpath | 7 - org.argeo.suite.web/.gitignore | 3 - org.argeo.suite.web/.project | 25 - org.argeo.suite.web/META-INF/.gitignore | 1 - org.argeo.suite.web/bnd.bnd | 7 - org.argeo.suite.web/build.properties | 3 - org.argeo.suite.web/pom.xml | 29 - .../org/argeo/suite/web/DefaultDashboard.java | 99 --- .../org/argeo/suite/web/DefaultMainPage.java | 148 ---- .../org/argeo/suite/web/DynamicHeader.java | 35 - .../suite/web/fs/MyFilesBrowserPage.java | 40 -- org.argeo.suite.workbench.rap/.classpath | 7 - org.argeo.suite.workbench.rap/.gitignore | 2 - org.argeo.suite.workbench.rap/.project | 28 - .../META-INF/.gitignore | 1 - .../META-INF/spring/osgi.xml | 22 - .../META-INF/spring/parts.xml | 38 - .../OSGI-INF/l10n/bundle.properties | 1 - .../OSGI-INF/l10n/bundle_de.properties | 1 - org.argeo.suite.workbench.rap/bnd.bnd | 39 - .../css/headerExt.css | 15 - org.argeo.suite.workbench.rap/icons/more.gif | Bin 177 -> 0 bytes .../icons/upload.gif | Bin 327 -> 0 bytes org.argeo.suite.workbench.rap/img/favicon.ico | Bin 1150 -> 0 bytes .../img/logo-argeo.png | Bin 38215 -> 0 bytes org.argeo.suite.workbench.rap/js/Chart.min.js | 14 - .../js/images/layers-2x.png | Bin 1259 -> 0 bytes .../js/images/layers.png | Bin 696 -> 0 bytes .../js/images/marker-icon-2x.png | Bin 2586 -> 0 bytes .../js/images/marker-icon.png | Bin 1466 -> 0 bytes .../js/images/marker-shadow.png | Bin 618 -> 0 bytes org.argeo.suite.workbench.rap/js/leaflet.css | 624 ---------------- org.argeo.suite.workbench.rap/js/leaflet.js | 9 - org.argeo.suite.workbench.rap/plugin.xml | 129 ---- org.argeo.suite.workbench.rap/pom.xml | 39 - .../org/argeo/suite/workbench/AsUiPlugin.java | 73 -- .../suite/workbench/DashboardPerspective.java | 21 - .../workbench/SuiteWorkbenchException.java | 17 - .../workbench/commands/ImportEntities.java | 670 ------------------ .../suite/workbench/commands/JxlUtils.java | 82 --- .../EntitySingleColumnLabelProvider.java | 88 --- .../parts/AbstractSuiteDashboard.java | 190 ----- .../parts/DefaultDashboardEditor.java | 407 ----------- .../workbench/parts/QuickSearchView.java | 255 ------- .../argeo/suite/workbench/parts/TestView.java | 49 -- .../workbench/rap/AsActionBarAdvisor.java | 12 - .../workbench/rap/AsSecureEntryPoint.java | 72 -- .../workbench/rap/AsWelcomeRedirect.java | 17 - .../suite/workbench/rap/AsWindowAdvisor.java | 43 -- .../workbench/rap/AsWorkbenchAdvisor.java | 38 - pom.xml | 8 - 122 files changed, 4509 deletions(-) delete mode 100644 dep/org.argeo.suite.platform/.gitignore delete mode 100644 dep/org.argeo.suite.platform/META-INF/.gitignore delete mode 100644 dep/org.argeo.suite.platform/bnd.bnd delete mode 100644 dep/org.argeo.suite.platform/pom.xml delete mode 100644 org.argeo.suite.apps.web/.classpath delete mode 100644 org.argeo.suite.apps.web/.gitignore delete mode 100644 org.argeo.suite.apps.web/.project delete mode 100644 org.argeo.suite.apps.web/META-INF/.gitignore delete mode 100644 org.argeo.suite.apps.web/META-INF/spring/osgi.xml delete mode 100644 org.argeo.suite.apps.web/META-INF/spring/ui-commons.xml delete mode 100644 org.argeo.suite.apps.web/META-INF/spring/ui-people.xml delete mode 100644 org.argeo.suite.apps.web/META-INF/spring/ui.xml delete mode 100644 org.argeo.suite.apps.web/bnd.bnd delete mode 100644 org.argeo.suite.apps.web/pom.xml delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/argeo-classic.css delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/documents-classic.css delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/actions/deleteSmall.gif delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/actions/openCalendar.gif delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/add.gif delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/dashboard.gif delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/delete.gif delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/favicon.ico delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/addFolder.gif delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/bookmarkFolder.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/delete.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/downloadFolder.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/file.gif delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/folder.gif delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/fsBrowser.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/open.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/rename.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/shareFolder.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/upload.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/Icon-credit.txt delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/facebook.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/fax.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/googleplus.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/home.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/impp.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/link.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/linkedin.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/mail_black.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/mobile.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/myspace.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/phone_vintage.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/reddit.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/skype.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/socialmedia.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/telephone.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/twitter.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/xing.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/misc/primary.gif delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/misc/primaryNOT.gif delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/people.gif delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/types/company.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/people/types/person.gif delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/icons/search.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/img/logo-argeo.png delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/maintenance-classic.css delete mode 100644 org.argeo.suite.apps.web/theme/argeo-classic/people-classic.css delete mode 100644 org.argeo.suite.apps/.classpath delete mode 100644 org.argeo.suite.apps/.gitignore delete mode 100644 org.argeo.suite.apps/.project delete mode 100644 org.argeo.suite.apps/META-INF/.gitignore delete mode 100644 org.argeo.suite.apps/META-INF/spring/backend-services.xml delete mode 100644 org.argeo.suite.apps/META-INF/spring/maintenance-services.xml delete mode 100644 org.argeo.suite.apps/META-INF/spring/osgi.xml delete mode 100644 org.argeo.suite.apps/META-INF/spring/workbench-services.xml delete mode 100644 org.argeo.suite.apps/bnd.bnd delete mode 100644 org.argeo.suite.apps/pom.xml delete mode 100644 org.argeo.suite.web/.classpath delete mode 100644 org.argeo.suite.web/.gitignore delete mode 100644 org.argeo.suite.web/.project delete mode 100644 org.argeo.suite.web/META-INF/.gitignore delete mode 100644 org.argeo.suite.web/bnd.bnd delete mode 100644 org.argeo.suite.web/build.properties delete mode 100644 org.argeo.suite.web/pom.xml delete mode 100644 org.argeo.suite.web/src/org/argeo/suite/web/DefaultDashboard.java delete mode 100644 org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java delete mode 100644 org.argeo.suite.web/src/org/argeo/suite/web/DynamicHeader.java delete mode 100644 org.argeo.suite.web/src/org/argeo/suite/web/fs/MyFilesBrowserPage.java delete mode 100644 org.argeo.suite.workbench.rap/.classpath delete mode 100644 org.argeo.suite.workbench.rap/.gitignore delete mode 100644 org.argeo.suite.workbench.rap/.project delete mode 100644 org.argeo.suite.workbench.rap/META-INF/.gitignore delete mode 100644 org.argeo.suite.workbench.rap/META-INF/spring/osgi.xml delete mode 100644 org.argeo.suite.workbench.rap/META-INF/spring/parts.xml delete mode 100644 org.argeo.suite.workbench.rap/OSGI-INF/l10n/bundle.properties delete mode 100644 org.argeo.suite.workbench.rap/OSGI-INF/l10n/bundle_de.properties delete mode 100644 org.argeo.suite.workbench.rap/bnd.bnd delete mode 100644 org.argeo.suite.workbench.rap/css/headerExt.css delete mode 100644 org.argeo.suite.workbench.rap/icons/more.gif delete mode 100644 org.argeo.suite.workbench.rap/icons/upload.gif delete mode 100644 org.argeo.suite.workbench.rap/img/favicon.ico delete mode 100644 org.argeo.suite.workbench.rap/img/logo-argeo.png delete mode 100644 org.argeo.suite.workbench.rap/js/Chart.min.js delete mode 100644 org.argeo.suite.workbench.rap/js/images/layers-2x.png delete mode 100644 org.argeo.suite.workbench.rap/js/images/layers.png delete mode 100644 org.argeo.suite.workbench.rap/js/images/marker-icon-2x.png delete mode 100644 org.argeo.suite.workbench.rap/js/images/marker-icon.png delete mode 100644 org.argeo.suite.workbench.rap/js/images/marker-shadow.png delete mode 100644 org.argeo.suite.workbench.rap/js/leaflet.css delete mode 100644 org.argeo.suite.workbench.rap/js/leaflet.js delete mode 100644 org.argeo.suite.workbench.rap/plugin.xml delete mode 100644 org.argeo.suite.workbench.rap/pom.xml delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/AsUiPlugin.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/DashboardPerspective.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/SuiteWorkbenchException.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/commands/ImportEntities.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/commands/JxlUtils.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/internal/EntitySingleColumnLabelProvider.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/AbstractSuiteDashboard.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/QuickSearchView.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/TestView.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsActionBarAdvisor.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsSecureEntryPoint.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWelcomeRedirect.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWindowAdvisor.java delete mode 100644 org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWorkbenchAdvisor.java diff --git a/dep/org.argeo.suite.platform/.gitignore b/dep/org.argeo.suite.platform/.gitignore deleted file mode 100644 index d6c033c..0000000 --- a/dep/org.argeo.suite.platform/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/target -/org.argeo.suite.platform-maven.target diff --git a/dep/org.argeo.suite.platform/META-INF/.gitignore b/dep/org.argeo.suite.platform/META-INF/.gitignore deleted file mode 100644 index 4854a41..0000000 --- a/dep/org.argeo.suite.platform/META-INF/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/MANIFEST.MF diff --git a/dep/org.argeo.suite.platform/bnd.bnd b/dep/org.argeo.suite.platform/bnd.bnd deleted file mode 100644 index 991aa1a..0000000 --- a/dep/org.argeo.suite.platform/bnd.bnd +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dep/org.argeo.suite.platform/pom.xml b/dep/org.argeo.suite.platform/pom.xml deleted file mode 100644 index 11705fd..0000000 --- a/dep/org.argeo.suite.platform/pom.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - 4.0.0 - - org.argeo.suite - dep - 2.1.15-SNAPSHOT - .. - - org.argeo.suite.platform - Argeo Suite Platform - jar - - - - org.argeo.suite - org.argeo.suite.apps - 2.1.15-SNAPSHOT - - - org.argeo.suite - org.argeo.suite.workbench.rap - 2.1.15-SNAPSHOT - - - org.argeo.suite - org.argeo.suite.web - 2.1.15-SNAPSHOT - - - - - org.argeo.connect - org.argeo.connect.platform - ${version.argeo-connect} - pom - - - - - org.argeo.tp.payment - com.stripe - - - - - - diff --git a/dep/pom.xml b/dep/pom.xml index 3d9925a..e08ba8a 100644 --- a/dep/pom.xml +++ b/dep/pom.xml @@ -11,7 +11,6 @@ Argeo Suite Dependencies pom - org.argeo.suite.platform org.argeo.suite.dep.e4.rap org.argeo.suite.dep.e4.rcp diff --git a/org.argeo.suite.apps.web/.classpath b/org.argeo.suite.apps.web/.classpath deleted file mode 100644 index dc7ce67..0000000 --- a/org.argeo.suite.apps.web/.classpath +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/org.argeo.suite.apps.web/.gitignore b/org.argeo.suite.apps.web/.gitignore deleted file mode 100644 index b83d222..0000000 --- a/org.argeo.suite.apps.web/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target/ diff --git a/org.argeo.suite.apps.web/.project b/org.argeo.suite.apps.web/.project deleted file mode 100644 index 542a4e8..0000000 --- a/org.argeo.suite.apps.web/.project +++ /dev/null @@ -1,22 +0,0 @@ - - - org.argeo.suite.apps.web - - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.pde.PluginNature - - diff --git a/org.argeo.suite.apps.web/META-INF/.gitignore b/org.argeo.suite.apps.web/META-INF/.gitignore deleted file mode 100644 index 4854a41..0000000 --- a/org.argeo.suite.apps.web/META-INF/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/MANIFEST.MF diff --git a/org.argeo.suite.apps.web/META-INF/spring/osgi.xml b/org.argeo.suite.apps.web/META-INF/spring/osgi.xml deleted file mode 100644 index 2ef3e0d..0000000 --- a/org.argeo.suite.apps.web/META-INF/spring/osgi.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/org.argeo.suite.apps.web/META-INF/spring/ui-commons.xml b/org.argeo.suite.apps.web/META-INF/spring/ui-commons.xml deleted file mode 100644 index 9f579b7..0000000 --- a/org.argeo.suite.apps.web/META-INF/spring/ui-commons.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/org.argeo.suite.apps.web/META-INF/spring/ui-people.xml b/org.argeo.suite.apps.web/META-INF/spring/ui-people.xml deleted file mode 100644 index 6c9c382..0000000 --- a/org.argeo.suite.apps.web/META-INF/spring/ui-people.xml +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/org.argeo.suite.apps.web/META-INF/spring/ui.xml b/org.argeo.suite.apps.web/META-INF/spring/ui.xml deleted file mode 100644 index e1963c1..0000000 --- a/org.argeo.suite.apps.web/META-INF/spring/ui.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a:link, a:visited { color: #333333; text-decoration:none; } - a:hover { text-decoration:underline; } - - - - - -]]> - - - - - - - - - - - - - - - - - a:link, a:visited { color: #333333; text-decoration:none; } - a:hover { text-decoration:underline;} - -]]> - - - - - - - - - - theme/argeo-classic/argeo-classic.css - theme/argeo-classic/people-classic.css - theme/argeo-classic/documents-classic.css - theme/argeo-classic/maintenance-classic.css - - - - - - - diff --git a/org.argeo.suite.apps.web/bnd.bnd b/org.argeo.suite.apps.web/bnd.bnd deleted file mode 100644 index d8a3588..0000000 --- a/org.argeo.suite.apps.web/bnd.bnd +++ /dev/null @@ -1,17 +0,0 @@ -Require-Capability: cms.datamodel; filter:="(name=people)",\ -cms.datamodel; filter:="(name=documents)",\ -cms.datamodel; filter:="(name=tracker)" - -Import-Package:\ -javax.jcr.nodetype,\ -javax.jcr.security,\ -org.argeo.cms,\ -org.argeo.connect,\ -org.argeo.activities,\ -org.argeo.connect.resources,\ -org.argeo.connect.ui,\ -org.argeo.cms.spring,\ -org.argeo.eclipse.spring,\ -org.argeo.node,\ -org.argeo.util,\ -* \ No newline at end of file diff --git a/org.argeo.suite.apps.web/pom.xml b/org.argeo.suite.apps.web/pom.xml deleted file mode 100644 index 6f41e42..0000000 --- a/org.argeo.suite.apps.web/pom.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - 4.0.0 - - org.argeo.suite - argeo-suite - 2.1.15-SNAPSHOT - .. - - org.argeo.suite.apps.web - Default Web Deployment - jar - - - org.argeo.suite - org.argeo.suite.web - 2.1.15-SNAPSHOT - - - diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/argeo-classic.css b/org.argeo.suite.apps.web/theme/argeo-classic/argeo-classic.css deleted file mode 100644 index 71fc1b7..0000000 --- a/org.argeo.suite.apps.web/theme/argeo-classic/argeo-classic.css +++ /dev/null @@ -1,149 +0,0 @@ -/* For reference, Argeo colors -Orange: #f6712e; -Blue: #00294b; */ - -/* TEXT STYLES */ -.text_title { - font: bold 26px sans-serif; -} - -.text_title_box { - padding: 20px; -} - -.text_h1 { - font: bold 24px sans-serif; -} - -.text_h1_box { - padding: 10px 10px 5px; -} - -.text_h2 { - font: bold italic 20px serif; -} - -.text_h2_box { - padding: 0px 15px 10px; -} - -.text_h3 { - font: bold 18px sans-serif; -} - -.text_h3_box { - padding: 0px 20px 10px; -} - -.text_default { - font: 18px sans-serif; -} - -.text_default_box { - padding: 0px 10px 10px; -} - -.text_pre { - font: 16px monospace; - background-color: inherit; -} - -.text_pre_box { - padding: 10px; - border: 1px dashed gray; - background-color: #ababab -} - -.text_pre_container { - padding: 0px 10px 10px; -} - -.text_quote { - font: italic 22px serif; - text-shadow: 2px 3px 3px #ababab; - background-color: inherit; -} - -.text_quote_box { - padding: 10px; - background-color: #d6d6d6 -} - -.text_quote_container { - padding: 20px 50px 20px 80px; -} - -/* TEXT */ -.text_styled_tools_dialog { - border: 1px solid #00294b; - padding: 10px 5px; -} - -.text_styled_composite { - /*border: 1px solid red;*/ - -} - -.text_section { -/* border: 1px solid green; */ -} - -.text_paragraph { -/* border: 1px solid blue; */ -} - -.text_editor { - border: 2px outset #00294b; -} - -/* CMS ICONS */ -.cms_icon_delete { - background-image: url(theme/argeo-classic/icons/delete.gif); - border: none; -} - -/* CMS */ -.cms_header { - background-color: #00294b; - height: 30px; -} - -.cms_link { - text-decoration: underline; -} - -.cms_link:hover { - text-decoration: none; - color: black; -} - -a { - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -.cms_header-logo { - padding: 5px; -} - -.cms_user_menu-link, -.cms_menu_link { - color: white; - font: 15px Helvetica, Verdana, sans-serif; - padding: 10px; - text-decoration: none; -} - -.cms_user_menu-link:hover, -.cms_menu_link:hover { - color: #ededed; - text-decoration: underline; -} - -.cms_user_menu { - border: 1px solid #00294b; - padding: 10px 5px; -} \ No newline at end of file diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/documents-classic.css b/org.argeo.suite.apps.web/theme/argeo-classic/documents-classic.css deleted file mode 100644 index 8721244..0000000 --- a/org.argeo.suite.apps.web/theme/argeo-classic/documents-classic.css +++ /dev/null @@ -1,116 +0,0 @@ -/** -Argeo Blue: #00294b -*/ - - - -/** Same styles are also provided by the workbench CSS. TODO: enhance single sourcing */ - - -/* Breadcrumb ***/ -Button.breadCrumb_btn { - border: 1px solid #f4f6f7; - border-radius: 3px; - padding: 2px 2px 2px 2px; - background-color: transparent; - background-repeat: no-repeat; - animation: hoverOut 500ms ease-out; - cursor: pointer; - font-color: #00294b; - text-decoration: none; -} - -Button.breadCrumb_btn:hover { - text-decoration: underline; -} - -/* Documents lists context menu */ -.contextMenu_box { - border: 0px solid #fde2d5; - padding: 0px; - box-shadow: 2px 2px 5px #fde2d5; -} - -Button[PUSH][FLAT].createFolder_btn { - background-image: url( theme/argeo-classic/icons/fs/addFolder.gif); -} - -Button[PUSH][FLAT].shareFolder_btn { - background-image: url( theme/argeo-classic/icons/fs/shareFolder.png); -} - -Button[PUSH][FLAT].bookmarkFolder_btn { - background-image: url( theme/argeo-classic/icons/fs/bookmarkFolder.png); -} - -Button[PUSH][FLAT].downloadFolder_btn { - background-image: url( theme/argeo-classic/icons/fs/downloadFolder.png); -} - -Button[PUSH][FLAT].delete_btn, -Button[PUSH][FLAT].deleteBookmark_btn { - background-image: url( theme/argeo-classic/icons/fs/delete.png); -} - -Button[PUSH][FLAT].rename_btn, -Button[PUSH][FLAT].renameBookmark_btn { - background-image: url( theme/argeo-classic/icons/fs/rename.png); -} - - -Button[PUSH][FLAT].uploadFiles_btn { - background-image: url( theme/argeo-classic/icons/fs/upload.png); -} - -Button[PUSH][FLAT].open_btn { - background-image: url( theme/argeo-classic/icons/fs/open.png); -} - - -Button[PUSH][FLAT].createFolder_btn, -Button[PUSH][FLAT].shareFolder_btn, -Button[PUSH][FLAT].bookmarkFolder_btn, -Button[PUSH][FLAT].downloadFolder_btn, -Button[PUSH][FLAT].delete_btn, -Button[PUSH][FLAT].rename_btn, -Button[PUSH][FLAT].uploadFiles_btn, -Button[PUSH][FLAT].open_btn, -Button[PUSH][FLAT].deleteBookmark_btn, -Button[PUSH][FLAT].renameBookmark_btn { - border: 0px solid white; - border-left: 10px solid transparent; - border-radius: 0px; - padding: 4px 5px 4px 24px; - background-color: transparent; - background-repeat: no-repeat; - background-position: left; - animation: hoverOut 500ms ease-out; - cursor: pointer; -} - -Button[PUSH][FLAT].createFolder_btn:hover, -Button[PUSH][FLAT].shareFolder_btn:hover, -Button[PUSH][FLAT].bookmarkFolder_btn:hover, -Button[PUSH][FLAT].downloadFolder_btn:hover, -Button[PUSH][FLAT].delete_btn:hover, -Button[PUSH][FLAT].rename_btn:hover, -Button[PUSH][FLAT].uploadFiles_btn:hover, -Button[PUSH][FLAT].open_btn:hover, -Button[PUSH][FLAT].deleteBookmark_btn:hover, -Button[PUSH][FLAT].renameBookmark_btn:hover { - background-color: #fef0ea; -} - -Button[PUSH][FLAT].createFolder_btn:pressed, -Button[PUSH][FLAT].shareFolder_btn:pressed, -Button[PUSH][FLAT].bookmarkFolder_btn:pressed, -Button[PUSH][FLAT].shareFolder_btn:pressed, -Button[PUSH][FLAT].downloadFolder_btn:pressed, -Button[PUSH][FLAT].delete_btn:pressed, -Button[PUSH][FLAT].rename_btn:pressed, -Button[PUSH][FLAT].uploadFiles_btn:pressed, -Button[PUSH][FLAT].open_btn:pressed, -Button[PUSH][FLAT].deleteBookmark_btn:pressed, -Button[PUSH][FLAT].renameBookmark_btn:pressed{ - background-color: #fde2d5; -} \ No newline at end of file diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/actions/deleteSmall.gif b/org.argeo.suite.apps.web/theme/argeo-classic/icons/actions/deleteSmall.gif deleted file mode 100644 index d7c5c117dacf4ec38f256361d6cccd0cc29c046e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61 zcmZ?wbhEHb||iAOPCrW^vOuQLk=J%qwd4=1O00!n0u3>^x^cGyStvl?|z$BgPt|7u%9kWio{r2uS%?n$W zH{=8}@RhlH3AA;|cn660O^_BA6`eeFN=dbisO21qc{AH*&s`$HuzbbJRjZdPGFSru D{MTIf diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/add.gif b/org.argeo.suite.apps.web/theme/argeo-classic/icons/add.gif deleted file mode 100644 index 252d7ebcb8c74d6e5de66ef0eb8856622a0e9d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmZ?wbhEHb6krfwxXQp_S{7na6>d=(Ze15;Qy1mX8t2lT^ zHOHgY9FJamJZkN+sI|wVk6ueSb}ixP)r4bLfn?%^+sU^crQUj&`rv8W|Ns9PC;*B- zSr{1@v>9|jW`O*}z!rUAYJrE2RKG`JYNRKhwpQrnor{(Ph`sVEnyR2Kc;c~(o$WdP zMb0Wl6K^dQ-0hgs;=hf;IH{B?(Il6LneC_)9y7e)Ys}kzgCpT_NZrqsBx;3M1 zYfjfr^Oy#Un1=ILZ(q4_=gaqB7ao7P|N7gr_usES|9bEBw__J?ox6Jb!jmu8UwnP~ z{`vgb@~XsXFsG`()# z)P`jC{<4g|#s1N)K&pC%tK(wV?&6UV6I0Yt5EGW+>Ef1>5|vq# o@xi~D$(7S6WrD(k7KTu@XyPb%`)o0|0bQ6Wss+ diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/favicon.ico b/org.argeo.suite.apps.web/theme/argeo-classic/icons/favicon.ico deleted file mode 100644 index 6e6a050224d967e89af5faa3113edd5151a0d97e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmaizUr19?9LKMfy;;6g4^d7Nvk7BR!$Lzd%|8vbw3eYPacqfVE{a)hWNDI340Y1H zbDNephnjA4e@XmPbd@;=6yb2n#bd@xm>Of4u@l%=lON3)%uazq0Y|E z6Mqw7Y$Oti4F-d@si`T@S{RK+=yW=$)oN5%SEI495gi>Juvjc3xw*M}WHMO{(_$=H zEZHJsX&!ajYGhw)hC<4E-r3|sA2Q_{czX^ zP<6KlNBVvuaR5jnW39vq$l8{0PI&=^1qIM*wJ@1XFNobuex+m>8yiF2<6$J&h~uNi z`iH155&xN9rp^pyVLl870~#6{vWVpafdF{B6G_(JQI@#0hi{<1{Rr)rK{P&FLaJ>; zn3LE6rNM@lmV0nIokPSg`=@=l%)i_6oATr{3bN8sQd$a)MuWE2R@fbbIA#AXtV!lK z;C}9a*Xw;x{942}ft3DVTYM7vm-c;yvi1Q=l?5m-FGqcSJzC8@I6bh6k#R5l{s0)u zY}6CN!TxB@%y(+<7bLR0Dc|E=E4Wyth4OqMR4NskZs|ew0CrX)zwGkOZ1HmaC@L#1 zp`v>h$>LtJoE4@pGBYwzR8)kfrY2B*f$C+MH2C?j7YU+&xp4-0XU{-WQ-k~M9VoKA z72;rL!eTn9>q7G#1Ke&m^Usq>BcUKv!=Ix0Q_Oi+>qsL9#l^+AQdWYDn?qoG!ZZ|= z&r?e`sLmNL-K?L9v_~fc7~o?3K7?6XU+^<+wSzi7hn3?0-)STT3># HlM~oK1ZrJU diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/addFolder.gif b/org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/addFolder.gif deleted file mode 100644 index d3f43d9775346f8c3bc3e7f781a4bfe852d42cc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 343 zcmZ?wbhEHb6krfwxT?jlYr5LjNy>k}oL|=^|Nm0SzrXK)y_|Qr)9ml(^YbdjmNrRk zE>Qb_f9jiy-T!ZOY@Mh)vqbp+>n)or4gNe|{QGY6|6A?fl zjZ!=6j2<7X-BD|Fb5r5B`_ukkEd770^Z)D3|DP`T59EG5^Z(Z?ku4)and9)6>(=d)mgLW n@W?m|DJ@#Om`_y7SyOTKnl&senl74~w`|?$w_~TLBZD;nnW}>Q diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/bookmarkFolder.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/bookmarkFolder.png deleted file mode 100644 index 8bb2361071fd53d06bcff2f9d0a53cc94dda6466..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 557 zcmV+|0@D47P)NklJa&zHWO#S{Qd%gIg<*%ESy;d)Li?2`J(p!hYoD~zjxP) z|3o^yU>DH#fAgnT{9m@P?f=33>w%hA{@=V|7GVRnFAguAHL>vjk~vNP7Xe+ccvj8- z-P@P^-?Cx$|5eL+@Eh>zgqqFE6IvhltRA-;kmUwkS^V^S`1^@p%?fw7v)7<}m-`4{*#{ga8`2Xc8lmF*d z8@*pYGsF$MzmF-ayg8}+{Liz#|9?Nv2WqbU|L;{4Fbo|2zc^|1=iC~@_s5nQYoKWQ zdR^{57~fF3|MO|W{r8t#-@iDn`|as5<9APv7{9-}*WkmoE&89&tu=gup&1vrzu!RM v{&o$8o7?qmuC6yQIKSRNVgGys0c>gkB(6{-NEP-;00000NkvXXu0mjf*5)jq diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/delete.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/delete.png deleted file mode 100644 index 9150e40d3dbca70d2af97231eb52798d929a06da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XW_!9ghE&{2N{|S7uwYi4jlgH&fW`br{u$T_Ph#1)x^2Ia%vU44OwvwPu?{D;7L?j@Kd?3q4l() tx=Llttc8I!f+tnES4^A2F2}$k!Eo0nRLXF>oCVOC44$rjF6*2UngFN7QcnN? diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/downloadFolder.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/downloadFolder.png deleted file mode 100644 index 3f56074f7817b41c52e978b6d405b1d8a60cb9a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496 zcmVTL+@c706Xc<2?0}cp_ zh%g*Ia)jaSn>U1l!~v@TTwGiXrR5b2>KYnwiSEu0hQkLBFnD=*fbqGrXBh6@xr1Q< zBQ)UN@7}db;PK-}3`xl;V2MYM9x)`w$1x}r3zvl!E{&^PlisvBy=hZM)24#1 z9pw}ERe;dm+Gz(r{{H{r&;OtQ{(t!Q|KtDv-~Rvq{{R1v|Nnpf|Nra%|KI=r|M~y_ z-~a!`S@y+Q4#n9HCE1Rpxvu3o4n>&`#aWIO`R*0@-c7}JwfXjydCp}yuI;7P)2fXp zRG4;`S*&W)UD#kSyUuV%wZWWvqeU&IE7~m{9cy0KrnROYC}Z5GBYybE5lN#yT~U6Xo$Ra(3=+D1dScga+z`_1)0SMcgq@9vNlLp4}NkYYq1|o9u5f+1+4#yxaU}r`gdi^F!@s8_V^#R2r-=)!$xYw6WY^bAj4_ zFkpZI#h)yU3=A?1Iv@d%oeZoI3hI3+ne)<@xV>1B`(fEuK?V+&Lu+13upU?-aN>~% z+leJYmV$v?7gmUP30m^pSR?jZz)|4A1_>U)M7|eWr0xntihbB2lP8!e@?(!&ykzXZ OhQ@l`mR1!-25SJE4`R#! diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/fsBrowser.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/fs/fsBrowser.png deleted file mode 100644 index 3f56074f7817b41c52e978b6d405b1d8a60cb9a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496 zcmVTL+@c706Xc<2?0}cp_ zh%g*Ia)jaSn>U1l!~v@TTwGiXrR5b2>KYnwiSEu0hQkLBFnD=*fbqGrXBh6@xr1Q< zBQ)UN@7}db;PK-}3`xl;V2MYM9x)`w$1x}y&?bphMvy$p-9f5Z2h!BK!Wqk(R%^8pQsS zWB^F>?k1V{_YXJ!{rltA|Gn+XKX=rL{zt~UTjcKUs1xzVFkok;u*S{?>G$^zHT?bi z{mOq_`03dx-*+_0JU}sETbYo|wtA`eclVV3{rmCYe?oXmmB@b-12$HOs%)u}`1a&z z_5VMw))K^Qv>Q%@q=_u?FJ0VnLe?Wn$kR z?@svt=U&_Y9SsU!*A)x>N5&gUML(`97LLamjjMo$tSb@w_Hb9+|22g||H(>7tMUbH mRu_tVSyLqZmMjB?1^@s?(bqz=W00000Qmg$qzT3_?;|TVF=kELB^T78>OH&0XLzO<0p0KBcBYz{(nv2NL zEux~1zwU>q(dqbv6twE|GHJ;L-(%SF5Sui~C^74{ykqc|A+7Wh z5esGXd$gLVx=a+LQLp%Aq>p9WHJGX8Xv<5~`zYBqSj1{;E?tHU66jQX{0ch!u}5ds zC8UW`2zDbacEsC~EB_6nYbG>Y&G!#_cKS;hs7U9V-zUFKz??QL1uYE?epNO1{czl0boj06_x^D%utD%Ub^Dl{V)qRyiN4 z+F190&y6kr)0Y(dm8*1`ghNxa14t7(mZ^05oU^U)f6>nJ{~4R||4UXlyuxEZ>tnF( zlFQ?hzz<_dGLeK@s0OT*J zN{7=@6%HR{D(w$R6gVg#8vsoQ!4S0$62PdO0t~MQa#cx%+_4vDG?vwN{qO9b^}n#94J94q0mG|uZ|(n_tp)!j z%kAG_H6Wp(fn(RchMczB>w;nw~JQ3-UpxZ0JiKm-2ZHDFhR*#G;7nt$wVm4AS4 z2#Nta>qNtMH_N`*Q78Hz8SiaZ{`vREt^fB9HvQP$Ecak5k|8Jt?5LOc_~zE~KYzbp z`Hu_VJy7>!N0SWP5EKKpREhlm`|%(_d}nvbkL?Z84^}mZ@}L;7sY3YwpI2)M;wML{ z{%om{e6zkmKmgT%a?$S}F17yu^JErI{CI!vpUssLZ#EYTYhZX`eX&sfhEkF5>xzZ` zBjX(n3Sa-+Yy1CrSHho-<>GJFKs6H`jcW>p{y*Fq_h)?>s%GL1C=!0VwpirdnjBQk hL>qt)P;3Cz006}fBvFScNA3Us002ovPDHLkV1lc)n+pH{ diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/Icon-credit.txt b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/Icon-credit.txt deleted file mode 100644 index 4e60cf3..0000000 --- a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/Icon-credit.txt +++ /dev/null @@ -1,17 +0,0 @@ -Some of the icons have been downloaded from http://www.fatcow.com/free-icons. -They are licenced under Creative Commons Attribution 3.0 License. - -These icons were as from October 3rd, 2013 the following: -fax.png -mail_black.png -phone-vintage.png -telephone.png - -Some of the icons have been downloaded from http://somerandomdude.com/work/iconic/. -They are licenced under Creative Commons Attribution 3.0 License. - -These icons were as from October 15th, 2013 the following: -socialmedia.png (former chat_alt_stroke_16x16.png) -home.png (former home_16x16.png) -mobile.png (former iphone_12x16.png) -link.png (former link_16x16.png) diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/facebook.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/facebook.png deleted file mode 100644 index 8e7e44cdb1a0167ad755d6d1d4c234a450a0d625..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggKE@p0FZns`>Z=flro-U3d8t115 zS+6_fz_aDLv{{hSMphvi_KO!3TPGD?2rd*52`rcv)7ZwQDJ#e;u<0|`V$uCg&-2P` zva56KWccn?|I+naE^O|*`S#mMDwU5J3_eTibR7~3oTQ@kX&P@s2U~OFRxyXz>$8&W zUuV6_Fq!4I{Fji^jT|#AgZWHp`|iJg{L$jt&bxUNx5l@h-gL&&-6i&V?)KZ;a;x{= zD`#YQUps3V*ZJqg^PVeRGU=^K=sY2j+;cI_iDUCkom-Fg&OiU0;nb!Yp4y!;t5$Vw zV~WrbW0=Aw;FNKD+bXT+cT$Wtp3zad7{+k=>8AVd*N15*Wsmqbyf9ot{UUAwS|5_E=SnL;> dw(j*W{>A-mGn^kqaR9@V!PC{xWt~$(697Plv9kaG diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/fax.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/fax.png deleted file mode 100644 index 791f511c53bd8eab4637ab4347fbeabe7642e006..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 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 e3hom1|K~5EC@wR%R=;ro0000y7D~$ diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/home.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/home.png deleted file mode 100644 index 16834e31b8960c16fb4ae90b15e6a2003a6735e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xl001;Ln>}1B^=;?=4=?ru;in?$ob_i#wXhnF8gdzd@<|y z!WkOQ6HNEBC$XzovagWv19H~0Co$@XaX36R;BhQBQ*5|wy+n$E&4)*XX_mCZg=psY ltZpXHC#{*DB+kGh!5~v&dTEK5{u7{W44$rjF6*2UngBo?JT(9S diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/impp.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/impp.png deleted file mode 100644 index b334f91027fe3e895db0c307a5f179bc4fa760fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UA7>k44ofy`glX(f`a29w(7Bet# z3xhBt!>l ze|P<~X+fI=HcfZl;B)!&+%m31Td$uhiP*g zHr}|#@yBJKdA?iYlZom#)+a>IIrID>D~r*MDuHYPCLVy1vPG{u>HKMwU}9FhFhFz`N<5S={o;wEY2oRT77xjQg^u-G7sl3Hgf1T hExanlqi@H=!|*OQjho+mtsl@U44$rjF6*2UngHj3Ze#!e diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/linkedin.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/linkedin.png deleted file mode 100644 index d86dc0e47c8a3c7d403f22b700fea03882992975..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmV<50U-W~P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^(; z3lt!waCpoB00Cb~L_t(2&yAAJs=_c3g=dl)#VQC26$;(@7H$P!zz6b0y6wj2kW>*| zD@EO?h}czQNhWuZd;I~gdR9ru$C;TkxY=x4trmQz%jJT3o+n8ng!uToEX&boaV?*1A%u zFvea0L=;6)v)PnV4hDnM>E!!<6h&EJ$2rW|C1XIV~lf7 zMAd55mElU@oFn4XShdywfQZ&w2fG(z%!{Ul5R=KI(P;R-AIGsVMhI~{9+M>5ZnsZO z|0crNZntyuU9Z>9iinoW!_N9X;1{{!pH Vq&}+gt?d8+002ovPDHLkV1jnV&)Wb1 diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/mail_black.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/mail_black.png deleted file mode 100644 index 790f7503f613f502f24fca98f7cbe4e0b230941d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1391 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh*)icxGNo zet9uiy|1s8XI^nhVqS8pr;Du;&;-5A%oHmp6K6+fS3@&X6K5wwLswuhxwyC)8yL7b zni?7znw!G(y5uL9=BDPA!1Sgd^qS+;3rY&P1wfl!Qj0RnQd8WD@^clyUbf1_?G_W9 z=0WwQ;C72CPQCg-$LND17Ac}(Lcr7mV#1RxkONQnsd>QEUIa|m2DX!B7#J8Id%8G= zRNPt;9Gfj1C}6w0dU9Tq@3d_j`+0R;odj7lTh=yhn|f^8BWGpTfC-O|PyWWgCG+Mq zt+jR`%^Y=K*rznvJG_|vU$u5k{>{DRd((YBEojPMV|#aQPVu`pXJXWSgTEx}{W1}4 zdpO;q?|sJF|D7)?<&0*YF?ap+aQ60$?YAe~FO=DF?SD#J6;_h*w>3`C7V1d z>sk9&*ThWv$A^!bL(5rHu3B9QIkMHP;!g(eMZcB|Yo?uDi;k(O9aI1K>8PBUxs-*S zW#j8ISA~>ho_FikB&3@Q=~zDT5*D7kAVMdhCQ0b`dcJ`5*8??Ju64`us~nRtJTmF> zY$k8%55*FiQw>aPTCTJIo-up2tD;8N=Q9$;M+Ch4I5wQHxOn1e&5wQkSFcu|h?j8L zT-ot*_2ox4#$f%AOSBEjT7K5ZO<%t3!@pSJhi7{3eE4#5mc{uVLwBBy%Z$rZnYKAT z-DuR;XO~#9B*opNq4kzh*7oUDzDo?<&-`WQZ#^s|Vx8OGa{2Q59c6#n^!obB{=L60 zT3%3GCYQc;TEg>u-5VXuM+`T0tDUHrqW|Iec@`Rzadvz>vN;b7D8CF(5KIYC9Br>mdKI;Vst E09b?rOaK4? diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/mobile.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/mobile.png deleted file mode 100644 index 08ac54b9bccd2955bf7df2b708bcf6bad4f7a3a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggKE@o~a&8~0h?|?#yo-U3d7N?UF z99S87czC``N=W>BeBk@StPM>JHc}T2!<-Y$<{w|Ez@Wum%*l2j+e$3_kqLvmz=A6b zJf%K7B29tJD-syE`!bYHv+{2^VeVvTRnc&^!AVF*@5uCPo~O<+1c)2WaeVUWF3>Ut MPgg&ebxsLQ0K6hXm;e9( diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/myspace.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/myspace.png deleted file mode 100644 index beb04fcadbfe6ad1f6232df75fe6ddb70f38fea7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 484 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^(; z3l%h`v7PV$00Cr4L_t(2&y7+$uEH=7Tsuy}M~WzjlqOOnL>FkF;sWFj+$0Tk(&Z4` zfI2w>3N;c!g2ojI0_S7!D=hIu1ia^Jy)&~r8XFxBhhDD-|2yaN8D&|vTCFrq`;%Q& z)nc(A0HA5w7l9B0AtZ#5SNxU%0FTFma}EHU^Wktf9*;4`06-dSLda+|O4D>QnV6=T zB*|^j;5ZKFoHS;;uIsvPzu&hkO9(NYPHo$kXt&$Vvh2kYLMTnsJkR4emewhy z`~6;`*XtEaTZ*D!j4{SSi1~bO7>4J0+wGQ8dORLCn@yhQjIs54t*R=blrERccDpTS zgkfkH#&c&~*Q%<@x-3gdDUll#MUh1#gC|=WeiJJp4^M1br0NU+#mSuf1P!vVu ad;b8d-key8ZoA?D0000Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*z-5hydo z7!>6I00AvYL_t(2&xO&kOVn`~$MM(m>vxy^eyI>RJE+hRv;-wldW%agS8gpre?ZOk z4>Yvp8bO0&;Gl#dBq+28!G$2n1qr#R=in8;ufrW=OMa#gJiMRh`S6M4|B5MT)B{i4 zRWRaMf<2$DS`INeAFH>`x~}kJKsD_6=7aA{$Hb?n&1<%8IDag(+|%}EGuJFEIdW5> zr!?ZHx{ftl9@ET+wAJ)v7R?R#4X^anbcF2Gx_!eMX6<_9p+hqoYW96ZxW)MMiG?vU z?kjO(%eF7N@AqEzV@loW@{YIXo_yxDZ8K1mX+n~p9ZK7T4Q~O%We$ZUnO6i5*M|ZT`+eBu)I_q TFfU`e00000NkvXXu0mjfH1@b7 diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/reddit.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/reddit.png deleted file mode 100644 index 0eac7b8075218ff919e7615ccd8ebc713308ef07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 646 zcmV;10(t$3P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^(; z3l%7`u))6o00IU{L_t(2&yAA3PV+DnhHb}0l{-}3U}h*wrB-Ur10aM%T}2&8X{^RkQxP8q^Hu#ep20en-}fBb=iu3F#u!6? zBS{j<7|ZAL2qBE|?m))?ptrjKV@&rGXx+|fn&$WSHz5QewB2sCjqd9-06+-&`1p8u zcsM*fe0+RF2({a7N+|%4U2Y9Rh!6q*_xJagmzPPBv|6o`lau%Ncdh(27=~e*CZ+V? z;2;b`$8jj7K@gmup9eu;7)GU1`Mt>J=Vzf%a9!8)JjPfQMaRd-rBW%&ve|4lpU)X% zQp%&Fql=4+)oMjC#*|Xe^UCEirPQ)4{Vf>dTCIi+5R(NYgY7LjVAPD2n1Z zR!ZI7-HpfNIF32zh;tstF#t51O#t}%`s#E#zVAOhJzZU0y}Y~tK%>!6O8sYu<9NAT z*6VfGbvfs^x3|4s@9phvI-Q=KoxQ%kN-5XtHRl|2&WpvOZUSS>w(a3?D5a#75<*T- zPrKdjX0uUBDW#$)`Zeh8VvGqPxm<2HENPl%S*D+)loCQvgpg87uNY&cl$3IRz~CQR gMuiaQ&j=xY0QLVymP_{0Z~y=R07*qoM6N<$f*vp+SpWb4 diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/skype.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/skype.png deleted file mode 100644 index e31a04d2344ce0f14861b48051543106937f988a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 zcmV-;0*C#HP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^(; z3l=DuosxV200H<(L_t(2&yA8j&oMz1hR>Xtu@YfBAqvqDl|)E1bRtoy{0N0gukjE3 z3MGjkLLzF7LV_p|vW*0rT^2j@7W2mQl+Rtw*L~(XA7sDZ>$(nq5FzAxy)s?br_(8= zR0sh8;+Le9Qp)e*^?FsSRVJm>G>tJPgm7K=@pyQ>-asJWx~^dui0JWnlnoK3lnekU zrHH7amP#eR->(>?l*{FEwOVn`5s?rA08GIlqT@K_a+z~}KA(@rqu=jOBoe7q3IMj- zEv1xF3IGTIh=_%?JRZN@ZnN2}-EKD; zjb5(@0GUk2G)>OA$K&~*gQ{RS9In-B^?F?qQc5?Qjk>ig>u@-jrb!54-_9F`VcT{j z5@|M@i^YO-p3mn2U_PI#bno~3k3oU8TCGZ@lFep|#UcPa9*@~V0000N)()Lhl+r^ISj#n;zmUaDAR5ksr*j}%YFuC=YEV!QS z3Hu%Gfq2kd) zjvitYy&8$e3M#FQKj%uYcvd`ltq3C2s|ck?AQ!JzgcR|j;-!LHvk~;*p-REOQ^lXn z?u_rvZj!1!sI$!O?9BVV`M&p_Xt&$flO(yUwT2J^j$>b$ojp5`zZeG7YPEEuagxBi z0W2@yMHEF4X~;G(VJ@;P>*=|wrM7@6X61{v4;l>wOVsy8nv(m0Sj*q`d5c)wC4ST)heQXp9pO8KO&%MEM#tZz4G9pQLwjCCIz8U z5CqS0>EZ5KF&}Y1 zGC7c54m%fi1Mgkj+J6;c7~*E(4)9jt!;LOn*BvF1+tSp5I?!y8yh7f?*ZFmm{qs7l z!gpMwh64&z1vzF96UnW-+39o&+>Kd}R172Ba+~(kXA59zoJ`%b-5QB33 c@AxUe0N-KmGkuCZ)Bpeg07*qoM6N<$f_9@P)Bpeg diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/twitter.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/contacts/twitter.png deleted file mode 100644 index 1023e5be20572e07427885bfcb6b64459efa41c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 878 zcmV-!1CjiRP) zjJ&_U-{0R~Utgp2i-EYTOITT6US3^Y9UB|t5sam!rAQMwI(me0>m91jMAH#ax! zc3T!3jmE;l0&$ef<>BGs|B3*9CMPGKpPyT;*4IC2cVv2c`WF-#wiJDQd=Ltz#UctT zO0k9MMxfCR833h=b;y~Tn$oOem$xq+vBj_lz*7OhoanEwujD2W2-xn2(rh+MrCBi? zMSxVR)w{bp+nqQuF)!4>f9S zV;NlIk`nqaZV1hfI5env+}g&AcL_t)3g7Z(?q ztQt$eH=9j1+rk)DcOD-fISH^LCkzVYUR_<0Bh5j;FRc)ebN z;4_(J64vqY@!8p#$Kw%5^StByNG6kedwXP6!_WbEja@LPYiNOY4O@nR^qp!q?4pOm zVNRr-!g|=8*TZ_eFa@(*n ztFZ(yt~jkC%uy9wX`mIaGnov`NE4~yqe@wE#c4rxSci&zAJ8?hxx2f&v9STOCnqOh zDAF~7E38w*`}_OWV(r>!U{orVot>RfC`3MHW@ftH8(gk>y`D;?oR+B>17=D1#l=PM z`-G(3QKMP&;pA@8V_JLzY;A1~@OHhuy*;?=`(FVD05Qig7|nBa&j0`b07*qoM6N<$ Ef_F%f8vp z{AZv5urU0mNI%ekfBy)p`uCq9MC}>_5Bnd63$Mf(F1(h&V*toSfB!;dS-_Nm=u3ti zm-}FL#9|c&WIY&OkQWkSm>v}cW=GDN#qjaR4~87O>tOzZQz{HEK5>9-fvaZ%n}&oR zzIns&@#ilFTTM-dN>5J)50wWDD&pV38rNKqXFyla1a<)$zI6W{*mNruNroK9I}qDX zsxW-{!Hl7ni4kZDGM4A#W2g!Y1Z&!Jp^<@y<1fR7#{vvHuSzhWs|8_}|7c-Q;pYdY zr|#Lq@aX+}F#E-OHirKoCo?i)L=YoSax%_@0E)I1$;W`M_`{I0z?k9AJAMo`7=eh4 zzkFw6SaVJWtT4y%HdZxEphSWXFE}F4@ZuvogMs`f1{IOd81jrfad88i7nuJ4``-Y> f3}oU4fB*vkWkLX|Fv&j100000NkvXXu0mjfs1mfm diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/misc/primary.gif b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/misc/primary.gif deleted file mode 100644 index 1965b847b1c388e1d9f02eae326d3b315b604d8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmV;C0B-+BNk%w1VGsZi0J8u9|MCF%;8ywCPyEUZ`O`!C%QpJVHu=mq`@InVzd!NA zYxkQN_mmy-Wg`Fo{{R30A^8LW000gEEC2ui01yBW000C&(8)=wy_mLKRa4vqG(hM8 zOu&>^<1&nZFz!|{38Cu=gN+5lfy7}976V^qwIL}jD4V0Px+J8MM#9AHnj!!@f!RKq diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/misc/primaryNOT.gif b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/misc/primaryNOT.gif deleted file mode 100644 index acb026872f83b3becff092aec342bd3d4f83956d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmV;B0B`?CNk%w1VGsZi0J8u9sj9}9o2r?etf#HQo1n0tq_v-^<1&nZFz!|{38Cu=gN+5lfs{cF7K2p=wrRkAw26~dN!X+blXh#00027&*g!=9 diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/people.gif b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/people.gif deleted file mode 100644 index d28c326dea2e625abb82b8c862280fbe2f1a7e4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 597 zcmZ?wbhEHb6krfwc*ek>-T+ljue_7{>xtp$SJo0$c(Z|!5 z?OV6+`s!Vm*6g~ta{IYW2d=N%b7{lg%j@@CTD$A~hP{^>rfiHQ$u=Fb4zPWpipG1uV`4SU9xbx6`yOmc#1)5q;QvN3~#!xxNl3Gu@+alEAKQJ zJsS>Z zbJrWP&e|=K0kJ&lQff@G;U=wyQL$-qmW-*N-CKj+I3zq{=3`0~DoF_JI5C4cO)kS> iM}tqVlabCA1K}p`Mk50Q1w#`KR~BKF;7L3z4Aua9TPx#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*z}5dbc+ zm1!;j00AsXL_t(2&t1{KPE&Ch2H@w{Ln~AyOft}<4k(~)2Lrte7jJ@vTX5kXU~uOW z7-1nH(7;ky#Aq1U_*10Xb4q(W4)he_J3o1o?|TEV^(ERc%3AO&0X8#U$`GXfC|Dn( z37GZKjfzVZmu8&)-|#hy1tmRYJw-EK;d6k(qpEqKsjO+*2Ys>FcD9|3z+dP3&UBo) z^<7uZP)*1iy5_{Hf~w%P)K3FH6mu}}O-I|UwvKZT>SA?i4jxn#Eht$~G%s?119wm0 zP-54WT~}Iud84ape8tdviB)B*%9ceg(3a#N({g9ewLRC4B^Je+3OR@^o3dicib+cf zj$~ST#(y|=Z{Ll5LnnS~7^purB;KK+q@nMv#F12MG#@@?6M{%8lA>>Cyyic7`)7g> Sq^79=0000o~msC diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/types/person.gif b/org.argeo.suite.apps.web/theme/argeo-classic/icons/people/types/person.gif deleted file mode 100644 index 90a00147bcb02b6855aa21c532a1ccfa992db5c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmZ?wbhEHb6krfwxXQqw=RZ|1V5&*zbjzr@wlTAuk{7w9FY(G+?v^sgH*b|s=DdWu zZD~#0yBD7gDBG0Nv%jGKK*^*-71NG3%{kFF|CE3E#-Pg0p;ep1Yqmz#ZHsN(kz1OCBW9Gn(60SWa+}gzo||X6OdpAC pniZ}UB2{8+qLvgXp{K+VYbvgzz|tvZD96;vC(6Ls8R^Ji4FH!Gg(Uz0 diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/icons/search.png b/org.argeo.suite.apps.web/theme/argeo-classic/icons/search.png deleted file mode 100644 index 6588de86ba3c4981b19492eb5322f6b21b9834f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmV-20nPr2P)*O41)JQSpYp`y@7M? zqkZOh1C=vI%Of<#h^A>o2to9H&-xzYeB_LjZ*qhaGINP8?)WZ_8iz*{^N)#wLD6z0 zH#NeB#j3#ILRb;j;8()AD(vDo?hRo_c+UNs#Y=zz0OIpn+a diff --git a/org.argeo.suite.apps.web/theme/argeo-classic/img/logo-argeo.png b/org.argeo.suite.apps.web/theme/argeo-classic/img/logo-argeo.png deleted file mode 100644 index f10723040489d0b04bf16bc897be93638373b8a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38215 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 IM6N<$g3k - - - - diff --git a/org.argeo.suite.apps/.gitignore b/org.argeo.suite.apps/.gitignore deleted file mode 100644 index b83d222..0000000 --- a/org.argeo.suite.apps/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target/ diff --git a/org.argeo.suite.apps/.project b/org.argeo.suite.apps/.project deleted file mode 100644 index d71ff76..0000000 --- a/org.argeo.suite.apps/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - org.argeo.suite.apps - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.pde.PluginNature - - diff --git a/org.argeo.suite.apps/META-INF/.gitignore b/org.argeo.suite.apps/META-INF/.gitignore deleted file mode 100644 index 4854a41..0000000 --- a/org.argeo.suite.apps/META-INF/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/MANIFEST.MF diff --git a/org.argeo.suite.apps/META-INF/spring/backend-services.xml b/org.argeo.suite.apps/META-INF/spring/backend-services.xml deleted file mode 100644 index 3fdd310..0000000 --- a/org.argeo.suite.apps/META-INF/spring/backend-services.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/org.argeo.suite.apps/META-INF/spring/maintenance-services.xml b/org.argeo.suite.apps/META-INF/spring/maintenance-services.xml deleted file mode 100644 index d4678f1..0000000 --- a/org.argeo.suite.apps/META-INF/spring/maintenance-services.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/org.argeo.suite.apps/META-INF/spring/osgi.xml b/org.argeo.suite.apps/META-INF/spring/osgi.xml deleted file mode 100644 index de5e38e..0000000 --- a/org.argeo.suite.apps/META-INF/spring/osgi.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/org.argeo.suite.apps/META-INF/spring/workbench-services.xml b/org.argeo.suite.apps/META-INF/spring/workbench-services.xml deleted file mode 100644 index 054a601..0000000 --- a/org.argeo.suite.apps/META-INF/spring/workbench-services.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/org.argeo.suite.apps/bnd.bnd b/org.argeo.suite.apps/bnd.bnd deleted file mode 100644 index 077a108..0000000 --- a/org.argeo.suite.apps/bnd.bnd +++ /dev/null @@ -1,32 +0,0 @@ -Require-Capability: cms.datamodel; filter:="(name=people)",\ -cms.datamodel; filter:="(name=documents)",\ -cms.datamodel; filter:="(name=tracker)" - -Bundle-Activator: org.argeo.suite.workbench.AsUiPlugin -Bundle-SymbolicName: org.argeo.suite.apps;singleton:=true -#Require-Bundle: org.eclipse.core.runtime,\ -# org.eclipse.rap.ui,\ -# org.eclipse.rap.ui.workbench -#Require-Bundle: org.eclipse.core.runtime,\ -#org.eclipse.core.commands - -Import-Package:\ -javax.jcr.nodetype,\ -javax.jcr.security,\ -org.argeo.cms,\ -org.argeo.cms.ui.workbench,\ -org.argeo.cms.ui.workbench.jcr,\ -org.argeo.connect,\ -org.argeo.activities,\ -org.argeo.activities.workbench.parts,\ -org.argeo.documents.workbench.parts,\ -org.argeo.people.workbench.rap.parts,\ -org.argeo.connect.resources,\ -org.argeo.connect.ui,\ -org.argeo.connect.workbench,\ -org.argeo.connect.workbench.util,\ -org.argeo.eclipse.spring,\ -org.argeo.node,\ -org.argeo.suite.workbench.rap,\ -org.argeo.util,\ -* \ No newline at end of file diff --git a/org.argeo.suite.apps/pom.xml b/org.argeo.suite.apps/pom.xml deleted file mode 100644 index b2760e7..0000000 --- a/org.argeo.suite.apps/pom.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - 4.0.0 - - org.argeo.suite - argeo-suite - 2.1.15-SNAPSHOT - .. - - org.argeo.suite.apps - Default Deployment - jar - - - org.argeo.suite - org.argeo.suite.workbench.rap - 2.1.15-SNAPSHOT - - - org.argeo.suite - org.argeo.suite.web - 2.1.15-SNAPSHOT - - - - org.argeo.tp - argeo-tp-rap-e3 - ${version.argeo-tp} - pom - provided - - - - diff --git a/org.argeo.suite.web/.classpath b/org.argeo.suite.web/.classpath deleted file mode 100644 index 191b71a..0000000 --- a/org.argeo.suite.web/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/org.argeo.suite.web/.gitignore b/org.argeo.suite.web/.gitignore deleted file mode 100644 index 016bb39..0000000 --- a/org.argeo.suite.web/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/target -/*.target -/bin/ diff --git a/org.argeo.suite.web/.project b/org.argeo.suite.web/.project deleted file mode 100644 index 69a0922..0000000 --- a/org.argeo.suite.web/.project +++ /dev/null @@ -1,25 +0,0 @@ - - - org.argeo.suite.web - - - - - - org.eclipse.jdt.core.javabuilder - - - - org.eclipse.pde.ManifestBuilder - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.jdt.core.javanature - org.eclipse.pde.PluginNature - - diff --git a/org.argeo.suite.web/META-INF/.gitignore b/org.argeo.suite.web/META-INF/.gitignore deleted file mode 100644 index 4854a41..0000000 --- a/org.argeo.suite.web/META-INF/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/MANIFEST.MF diff --git a/org.argeo.suite.web/bnd.bnd b/org.argeo.suite.web/bnd.bnd deleted file mode 100644 index 70d5711..0000000 --- a/org.argeo.suite.web/bnd.bnd +++ /dev/null @@ -1,7 +0,0 @@ -Import-Package:\ -javax.jcr.nodetype,\ -org.argeo.connect,\ -org.argeo.node,\ -javax.jcr.security,\ -org.eclipse.swt,\ -* diff --git a/org.argeo.suite.web/build.properties b/org.argeo.suite.web/build.properties deleted file mode 100644 index 3166058..0000000 --- a/org.argeo.suite.web/build.properties +++ /dev/null @@ -1,3 +0,0 @@ -source.. = src/ -output.. = bin/ - diff --git a/org.argeo.suite.web/pom.xml b/org.argeo.suite.web/pom.xml deleted file mode 100644 index 172dcbe..0000000 --- a/org.argeo.suite.web/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - 4.0.0 - - org.argeo.suite - argeo-suite - 2.1.15-SNAPSHOT - .. - - org.argeo.suite.web - Web UI - jar - - - org.argeo.connect - org.argeo.people.web - ${version.argeo-connect} - - - - org.argeo.tp - argeo-tp-rap-e4 - ${version.argeo-tp} - pom - provided - - - - diff --git a/org.argeo.suite.web/src/org/argeo/suite/web/DefaultDashboard.java b/org.argeo.suite.web/src/org/argeo/suite/web/DefaultDashboard.java deleted file mode 100644 index d3692fd..0000000 --- a/org.argeo.suite.web/src/org/argeo/suite/web/DefaultDashboard.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.argeo.suite.web; - -import java.util.Map; - -import javax.jcr.Node; -import javax.jcr.RepositoryException; - -import org.argeo.cms.ui.CmsUiProvider; -import org.argeo.cms.util.CmsUtils; -import org.argeo.connect.resources.ResourcesService; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.argeo.people.PeopleException; -import org.argeo.people.PeopleService; -import org.argeo.people.web.parts.PeopleSearchCmp; -import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.SashForm; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; - -/** Default dashboard layout for Argeo Suite */ -public class DefaultDashboard implements CmsUiProvider { - - private ResourcesService resourceService; - private PeopleService peopleService; - private Map peopleIconPaths; - - // Local UI Providers - // private CmsUiProvider orgPage; - - public DefaultDashboard(ResourcesService resourceService, PeopleService peopleService, Map peopleIconPaths) { - this.resourceService = resourceService; - this.peopleService = peopleService; - this.peopleIconPaths = peopleIconPaths; - - // orgPage = new OrgPage(peopleService); - } - - @Override - public Control createUi(Composite parent, Node context) throws RepositoryException { - parent.setLayout(EclipseUiUtils.noSpaceGridLayout()); - SashForm form = new SashForm(parent, SWT.HORIZONTAL); - form.setLayoutData(EclipseUiUtils.fillAll()); - Composite leftPannelCmp = new Composite(form, SWT.NO_FOCUS); - Composite rightPannelCmp = new Composite(form, SWT.NO_FOCUS); - form.setWeights(new int[] { 2, 5 }); - - // A search on the left and the display on the right - populateSearch(leftPannelCmp, context, rightPannelCmp); - populateDefaultDisplay(rightPannelCmp, context); - - return form; - } - - public Viewer populateSearch(Composite parent, Node context, final Composite targetComposite) - throws RepositoryException { - parent.setLayout(EclipseUiUtils.noSpaceGridLayout()); - Composite titleCmp = new Composite(parent, SWT.NO_FOCUS); - titleCmp.setLayoutData(EclipseUiUtils.fillWidth()); - titleCmp.setLayout(new GridLayout()); - Label titleLbl = new Label(titleCmp, SWT.CENTER); - titleLbl.setLayoutData(EclipseUiUtils.fillWidth()); - titleLbl.setText("My Tasks"); - titleLbl.setFont(EclipseUiUtils.getBoldFont(titleCmp)); - - PeopleSearchCmp searchComp = new PeopleSearchCmp(parent, SWT.NO_FOCUS, resourceService, peopleService, peopleIconPaths); - searchComp.populate(context, true); - searchComp.setLayoutData(EclipseUiUtils.fillAll()); - - TableViewer viewer = searchComp.getViewer(); - viewer.addDoubleClickListener(new IDoubleClickListener() { - @Override - public void doubleClick(DoubleClickEvent event) { - Object firstObj = ((IStructuredSelection) event.getSelection()).getFirstElement(); - try { - Node node = (Node) firstObj; - String path = node.getPath(); - CmsUtils.getCmsView().navigateTo(path); - } catch (RepositoryException e) { - throw new PeopleException("Unable to refresh display for " + context, e); - } - } - }); - return null; - } - - public Control populateDefaultDisplay(Composite parent, Node context) throws RepositoryException { - parent.setLayout(new GridLayout()); - Label lbl = new Label(parent, SWT.NONE); - lbl.setText("Implement a default display"); - return lbl; - } -} diff --git a/org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java b/org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java deleted file mode 100644 index b84a653..0000000 --- a/org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java +++ /dev/null @@ -1,148 +0,0 @@ -package org.argeo.suite.web; - -import java.nio.file.spi.FileSystemProvider; -import java.util.Locale; -import java.util.Map; - -import javax.jcr.Node; -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import javax.jcr.nodetype.NodeType; - -import org.argeo.cms.CmsMsg; -import org.argeo.cms.auth.CurrentUser; -import org.argeo.cms.ui.CmsUiProvider; -import org.argeo.cms.ui.CmsView; -import org.argeo.cms.ui.LifeCycleUiProvider; -import org.argeo.cms.util.CmsUtils; -import org.argeo.cms.widgets.auth.CmsLogin; -import org.argeo.connect.AppMaintenanceService; -import org.argeo.connect.ConnectTypes; -import org.argeo.connect.resources.ResourcesService; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.argeo.people.PeopleService; -import org.argeo.people.PeopleTypes; -import org.argeo.people.web.pages.PeopleDefaultPage; -import org.argeo.suite.web.fs.MyFilesBrowserPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; - -/** - * Default entry point for the Argeo Suite CMS. Forwards the request to the - * relevant CmsUiProvider - */ -public class DefaultMainPage implements LifeCycleUiProvider { - - private CmsUiProvider dashboardPage; - private CmsUiProvider peoplePage; - private CmsUiProvider fsBrowserPage; - - /* DEPENDENCY INJECTION */ - private ResourcesService resourcesService; - private PeopleService peopleService; - private FileSystemProvider nodeFileSystemProvider; - private Map peopleIconPaths; - - public DefaultMainPage() { - } - - @Override - public void init(Session adminSession) throws RepositoryException { - dashboardPage = new DefaultDashboard(resourcesService, peopleService, peopleIconPaths); - peoplePage = new PeopleDefaultPage(resourcesService, peopleService, peopleIconPaths); - fsBrowserPage = new MyFilesBrowserPage(nodeFileSystemProvider); - } - - @Override - public Control createUi(Composite parent, Node context) throws RepositoryException { - if (CurrentUser.isAnonymous()) - return createAnonymousUi(parent, context); - - if (context.isNodeType(ConnectTypes.CONNECT_ENTITY)) - return peoplePage.createUi(parent, context); - else if (("/" + peopleService.getBaseRelPath(PeopleTypes.PEOPLE_PERSON)).equals(context.getPath())) - return peoplePage.createUi(parent, context); - else if (context.isNodeType(NodeType.NT_FOLDER) || context.isNodeType(NodeType.NT_FILE)) - return fsBrowserPage.createUi(parent, context); - else - return dashboardPage.createUi(parent, context); - } - - public Control createAnonymousUi(Composite parent, Node context) throws RepositoryException { - parent.setLayout(new GridLayout()); - Composite body = new Composite(parent, SWT.NO_FOCUS); - body.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true)); - body.setLayout(new GridLayout()); - - Composite loginCmp = new Composite(body, SWT.NO_FOCUS); - loginCmp.setLayout(EclipseUiUtils.noSpaceGridLayout()); - loginCmp.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true)); - - CmsLogin login = new MyCmsLogin(CmsUtils.getCmsView()); - // Composite credBlockCmp = - login.createCredentialsBlock(loginCmp); - // Use a custom style that has no border, among other - // CmsUtils.style(loginCmp, ArgeoStyles.LOGIN_INLINE_CREDBLOCK); - - Label anonymousLbl = new Label(body, SWT.WRAP); - anonymousLbl.setText("You should login or register to access your private dashboard"); - - return body; - - } - - private class MyCmsLogin extends CmsLogin { - - public MyCmsLogin(CmsView cmsView) { - super(cmsView); - } - - @Override - protected boolean login() { - boolean result = super.login(); - return result; - } - - @Override - protected void extendsCredentialsBlock(Composite credentialsBlock, Locale selectedLocale, - SelectionListener loginSelectionListener) { - Button loginBtn = new Button(credentialsBlock, SWT.PUSH); - loginBtn.setText(CmsMsg.login.lead(selectedLocale)); - loginBtn.setLayoutData(CmsUtils.fillWidth()); - loginBtn.addSelectionListener(loginSelectionListener); - // CmsUtils.style(loginBtn, ArgeoStyles.LOGIN_SIGNIN_BTN); - } - } - - @Override - public void destroy() { - } - - /* DEPENDENCY INJECTION */ - public void setResourcesService(ResourcesService resourcesService) { - this.resourcesService = resourcesService; - } - - public void setPeopleService(PeopleService peopleService) { - this.peopleService = peopleService; - } - - public void setNodeFileSystemProvider(FileSystemProvider nodeFileSystemProvider) { - this.nodeFileSystemProvider = nodeFileSystemProvider; - } - - public void setPeopleIconPaths(Map peopleIconPaths) { - this.peopleIconPaths = peopleIconPaths; - } - - // Only used has a blocker. - public void setSuiteMaintenanceService(AppMaintenanceService suiteMaintenanceService) { - } - -} diff --git a/org.argeo.suite.web/src/org/argeo/suite/web/DynamicHeader.java b/org.argeo.suite.web/src/org/argeo/suite/web/DynamicHeader.java deleted file mode 100644 index 775a63d..0000000 --- a/org.argeo.suite.web/src/org/argeo/suite/web/DynamicHeader.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.argeo.suite.web; - -import javax.jcr.Node; -import javax.jcr.RepositoryException; - -import org.argeo.cms.auth.CurrentUser; -import org.argeo.cms.ui.CmsUiProvider; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; - -/** - * Choose between possible headers depending on the client logged-in status and - * display type. - */ -public class DynamicHeader implements CmsUiProvider { - - private CmsUiProvider publicHeaderProvider; - private CmsUiProvider privateHeaderProvider; - - @Override - public Control createUi(Composite parent, Node context) throws RepositoryException { - if (CurrentUser.isAnonymous()) - return publicHeaderProvider.createUi(parent, context); - else - return privateHeaderProvider.createUi(parent, context); - } - - public void setPrivateHeaderProvider(CmsUiProvider privateHeaderProvider) { - this.privateHeaderProvider = privateHeaderProvider; - } - - public void setPublicHeaderProvider(CmsUiProvider publicHeaderProvider) { - this.publicHeaderProvider = publicHeaderProvider; - } -} diff --git a/org.argeo.suite.web/src/org/argeo/suite/web/fs/MyFilesBrowserPage.java b/org.argeo.suite.web/src/org/argeo/suite/web/fs/MyFilesBrowserPage.java deleted file mode 100644 index cb4bdba..0000000 --- a/org.argeo.suite.web/src/org/argeo/suite/web/fs/MyFilesBrowserPage.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.argeo.suite.web.fs; - -import java.nio.file.spi.FileSystemProvider; - -import javax.jcr.Node; -import javax.jcr.RepositoryException; - -import org.argeo.cms.auth.CurrentUser; -import org.argeo.cms.ui.CmsUiProvider; -import org.argeo.cms.ui.fs.CmsFsBrowser; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; - -/** Default file browser page for the CMS */ -public class MyFilesBrowserPage implements CmsUiProvider { - - private FileSystemProvider nodeFileSystemProvider; - - public MyFilesBrowserPage(FileSystemProvider nodeFileSystemProvider) { - this.nodeFileSystemProvider = nodeFileSystemProvider; - } - - @Override - public Control createUi(Composite parent, Node context) throws RepositoryException { - parent.setLayout(EclipseUiUtils.noSpaceGridLayout()); - - if (CurrentUser.isAnonymous()) - // TODO implement public file display - return null; - - CmsFsBrowser browser = new CmsFsBrowser(parent, SWT.NO_FOCUS, context, nodeFileSystemProvider); - browser.setLayoutData(EclipseUiUtils.fillAll()); - - // TODO set input on the default home folder parent for one user's - // files - return browser; - } -} diff --git a/org.argeo.suite.workbench.rap/.classpath b/org.argeo.suite.workbench.rap/.classpath deleted file mode 100644 index 1ef7358..0000000 --- a/org.argeo.suite.workbench.rap/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/org.argeo.suite.workbench.rap/.gitignore b/org.argeo.suite.workbench.rap/.gitignore deleted file mode 100644 index 09e3bc9..0000000 --- a/org.argeo.suite.workbench.rap/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/bin/ -/target/ diff --git a/org.argeo.suite.workbench.rap/.project b/org.argeo.suite.workbench.rap/.project deleted file mode 100644 index 4c4c4ff..0000000 --- a/org.argeo.suite.workbench.rap/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - org.argeo.suite.workbench.rap - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.pde.PluginNature - - diff --git a/org.argeo.suite.workbench.rap/META-INF/.gitignore b/org.argeo.suite.workbench.rap/META-INF/.gitignore deleted file mode 100644 index 4854a41..0000000 --- a/org.argeo.suite.workbench.rap/META-INF/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/MANIFEST.MF diff --git a/org.argeo.suite.workbench.rap/META-INF/spring/osgi.xml b/org.argeo.suite.workbench.rap/META-INF/spring/osgi.xml deleted file mode 100644 index 8f2cd1b..0000000 --- a/org.argeo.suite.workbench.rap/META-INF/spring/osgi.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/org.argeo.suite.workbench.rap/META-INF/spring/parts.xml b/org.argeo.suite.workbench.rap/META-INF/spring/parts.xml deleted file mode 100644 index d67695a..0000000 --- a/org.argeo.suite.workbench.rap/META-INF/spring/parts.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/org.argeo.suite.workbench.rap/OSGI-INF/l10n/bundle.properties b/org.argeo.suite.workbench.rap/OSGI-INF/l10n/bundle.properties deleted file mode 100644 index 8c4ac22..0000000 --- a/org.argeo.suite.workbench.rap/OSGI-INF/l10n/bundle.properties +++ /dev/null @@ -1 +0,0 @@ -search=Search \ No newline at end of file diff --git a/org.argeo.suite.workbench.rap/OSGI-INF/l10n/bundle_de.properties b/org.argeo.suite.workbench.rap/OSGI-INF/l10n/bundle_de.properties deleted file mode 100644 index 3ec4305..0000000 --- a/org.argeo.suite.workbench.rap/OSGI-INF/l10n/bundle_de.properties +++ /dev/null @@ -1 +0,0 @@ -search=Finden \ No newline at end of file diff --git a/org.argeo.suite.workbench.rap/bnd.bnd b/org.argeo.suite.workbench.rap/bnd.bnd deleted file mode 100644 index 07ba246..0000000 --- a/org.argeo.suite.workbench.rap/bnd.bnd +++ /dev/null @@ -1,39 +0,0 @@ -Bundle-Activator: org.argeo.suite.workbench.AsUiPlugin -Bundle-SymbolicName: org.argeo.suite.workbench.rap;singleton:=true -#Require-Bundle: org.eclipse.core.runtime,\ -# org.eclipse.rap.ui,\ -# org.eclipse.rap.ui.workbench -Require-Bundle: org.eclipse.core.runtime,\ -org.eclipse.core.commands - -Bundle-ActivationPolicy: lazy - -Import-Package:\ -javax.jcr.nodetype,\ -javax.jcr.security,\ -org.eclipse.core.runtime.jobs,\ -org.eclipse.jface.window,\ -org.eclipse.jface.dialogs,\ -org.eclipse.swt,\ -org.eclipse.swt.widgets,\ -org.eclipse.ui.services,\ -org.argeo.activities,\ -org.argeo.activities.workbench.parts,\ -org.argeo.cms,\ -org.argeo.cms.ui.workbench,\ -org.argeo.cms.ui.workbench.jcr,\ -org.argeo.connect,\ -org.argeo.connect.resources,\ -org.argeo.connect.ui,\ -org.argeo.connect.ui.widgets,\ -org.argeo.connect.workbench.commands,\ -org.argeo.connect.workbench,\ -org.argeo.connect.workbench.util,\ -org.argeo.documents.workbench.parts,\ -org.argeo.eclipse.spring,\ -org.argeo.people.workbench.rap.parts,\ -org.argeo.node,\ -org.argeo.util,\ -jxl.*;resolution:=optional,\ -org.argeo.cms.ui.workbench.rap;resolution:=optional,\ -* \ No newline at end of file diff --git a/org.argeo.suite.workbench.rap/css/headerExt.css b/org.argeo.suite.workbench.rap/css/headerExt.css deleted file mode 100644 index 0ddeccb..0000000 --- a/org.argeo.suite.workbench.rap/css/headerExt.css +++ /dev/null @@ -1,15 +0,0 @@ -/****************************************** -** Argeo Suite additional header ** -******************************************/ - -/* Force the addition of global styles to the application header */ - -/*** Override default links **/ -a:link { - color: #333333; - text-decoration:none; -} - -a:hover { - text-decoration:underline; -} diff --git a/org.argeo.suite.workbench.rap/icons/more.gif b/org.argeo.suite.workbench.rap/icons/more.gif deleted file mode 100644 index 57ad089a6969b5e77771a2d2315e1c485e7c61ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmZ?wbhEHb6krfwIKsd%b>7~N$y+DS-8*T{?#Xla%wBS^Wy0o;DOEg)J z#W5Aj<7-wY)UHmhUz<|DHmzxW>%y~b3(wBod@a6qb$sorkr;FE?8n*u-Kt|Id9CY|Ns9p&;Tg@WMO1rP-f5pnGNz216#_0i3J`yQvJsm zgg7JQrk+bO_7dTAKGtDoB+_bkXzjJf5992w1-8iStkCP%_Lx#5y6_`@wFT09~= wevLfb(wrPzoISn09c+@45|YAGBqXFHg(kDGv$8VHpTB^88S}Cb7e@wb0E(nwr~m)} diff --git a/org.argeo.suite.workbench.rap/img/favicon.ico b/org.argeo.suite.workbench.rap/img/favicon.ico deleted file mode 100644 index 6e6a050224d967e89af5faa3113edd5151a0d97e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmaizUr19?9LKMfy;;6g4^d7Nvk7BR!$Lzd%|8vbw3eYPacqfVE{a)hWNDI340Y1H zbDNephnjA4e@XmPbd@;=6yb2n#bd@xm>Of4u@l%=lON3)%uazq0Y|E z6Mqw7Y$Oti4F-d@si`T@S{RK+=yW=$)oN5%SEI495gi>Juvjc3xw*M}WHMO{(_$=H zEZHJsX&!ajYGhw)hC<4E-r3|sA2Q_{czX^ zP<6KlNBVvuaR5jnW39vq$l8{0PI&=^1qIM*wJ@1XFNobuex+m>8yiF2<6$J&h~uNi z`iH155&xN9rp^pyVLl870~#6{vWVpafdF{B6G_(JQI@#0hi{<1{Rr)rK{P&FLaJ>; zn3LE6rNM@lmV0nIokPSg`=@=l%)i_6oATr{3bN8sQd$a)MuWE2R@fbbIA#AXtV!lK z;C}9a*Xw;x{942}ft3DVTYM7vm-c;yvi1Q=l?5m-FGqcSJzC8@I6bh6k#R5l{s0)u zY}6CN!TxB@%y(+<7bLR0Dc|E=E4Wyth4OqMR4NskZs|ew0CrX)zwGkOZ1HmaC@L#1 zp`v>h$>LtJoE4@pGBYwzR8)kfrY2B*f$C+MH2C?j7YU+&xp4-0XU{-WQ-k~M9VoKA z72;rL!eTn9>q7G#1Ke&m^Usq>BcUKv!=Ix0Q_Oi+>qsL9#l^+AQdWYDn?qoG!ZZ|= z&r?e`sLmNL-K?L9v_~fc7~o?3K7?6XU+^<+wSzi7hn3?0-)STT3># HlM~oK1ZrJU diff --git a/org.argeo.suite.workbench.rap/img/logo-argeo.png b/org.argeo.suite.workbench.rap/img/logo-argeo.png deleted file mode 100644 index f10723040489d0b04bf16bc897be93638373b8a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38215 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 IM6N<$g3ka?(e+.05)/(a+.05):(a+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb,e=(299*t[0]+587*t[1]+114*t[2])/1e3;return e<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,a=(e[0]+t)%360;return e[0]=a<0?360+a:a,this.setValues("hsl",e),this},mix:function(t,e){var a=this,i=t,n=void 0===e?.5:e,o=2*n-1,r=a.alpha()-i.alpha(),s=((o*r===-1?o:(o+r)/(1+o*r))+1)/2,l=1-s;return this.rgb(s*a.red()+l*i.red(),s*a.green()+l*i.green(),s*a.blue()+l*i.blue()).alpha(a.alpha()*n+i.alpha()*(1-n))},toJSON:function(){return this.rgb()},clone:function(){var t,e,a=new o,i=this.values,n=a.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],e={}.toString.call(t),"[object Array]"===e?n[r]=t.slice(0):"[object Number]"===e?n[r]=t:console.error("unexpected color value:",t));return a}},o.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},o.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},o.prototype.getValues=function(t){for(var e=this.values,a={},i=0;i.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,a=a>.04045?Math.pow((a+.055)/1.055,2.4):a/12.92,i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92;var n=.4124*e+.3576*a+.1805*i,o=.2126*e+.7152*a+.0722*i,r=.0193*e+.1192*a+.9505*i;return[100*n,100*o,100*r]}function d(t){var e,a,i,n=u(t),o=n[0],r=n[1],s=n[2];return o/=95.047,r/=100,s/=108.883,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,s=s>.008856?Math.pow(s,1/3):7.787*s+16/116,e=116*r-16,a=500*(o-r),i=200*(r-s),[e,a,i]}function c(t){return z(d(t))}function h(t){var e,a,i,n,o,r=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return o=255*l,[o,o,o];a=l<.5?l*(1+s):l+s-l*s,e=2*l-a,n=[0,0,0];for(var u=0;u<3;u++)i=r+1/3*-(u-1),i<0&&i++,i>1&&i--,o=6*i<1?e+6*(a-e)*i:2*i<1?a:3*i<2?e+(a-e)*(2/3-i)*6:e,n[u]=255*o;return n}function f(t){var e,a,i=t[0],n=t[1]/100,o=t[2]/100;return 0===o?[0,0,0]:(o*=2,n*=o<=1?o:2-o,a=(o+n)/2,e=2*n/(o+n),[i,100*e,100*a])}function p(t){return o(h(t))}function m(t){return s(h(t))}function v(t){return l(h(t))}function x(t){var e=t[0]/60,a=t[1]/100,i=t[2]/100,n=Math.floor(e)%6,o=e-Math.floor(e),r=255*i*(1-a),s=255*i*(1-a*o),l=255*i*(1-a*(1-o)),i=255*i;switch(n){case 0:return[i,l,r];case 1:return[s,i,r];case 2:return[r,i,l];case 3:return[r,s,i];case 4:return[l,r,i];case 5:return[i,r,s]}}function y(t){var e,a,i=t[0],n=t[1]/100,o=t[2]/100;return a=(2-n)*o,e=n*o,e/=a<=1?a:2-a,e=e||0,a/=2,[i,100*e,100*a]}function k(t){return o(x(t))}function S(t){return s(x(t))}function M(t){return l(x(t))}function w(t){var e,a,i,n,o=t[0]/360,s=t[1]/100,l=t[2]/100,u=s+l;switch(u>1&&(s/=u,l/=u),e=Math.floor(6*o),a=1-l,i=6*o-e,0!=(1&e)&&(i=1-i),n=s+i*(a-s),e){default:case 6:case 0:r=a,g=n,b=s;break;case 1:r=n,g=a,b=s;break;case 2:r=s,g=a,b=n;break;case 3:r=s,g=n,b=a;break;case 4:r=n,g=s,b=a;break;case 5:r=a,g=s,b=n}return[255*r,255*g,255*b]}function C(t){return i(w(t))}function I(t){return n(w(t))}function D(t){return s(w(t))}function A(t){return l(w(t))}function T(t){var e,a,i,n=t[0]/100,o=t[1]/100,r=t[2]/100,s=t[3]/100;return e=1-Math.min(1,n*(1-s)+s),a=1-Math.min(1,o*(1-s)+s),i=1-Math.min(1,r*(1-s)+s),[255*e,255*a,255*i]}function P(t){return i(T(t))}function _(t){return n(T(t))}function F(t){return o(T(t))}function V(t){return l(T(t))}function R(t){var e,a,i,n=t[0]/100,o=t[1]/100,r=t[2]/100;return e=3.2406*n+o*-1.5372+r*-.4986,a=n*-.9689+1.8758*o+.0415*r,i=.0557*n+o*-.204+1.057*r,e=e>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,a=a>.0031308?1.055*Math.pow(a,1/2.4)-.055:a*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,e=Math.min(Math.max(0,e),1),a=Math.min(Math.max(0,a),1),i=Math.min(Math.max(0,i),1),[255*e,255*a,255*i]}function O(t){var e,a,i,n=t[0],o=t[1],r=t[2];return n/=95.047,o/=100,r/=108.883,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,e=116*o-16,a=500*(n-o),i=200*(o-r),[e,a,i]}function L(t){return z(O(t))}function B(t){var e,a,i,n,o=t[0],r=t[1],s=t[2];return o<=8?(a=100*o/903.3,n=7.787*(a/100)+16/116):(a=100*Math.pow((o+16)/116,3),n=Math.pow(a/100,1/3)),e=e/95.047<=.008856?e=95.047*(r/500+n-16/116)/7.787:95.047*Math.pow(r/500+n,3),i=i/108.883<=.008859?i=108.883*(n-s/200-16/116)/7.787:108.883*Math.pow(n-s/200,3),[e,a,i]}function z(t){var e,a,i,n=t[0],o=t[1],r=t[2];return e=Math.atan2(r,o),a=360*e/2/Math.PI,a<0&&(a+=360),i=Math.sqrt(o*o+r*r),[n,i,a]}function W(t){return R(B(t))}function N(t){var e,a,i,n=t[0],o=t[1],r=t[2];return i=r/360*2*Math.PI,e=o*Math.cos(i),a=o*Math.sin(i),[n,e,a]}function E(t){return B(N(t))}function H(t){return W(N(t))}function j(t){return G[t]}function U(t){return i(j(t))}function q(t){return n(j(t))}function Y(t){return o(j(t))}function X(t){return s(j(t))}function K(t){return d(j(t))}function J(t){return u(j(t))}e.exports={rgb2hsl:i,rgb2hsv:n,rgb2hwb:o,rgb2cmyk:s,rgb2keyword:l,rgb2xyz:u,rgb2lab:d,rgb2lch:c,hsl2rgb:h,hsl2hsv:f,hsl2hwb:p,hsl2cmyk:m,hsl2keyword:v,hsv2rgb:x,hsv2hsl:y,hsv2hwb:k,hsv2cmyk:S,hsv2keyword:M,hwb2rgb:w,hwb2hsl:C,hwb2hsv:I,hwb2cmyk:D,hwb2keyword:A,cmyk2rgb:T,cmyk2hsl:P,cmyk2hsv:_,cmyk2hwb:F,cmyk2keyword:V,keyword2rgb:j,keyword2hsl:U,keyword2hsv:q,keyword2hwb:Y,keyword2cmyk:X,keyword2lab:K,keyword2xyz:J,xyz2rgb:R,xyz2lab:O,xyz2lch:L,lab2xyz:B,lab2rgb:W,lab2lch:z,lch2lab:N,lch2xyz:E,lch2rgb:H};var G={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Z={};for(var Q in G)Z[JSON.stringify(G[Q])]=Q},{}],5:[function(t,e,a){var i=t(4),n=function(){return new u};for(var o in i){n[o+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),i[t](e)}}(o);var r=/(\w+)2(\w+)/.exec(o),s=r[1],l=r[2];n[s]=n[s]||{},n[s][l]=n[o]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var a=i[t](e);if("string"==typeof a||void 0===a)return a;for(var n=0;n0&&(t[0].yLabel?a=t[0].yLabel:e.labels.length>0&&t[0].index');var a=t.data,i=a.datasets,n=a.labels;if(i.length)for(var o=0;o'),n[o]&&e.push(n[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(t){var a=t.data;return a.labels.length&&a.datasets.length?a.labels.map(function(i,n){var o=t.getDatasetMeta(0),r=a.datasets[0],s=o.data[n],l=s&&s.custom||{},u=e.getValueAtIndexOrDefault,d=t.options.elements.arc,c=l.backgroundColor?l.backgroundColor:u(r.backgroundColor,n,d.backgroundColor),h=l.borderColor?l.borderColor:u(r.borderColor,n,d.borderColor),f=l.borderWidth?l.borderWidth:u(r.borderWidth,n,d.borderWidth);return{text:i,fillStyle:c,strokeStyle:h,lineWidth:f,hidden:isNaN(r.data[n])||o.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var a,i,n,o=e.index,r=this.chart;for(a=0,i=(r.data.datasets||[]).length;a=Math.PI?-1:g<-Math.PI?1:0);var p=g+f,m={x:Math.cos(g),y:Math.sin(g)},v={x:Math.cos(p),y:Math.sin(p)},b=g<=0&&0<=p||g<=2*Math.PI&&2*Math.PI<=p,x=g<=.5*Math.PI&&.5*Math.PI<=p||g<=2.5*Math.PI&&2.5*Math.PI<=p,y=g<=-Math.PI&&-Math.PI<=p||g<=Math.PI&&Math.PI<=p,k=g<=.5*-Math.PI&&.5*-Math.PI<=p||g<=1.5*Math.PI&&1.5*Math.PI<=p,S=h/100,M={x:y?-1:Math.min(m.x*(m.x<0?1:S),v.x*(v.x<0?1:S)),y:k?-1:Math.min(m.y*(m.y<0?1:S),v.y*(v.y<0?1:S))},w={x:b?1:Math.max(m.x*(m.x>0?1:S),v.x*(v.x>0?1:S)),y:x?1:Math.max(m.y*(m.y>0?1:S),v.y*(v.y>0?1:S))},C={width:.5*(w.x-M.x),height:.5*(w.y-M.y)};u=Math.min(s/C.width,l/C.height),d={x:(w.x+M.x)*-.5,y:(w.y+M.y)*-.5}}i.borderWidth=a.getMaxBorderWidth(c.data),i.outerRadius=Math.max((u-i.borderWidth)/2,0),i.innerRadius=Math.max(h?i.outerRadius/100*h:0,0),i.radiusLength=(i.outerRadius-i.innerRadius)/i.getVisibleDatasetCount(),i.offsetX=d.x*i.outerRadius,i.offsetY=d.y*i.outerRadius,c.total=a.calculateTotal(),a.outerRadius=i.outerRadius-i.radiusLength*a.getRingIndex(a.index),a.innerRadius=Math.max(a.outerRadius-i.radiusLength,0),e.each(c.data,function(e,i){a.updateElement(e,i,t)})},updateElement:function(t,a,i){var n=this,o=n.chart,r=o.chartArea,s=o.options,l=s.animation,u=(r.left+r.right)/2,d=(r.top+r.bottom)/2,c=s.rotation,h=s.rotation,f=n.getDataset(),g=i&&l.animateRotate?0:t.hidden?0:n.calculateCircumference(f.data[a])*(s.circumference/(2*Math.PI)),p=i&&l.animateScale?0:n.innerRadius,m=i&&l.animateScale?0:n.outerRadius,v=e.getValueAtIndexOrDefault;e.extend(t,{_datasetIndex:n.index,_index:a,_model:{x:u+o.offsetX,y:d+o.offsetY,startAngle:c,endAngle:h,circumference:g,outerRadius:m,innerRadius:p,label:v(f.label,a,o.data.labels[a])}});var b=t._model;this.removeHoverStyle(t),i&&l.animateRotate||(0===a?b.startAngle=s.rotation:b.startAngle=n.getMeta().data[a-1]._model.endAngle,b.endAngle=b.startAngle+b.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,a=this.getDataset(),i=this.getMeta(),n=0;return e.each(i.data,function(e,i){t=a.data[i],isNaN(t)||e.hidden||(n+=Math.abs(t))}),n},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(t/e):0},getMaxBorderWidth:function(t){for(var e,a,i=0,n=this.index,o=t.length,r=0;ri?e:i,i=a>i?a:i;return i}})}},{}],18:[function(t,e,a){"use strict";e.exports=function(t){function e(t,e){return a.getValueOrDefault(t.showLine,e.showLines)}var a=t.helpers;t.defaults.line={showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}},t.controllers.line=t.DatasetController.extend({datasetElementType:t.elements.Line,dataElementType:t.elements.Point,update:function(t){var i,n,o,r=this,s=r.getMeta(),l=s.dataset,u=s.data||[],d=r.chart.options,c=d.elements.line,h=r.getScaleForId(s.yAxisID),f=r.getDataset(),g=e(f,d);for(g&&(o=l.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),l._scale=h,l._datasetIndex=r.index,l._children=u,l._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:o.tension?o.tension:a.getValueOrDefault(f.lineTension,c.tension),backgroundColor:o.backgroundColor?o.backgroundColor:f.backgroundColor||c.backgroundColor,borderWidth:o.borderWidth?o.borderWidth:f.borderWidth||c.borderWidth,borderColor:o.borderColor?o.borderColor:f.borderColor||c.borderColor,borderCapStyle:o.borderCapStyle?o.borderCapStyle:f.borderCapStyle||c.borderCapStyle,borderDash:o.borderDash?o.borderDash:f.borderDash||c.borderDash,borderDashOffset:o.borderDashOffset?o.borderDashOffset:f.borderDashOffset||c.borderDashOffset,borderJoinStyle:o.borderJoinStyle?o.borderJoinStyle:f.borderJoinStyle||c.borderJoinStyle,fill:o.fill?o.fill:void 0!==f.fill?f.fill:c.fill,steppedLine:o.steppedLine?o.steppedLine:a.getValueOrDefault(f.steppedLine,c.stepped),cubicInterpolationMode:o.cubicInterpolationMode?o.cubicInterpolationMode:a.getValueOrDefault(f.cubicInterpolationMode,c.cubicInterpolationMode),scaleTop:h.top,scaleBottom:h.bottom,scaleZero:h.getBasePixel()},l.pivot()),i=0,n=u.length;i');var a=t.data,i=a.datasets,n=a.labels;if(i.length)for(var o=0;o'),n[o]&&e.push(n[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(t){var a=t.data;return a.labels.length&&a.datasets.length?a.labels.map(function(i,n){var o=t.getDatasetMeta(0),r=a.datasets[0],s=o.data[n],l=s.custom||{},u=e.getValueAtIndexOrDefault,d=t.options.elements.arc,c=l.backgroundColor?l.backgroundColor:u(r.backgroundColor,n,d.backgroundColor),h=l.borderColor?l.borderColor:u(r.borderColor,n,d.borderColor),f=l.borderWidth?l.borderWidth:u(r.borderWidth,n,d.borderWidth);return{text:i,fillStyle:c,strokeStyle:h,lineWidth:f,hidden:isNaN(r.data[n])||o.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var a,i,n,o=e.index,r=this.chart;for(a=0,i=(r.data.datasets||[]).length;a0&&!isNaN(t)?2*Math.PI/e:0}})}},{}],20:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.radar={aspectRatio:1,scale:{type:"radialLinear"},elements:{line:{tension:0}}},t.controllers.radar=t.DatasetController.extend({datasetElementType:t.elements.Line,dataElementType:t.elements.Point,linkScales:e.noop,update:function(t){var a=this,i=a.getMeta(),n=i.dataset,o=i.data,r=n.custom||{},s=a.getDataset(),l=a.chart.options.elements.line,u=a.chart.scale;void 0!==s.tension&&void 0===s.lineTension&&(s.lineTension=s.tension),e.extend(i.dataset,{_datasetIndex:a.index,_children:o,_loop:!0,_model:{tension:r.tension?r.tension:e.getValueOrDefault(s.lineTension,l.tension),backgroundColor:r.backgroundColor?r.backgroundColor:s.backgroundColor||l.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:s.borderWidth||l.borderWidth,borderColor:r.borderColor?r.borderColor:s.borderColor||l.borderColor,fill:r.fill?r.fill:void 0!==s.fill?s.fill:l.fill,borderCapStyle:r.borderCapStyle?r.borderCapStyle:s.borderCapStyle||l.borderCapStyle,borderDash:r.borderDash?r.borderDash:s.borderDash||l.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:s.borderDashOffset||l.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:s.borderJoinStyle||l.borderJoinStyle,scaleTop:u.top,scaleBottom:u.bottom,scaleZero:u.getBasePosition()}}),i.dataset.pivot(),e.each(o,function(e,i){a.updateElement(e,i,t)},a),a.updateBezierControlPoints()},updateElement:function(t,a,i){var n=this,o=t.custom||{},r=n.getDataset(),s=n.chart.scale,l=n.chart.options.elements.point,u=s.getPointPositionForValue(a,r.data[a]);e.extend(t,{_datasetIndex:n.index,_index:a,_scale:s,_model:{x:i?s.xCenter:u.x,y:i?s.yCenter:u.y,tension:o.tension?o.tension:e.getValueOrDefault(r.lineTension,n.chart.options.elements.line.tension),radius:o.radius?o.radius:e.getValueAtIndexOrDefault(r.pointRadius,a,l.radius),backgroundColor:o.backgroundColor?o.backgroundColor:e.getValueAtIndexOrDefault(r.pointBackgroundColor,a,l.backgroundColor),borderColor:o.borderColor?o.borderColor:e.getValueAtIndexOrDefault(r.pointBorderColor,a,l.borderColor),borderWidth:o.borderWidth?o.borderWidth:e.getValueAtIndexOrDefault(r.pointBorderWidth,a,l.borderWidth),pointStyle:o.pointStyle?o.pointStyle:e.getValueAtIndexOrDefault(r.pointStyle,a,l.pointStyle),hitRadius:o.hitRadius?o.hitRadius:e.getValueAtIndexOrDefault(r.hitRadius,a,l.hitRadius)}}),t._model.skip=o.skip?o.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,a=this.getMeta();e.each(a.data,function(i,n){var o=i._model,r=e.splineCurve(e.previousItem(a.data,n,!0)._model,o,e.nextItem(a.data,n,!0)._model,o.tension);o.controlPointPreviousX=Math.max(Math.min(r.previous.x,t.right),t.left),o.controlPointPreviousY=Math.max(Math.min(r.previous.y,t.bottom),t.top),o.controlPointNextX=Math.max(Math.min(r.next.x,t.right),t.left),o.controlPointNextY=Math.max(Math.min(r.next.y,t.bottom),t.top),i.pivot()})},draw:function(t){var a=this.getMeta(),i=t||1;e.each(a.data,function(t){t.transition(i)}),a.dataset.transition(i).draw(),e.each(a.data,function(t){t.draw()})},setHoverStyle:function(t){var a=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},n=t._index,o=t._model;o.radius=i.hoverRadius?i.hoverRadius:e.getValueAtIndexOrDefault(a.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius),o.backgroundColor=i.hoverBackgroundColor?i.hoverBackgroundColor:e.getValueAtIndexOrDefault(a.pointHoverBackgroundColor,n,e.getHoverColor(o.backgroundColor)),o.borderColor=i.hoverBorderColor?i.hoverBorderColor:e.getValueAtIndexOrDefault(a.pointHoverBorderColor,n,e.getHoverColor(o.borderColor)),o.borderWidth=i.hoverBorderWidth?i.hoverBorderWidth:e.getValueAtIndexOrDefault(a.pointHoverBorderWidth,n,o.borderWidth)},removeHoverStyle:function(t){var a=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},n=t._index,o=t._model,r=this.chart.options.elements.point;o.radius=i.radius?i.radius:e.getValueAtIndexOrDefault(a.radius,n,r.radius),o.backgroundColor=i.backgroundColor?i.backgroundColor:e.getValueAtIndexOrDefault(a.pointBackgroundColor,n,r.backgroundColor),o.borderColor=i.borderColor?i.borderColor:e.getValueAtIndexOrDefault(a.pointBorderColor,n,r.borderColor),o.borderWidth=i.borderWidth?i.borderWidth:e.getValueAtIndexOrDefault(a.pointBorderWidth,n,r.borderWidth)}})}},{}],21:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.global.animation={duration:1e3,easing:"easeOutQuart",onProgress:e.noop,onComplete:e.noop},t.Animation=t.Element.extend({currentStep:null,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,a,i){var n=this;i||(t.animating=!0);for(var o=0;o1&&(a=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1);for(var i=0;it.animations[i].animationObject.numSteps&&(t.animations[i].animationObject.currentStep=t.animations[i].animationObject.numSteps),t.animations[i].animationObject.render(t.animations[i].chartInstance,t.animations[i].animationObject),t.animations[i].animationObject.onAnimationProgress&&t.animations[i].animationObject.onAnimationProgress.call&&t.animations[i].animationObject.onAnimationProgress.call(t.animations[i].chartInstance,t.animations[i]),t.animations[i].animationObject.currentStep===t.animations[i].animationObject.numSteps?(t.animations[i].animationObject.onAnimationComplete&&t.animations[i].animationObject.onAnimationComplete.call&&t.animations[i].animationObject.onAnimationComplete.call(t.animations[i].chartInstance,t.animations[i]),t.animations[i].chartInstance.animating=!1,t.animations.splice(i,1)):++i;var n=Date.now(),o=(n-e)/t.frameDuration;t.dropFrames+=o,t.animations.length>0&&t.requestAnimationFrame()}}}},{}],22:[function(t,e,a){"use strict";e.exports=function(t){var e=t.canvasHelpers={};e.drawPoint=function(e,a,i,n,o){var r,s,l,u,d,c;if("object"==typeof a&&(r=a.toString(),"[object HTMLImageElement]"===r||"[object HTMLCanvasElement]"===r))return void e.drawImage(a,n-a.width/2,o-a.height/2);if(!(isNaN(i)||i<=0)){switch(a){default:e.beginPath(),e.arc(n,o,i,0,2*Math.PI),e.closePath(),e.fill();break;case"triangle":e.beginPath(),s=3*i/Math.sqrt(3),d=s*Math.sqrt(3)/2,e.moveTo(n-s/2,o+d/3),e.lineTo(n+s/2,o+d/3),e.lineTo(n,o-2*d/3),e.closePath(),e.fill();break;case"rect":c=1/Math.SQRT2*i,e.beginPath(),e.fillRect(n-c,o-c,2*c,2*c),e.strokeRect(n-c,o-c,2*c,2*c);break;case"rectRounded":var h=i/Math.SQRT2,f=n-h,g=o-h,p=Math.SQRT2*i;t.helpers.drawRoundedRectangle(e,f,g,p,p,i/2),e.fill();break;case"rectRot":c=1/Math.SQRT2*i,e.beginPath(),e.moveTo(n-c,o),e.lineTo(n,o+c),e.lineTo(n+c,o),e.lineTo(n,o-c),e.closePath(),e.fill();break;case"cross":e.beginPath(),e.moveTo(n,o+i),e.lineTo(n,o-i),e.moveTo(n-i,o),e.lineTo(n+i,o),e.closePath();break;case"crossRot":e.beginPath(),l=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,e.moveTo(n-l,o-u),e.lineTo(n+l,o+u),e.moveTo(n-l,o+u),e.lineTo(n+l,o-u),e.closePath();break;case"star":e.beginPath(),e.moveTo(n,o+i),e.lineTo(n,o-i),e.moveTo(n-i,o),e.lineTo(n+i,o),l=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,e.moveTo(n-l,o-u),e.lineTo(n+l,o+u),e.moveTo(n-l,o+u),e.lineTo(n+l,o-u),e.closePath();break;case"line":e.beginPath(),e.moveTo(n-i,o),e.lineTo(n+i,o),e.closePath();break;case"dash":e.beginPath(),e.moveTo(n,o),e.lineTo(n+i,o),e.closePath()}e.stroke()}},e.clipArea=function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},e.unclipArea=function(t){t.restore()}}},{}],23:[function(t,e,a){"use strict";e.exports=function(t){function e(e){e=e||{};var a=e.data=e.data||{};return a.datasets=a.datasets||[],a.labels=a.labels||[],e.options=i.configMerge(t.defaults.global,t.defaults[e.type],e.options||{}),e}function a(t){var e=t.options;e.scale?t.scale.options=e.scale:e.scales&&e.scales.xAxes.concat(e.scales.yAxes).forEach(function(e){t.scales[e.id].options=e}),t.tooltip._options=e.tooltips}var i=t.helpers,n=t.plugins,o=t.platform;t.types={},t.instances={},t.controllers={},t.Controller=function(a,n,r){var s=this;n=e(n);var l=o.acquireContext(a,n),u=l&&l.canvas,d=u&&u.height,c=u&&u.width;return r.ctx=l,r.canvas=u,r.config=n,r.width=c,r.height=d,r.aspectRatio=d?c/d:null,s.id=i.uid(),s.chart=r,s.config=n,s.options=n.options,s._bufferedRender=!1,t.instances[s.id]=s,Object.defineProperty(s,"data",{get:function(){return s.config.data}}),l&&u?(s.initialize(),s.update(),s):(console.error("Failed to create chart: can't acquire context from the given item"),s)},i.extend(t.Controller.prototype,{initialize:function(){var t=this;return n.notify(t,"beforeInit"),i.retinaScale(t.chart),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildScales(),t.initToolTip(),n.notify(t,"afterInit"),t},clear:function(){return i.clear(this.chart),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var e=this,a=e.chart,o=e.options,r=a.canvas,s=o.maintainAspectRatio&&a.aspectRatio||null,l=Math.floor(i.getMaximumWidth(r)),u=Math.floor(s?l/s:i.getMaximumHeight(r));if((a.width!==l||a.height!==u)&&(r.width=a.width=l,r.height=a.height=u,r.style.width=l+"px",r.style.height=u+"px",i.retinaScale(a),!t)){var d={width:l,height:u};n.notify(e,"resize",[d]),e.options.onResize&&e.options.onResize(e,d),e.stop(),e.update(e.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},a=t.scale;i.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),i.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),a&&(a.id=a.id||"scale")},buildScales:function(){var e=this,a=e.options,n=e.scales={},o=[];a.scales&&(o=o.concat((a.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category"}}),(a.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear"}}))),a.scale&&o.push({options:a.scale,dtype:"radialLinear",isDefault:!0}),i.each(o,function(a){var o=a.options,r=i.getValueOrDefault(o.type,a.dtype),s=t.scaleService.getScaleConstructor(r);if(s){var l=new s({id:o.id,options:o,ctx:e.chart.ctx,chart:e});n[l.id]=l,a.isDefault&&(e.scale=l)}}),t.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,a=[],n=[];if(i.each(e.data.datasets,function(i,o){var r=e.getDatasetMeta(o);r.type||(r.type=i.type||e.config.type),a.push(r.type),r.controller?r.controller.updateIndex(o):(r.controller=new t.controllers[r.type](e,o),n.push(r.controller))},e),a.length>1)for(var o=1;o0||(n.forEach(function(e){delete t[e]}),delete t._chartjs)}}var i=t.helpers,n=["push","pop","shift","splice","unshift"];t.DatasetController=function(t,e){this.initialize(t,e)},i.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){var a=this;a.chart=t,a.index=e,a.linkScales(),a.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),a=t.getDataset();null===e.xAxisID&&(e.xAxisID=a.xAxisID||t.chart.options.scales.xAxes[0].id),null===e.yAxisID&&(e.yAxisID=a.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&a(this._data,this)},createMetaDataset:function(){var t=this,e=t.datasetElementType;return e&&new e({_chart:t.chart.chart,_datasetIndex:t.index})},createMetaData:function(t){var e=this,a=e.dataElementType;return a&&new a({_chart:e.chart.chart,_datasetIndex:e.index,_index:t})},addElements:function(){var t,e,a=this,i=a.getMeta(),n=a.getDataset().data||[],o=i.data;for(t=0,e=n.length;ti&&t.insertElements(i,n-i)},insertElements:function(t,e){for(var a=0;a=0;n--)e.call(a,t[n],n);else for(n=0;n=i[a].length||!i[a][n].type?i[a].push(o.configMerge(s,e)):e.type&&e.type!==i[a][n].type?i[a][n]=o.configMerge(i[a][n],s,e):i[a][n]=o.configMerge(i[a][n],e)}):(i[a]=[],o.each(e,function(e){var n=o.getValueOrDefault(e.type,"xAxes"===a?"category":"linear");i[a].push(o.configMerge(t.scaleService.getScaleDefaults(n),e))})):i.hasOwnProperty(a)&&"object"==typeof i[a]&&null!==i[a]&&"object"==typeof e?i[a]=o.configMerge(i[a],e):i[a]=e}),i},o.getValueAtIndexOrDefault=function(t,e,a){return void 0===t||null===t?a:o.isArray(t)?e=0;i--){var n=t[i];if(e(n))return n}},o.inherits=function(t){var e=this,a=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},i=function(){this.constructor=a};return i.prototype=e.prototype,a.prototype=new i,a.extend=o.inherits,t&&o.extend(a.prototype,t),a.__super__=e.prototype,a},o.noop=function(){},o.uid=function(){var t=0;return function(){return t++}}(),o.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},o.almostEquals=function(t,e,a){return Math.abs(t-e)t},o.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},o.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},o.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return t=+t,0===t||isNaN(t)?t:t>0?1:-1},o.log10=Math.log10?function(t){return Math.log10(t)}:function(t){return Math.log(t)/Math.LN10},o.toRadians=function(t){return t*(Math.PI/180)},o.toDegrees=function(t){return t*(180/Math.PI)},o.getAngleFromPoint=function(t,e){var a=e.x-t.x,i=e.y-t.y,n=Math.sqrt(a*a+i*i),o=Math.atan2(i,a);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:n}},o.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},o.aliasPixel=function(t){return t%2===0?0:.5},o.splineCurve=function(t,e,a,i){var n=t.skip?e:t,o=e,r=a.skip?e:a,s=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),l=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),u=s/(s+l),d=l/(s+l);u=isNaN(u)?0:u,d=isNaN(d)?0:d;var c=i*u,h=i*d;return{previous:{x:o.x-c*(r.x-n.x),y:o.y-c*(r.y-n.y)},next:{x:o.x+h*(r.x-n.x),y:o.y+h*(r.y-n.y)}}},o.EPSILON=Number.EPSILON||1e-14,o.splineCurveMonotone=function(t){var e,a,i,n,r=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),s=r.length;for(e=0;e0?r[e-1]:null,n=e0?r[e-1]:null,n=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},o.previousItem=function(t,e,a){return a?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},o.niceNum=function(t,e){var a,i=Math.floor(o.log10(t)),n=t/Math.pow(10,i);return a=e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10,a*Math.pow(10,i)};var r=o.easingEffects={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return 0===t?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return 1===t?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){return t>=1?t:-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,a=0,i=1;return 0===t?0:1===(t/=1)?1:(a||(a=.3),i0?(a=l[0].clientX,i=l[0].clientY):(a=n.clientX,i=n.clientY);var u=parseFloat(o.getStyle(r,"padding-left")),d=parseFloat(o.getStyle(r,"padding-top")),c=parseFloat(o.getStyle(r,"padding-right")),h=parseFloat(o.getStyle(r,"padding-bottom")),f=s.right-s.left-u-c,g=s.bottom-s.top-d-h;return a=Math.round((a-s.left-u)/f*r.width/e.currentDevicePixelRatio),i=Math.round((i-s.top-d)/g*r.height/e.currentDevicePixelRatio),{x:a,y:i}},o.addEvent=function(t,e,a){t.addEventListener?t.addEventListener(e,a):t.attachEvent?t.attachEvent("on"+e,a):t["on"+e]=a},o.removeEvent=function(t,e,a){t.removeEventListener?t.removeEventListener(e,a,!1):t.detachEvent?t.detachEvent("on"+e,a):t["on"+e]=o.noop},o.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},o.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},o.getMaximumWidth=function(t){var e=t.parentNode,a=parseInt(o.getStyle(e,"padding-left"),10),i=parseInt(o.getStyle(e,"padding-right"),10),n=e.clientWidth-a-i,r=o.getConstraintWidth(t);return isNaN(r)?n:Math.min(n,r)},o.getMaximumHeight=function(t){var e=t.parentNode,a=parseInt(o.getStyle(e,"padding-top"),10),i=parseInt(o.getStyle(e,"padding-bottom"),10),n=e.clientHeight-a-i,r=o.getConstraintHeight(t);return isNaN(r)?n:Math.min(n,r)},o.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},o.retinaScale=function(t){var e=t.currentDevicePixelRatio=window.devicePixelRatio||1;if(1!==e){var a=t.canvas,i=t.height,n=t.width;a.height=i*e,a.width=n*e,t.ctx.scale(e,e),a.style.height=i+"px",a.style.width=n+"px"}},o.clear=function(t){t.ctx.clearRect(0,0,t.width,t.height)},o.fontString=function(t,e,a){return e+" "+t+"px "+a},o.longestText=function(t,e,a,i){i=i||{};var n=i.data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(n=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var s=0;o.each(a,function(e){void 0!==e&&null!==e&&o.isArray(e)!==!0?s=o.measureText(t,n,r,s,e):o.isArray(e)&&o.each(e,function(e){void 0===e||null===e||o.isArray(e)||(s=o.measureText(t,n,r,s,e))})});var l=r.length/2;if(l>a.length){for(var u=0;ui&&(i=o),i},o.numberOfLabelLines=function(t){var e=1;return o.each(t,function(t){o.isArray(t)&&t.length>e&&(e=t.length)}),e},o.drawRoundedRectangle=function(t,e,a,i,n,o){t.beginPath(),t.moveTo(e+o,a),t.lineTo(e+i-o,a),t.quadraticCurveTo(e+i,a,e+i,a+o),t.lineTo(e+i,a+n-o),t.quadraticCurveTo(e+i,a+n,e+i-o,a+n),t.lineTo(e+o,a+n),t.quadraticCurveTo(e,a+n,e,a+n-o),t.lineTo(e,a+o),t.quadraticCurveTo(e,a,e+o,a),t.closePath()},o.color=function(e){return i?i(e instanceof CanvasGradient?t.defaults.global.defaultColor:e):(console.error("Color.js not found!"),e)},o.isArray=Array.isArray?function(t){return Array.isArray(t)}:function(t){return"[object Array]"===Object.prototype.toString.call(t)},o.arrayEquals=function(t,e){var a,i,n,r;if(!t||!e||t.length!==e.length)return!1;for(a=0,i=t.length;a0&&(s=t.getDatasetMeta(s[0]._datasetIndex).data),s},"x-axis":function(t,e){return o(t,e,!0)},point:function(t,a){var n=e(a,t.chart);return i(t,n)},nearest:function(t,a,i){var o=e(a,t.chart),r=n(t,o,i.intersect);return r.length>1&&r.sort(function(t,e){var a=t.getArea(),i=e.getArea(),n=a-i;return 0===n&&(n=t._datasetIndex-e._datasetIndex),n}),r.slice(0,1)},x:function(t,i,n){var o=e(i,t.chart),r=[],s=!1;return a(t,function(t){t.inXRange(o.x)&&r.push(t),t.inRange(o.x,o.y)&&(s=!0)}),n.intersect&&!s&&(r=[]),r},y:function(t,i,n){var o=e(i,t.chart),r=[],s=!1;return a(t,function(t){t.inYRange(o.y)&&r.push(t),t.inRange(o.x,o.y)&&(s=!0)}),n.intersect&&!s&&(r=[]),r}}}}},{}],28:[function(t,e,a){"use strict";e.exports=function(){var t=function(e,a){return this.controller=new t.Controller(e,a,this),this.controller};return t.defaults={global:{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},legendCallback:function(t){var e=[];e.push('
    ');for(var a=0;a'),t.data.datasets[a].label&&e.push(t.data.datasets[a].label),e.push("");return e.push("
"),e.join("")}}},t.Chart=t,t}},{}],29:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers;t.layoutService={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),t.boxes.push(e)},removeBox:function(t,e){t.boxes&&t.boxes.splice(t.boxes.indexOf(e),1)},update:function(t,a,i){function n(t){var e,a=t.isHorizontal();a?(e=t.update(t.options.fullWidth?x:C,w),I-=e.height):(e=t.update(M,S),C-=e.width),D.push({horizontal:a,minSize:e,box:t})}function o(t){var a=e.findNextWhere(D,function(e){return e.box===t});if(a)if(t.isHorizontal()){var i={left:Math.max(F,A),right:Math.max(V,T),top:0,bottom:0};t.update(t.options.fullWidth?x:C,y/2,i)}else t.update(a.minSize.width,I)}function r(t){var a=e.findNextWhere(D,function(e){return e.box===t}),i={left:0,right:0,top:R,bottom:O};a&&t.update(a.minSize.width,I,i)}function s(t){t.isHorizontal()?(t.left=t.options.fullWidth?d:F,t.right=t.options.fullWidth?a-c:F+C,t.top=E,t.bottom=E+t.height,E=t.bottom):(t.left=N,t.right=N+t.width,t.top=R,t.bottom=R+I,N=t.right)}if(t){var l=t.options.layout,u=l?l.padding:null,d=0,c=0,h=0,f=0;isNaN(u)?(d=u.left||0,c=u.right||0,h=u.top||0,f=u.bottom||0):(d=u,c=u,h=u,f=u);var g=e.where(t.boxes,function(t){return"left"===t.options.position}),p=e.where(t.boxes,function(t){return"right"===t.options.position}),m=e.where(t.boxes,function(t){return"top"===t.options.position}),v=e.where(t.boxes,function(t){return"bottom"===t.options.position}),b=e.where(t.boxes,function(t){return"chartArea"===t.options.position});m.sort(function(t,e){return(e.options.fullWidth?1:0)-(t.options.fullWidth?1:0)}),v.sort(function(t,e){return(t.options.fullWidth?1:0)-(e.options.fullWidth?1:0)});var x=a-d-c,y=i-h-f,k=x/2,S=y/2,M=(a-k)/(g.length+p.length),w=(i-S)/(m.length+v.length),C=x,I=y,D=[];e.each(g.concat(p,m,v),n);var A=0,T=0,P=0,_=0;e.each(m.concat(v),function(t){if(t.getPadding){var e=t.getPadding();A=Math.max(A,e.left),T=Math.max(T,e.right)}}),e.each(g.concat(p),function(t){if(t.getPadding){var e=t.getPadding();P=Math.max(P,e.top),_=Math.max(_,e.bottom)}});var F=d,V=c,R=h,O=f;e.each(g.concat(p),o),e.each(g,function(t){F+=t.width}),e.each(p,function(t){V+=t.width}),e.each(m.concat(v),o),e.each(m,function(t){R+=t.height}),e.each(v,function(t){O+=t.height}),e.each(g.concat(p),r),F=d,V=c,R=h,O=f,e.each(g,function(t){F+=t.width}),e.each(p,function(t){V+=t.width}),e.each(m,function(t){R+=t.height}),e.each(v,function(t){O+=t.height});var L=Math.max(A-F,0);F+=L,V+=Math.max(T-V,0);var B=Math.max(P-R,0);R+=B,O+=Math.max(_-O,0);var z=i-R-O,W=a-F-V;W===C&&z===I||(e.each(g,function(t){t.height=z}),e.each(p,function(t){t.height=z}),e.each(m,function(t){t.options.fullWidth||(t.width=W)}),e.each(v,function(t){t.options.fullWidth||(t.width=W)}),I=z,C=W);var N=d+L,E=h+B;e.each(g.concat(m),s),N+=C,E+=I,e.each(p,s),e.each(v,s),t.chartArea={left:F,top:R,right:F+C,bottom:R+I},e.each(b,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(C,I)})}}}}},{}],30:[function(t,e,a){"use strict";e.exports=function(t){function e(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}function a(e,a){var i=new t.Legend({ctx:e.chart.ctx,options:a,chart:e});e.legend=i,t.layoutService.addBox(e,i)}var i=t.helpers,n=i.noop;t.defaults.global.legend={display:!0,position:"top",fullWidth:!0,reverse:!1,onClick:function(t,e){var a=e.datasetIndex,i=this.chart,n=i.getDatasetMeta(a);n.hidden=null===n.hidden?!i.data.datasets[a].hidden:null,i.update()},onHover:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return i.isArray(e.datasets)?e.datasets.map(function(e,a){return{text:e.label,fillStyle:i.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(a),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:a}},this):[]}}},t.Legend=t.Element.extend({initialize:function(t){i.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:n,update:function(t,e,a){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=a,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:n,beforeSetDimensions:n,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:n,beforeBuildLabels:n,buildLabels:function(){var t=this,e=t.options.labels,a=e.generateLabels.call(t,t.chart);e.filter&&(a=a.filter(function(a){return e.filter(a,t.chart.data)})),t.options.reverse&&a.reverse(),t.legendItems=a},afterBuildLabels:n,beforeFit:n,fit:function(){var a=this,n=a.options,o=n.labels,r=n.display,s=a.ctx,l=t.defaults.global,u=i.getValueOrDefault,d=u(o.fontSize,l.defaultFontSize),c=u(o.fontStyle,l.defaultFontStyle),h=u(o.fontFamily,l.defaultFontFamily),f=i.fontString(d,c,h),g=a.legendHitBoxes=[],p=a.minSize,m=a.isHorizontal();if(m?(p.width=a.maxWidth,p.height=r?10:0):(p.width=r?10:0,p.height=a.maxHeight),r)if(s.font=f,m){var v=a.lineWidths=[0],b=a.legendItems.length?d+o.padding:0;s.textAlign="left",s.textBaseline="top",i.each(a.legendItems,function(t,i){var n=e(o,d),r=n+d/2+s.measureText(t.text).width;v[v.length-1]+r+o.padding>=a.width&&(b+=d+o.padding,v[v.length]=a.left),g[i]={left:0,top:0,width:r,height:d},v[v.length-1]+=r+o.padding}),p.height+=b}else{var x=o.padding,y=a.columnWidths=[],k=o.padding,S=0,M=0,w=d+x;i.each(a.legendItems,function(t,a){var i=e(o,d),n=i+d/2+s.measureText(t.text).width;M+w>p.height&&(k+=S+o.padding,y.push(S),S=0,M=0),S=Math.max(S,n),M+=w,g[a]={left:0,top:0,width:n,height:d}}),k+=S,y.push(S),p.width+=k}a.width=p.width,a.height=p.height},afterFit:n,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var a=this,n=a.options,o=n.labels,r=t.defaults.global,s=r.elements.line,l=a.width,u=a.lineWidths;if(n.display){var d,c=a.ctx,h=i.getValueOrDefault,f=h(o.fontColor,r.defaultFontColor),g=h(o.fontSize,r.defaultFontSize),p=h(o.fontStyle,r.defaultFontStyle),m=h(o.fontFamily,r.defaultFontFamily),v=i.fontString(g,p,m);c.textAlign="left",c.textBaseline="top",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=v;var b=e(o,g),x=a.legendHitBoxes,y=function(e,a,i){if(!(isNaN(b)||b<=0)){c.save(),c.fillStyle=h(i.fillStyle,r.defaultColor),c.lineCap=h(i.lineCap,s.borderCapStyle),c.lineDashOffset=h(i.lineDashOffset,s.borderDashOffset),c.lineJoin=h(i.lineJoin,s.borderJoinStyle),c.lineWidth=h(i.lineWidth,s.borderWidth),c.strokeStyle=h(i.strokeStyle,r.defaultColor);var o=0===h(i.lineWidth,s.borderWidth);if(c.setLineDash&&c.setLineDash(h(i.lineDash,s.borderDash)),n.labels&&n.labels.usePointStyle){var l=g*Math.SQRT2/2,u=l/Math.SQRT2,d=e+u,f=a+u;t.canvasHelpers.drawPoint(c,i.pointStyle,l,d,f)}else o||c.strokeRect(e,a,b,g),c.fillRect(e,a,b,g);c.restore()}},k=function(t,e,a,i){c.fillText(a.text,b+g/2+t,e),a.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(b+g/2+t,e+g/2),c.lineTo(b+g/2+t+i,e+g/2),c.stroke())},S=a.isHorizontal();d=S?{x:a.left+(l-u[0])/2,y:a.top+o.padding,line:0}:{x:a.left+o.padding,y:a.top+o.padding,line:0};var M=g+o.padding;i.each(a.legendItems,function(t,e){var i=c.measureText(t.text).width,n=b+g/2+i,r=d.x,s=d.y;S?r+n>=l&&(s=d.y+=M,d.line++,r=d.x=a.left+(l-u[d.line])/2):s+M>a.bottom&&(r=d.x=r+a.columnWidths[d.line]+o.padding,s=d.y=a.top+o.padding,d.line++),y(r,s,t),x[e].left=r,x[e].top=s,k(r,s,t,i),S?d.x+=n+o.padding:d.y+=M})}},handleEvent:function(t){var e=this,a=e.options,i="mouseup"===t.type?"click":t.type,n=!1;if("mousemove"===i){if(!a.onHover)return}else{if("click"!==i)return;if(!a.onClick)return}var o=t.x,r=t.y;if(o>=e.left&&o<=e.right&&r>=e.top&&r<=e.bottom)for(var s=e.legendHitBoxes,l=0;l=u.left&&o<=u.left+u.width&&r>=u.top&&r<=u.top+u.height){if("click"===i){a.onClick.call(e,t.native,e.legendItems[l]),n=!0;break}if("mousemove"===i){a.onHover.call(e,t.native,e.legendItems[l]),n=!0;break}}}return n}}),t.plugins.register({beforeInit:function(t){var e=t.options.legend;e&&a(t,e)},beforeUpdate:function(e){var n=e.options.legend;n?(n=i.configMerge(t.defaults.global.legend,n),e.legend?e.legend.options=n:a(e,n)):(t.layoutService.removeBox(e,e.legend),delete e.legend)},afterEvent:function(t,e){var a=t.legend;a&&a.handleEvent(e)}})}},{}],31:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.global.plugins={},t.plugins={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){e.indexOf(t)===-1&&e.push(t)}),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach(function(t){var a=e.indexOf(t);a!==-1&&e.splice(a,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length; -},getAll:function(){return this._plugins},notify:function(t,e,a){var i,n,o,r,s,l=this.descriptors(t),u=l.length;for(i=0;ic&&rt.maxHeight){r--;break}r++,d=s*u}t.labelRotation=r},afterCalculateTickRotation:function(){i.callCallback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){i.callCallback(this.options.beforeFit,[this])},fit:function(){var t=this,n=t.minSize={width:0,height:0},o=t.options,r=o.ticks,s=o.scaleLabel,l=o.gridLines,u=o.display,d=t.isHorizontal(),c=a(r),h=1.5*a(s).size,f=o.gridLines.tickMarkLength;if(d?n.width=t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:n.width=u&&l.drawTicks?f:0,d?n.height=u&&l.drawTicks?f:0:n.height=t.maxHeight,s.display&&u&&(d?n.height+=h:n.width+=h),r.display&&u){var g=i.longestText(t.ctx,c.font,t.ticks,t.longestTextCache),p=i.numberOfLabelLines(t.ticks),m=.5*c.size;if(d){t.longestLabelWidth=g;var v=i.toRadians(t.labelRotation),b=Math.cos(v),x=Math.sin(v),y=x*g+c.size*p+m*p;n.height=Math.min(t.maxHeight,n.height+y),t.ctx.font=c.font;var k=t.ticks[0],S=e(t.ctx,k,c.font),M=t.ticks[t.ticks.length-1],w=e(t.ctx,M,c.font);0!==t.labelRotation?(t.paddingLeft="bottom"===o.position?b*S+3:b*m+3,t.paddingRight="bottom"===o.position?b*m+3:b*w+3):(t.paddingLeft=S/2+3,t.paddingRight=w/2+3)}else r.mirror?g=0:g+=t.options.ticks.padding,n.width+=g,t.paddingTop=c.size/2,t.paddingBottom=c.size/2}t.handleMargins(),t.width=n.width,t.height=n.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){i.callCallback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){return null===t||"undefined"==typeof t?NaN:"number"!=typeof t||isFinite(t)?"object"==typeof t?t instanceof Date||t.isValid?t:this.getRightValue(this.isHorizontal()?t.x:t.y):t:NaN},getLabelForIndex:i.noop,getPixelForValue:i.noop,getValueForPixel:i.noop,getPixelForTick:function(t,e){var a=this;if(a.isHorizontal()){var i=a.width-(a.paddingLeft+a.paddingRight),n=i/Math.max(a.ticks.length-(a.options.gridLines.offsetGridLines?0:1),1),o=n*t+a.paddingLeft;e&&(o+=n/2);var r=a.left+Math.round(o);return r+=a.isFullWidth()?a.margins.left:0}var s=a.height-(a.paddingTop+a.paddingBottom);return a.top+t*(s/(a.ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var a=e.width-(e.paddingLeft+e.paddingRight),i=a*t+e.paddingLeft,n=e.left+Math.round(i);return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this,e=t.min,a=t.max;return t.beginAtZero?0:e<0&&a<0?a:e>0&&a>0?e:0},draw:function(e){var n=this,o=n.options;if(o.display){var r,s,l=n.ctx,u=t.defaults.global,d=o.ticks,c=o.gridLines,h=o.scaleLabel,f=0!==n.labelRotation,g=d.autoSkip,p=n.isHorizontal();d.maxTicksLimit&&(s=d.maxTicksLimit);var m=i.getValueOrDefault(d.fontColor,u.defaultFontColor),v=a(d),b=c.drawTicks?c.tickMarkLength:0,x=i.getValueOrDefault(c.borderDash,u.borderDash),y=i.getValueOrDefault(c.borderDashOffset,u.borderDashOffset),k=i.getValueOrDefault(h.fontColor,u.defaultFontColor),S=a(h),M=i.toRadians(n.labelRotation),w=Math.cos(M),C=n.longestLabelWidth*w;l.fillStyle=m;var I=[];if(p){if(r=!1,f&&(C/=2),(C+d.autoSkipPadding)*n.ticks.length>n.width-(n.paddingLeft+n.paddingRight)&&(r=1+Math.floor((C+d.autoSkipPadding)*n.ticks.length/(n.width-(n.paddingLeft+n.paddingRight)))),s&&n.ticks.length>s)for(;!r||n.ticks.length/(r||1)>s;)r||(r=1),r+=1;g||(r=!1)}var D="right"===o.position?n.left:n.right-b,A="right"===o.position?n.left+b:n.right,T="bottom"===o.position?n.top:n.bottom-b,P="bottom"===o.position?n.top+b:n.bottom;if(i.each(n.ticks,function(t,a){if(void 0!==t&&null!==t){var s=n.ticks.length===a+1,l=r>1&&a%r>0||a%r===0&&a+r>=n.ticks.length;if((!l||s)&&void 0!==t&&null!==t){var u,h;a===("undefined"!=typeof n.zeroLineIndex?n.zeroLineIndex:0)?(u=c.zeroLineWidth,h=c.zeroLineColor):(u=i.getValueAtIndexOrDefault(c.lineWidth,a),h=i.getValueAtIndexOrDefault(c.color,a));var g,m,v,k,S,w,C,_,F,V,R="middle",O="middle";if(p){"bottom"===o.position?(O=f?"middle":"top",R=f?"right":"center",V=n.top+b):(O=f?"middle":"bottom",R=f?"left":"center",V=n.bottom-b);var L=n.getPixelForTick(a)+i.aliasPixel(u);F=n.getPixelForTick(a,c.offsetGridLines)+d.labelOffset,g=v=S=C=L,m=T,k=P,w=e.top,_=e.bottom}else{var B,z="left"===o.position,W=d.padding;d.mirror?(R=z?"left":"right",B=W):(R=z?"right":"left",B=b+W),F=z?n.right-B:n.left+B;var N=n.getPixelForTick(a);N+=i.aliasPixel(u),V=n.getPixelForTick(a,c.offsetGridLines),g=D,v=A,S=e.left,C=e.right,m=k=w=_=N}I.push({tx1:g,ty1:m,tx2:v,ty2:k,x1:S,y1:w,x2:C,y2:_,labelX:F,labelY:V,glWidth:u,glColor:h,glBorderDash:x,glBorderDashOffset:y,rotation:-1*M,label:t,textBaseline:O,textAlign:R})}}}),i.each(I,function(t){if(c.display&&(l.save(),l.lineWidth=t.glWidth,l.strokeStyle=t.glColor,l.setLineDash&&(l.setLineDash(t.glBorderDash),l.lineDashOffset=t.glBorderDashOffset),l.beginPath(),c.drawTicks&&(l.moveTo(t.tx1,t.ty1),l.lineTo(t.tx2,t.ty2)),c.drawOnChartArea&&(l.moveTo(t.x1,t.y1),l.lineTo(t.x2,t.y2)),l.stroke(),l.restore()),d.display){l.save(),l.translate(t.labelX,t.labelY),l.rotate(t.rotation),l.font=v.font,l.textBaseline=t.textBaseline,l.textAlign=t.textAlign;var e=t.label;if(i.isArray(e))for(var a=0,n=0;a0)i=t.stepSize;else{var o=e.niceNum(a.max-a.min,!1);i=e.niceNum(o/(t.maxTicks-1),!0)}var r=Math.floor(a.min/i)*i,s=Math.ceil(a.max/i)*i;t.min&&t.max&&t.stepSize&&e.almostWhole((t.max-t.min)/t.stepSize,i/1e3)&&(r=t.min,s=t.max);var l=(s-r)/i;l=e.almostEquals(l,Math.round(l),i/1e3)?Math.round(l):Math.ceil(l),n.push(void 0!==t.min?t.min:r);for(var u=1;u3?i[2]-i[1]:i[1]-i[0];Math.abs(n)>1&&t!==Math.floor(t)&&(n=t-Math.floor(t));var o=e.log10(Math.abs(n)),r="";if(0!==t){var s=-1*Math.floor(o);s=Math.max(Math.min(s,20),0),r=t.toFixed(s)}else r="0";return r},logarithmic:function(t,a,i){var n=t/Math.pow(10,Math.floor(e.log10(t)));return 0===t?"0":1===n||2===n||5===n||0===a||a===i.length-1?t.toExponential():""}}}}},{}],35:[function(t,e,a){"use strict";e.exports=function(t){function e(e,a){var i=new t.Title({ctx:e.chart.ctx,options:a,chart:e});e.titleBlock=i,t.layoutService.addBox(e,i)}var a=t.helpers;t.defaults.global.title={display:!1,position:"top",fullWidth:!0,fontStyle:"bold",padding:10,text:""};var i=a.noop;t.Title=t.Element.extend({initialize:function(t){var e=this;a.extend(e,t),e.legendHitBoxes=[]},beforeUpdate:i,update:function(t,e,a){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=a,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:i,beforeSetDimensions:i,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:i,beforeBuildLabels:i,buildLabels:i,afterBuildLabels:i,beforeFit:i,fit:function(){var e=this,i=a.getValueOrDefault,n=e.options,o=t.defaults.global,r=n.display,s=i(n.fontSize,o.defaultFontSize),l=e.minSize;e.isHorizontal()?(l.width=e.maxWidth,l.height=r?s+2*n.padding:0):(l.width=r?s+2*n.padding:0,l.height=e.maxHeight),e.width=l.width,e.height=l.height},afterFit:i,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var e=this,i=e.ctx,n=a.getValueOrDefault,o=e.options,r=t.defaults.global;if(o.display){var s,l,u,d=n(o.fontSize,r.defaultFontSize),c=n(o.fontStyle,r.defaultFontStyle),h=n(o.fontFamily,r.defaultFontFamily),f=a.fontString(d,c,h),g=0,p=e.top,m=e.left,v=e.bottom,b=e.right;i.fillStyle=n(o.fontColor,r.defaultFontColor),i.font=f,e.isHorizontal()?(s=m+(b-m)/2,l=p+(v-p)/2,u=b-m):(s="left"===o.position?m+d/2:b-d/2,l=p+(v-p)/2,u=v-p,g=Math.PI*("left"===o.position?-.5:.5)),i.save(),i.translate(s,l),i.rotate(g),i.textAlign="center",i.textBaseline="middle",i.fillText(o.text,0,0,u),i.restore()}}}),t.plugins.register({beforeInit:function(t){var a=t.options.title;a&&e(t,a)},beforeUpdate:function(i){var n=i.options.title;n?(n=a.configMerge(t.defaults.global.title,n),i.titleBlock?i.titleBlock.options=n:e(i,n)):(t.layoutService.removeBox(i,i.titleBlock),delete i.titleBlock)}})}},{}],36:[function(t,e,a){"use strict";e.exports=function(t){function e(t,e){var a=l.color(t);return a.alpha(e*a.alpha()).rgbaString()}function a(t,e){return e&&(l.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function i(t){var e=t._xScale,a=t._yScale||t._scale,i=t._index,n=t._datasetIndex;return{xLabel:e?e.getLabelForIndex(i,n):"",yLabel:a?a.getLabelForIndex(i,n):"",index:i,datasetIndex:n,x:t._model.x,y:t._model.y}}function n(e){var a=t.defaults.global,i=l.getValueOrDefault;return{xPadding:e.xPadding,yPadding:e.yPadding,xAlign:e.xAlign,yAlign:e.yAlign,bodyFontColor:e.bodyFontColor,_bodyFontFamily:i(e.bodyFontFamily,a.defaultFontFamily),_bodyFontStyle:i(e.bodyFontStyle,a.defaultFontStyle),_bodyAlign:e.bodyAlign,bodyFontSize:i(e.bodyFontSize,a.defaultFontSize),bodySpacing:e.bodySpacing,titleFontColor:e.titleFontColor,_titleFontFamily:i(e.titleFontFamily,a.defaultFontFamily),_titleFontStyle:i(e.titleFontStyle,a.defaultFontStyle),titleFontSize:i(e.titleFontSize,a.defaultFontSize),_titleAlign:e.titleAlign,titleSpacing:e.titleSpacing,titleMarginBottom:e.titleMarginBottom,footerFontColor:e.footerFontColor,_footerFontFamily:i(e.footerFontFamily,a.defaultFontFamily),_footerFontStyle:i(e.footerFontStyle,a.defaultFontStyle),footerFontSize:i(e.footerFontSize,a.defaultFontSize),_footerAlign:e.footerAlign,footerSpacing:e.footerSpacing,footerMarginTop:e.footerMarginTop,caretSize:e.caretSize,cornerRadius:e.cornerRadius,backgroundColor:e.backgroundColor,opacity:0,legendColorBackground:e.multiKeyBackground,displayColors:e.displayColors}}function o(t,e){var a=t._chart.ctx,i=2*e.yPadding,n=0,o=e.body,r=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);r+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,u=e.footer.length,d=e.titleFontSize,c=e.bodyFontSize,h=e.footerFontSize;i+=s*d,i+=s?(s-1)*e.titleSpacing:0,i+=s?e.titleMarginBottom:0,i+=r*c,i+=r?(r-1)*e.bodySpacing:0,i+=u?e.footerMarginTop:0,i+=u*h,i+=u?(u-1)*e.footerSpacing:0;var f=0,g=function(t){n=Math.max(n,a.measureText(t).width+f)};return a.font=l.fontString(d,e._titleFontStyle,e._titleFontFamily),l.each(e.title,g),a.font=l.fontString(c,e._bodyFontStyle,e._bodyFontFamily),l.each(e.beforeBody.concat(e.afterBody),g),f=e.displayColors?c+2:0,l.each(o,function(t){l.each(t.before,g),l.each(t.lines,g),l.each(t.after,g)}),f=0,a.font=l.fontString(h,e._footerFontStyle,e._footerFontFamily),l.each(e.footer,g),n+=2*e.xPadding,{width:n,height:i}}function r(t,e){var a=t._model,i=t._chart,n=t._chartInstance.chartArea,o="center",r="center";a.yi.height-e.height&&(r="bottom");var s,l,u,d,c,h=(n.left+n.right)/2,f=(n.top+n.bottom)/2;"center"===r?(s=function(t){return t<=h},l=function(t){return t>h}):(s=function(t){return t<=e.width/2},l=function(t){return t>=i.width-e.width/2}),u=function(t){return t+e.width>i.width},d=function(t){return t-e.width<0},c=function(t){return t<=f?"top":"bottom"},s(a.x)?(o="left",u(a.x)&&(o="center",r=c(a.y))):l(a.x)&&(o="right",d(a.x)&&(o="center",r=c(a.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:o,yAlign:g.yAlign?g.yAlign:r}}function s(t,e,a){var i=t.x,n=t.y,o=t.caretSize,r=t.caretPadding,s=t.cornerRadius,l=a.xAlign,u=a.yAlign,d=o+r,c=s+r;return"right"===l?i-=e.width:"center"===l&&(i-=e.width/2),"top"===u?n+=d:n-="bottom"===u?e.height+d:e.height/2,"center"===u?"left"===l?i+=d:"right"===l&&(i-=d):"left"===l?i-=c:"right"===l&&(i+=c),{x:i,y:n}}var l=t.helpers;t.defaults.global.tooltips={enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,callbacks:{beforeTitle:l.noop,title:function(t,e){var a="",i=e.labels,n=i?i.length:0;if(t.length>0){var o=t[0];o.xLabel?a=o.xLabel:n>0&&o.indexl;)o-=2*Math.PI;for(;o=s&&o<=l,d=r>=i.innerRadius&&r<=i.outerRadius;return u&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,a=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*a,y:t.y+Math.sin(e)*a}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,a=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*a,y:t.y+Math.sin(e)*a}},draw:function(){var t=this._chart.ctx,e=this._view,a=e.startAngle,i=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,a,i),t.arc(e.x,e.y,e.innerRadius,i,a,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})}},{}],38:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a=t.defaults.global;t.defaults.global.elements.line={tension:.4,backgroundColor:a.defaultColor,borderWidth:3,borderColor:a.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0},t.elements.Line=t.Element.extend({draw:function(){function t(t,e){var a=e._view;e._view.steppedLine===!0?(l.lineTo(a.x,t._view.y),l.lineTo(a.x,a.y)):0===e._view.tension?l.lineTo(a.x,a.y):l.bezierCurveTo(t._view.controlPointNextX,t._view.controlPointNextY,a.controlPointPreviousX,a.controlPointPreviousY,a.x,a.y)}var i=this,n=i._view,o=n.spanGaps,r=n.scaleZero,s=i._loop;s||("top"===n.fill?r=n.scaleTop:"bottom"===n.fill&&(r=n.scaleBottom));var l=i._chart.ctx;l.save();var u=i._children.slice(),d=-1;s&&u.length&&u.push(u[0]);var c,h,f,g;if(u.length&&n.fill){for(l.beginPath(),c=0;ce?1:-1,r=1,s=u.borderSkipped||"left"):(e=u.x-u.width/2,a=u.x+u.width/2,i=u.y,n=u.base,o=1,r=n>i?1:-1,s=u.borderSkipped||"bottom"),d){var c=Math.min(Math.abs(e-a),Math.abs(i-n));d=d>c?c:d;var h=d/2,f=e+("left"!==s?h*o:0),g=a+("right"!==s?-h*o:0),p=i+("top"!==s?h*r:0),m=n+("bottom"!==s?-h*r:0);f!==g&&(i=p,n=m),p!==m&&(e=f,a=g)}l.beginPath(),l.fillStyle=u.backgroundColor,l.strokeStyle=u.borderColor,l.lineWidth=d;var v=[[e,n],[e,i],[a,i],[a,n]],b=["bottom","left","top","right"],x=b.indexOf(s,0);x===-1&&(x=0);var y=t(0);l.moveTo(y[0],y[1]);for(var k=1;k<4;k++)y=t(k),l.lineTo(y[0],y[1]);l.fill(),d&&l.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var i=!1;if(this._view){var n=a(this);i=t>=n.left&&t<=n.right&&e>=n.top&&e<=n.bottom}return i},inLabelRange:function(t,i){var n=this;if(!n._view)return!1;var o=!1,r=a(n);return o=e(n)?t>=r.left&&t<=r.right:i>=r.top&&i<=r.bottom},inXRange:function(t){var e=a(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=a(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,a,i=this._view;return e(this)?(t=i.x,a=(i.y+i.base)/2):(t=(i.x+i.base)/2,a=i.y),{x:t,y:a}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})}},{}],41:[function(t,e,a){"use strict";e.exports=function(t){function e(t,e){var a=l.getStyle(t,e),i=a&&a.match(/(\d+)px/);return i?Number(i[1]):void 0}function a(t,a){var i=t.style,n=t.getAttribute("height"),o=t.getAttribute("width");if(t._chartjs={initial:{height:n,width:o,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",null===o||""===o){var r=e(t,"width");void 0!==r&&(t.width=r)}if(null===n||""===n)if(""===t.style.height)t.height=t.width/(a.options.aspectRatio||2);else{var s=e(t,"height");void 0!==r&&(t.height=s)}return t}function i(t,e,a,i,n){return{type:t,chart:e,native:n||null,x:void 0!==a?a:null,y:void 0!==i?i:null}}function n(t,e){ -var a=u[t.type]||t.type,n=l.getRelativePosition(t,e);return i(a,e,n.x,n.y,t)}function o(t){var e=document.createElement("iframe");return e.className="chartjs-hidden-iframe",e.style.cssText="display:block;overflow:hidden;border:0;margin:0;top:0;left:0;bottom:0;right:0;height:100%;width:100%;position:absolute;pointer-events:none;z-index:-1;",e.tabIndex=-1,l.addEvent(e,"load",function(){l.addEvent(e.contentWindow||e,"resize",t),t()}),e}function r(t,e,a){var n=t._chartjs={ticking:!1},r=function(){n.ticking||(n.ticking=!0,l.requestAnimFrame.call(window,function(){if(n.resizer)return n.ticking=!1,e(i("resize",a))}))};n.resizer=o(r),t.insertBefore(n.resizer,t.firstChild)}function s(t){if(t&&t._chartjs){var e=t._chartjs.resizer;e&&(e.parentNode.removeChild(e),t._chartjs.resizer=null),delete t._chartjs}}var l=t.helpers,u={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};return{acquireContext:function(t,e){if("string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t instanceof HTMLCanvasElement){var i=t.getContext&&t.getContext("2d");if(i instanceof CanvasRenderingContext2D)return a(t,e),i}return null},releaseContext:function(t){var e=t.canvas;if(e._chartjs){var a=e._chartjs.initial;["height","width"].forEach(function(t){var i=a[t];void 0===i||null===i?e.removeAttribute(t):e.setAttribute(t,i)}),l.each(a.style||{},function(t,a){e.style[a]=t}),e.width=e.width,delete e._chartjs}},addEventListener:function(t,e,a){var i=t.chart.canvas;if("resize"===e)return void r(i.parentNode,a,t.chart);var o=a._chartjs||(a._chartjs={}),s=o.proxies||(o.proxies={}),u=s[t.id+"_"+e]=function(e){a(n(e,t.chart))};l.addEvent(i,e,u)},removeEventListener:function(t,e,a){var i=t.chart.canvas;if("resize"===e)return void s(i.parentNode,a);var n=a._chartjs||{},o=n.proxies||{},r=o[t.id+"_"+e];r&&l.removeEvent(i,e,r)}}}},{}],42:[function(t,e,a){"use strict";var i=t(41);e.exports=function(t){t.platform={acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},t.helpers.extend(t.platform,i(t))}},{41:41}],43:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a={position:"bottom"},i=t.Scale.extend({getLabels:function(){var t=this.chart.data;return(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t=this,a=t.getLabels();t.minIndex=0,t.maxIndex=a.length-1;var i;void 0!==t.options.ticks.min&&(i=e.indexOf(a,t.options.ticks.min),t.minIndex=i!==-1?i:t.minIndex),void 0!==t.options.ticks.max&&(i=e.indexOf(a,t.options.ticks.max),t.maxIndex=i!==-1?i:t.maxIndex),t.min=a[t.minIndex],t.max=a[t.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var a=this,i=a.chart.data,n=a.isHorizontal();return i.yLabels&&!n?a.getRightValue(i.datasets[e].data[t]):a.ticks[t-a.minIndex]},getPixelForValue:function(t,e,a,i){var n=this,o=Math.max(n.maxIndex+1-n.minIndex-(n.options.gridLines.offsetGridLines?0:1),1);if(void 0!==t&&isNaN(e)){var r=n.getLabels(),s=r.indexOf(t);e=s!==-1?s:e}if(n.isHorizontal()){var l=n.width/o,u=l*(e-n.minIndex);return(n.options.gridLines.offsetGridLines&&i||n.maxIndex===n.minIndex&&i)&&(u+=l/2),n.left+Math.round(u)}var d=n.height/o,c=d*(e-n.minIndex);return n.options.gridLines.offsetGridLines&&i&&(c+=d/2),n.top+Math.round(c)},getPixelForTick:function(t,e){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null,e)},getValueForPixel:function(t){var e,a=this,i=Math.max(a.ticks.length-(a.options.gridLines.offsetGridLines?0:1),1),n=a.isHorizontal(),o=(n?a.width:a.height)/i;return t-=n?a.left:a.top,a.options.gridLines.offsetGridLines&&(t-=o/2),e=t<=0?0:Math.round(t/o)},getBasePixel:function(){return this.bottom}});t.scaleService.registerScaleType("category",i,a)}},{}],44:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a={position:"left",ticks:{callback:t.Ticks.formatters.linear}},i=t.LinearScaleBase.extend({determineDataLimits:function(){function t(t){return s?t.xAxisID===a.id:t.yAxisID===a.id}var a=this,i=a.options,n=a.chart,o=n.data,r=o.datasets,s=a.isHorizontal();a.min=null,a.max=null;var l=i.stacked;if(void 0===l&&e.each(r,function(e,a){if(!l){var i=n.getDatasetMeta(a);n.isDatasetVisible(a)&&t(i)&&void 0!==i.stack&&(l=!0)}}),i.stacked||l){var u={};e.each(r,function(o,r){var s=n.getDatasetMeta(r),l=[s.type,void 0===i.stacked&&void 0===s.stack?r:"",s.stack].join(".");void 0===u[l]&&(u[l]={positiveValues:[],negativeValues:[]});var d=u[l].positiveValues,c=u[l].negativeValues;n.isDatasetVisible(r)&&t(s)&&e.each(o.data,function(t,e){var n=+a.getRightValue(t);isNaN(n)||s.data[e].hidden||(d[e]=d[e]||0,c[e]=c[e]||0,i.relativePoints?d[e]=100:n<0?c[e]+=n:d[e]+=n)})}),e.each(u,function(t){var i=t.positiveValues.concat(t.negativeValues),n=e.min(i),o=e.max(i);a.min=null===a.min?n:Math.min(a.min,n),a.max=null===a.max?o:Math.max(a.max,o)})}else e.each(r,function(i,o){var r=n.getDatasetMeta(o);n.isDatasetVisible(o)&&t(r)&&e.each(i.data,function(t,e){var i=+a.getRightValue(t);isNaN(i)||r.data[e].hidden||(null===a.min?a.min=i:ia.max&&(a.max=i))})});this.handleTickRangeOptions()},getTickLimit:function(){var a,i=this,n=i.options.ticks;if(i.isHorizontal())a=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(i.width/50));else{var o=e.getValueOrDefault(n.fontSize,t.defaults.global.defaultFontSize);a=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(i.height/(2*o)))}return a},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e,a=this,i=a.start,n=+a.getRightValue(t),o=a.end-i;return a.isHorizontal()?(e=a.left+a.width/o*(n-i),Math.round(e)):(e=a.bottom-a.height/o*(n-i),Math.round(e))},getValueForPixel:function(t){var e=this,a=e.isHorizontal(),i=a?e.width:e.height,n=(a?t-e.left:e.bottom-t)/i;return e.start+(e.end-e.start)*n},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType("linear",i,a)}},{}],45:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a=e.noop;t.LinearScaleBase=t.Scale.extend({handleTickRangeOptions:function(){var t=this,a=t.options,i=a.ticks;if(i.beginAtZero){var n=e.sign(t.min),o=e.sign(t.max);n<0&&o<0?t.max=0:n>0&&o>0&&(t.min=0)}void 0!==i.min?t.min=i.min:void 0!==i.suggestedMin&&(t.min=Math.min(t.min,i.suggestedMin)),void 0!==i.max?t.max=i.max:void 0!==i.suggestedMax&&(t.max=Math.max(t.max,i.suggestedMax)),t.min===t.max&&(t.max++,i.beginAtZero||t.min--)},getTickLimit:a,handleDirectionalChanges:a,buildTicks:function(){var a=this,i=a.options,n=i.ticks,o=a.getTickLimit();o=Math.max(2,o);var r={maxTicks:o,min:n.min,max:n.max,stepSize:e.getValueOrDefault(n.fixedStepSize,n.stepSize)},s=a.ticks=t.Ticks.generators.linear(r,a);a.handleDirectionalChanges(),a.max=e.max(s),a.min=e.min(s),n.reverse?(s.reverse(),a.start=a.max,a.end=a.min):(a.start=a.min,a.end=a.max)},convertTicksToLabels:function(){var e=this;e.ticksAsNumbers=e.ticks.slice(),e.zeroLineIndex=e.ticks.indexOf(0),t.Scale.prototype.convertTicksToLabels.call(e)}})}},{}],46:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a={position:"left",ticks:{callback:t.Ticks.formatters.logarithmic}},i=t.Scale.extend({determineDataLimits:function(){function t(t){return u?t.xAxisID===a.id:t.yAxisID===a.id}var a=this,i=a.options,n=i.ticks,o=a.chart,r=o.data,s=r.datasets,l=e.getValueOrDefault,u=a.isHorizontal();a.min=null,a.max=null,a.minNotZero=null;var d=i.stacked;if(void 0===d&&e.each(s,function(e,a){if(!d){var i=o.getDatasetMeta(a);o.isDatasetVisible(a)&&t(i)&&void 0!==i.stack&&(d=!0)}}),i.stacked||d){var c={};e.each(s,function(n,r){var s=o.getDatasetMeta(r),l=[s.type,void 0===i.stacked&&void 0===s.stack?r:"",s.stack].join(".");o.isDatasetVisible(r)&&t(s)&&(void 0===c[l]&&(c[l]=[]),e.each(n.data,function(t,e){var n=c[l],o=+a.getRightValue(t);isNaN(o)||s.data[e].hidden||(n[e]=n[e]||0,i.relativePoints?n[e]=100:n[e]+=o)}))}),e.each(c,function(t){var i=e.min(t),n=e.max(t);a.min=null===a.min?i:Math.min(a.min,i),a.max=null===a.max?n:Math.max(a.max,n)})}else e.each(s,function(i,n){var r=o.getDatasetMeta(n);o.isDatasetVisible(n)&&t(r)&&e.each(i.data,function(t,e){var i=+a.getRightValue(t);isNaN(i)||r.data[e].hidden||(null===a.min?a.min=i:ia.max&&(a.max=i),0!==i&&(null===a.minNotZero||in?{start:e-a-5,end:e}:{start:e,end:e+a+5}}function o(t){var o,r,s,l=a(t),u=Math.min(t.height/2,t.width/2),d={l:t.width,r:0,t:t.height,b:0},c={};t.ctx.font=l.font,t._pointLabelSizes=[];var h=e(t);for(o=0;od.r&&(d.r=m.end,c.r=g),v.startd.b&&(d.b=v.end,c.b=g)}t.setReductions(u,d,c)}function r(t){var e=Math.min(t.height/2,t.width/2);t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0)}function s(t){return 0===t||180===t?"center":t<180?"left":"right"}function l(t,e,a,i){if(f.isArray(e))for(var n=a.y,o=1.5*i,r=0;r270||t<90)&&(a.y-=e.h)}function d(t){var i=t.ctx,n=f.getValueOrDefault,o=t.options,r=o.angleLines,d=o.pointLabels;i.lineWidth=r.lineWidth,i.strokeStyle=r.color;var c=t.getDistanceFromCenterForValue(o.reverse?t.min:t.max),h=a(t);i.textBaseline="top";for(var p=e(t)-1;p>=0;p--){if(r.display){var m=t.getPointPosition(p,c);i.beginPath(),i.moveTo(t.xCenter,t.yCenter),i.lineTo(m.x,m.y),i.stroke(),i.closePath()}var v=t.getPointPosition(p,c+5),b=n(d.fontColor,g.defaultFontColor);i.font=h.font,i.fillStyle=b;var x=t.getIndexAngle(p),y=f.toDegrees(x);i.textAlign=s(y),u(y,t._pointLabelSizes[p],v),l(i,t.pointLabels[p]||"",v,h.size)}}function c(t,a,i,n){var o=t.ctx;if(o.strokeStyle=f.getValueAtIndexOrDefault(a.color,n-1),o.lineWidth=f.getValueAtIndexOrDefault(a.lineWidth,n-1),t.options.lineArc)o.beginPath(),o.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),o.closePath(),o.stroke();else{var r=e(t);if(0===r)return;o.beginPath();var s=t.getPointPosition(0,i);o.moveTo(s.x,s.y);for(var l=1;l0&&a>0?e:0)},draw:function(){var t=this,e=t.options,a=e.gridLines,i=e.ticks,n=f.getValueOrDefault;if(e.display){var o=t.ctx,r=n(i.fontSize,g.defaultFontSize),s=n(i.fontStyle,g.defaultFontStyle),l=n(i.fontFamily,g.defaultFontFamily),u=f.fontString(r,s,l);f.each(t.ticks,function(s,l){if(l>0||e.reverse){var d=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]),h=t.yCenter-d;if(a.display&&0!==l&&c(t,a,d,l),i.display){var f=n(i.fontColor,g.defaultFontColor);if(o.font=u,i.showLabelBackdrop){var p=o.measureText(s).width;o.fillStyle=i.backdropColor,o.fillRect(t.xCenter-p/2-i.backdropPaddingX,h-r/2-i.backdropPaddingY,p+2*i.backdropPaddingX,r+2*i.backdropPaddingY)}o.textAlign="center",o.textBaseline="middle",o.fillStyle=f,o.fillText(s,t.xCenter,h)}}}),e.lineArc||d(t)}}});t.scaleService.registerScaleType("radialLinear",m,p)}},{}],48:[function(t,e,a){"use strict";var i=t(1);i="function"==typeof i?i:window.moment,e.exports=function(t){var e=t.helpers,a={units:[{name:"millisecond",steps:[1,2,5,10,20,50,100,250,500]},{name:"second",steps:[1,2,5,10,30]},{name:"minute",steps:[1,2,5,10,30]},{name:"hour",steps:[1,2,3,6,12]},{name:"day",steps:[1,2,5]},{name:"week",maxStep:4},{name:"month",maxStep:3},{name:"quarter",maxStep:4},{name:"year",maxStep:!1}]},n={position:"bottom",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm:ss a",hour:"MMM D, hA",day:"ll",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1}},o=t.Scale.extend({initialize:function(){if(!i)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");t.Scale.prototype.initialize.call(this)},getLabelMoment:function(t,e){return null===t||null===e?null:"undefined"!=typeof this.labelMoments[t]?this.labelMoments[t][e]:null},getLabelDiff:function(t,e){var a=this;return null===t||null===e?null:(void 0===a.labelDiffs&&a.buildLabelDiffs(),"undefined"!=typeof a.labelDiffs[t]?a.labelDiffs[t][e]:null)},getMomentStartOf:function(t){var e=this;return"week"===e.options.time.unit&&e.options.time.isoWeekday!==!1?t.clone().startOf("isoWeek").isoWeekday(e.options.time.isoWeekday):t.clone().startOf(e.tickUnit)},determineDataLimits:function(){var t=this;t.labelMoments=[];var a=[];t.chart.data.labels&&t.chart.data.labels.length>0?(e.each(t.chart.data.labels,function(e){var i=t.parseTime(e);i.isValid()&&(t.options.time.round&&i.startOf(t.options.time.round),a.push(i))},t),t.firstTick=i.min.call(t,a),t.lastTick=i.max.call(t,a)):(t.firstTick=null,t.lastTick=null),e.each(t.chart.data.datasets,function(n,o){var r=[],s=t.chart.isDatasetVisible(o);"object"==typeof n.data[0]&&null!==n.data[0]?e.each(n.data,function(e){var a=t.parseTime(t.getRightValue(e));a.isValid()&&(t.options.time.round&&a.startOf(t.options.time.round),r.push(a),s&&(t.firstTick=null!==t.firstTick?i.min(t.firstTick,a):a,t.lastTick=null!==t.lastTick?i.max(t.lastTick,a):a))},t):r=a,t.labelMoments.push(r)},t),t.options.time.min&&(t.firstTick=t.parseTime(t.options.time.min)),t.options.time.max&&(t.lastTick=t.parseTime(t.options.time.max)),t.firstTick=(t.firstTick||i()).clone(),t.lastTick=(t.lastTick||i()).clone()},buildLabelDiffs:function(){var t=this;t.labelDiffs=[];var a=[];t.chart.data.labels&&t.chart.data.labels.length>0&&e.each(t.chart.data.labels,function(e){var i=t.parseTime(e);i.isValid()&&(t.options.time.round&&i.startOf(t.options.time.round),a.push(i.diff(t.firstTick,t.tickUnit,!0)))},t),e.each(t.chart.data.datasets,function(i){var n=[];"object"==typeof i.data[0]&&null!==i.data[0]?e.each(i.data,function(e){var a=t.parseTime(t.getRightValue(e));a.isValid()&&(t.options.time.round&&a.startOf(t.options.time.round),n.push(a.diff(t.firstTick,t.tickUnit,!0)))},t):n=a,t.labelDiffs.push(n)},t)},buildTicks:function(){var i=this;i.ctx.save();var n=e.getValueOrDefault(i.options.ticks.fontSize,t.defaults.global.defaultFontSize),o=e.getValueOrDefault(i.options.ticks.fontStyle,t.defaults.global.defaultFontStyle),r=e.getValueOrDefault(i.options.ticks.fontFamily,t.defaults.global.defaultFontFamily),s=e.fontString(n,o,r);if(i.ctx.font=s,i.ticks=[],i.unitScale=1,i.scaleSizeInUnits=0,i.options.time.unit)i.tickUnit=i.options.time.unit||"day",i.displayFormat=i.options.time.displayFormats[i.tickUnit],i.scaleSizeInUnits=i.lastTick.diff(i.firstTick,i.tickUnit,!0),i.unitScale=e.getValueOrDefault(i.options.time.unitStepSize,1);else{var l=i.isHorizontal()?i.width:i.height,u=i.tickFormatFunction(i.firstTick,0,[]),d=i.ctx.measureText(u).width,c=Math.cos(e.toRadians(i.options.ticks.maxRotation)),h=Math.sin(e.toRadians(i.options.ticks.maxRotation));d=d*c+n*h;var f=l/d;i.tickUnit=i.options.time.minUnit,i.scaleSizeInUnits=i.lastTick.diff(i.firstTick,i.tickUnit,!0),i.displayFormat=i.options.time.displayFormats[i.tickUnit];for(var g=0,p=a.units[g];g=Math.ceil(i.scaleSizeInUnits/f)){i.unitScale=e.getValueOrDefault(i.options.time.unitStepSize,p.steps[m]);break}break}if(p.maxStep===!1||Math.ceil(i.scaleSizeInUnits/f)=0&&(i.lastTick=y),i.scaleSizeInUnits=i.lastTick.diff(i.firstTick,i.tickUnit,!0)}i.options.time.displayFormat&&(i.displayFormat=i.options.time.displayFormat),i.ticks.push(i.firstTick.clone());for(var S=i.unitScale;S<=i.scaleSizeInUnits;S+=i.unitScale){var M=x.clone().add(S,i.tickUnit);if(i.options.time.max&&M.diff(i.lastTick,i.tickUnit,!0)>=0)break;i.ticks.push(M)}var w=i.ticks[i.ticks.length-1].diff(i.lastTick,i.tickUnit);0===w&&0!==i.scaleSizeInUnits||(i.options.time.max?(i.ticks.push(i.lastTick.clone()),i.scaleSizeInUnits=i.lastTick.diff(i.ticks[0],i.tickUnit,!0)):(i.ticks.push(i.lastTick.clone()),i.scaleSizeInUnits=i.lastTick.diff(i.firstTick,i.tickUnit,!0))),i.ctx.restore(),i.labelDiffs=void 0},getLabelForIndex:function(t,e){var a=this,i=a.chart.data.labels&&tFhCYNy;#0irRPomHqW|G1C*;4?@4#E?jH>?v@U%cy?3dQAc-DchXVErpOh~ z-jbon+tNbnl6hoEb;)TVk+%hTDDi_G%i3*RZ&15!$Fjr^f;Ke&A@|?=`2&+{zr+3a z{D*=t(`AXyS%X7N z%a#RZw6vD^t_rnM`L4E>m=U&R!A-&}nZIi$BOPvkhrCuUe@BN~-lRD)f44;J%TwgE zcze8u!PQ_NR7?o(NylLXVTfDO zxs5=@|GsYEsNo4M#nT%N!UE(?dnS)t2+{ELYAFp*3=iF=|EQnTp`#vlSXuGVraYo? z+RCzXo6h3qA8{KG?S4nE(lM+;Eb4nT3XV;7gcAxUi5m)`k5tv}cPy()8ZR3TLW3I- zAS^}cq-IJvL7a4RgR!yk@~RT%$lA7{L5ES*hyx)M4(yxI$Ub(4f)K|^v1>zvwQY!_ zIrWw8q9GS^!Dp~}+?mbnB6jDF8mVlbQ!jFKDY;w=7;XO{9bq7>LXGK24WA`;rL)_Z z)&j}pbV(;6gY;VMhbxgvn`X;6x}VUEE-7 z%)7j-%t8S=ZL3yc)HbXDAqJZvBTPoiW_A-+a8m3_Z?v{DN7Tnr#O_VUMT0UBt$;p` zDh6JbGHN8JJ*JN%y2%msb97@_S>9!%Egwk;?PEkU9ntz&3uR}%Fj5d$JHQbQb3}a{ zSzFT^#n=VInPpcAS}CNxj?_ zVscANk5Cfz(51EI1pz};AWWb|kgbYNb4wCEGUn3+eMUMV?1-{=I4TlmLJMot@rd07 zZuo2hk1ccu{YmGkcYdWAVdk{Z4Nm?^cTD&}jGm+Q1SYIXMwmG*oO*83&#>l%nbR`G zhh=lZ%xIb7kU3#;TBbfECrnC9P=-XpL|TG2BoZdj61*XiFbW8?1Z_wp%#;>${SUIy V$8qr;L*)Pf002ovPDHLkV1hYLS~36t diff --git a/org.argeo.suite.workbench.rap/js/images/layers.png b/org.argeo.suite.workbench.rap/js/images/layers.png deleted file mode 100644 index 1a72e5784b2b456eac5d7670738db80697af3377..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmV;p0!RIcP)*@&l2<6p=!C&s@#ZL+%BQvF&b?w6S%wp=I>1QHj7AP5C)IWy#b znXXB;g;j=$a-tW89K%FbDceHVq&unY*Wx3L#=EGWH=rjqnp|4c_Ulec!ql3#G-5ZF zVlbBA@XP=)C8U&+Lrc)S4O5%1$&{(;7R^K(CSnvSr$v;+B$8q&7Bf|h$#PARo1^%M zf1H^nG-EiXVXr07OH(*8R)xa|FD;lXUlg_-%)~ZGsL2cX0NXaAzN2q%jqLRR6ruVk8`Jb7n#{`T;o@`F= z#3YcynIR^s83UNF3D!f5m#Mg)NJ24&Qfrqb&_z=yF;=B)#9Iq7u-@^O!(mW{D;qvr zPc)gVb%aowtS8m@ElL4A9G>w#ffQ~q{i&_i)*6f^)Sz|C?C>zb4Uo?H<-&Hz@a?J; z$ml@zGygWofb9$ZBj6aLjpLhsT2AzjOu=-*u_gSCULuqp7Vds@BKcX=lOk~^Pb;%&wG9p3o}FL;Zuhp5D3)R z2yY2yCGfH2=LJmOkQw^9n>daF6?Fz>oOD64$CM+_T`j0x%{zb|G zWolt{H|diO#S`|$6RM$ zYQuE4RW{2yZ`>fAt>jzyYyOB?)~HrQBlbbLT5yF%Xq8FEuzo80dd{%Q!{_)^mTE`^ z2$xe>TH$qiDJ+}(ajTp$Y*4vgGRrt^_?JwUO3+hm&{Mb<8aRtf7%F@*!JJv* zmcB*cag=-t4U&g79u1krRAKHHm?ZXHP8z-#KdAM9?vU7sxldD%A5;r0Rk~kblro}5 z9YhoJP18m~=v^kMBWPltYTV$TD;r4n^eZVWmDs^6;ZN_RG+a#^(N18a+%xd;JvScL zu54_hiMdFR4767cmcp!KOryQBQG{$|3e)h(z_sY-NRM>A$84n-CdxAt6V242bQmV| z86*uGCJtVTXCvLyz=eM@jE-Vz#IeA4DY~VhqL`R_>D;YIh9amQX~+l$Sfbohb*X)d zKiDG!?8t|64T_+_Jzbv6K)P|KG-6qDVGPYUwpPqb#c;-juz~ZW0bFF4JlB>cOB#?3 z9XJ~@0J1u{T_(66oVpmpLOkqOk6}qY=vN7820OS|_L-o5(4!i~Ivv=j{IKzS2m>C_ zhm9Npo09&0s*wy#K%InNpSW)yCZOhAFheUQtcXnn!x)WSjonNUm7@fguKPg0C3ESs~`Bd3Pyd$@XU8m z0JZWv0l=fZ{{jH?{!9Nt!mEGL|9_Oug?i>9H?4E!|Krk+(hy9WRiM;!>w8@J9&fq& z${#rK1z4j2$*KVGO=b{ivL6FFEPprv0No7|9RPB_H>dzW{;{(>P`XWmKn^Y#<8`e9 zc*;k@X>z(^khkvlh3UB1ICnF@RRHbZaQhkI;sl{txVGnBEzaFKZpw96Fm8qu^5@!a z+db!omc48o>}VvJr!j9Mpo^ZMPs2FKikZu-3edWhZ~5&Mp15G60gsVYic)|~eH4Q6 zF8d5^efqo~DD}CwRpRO|j91O-zygw(bv;<>V5MDzeC#nk zosJI@GCU;ylx)tp87H~!5Gl8^4UxdZ-ZLrRy7g=zwjIe|v>O(6W-QBuv-7h4HTLcz&ce9H!^9o^4XLD_t08@f%uD+tdxMAHzHi z6>y1>XBw|wNRu9u6j`13s*X9iz%Z1zep^?+<}$-U*uzd9$?LD0QWc+GSyhyvx<?!6YcvM{vC6CN2-dD>XyCsuOMe zdjA0H)tFMHvR%5Uqd_swkzDP0t5)bhy5xwusp(WsD}~`13N0NuN78MHcc03G_@3v- zZOvStb!W8+G+$o+mNh5)?USue0<9~5nql|l&C!mcb^cmUZGk2gF&p9IOMcs@2-WZX z+M_WESiwx34!IyuOY(`!=Sit;If5uuYqSJm`D>ogL1P7x5=v2W{zicaAxUs>WGzTn zQv?x3HR!VK$IB{-D-)cU&hLE;M2}umynSZBHRVLCW#WkaY>!>~#*V;;^Ck!H4Swwp zDHCGo7gMu}4-?)ga$s&da$6}|l&eSgpl~CnG5lbg z7&|&nHy^@(l0;d(4qw!>Pc+03BPqwvhV@DjJr)KAb74dUY>mzPErgW+cGhAfAE(Hx zg7S551PZuugrt1qVHk*xE*1`NeDO|ZnOO1ye(Ps{N=r+Q=S*|(%4dYb+TIr5*H@Ka z&IFce5q4snQ7O4sQm?Pxu??B#U>#Bu+HC!Ti{Sl150Y#4pk06Ac+lU@`2YRqk-uHH zZoIWi#kr-H+gi|P?w*2JMQ7U)c>*fCAPTksemc#0N4+Zgz+o*bN1@=(#&Q(RLz+r2 zQx|up>q>^w^^^t*`_3bp*JBDwCvP3iT>oMu+dLrW{Yd*GhC1Kx;_L$zF%*j;?iDxZ zrao$m-Bw;}qtlD8Ts>}{*(A|it9iEx_ZRY$yVv3y#q}J<;l}p;3_y0NqKJBW%sac- z#s<-=rSr4%CNFQcuf<8$A3ba|hx+!=-B0jwr*}bFG1p0OLTqz#DYd z16dVY=E5n{UkaA*7{FAF7c$=SE0gV@(AxW_6rfOFvBFyfQpO=ChwyqQo?nZOT`6__ zP3(sCcoy|xktOO{hUoSFKDM)^*yWXvlS$9yTyC~k^q#t~$$O;oU_E7XGiY~S^b+mS zVh=RZHn+0(T-ooM5xx%AW=ZUqv zgKQURIr-z7x5ejdVPYlT>F)dyou|#!MM#5qXK_BVQyz*bJ!*A&^rr((=SaeGlUNwV z01+e{DcnsPPIth+gTfMc34NrqGRM-T5f0=)<0vZ6?K`I0Z1Y3GdqxI|$iyh%qoeNX UQO-*oc+)|Q_08}VdXD6O0C*xx%>V!Z diff --git a/org.argeo.suite.workbench.rap/js/images/marker-icon.png b/org.argeo.suite.workbench.rap/js/images/marker-icon.png deleted file mode 100644 index 950edf24677ded147df13b26f91baa2b0fa70513..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1466 zcmV;r1x5OaP)P001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?Amke9$Lam@{1K@O ze*LXqlKQHiv=gx+V^Cbb2?z@ISBQ*3amF;9UJ3SBg(N|710TLamQmYZ&Qjn2LuO<* zCZlB4n%@pc&7NNnY1}x+NWpHlq`OJEo|`aYN9<`RBUB+79g;>dgb6YlfN#kGL?lO_ z!6~M^7sOnbsUkKk<@Ysie&`G>ruxH&Mgy&8;i=A zB9OO!xR{AyODw>DS-q5YM{0ExFEAzt zm>RdS+ssW(-8|?xr0(?$vBVB*%(xDLtq3Hf0I5yFm<_g=W2`QWAax{1rWVH=I!VrP zs(rTFX@W#t$hXNvbgX`gK&^w_YD;CQ!B@e0QbLIWaKAXQe2-kkloo;{iF#6}z!4=W zi$giRj1{ zt;2w`VSCF#WE&*ev7jpsC=6175@(~nTE2;7M-L((0bH@yG}-TB$R~WXd?tA$s3|%y zA`9$sA(>F%J3ioz<-LJl*^o1|w84l>HBR`>3l9c8$5Xr@xCiIQ7{x$fMCzOk_-M=% z+{a_Q#;42`#KfUte@$NT77uaTz?b-fBe)1s5XE$yA79fm?KqM^VgLXD07*qoM6N<$ Ef<_J(9smFU diff --git a/org.argeo.suite.workbench.rap/js/leaflet.css b/org.argeo.suite.workbench.rap/js/leaflet.css deleted file mode 100644 index c6d920a..0000000 --- a/org.argeo.suite.workbench.rap/js/leaflet.css +++ /dev/null @@ -1,624 +0,0 @@ -/* required styles */ - -.leaflet-pane, -.leaflet-tile, -.leaflet-marker-icon, -.leaflet-marker-shadow, -.leaflet-tile-container, -.leaflet-pane > svg, -.leaflet-pane > canvas, -.leaflet-zoom-box, -.leaflet-image-layer, -.leaflet-layer { - position: absolute; - left: 0; - top: 0; - } -.leaflet-container { - overflow: hidden; - } -.leaflet-tile, -.leaflet-marker-icon, -.leaflet-marker-shadow { - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - -webkit-user-drag: none; - } -/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ -.leaflet-safari .leaflet-tile { - image-rendering: -webkit-optimize-contrast; - } -/* hack that prevents hw layers "stretching" when loading new tiles */ -.leaflet-safari .leaflet-tile-container { - width: 1600px; - height: 1600px; - -webkit-transform-origin: 0 0; - } -.leaflet-marker-icon, -.leaflet-marker-shadow { - display: block; - } -/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ -/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ -.leaflet-container .leaflet-overlay-pane svg, -.leaflet-container .leaflet-marker-pane img, -.leaflet-container .leaflet-shadow-pane img, -.leaflet-container .leaflet-tile-pane img, -.leaflet-container img.leaflet-image-layer { - max-width: none !important; - } - -.leaflet-container.leaflet-touch-zoom { - -ms-touch-action: pan-x pan-y; - touch-action: pan-x pan-y; - } -.leaflet-container.leaflet-touch-drag { - -ms-touch-action: pinch-zoom; - } -.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { - -ms-touch-action: none; - touch-action: none; -} -.leaflet-tile { - filter: inherit; - visibility: hidden; - } -.leaflet-tile-loaded { - visibility: inherit; - } -.leaflet-zoom-box { - width: 0; - height: 0; - -moz-box-sizing: border-box; - box-sizing: border-box; - z-index: 800; - } -/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ -.leaflet-overlay-pane svg { - -moz-user-select: none; - } - -.leaflet-pane { z-index: 400; } - -.leaflet-tile-pane { z-index: 200; } -.leaflet-overlay-pane { z-index: 400; } -.leaflet-shadow-pane { z-index: 500; } -.leaflet-marker-pane { z-index: 600; } -.leaflet-tooltip-pane { z-index: 650; } -.leaflet-popup-pane { z-index: 700; } - -.leaflet-map-pane canvas { z-index: 100; } -.leaflet-map-pane svg { z-index: 200; } - -.leaflet-vml-shape { - width: 1px; - height: 1px; - } -.lvml { - behavior: url(#default#VML); - display: inline-block; - position: absolute; - } - - -/* control positioning */ - -.leaflet-control { - position: relative; - z-index: 800; - pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ - pointer-events: auto; - } -.leaflet-top, -.leaflet-bottom { - position: absolute; - z-index: 1000; - pointer-events: none; - } -.leaflet-top { - top: 0; - } -.leaflet-right { - right: 0; - } -.leaflet-bottom { - bottom: 0; - } -.leaflet-left { - left: 0; - } -.leaflet-control { - float: left; - clear: both; - } -.leaflet-right .leaflet-control { - float: right; - } -.leaflet-top .leaflet-control { - margin-top: 10px; - } -.leaflet-bottom .leaflet-control { - margin-bottom: 10px; - } -.leaflet-left .leaflet-control { - margin-left: 10px; - } -.leaflet-right .leaflet-control { - margin-right: 10px; - } - - -/* zoom and fade animations */ - -.leaflet-fade-anim .leaflet-tile { - will-change: opacity; - } -.leaflet-fade-anim .leaflet-popup { - opacity: 0; - -webkit-transition: opacity 0.2s linear; - -moz-transition: opacity 0.2s linear; - -o-transition: opacity 0.2s linear; - transition: opacity 0.2s linear; - } -.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { - opacity: 1; - } -.leaflet-zoom-animated { - -webkit-transform-origin: 0 0; - -ms-transform-origin: 0 0; - transform-origin: 0 0; - } -.leaflet-zoom-anim .leaflet-zoom-animated { - will-change: transform; - } -.leaflet-zoom-anim .leaflet-zoom-animated { - -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); - -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); - -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1); - transition: transform 0.25s cubic-bezier(0,0,0.25,1); - } -.leaflet-zoom-anim .leaflet-tile, -.leaflet-pan-anim .leaflet-tile { - -webkit-transition: none; - -moz-transition: none; - -o-transition: none; - transition: none; - } - -.leaflet-zoom-anim .leaflet-zoom-hide { - visibility: hidden; - } - - -/* cursors */ - -.leaflet-interactive { - cursor: pointer; - } -.leaflet-grab { - cursor: -webkit-grab; - cursor: -moz-grab; - } -.leaflet-crosshair, -.leaflet-crosshair .leaflet-interactive { - cursor: crosshair; - } -.leaflet-popup-pane, -.leaflet-control { - cursor: auto; - } -.leaflet-dragging .leaflet-grab, -.leaflet-dragging .leaflet-grab .leaflet-interactive, -.leaflet-dragging .leaflet-marker-draggable { - cursor: move; - cursor: -webkit-grabbing; - cursor: -moz-grabbing; - } - -/* marker & overlays interactivity */ -.leaflet-marker-icon, -.leaflet-marker-shadow, -.leaflet-image-layer, -.leaflet-pane > svg path, -.leaflet-tile-container { - pointer-events: none; - } - -.leaflet-marker-icon.leaflet-interactive, -.leaflet-image-layer.leaflet-interactive, -.leaflet-pane > svg path.leaflet-interactive { - pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ - pointer-events: auto; - } - -/* visual tweaks */ - -.leaflet-container { - background: #ddd; - outline: 0; - } -.leaflet-container a { - color: #0078A8; - } -.leaflet-container a.leaflet-active { - outline: 2px solid orange; - } -.leaflet-zoom-box { - border: 2px dotted #38f; - background: rgba(255,255,255,0.5); - } - - -/* general typography */ -.leaflet-container { - font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; - } - - -/* general toolbar styles */ - -.leaflet-bar { - box-shadow: 0 1px 5px rgba(0,0,0,0.65); - border-radius: 4px; - } -.leaflet-bar a, -.leaflet-bar a:hover { - background-color: #fff; - border-bottom: 1px solid #ccc; - width: 26px; - height: 26px; - line-height: 26px; - display: block; - text-align: center; - text-decoration: none; - color: black; - } -.leaflet-bar a, -.leaflet-control-layers-toggle { - background-position: 50% 50%; - background-repeat: no-repeat; - display: block; - } -.leaflet-bar a:hover { - background-color: #f4f4f4; - } -.leaflet-bar a:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; - } -.leaflet-bar a:last-child { - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom: none; - } -.leaflet-bar a.leaflet-disabled { - cursor: default; - background-color: #f4f4f4; - color: #bbb; - } - -.leaflet-touch .leaflet-bar a { - width: 30px; - height: 30px; - line-height: 30px; - } - - -/* zoom control */ - -.leaflet-control-zoom-in, -.leaflet-control-zoom-out { - font: bold 18px 'Lucida Console', Monaco, monospace; - text-indent: 1px; - } -.leaflet-control-zoom-out { - font-size: 20px; - } - -.leaflet-touch .leaflet-control-zoom-in { - font-size: 22px; - } -.leaflet-touch .leaflet-control-zoom-out { - font-size: 24px; - } - - -/* layers control */ - -.leaflet-control-layers { - box-shadow: 0 1px 5px rgba(0,0,0,0.4); - background: #fff; - border-radius: 5px; - } -.leaflet-control-layers-toggle { - background-image: url(images/layers.png); - width: 36px; - height: 36px; - } -.leaflet-retina .leaflet-control-layers-toggle { - background-image: url(images/layers-2x.png); - background-size: 26px 26px; - } -.leaflet-touch .leaflet-control-layers-toggle { - width: 44px; - height: 44px; - } -.leaflet-control-layers .leaflet-control-layers-list, -.leaflet-control-layers-expanded .leaflet-control-layers-toggle { - display: none; - } -.leaflet-control-layers-expanded .leaflet-control-layers-list { - display: block; - position: relative; - } -.leaflet-control-layers-expanded { - padding: 6px 10px 6px 6px; - color: #333; - background: #fff; - } -.leaflet-control-layers-scrollbar { - overflow-y: scroll; - padding-right: 5px; - } -.leaflet-control-layers-selector { - margin-top: 2px; - position: relative; - top: 1px; - } -.leaflet-control-layers label { - display: block; - } -.leaflet-control-layers-separator { - height: 0; - border-top: 1px solid #ddd; - margin: 5px -10px 5px -6px; - } - -/* Default icon URLs */ -.leaflet-default-icon-path { - background-image: url(images/marker-icon.png); - } - - -/* attribution and scale controls */ - -.leaflet-container .leaflet-control-attribution { - background: #fff; - background: rgba(255, 255, 255, 0.7); - margin: 0; - } -.leaflet-control-attribution, -.leaflet-control-scale-line { - padding: 0 5px; - color: #333; - } -.leaflet-control-attribution a { - text-decoration: none; - } -.leaflet-control-attribution a:hover { - text-decoration: underline; - } -.leaflet-container .leaflet-control-attribution, -.leaflet-container .leaflet-control-scale { - font-size: 11px; - } -.leaflet-left .leaflet-control-scale { - margin-left: 5px; - } -.leaflet-bottom .leaflet-control-scale { - margin-bottom: 5px; - } -.leaflet-control-scale-line { - border: 2px solid #777; - border-top: none; - line-height: 1.1; - padding: 2px 5px 1px; - font-size: 11px; - white-space: nowrap; - overflow: hidden; - -moz-box-sizing: border-box; - box-sizing: border-box; - - background: #fff; - background: rgba(255, 255, 255, 0.5); - } -.leaflet-control-scale-line:not(:first-child) { - border-top: 2px solid #777; - border-bottom: none; - margin-top: -2px; - } -.leaflet-control-scale-line:not(:first-child):not(:last-child) { - border-bottom: 2px solid #777; - } - -.leaflet-touch .leaflet-control-attribution, -.leaflet-touch .leaflet-control-layers, -.leaflet-touch .leaflet-bar { - box-shadow: none; - } -.leaflet-touch .leaflet-control-layers, -.leaflet-touch .leaflet-bar { - border: 2px solid rgba(0,0,0,0.2); - background-clip: padding-box; - } - - -/* popup */ - -.leaflet-popup { - position: absolute; - text-align: center; - margin-bottom: 20px; - } -.leaflet-popup-content-wrapper { - padding: 1px; - text-align: left; - border-radius: 12px; - } -.leaflet-popup-content { - margin: 13px 19px; - line-height: 1.4; - } -.leaflet-popup-content p { - margin: 18px 0; - } -.leaflet-popup-tip-container { - width: 40px; - height: 20px; - position: absolute; - left: 50%; - margin-left: -20px; - overflow: hidden; - pointer-events: none; - } -.leaflet-popup-tip { - width: 17px; - height: 17px; - padding: 1px; - - margin: -10px auto 0; - - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - } -.leaflet-popup-content-wrapper, -.leaflet-popup-tip { - background: white; - color: #333; - box-shadow: 0 3px 14px rgba(0,0,0,0.4); - } -.leaflet-container a.leaflet-popup-close-button { - position: absolute; - top: 0; - right: 0; - padding: 4px 4px 0 0; - border: none; - text-align: center; - width: 18px; - height: 14px; - font: 16px/14px Tahoma, Verdana, sans-serif; - color: #c3c3c3; - text-decoration: none; - font-weight: bold; - background: transparent; - } -.leaflet-container a.leaflet-popup-close-button:hover { - color: #999; - } -.leaflet-popup-scrolled { - overflow: auto; - border-bottom: 1px solid #ddd; - border-top: 1px solid #ddd; - } - -.leaflet-oldie .leaflet-popup-content-wrapper { - zoom: 1; - } -.leaflet-oldie .leaflet-popup-tip { - width: 24px; - margin: 0 auto; - - -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; - filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); - } -.leaflet-oldie .leaflet-popup-tip-container { - margin-top: -1px; - } - -.leaflet-oldie .leaflet-control-zoom, -.leaflet-oldie .leaflet-control-layers, -.leaflet-oldie .leaflet-popup-content-wrapper, -.leaflet-oldie .leaflet-popup-tip { - border: 1px solid #999; - } - - -/* div icon */ - -.leaflet-div-icon { - background: #fff; - border: 1px solid #666; - } - - -/* Tooltip */ -/* Base styles for the element that has a tooltip */ -.leaflet-tooltip { - position: absolute; - padding: 6px; - background-color: #fff; - border: 1px solid #fff; - border-radius: 3px; - color: #222; - white-space: nowrap; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - pointer-events: none; - box-shadow: 0 1px 3px rgba(0,0,0,0.4); - } -.leaflet-tooltip.leaflet-clickable { - cursor: pointer; - pointer-events: auto; - } -.leaflet-tooltip-top:before, -.leaflet-tooltip-bottom:before, -.leaflet-tooltip-left:before, -.leaflet-tooltip-right:before { - position: absolute; - pointer-events: none; - border: 6px solid transparent; - background: transparent; - content: ""; - } - -/* Directions */ - -.leaflet-tooltip-bottom { - margin-top: 6px; -} -.leaflet-tooltip-top { - margin-top: -6px; -} -.leaflet-tooltip-bottom:before, -.leaflet-tooltip-top:before { - left: 50%; - margin-left: -6px; - } -.leaflet-tooltip-top:before { - bottom: 0; - margin-bottom: -12px; - border-top-color: #fff; - } -.leaflet-tooltip-bottom:before { - top: 0; - margin-top: -12px; - margin-left: -6px; - border-bottom-color: #fff; - } -.leaflet-tooltip-left { - margin-left: -6px; -} -.leaflet-tooltip-right { - margin-left: 6px; -} -.leaflet-tooltip-left:before, -.leaflet-tooltip-right:before { - top: 50%; - margin-top: -6px; - } -.leaflet-tooltip-left:before { - right: 0; - margin-right: -12px; - border-left-color: #fff; - } -.leaflet-tooltip-right:before { - left: 0; - margin-left: -12px; - border-right-color: #fff; - } diff --git a/org.argeo.suite.workbench.rap/js/leaflet.js b/org.argeo.suite.workbench.rap/js/leaflet.js deleted file mode 100644 index 24042d1..0000000 --- a/org.argeo.suite.workbench.rap/js/leaflet.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Leaflet 1.0.3+ed36a04, a JS library for interactive maps. http://leafletjs.com - (c) 2010-2016 Vladimir Agafonkin, (c) 2010-2011 CloudMade -*/ -!function(t,e,i){function n(){var e=t.L;o.noConflict=function(){return t.L=e,this},t.L=o}var o={version:"1.0.3+ed36a04"};"object"==typeof module&&"object"==typeof module.exports?module.exports=o:"function"==typeof define&&define.amd&&define(o),"undefined"!=typeof t&&n(),o.Util={extend:function(t){var e,i,n,o;for(i=1,n=arguments.length;i1}}(),o.Point=function(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e},o.Point.prototype={clone:function(){return new o.Point(this.x,this.y)},add:function(t){return this.clone()._add(o.point(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(o.point(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new o.Point(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new o.Point(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},distanceTo:function(t){t=o.point(t);var e=t.x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return t=o.point(t),t.x===this.x&&t.y===this.y},contains:function(t){return t=o.point(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+o.Util.formatNum(this.x)+", "+o.Util.formatNum(this.y)+")"}},o.point=function(t,e,n){return t instanceof o.Point?t:o.Util.isArray(t)?new o.Point(t[0],t[1]):t===i||null===t?t:"object"==typeof t&&"x"in t&&"y"in t?new o.Point(t.x,t.y):new o.Point(t,e,n)},o.Bounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;n=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=o.bounds(t);var e=this.min,i=this.max,n=t.min,s=t.max,r=s.x>=e.x&&n.x<=i.x,a=s.y>=e.y&&n.y<=i.y;return r&&a},overlaps:function(t){t=o.bounds(t);var e=this.min,i=this.max,n=t.min,s=t.max,r=s.x>e.x&&n.xe.y&&n.y0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(n)},addClass:function(t,e){if(t.classList!==i)for(var n=o.Util.splitWords(e),s=0,r=n.length;s=n.lat&&i.lat<=s.lat&&e.lng>=n.lng&&i.lng<=s.lng},intersects:function(t){t=o.latLngBounds(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),s=t.getNorthEast(),r=s.lat>=e.lat&&n.lat<=i.lat,a=s.lng>=e.lng&&n.lng<=i.lng;return r&&a},overlaps:function(t){t=o.latLngBounds(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),s=t.getNorthEast(),r=s.lat>e.lat&&n.late.lng&&n.lngthis.options.maxZoom?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),n=this._limitCenter(i,this._zoom,o.latLngBounds(t));return i.equals(n)||this.panTo(n,e),this._enforcingBounds=!1,this},invalidateSize:function(t){if(!this._loaded)return this;t=o.extend({animate:!1,pan:!0},t===!0?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var i=this.getSize(),n=e.divideBy(2).round(),s=i.divideBy(2).round(),r=n.subtract(s);return r.x||r.y?(t.animate&&t.pan?this.panBy(r):(t.pan&&this._rawPanBy(r),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(o.bind(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=o.extend({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=o.bind(this._handleGeolocationResponse,this),i=o.bind(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=t.coords.latitude,i=t.coords.longitude,n=new o.LatLng(e,i),s=n.toBounds(t.coords.accuracy),r=this._locateOptions;if(r.setView){var a=this.getBoundsZoom(s);this.setView(n,r.maxZoom?Math.min(a,r.maxZoom):a)}var h={latlng:n,bounds:s,timestamp:t.timestamp};for(var l in t.coords)"number"==typeof t.coords[l]&&(h[l]=t.coords[l]);this.fire("locationfound",h)},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=i,this._containerId=i}o.DomUtil.remove(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this._loaded&&this.fire("unload");for(var t in this._layers)this._layers[t].remove();return this},createPane:function(t,e){var i="leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),n=o.DomUtil.create("div",i,e||this._mapPane);return t&&(this._panes[t]=n),n},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds(),e=this.unproject(t.getBottomLeft()),i=this.unproject(t.getTopRight());return new o.LatLngBounds(e,i)},getMinZoom:function(){return this.options.minZoom===i?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===i?this._layersMaxZoom===i?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=o.latLngBounds(t),i=o.point(i||[0,0]);var n=this.getZoom()||0,s=this.getMinZoom(),r=this.getMaxZoom(),a=t.getNorthWest(),h=t.getSouthEast(),l=this.getSize().subtract(i),u=o.bounds(this.project(h,n),this.project(a,n)).getSize(),c=o.Browser.any3d?this.options.zoomSnap:1,d=Math.min(l.x/u.x,l.y/u.y);return n=this.getScaleZoom(d,n),c&&(n=Math.round(n/(c/100))*(c/100),n=e?Math.ceil(n/c)*c:Math.floor(n/c)*c),Math.max(s,Math.min(r,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new o.Point(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){var i=this._getTopLeftPoint(t,e);return new o.Bounds(i,i.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(t===i?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var n=this.options.crs;return e=e===i?this._zoom:e,n.scale(t)/n.scale(e)},getScaleZoom:function(t,e){var n=this.options.crs;e=e===i?this._zoom:e;var o=n.zoom(t*n.scale(e));return isNaN(o)?1/0:o},project:function(t,e){return e=e===i?this._zoom:e,this.options.crs.latLngToPoint(o.latLng(t),e)},unproject:function(t,e){return e=e===i?this._zoom:e,this.options.crs.pointToLatLng(o.point(t),e)},layerPointToLatLng:function(t){var e=o.point(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){var e=this.project(o.latLng(t))._round();return e._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(o.latLng(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(o.latLngBounds(t))},distance:function(t,e){return this.options.crs.distance(o.latLng(t),o.latLng(e))},containerPointToLayerPoint:function(t){return o.point(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return o.point(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(o.point(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(o.latLng(t)))},mouseEventToContainerPoint:function(t){return o.DomEvent.getMousePosition(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=o.DomUtil.get(t);if(!e)throw new Error("Map container not found.");if(e._leaflet_id)throw new Error("Map container is already initialized.");o.DomEvent.addListener(e,"scroll",this._onScroll,this),this._containerId=o.Util.stamp(e)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&o.Browser.any3d, -o.DomUtil.addClass(t,"leaflet-container"+(o.Browser.touch?" leaflet-touch":"")+(o.Browser.retina?" leaflet-retina":"")+(o.Browser.ielt9?" leaflet-oldie":"")+(o.Browser.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var e=o.DomUtil.getStyle(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),o.DomUtil.setPosition(this._mapPane,new o.Point(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(o.DomUtil.addClass(t.markerPane,"leaflet-zoom-hide"),o.DomUtil.addClass(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e){o.DomUtil.setPosition(this._mapPane,new o.Point(0,0));var i=!this._loaded;this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset");var n=this._zoom!==e;this._moveStart(n)._move(t,e)._moveEnd(n),this.fire("viewreset"),i&&this.fire("load")},_moveStart:function(t){return t&&this.fire("zoomstart"),this.fire("movestart")},_move:function(t,e,n){e===i&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(o||n&&n.pinch)&&this.fire("zoom",n),this.fire("move",n)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return o.Util.cancelAnimFrame(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){o.DomUtil.setPosition(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(e){if(o.DomEvent){this._targets={},this._targets[o.stamp(this._container)]=this;var i=e?"off":"on";o.DomEvent[i](this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress",this._handleDOMEvent,this),this.options.trackResize&&o.DomEvent[i](t,"resize",this._onResize,this),o.Browser.any3d&&this.options.transform3DLimit&&this[i]("moveend",this._onMoveEnd)}},_onResize:function(){o.Util.cancelAnimFrame(this._resizeRequest),this._resizeRequest=o.Util.requestAnimFrame(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,n=[],s="mouseout"===e||"mouseover"===e,r=t.target||t.srcElement,a=!1;r;){if(i=this._targets[o.stamp(r)],i&&("click"===e||"preclick"===e)&&!t._simulated&&this._draggableMoved(i)){a=!0;break}if(i&&i.listens(e,!0)){if(s&&!o.DomEvent._isExternalTarget(r,t))break;if(n.push(i),s)break}if(r===this._container)break;r=r.parentNode}return n.length||a||s||!o.DomEvent._isExternalTarget(r,t)||(n=[this]),n},_handleDOMEvent:function(t){if(this._loaded&&!o.DomEvent._skipped(t)){var e="keypress"===t.type&&13===t.keyCode?"click":t.type;"mousedown"===e&&o.DomUtil.preventOutline(t.target||t.srcElement),this._fireDOMEvent(t,e)}},_fireDOMEvent:function(t,e,i){if("click"===t.type){var n=o.Util.extend({},t);n.type="preclick",this._fireDOMEvent(n,n.type,i)}if(!t._stopped&&(i=(i||[]).concat(this._findEventTargets(t,e)),i.length)){var s=i[0];"contextmenu"===e&&s.listens(e,!0)&&o.DomEvent.preventDefault(t);var r={originalEvent:t};if("keypress"!==t.type){var a=s instanceof o.Marker;r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom(),n=o.Browser.any3d?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(e,Math.min(i,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){o.DomUtil.removeClass(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._floor();return!((e&&e.animate)!==!0&&!this.getSize().contains(i))&&(this.panBy(i,e),!0)},_createAnimProxy:function(){var t=this._proxy=o.DomUtil.create("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(e){var i=o.DomUtil.TRANSFORM,n=t.style[i];o.DomUtil.setTransform(t,this.project(e.center,e.zoom),this.getZoomScale(e.zoom,1)),n===t.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",function(){var e=this.getCenter(),i=this.getZoom();o.DomUtil.setTransform(t,this.project(e,i),this.getZoomScale(i,1))},this)},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||i.animate===!1||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),s=this._getCenterOffset(t)._divideBy(1-1/n);return!(i.animate!==!0&&!this.getSize().contains(s))&&(o.Util.requestAnimFrame(function(){this._moveStart(!0)._animateZoom(t,e,!0)},this),!0)},_animateZoom:function(t,e,i,n){i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,o.DomUtil.addClass(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:n}),setTimeout(o.bind(this._onZoomTransitionEnd,this),250)},_onZoomTransitionEnd:function(){this._animatingZoom&&(o.DomUtil.removeClass(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),o.Util.requestAnimFrame(function(){this._moveEnd(!0)},this))}}),o.map=function(t,e){return new o.Map(t,e)},o.Layer=o.Evented.extend({options:{pane:"overlayPane",nonBubblingEvents:[],attribution:null},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[o.stamp(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[o.stamp(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var e=t.target;if(e.hasLayer(this)){if(this._map=e,this._zoomAnimated=e._zoomAnimated,this.getEvents){var i=this.getEvents();e.on(i,this),this.once("remove",function(){e.off(i,this)},this)}this.onAdd(e),this.getAttribution&&e.attributionControl&&e.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),e.fire("layeradd",{layer:this})}}}),o.Map.include({addLayer:function(t){var e=o.stamp(t);return this._layers[e]?this:(this._layers[e]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var e=o.stamp(t);return this._layers[e]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[e],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&o.stamp(t)in this._layers},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},_addLayers:function(t){t=t?o.Util.isArray(t)?t:[t]:[];for(var e=0,i=t.length;ethis._layersMaxZoom&&this.setZoom(this._layersMaxZoom),this.options.minZoom===i&&this._layersMinZoom&&this.getZoom()100&&n<500||t.target._simulatedClick&&!t._simulated?void o.DomEvent.stop(t):(o.DomEvent._lastClick=i,void e(t))}},o.DomEvent.addListener=o.DomEvent.on,o.DomEvent.removeListener=o.DomEvent.off,o.PosAnimation=o.Evented.extend({run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=o.DomUtil.getPosition(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=o.Util.requestAnimFrame(this._animate,this),this._step()},_step:function(t){var e=+new Date-this._startTime,i=1e3*this._duration;e1e-7;l++)e=r*Math.sin(h),e=Math.pow((1-e)/(1+e),r/2),u=Math.PI/2-2*Math.atan(a*e)-h,h+=u;return new o.LatLng(h*i,t.x*i/n)}},o.CRS.EPSG3395=o.extend({},o.CRS.Earth,{code:"EPSG:3395",projection:o.Projection.Mercator,transformation:function(){var t=.5/(Math.PI*o.Projection.Mercator.R);return new o.Transformation(t,.5,-t,.5)}()}),o.GridLayer=o.Layer.extend({options:{tileSize:256,opacity:1,updateWhenIdle:o.Browser.mobile,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:i,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(t){o.setOptions(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),o.DomUtil.remove(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=null},bringToFront:function(){return this._map&&(o.DomUtil.toFront(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(o.DomUtil.toBack(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=o.Util.throttle(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return e.createElement("div")},getTileSize:function(){var t=this.options.tileSize;return t instanceof o.Point?t:new o.Point(t,t)},_updateZIndex:function(){this._container&&this.options.zIndex!==i&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var e,i=this.getPane().children,n=-t(-(1/0),1/0),o=0,s=i.length;othis.options.maxZoom||in&&this._retainParent(s,r,a,n))},_retainChildren:function(t,e,i,n){for(var s=2*t;s<2*t+2;s++)for(var r=2*e;r<2*e+2;r++){var a=new o.Point(s,r);a.z=i+1;var h=this._tileCoordsToKey(a),l=this._tiles[h];l&&l.active?l.retain=!0:(l&&l.loaded&&(l.retain=!0),i+1this.options.maxZoom||this.options.minZoom!==i&&s1)return void this._setView(t,s);for(var m=a.min.y;m<=a.max.y;m++)for(var p=a.min.x;p<=a.max.x;p++){var f=new o.Point(p,m);if(f.z=this._tileZoom,this._isValidTile(f)){var g=this._tiles[this._tileCoordsToKey(f)];g?g.current=!0:l.push(f)}}if(l.sort(function(t,e){return t.distanceTo(h)-e.distanceTo(h)}),0!==l.length){this._loading||(this._loading=!0,this.fire("loading"));var v=e.createDocumentFragment();for(p=0;pi.max.x)||!e.wrapLat&&(t.yi.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return o.latLngBounds(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToBounds:function(t){var e=this._map,i=this.getTileSize(),n=t.scaleBy(i),s=n.add(i),r=e.unproject(n,t.z),a=e.unproject(s,t.z),h=new o.LatLngBounds(r,a);return this.options.noWrap||e.wrapLatLngBounds(h),h},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var e=t.split(":"),i=new o.Point(+e[0],+e[1]);return i.z=+e[2],i},_removeTile:function(t){var e=this._tiles[t];e&&(o.DomUtil.remove(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){o.DomUtil.addClass(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=o.Util.falseFn,t.onmousemove=o.Util.falseFn,o.Browser.ielt9&&this.options.opacity<1&&o.DomUtil.setOpacity(t,this.options.opacity),o.Browser.android&&!o.Browser.android23&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,e){var i=this._getTilePos(t),n=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),o.bind(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&o.Util.requestAnimFrame(o.bind(this._tileReady,this,t,null,s)),o.DomUtil.setPosition(s,i),this._tiles[n]={el:s,coords:t,current:!0},e.appendChild(s),this.fire("tileloadstart",{tile:s,coords:t})},_tileReady:function(t,e,i){if(this._map){e&&this.fire("tileerror",{error:e,tile:i,coords:t});var n=this._tileCoordsToKey(t);i=this._tiles[n],i&&(i.loaded=+new Date,this._map._fadeAnimated?(o.DomUtil.setOpacity(i.el,0),o.Util.cancelAnimFrame(this._fadeFrame),this._fadeFrame=o.Util.requestAnimFrame(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(o.DomUtil.addClass(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),o.Browser.ielt9||!this._map._fadeAnimated?o.Util.requestAnimFrame(this._pruneTiles,this):setTimeout(o.bind(this._pruneTiles,this),250)))}},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new o.Point(this._wrapX?o.Util.wrapNum(t.x,this._wrapX):t.x,this._wrapY?o.Util.wrapNum(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new o.Bounds(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),o.gridLayer=function(t){return new o.GridLayer(t)},o.TileLayer=o.GridLayer.extend({options:{minZoom:0,maxZoom:18,maxNativeZoom:null,minNativeZoom:null,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,e){this._url=t,e=o.setOptions(this,e),e.detectRetina&&o.Browser.retina&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomReverse?(e.zoomOffset--,e.minZoom++):(e.zoomOffset++,e.maxZoom--),e.minZoom=Math.max(0,e.minZoom)),"string"==typeof e.subdomains&&(e.subdomains=e.subdomains.split("")),o.Browser.android||this.on("tileunload",this._onTileRemove)},setUrl:function(t,e){return this._url=t,e||this.redraw(),this},createTile:function(t,i){var n=e.createElement("img");return o.DomEvent.on(n,"load",o.bind(this._tileOnLoad,this,i,n)),o.DomEvent.on(n,"error",o.bind(this._tileOnError,this,i,n)),this.options.crossOrigin&&(n.crossOrigin=""),n.alt="",n.setAttribute("role","presentation"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:o.Browser.retina?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var i=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=i),e["-y"]=i}return o.Util.template(this._url,o.extend(e,this.options))},_tileOnLoad:function(t,e){o.Browser.ielt9?setTimeout(o.bind(t,this,null,e),0):t(null,e)},_tileOnError:function(t,e,i){var n=this.options.errorTileUrl;n&&e.src!==n&&(e.src=n),t(i,e)},getTileSize:function(){var t=this._map,e=o.GridLayer.prototype.getTileSize.call(this),i=this._tileZoom+this.options.zoomOffset,n=this.options.minNativeZoom,s=this.options.maxNativeZoom;return null!==n&&is?e.divideBy(t.getZoomScale(s,i)).round():e},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,e=this.options.maxZoom,i=this.options.zoomReverse,n=this.options.zoomOffset,o=this.options.minNativeZoom,s=this.options.maxNativeZoom;return i&&(t=e-t),t+=n,null!==o&&ts?s:t},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_abortLoading:function(){var t,e;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&(e=this._tiles[t].el,e.onload=o.Util.falseFn,e.onerror=o.Util.falseFn,e.complete||(e.src=o.Util.emptyImageUrl,o.DomUtil.remove(e)))}}),o.tileLayer=function(t,e){return new o.TileLayer(t,e)},o.TileLayer.WMS=o.TileLayer.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var i=o.extend({},this.defaultWmsParams);for(var n in e)n in this.options||(i[n]=e[n]);e=o.setOptions(this,e),i.width=i.height=e.tileSize*(e.detectRetina&&o.Browser.retina?2:1),this.wmsParams=i},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[e]=this._crs.code,o.TileLayer.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._tileCoordsToBounds(t),i=this._crs.project(e.getNorthWest()),n=this._crs.project(e.getSouthEast()),s=(this._wmsVersion>=1.3&&this._crs===o.CRS.EPSG4326?[n.y,i.x,i.y,n.x]:[i.x,n.y,n.x,i.y]).join(","),r=o.TileLayer.prototype.getTileUrl.call(this,t);return r+o.Util.getParamString(this.wmsParams,r,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+s},setParams:function(t,e){return o.extend(this.wmsParams,t),e||this.redraw(),this}}),o.tileLayer.wms=function(t,e){return new o.TileLayer.WMS(t,e)},o.ImageOverlay=o.Layer.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1},initialize:function(t,e,i){this._url=t,this._bounds=o.latLngBounds(e),o.setOptions(this,i)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(o.DomUtil.addClass(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){o.DomUtil.remove(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&o.DomUtil.toFront(this._image),this},bringToBack:function(){return this._map&&o.DomUtil.toBack(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=t,this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t=this._image=o.DomUtil.create("img","leaflet-image-layer "+(this._zoomAnimated?"leaflet-zoom-animated":""));t.onselectstart=o.Util.falseFn,t.onmousemove=o.Util.falseFn,t.onload=o.bind(this.fire,this,"load"),this.options.crossOrigin&&(t.crossOrigin=""),t.src=this._url,t.alt=this.options.alt},_animateZoom:function(t){var e=this._map.getZoomScale(t.zoom),i=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min; -o.DomUtil.setTransform(this._image,i,e)},_reset:function(){var t=this._image,e=new o.Bounds(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),i=e.getSize();o.DomUtil.setPosition(t,e.min),t.style.width=i.x+"px",t.style.height=i.y+"px"},_updateOpacity:function(){o.DomUtil.setOpacity(this._image,this.options.opacity)}}),o.imageOverlay=function(t,e,i){return new o.ImageOverlay(t,e,i)},o.Icon=o.Class.extend({initialize:function(t){o.setOptions(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,e){var i=this._getIconUrl(t);if(!i){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n=this._createImg(i,e&&"IMG"===e.tagName?e:null);return this._setIconStyles(n,t),n},_setIconStyles:function(t,e){var i=this.options,n=i[e+"Size"];"number"==typeof n&&(n=[n,n]);var s=o.point(n),r=o.point("shadow"===e&&i.shadowAnchor||i.iconAnchor||s&&s.divideBy(2,!0));t.className="leaflet-marker-"+e+" "+(i.className||""),r&&(t.style.marginLeft=-r.x+"px",t.style.marginTop=-r.y+"px"),s&&(t.style.width=s.x+"px",t.style.height=s.y+"px")},_createImg:function(t,i){return i=i||e.createElement("img"),i.src=t,i},_getIconUrl:function(t){return o.Browser.retina&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}}),o.icon=function(t){return new o.Icon(t)},o.Icon.Default=o.Icon.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return o.Icon.Default.imagePath||(o.Icon.Default.imagePath=this._detectIconPath()),(this.options.imagePath||o.Icon.Default.imagePath)+o.Icon.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=o.DomUtil.create("div","leaflet-default-icon-path",e.body),i=o.DomUtil.getStyle(t,"background-image")||o.DomUtil.getStyle(t,"backgroundImage");return e.body.removeChild(t),0===i.indexOf("url")?i.replace(/^url\([\"\']?/,"").replace(/marker-icon\.png[\"\']?\)$/,""):""}}),o.Marker=o.Layer.extend({options:{icon:new o.Icon.Default,interactive:!0,draggable:!1,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",nonBubblingEvents:["click","dblclick","mouseover","mouseout","contextmenu"]},initialize:function(t,e){o.setOptions(this,e),this._latlng=o.latLng(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),this._zoomAnimated&&t.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var e=this._latlng;return this._latlng=o.latLng(t),this.update(),this.fire("move",{oldLatLng:e,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,e="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),i=t.icon.createIcon(this._icon),n=!1;i!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(i.title=t.title),t.alt&&(i.alt=t.alt)),o.DomUtil.addClass(i,e),t.keyboard&&(i.tabIndex="0"),this._icon=i,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var s=t.icon.createShadow(this._shadow),r=!1;s!==this._shadow&&(this._removeShadow(),r=!0),s&&(o.DomUtil.addClass(s,e),s.alt=""),this._shadow=s,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),s&&r&&this.getPane("shadowPane").appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),o.DomUtil.remove(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&o.DomUtil.remove(this._shadow),this._shadow=null},_setPos:function(t){o.DomUtil.setPosition(this._icon,t),this._shadow&&o.DomUtil.setPosition(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.interactive&&(o.DomUtil.addClass(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),o.Handler.MarkerDrag)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new o.Handler.MarkerDrag(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;o.DomUtil.setOpacity(this._icon,t),this._shadow&&o.DomUtil.setOpacity(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor||[0,0]},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor||[0,0]}}),o.marker=function(t,e){return new o.Marker(t,e)},o.DivIcon=o.Icon.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var i=t&&"DIV"===t.tagName?t:e.createElement("div"),n=this.options;if(i.innerHTML=n.html!==!1?n.html:"",n.bgPos){var s=o.point(n.bgPos);i.style.backgroundPosition=-s.x+"px "+-s.y+"px"}return this._setIconStyles(i,"icon"),i},createShadow:function(){return null}}),o.divIcon=function(t){return new o.DivIcon(t)},o.DivOverlay=o.Layer.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,e){o.setOptions(this,t),this._source=e},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&o.DomUtil.setOpacity(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&o.DomUtil.setOpacity(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(o.DomUtil.setOpacity(this._container,0),this._removeTimeout=setTimeout(o.bind(o.DomUtil.remove,o.DomUtil,this._container),200)):o.DomUtil.remove(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=o.latLng(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&o.DomUtil.toFront(this._container),this},bringToBack:function(){return this._map&&o.DomUtil.toBack(this._container),this},_updateContent:function(){if(this._content){var t=this._contentNode,e="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof e)t.innerHTML=e;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(e)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=o.point(this.options.offset),i=this._getAnchor();this._zoomAnimated?o.DomUtil.setPosition(this._container,t.add(i)):e=e.add(t).add(i);var n=this._containerBottom=-e.y,s=this._containerLeft=-Math.round(this._containerWidth/2)+e.x;this._container.style.bottom=n+"px",this._container.style.left=s+"px"}},_getAnchor:function(){return[0,0]}}),o.Popup=o.DivOverlay.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,className:""},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){o.DivOverlay.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof o.Path||this._source.on("preclick",o.DomEvent.stopPropagation))},onRemove:function(t){o.DivOverlay.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof o.Path||this._source.off("preclick",o.DomEvent.stopPropagation))},getEvents:function(){var t=o.DivOverlay.prototype.getEvents.call(this);return("closeOnClick"in this.options?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",e=this._container=o.DomUtil.create("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated");if(this.options.closeButton){var i=this._closeButton=o.DomUtil.create("a",t+"-close-button",e);i.href="#close",i.innerHTML="×",o.DomEvent.on(i,"click",this._onCloseButtonClick,this)}var n=this._wrapper=o.DomUtil.create("div",t+"-content-wrapper",e);this._contentNode=o.DomUtil.create("div",t+"-content",n),o.DomEvent.disableClickPropagation(n).disableScrollPropagation(this._contentNode).on(n,"contextmenu",o.DomEvent.stopPropagation),this._tipContainer=o.DomUtil.create("div",t+"-tip-container",e),this._tip=o.DomUtil.create("div",t+"-tip",this._tipContainer)},_updateLayout:function(){var t=this._contentNode,e=t.style;e.width="",e.whiteSpace="nowrap";var i=t.offsetWidth;i=Math.min(i,this.options.maxWidth),i=Math.max(i,this.options.minWidth),e.width=i+1+"px",e.whiteSpace="",e.height="";var n=t.offsetHeight,s=this.options.maxHeight,r="leaflet-popup-scrolled";s&&n>s?(e.height=s+"px",o.DomUtil.addClass(t,r)):o.DomUtil.removeClass(t,r),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),i=this._getAnchor();o.DomUtil.setPosition(this._container,e.add(i))},_adjustPan:function(){if(!(!this.options.autoPan||this._map._panAnim&&this._map._panAnim._inProgress)){var t=this._map,e=parseInt(o.DomUtil.getStyle(this._container,"marginBottom"),10)||0,i=this._container.offsetHeight+e,n=this._containerWidth,s=new o.Point(this._containerLeft,-i-this._containerBottom);s._add(o.DomUtil.getPosition(this._container));var r=t.layerPointToContainerPoint(s),a=o.point(this.options.autoPanPadding),h=o.point(this.options.autoPanPaddingTopLeft||a),l=o.point(this.options.autoPanPaddingBottomRight||a),u=t.getSize(),c=0,d=0;r.x+n+l.x>u.x&&(c=r.x+n-u.x+l.x),r.x-c-h.x<0&&(c=r.x-h.x),r.y+i+l.y>u.y&&(d=r.y+i-u.y+l.y),r.y-d-h.y<0&&(d=r.y-h.y),(c||d)&&t.fire("autopanstart").panBy([c,d])}},_onCloseButtonClick:function(t){this._close(),o.DomEvent.stop(t)},_getAnchor:function(){return o.point(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}}),o.popup=function(t,e){return new o.Popup(t,e)},o.Map.mergeOptions({closePopupOnClick:!0}),o.Map.include({openPopup:function(t,e,i){return t instanceof o.Popup||(t=new o.Popup(i).setContent(t)),e&&t.setLatLng(e),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),o.Layer.include({bindPopup:function(t,e){return t instanceof o.Popup?(o.setOptions(t,e),this._popup=t,t._source=this):(this._popup&&!e||(this._popup=new o.Popup(e,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,e){if(t instanceof o.Layer||(e=t,t=this),t instanceof o.FeatureGroup)for(var i in this._layers){t=this._layers[i];break}return e||(e=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,e)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e=t.layer||t.target;if(this._popup&&this._map)return o.DomEvent.stop(t),e instanceof o.Path?void this.openPopup(t.layer||t.target,t.latlng):void(this._map.hasLayer(this._popup)&&this._popup._source===e?this.closePopup():this.openPopup(e,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)}}),o.Tooltip=o.DivOverlay.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){o.DivOverlay.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){o.DivOverlay.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=o.DivOverlay.prototype.getEvents.call(this);return o.Browser.touch&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip",e=t+" "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=o.DomUtil.create("div",e)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e=this._map,i=this._container,n=e.latLngToContainerPoint(e.getCenter()),s=e.layerPointToContainerPoint(t),r=this.options.direction,a=i.offsetWidth,h=i.offsetHeight,l=o.point(this.options.offset),u=this._getAnchor();"top"===r?t=t.add(o.point(-a/2+l.x,-h+l.y+u.y,!0)):"bottom"===r?t=t.subtract(o.point(a/2-l.x,-l.y,!0)):"center"===r?t=t.subtract(o.point(a/2+l.x,h/2-u.y+l.y,!0)):"right"===r||"auto"===r&&s.xh&&(s=r,h=a);h>i&&(e[s]=1,this._simplifyDPStep(t,e,i,n,s),this._simplifyDPStep(t,e,i,s,o))},_reducePoints:function(t,e){for(var i=[t[0]],n=1,o=0,s=t.length;ne&&(i.push(t[n]),o=n);return oe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i},_sqDist:function(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n},_sqClosestPointOnSegment:function(t,e,i,n){var s,r=e.x,a=e.y,h=i.x-r,l=i.y-a,u=h*h+l*l;return u>0&&(s=((t.x-r)*h+(t.y-a)*l)/u,s>1?(r=i.x,a=i.y):s>0&&(r+=h*s,a+=l*s)),h=t.x-r,l=t.y-a,n?h*h+l*l:new o.Point(r,a)}},o.Polyline=o.Path.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,e){o.setOptions(this,e),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var e,i,n=1/0,s=null,r=o.LineUtil._sqClosestPointOnSegment,a=0,h=this._parts.length;ae)return r=(n-e)/i,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,e){return e=e||this._defaultShape(),t=o.latLng(t),e.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new o.LatLngBounds,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return o.Polyline._flat(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var e=[],i=o.Polyline._flat(t),n=0,s=t.length;n=2&&e[0]instanceof o.LatLng&&e[0].equals(e[i-1])&&e.pop(),e},_setLatLngs:function(t){o.Polyline.prototype._setLatLngs.call(this,t),o.Polyline._flat(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return o.Polyline._flat(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,e=this.options.weight,i=new o.Point(e,e);if(t=new o.Bounds(t.min.subtract(i),t.max.add(i)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t)){if(this.options.noClip)return void(this._parts=this._rings);for(var n,s=0,r=this._rings.length;s';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(t){return!1}}(),o.SVG.include(o.Browser.vml?{_initContainer:function(){this._container=o.DomUtil.create("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(o.Renderer.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=o.SVG.create("shape");o.DomUtil.addClass(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=o.SVG.create("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[o.stamp(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;o.DomUtil.remove(e),t.removeInteractiveTarget(e),delete this._layers[o.stamp(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,n=t.options,s=t._container;s.stroked=!!n.stroke,s.filled=!!n.fill,n.stroke?(e||(e=t._stroke=o.SVG.create("stroke")),s.appendChild(e),e.weight=n.weight+"px",e.color=n.color,e.opacity=n.opacity,n.dashArray?e.dashStyle=o.Util.isArray(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=n.lineCap.replace("butt","flat"),e.joinstyle=n.lineJoin):e&&(s.removeChild(e),t._stroke=null),n.fill?(i||(i=t._fill=o.SVG.create("fill")),s.appendChild(i),i.color=n.fillColor||n.color,i.opacity=n.fillOpacity):i&&(s.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),n=Math.round(t._radiusY||i);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+i+","+n+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){o.DomUtil.toFront(t._container)},_bringToBack:function(t){o.DomUtil.toBack(t._container)}}:{}),o.Browser.vml&&(o.SVG.create=function(){try{return e.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return e.createElement("')}}catch(t){return function(t){return e.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}()),o.Canvas=o.Renderer.extend({getEvents:function(){var t=o.Renderer.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){o.Renderer.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=e.createElement("canvas");o.DomEvent.on(t,"mousemove",o.Util.throttle(this._onMouseMove,32,this),this).on(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this).on(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_updatePaths:function(){if(!this._postponeUpdatePaths){var t;this._redrawBounds=null;for(var e in this._layers)t=this._layers[e],t._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){this._drawnLayers={},o.Renderer.prototype._update.call(this);var t=this._bounds,e=this._container,i=t.getSize(),n=o.Browser.retina?2:1;o.DomUtil.setPosition(e,t.min),e.width=n*i.x,e.height=n*i.y,e.style.width=i.x+"px",e.style.height=i.y+"px",o.Browser.retina&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){o.Renderer.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[o.stamp(t)]=t;var e=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=e),this._drawLast=e,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var e=t._order,i=e.next,n=e.prev;i?i.prev=n:this._drawLast=n,n?n.next=i:this._drawFirst=i,delete t._order,delete this._layers[o.stamp(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(t.options.dashArray){var e,i=t.options.dashArray.split(","),n=[];for(e=0;et.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(u=!u);return u||o.Polyline.prototype._containsPoint.call(this,t,!0)},o.CircleMarker.prototype._containsPoint=function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()},o.GeoJSON=o.FeatureGroup.extend({initialize:function(t,e){o.setOptions(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,s=o.Util.isArray(t)?t:t.features;if(s){for(e=0,i=s.length;e1)return void(this._moved=!0);var n=i.touches&&1===i.touches.length?i.touches[0]:i,s=new o.Point(n.clientX,n.clientY),r=s.subtract(this._startPoint);(r.x||r.y)&&(Math.abs(r.x)+Math.abs(r.y)50&&(this._positions.shift(),this._times.shift())}this._map.fire("move",t).fire("drag",t)},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,e){return t-(t-e)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),e=this._offsetLimit;t.xe.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,s=(n+e+i)%t-e-i,r=Math.abs(o+i)0?s:-s))-e;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(e+r):t.setZoomAround(this._lastMousePos,e+r))}}),o.Map.addInitHook("addHandler","scrollWheelZoom",o.Map.ScrollWheelZoom),o.extend(o.DomEvent,{_touchstart:o.Browser.msPointer?"MSPointerDown":o.Browser.pointer?"pointerdown":"touchstart",_touchend:o.Browser.msPointer?"MSPointerUp":o.Browser.pointer?"pointerup":"touchend",addDoubleTapListener:function(t,e,i){function n(t){var e;if(o.Browser.pointer){if(!o.Browser.edge||"mouse"===t.pointerType)return;e=o.DomEvent._pointersCount}else e=t.touches.length;if(!(e>1)){var i=Date.now(),n=i-(r||i);a=t.touches?t.touches[0]:t,h=n>0&&n<=l,r=i}}function s(t){if(h&&!a.cancelBubble){if(o.Browser.pointer){if(!o.Browser.edge||"mouse"===t.pointerType)return;var i,n,s={};for(n in a)i=a[n],s[n]=i&&i.bind?i.bind(a):i;a=s}a.type="dblclick",e(a),r=null}}var r,a,h=!1,l=250,u="_leaflet_",c=this._touchstart,d=this._touchend;return t[u+c+i]=n,t[u+d+i]=s,t[u+"dblclick"+i]=e,t.addEventListener(c,n,!1),t.addEventListener(d,s,!1),t.addEventListener("dblclick",e,!1),this},removeDoubleTapListener:function(t,e){var i="_leaflet_",n=t[i+this._touchstart+e],s=t[i+this._touchend+e],r=t[i+"dblclick"+e];return t.removeEventListener(this._touchstart,n,!1),t.removeEventListener(this._touchend,s,!1),o.Browser.edge||t.removeEventListener("dblclick",r,!1),this}}),o.extend(o.DomEvent,{POINTER_DOWN:o.Browser.msPointer?"MSPointerDown":"pointerdown",POINTER_MOVE:o.Browser.msPointer?"MSPointerMove":"pointermove",POINTER_UP:o.Browser.msPointer?"MSPointerUp":"pointerup",POINTER_CANCEL:o.Browser.msPointer?"MSPointerCancel":"pointercancel",TAG_WHITE_LIST:["INPUT","SELECT","OPTION"],_pointers:{},_pointersCount:0,addPointerListener:function(t,e,i,n){return"touchstart"===e?this._addPointerStart(t,i,n):"touchmove"===e?this._addPointerMove(t,i,n):"touchend"===e&&this._addPointerEnd(t,i,n),this},removePointerListener:function(t,e,i){var n=t["_leaflet_"+e+i];return"touchstart"===e?t.removeEventListener(this.POINTER_DOWN,n,!1):"touchmove"===e?t.removeEventListener(this.POINTER_MOVE,n,!1):"touchend"===e&&(t.removeEventListener(this.POINTER_UP,n,!1),t.removeEventListener(this.POINTER_CANCEL,n,!1)),this},_addPointerStart:function(t,i,n){var s=o.bind(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(this.TAG_WHITE_LIST.indexOf(t.target.tagName)<0))return;o.DomEvent.preventDefault(t)}this._handlePointer(t,i)},this);if(t["_leaflet_touchstart"+n]=s,t.addEventListener(this.POINTER_DOWN,s,!1),!this._pointerDocListener){var r=o.bind(this._globalPointerUp,this);e.documentElement.addEventListener(this.POINTER_DOWN,o.bind(this._globalPointerDown,this),!0),e.documentElement.addEventListener(this.POINTER_MOVE,o.bind(this._globalPointerMove,this),!0),e.documentElement.addEventListener(this.POINTER_UP,r,!0),e.documentElement.addEventListener(this.POINTER_CANCEL,r,!0),this._pointerDocListener=!0}},_globalPointerDown:function(t){this._pointers[t.pointerId]=t,this._pointersCount++},_globalPointerMove:function(t){this._pointers[t.pointerId]&&(this._pointers[t.pointerId]=t)},_globalPointerUp:function(t){delete this._pointers[t.pointerId],this._pointersCount--},_handlePointer:function(t,e){t.touches=[];for(var i in this._pointers)t.touches.push(this._pointers[i]);t.changedTouches=[t],e(t)},_addPointerMove:function(t,e,i){var n=o.bind(function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&this._handlePointer(t,e)},this);t["_leaflet_touchmove"+i]=n,t.addEventListener(this.POINTER_MOVE,n,!1)},_addPointerEnd:function(t,e,i){var n=o.bind(function(t){this._handlePointer(t,e)},this);t["_leaflet_touchend"+i]=n,t.addEventListener(this.POINTER_UP,n,!1),t.addEventListener(this.POINTER_CANCEL,n,!1)}}),o.Map.mergeOptions({touchZoom:o.Browser.touch&&!o.Browser.android23,bounceAtZoomLimits:!0}),o.Map.TouchZoom=o.Handler.extend({addHooks:function(){o.DomUtil.addClass(this._map._container,"leaflet-touch-zoom"),o.DomEvent.on(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){o.DomUtil.removeClass(this._map._container,"leaflet-touch-zoom"),o.DomEvent.off(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var n=i.mouseEventToContainerPoint(t.touches[0]),s=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),"center"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(n.add(s)._divideBy(2))),this._startDist=n.distanceTo(s),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),o.DomEvent.on(e,"touchmove",this._onTouchMove,this).on(e,"touchend",this._onTouchEnd,this),o.DomEvent.preventDefault(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var e=this._map,i=e.mouseEventToContainerPoint(t.touches[0]),n=e.mouseEventToContainerPoint(t.touches[1]),s=i.distanceTo(n)/this._startDist;if(this._zoom=e.getScaleZoom(s,this._startZoom),!e.options.bounceAtZoomLimits&&(this._zoome.getMaxZoom()&&s>1)&&(this._zoom=e._limitZoom(this._zoom)),"center"===e.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=i._add(n)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=e.unproject(e.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(e._moveStart(!0),this._moved=!0),o.Util.cancelAnimFrame(this._animRequest);var a=o.bind(e._move,e,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=o.Util.requestAnimFrame(a,this,!0),o.DomEvent.preventDefault(t)}},_onTouchEnd:function(){return this._moved&&this._zooming?(this._zooming=!1,o.Util.cancelAnimFrame(this._animRequest),o.DomEvent.off(e,"touchmove",this._onTouchMove).off(e,"touchend",this._onTouchEnd),void(this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom)))):void(this._zooming=!1)}}),o.Map.addInitHook("addHandler","touchZoom",o.Map.TouchZoom),o.Map.mergeOptions({tap:!0,tapTolerance:15}),o.Map.Tap=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){o.DomEvent.off(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(o.DomEvent.preventDefault(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new o.Point(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.addClass(n,"leaflet-active"),this._holdTimeout=setTimeout(o.bind(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),this._simulateEvent("mousedown",i),o.DomEvent.on(e,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),o.DomEvent.off(e,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],n=i.target;n&&n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.removeClass(n,"leaflet-active"),this._simulateEvent("mouseup",i), -this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new o.Point(e.clientX,e.clientY),this._simulateEvent("mousemove",e)},_simulateEvent:function(i,n){var o=e.createEvent("MouseEvents");o._simulated=!0,n.target._simulatedClick=!0,o.initMouseEvent(i,!0,!0,t,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(o)}}),o.Browser.touch&&!o.Browser.pointer&&o.Map.addInitHook("addHandler","tap",o.Map.Tap),o.Map.mergeOptions({boxZoom:!0}),o.Map.BoxZoom=o.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane},addHooks:function(){o.DomEvent.on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){o.DomEvent.off(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_resetState:function(){this._moved=!1},_onMouseDown:function(t){return!(!t.shiftKey||1!==t.which&&1!==t.button)&&(this._resetState(),o.DomUtil.disableTextSelection(),o.DomUtil.disableImageDrag(),this._startPoint=this._map.mouseEventToContainerPoint(t),void o.DomEvent.on(e,{contextmenu:o.DomEvent.stop,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this))},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=o.DomUtil.create("div","leaflet-zoom-box",this._container),o.DomUtil.addClass(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var e=new o.Bounds(this._point,this._startPoint),i=e.getSize();o.DomUtil.setPosition(this._box,e.min),this._box.style.width=i.x+"px",this._box.style.height=i.y+"px"},_finish:function(){this._moved&&(o.DomUtil.remove(this._box),o.DomUtil.removeClass(this._container,"leaflet-crosshair")),o.DomUtil.enableTextSelection(),o.DomUtil.enableImageDrag(),o.DomEvent.off(e,{contextmenu:o.DomEvent.stop,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){setTimeout(o.bind(this._resetState,this),0);var e=new o.LatLngBounds(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(e).fire("boxzoomend",{boxZoomBounds:e})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}}),o.Map.addInitHook("addHandler","boxZoom",o.Map.BoxZoom),o.Map.mergeOptions({keyboard:!0,keyboardPanDelta:80}),o.Map.Keyboard=o.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex="0"),o.DomEvent.on(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),o.DomEvent.off(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var i=e.body,n=e.documentElement,o=i.scrollTop||n.scrollTop,s=i.scrollLeft||n.scrollLeft;this._map._container.focus(),t.scrollTo(s,o)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var e,i,n=this._panKeys={},o=this.keyCodes;for(e=0,i=o.left.length;e0&&t.screenY>0&&this._map.getContainer().focus()}}),o.control=function(t){return new o.Control(t)},o.Map.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,s){var r=i+t+" "+i+s;e[t+s]=o.DomUtil.create("div",r,n)}var e=this._controlCorners={},i="leaflet-",n=this._controlContainer=o.DomUtil.create("div",i+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){o.DomUtil.remove(this._controlContainer)}}),o.Control.Zoom=o.Control.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"-",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=o.DomUtil.create("div",e+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,e+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,e+"-out",i,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,n,s){var r=o.DomUtil.create("a",i,n);return r.innerHTML=t,r.href="#",r.title=e,r.setAttribute("role","button"),r.setAttribute("aria-label",e),o.DomEvent.on(r,"mousedown dblclick",o.DomEvent.stopPropagation).on(r,"click",o.DomEvent.stop).on(r,"click",s,this).on(r,"click",this._refocusOnMap,this),r},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";o.DomUtil.removeClass(this._zoomInButton,e),o.DomUtil.removeClass(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMinZoom())&&o.DomUtil.addClass(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMaxZoom())&&o.DomUtil.addClass(this._zoomInButton,e)}}),o.Map.mergeOptions({zoomControl:!0}),o.Map.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new o.Control.Zoom,this.addControl(this.zoomControl))}),o.control.zoom=function(t){return new o.Control.Zoom(t)},o.Control.Attribution=o.Control.extend({options:{position:"bottomright",prefix:'Leaflet'},initialize:function(t){o.setOptions(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=o.DomUtil.create("div","leaflet-control-attribution"),o.DomEvent&&o.DomEvent.disableClickPropagation(this._container);for(var e in t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}}}),o.Map.mergeOptions({attributionControl:!0}),o.Map.addInitHook(function(){this.options.attributionControl&&(new o.Control.Attribution).addTo(this)}),o.control.attribution=function(t){return new o.Control.Attribution(t)},o.Control.Scale=o.Control.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",i=o.DomUtil.create("div",e),n=this.options;return this._addScales(n,e+"-line",i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=o.DomUtil.create("div",e,i)),t.imperial&&(this._iScale=o.DomUtil.create("div",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,i=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(i)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t),i=e<1e3?e+" m":e/1e3+" km";this._updateScale(this._mScale,i,e/t)},_updateImperial:function(t){var e,i,n,o=3.2808399*t;o>5280?(e=o/5280,i=this._getRoundNum(e),this._updateScale(this._iScale,i+" mi",i/e)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+" ft",n/o))},_updateScale:function(t,e,i){t.style.width=Math.round(this.options.maxWidth*i)+"px",t.innerHTML=e},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1,e*i}}),o.control.scale=function(t){return new o.Control.Scale(t)},o.Control.Layers=o.Control.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,e,i,n){return i1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=e&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var e=this._getLayer(o.stamp(t.target)),i=e.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)},_createRadioElement:function(t,i){var n='",o=e.createElement("div");return o.innerHTML=n,o.firstChild},_addItem:function(t){var i,n=e.createElement("label"),s=this._map.hasLayer(t.layer);t.overlay?(i=e.createElement("input"),i.type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=s):i=this._createRadioElement("leaflet-base-layers",s),i.layerId=o.stamp(t.layer),o.DomEvent.on(i,"click",this._onInputClick,this);var r=e.createElement("span");r.innerHTML=" "+t.name;var a=e.createElement("div");n.appendChild(a),a.appendChild(i),a.appendChild(r);var h=t.overlay?this._overlaysList:this._baseLayersList;return h.appendChild(n),this._checkDisabledLayers(),n},_onInputClick:function(){var t,e,i,n=this._form.getElementsByTagName("input"),o=[],s=[];this._handlingClick=!0;for(var r=n.length-1;r>=0;r--)t=n[r],e=this._getLayer(t.layerId).layer,i=this._map.hasLayer(e),t.checked&&!i?o.push(e):!t.checked&&i&&s.push(e);for(r=0;r=0;s--)t=n[s],e=this._getLayer(t.layerId).layer,t.disabled=e.options.minZoom!==i&&oe.options.maxZoom},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),o.control.layers=function(t,e,i){return new o.Control.Layers(t,e,i)}}(window,document); \ No newline at end of file diff --git a/org.argeo.suite.workbench.rap/plugin.xml b/org.argeo.suite.workbench.rap/plugin.xml deleted file mode 100644 index 981c361..0000000 --- a/org.argeo.suite.workbench.rap/plugin.xml +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/org.argeo.suite.workbench.rap/pom.xml b/org.argeo.suite.workbench.rap/pom.xml deleted file mode 100644 index 9ff94f3..0000000 --- a/org.argeo.suite.workbench.rap/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - 4.0.0 - - org.argeo.suite - argeo-suite - 2.1.15-SNAPSHOT - .. - - org.argeo.suite.workbench.rap - RAP Workbench - jar - - - org.argeo.connect - org.argeo.documents - ${version.argeo-connect} - - - org.argeo.connect - org.argeo.tracker - ${version.argeo-connect} - - - org.argeo.connect - org.argeo.people.workbench.rap - ${version.argeo-connect} - - - - org.argeo.tp - argeo-tp-rap-e3 - ${version.argeo-tp} - pom - provided - - - - diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/AsUiPlugin.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/AsUiPlugin.java deleted file mode 100644 index 7cb1885..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/AsUiPlugin.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.argeo.suite.workbench; - -import java.net.URL; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.osgi.framework.BundleContext; - -/** The activator class controls the plug-in life cycle */ -public class AsUiPlugin extends AbstractUIPlugin { - - public static final String PLUGIN_ID = "org.argeo.suite.workbench.rap"; - - // The shared instance - private static AsUiPlugin plugin; - - private BundleContext bundleContext; - - /** Default constructor */ - public AsUiPlugin() { - } - - public void start(BundleContext context) throws Exception { - super.start(context); - this.bundleContext = context; - plugin = this; - } - - public void stop(BundleContext context) throws Exception { - plugin = null; - super.stop(context); - } - - /** - * Returns the shared instance - * - * @return the shared instance - */ - public static AsUiPlugin getDefault() { - return plugin; - } - - /** Creates the image */ - public static Image img(String path) { - return getImageDescriptor(path).createImage(); - } - - /** - * Returns an image descriptor for the image file at the given plug-in - * relative path - * - * @param path - * the path - * @return the image descriptor - */ - public static ImageDescriptor getImageDescriptor(String path) { - return imageDescriptorFromPlugin(PLUGIN_ID, path); - } - - public URL imageUrl(String path) { - return bundleContext.getBundle().getResource(path); - } - - @Override - protected void initializeImageRegistry(ImageRegistry reg) { - } - - public BundleContext getBundleContext() { - return bundleContext; - } -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/DashboardPerspective.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/DashboardPerspective.java deleted file mode 100644 index 765de22..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/DashboardPerspective.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.argeo.suite.workbench; - -import org.argeo.documents.workbench.parts.MyFilesView; -import org.argeo.suite.workbench.parts.QuickSearchView; -import org.eclipse.ui.IFolderLayout; -import org.eclipse.ui.IPageLayout; -import org.eclipse.ui.IPerspectiveFactory; - -/** Default Argeo Suite Dashboard perspective */ -public class DashboardPerspective implements IPerspectiveFactory { - - public void createInitialLayout(IPageLayout layout) { - String editorArea = layout.getEditorArea(); - layout.setEditorAreaVisible(true); - layout.setFixed(false); - IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT, 0.25f, editorArea); - left.addView(MyFilesView.ID); - left.addView(QuickSearchView.ID); - // left.addView(MyTodoListView.ID); - } -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/SuiteWorkbenchException.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/SuiteWorkbenchException.java deleted file mode 100644 index dbc3333..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/SuiteWorkbenchException.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.argeo.suite.workbench; - -public class SuiteWorkbenchException extends RuntimeException { - private static final long serialVersionUID = 5276857785523513563L; - - public SuiteWorkbenchException(String message) { - super(message); - } - - public SuiteWorkbenchException(Throwable cause) { - super(cause); - } - - public SuiteWorkbenchException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/commands/ImportEntities.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/commands/ImportEntities.java deleted file mode 100644 index b9906e9..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/commands/ImportEntities.java +++ /dev/null @@ -1,670 +0,0 @@ -package org.argeo.suite.workbench.commands; - -import static org.argeo.eclipse.ui.EclipseUiUtils.notEmpty; -import static org.argeo.suite.workbench.commands.JxlUtils.getStringValue; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import javax.jcr.Node; -import javax.jcr.Property; -import javax.jcr.Repository; -import javax.jcr.RepositoryException; -import javax.jcr.Session; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.activities.ActivitiesNames; -import org.argeo.connect.ConnectConstants; -import org.argeo.connect.ConnectNames; -import org.argeo.connect.resources.ResourcesNames; -import org.argeo.connect.resources.ResourcesService; -import org.argeo.connect.util.ConnectJcrUtils; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.argeo.jcr.JcrUtils; -import org.argeo.people.ContactValueCatalogs; -import org.argeo.people.PeopleException; -import org.argeo.people.PeopleNames; -import org.argeo.people.PeopleService; -import org.argeo.people.PeopleTypes; -import org.argeo.people.util.PeopleJcrUtils; -import org.argeo.people.util.PersonJcrUtils; -import org.argeo.suite.workbench.SuiteWorkbenchException; -import org.argeo.suite.workbench.AsUiPlugin; -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.rap.fileupload.FileDetails; -import org.eclipse.rap.fileupload.FileUploadEvent; -import org.eclipse.rap.fileupload.FileUploadHandler; -import org.eclipse.rap.fileupload.FileUploadListener; -import org.eclipse.rap.fileupload.FileUploadReceiver; -import org.eclipse.rap.rwt.service.ServerPushSession; -import org.eclipse.rap.rwt.widgets.FileUpload; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.handlers.HandlerUtil; - -import jxl.Sheet; -import jxl.Workbook; - -/** Open a one page wizard to import an EXCEL 2003 legacy organisation file */ -public class ImportEntities extends AbstractHandler implements PeopleNames { - private final static Log log = LogFactory.getLog(ImportEntities.class); - - public final static String ID = AsUiPlugin.PLUGIN_ID + ".importEntities"; - - // public final static String PARAM_NODE_TYPE = "param.nodeType"; - - private static final Map KNOWN_TEMPLATES; - static { - Map tmpMap = new HashMap(); - tmpMap.put("Organisations", PeopleTypes.PEOPLE_ORG); - tmpMap.put("Persons", PeopleTypes.PEOPLE_PERSON); - KNOWN_TEMPLATES = Collections.unmodifiableMap(tmpMap); - } - - // TODO make this configurable - private final static String IMPORT_ENCODING = "ISO-8859-1";// "UTF-8"; - - /* DEPENDENCY INJECTION */ - private Repository repository; - private ResourcesService resourcesService; - private PeopleService peopleService; - - public Object execute(final ExecutionEvent event) throws ExecutionException { - // String jcrId = event.getParameter(PARAM_NODE_TYPE); - - Wizard wizard = new ImportMappingFileWizard(HandlerUtil.getActiveShell(event), - "Upload legacy contact via Excel file import"); - WizardDialog dialog = new WizardDialog(HandlerUtil.getActiveShell(event), wizard); - dialog.open(); - return null; - } - - /** One page wizard to import a EXCEL 2003 Mapping files */ - private class ImportMappingFileWizard extends Wizard { - - // Various UI Objects - private UserInputPage userInputPage; - private Combo resourceTypeCombo; - - // File upload - private FileUpload fileUpload; - private Label fileNameLabel; - private ServerPushSession pushSession; - private File file; - - public ImportMappingFileWizard(Shell parentShell, String title) { - setWindowTitle(title); - } - - @Override - public void addPages() { - try { - userInputPage = new UserInputPage("User input page"); - addPage(userInputPage); - } catch (Exception e) { - throw new SuiteWorkbenchException("Cannot add page to wizard", e); - } - } - - /** Performs the real import. */ - @Override - public boolean performFinish() { - String templateName = resourceTypeCombo.getItem(resourceTypeCombo.getSelectionIndex()); - String type = KNOWN_TEMPLATES.get(templateName); - InputStream in = null; - try { - in = new FileInputStream(file); - if (PeopleTypes.PEOPLE_ORG.equals(type)) - importDefaultOrgFile(in); - else if (PeopleTypes.PEOPLE_PERSON.equals(type)) - importDefaultPersonFile(in); - } catch (IOException e) { - throw new SuiteWorkbenchException("Cannot import mapping file", e); - } finally { - IOUtils.closeQuietly(in); - } - return true; - } - - @Override - public boolean performCancel() { - return true; - } - - @Override - public boolean canFinish() { - if (resourceTypeCombo.getSelectionIndex() < 0) { - userInputPage.setErrorMessage("Please choose an entity type"); - return false; - } else if (file == null) { - userInputPage.setErrorMessage("Please upload a file"); - return false; - } else { - userInputPage.setErrorMessage(null); - return true; - } - } - - private class UserInputPage extends WizardPage { - private static final long serialVersionUID = 1L; - - public UserInputPage(String pageName) { - super(pageName); - setTitle("Upload an Excel 2003 file (.xls)"); - } - - public void createControl(Composite parent) { - parent.setLayout(new GridLayout(1, false)); - Composite composite = new Composite(parent, SWT.NONE); - composite.setLayout(new GridLayout(2, false)); - composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); - - // Import type - resourceTypeCombo = createLC(composite, "Type"); - resourceTypeCombo.addModifyListener(new ModifyListener() { - private static final long serialVersionUID = 1L; - - @Override - public void modifyText(ModifyEvent event) { - getWizard().getContainer().updateButtons(); - } - }); - resourceTypeCombo.setItems(KNOWN_TEMPLATES.keySet().toArray(new String[0])); - resourceTypeCombo.select(0); - - // File upload - Label lbl = new Label(composite, SWT.NONE); - lbl.setText("Chosen file"); - lbl.setFont(EclipseUiUtils.getBoldFont(composite)); - Composite uploadCmp = new Composite(composite, SWT.NONE); - uploadCmp.setLayoutData(EclipseUiUtils.fillWidth()); - createFileUploadArea(uploadCmp); - setControl(composite); - } - } - - private Control createFileUploadArea(Composite parent) { - GridLayout gl = EclipseUiUtils.noSpaceGridLayout(new GridLayout(2, false)); - gl.horizontalSpacing = 5; - parent.setLayout(gl); - - fileNameLabel = new Label(parent, SWT.NONE | SWT.BEGINNING); - fileNameLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - - fileUpload = new FileUpload(parent, SWT.NONE); - fileUpload.setText("Browse..."); - fileUpload.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); - - final String url = startUploadReceiver(); - pushSession = new ServerPushSession(); - - fileUpload.addSelectionListener(new SelectionAdapter() { - private static final long serialVersionUID = 1L; - - @Override - public void widgetSelected(SelectionEvent e) { - String fileName = fileUpload.getFileName(); - fileNameLabel.setText(fileName == null ? "" : fileName); - pushSession.start(); - fileUpload.submit(url); - } - }); - return parent; - } - - private String startUploadReceiver() { - MyFileUploadReceiver receiver = new MyFileUploadReceiver(); - FileUploadHandler uploadHandler = new FileUploadHandler(receiver); - uploadHandler.addUploadListener(new FileUploadListener() { - - public void uploadProgress(FileUploadEvent event) { - // handle upload progress - } - - public void uploadFailed(FileUploadEvent event) { - ImportMappingFileWizard.this.userInputPage - .setErrorMessage("upload failed: " + event.getException()); - } - - public void uploadFinished(FileUploadEvent event) { - fileNameLabel.getDisplay().asyncExec(new Runnable() { - public void run() { - ImportMappingFileWizard.this.getContainer().updateButtons(); - pushSession.stop(); - } - }); - } - }); - return uploadHandler.getUploadUrl(); - } - - private class MyFileUploadReceiver extends FileUploadReceiver { - - private static final String TEMP_FILE_PREFIX = "fileupload_"; - - @Override - public void receive(InputStream dataStream, FileDetails details) throws IOException { - File result = File.createTempFile(TEMP_FILE_PREFIX, ""); - FileOutputStream outputStream = new FileOutputStream(result); - try { - copy(dataStream, outputStream); - } finally { - dataStream.close(); - outputStream.close(); - } - if (file != null) - file.delete(); - file = result; - } - } - - private void copy(InputStream inputStream, OutputStream outputStream) throws IOException { - byte[] buffer = new byte[8192]; - boolean finished = false; - while (!finished) { - int bytesRead = inputStream.read(buffer); - if (bytesRead != -1) { - outputStream.write(buffer, 0, bytesRead); - } else { - finished = true; - } - } - } - - /** Creates label and Combo. */ - protected Combo createLC(Composite parent, String label) { - Label lbl = new Label(parent, SWT.RIGHT); - lbl.setText(label); - lbl.setFont(EclipseUiUtils.getBoldFont(parent)); - lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false)); - Combo combo = new Combo(parent, SWT.READ_ONLY); - combo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - return combo; - } - } - - private Node importDefaultOrgFile(InputStream in) throws IOException { - // TODO make this configurable - int displayNameIndex = 0; - int legalNameIndex = 1; - int legalFormIndex = 2; - int urlsIndex = 3; - int streetIndex = 4; - int postalCodeIndex = 5; - int lIndex = 6; - int stIndex = 7; - int cIndex = 8; - int mobileIndex = 9; - int telephoneNumberIndex = 10; - int mailIndex = 11; - int contactsIndex = 12; - int descriptionIndex = 13; - int tagsIndex = 14; - - Session session = null; - int i = 0; - try { - Workbook wb = JxlUtils.toWorkbook(in, IMPORT_ENCODING); - session = repository.login(); - String basePath = "/" + peopleService.getBaseRelPath(PeopleTypes.PEOPLE_ORG); - Node targetParent = session.getNode(basePath); - Sheet sheet = wb.getSheet(0); - - Node tmpParent = peopleService.getDraftParent(session); - - int rowNb = sheet.getRows(); - for (i = 1; i < rowNb - 1; i++) { - - Node tmpOrg = createDraftNode(tmpParent, PeopleTypes.PEOPLE_ORG); - - String dName = JxlUtils.getStringValue(sheet, displayNameIndex, i); - if (notEmpty(dName)) - tmpOrg.setProperty(PeopleNames.PEOPLE_DISPLAY_NAME, dName); - String lName = getStringValue(sheet, legalNameIndex, i); - if (notEmpty(lName)) - tmpOrg.setProperty(PeopleNames.PEOPLE_LEGAL_NAME, lName); - String lForm = getStringValue(sheet, legalFormIndex, i); - if (notEmpty(lForm)) - tmpOrg.setProperty(PeopleNames.PEOPLE_LEGAL_FORM, lForm); - String urlStr = getStringValue(sheet, urlsIndex, i); - if (notEmpty(urlStr)) - importUrls(tmpOrg, urlStr); - String mailStr = getStringValue(sheet, mailIndex, i); - if (notEmpty(mailStr)) - importMails(tmpOrg, mailStr); - String streetStr = getStringValue(sheet, streetIndex, i); - String pcStr = getStringValue(sheet, postalCodeIndex, i); - String lStr = getStringValue(sheet, lIndex, i); - String stStr = getStringValue(sheet, stIndex, i); - String cStr = getStringValue(sheet, cIndex, i); - if (notEmpty(streetStr) || notEmpty(pcStr) || notEmpty(lStr) || notEmpty(stStr) || notEmpty(cStr)) - PeopleJcrUtils.createAddress(resourcesService, peopleService, tmpOrg, streetStr, null, pcStr, lStr, - stStr, cStr, true, ContactValueCatalogs.CONTACT_CAT_MAIN, null); - String mobileStr = getStringValue(sheet, mobileIndex, i); - if (notEmpty(mobileStr)) - PeopleJcrUtils.createPhone(resourcesService, peopleService, tmpOrg, mobileStr, true, null, null); - String phoneStr = getStringValue(sheet, telephoneNumberIndex, i); - if (notEmpty(phoneStr)) - PeopleJcrUtils.createPhone(resourcesService, peopleService, tmpOrg, phoneStr, true, - ContactValueCatalogs.CONTACT_CAT_DIRECT, null); - String descStr = getStringValue(sheet, descriptionIndex, i); - if (notEmpty(descStr)) - tmpOrg.setProperty(Property.JCR_DESCRIPTION, descStr); - String tagsStr = getStringValue(sheet, tagsIndex, i); - if (notEmpty(tagsStr)) - tmpOrg.setProperty(ResourcesNames.CONNECT_TAGS, ConnectJcrUtils.parseAndClean(tagsStr, ",", true)); - - Node newOrgNode = peopleService.publishEntity(targetParent, PeopleTypes.PEOPLE_ORG, tmpOrg); - // Save the newly created entity without creating a base version - newOrgNode = peopleService.saveEntity(newOrgNode, false); - - String contactsStr = getStringValue(sheet, contactsIndex, i); - if (notEmpty(contactsStr)) - importOrgEmployees(tmpParent, targetParent, newOrgNode, contactsStr); - } - - // Refresh tags and mailing list - Node tagParent = resourcesService.getTagLikeResourceParent(session, ConnectConstants.RESOURCE_TAG); - resourcesService.refreshKnownTags(tagParent); - - // Create Mailing lists - Node mlParent = resourcesService.getTagLikeResourceParent(session, PeopleTypes.PEOPLE_MAILING_LIST); - resourcesService.refreshKnownTags(mlParent); - - } catch (PeopleException | RepositoryException e) { - throw new SuiteWorkbenchException("Cannot import mapping file, error at line: " + (i + 1), e); - } finally { - JcrUtils.logoutQuietly(session); - } - - return null; - } - - private Map initialiseHeaders(Sheet sheet, List validHeaders) { - Map headers = new HashMap<>(); - int length = sheet.getColumns(); - for (int i = 0; i < length; i++) { - String value = JxlUtils.getStringValue(sheet, i, 0); - if (validHeaders.contains(value)) - headers.put(value, i); - else - log.warn(value + " (column [" + i + "]) is not a valid header"); - } - return headers; - } - - private Node importDefaultPersonFile(InputStream in) throws IOException { - // Local shortcut - String JCR_DESC = ConnectJcrUtils.getLocalJcrItemName(Property.JCR_DESCRIPTION); - - // Map headers = new HashMap<>(); - // headers.put(PeopleNames.PEOPLE_FIRST_NAME, 0); - // headers.put(PEOPLE_LAST_NAME, 1); - // headers.put(PEOPLE_SALUTATION, 2); - // headers.put(PEOPLE_HONORIFIC_TITLE, 3); - // headers.put(PEOPLE_NICKNAME, 4); - // headers.put(PEOPLE_NAME_SUFFIX, 5); - // headers.put(PEOPLE_MAIDEN_NAME, 6); - // headers.put(PEOPLE_PMOBILE, 7); - // headers.put(PEOPLE_PTELEPHONE_NUMBER, 8); - // headers.put(PEOPLE_SPOKEN_LANGUAGES, 9); - // headers.put(ResourcesNames.CONNECT_TAGS, 10); - // headers.put(PEOPLE_MAILING_LISTS, 11); - // headers.put(PEOPLE_BIRTH_DATE, 12); - // headers.put(PEOPLE_PMAIL, 13); - // headers.put("people:emailAddressOther", 14); - // headers.put("people:org", 15); - // headers.put(PEOPLE_ROLE, 16); - // headers.put(PEOPLE_DEPARTMENT, 17); - // headers.put("people:facebook", 18); - // headers.put(JCR_DESC, 19); - // headers.put(ActivitiesNames.ACTIVITIES_FROM_IP, 20); - - List validHeaders = Arrays.asList(PeopleNames.PEOPLE_FIRST_NAME, PEOPLE_LAST_NAME, PEOPLE_SALUTATION, - PEOPLE_HONORIFIC_TITLE, PEOPLE_NICKNAME, PEOPLE_NAME_SUFFIX, PEOPLE_MAIDEN_NAME, PEOPLE_PMOBILE, - PEOPLE_PTELEPHONE_NUMBER, PEOPLE_SPOKEN_LANGUAGES, ResourcesNames.CONNECT_TAGS, PEOPLE_MAILING_LISTS, - PEOPLE_BIRTH_DATE, PEOPLE_PMAIL, "people:emailAddressOther", "people:org", PEOPLE_ROLE, - PEOPLE_DEPARTMENT, "people:facebook", JCR_DESC, ActivitiesNames.ACTIVITIES_FROM_IP, PEOPLE_STREET, - PEOPLE_ZIP_CODE, PEOPLE_CITY, PEOPLE_STATE, PEOPLE_COUNTRY); - - String[] basicInfo = { PEOPLE_FIRST_NAME, PEOPLE_LAST_NAME, PEOPLE_SALUTATION, PEOPLE_HONORIFIC_TITLE, - PEOPLE_NICKNAME, PEOPLE_NAME_SUFFIX, PEOPLE_MAIDEN_NAME, PEOPLE_BIRTH_DATE, JCR_DESC }; - - Map primaryContacts = new HashMap<>(); - primaryContacts.put(PEOPLE_PMOBILE, PeopleTypes.PEOPLE_MOBILE); - primaryContacts.put(PEOPLE_PTELEPHONE_NUMBER, PeopleTypes.PEOPLE_TELEPHONE_NUMBER); - primaryContacts.put(PEOPLE_PURL, PeopleTypes.PEOPLE_URL); - primaryContacts.put(PEOPLE_PMAIL, PeopleTypes.PEOPLE_MAIL); - - String[] multiProps = { PEOPLE_SPOKEN_LANGUAGES, ResourcesNames.CONNECT_TAGS, PEOPLE_MAILING_LISTS, }; - - Session session = null; - int i = 0; - try { - Workbook wb = JxlUtils.toWorkbook(in, IMPORT_ENCODING); - session = repository.login(); - String basePath = "/" + peopleService.getBaseRelPath(PeopleTypes.PEOPLE_PERSON); - Node targetParent = session.getNode(basePath); - Sheet sheet = wb.getSheet(0); - - Map headers = initialiseHeaders(sheet, validHeaders); - - Node tmpParent = peopleService.getDraftParent(session); - - int rowNb = sheet.getRows(); - for (i = 1; i < rowNb; i++) { - Node tmpPerson = createDraftNode(tmpParent, PeopleTypes.PEOPLE_PERSON); - - for (String propName : basicInfo) { - if (headers.containsKey(propName)) { - String value = JxlUtils.getStringValue(sheet, headers.get(propName), i); - if (notEmpty(value)) - tmpPerson.setProperty(propName, value); - } - } - - for (String propName : multiProps) { - if (headers.containsKey(propName)) { - String value = JxlUtils.getStringValue(sheet, headers.get(propName), i); - if (notEmpty(value)) - tmpPerson.setProperty(propName, ConnectJcrUtils.parseAndClean(value, ",", true)); - } - } - - for (String propName : primaryContacts.keySet()) { - if (headers.containsKey(propName)) { - String value = JxlUtils.getStringValue(sheet, headers.get(propName), i); - if (notEmpty(value)) { - PeopleJcrUtils.createContact(resourcesService, peopleService, tmpPerson, - primaryContacts.get(propName), value, true, - ContactValueCatalogs.CONTACT_CAT_MAIN, null); - } - } - } - - // Specific values - String propName = "people:emailAddressOther"; - if (headers.containsKey(propName)) { - String value = JxlUtils.getStringValue(sheet, headers.get(propName), i); - if (notEmpty(value)) { - PeopleJcrUtils.createContact(resourcesService, peopleService, tmpPerson, - PeopleTypes.PEOPLE_MAIL, value, false, ContactValueCatalogs.CONTACT_CAT_MAIN, - null); - } - } - - propName = "people:facebook"; - if (headers.containsKey(propName)) { - String value = JxlUtils.getStringValue(sheet, headers.get(propName), i); - if (notEmpty(value)) { - PeopleJcrUtils.createContact(resourcesService, peopleService, tmpPerson, - PeopleTypes.PEOPLE_SOCIAL_MEDIA, value, false, - ContactValueCatalogs.CONTACT_CAT_FACEBOOK, null); - } - } - - String street = null, zip = null, city = null, state = null, country = null; - if (headers.containsKey(PEOPLE_STREET)) - street = JxlUtils.getStringValue(sheet, headers.get(PEOPLE_STREET), i); - if (headers.containsKey(PEOPLE_ZIP_CODE)) - zip = JxlUtils.getStringValue(sheet, headers.get(PEOPLE_ZIP_CODE), i); - if (headers.containsKey(PEOPLE_CITY)) - city = JxlUtils.getStringValue(sheet, headers.get(PEOPLE_CITY), i); - if (headers.containsKey(PEOPLE_STATE)) - state = JxlUtils.getStringValue(sheet, headers.get(PEOPLE_STATE), i); - if (headers.containsKey(PEOPLE_COUNTRY)) - country = JxlUtils.getStringValue(sheet, headers.get(PEOPLE_COUNTRY), i); - - if (notEmpty(street) || notEmpty(zip) || notEmpty(city) || notEmpty(state) || notEmpty(country)) { - PeopleJcrUtils.createAddress(resourcesService, peopleService, tmpPerson, street, null, zip, city, - state, country, true, ContactValueCatalogs.CONTACT_CAT_MAIN, null); - } - - // TODO Experimental connection activity to store info about the - // IP from where a person has registered himself in the system - // propName = ActivitiesNames.ACTIVITIES_FROM_IP; - - // TODO create a job and possibly the related organisation - - Node newPersonNode = peopleService.publishEntity(targetParent, PeopleTypes.PEOPLE_PERSON, tmpPerson); - // Save the newly created entity without creating a base version - newPersonNode = peopleService.saveEntity(newPersonNode, false); - } - - // Refresh tags and mailing list - Node tagParent = resourcesService.getTagLikeResourceParent(session, ConnectConstants.RESOURCE_TAG); - resourcesService.refreshKnownTags(tagParent); - - // Create Mailing lists - Node mlParent = resourcesService.getTagLikeResourceParent(session, PeopleTypes.PEOPLE_MAILING_LIST); - resourcesService.refreshKnownTags(mlParent); - } catch (PeopleException | RepositoryException e) { - String message = "Cannot import mapping file, error at line: " + (i + 1); - // TODO Check why the error is swallowed. - log.error(message, e); - throw new SuiteWorkbenchException(message, e); - } finally { - JcrUtils.logoutQuietly(session); - } - return null; - } - - private Node createDraftNode(Node parent, String mainMixin) throws RepositoryException { - String uuid = UUID.randomUUID().toString(); - Node tmpNode = parent.addNode(uuid); - tmpNode.addMixin(mainMixin); - tmpNode.setProperty(ConnectNames.CONNECT_UID, uuid); - return tmpNode; - } - - private void importOrgEmployees(Node tmpParent, Node targetParent, Node newOrgNode, String coworkersStr) - throws RepositoryException { - String[] coworkers = coworkersStr.split("\\n"); - loop: for (String line : coworkers) { - if (EclipseUiUtils.isEmpty(line)) - continue loop; - line = line.trim(); - int index = line.indexOf(' '); - String firstName = null; - String lastName = null; - String position = null; - if (index == -1) - firstName = line; - else { - firstName = line.substring(0, index); - line = line.substring(index); - - index = line.indexOf('('); - if (index == -1) - lastName = line; - else { - lastName = line.substring(0, index).trim(); - position = line.substring(index + 1, line.length() - 1); - } - } - Node tmpPerson = createDraftNode(tmpParent, PeopleTypes.PEOPLE_PERSON); - tmpPerson.setProperty(PEOPLE_FIRST_NAME, firstName); - if (EclipseUiUtils.notEmpty(lastName)) - tmpPerson.setProperty(PEOPLE_LAST_NAME, lastName); - Node newPersonNode = peopleService.publishEntity(targetParent, PeopleTypes.PEOPLE_PERSON, tmpPerson); - // if (EclipseUiUtils.notEmpty(position)) - PersonJcrUtils.addJob(resourcesService, peopleService, newPersonNode, newOrgNode, position, true); - // Save the newly created entity without creating a base version - newPersonNode = peopleService.saveEntity(newPersonNode, false); - - } - } - - private void importUrls(Node contactable, String urlStr) throws RepositoryException { - String[] urls = urlStr.split("\\n"); - boolean hasPrimary = false; - boolean hasPrimaryFacebook = false; - - loop: for (String line : urls) { - if (EclipseUiUtils.isEmpty(line)) - continue loop; - line = line.trim(); - - if (line.startsWith("https://www.facebook.com")) { - PeopleJcrUtils.createSocialMedia(resourcesService, peopleService, contactable, line, - !hasPrimaryFacebook, ContactValueCatalogs.CONTACT_CAT_FACEBOOK, null); - hasPrimaryFacebook = true; - } else { - PeopleJcrUtils.createWebsite(resourcesService, peopleService, contactable, line, !hasPrimary, null); - hasPrimary = true; - } - } - } - - private void importMails(Node contactable, String mailStr) throws RepositoryException { - String[] urls = mailStr.split("\\n"); - boolean hasPrimary = false; - loop: for (String line : urls) { - if (EclipseUiUtils.isEmpty(line)) - continue loop; - line = line.trim(); - PeopleJcrUtils.createEmail(resourcesService, peopleService, contactable, line, !hasPrimary, null, null); - hasPrimary = true; - } - } - - /* DEPENDENCY INJECTION */ - public void setRepository(Repository repository) { - this.repository = repository; - } - - public void setResourcesService(ResourcesService resourcesService) { - this.resourcesService = resourcesService; - } - - public void setPeopleService(PeopleService peopleService) { - this.peopleService = peopleService; - } -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/commands/JxlUtils.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/commands/JxlUtils.java deleted file mode 100644 index 8be4fa4..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/commands/JxlUtils.java +++ /dev/null @@ -1,82 +0,0 @@ -package org.argeo.suite.workbench.commands; - -import java.io.IOException; -import java.io.InputStream; - -import org.argeo.connect.ConnectException; -import org.argeo.eclipse.ui.EclipseUiUtils; - -import jxl.Cell; -import jxl.CellType; -import jxl.JXLException; -import jxl.Sheet; -import jxl.Workbook; -import jxl.WorkbookSettings; - -/** Centralise useful methods to simplify development with JXL library */ -class JxlUtils { - - public static boolean isEmptyCell(Sheet sheet, int x, int y) { - Cell cell = sheet.getCell(x, y); - CellType type = cell.getType(); - return type == CellType.EMPTY; - } - - public static String getStringValue(Sheet sheet, int x, int y) { - Cell cell = sheet.getCell(x, y); - CellType type = cell.getType(); - String stringValue = null; - if (type == CellType.LABEL || type == CellType.NUMBER) - stringValue = cell.getContents(); - return stringValue; - } - - public static String getCompulsoryStringValue(Sheet sheet, int x, int y) { - Cell cell = sheet.getCell(x, y); - CellType type = cell.getType(); - String stringValue = null; - if (type == CellType.LABEL) - stringValue = cell.getContents(); - else if (type == CellType.NUMBER) - stringValue = cell.getContents(); - if (EclipseUiUtils.isEmpty(stringValue)) - throw new ConnectException("No name defined at [" + x + "," + y + "], cannot parse indicator file"); - return stringValue; - } - - public static Double getNumberValue(Sheet sheet, int x, int y) { - Cell cell = sheet.getCell(x, y); - CellType type = cell.getType(); - if (type == CellType.NUMBER) - return new Double(cell.getContents()); - else if (type == CellType.EMPTY) - return null; - else - throw new ConnectException("Not a number at [" + x + "," + y + "]: " + type.toString()); - } - - public static Sheet getOnlySheet(InputStream in, String encoding) throws IOException { - Workbook wkb = toWorkbook(in, encoding); - Sheet sheet = wkb.getSheet(0); - return sheet; - } - - public static Sheet getSheet(InputStream in, String encoding, int index) throws IOException { - Workbook wkb = toWorkbook(in, encoding); - return wkb.getSheet(index); - } - - public static Workbook toWorkbook(InputStream in, String encoding) throws IOException { - try { - WorkbookSettings ws = new WorkbookSettings(); - ws.setEncoding(encoding); - return Workbook.getWorkbook(in, ws); - } catch (JXLException e) { - throw new ConnectException("Unable to open XLS file", e); - } - } - - // Prevents instantiation - private JxlUtils() { - } -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/internal/EntitySingleColumnLabelProvider.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/internal/EntitySingleColumnLabelProvider.java deleted file mode 100644 index 49c39a5..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/internal/EntitySingleColumnLabelProvider.java +++ /dev/null @@ -1,88 +0,0 @@ -package org.argeo.suite.workbench.internal; - -import javax.jcr.Node; -import javax.jcr.Property; -import javax.jcr.RepositoryException; -import javax.jcr.nodetype.NodeType; - -import org.argeo.activities.ActivitiesService; -import org.argeo.activities.ActivitiesTypes; -import org.argeo.activities.ui.ActivityListLabelProvider; -import org.argeo.connect.resources.ResourcesService; -import org.argeo.connect.ui.ConnectUiConstants; -import org.argeo.connect.ui.SystemWorkbenchService; -import org.argeo.connect.ui.util.TagLabelProvider; -import org.argeo.connect.util.ConnectUtils; -import org.argeo.people.PeopleException; -import org.argeo.people.PeopleNames; -import org.argeo.people.PeopleService; -import org.argeo.people.PeopleTypes; -import org.argeo.people.ui.providers.GroupLabelProvider; -import org.argeo.people.ui.providers.OrgListLabelProvider; -import org.argeo.people.ui.providers.PersonListLabelProvider; -import org.argeo.tracker.TrackerTypes; -import org.argeo.tracker.ui.TrackerSingleColLP; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.swt.graphics.Image; - -/** - * Provide a single column label provider for entity lists. Icon and displayed - * text vary with the element node type - */ -public class EntitySingleColumnLabelProvider extends LabelProvider implements PeopleNames { - private static final long serialVersionUID = 3111885324210673320L; - - private SystemWorkbenchService systemWorkbenchService; - - private ActivityListLabelProvider activityLP; - private TrackerSingleColLP trackerLP; - private OrgListLabelProvider orgLp; - private PersonListLabelProvider personLp; - private GroupLabelProvider groupLp = new GroupLabelProvider(ConnectUiConstants.LIST_TYPE_SMALL); - private TagLabelProvider mlInstanceLp; - - public EntitySingleColumnLabelProvider(ResourcesService resourceService, ActivitiesService activitiesService, - PeopleService peopleService, SystemWorkbenchService systemWorkbenchService) { - this.systemWorkbenchService = systemWorkbenchService; - activityLP = new ActivityListLabelProvider(activitiesService); - trackerLP = new TrackerSingleColLP(activitiesService); - personLp = new PersonListLabelProvider(peopleService); - orgLp = new OrgListLabelProvider(resourceService, peopleService); - mlInstanceLp = new TagLabelProvider(resourceService, ConnectUiConstants.LIST_TYPE_SMALL); - } - - @Override - public String getText(Object element) { - try { - Node entity = (Node) element; - String result; - - if (entity.isNodeType(TrackerTypes.TRACKER_TASK) || entity.isNodeType(TrackerTypes.TRACKER_PROJECT) - || entity.isNodeType(TrackerTypes.TRACKER_MILESTONE)) - result = trackerLP.getText(element); - else if (entity.isNodeType(ActivitiesTypes.ACTIVITIES_ACTIVITY)) - result = activityLP.getText(element); - else if (entity.isNodeType(PeopleTypes.PEOPLE_PERSON)) - result = personLp.getText(element); - else if (entity.isNodeType(PeopleTypes.PEOPLE_ORG)) - result = orgLp.getText(element); - else if (entity.isNodeType(PeopleTypes.PEOPLE_MAILING_LIST)) - result = mlInstanceLp.getText(element); - else if (entity.isNodeType(PeopleTypes.PEOPLE_GROUP)) - result = groupLp.getText(element); - else if (entity.isNodeType(NodeType.MIX_TITLE) && entity.hasProperty(Property.JCR_TITLE)) - result = entity.getProperty(Property.JCR_TITLE).getString(); - else - result = ""; - return ConnectUtils.replaceAmpersand(result); - } catch (RepositoryException re) { - throw new PeopleException("Unable to get formatted value for node", re); - } - } - - /** Overwrite this method to provide project specific images */ - @Override - public Image getImage(Object element) { - return systemWorkbenchService.getIconForType((Node) element); - } -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/AbstractSuiteDashboard.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/AbstractSuiteDashboard.java deleted file mode 100644 index 42a7de4..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/AbstractSuiteDashboard.java +++ /dev/null @@ -1,190 +0,0 @@ -package org.argeo.suite.workbench.parts; - -import javax.jcr.Node; -import javax.jcr.Repository; -import javax.jcr.Session; - -import org.argeo.cms.util.CmsUtils; -import org.argeo.connect.SystemAppService; -import org.argeo.connect.resources.ResourcesService; -import org.argeo.connect.ui.AppWorkbenchService; -import org.argeo.connect.ui.ConnectUiStyles; -import org.argeo.connect.ui.SystemWorkbenchService; -import org.argeo.connect.util.ConnectJcrUtils; -import org.argeo.connect.workbench.util.EntityEditorInput; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.argeo.jcr.JcrUtils; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Link; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorSite; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.forms.widgets.FormToolkit; -import org.eclipse.ui.part.EditorPart; - -/** Generic dashboard for Argeo Suite applications */ -public abstract class AbstractSuiteDashboard extends EditorPart { - - // DEPENDENCY INJECTION - private Repository repository; - private ResourcesService resourcesService; - private SystemAppService systemAppService; - private SystemWorkbenchService systemWorkbenchService; - - private Session session; - - // UI Objects - private FormToolkit toolkit; - - @Override - public void init(IEditorSite site, IEditorInput input) throws PartInitException { - setSite(site); - setInput(input); - - session = ConnectJcrUtils.login(repository); - updateTooltip(input); - } - - private void updateTooltip(IEditorInput input) { - if (input instanceof EntityEditorInput) { - EntityEditorInput sei = (EntityEditorInput) input; - sei.setTooltipText("My Dashboard"); - } - } - - /** - * Implementing classes must call super in order to create the correct form - * toolkit - */ - @Override - public void createPartControl(Composite parent) { - toolkit = new FormToolkit(getSite().getShell().getDisplay()); - } - - // UTILS - protected Composite createGadgetCmp(Composite parent, int widthHint, int heightHint) { - Composite gadgetCmp = toolkit.createComposite(parent, SWT.BORDER); - GridData gd = new GridData(SWT.CENTER, SWT.CENTER, false, false); - gd.widthHint = widthHint; - gd.heightHint = heightHint; - gadgetCmp.setLayoutData(gd); - CmsUtils.style(gadgetCmp, ConnectUiStyles.GADGET_BOX); - return gadgetCmp; - } - - protected Composite createGadgetTitleCmp(Composite parent, String title) { - Composite titleCmp = toolkit.createComposite(parent, SWT.BACKGROUND | SWT.INHERIT_NONE); - CmsUtils.style(titleCmp, ConnectUiStyles.GADGET_HEADER); - titleCmp.setBackground(null); - GridData gd = new GridData(SWT.FILL, SWT.TOP, true, false); - titleCmp.setLayoutData(gd); - titleCmp.setLayout(new GridLayout()); - - Label titleLbl = toolkit.createLabel(titleCmp, title + " ", SWT.BOLD); - CmsUtils.style(titleLbl, ConnectUiStyles.GADGET_HEADER); - titleLbl.setBackground(null); - return titleCmp; - } - - protected Composite createGadgetBodyCmp(Composite parent) { - Composite bodyCmp = toolkit.createComposite(parent, SWT.BACKGROUND | SWT.INHERIT_NONE); - bodyCmp.setLayoutData(EclipseUiUtils.fillAll()); - bodyCmp.setLayout(new GridLayout()); - return bodyCmp; - } - - protected Link createOpenEntityEditorLink(final AppWorkbenchService peopleUiService, Composite parent, - final String label, final Node entity) { - Link link = new Link(parent, SWT.NONE); - link.setText("" + label + ""); - link.setLayoutData(EclipseUiUtils.fillWidth()); - link.addSelectionListener(new SelectionAdapter() { - private static final long serialVersionUID = 1L; - - @Override - public void widgetSelected(final SelectionEvent event) { - // Map params = new HashMap(); - // params.put(ConnectEditor.PARAM_JCR_ID, - // ConnectJcrUtils.getIdentifier(entity)); - // CommandUtils.callCommand(peopleUiService.getOpenEntityEditorCmdId(), params); - peopleUiService.openEntityEditor(entity); - } - }); - return link; - } - - // Life cycle - @Override - public void dispose() { - JcrUtils.logoutQuietly(session); - super.dispose(); - } - - @Override - public void doSave(IProgressMonitor monitor) { - } - - @Override - public void doSaveAs() { - } - - @Override - public boolean isDirty() { - return false; - } - - @Override - public boolean isSaveAsAllowed() { - return false; - } - - @Override - public void setFocus() { - // Do nothing - } - - // Expose to implementing classes - protected Session getSession() { - return session; - } - - public ResourcesService getResourcesService() { - return resourcesService; - } - - protected SystemAppService getSystemAppService() { - return systemAppService; - } - - protected SystemWorkbenchService getSystemWorkbenchService() { - return systemWorkbenchService; - } - - protected FormToolkit getFormToolkit() { - return toolkit; - } - - /* DEPENDENCY INJECTION */ - public void setRepository(Repository repository) { - this.repository = repository; - } - - public void setResourcesService(ResourcesService resourcesService) { - this.resourcesService = resourcesService; - } - - public void setSystemAppService(SystemAppService systemAppService) { - this.systemAppService = systemAppService; - } - - public void setSystemWorkbenchService(SystemWorkbenchService systemWorkbenchService) { - this.systemWorkbenchService = systemWorkbenchService; - } -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java deleted file mode 100644 index 3ad7dfa..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java +++ /dev/null @@ -1,407 +0,0 @@ -package org.argeo.suite.workbench.parts; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.List; - -import javax.jcr.Node; -import javax.jcr.NodeIterator; -import javax.jcr.Property; -import javax.jcr.RepositoryException; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.activities.ActivitiesNames; -import org.argeo.activities.ActivitiesService; -import org.argeo.activities.ui.TaskViewerContextMenu; -import org.argeo.cms.auth.CurrentUser; -import org.argeo.cms.util.CmsUtils; -import org.argeo.connect.ConnectNames; -import org.argeo.connect.ui.ConnectWorkbenchUtils; -import org.argeo.connect.ui.Refreshable; -import org.argeo.connect.util.ConnectJcrUtils; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.argeo.jcr.JcrUtils; -import org.argeo.node.NodeUtils; -import org.argeo.suite.workbench.AsUiPlugin; -import org.argeo.suite.workbench.SuiteWorkbenchException; -import org.argeo.tracker.TrackerNames; -import org.argeo.tracker.TrackerService; -import org.argeo.tracker.TrackerTypes; -import org.argeo.tracker.core.TrackerUtils; -import org.argeo.tracker.ui.TaskListLabelProvider; -import org.argeo.tracker.ui.TaskVirtualListComposite; -import org.eclipse.jface.viewers.ColumnLabelProvider; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.MouseAdapter; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Link; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorSite; -import org.eclipse.ui.PartInitException; - -/** Argeo Suite Default Dashboard */ -public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Refreshable { - final static Log log = LogFactory.getLog(DefaultDashboardEditor.class); - public final static String ID = AsUiPlugin.PLUGIN_ID + ".defaultDashboardEditor"; - - private ActivitiesService activitiesService; - private TrackerService trackerService; - - private String datePattern = "dd MMM yyyy"; - - private Composite headerCmp; - private Composite taskListCmp; - private TaskVirtualListComposite tvlc; - - @Override - public void init(IEditorSite site, IEditorInput input) throws PartInitException { - super.init(site, input); - } - - @Override - public void createPartControl(Composite parent) { - super.createPartControl(parent); - parent.setLayout(EclipseUiUtils.noSpaceGridLayout()); - Composite bodyCmp = new Composite(parent, SWT.NO_FOCUS); - bodyCmp.setLayoutData(EclipseUiUtils.fillAll()); - bodyCmp.setLayout(new GridLayout()); - - headerCmp = new Composite(bodyCmp, SWT.NO_FOCUS); - headerCmp.setLayoutData(EclipseUiUtils.fillWidth()); - - taskListCmp = new Composite(bodyCmp, SWT.NO_FOCUS); - taskListCmp.setLayoutData(EclipseUiUtils.fillAll()); - forceRefresh(null); - } - - @Override - public void forceRefresh(Object object) { - CmsUtils.clear(headerCmp); - populateHeaderPart(headerCmp, NodeUtils.getUserHome(getSession())); - - CmsUtils.clear(taskListCmp); - populateTaskListCmp(taskListCmp); - - headerCmp.getParent().layout(true, true); - } - - private void populateTaskListCmp(Composite parent) { - parent.setLayout(EclipseUiUtils.noSpaceGridLayout()); - NodeIterator nit = activitiesService.getMyTasks(getSession(), true); - if (!nit.hasNext()) { - Composite noTaskCmp = new Composite(parent, SWT.NO_FOCUS); - noTaskCmp.setLayoutData(EclipseUiUtils.fillAll()); - noTaskCmp.setLayout(new GridLayout()); - - Label noTaskLbl = new Label(noTaskCmp, SWT.CENTER); - noTaskLbl.setText(" You have no pending Task. "); - CmsUtils.markup(noTaskLbl); - noTaskLbl.setLayoutData(new GridData(SWT.CENTER, SWT.BOTTOM, true, true)); - - final Link createTaskLk = new Link(noTaskCmp, SWT.CENTER); - createTaskLk.setText(" Create a task "); - createTaskLk.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, true)); - - createTaskLk.addSelectionListener(new SelectionAdapter() { - private static final long serialVersionUID = -9028457805156989935L; - - @Override - public void widgetSelected(SelectionEvent e) { - String mainMixin = TrackerTypes.TRACKER_TASK; - String pathCreated = ConnectWorkbenchUtils.createAndConfigureEntity(createTaskLk.getShell(), - getSession(), getSystemAppService(), getSystemWorkbenchService(), mainMixin); - if (EclipseUiUtils.notEmpty(pathCreated)) - forceRefresh(null); - } - }); - - } else { - TaskListLabelProvider labelProvider = new TaskListLabelProvider(getSystemAppService()); - tvlc = new TaskVirtualListComposite(parent, SWT.NO_FOCUS, labelProvider, 54); - tvlc.setLayoutData(EclipseUiUtils.fillAll()); - final TableViewer viewer = tvlc.getTableViewer(); - viewer.setInput(JcrUtils.nodeIteratorToList(nit).toArray()); - final TaskViewerContextMenu contextMenu = new TaskViewerContextMenu(viewer, getSession(), - activitiesService) { - @Override - public boolean performAction(String actionId) { - boolean hasChanged = super.performAction(actionId); - if (hasChanged) { - viewer.getTable().setFocus(); - forceRefresh(null); - // NodeIterator nit = - // activitiesService.getMyTasks(getSession(), true); - // viewer.setInput(JcrUtils.nodeIteratorToList(nit).toArray()); - } - return hasChanged; - } - }; - viewer.getTable().addMouseListener(new MouseAdapter() { - private static final long serialVersionUID = 6737579410648595940L; - - @Override - public void mouseDown(MouseEvent e) { - if (e.button == 3) { - // contextMenu.setCurrFolderPath(currDisplayedFolder); - contextMenu.show(viewer.getTable(), new Point(e.x, e.y), - (IStructuredSelection) viewer.getSelection()); - } - } - }); - - } - } - - private boolean isOverdue(Node node, String propName) { - try { - Calendar now = GregorianCalendar.getInstance(); - return node.hasProperty(propName) && node.getProperty(propName).getDate().before(now); - } catch (RepositoryException e) { - throw new SuiteWorkbenchException("Cannot check overdue status with property " + propName + " on " + node, - e); - } - } - - private void populateHeaderPart(Composite bodyCmp, Node context) { - bodyCmp.setLayout(EclipseUiUtils.noSpaceGridLayout(new GridLayout(2, true))); - - Composite leftCmp = new Composite(bodyCmp, SWT.NO_FOCUS); - leftCmp.setLayout(new GridLayout()); - leftCmp.setLayoutData(EclipseUiUtils.fillWidth()); - Composite rightCmp = new Composite(bodyCmp, SWT.NO_FOCUS); - rightCmp.setLayout(new GridLayout()); - rightCmp.setLayoutData(EclipseUiUtils.fillWidth()); - - // Title - Label titleLbl = new Label(leftCmp, SWT.WRAP | SWT.LEAD); - CmsUtils.markup(titleLbl); - String titleStr = " Hello " + CurrentUser.getDisplayName() + " "; - titleLbl.setText(titleStr); - GridData gd = new GridData(SWT.TOP, SWT.BOTTOM, false, false); - gd.verticalIndent = 5; - gd.horizontalIndent = 10; - titleLbl.setLayoutData(gd); - - NodeIterator nit = activitiesService.getMyTasks(getSession(), true); - if (nit.hasNext()) { - List overdueTasks = new ArrayList<>(); - while (nit.hasNext()) { - Node currNode = nit.nextNode(); - if (isOverdue(currNode, ActivitiesNames.ACTIVITIES_DUE_DATE)) - overdueTasks.add(currNode); - } - if (!overdueTasks.isEmpty()) { - Composite overdueCmp = new Composite(leftCmp, SWT.NO_FOCUS); - long size = overdueTasks.size(); - String overdueStr = "You have " + size + " overdue task" + (size > 1 ? "s" : "") + ": "; - populateMuliValueClickableList(overdueCmp, overdueTasks.toArray(new Node[0]), new TaskLp(), overdueStr); - } - } - - nit = trackerService.getMyMilestones(getSession(), true); - List openMilestones = new ArrayList<>(); - - if (nit.hasNext()) { - List overdueMilestones = new ArrayList<>(); - while (nit.hasNext()) { - Node currNode = nit.nextNode(); - openMilestones.add(currNode); - if (isOverdue(currNode, TrackerNames.TRACKER_TARGET_DATE)) - overdueMilestones.add(currNode); - } - if (!overdueMilestones.isEmpty()) { - Composite overdueCmp = new Composite(leftCmp, SWT.NO_FOCUS); - long size = overdueMilestones.size(); - String overdueStr = "You have " + size + " overdue milestone" + (size > 1 ? "s" : "") + ": "; - populateMuliValueClickableList(overdueCmp, overdueMilestones.toArray(new Node[0]), new MilestoneLp(), - overdueStr); - } - } - - // My projects - List openProjects = JcrUtils.nodeIteratorToList(trackerService.getMyProjects(getSession(), true)); - if (!openProjects.isEmpty()) { - Group myProjectsGp = new Group(rightCmp, SWT.NO_FOCUS); - myProjectsGp.setText("My open projects"); - myProjectsGp.setLayoutData(EclipseUiUtils.fillWidth()); - populateMuliValueClickableList(myProjectsGp, openProjects.toArray(new Node[0]), new ProjectLp(), null); - } - - // My Milestones - if (!openMilestones.isEmpty()) { - Group myMilestoneGp = new Group(rightCmp, SWT.NO_FOCUS); - myMilestoneGp.setText("My open milestones"); - myMilestoneGp.setLayoutData(EclipseUiUtils.fillWidth()); - populateMuliValueClickableList(myMilestoneGp, openMilestones.toArray(new Node[0]), new MilestoneLp(), null); - } - } - - private class ProjectLp extends ColumnLabelProvider { - private static final long serialVersionUID = 7231233932794865555L; - - @Override - public String getText(Object element) { - Node project = (Node) element; - - String percent; - NodeIterator nit = TrackerUtils.getIssues(project, null, null, null, true); - long openNb = nit.getSize(); - - nit = TrackerUtils.getIssues(project, null, null, null, false); - long allNb = nit.getSize(); - - if (allNb < 1) - percent = "empty"; - else { - double num = allNb - openNb; - double result = num / allNb * 100; - percent = String.format("%.1f", result) + "% done"; - } - StringBuilder builder = new StringBuilder(); - builder.append("").append(ConnectJcrUtils.get(project, Property.JCR_TITLE)).append(""); - builder.append(" (").append(percent).append(")"); - - return builder.toString(); - } - } - - private class MilestoneLp extends ColumnLabelProvider { - private static final long serialVersionUID = 7231233932794865555L; - - @Override - public String getText(Object element) { - Node milestone = (Node) element; - Node project = TrackerUtils.getRelatedProject(trackerService, milestone); - String dueDate = ConnectJcrUtils.getDateFormattedAsString(milestone, TrackerNames.TRACKER_TARGET_DATE, - datePattern); - - String percent; - String propName = TrackerNames.TRACKER_MILESTONE_UID; - String muid = ConnectJcrUtils.get(milestone, ConnectNames.CONNECT_UID); - NodeIterator nit = TrackerUtils.getIssues(project, null, propName, muid, true); - long openNb = nit.getSize(); - - nit = TrackerUtils.getIssues(project, null, propName, muid, false); - long allNb = nit.getSize(); - - if (allNb < 1) - percent = "empty"; - else { - double num = allNb - openNb; - double result = num / allNb * 100; - percent = String.format("%.1f", result) + "% done"; - } - StringBuilder builder = new StringBuilder(); - builder.append("").append(ConnectJcrUtils.get(milestone, Property.JCR_TITLE)).append(""); - builder.append(" ("); - if (EclipseUiUtils.notEmpty(dueDate)) - builder.append("due to ").append(dueDate).append(", "); - - builder.append(percent).append(")"); - return builder.toString(); - } - - @Override - public Color getForeground(Object element) { - Node milestone = (Node) element; - Calendar dueDate = ConnectJcrUtils.getDateValue(milestone, TrackerNames.TRACKER_TARGET_DATE); - if (dueDate != null && dueDate.before(Calendar.getInstance())) - return Display.getCurrent().getSystemColor(SWT.COLOR_RED); - return null; - } - } - - private class TaskLp extends ColumnLabelProvider { - private static final long serialVersionUID = 7231233932794865555L; - - @Override - public String getText(Object element) { - Node task = (Node) element; - String dueDate = ConnectJcrUtils.getDateFormattedAsString(task, ActivitiesNames.ACTIVITIES_DUE_DATE, - datePattern); - - StringBuilder builder = new StringBuilder(); - builder.append("").append(ConnectJcrUtils.get(task, Property.JCR_TITLE)).append(""); - if (EclipseUiUtils.notEmpty(dueDate)) - builder.append(" (").append("due to ").append(dueDate).append(")"); - return builder.toString(); - } - - @Override - public Color getForeground(Object element) { - Node milestone = (Node) element; - Calendar dueDate = ConnectJcrUtils.getDateValue(milestone, TrackerNames.TRACKER_TARGET_DATE); - if (dueDate != null && dueDate.before(Calendar.getInstance())) - return Display.getCurrent().getSystemColor(SWT.COLOR_RED); - return null; - } - } - - @Override - public void setFocus() { - // refreshDocListGadget(); - } - - public void setActivitiesService(ActivitiesService activitiesService) { - this.activitiesService = activitiesService; - } - - public void setTrackerService(TrackerService trackerService) { - this.trackerService = trackerService; - } - - // LOCAL HELPERS - private void populateMuliValueClickableList(Composite parent, Node[] nodes, ColumnLabelProvider lp, - String listLabel) { - CmsUtils.clear(parent); - RowLayout rl = new RowLayout(SWT.HORIZONTAL | SWT.WRAP); - rl.wrap = true; - rl.marginLeft = rl.marginTop = rl.marginBottom = 0; - rl.marginRight = 8; - parent.setLayout(rl); - - if (EclipseUiUtils.notEmpty(listLabel)) { - Link link = new Link(parent, SWT.NONE); - link.setText(listLabel); - link.setFont(EclipseUiUtils.getBoldFont(parent)); - } - - int i = 1; - for (Node node : nodes) { - Link link = new Link(parent, SWT.NONE); - CmsUtils.markup(link); - link.setText(lp.getText(node) + (i != nodes.length ? ", " : "")); - i++; - // Color fc = lp.getForeground(node); - // if (fc != null) - // link.setForeground(fc); - - link.addSelectionListener(new SelectionAdapter() { - private static final long serialVersionUID = 1L; - - @Override - public void widgetSelected(final SelectionEvent event) { - // CommandUtils.callCommand(getSystemWorkbenchService().getOpenEntityEditorCmdId(), - // ConnectEditor.PARAM_JCR_ID, ConnectJcrUtils.getIdentifier(node)); - getSystemWorkbenchService().openEntityEditor(node); - } - }); - } - } - -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/QuickSearchView.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/QuickSearchView.java deleted file mode 100644 index c8ebdb2..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/QuickSearchView.java +++ /dev/null @@ -1,255 +0,0 @@ -package org.argeo.suite.workbench.parts; - -import static org.argeo.eclipse.ui.EclipseUiUtils.notEmpty; - -import javax.jcr.NodeIterator; -import javax.jcr.Repository; -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import javax.jcr.observation.Event; -import javax.jcr.observation.EventIterator; -import javax.jcr.observation.EventListener; -import javax.jcr.query.Query; -import javax.jcr.query.QueryResult; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.activities.ActivitiesService; -import org.argeo.cms.util.CmsUtils; -import org.argeo.connect.ConnectTypes; -import org.argeo.connect.resources.ResourcesService; -import org.argeo.connect.ui.ConnectUiConstants; -import org.argeo.connect.ui.Refreshable; -import org.argeo.connect.ui.SystemWorkbenchService; -import org.argeo.connect.ui.util.BasicNodeListContentProvider; -import org.argeo.connect.ui.util.JcrViewerDClickListener; -import org.argeo.connect.ui.widgets.DelayedText; -import org.argeo.connect.util.ConnectJcrUtils; -import org.argeo.connect.util.XPathUtils; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.argeo.jcr.JcrUtils; -import org.argeo.people.PeopleService; -import org.argeo.suite.workbench.AsUiPlugin; -import org.argeo.suite.workbench.SuiteWorkbenchException; -import org.argeo.suite.workbench.internal.EntitySingleColumnLabelProvider; -import org.eclipse.jface.layout.TableColumnLayout; -import org.eclipse.jface.viewers.ColumnWeightData; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.rap.rwt.service.ServerPushSession; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.events.KeyListener; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.IViewSite; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.part.ViewPart; - -/** A table with a quick search field. */ -public class QuickSearchView extends ViewPart implements Refreshable { - private final static Log log = LogFactory.getLog(QuickSearchView.class); - public static final String ID = AsUiPlugin.PLUGIN_ID + ".quickSearchView"; - - /* DEPENDENCY INJECTION */ - private Repository repository; - private Session session; - private ResourcesService resourcesService; - private ActivitiesService activitiesService; - private PeopleService peopleService; - private SystemWorkbenchService systemWorkbenchService; - - // This page widgets - private TableViewer entityViewer; - private Text filterTxt; - - @Override - public void init(IViewSite site) throws PartInitException { - super.init(site); - } - - @Override - public void createPartControl(Composite parent) { - session = ConnectJcrUtils.login(repository); - // MainLayout - parent.setLayout(new GridLayout()); - addFilterPanel(parent); - entityViewer = createListPart(parent, new EntitySingleColumnLabelProvider(resourcesService, activitiesService, - peopleService, systemWorkbenchService)); - refreshFilteredList(); - - try { - session.getWorkspace().getObservationManager().addEventListener(new EventListener() { - - @Override - public void onEvent(EventIterator events) { - parent.getDisplay().asyncExec(() -> refreshFilteredList()); - } - }, Event.PROPERTY_CHANGED | Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED, "/", true, null, - new String[] { ConnectTypes.CONNECT_ENTITY }, true); - } catch (RepositoryException e) { - throw new SuiteWorkbenchException("Cannot add JCR observer", e); - } - - } - - public void addFilterPanel(Composite parent) { - // Use a delayed text: the query won't be done until the user stop - // typing for 800ms - int style = SWT.BORDER | SWT.SEARCH | SWT.ICON_CANCEL; - DelayedText delayedText = new DelayedText(parent, style, ConnectUiConstants.SEARCH_TEXT_DELAY); - filterTxt = delayedText.getText(); - filterTxt.setLayoutData(EclipseUiUtils.fillWidth()); - - final ServerPushSession pushSession = new ServerPushSession(); - delayedText.addDelayedModifyListener(pushSession, new ModifyListener() { - private static final long serialVersionUID = 5003010530960334977L; - - public void modifyText(ModifyEvent event) { - delayedText.getText().getDisplay().asyncExec(new Runnable() { - @Override - public void run() { - refreshFilteredList(); - } - }); - pushSession.stop(); - } - }); - - // Jump to the first item of the list using the down arrow - filterTxt.addKeyListener(new KeyListener() { - private static final long serialVersionUID = -4523394262771183968L; - - @Override - public void keyReleased(KeyEvent e) { - } - - @Override - public void keyPressed(KeyEvent e) { - // boolean shiftPressed = (e.stateMask & SWT.SHIFT) != 0; - // boolean altPressed = (e.stateMask & SWT.ALT) != 0; - if (e.keyCode == SWT.ARROW_DOWN || e.keyCode == SWT.TAB) { - Object first = entityViewer.getElementAt(0); - if (first != null) { - entityViewer.getTable().setFocus(); - entityViewer.setSelection(new StructuredSelection(first), true); - } - e.doit = false; - } - } - }); - } - - protected TableViewer createListPart(Composite parent, ILabelProvider labelProvider) { - parent.setLayout(new GridLayout()); - - Composite tableComposite = new Composite(parent, SWT.NONE); - GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_VERTICAL - | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL); - tableComposite.setLayoutData(gd); - - TableViewer v = new TableViewer(tableComposite); - v.setLabelProvider(labelProvider); - - TableColumn singleColumn = new TableColumn(v.getTable(), SWT.V_SCROLL); - TableColumnLayout tableColumnLayout = new TableColumnLayout(); - tableColumnLayout.setColumnData(singleColumn, new ColumnWeightData(85)); - tableComposite.setLayout(tableColumnLayout); - - // Corresponding table & style - Table table = v.getTable(); - table.setLinesVisible(true); - table.setHeaderVisible(false); - CmsUtils.markup(table); - CmsUtils.setItemHeight(table, 26); - - v.setContentProvider(new BasicNodeListContentProvider()); - v.addDoubleClickListener(new JcrViewerDClickListener(systemWorkbenchService)); - return v; - } - - @Override - public void dispose() { - JcrUtils.logoutQuietly(session); - super.dispose(); - } - - @Override - public void setFocus() { - refreshFilteredList(); - filterTxt.setFocus(); - } - - @Override - public void forceRefresh(Object object) { - refreshFilteredList(); - } - - protected void refreshFilteredList() { - try { - String filter = filterTxt.getText(); - // Prevents the query on the full repository - // if (isEmpty(filter)) { - // entityViewer.setInput(null); - // return; - // } - - // XPATH Query - String xpathQueryStr = "//element(*, " + ConnectTypes.CONNECT_ENTITY + ")"; - String xpathFilter = XPathUtils.getFreeTextConstraint(filter); - if (notEmpty(xpathFilter)) - xpathQueryStr += "[" + xpathFilter + "]"; - - // boolean doOrder = orderResultsBtn != null - // && !(orderResultsBtn.isDisposed()) - // && orderResultsBtn.getSelection(); - // if (doOrder) { - // xpathQueryStr += " order by jcr:title"; - // } - - long begin = System.currentTimeMillis(); - Query xpathQuery = XPathUtils.createQuery(session, xpathQueryStr); - - xpathQuery.setLimit(ConnectUiConstants.SEARCH_DEFAULT_LIMIT); - QueryResult result = xpathQuery.execute(); - - NodeIterator nit = result.getNodes(); - entityViewer.setInput(JcrUtils.nodeIteratorToList(nit)); - if (log.isDebugEnabled()) { - long end = System.currentTimeMillis(); - log.debug("Quick Search - Found: " + nit.getSize() + " in " + (end - begin) - + " ms by executing XPath query (" + xpathQueryStr + ")."); - } - } catch (RepositoryException e) { - throw new SuiteWorkbenchException("Unable to list entities", e); - } - } - - /* DEPENDENCY INJECTION */ - public void setRepository(Repository repository) { - this.repository = repository; - } - - public void setResourcesService(ResourcesService resourcesService) { - this.resourcesService = resourcesService; - } - - public void setActivitiesService(ActivitiesService activitiesService) { - this.activitiesService = activitiesService; - } - - public void setPeopleService(PeopleService peopleService) { - this.peopleService = peopleService; - } - - public void setSystemWorkbenchService(SystemWorkbenchService systemWorkbenchService) { - this.systemWorkbenchService = systemWorkbenchService; - } -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/TestView.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/TestView.java deleted file mode 100644 index e45cd69..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/TestView.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.argeo.suite.workbench.parts; - -import javax.jcr.Repository; -import javax.jcr.Session; - -import org.argeo.connect.util.ConnectJcrUtils; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.argeo.jcr.JcrUtils; -import org.argeo.suite.workbench.AsUiPlugin; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.ui.part.ViewPart; - -/** Basic view to test plugin */ -public class TestView extends ViewPart { - public static final String ID = AsUiPlugin.PLUGIN_ID + ".testView"; - - /* DEPENDENCY INJECTION */ - private Repository repository; - private Session session; - - @Override - public void createPartControl(Composite parent) { - // Finalise initialisation - session = ConnectJcrUtils.login(repository); - - GridLayout layout = EclipseUiUtils.noSpaceGridLayout(); - layout.verticalSpacing = 5; - parent.setLayout(layout); - - new Label(parent, SWT.NONE).setText("Test view shown."); - } - - @Override - public void setFocus() { - } - - @Override - public void dispose() { - JcrUtils.logoutQuietly(session); - super.dispose(); - } - - public void setRepository(Repository repository) { - this.repository = repository; - } -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsActionBarAdvisor.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsActionBarAdvisor.java deleted file mode 100644 index 1b985bf..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsActionBarAdvisor.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.argeo.suite.workbench.rap; - -import org.argeo.cms.ui.workbench.rap.RapActionBarAdvisor; -import org.eclipse.ui.application.IActionBarConfigurer; - -/** Eclipse rap specific action bar advisor */ -public class AsActionBarAdvisor extends RapActionBarAdvisor { - - public AsActionBarAdvisor(IActionBarConfigurer configurer, String username) { - super(configurer, username); - } -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsSecureEntryPoint.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsSecureEntryPoint.java deleted file mode 100644 index bae894d..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsSecureEntryPoint.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.argeo.suite.workbench.rap; - -import org.argeo.cms.ui.workbench.rap.RapWorkbenchAdvisor; -import org.argeo.cms.ui.workbench.rap.RapWorkbenchLogin; -import org.argeo.cms.util.CmsUtils; -import org.argeo.cms.widgets.auth.CmsLogin; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; - -/** - * This class controls all aspects of the application's execution and is - * contributed through the plugin.xml. - */ -public class AsSecureEntryPoint extends RapWorkbenchLogin { - - /** Override to provide an application specific workbench advisor */ - protected RapWorkbenchAdvisor createRapWorkbenchAdvisor(String username) { - return new AsWorkbenchAdvisor(username); - } - - protected void createLoginPage(Composite parent, CmsLogin login) { - parent.setLayout(EclipseUiUtils.noSpaceGridLayout()); - - // Main layout - Composite bodyCmp = new Composite(parent, SWT.NO_FOCUS); - bodyCmp.setLayoutData(EclipseUiUtils.fillAll()); - GridLayout gl = new GridLayout(); - gl.marginHeight = 25; - gl.marginWidth = 40; - bodyCmp.setLayout(gl); - - // Logo - Label headerLbl = new Label(bodyCmp, SWT.WRAP); - CmsUtils.markup(headerLbl); - // Images are declared via the resources extension point in plugin.xml - String headerStr = " " - + " " + ""; - headerLbl.setText(headerStr); - GridData gd = new GridData(SWT.LEFT, SWT.CENTER, true, false); - headerLbl.setLayoutData(gd); - - // Title - Label titleLbl = new Label(bodyCmp, SWT.WRAP | SWT.CENTER); - CmsUtils.markup(titleLbl); - String titleStr = " Please sign in to your personal dashboard"; - titleLbl.setText(titleStr); - gd = new GridData(SWT.CENTER, SWT.BOTTOM, false, false); - gd.verticalIndent = 15; - titleLbl.setLayoutData(gd); - - // Login composite - Composite loginCmp = login.createCredentialsBlock(bodyCmp); - gd = new GridData(SWT.CENTER, SWT.TOP, true, true); - gd.widthHint = 200; - gd.verticalIndent = 15; - loginCmp.setLayoutData(gd); - - // // Footer - // Label footerLbl = new Label(bodyCmp, SWT.WRAP | SWT.CENTER); - // CmsUtils.markup(footerLbl); - // String footerStr = "SDPS is a private service.
" - // + " Please contact us if you - // have any question.
"; - // footerLbl.setText(footerStr); - // footerLbl.setLayoutData(EclipseUiUtils.fillWidth()); - } -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWelcomeRedirect.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWelcomeRedirect.java deleted file mode 100644 index d8c992e..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWelcomeRedirect.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.argeo.suite.workbench.rap; - -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -public class AsWelcomeRedirect extends HttpServlet { - private static final long serialVersionUID = 4359084312826596812L; - - protected void doGet(HttpServletRequest req, HttpServletResponse resp) - throws ServletException, IOException { - resp.sendRedirect(resp.encodeRedirectURL("/ui/WelcomePage")); - } -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWindowAdvisor.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWindowAdvisor.java deleted file mode 100644 index b6ba3f9..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWindowAdvisor.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.argeo.suite.workbench.rap; - -import org.argeo.cms.ui.workbench.rap.RapWindowAdvisor; -import org.argeo.cms.ui.workbench.util.CommandUtils; -import org.argeo.connect.workbench.commands.OpenDefaultEditor; -import org.eclipse.ui.application.ActionBarAdvisor; -import org.eclipse.ui.application.IActionBarConfigurer; -import org.eclipse.ui.application.IWorkbenchWindowConfigurer; - -/** Eclipse RAP specific window advisor */ -public class AsWindowAdvisor extends RapWindowAdvisor { - - private String username; - - public AsWindowAdvisor(IWorkbenchWindowConfigurer configurer, String username) { - super(configurer, username); - this.username = username; - } - - @Override - public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) { - return new AsActionBarAdvisor(configurer, username); - } - - @Override - public void preWindowOpen() { - super.preWindowOpen(); - IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); - configurer.setShowStatusLine(true); - configurer.setShowPerspectiveBar(false); - configurer.setShowMenuBar(false); - } - - @Override - public void postWindowOpen() { - super.postWindowOpen(); - try { - CommandUtils.callCommand(OpenDefaultEditor.ID); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWorkbenchAdvisor.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWorkbenchAdvisor.java deleted file mode 100644 index 5f67135..0000000 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWorkbenchAdvisor.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.argeo.suite.workbench.rap; - -import org.argeo.cms.ui.workbench.rap.RapWorkbenchAdvisor; -import org.eclipse.ui.application.IWorkbenchWindowConfigurer; -import org.eclipse.ui.application.WorkbenchWindowAdvisor; - -/** Eclipse RAP specific workbench advisor */ -public class AsWorkbenchAdvisor extends RapWorkbenchAdvisor { - - private String username; - - @Override - public void postStartup() { - super.postStartup(); - // ExitConfirmation confirmation = RWT.getClient().getService( - // ExitConfirmation.class); - // confirmation.setMessage("Are you sure you want to leave the page? " - // + "All un-saved information will be lost."); - } - - public void postShutdown() { - super.postShutdown(); - // ExitConfirmation confirmation = RWT.getClient().getService( - // ExitConfirmation.class); - // if (confirmation != null) - // confirmation.setMessage(null); - } - - public AsWorkbenchAdvisor(String username) { - super(username); - this.username = username; - } - - public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor( - IWorkbenchWindowConfigurer configurer) { - return new AsWindowAdvisor(configurer, username); - } -} diff --git a/pom.xml b/pom.xml index 027f06f..ef21dcd 100644 --- a/pom.xml +++ b/pom.xml @@ -21,10 +21,6 @@ - - org.argeo.suite.web - org.argeo.suite.apps.web - org.argeo.suite.cms org.argeo.suite.e4 @@ -34,10 +30,6 @@ org.argeo.suite.tracker - - org.argeo.suite.apps - org.argeo.suite.workbench.rap - dep dist -- 2.30.2