New Feature: Perspective Equipment Schedule

Hello everyone, I’m happy to announce that the new Perspective Equipment Schedule will now be available in the current nightly builds.

The Perspective Equipment Schedule is a component whose primary purpose is to convey equipment scheduling information in a concise and easily digestible format. Equipment scheduling includes the familiar Vision counterparts such as - equipment status, production schedules, production status, and scheduled and unexpected downtime. The Equipment Schedule like our many time related components are time zone, locale and DST aware.

The Perspective Equipment Schedule has been constructed in a way to make migration easier from and be familiar to Vision but also allow the powerful styling tools of Perspective. All the familiar elements such as break events and downtime events in Vision will be available in the new Perspective Equipment Schedule.

prop2

The Perspective Equipment Schedule will now display in a grid display allowing for a scrollable view. In addition, we have added the new feature of zooming into the Equipment Schedule to take advantage of this new grid display. This will allow users to manually set a zoom level as well as setting a default zoom level when the schedule loads.

zooming

The Perspective Equipment Schedule now displays a specific UI to help users distinguish if a set of events are overlapping. A dropdown menu is provided so users can view each event separately within that range.

overlapping

With the Perspective Equipment Schedule we have kept the familiar UI interactions with the Vision counterpart such as moving and resizing events but have also added a few new additions such as adding events and deleting events. There is also the functionality of grid snapping to allow for more precise movement of events within the grid. This can be achieved by holding down the Alt key (or equivalent) and performing the event action. All these events can be enabled and disabled with their respective toggle props.

Add:
add

Move:
move

Resize:
resize

Delete:
delete

As a note, these events do not update the property tree on their own. It is up to the user to implement the desired functionality when the events are fired. The component events that are fired from the appropriate UI interactions are as follows - onAddEvent, onMoveEvent, onResizeEvent, onDeleteEvent. The following code snippets have been provided as a general starting point:

onAddEvent:

	from random import random, randint
	
	format = "yyyy-MM-dd HH:mm:ss z"
	locale = "en-us"
	scheduled = self.props.scheduledEvents
	r = random() * 255
	g = random() * 255
	b = random() * 255
	color = "rgb(" + str(r) + "," + str(g) + "," + str(b) + ")"
	percentDone = randint(0, 100)
	leadTime = randint(300, 6000)
	
	item = {
		"endDate": system.date.parse(event.end, format, locale),
		"itemId": event.itemId,
		"startDate": system.date.parse(event.start, format, locale),
		"eventId": "event_" + str(randint(1000, 10000)),
		"backgroundColor": color,
		"percentDone": percentDone,
		"leadTime": leadTime
	}
	scheduled.append(item)

onMoveEvent/onResizeEvent:

	format = "yyyy-MM-dd HH:mm:ss z"
	locale = "en-us"
	scheduled = self.props.scheduledEvents
	for count, toFind in enumerate(scheduled):
		if toFind.eventId == event.eventId and event.itemId == toFind.itemId:
			toFind.startDate = system.date.parse(event.start, format, locale)
			toFind.endDate = system.date.parse(event.end, format, locale)

onDeleteEvent:

scheduled = self.props.scheduledEvents
	format = "yyyy-MM-dd HH:mm:ss z"
	locale = "en-us"
	for count, toFind in enumerate(scheduled):
		if toFind.eventId == event.eventId and toFind.itemId == event.itemId:
			del scheduled[count]
			break

Finally, the Perspective Equipment Schedule allows for fine-tuning of customization through the provided style properties as well as providing numerous entry points for theming.

Dark Theme:

Various Styling:

That wraps up the preview for the Perspective Equipment Schedule. Feel free to give this component a go and post down any feedback down below. Thank you!

29 Likes

Very excited to see this! I am assuming the answer is yes, but can you do a “normal” gannt chart with this? Oh and state diagrams?

Hi @Adriaan.leRoux,

Yes you should be to mock a normal gannt chart with this component. As for state diagrams, do you have an example in mind?

Sorry I think state diagram is the wrong word. I mean a ribbon chart like this: Ignition Exchange | Inductive Automation

Sure, that looks doable. However, it would require the data to be formatted correctly.

Hi I got the latest perspective ignition license version and can’t find the perspective equipment schedule component. When I was using the demo version it was able in vision components so I am trying to use the component on Perspective. Any suggestions?
Thank you

I think is only available in latest nighty build

Hi Jonathan
Thank you for your email, that’s what I was reading that it is available for the nighty build and my question is can I download that version even if I bought just the basic perspective license ? Can I still run my projects or there is any limitation, sorry for to many questions but I am new using ignition perspective and want to make sure

Best regards

Allan Zerecero

Licenses work with nightlies just like releases.

Thank you !!

Thank you Phil !!!

Shows me for not getting on the nightly builds earlier - I love this component, I only wish there was a 15 minute zoom level :frowning: - We live our life in 5-10 minute programs, and 15 minute breaks - the minute view however is so granular. I’ll make it work!

Hi @tyler.robertson,

I have filed a request ticket to have the 15-minute zoom level added to the Equipment Schedule. I will do my best to keep you updated on the status of the feature. Thanks!

3 Likes

Fantastic thank you!

This looks great thank you!

One question: is there a way to show each individual Card stacked on top of each other as opposed to showing the “Overlapping Card”?

Hi @jkirchman,

Currently there is no way to show individual events stacked on top of each other. I can file a feature request for this and keep you updated on it’s status. Thank you.

2 Likes

That would be great thanks

Is it possible to add an item click event so we can get which item(row) the user clicks on?
I really need somehow to interact with this component and user can delete the select machine from the scheduler. I need items id return from an event like a table.
One easy way is providing an embedded view option for this component-like table so the user can implement its logic in that embedded view and show more information for each row.

1 Like

Hi @nader.chinichian,

Yes that would be possible. Let me file a feature request ticket, and I’ll keep you up to date with its status.

1 Like