From 137c89bc9a870c4018f4c000494c89af9ceea67a Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Wed, 9 Jan 2013 23:34:39 +1300 Subject: Finished archive panel --- src/org/traccar/web/client/view/ArchiveView.java | 88 ++++++++++++++++++++-- src/org/traccar/web/client/view/ArchiveView.ui.xml | 20 ++--- src/org/traccar/web/client/view/DeviceView.java | 27 +------ src/org/traccar/web/client/view/DeviceView.ui.xml | 4 +- 4 files changed, 99 insertions(+), 40 deletions(-) (limited to 'src/org/traccar/web/client/view') diff --git a/src/org/traccar/web/client/view/ArchiveView.java b/src/org/traccar/web/client/view/ArchiveView.java index 79621ba..f61ffcc 100644 --- a/src/org/traccar/web/client/view/ArchiveView.java +++ b/src/org/traccar/web/client/view/ArchiveView.java @@ -4,7 +4,10 @@ import java.util.Date; import java.util.LinkedList; import java.util.List; +import org.traccar.web.client.model.BaseStoreHandlers; +import org.traccar.web.client.model.DeviceProperties; import org.traccar.web.client.model.PositionProperties; +import org.traccar.web.shared.model.Device; import org.traccar.web.shared.model.Position; import com.google.gwt.cell.client.DateCell; @@ -12,15 +15,21 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.ui.Widget; +import com.sencha.gxt.core.client.Style.SelectionMode; import com.sencha.gxt.data.shared.ListStore; +import com.sencha.gxt.data.shared.event.StoreHandlers; import com.sencha.gxt.widget.core.client.ContentPanel; +import com.sencha.gxt.widget.core.client.event.SelectEvent; +import com.sencha.gxt.widget.core.client.form.ComboBox; +import com.sencha.gxt.widget.core.client.form.DateField; +import com.sencha.gxt.widget.core.client.form.TimeField; import com.sencha.gxt.widget.core.client.grid.ColumnConfig; import com.sencha.gxt.widget.core.client.grid.ColumnModel; import com.sencha.gxt.widget.core.client.grid.Grid; -public class ArchiveView extends Composite { +public class ArchiveView { private static ArchiveViewUiBinder uiBinder = GWT.create(ArchiveViewUiBinder.class); @@ -29,6 +38,8 @@ public class ArchiveView extends Composite { public interface ArchiveHandler { public void onSelected(Position position); + public void onLoad(Device device, Date from, Date to); + public void onClear(); } private ArchiveHandler archiveHandler; @@ -40,17 +51,40 @@ public class ArchiveView extends Composite { return contentPanel; } + ListStore deviceStore; + + @UiField + DateField fromDate; + + @UiField + TimeField fromTime; + + @UiField + DateField toDate; + + @UiField + TimeField toTime; + + @UiField(provided = true) + ComboBox deviceCombo; + @UiField(provided = true) ColumnModel columnModel; @UiField(provided = true) - ListStore store; + ListStore positionStore; @UiField Grid grid; - public ArchiveView(ArchiveHandler archiveHandler) { + public ArchiveView(ArchiveHandler archiveHandler, ListStore positionStore, ListStore deviceStore) { this.archiveHandler = archiveHandler; + this.positionStore = positionStore; + deviceStore.addStoreHandlers(deviceStoreHandlers); + this.deviceStore = deviceStore; + + DeviceProperties deviceProperties = GWT.create(DeviceProperties.class); + deviceCombo = new ComboBox(deviceStore, deviceProperties.label()); PositionProperties positionProperties = GWT.create(PositionProperties.class); @@ -71,9 +105,51 @@ public class ArchiveView extends Composite { columnModel = new ColumnModel(columnConfigList); - store = new ListStore(positionProperties.id()); - uiBinder.createAndBindUi(this); + + grid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); + + // Initialize with current time + Date now = new Date(); + fromDate.setValue(now); + fromTime.setValue(now); + toDate.setValue(now); + toTime.setValue(now); + } + + @SuppressWarnings("deprecation") + private static Date getCombineDate(DateField dateField, TimeField timeField) { + Date result = null; + Date date = dateField.getValue(); + Date time = timeField.getValue(); + if (date != null && time != null) { + result = new Date( + date.getYear(), date.getMonth(), date.getDate(), + time.getHours(), time.getMinutes(), time.getSeconds()); + } + return result; + } + + @UiHandler("loadButton") + public void onLoadClicked(SelectEvent event) { + archiveHandler.onLoad( + deviceCombo.getValue(), + getCombineDate(fromDate, fromTime), + getCombineDate(toDate, toTime)); + } + + @UiHandler("clearButton") + public void onClearClicked(SelectEvent event) { + archiveHandler.onClear(); } + private StoreHandlers deviceStoreHandlers = new BaseStoreHandlers() { + + @Override + public void onAnything() { + deviceCombo.setValue(deviceStore.findModel(deviceCombo.getValue())); + } + + }; + } diff --git a/src/org/traccar/web/client/view/ArchiveView.ui.xml b/src/org/traccar/web/client/view/ArchiveView.ui.xml index 370eb02..f27d38f 100644 --- a/src/org/traccar/web/client/view/ArchiveView.ui.xml +++ b/src/org/traccar/web/client/view/ArchiveView.ui.xml @@ -16,7 +16,7 @@ - + @@ -30,28 +30,30 @@ - + - + - + - + - + - + - + + + - + diff --git a/src/org/traccar/web/client/view/DeviceView.java b/src/org/traccar/web/client/view/DeviceView.java index 157973e..1213e5f 100644 --- a/src/org/traccar/web/client/view/DeviceView.java +++ b/src/org/traccar/web/client/view/DeviceView.java @@ -1,6 +1,5 @@ package org.traccar.web.client.view; -import java.util.Collection; import java.util.LinkedList; import java.util.List; @@ -11,7 +10,6 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; -import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.sencha.gxt.core.client.Style.SelectionMode; import com.sencha.gxt.data.shared.ListStore; @@ -23,7 +21,7 @@ import com.sencha.gxt.widget.core.client.grid.ColumnModel; import com.sencha.gxt.widget.core.client.grid.Grid; import com.sencha.gxt.widget.core.client.selection.SelectionChangedEvent; -public class DeviceView extends Composite implements SelectionChangedEvent.SelectionChangedHandler { +public class DeviceView implements SelectionChangedEvent.SelectionChangedHandler { private static DeviceViewUiBinder uiBinder = GWT.create(DeviceViewUiBinder.class); @@ -59,13 +57,14 @@ public class DeviceView extends Composite implements SelectionChangedEvent.Selec ColumnModel columnModel; @UiField(provided = true) - ListStore store; + ListStore deviceStore; @UiField Grid grid; - public DeviceView(DeviceHandler deviceHandler) { + public DeviceView(DeviceHandler deviceHandler, ListStore deviceStore) { this.deviceHandler = deviceHandler; + this.deviceStore = deviceStore; DeviceProperties deviceProperties = GWT.create(DeviceProperties.class); @@ -74,8 +73,6 @@ public class DeviceView extends Composite implements SelectionChangedEvent.Selec columnConfigList.add(new ColumnConfig(deviceProperties.uniqueId(), 0, "Unique Identifier")); columnModel = new ColumnModel(columnConfigList); - store = new ListStore(deviceProperties.id()); - uiBinder.createAndBindUi(this); grid.getSelectionModel().addSelectionChangedHandler(this); @@ -94,35 +91,19 @@ public class DeviceView extends Composite implements SelectionChangedEvent.Selec } } - public void load(Collection devices) { - store.addAll(devices); - } - @UiHandler("addButton") public void onAddClicked(SelectEvent event) { deviceHandler.onAdd(); } - public void add(Device device) { - store.add(store.size(), device); - } - @UiHandler("editButton") public void onEditClicked(SelectEvent event) { deviceHandler.onEdit(grid.getSelectionModel().getSelectedItem()); } - public void update(Device device) { - store.update(device); - } - @UiHandler("removeButton") public void onRemoveClicked(SelectEvent event) { deviceHandler.onRemove(grid.getSelectionModel().getSelectedItem()); } - public void remove(Device device) { - store.remove(device); - } - } diff --git a/src/org/traccar/web/client/view/DeviceView.ui.xml b/src/org/traccar/web/client/view/DeviceView.ui.xml index d9988d5..af1b33c 100644 --- a/src/org/traccar/web/client/view/DeviceView.ui.xml +++ b/src/org/traccar/web/client/view/DeviceView.ui.xml @@ -15,7 +15,7 @@ - + @@ -37,7 +37,7 @@ - + -- cgit v1.2.3