
Security News
vlt Launches "reproduce": A New Tool Challenging the Limits of Package Provenance
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
com.panacoding.gridtimeline:gridtimeline
Advanced tools
GridTimeline is a timeline SmartSheet similar to others timeline charts but full android native.
Here is a short gif showing the functionality you get with this library:
Add the following maven dependency exchanging x.x.x
for the latest release.
<dependency>
<groupId>com.panacoding.gridtimeline</groupId>
<artifactId>gridtimeline</artifactId>
<version>x.x.x</version>
</dependency>
Add the following gradle dependency exchanging x.x.x
for the latest release.
dependencies {
compile 'com.panacoding.gridtimeline:gridtimeline:x.x.x'
}
First of all you will have to clone the library.
git clone https://github.com/PanaCoding/JGridTimeline.git
Now that you have the library you will have to import it into Android Studio. In Android Studio navigate the menus like this.
File -> Import Project ...
In the following dialog navigate to Gridtimeline which you cloned to your computer in the previous steps and select the build.gradle
.
Ok lets start with your activities or fragments xml file. It might look something like this.
<com.panacoding.gridtimeline.JTimelineContainer
android:id="@+id/timeline"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Now in your activities onCreate()
or your fragments onCreateView()
you would want to do something like this
JTimelineContainer timeline = findViewById(R.id.timeline); // Get View timeline
timeline.setyLabelsTitle("Departments"); // Y-Axis Title (optional)
/***
*
* Y-Axis Labels (Required)
*
*/
List<JModelYLabel> list_y_labels = new ArrayList<>();
HashMap<String,String> office_departments = new HashMap<>();
office_departments.put("it","IT");
office_departments.put("accounting","Accounting");
office_departments.put("human_resources","Human Resources");
office_departments.put("sales","Sales");
office_departments.put("executives","Executives");
office_departments.put("warehouse","Warehouse");
office_departments.put("marketing","Marketing");
office_departments.put("factory","Factory");
office_departments.put("research","Research");
for (Map.Entry<String, String> department : office_departments.entrySet()) {
String key = department.getKey();
String value = department.getValue();
JModelYLabel yLabel = new JModelYLabel();
yLabel.setId(key);
yLabel.setName(value);
list_y_labels.add(yLabel);
}
timeline.setyLabels(list_y_labels);
// Date (Required)
timeline.setDate("2022-04-18");
// Set initial hour 1-24 default 5am (optional)
timeline.setStart_hour_24(7);
// Set final hour 1-24 default 24 (optional)
timeline.setEnd_hour_24(23);
// Set intervals in minutes default 60mins (optional)
timeline.setInterval_mins(30);
// Show actual hour indicator (default: false) (optional)
timeline.setShow_actual_hour_indicator(true);
// Set row labels width in Pixels default 200px (optional)
timeline.setRows_labels_width(300);
// init timeline
timeline.load();
You should do this before de load() call
// Grid Stroke color
timeline.setStroke_color_grid("#edf2f4"); // optional
timeline.setInner_line_col_multiplier(2); // optional
// Timeline background color
timeline.setColor_background_timeline("#ffffff"); // optional default white
// Labels text color
timeline.setLabels_text_color("#8d99ae"); // optional
ArrayList<JModelEvent> events_list = new ArrayList<>();
JModelEvent event1 = new JModelEvent();
event1.setId("120");
event1.setName("Josue Birthday");
event1.setStart_time("7:25");
event1.setEnd_time("8:25");
event1.setY_label_id("sales"); // id y label
events_list.add(event1);
JModelEvent event2 = new JModelEvent();
event2.setId("122");
event2.setName("Joel Retirement");
event2.setStart_time("10:30");
event2.setEnd_time("11:35");
event2.setY_label_id("executives");
event2.setBackground_color("#000000"); // you can change the color background of the event
event2.setText_color("#f5fc2d"); // you can change the text_color of the event
events_list.add(event2);
JModelEvent event3 = new JModelEvent();
event3.setId("125");
event3.setName("Itzenia Birthday");
event3.setStart_time("7:10");
event3.setEnd_time("9:25");
event3.setY_label_id("it");
events_list.add(event3);
JModelEvent[] arr_events = new JModelEvent[events_list.size()];
events_list.toArray(arr_events);
timeline.setEvents(arr_events); // set events to render on the timeline
// Add event click event (Optional)
timeline.setOnEventClick(new JTimelineContainer.OnEventClick() {
@Override
public void onEventClick(JModelEvent event) {
/**
*
*
*
*/
Toast.makeText(MainActivity.this, "event clicked "+event.getId(), Toast.LENGTH_SHORT).show();
}
});
First you need to set X-Axis in hour to(false) and add date to start and date to finish before de load() call
timeline.setX_axis_in_hours(false);
// Set X-Axis Start Date in yyyy-MM-dd
timeline.setStart_date("2022-04-01");
// Set X-Axis End Date in yyyy-MM-dd
timeline.setEnd_date("2022-04-30");
// Set the format to show dates default(yyyy-MM-dd)
timeline.setDate_format_to_show("dd/MM/yyyy");
Now when you add the events you should add start_date and end_date instead of start_time,end_time like this
ArrayList<JModelEvent> events_list = new ArrayList<>();
JModelEvent event1 = new JModelEvent();
event1.setId("120");
event1.setName("Josue Birthday");
event1.setStart_date("2022-04-04");
event1.setEnd_date("2022-04-06");
event1.setY_label_id("sales");
events_list.add(event1);
JModelEvent[] arr_events = new JModelEvent[events_list.size()];
events_list.toArray(arr_events);
timeline.setEvents(arr_events);
FAQs
Gird timeline chart for android
We found that com.panacoding.gridtimeline:gridtimeline demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.