Skip to content

Commit 18121ff

Browse files
author
Aadrian
committed
Initial Commit
1 parent 7a42ff8 commit 18121ff

File tree

5 files changed

+337
-0
lines changed

5 files changed

+337
-0
lines changed

pom.xml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<groupId>org.joget.marketplace</groupId>
5+
<artifactId>status-color-datalist-formatter</artifactId>
6+
<packaging>bundle</packaging>
7+
<version>7.0</version>
8+
<name>status-color-datalist-formatter</name>
9+
<url>http://www.joget.org</url>
10+
<build>
11+
<plugins>
12+
<plugin>
13+
<artifactId>maven-compiler-plugin</artifactId>
14+
<version>2.0.2</version>
15+
<configuration>
16+
<source>1.7</source>
17+
<target>1.7</target>
18+
</configuration>
19+
</plugin>
20+
<plugin>
21+
<groupId>org.apache.maven.plugins</groupId>
22+
<artifactId>maven-surefire-plugin</artifactId>
23+
<version>2.4.3</version>
24+
<configuration>
25+
<skipTests>false</skipTests>
26+
</configuration>
27+
<executions>
28+
<execution>
29+
<id>integration-test</id>
30+
<phase>integration-test</phase>
31+
<goals>
32+
<goal>test</goal>
33+
</goals>
34+
<configuration>
35+
<skipTests>false</skipTests>
36+
</configuration>
37+
</execution>
38+
</executions>
39+
</plugin>
40+
<plugin>
41+
<groupId>org.apache.felix</groupId>
42+
<artifactId>maven-bundle-plugin</artifactId>
43+
<extensions>true</extensions>
44+
<configuration>
45+
<instructions>
46+
<!-- Change package and plugin class here -->
47+
<Export-Package>org.joget.marketplace</Export-Package>
48+
<Private-Package>org.joget.marketplace.*</Private-Package>
49+
<Bundle-Activator>org.joget.marketplace.Activator</Bundle-Activator>
50+
<Import-Package>!*,org.joget.report.dao,org.joget.report.model,org.joget.report.service,org.joget.commons.util,org.joget.plugin.base,org.joget.plugin.property.model,org.joget.plugin.property.service,org.joget.directory.model,org.joget.directory.model.service,org.joget.directory.dao,org.joget.workflow.model,org.joget.workflow.model.dao,org.joget.workflow.model.service,org.joget.workflow.util,org.joget.apps.app.dao,org.joget.apps.app.lib,org.joget.apps.app.model,org.joget.apps.app.service,org.joget.apps.datalist.lib,org.joget.apps.datalist.model,org.joget.apps.datalist.service,org.joget.apps.form.lib,org.joget.apps.form.dao,org.joget.apps.form.model,org.joget.apps.form.service,org.joget.apps.list.service,org.joget.apps.userview.lib,org.joget.apps.userview.model,org.joget.apps.userview.service,org.joget.apps.workflow.lib,javax.servlet,javax.servlet.http,org.osgi.framework;version="1.3.0"</Import-Package>
51+
<!-- End change package and plugin class here -->
52+
<Embed-Dependency>*;scope=compile|runtime;inline=false</Embed-Dependency>
53+
<Embed-Transitive>true</Embed-Transitive>
54+
<Embed-Directory>dependency</Embed-Directory>
55+
<Embed-StripGroup>true</Embed-StripGroup>
56+
<DynamicImport-Package>*</DynamicImport-Package>
57+
</instructions>
58+
</configuration>
59+
</plugin>
60+
</plugins>
61+
</build>
62+
<dependencies>
63+
<dependency>
64+
<groupId>junit</groupId>
65+
<artifactId>junit</artifactId>
66+
<version>4.4</version>
67+
<scope>test</scope>
68+
</dependency>
69+
<dependency>
70+
<groupId>org.springframework</groupId>
71+
<artifactId>spring</artifactId>
72+
<version>2.5.6.SEC03</version>
73+
<scope>test</scope>
74+
</dependency>
75+
<dependency>
76+
<groupId>org.springframework</groupId>
77+
<artifactId>spring-test</artifactId>
78+
<version>2.5.6.SEC03</version>
79+
<scope>test</scope>
80+
</dependency>
81+
<dependency>
82+
<groupId>org.joget</groupId>
83+
<artifactId>wflow-core</artifactId>
84+
<version>7.0-SNAPSHOT</version>
85+
<type>jar</type>
86+
<exclusions>
87+
<exclusion>
88+
<groupId>javax.servlet</groupId>
89+
<artifactId>javax.servlet-api</artifactId>
90+
</exclusion>
91+
</exclusions>
92+
<scope>provided</scope>
93+
</dependency>
94+
</dependencies>
95+
<distributionManagement>
96+
<repository>
97+
<id>internal</id>
98+
<url>https://dev.joget.org/archiva/repository/internal</url>
99+
</repository>
100+
<snapshotRepository>
101+
<id>snapshots</id>
102+
<url>https://dev.joget.org/archiva/repository/snapshots</url>
103+
</snapshotRepository>
104+
</distributionManagement>
105+
</project>
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.joget.marketplace;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collection;
5+
import org.osgi.framework.BundleActivator;
6+
import org.osgi.framework.BundleContext;
7+
import org.osgi.framework.ServiceRegistration;
8+
9+
public class Activator implements BundleActivator {
10+
11+
protected Collection<ServiceRegistration> registrationList;
12+
13+
public void start(BundleContext context) {
14+
registrationList = new ArrayList<ServiceRegistration>();
15+
16+
//Register plugin here
17+
//registrationList.add(context.registerService(MyPlugin.class.getName(), new MyPlugin(), null));
18+
19+
registrationList.add(context.registerService(StatusColorDatalistFormatter.class.getName(), new StatusColorDatalistFormatter(), null));
20+
21+
22+
}
23+
24+
public void stop(BundleContext context) {
25+
for (ServiceRegistration registration : registrationList) {
26+
registration.unregister();
27+
}
28+
}
29+
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package org.joget.marketplace;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collection;
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
import org.joget.apps.app.model.AppDefinition;
8+
import org.joget.apps.app.service.AppPluginUtil;
9+
import org.joget.apps.app.service.AppUtil;
10+
import org.joget.apps.datalist.model.DataList;
11+
import org.joget.apps.datalist.model.DataListColumn;
12+
import org.joget.apps.datalist.model.DataListColumnFormatDefault;
13+
import org.joget.commons.util.LogUtil;
14+
15+
public class StatusColorDatalistFormatter extends DataListColumnFormatDefault{
16+
17+
private final static String MESSAGE_PATH = "messages/StatusColorDatalistFormatter";
18+
19+
public String getName() {
20+
return "Status Color Datalist Formatter";
21+
}
22+
23+
public String getVersion() {
24+
return "7.0.0";
25+
}
26+
27+
public String getDescription() {
28+
//support i18n
29+
//=======================================================================================================
30+
return AppPluginUtil.getMessage("org.joget.marketplace.StatusColorDatalistFormatter.pluginDesc", getClassName(), MESSAGE_PATH);
31+
}
32+
33+
@Override
34+
public String format(DataList dataList, DataListColumn column, Object row, Object value) {
35+
AppDefinition appDef = AppUtil.getCurrentAppDefinition();
36+
String result = (String) value;
37+
38+
if (result != null && !result.isEmpty()) {
39+
try {
40+
boolean isCaseSensitive = false;
41+
if(getPropertyString("statusCaseSensitivity") != null){
42+
isCaseSensitive = Boolean.parseBoolean(getPropertyString("statusCaseSensitivity"));
43+
}
44+
// set options
45+
Object[] options = (Object[]) getProperty("options");
46+
Collection<Map> optionMap = new ArrayList<>();
47+
48+
for (Object o : options) {
49+
Map mapping = (HashMap) o;
50+
51+
//case must match
52+
if (isCaseSensitive){
53+
if(((String)value).equals((String)mapping.get("value"))){
54+
result = "<p style=\"color: white; background-color: " + (String)mapping.get("backgroundColor") +
55+
"; white-space: nowrap; border-radius: 8px; padding:6px; text-align: center; margin: 0px; \">" +
56+
(String)mapping.get("label") + "</p>";
57+
}
58+
}
59+
60+
//no case required
61+
else{
62+
if(((String)value).equalsIgnoreCase((String)mapping.get("value"))){
63+
result = "<p style=\"color: white; background-color: " + (String)mapping.get("backgroundColor") +
64+
"; white-space: nowrap; border-radius: 8px; padding:6px; text-align: center; margin: 0px; \">" +
65+
(String)mapping.get("label") + "</p>";
66+
}
67+
}
68+
69+
optionMap.add(mapping);
70+
}
71+
72+
Map model = new HashMap();
73+
model.put("options", optionMap);
74+
model.put("columnName", column.getName());
75+
model.put("element", this);
76+
77+
} catch (Exception e) {
78+
LogUtil.error(getClassName(), e, "");
79+
}
80+
}
81+
return result;
82+
}
83+
84+
public String getLabel() {
85+
//support i18n
86+
return AppPluginUtil.getMessage("org.joget.marketplace.StatusColorDatalistFormatter.pluginLabel", getClassName(), MESSAGE_PATH);
87+
}
88+
89+
public String getClassName() {
90+
return getClass().getName();
91+
}
92+
93+
public String getPropertyOptions() {
94+
return AppUtil.readPluginResource(getClassName(), "/properties/StatusColorDatalistFormatter.json", null, true, MESSAGE_PATH);
95+
}
96+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
org.joget.marketplace.StatusColorDatalistFormatter.pluginLabel=Status Color Datalist Formatter
2+
org.joget.marketplace.StatusColorDatalistFormatter.pluginDesc=Format the background color based on status value
3+
org.joget.marketplace.StatusColorDatalistFormatter.config=Configure Status Color Datalist Formatter
4+
org.joget.marketplace.StatusColorDatalistFormatter.statusCaseSensitivity=Status Case Sensitivity
5+
org.joget.marketplace.StatusColorDatalistFormatter.options=Status
6+
org.joget.marketplace.StatusColorDatalistFormatter.value=Value
7+
org.joget.marketplace.StatusColorDatalistFormatter.label=Label
8+
org.joget.marketplace.StatusColorDatalistFormatter.backgroundColor=Background Color
9+
org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.red=Red
10+
org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.pink=Pink
11+
org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.orange=Orange
12+
org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.yellow=Yellow
13+
org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.green=Green
14+
org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.blue=Blue
15+
org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.purple=Purple
16+
org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.black=Black
17+
org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.cyan=Cyan
18+
org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.lime=Lime
19+
org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.grey=Grey
20+
org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.silver=Silver
21+
org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.brown=Brown
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
[{
2+
"title" : "@@org.joget.marketplace.StatusColorDatalistFormatter.config@@",
3+
"properties" : [
4+
{
5+
"name" : "statusCaseSensitivity",
6+
"label" : "@@org.joget.marketplace.StatusColorDatalistFormatter.statusCaseSensitivity@@",
7+
"type" : "checkbox",
8+
"options" : [{
9+
"value" : "true",
10+
"label" : ""
11+
}]
12+
},
13+
{
14+
"name":"options",
15+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.options@@",
16+
"type":"grid",
17+
"columns":[
18+
{
19+
"key":"value",
20+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.value@@"
21+
},
22+
{
23+
"key":"label",
24+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.label@@"
25+
},
26+
{
27+
"key":"backgroundColor",
28+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.backgroundColor@@",
29+
"options": [{
30+
"value":"RED",
31+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.red@@"
32+
},
33+
{
34+
"value":"PINK",
35+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.pink@@"
36+
},
37+
{
38+
"value":"ORANGE",
39+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.orange@@"
40+
},
41+
{
42+
"value":"YELLOW",
43+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.yellow@@"
44+
},
45+
{
46+
"value":"GREEN",
47+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.green@@"
48+
},
49+
{
50+
"value":"BLUE",
51+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.blue@@"
52+
},
53+
{
54+
"value":"PURPLE",
55+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.purple@@"
56+
},
57+
{
58+
"value":"BLACK",
59+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.black@@"
60+
},
61+
{
62+
"value":"CYAN",
63+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.cyan@@"
64+
},
65+
{
66+
"value":"LIME",
67+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.lime@@"
68+
},
69+
{
70+
"value":"GREY",
71+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.grey@@"
72+
},
73+
{
74+
"value":"SILVER",
75+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.silver@@"
76+
},
77+
{
78+
"value":"BROWN",
79+
"label":"@@org.joget.marketplace.StatusColorDatalistFormatter.colorScheme.brown@@"
80+
}
81+
]
82+
}
83+
]
84+
}
85+
]
86+
}]

0 commit comments

Comments
 (0)