This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch jpa-SNAPSHOT
in repository https://gitbox.apache.org/repos/asf/isis-app-simpleapp.git
The following commit(s) were added to refs/heads/jpa-SNAPSHOT by this push:
new bddbed6 adds in fullcalendar
bddbed6 is described below
commit bddbed6f3d17e1faf9a1305e60afcbbedeb1b6e3
Author: Dan Haywood <[email protected]>
AuthorDate: Tue Aug 30 20:05:52 2022 +0100
adds in fullcalendar
---
.run/SimpleApp.run.xml | 1 +
module-simple/pom.xml | 10 ++++++
.../domainapp/modules/simple/SimpleModule.java | 6 +++-
.../simple/dom/so/SimpleObject.columnOrder.txt | 3 +-
.../modules/simple/dom/so/SimpleObject.java | 41 +++++++++++++++++++++-
.../simple/fixture/SimpleObjectBuilder.java | 14 +++++---
.../simple/fixture/SimpleObject_persona.java | 15 ++++++--
webapp/pom.xml | 11 ++++--
.../main/java/domainapp/webapp/AppManifest.java | 2 ++
.../src/main/resources/static/css/application.css | 5 +++
webapp/src/main/resources/static/index.html | 2 +-
11 files changed, 97 insertions(+), 13 deletions(-)
diff --git a/.run/SimpleApp.run.xml b/.run/SimpleApp.run.xml
index bbb78c4..52eb874 100644
--- a/.run/SimpleApp.run.xml
+++ b/.run/SimpleApp.run.xml
@@ -2,6 +2,7 @@
<configuration default="false" name="SimpleApp"
type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
<option name="ACTIVE_PROFILES" />
<module name="simpleapp-jpa-webapp" />
+ <option name="SHORTEN_COMMAND_LINE" value="ARGS_FILE" />
<option name="SPRING_BOOT_MAIN_CLASS" value="domainapp.webapp.SimpleApp" />
<option name="VM_PARAMETERS" value="-javaagent:lib/spring-instrument.jar"
/>
<method v="2">
diff --git a/module-simple/pom.xml b/module-simple/pom.xml
index aeb7cb5..8160be8 100644
--- a/module-simple/pom.xml
+++ b/module-simple/pom.xml
@@ -40,6 +40,16 @@
<artifactId>isis-applib</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.isis.testing</groupId>
+ <artifactId>isis-testing-fakedata-applib</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.extensions</groupId>
+ <artifactId>isis-extensions-fullcalendar-applib</artifactId>
+ </dependency>
+
<dependency>
<groupId>org.apache.isis.extensions</groupId>
<artifactId>isis-extensions-pdfjs-applib</artifactId>
diff --git
a/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
b/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
index 8379b42..56ece4b 100644
--- a/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
+++ b/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
@@ -6,8 +6,10 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import
org.apache.isis.extensions.fullcalendar.applib.IsisModuleExtFullCalendarApplib;
import org.apache.isis.extensions.pdfjs.applib.IsisModuleExtPdfjsApplibModel;
import org.apache.isis.persistence.jpa.applib.IsisModulePersistenceJpaApplib;
+import org.apache.isis.testing.fakedata.applib.IsisModuleTestingFakeDataApplib;
import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
import org.apache.isis.testing.fixtures.applib.modules.ModuleWithFixtures;
import
org.apache.isis.testing.fixtures.applib.teardown.jpa.TeardownFixtureJpaAbstract;
@@ -17,7 +19,9 @@ import domainapp.modules.simple.dom.so.SimpleObject;
@Configuration
@Import({
IsisModuleExtPdfjsApplibModel.class,
- IsisModulePersistenceJpaApplib.class
+ IsisModuleExtFullCalendarApplib.class,
+ IsisModuleTestingFakeDataApplib.class,
+ IsisModulePersistenceJpaApplib.class,
})
@ComponentScan
@EnableJpaRepositories
diff --git
a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.columnOrder.txt
b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.columnOrder.txt
index dbf267a..5f3107a 100644
---
a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.columnOrder.txt
+++
b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.columnOrder.txt
@@ -1,2 +1,3 @@
name
-#version
\ No newline at end of file
+lastCheckedIn
+#version
diff --git
a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java
b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java
index 2765da2..31d21b8 100644
---
a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java
+++
b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java
@@ -1,6 +1,11 @@
package domainapp.modules.simple.dom.so;
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.ZoneOffset;
import java.util.Comparator;
+import java.util.Optional;
import javax.inject.Inject;
import javax.inject.Named;
@@ -27,7 +32,9 @@ import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
+import org.apache.isis.applib.annotation.Editing;
import org.apache.isis.applib.annotation.MemberSupport;
+import org.apache.isis.applib.annotation.Optionality;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
@@ -35,10 +42,17 @@ import org.apache.isis.applib.annotation.Publishing;
import org.apache.isis.applib.annotation.Title;
import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
import org.apache.isis.applib.layout.LayoutConstants;
+import org.apache.isis.applib.services.clock.ClockService;
+import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.message.MessageService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.services.title.TitleService;
+import org.apache.isis.applib.services.user.UserCurrentSessionTimeZoneHolder;
+import org.apache.isis.applib.services.user.UserService;
import org.apache.isis.applib.value.Blob;
+import org.apache.isis.extensions.fullcalendar.applib.CalendarEventable;
+import org.apache.isis.extensions.fullcalendar.applib.value.CalendarEvent;
import org.apache.isis.extensions.pdfjs.applib.annotations.PdfJsViewer;
import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
import org.apache.isis.persistence.jpa.applib.types.BlobJpaEmbeddable;
@@ -80,7 +94,7 @@ import domainapp.modules.simple.types.Notes;
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
@ToString(onlyExplicitlyIncluded = true)
-public class SimpleObject implements Comparable<SimpleObject> {
+public class SimpleObject implements Comparable<SimpleObject>,
CalendarEventable {
static final String NAMED_QUERY__FIND_BY_NAME_LIKE =
"SimpleObject.findByNameLike";
@@ -139,6 +153,31 @@ public class SimpleObject implements
Comparable<SimpleObject> {
this.attachment = BlobJpaEmbeddable.fromBlob(attachment);
}
+
+
+ @Property(optionality = Optionality.OPTIONAL, editing = Editing.ENABLED)
+ @PropertyLayout(fieldSetId = LayoutConstants.FieldSetId.DETAILS, sequence
= "3")
+ @Column(nullable = true)
+ @Getter @Setter
+ private java.time.LocalDate lastCheckedIn;
+
+
+ @Override
+ public String getCalendarName() {
+ return "Last checked-in";
+ }
+
+ @Override
+ public CalendarEvent toCalendarEvent() {
+ if (getLastCheckedIn() != null) {
+ long epochMillis =
getLastCheckedIn().toEpochSecond(LocalTime.MIDNIGHT,
ZoneOffset.systemDefault().getRules().getOffset(getLastCheckedIn().atStartOfDay()))
* 1000L;
+ return new CalendarEvent(epochMillis, getCalendarName(),
titleService.titleOf(this), getNotes());
+ } else {
+ return null;
+ }
+ }
+
+
@Action(semantics = IDEMPOTENT, commandPublishing = Publishing.ENABLED,
executionPublishing = Publishing.ENABLED)
@ActionLayout(
associateWith = "name", promptStyle = PromptStyle.INLINE,
diff --git
a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java
b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java
index b54ea84..ac9ad03 100644
---
a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java
+++
b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java
@@ -7,7 +7,9 @@ import javax.inject.Inject;
import org.springframework.core.io.ClassPathResource;
+import org.apache.isis.applib.services.clock.ClockService;
import org.apache.isis.applib.value.Blob;
+import org.apache.isis.testing.fakedata.applib.services.FakeDataService;
import
org.apache.isis.testing.fixtures.applib.personas.BuilderScriptWithResult;
import domainapp.modules.simple.dom.so.SimpleObject;
@@ -21,10 +23,8 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
public class SimpleObjectBuilder extends BuilderScriptWithResult<SimpleObject>
{
- @Getter @Setter
- private String name;
- @Getter @Setter
- private String contentFileName;
+ @Getter @Setter private String name;
+ @Getter @Setter private String contentFileName;
@Override
protected SimpleObject buildResult(final ExecutionContext ec) {
@@ -38,6 +38,9 @@ public class SimpleObjectBuilder extends
BuilderScriptWithResult<SimpleObject> {
val attachment = new Blob(contentFileName, "application/pdf",
bytes);
simpleObject.updateAttachment(attachment);
}
+
+
simpleObject.setLastCheckedIn(clockService.getClock().nowAsLocalDate().plusDays(fakeDataService.ints().between(-10,
+10)));
+
return simpleObject;
}
@@ -59,5 +62,8 @@ public class SimpleObjectBuilder extends
BuilderScriptWithResult<SimpleObject> {
// -- DEPENDENCIES
@Inject SimpleObjects simpleObjects;
+ @Inject ClockService clockService;
+ @Inject FakeDataService fakeDataService;
+
}
diff --git
a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
index 525206d..8fc5df2 100644
---
a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
+++
b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
@@ -1,15 +1,23 @@
package domainapp.modules.simple.fixture;
+import java.time.LocalDate;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.services.clock.ClockService;
import org.apache.isis.applib.services.registry.ServiceRegistry;
+import org.apache.isis.testing.fakedata.applib.services.FakeDataService;
import org.apache.isis.testing.fixtures.applib.personas.Persona;
import org.apache.isis.testing.fixtures.applib.setup.PersonaEnumPersistAll;
import lombok.AllArgsConstructor;
+import lombok.RequiredArgsConstructor;
+import lombok.val;
import domainapp.modules.simple.dom.so.SimpleObject;
import domainapp.modules.simple.dom.so.SimpleObjects;
-@AllArgsConstructor
+@RequiredArgsConstructor
public enum SimpleObject_persona
implements Persona<SimpleObject, SimpleObjectBuilder> {
@@ -29,7 +37,9 @@ implements Persona<SimpleObject, SimpleObjectBuilder> {
@Override
public SimpleObjectBuilder builder() {
- return new
SimpleObjectBuilder().setName(name).setContentFileName(contentFileName);
+ return new SimpleObjectBuilder()
+ .setName(name)
+ .setContentFileName(contentFileName);
}
@Override
@@ -45,4 +55,5 @@ implements Persona<SimpleObject, SimpleObjectBuilder> {
super(SimpleObject_persona.class);
}
}
+
}
diff --git a/webapp/pom.xml b/webapp/pom.xml
index b8d6923..0845607 100644
--- a/webapp/pom.xml
+++ b/webapp/pom.xml
@@ -102,17 +102,22 @@
<dependency>
<groupId>org.apache.isis.extensions</groupId>
- <artifactId>isis-extensions-exceldownload-wicket-ui</artifactId>
<!--.-->
+ <artifactId>isis-extensions-exceldownload-wicket-ui</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.extensions</groupId>
- <artifactId>isis-extensions-pdfjs-wicket-ui</artifactId> <!--.-->
+ <artifactId>isis-extensions-fullcalendar-wicket-ui</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.extensions</groupId>
- <artifactId>isis-extensions-secman-encryption-jbcrypt</artifactId>
<!--.-->
+ <artifactId>isis-extensions-pdfjs-wicket-ui</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.extensions</groupId>
+ <artifactId>isis-extensions-secman-encryption-jbcrypt</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.extensions</groupId>
diff --git a/webapp/src/main/java/domainapp/webapp/AppManifest.java
b/webapp/src/main/java/domainapp/webapp/AppManifest.java
index f5892e4..4329382 100644
--- a/webapp/src/main/java/domainapp/webapp/AppManifest.java
+++ b/webapp/src/main/java/domainapp/webapp/AppManifest.java
@@ -14,6 +14,7 @@ import
org.apache.isis.extensions.commandlog.jpa.IsisModuleExtCommandLogPersiste
import
org.apache.isis.extensions.executionlog.jpa.IsisModuleExtExecutionLogPersistenceJpa;
import
org.apache.isis.extensions.executionoutbox.jpa.IsisModuleExtExecutionOutboxPersistenceJpa;
import org.apache.isis.extensions.flyway.impl.IsisModuleExtFlywayImpl;
+import
org.apache.isis.extensions.fullcalendar.wkt.viewer.IsisModuleExtFullCalendarWicketUi;
import org.apache.isis.extensions.pdfjs.wkt.ui.IsisModuleExtPdfjsWicketUi;
import
org.apache.isis.extensions.secman.encryption.jbcrypt.IsisModuleExtSecmanEncryptionJbcrypt;
import org.apache.isis.extensions.secman.jpa.IsisModuleExtSecmanPersistenceJpa;
@@ -58,6 +59,7 @@ import domainapp.webapp.quartz.QuartzModule;
IsisModuleExtExecutionOutboxPersistenceJpa.class,
IsisModuleExtExcelDownloadWicketUi.class,
+ IsisModuleExtFullCalendarWicketUi.class,
IsisModuleExtPdfjsWicketUi.class,
IsisModuleValAsciidocMetaModel.class, // for pretty rendering of DTO
objects such as CommandDto, InteractionDto
diff --git a/webapp/src/main/resources/static/css/application.css
b/webapp/src/main/resources/static/css/application.css
index 888fac0..f47df5f 100644
--- a/webapp/src/main/resources/static/css/application.css
+++ b/webapp/src/main/resources/static/css/application.css
@@ -1,3 +1,8 @@
body > nav > div > a > img {
height: 32px;
}
+
+
+td.fc-day a.fc-daygrid-event {
+ cursor: pointer;
+}
diff --git a/webapp/src/main/resources/static/index.html
b/webapp/src/main/resources/static/index.html
index 5e8c12d..a7f42f3 100644
--- a/webapp/src/main/resources/static/index.html
+++ b/webapp/src/main/resources/static/index.html
@@ -46,7 +46,7 @@
</ul>
<p>
- The default user/password is <b><i>sven/pass</i></b>.
+ The default admin/password is <b><i>secman-admin/pass</i></b>, the
default regular user/password is <b><i>sven/pass</i></b>.
</p>
</div>