use of com.servoy.j2db.server.ngclient.ServoyDataConverterContext in project servoy-client by Servoy.
the class DataProviderDateTest method createSabloValue.
private TestDataproviderTypeSabloValue createSabloValue(boolean useLocalDate, String initialValue, String format) {
ServoyDataConverterContext context = new ServoyDataConverterContext(new ServiceProvider());
DataAdapterList dal = new DataAdapterList(context.getApplication());
PropertyDescription pd = NGUtils.getDataProviderPropertyDescription(IColumnTypes.DATETIME, false, useLocalDate);
TestDataproviderTypeSabloValue value = new TestDataproviderTypeSabloValue("mydate", dal, context, pd, format);
value.setInitialValue(NGDatePropertyType.NG_INSTANCE.fromJSON(initialValue, false));
return value;
}
use of com.servoy.j2db.server.ngclient.ServoyDataConverterContext in project servoy-client by Servoy.
the class PersistFieldInstanceTest method testFieldWithValueList.
@Test
public void testFieldWithValueList() throws RepositoryException {
Form form = solution.getForm("test");
Assert.assertNotNull(form);
ValueList vl = solution.getValueList("test");
Assert.assertNotNull(vl);
Field field = form.createNewField(new Point(0, 0));
field.setDataProviderID("mycolumn");
field.setFormat("#,###.00");
field.setDisplayType(Field.TYPE_AHEAD);
field.setValuelistID(vl.getID());
// needed for a valuelist property type that searches it's form's table via the webform ui
WebFormUI formUI = new WebFormUI(client.getFormManager().getForm(form.getName()));
IDataAdapterList dataAdapterList = formUI.getDataAdapterList();
List<FormElement> formElements = FormElementHelper.INSTANCE.getFormElements(form.getAllObjects(), new ServoyDataConverterContext(client));
Assert.assertEquals(1, formElements.size());
WebFormComponent wc = ComponentFactory.createComponent(client, dataAdapterList, formElements.get(0), formUI, form);
Object property = wc.getProperty("valuelistID");
Assert.assertTrue(property != null ? property.getClass().getName() : "null", property instanceof ValueListTypeSabloValue && ((ValueListTypeSabloValue) property).getValueList() instanceof CustomValueList);
Assert.assertEquals("#,###.00", ((CustomValueList) ((ValueListTypeSabloValue) property).getValueList()).getFormat().getDisplayFormat());
}
use of com.servoy.j2db.server.ngclient.ServoyDataConverterContext in project servoy-client by Servoy.
the class PersistFieldInstanceTest method testTabPanelWithTabs.
@Test
public void testTabPanelWithTabs() throws RepositoryException {
Form form = solution.getForm("test");
Assert.assertNotNull(form);
Form tabForm = solution.createNewForm(validator, null, "tabform", null, false, new Dimension(600, 400));
tabForm.setNavigatorID(-1);
DataAdapterList dataAdapterList = new DataAdapterList(new TestFormController(tabForm, client));
TabPanel tabpanel = form.createNewTabPanel("tabpanel");
tabpanel.createNewTab("tab1", null, tabForm);
tabpanel.createNewTab("tab2", null, tabForm);
List<FormElement> formElements = FormElementHelper.INSTANCE.getFormElements(form.getAllObjects(), new ServoyDataConverterContext(client));
Assert.assertEquals(1, formElements.size());
WebFormComponent wc = ComponentFactory.createComponent(client, dataAdapterList, formElements.get(0), null, form);
List<Map<String, Object>> tabs = (List) wc.getProperty("tabs");
Assert.assertEquals(2, tabs.size());
Map<String, Object> map = tabs.get(1);
Assert.assertSame(tabForm.getName(), map.get("containsFormId"));
}
use of com.servoy.j2db.server.ngclient.ServoyDataConverterContext in project servoy-client by Servoy.
the class PersistFieldInstanceTest method testSettingTextOfTabInTabpanel.
@Test
public void testSettingTextOfTabInTabpanel() throws RepositoryException, JSONException {
Form form = solution.getForm("test");
Assert.assertNotNull(form);
DataAdapterList dataAdapterList = new DataAdapterList(new TestFormController(form, client));
Form tabForm = solution.createNewForm(validator, null, "tabform", null, false, new Dimension(600, 400));
tabForm.setNavigatorID(-1);
TabPanel tabpanel = form.createNewTabPanel("tabpanel");
tabpanel.createNewTab("tab1", null, tabForm);
tabpanel.createNewTab("tab2", null, tabForm);
List<FormElement> formElements = FormElementHelper.INSTANCE.getFormElements(form.getAllObjects(), new ServoyDataConverterContext(client));
Assert.assertEquals(1, formElements.size());
WebFormComponent wc = ComponentFactory.createComponent(client, dataAdapterList, formElements.get(0), null, form);
TypedData<Map<String, Object>> changes = wc.getAndClearChanges();
Assert.assertEquals(0, changes.content.size());
List<Map<String, Object>> tabs = (List) wc.getProperty("tabs");
Assert.assertEquals(2, tabs.size());
Map<String, Object> map = tabs.get(0);
map.put("text", new BasicTagStringTypeSabloValue("a test", null));
changes = wc.getAndClearChanges();
Assert.assertEquals(1, changes.content.size());
String json = JSONUtils.writeChangesWithConversions(changes.content, changes.contentType, null);
JSONAssert.assertEquals("{\"tabs\":{\"vEr\":1,\"g\":[{\"op\":[0,0,0],\"d\":[{\"rt\":\"servoydefault-tabpanel.tab\",\"vEr\":1,\"u\":[{\"k\":\"text\",\"v\":\"a test\"}]}],\"svy_types\":{\"0\":\"JSON_obj\"}}]},\"svy_types\":{\"tabs\":\"JSON_arr\"}}", json, true);
}
use of com.servoy.j2db.server.ngclient.ServoyDataConverterContext in project servoy-client by Servoy.
the class ComponentTypeSabloValue method fullToJSON.
/**
* Writes the entire value of this property as JSON. This includes the template values, not just the runtime component properties.
* This is currently needed and can get called if the property is nested inside other complex properties (json object/array) that sometimes
* might want/need to send again the entire content.
*/
public JSONWriter fullToJSON(final JSONWriter writer, DataConversion conversionMarkers, ComponentPropertyType componentPropertyType) throws JSONException {
// so that the client knows it must use the custom client side JS for what JSON it gets
if (conversionMarkers != null)
conversionMarkers.convert(ComponentPropertyType.TYPE_NAME);
// create children of component as specified by this property
final FormElement fe = formElementValue.element;
writer.object();
// get template model values
final TypedData<Map<String, Object>> formElementProperties = fe.propertiesForTemplateJSON();
// we'll need to update them with runtime values
final TypedData<Map<String, Object>> runtimeProperties = childComponent.getProperties();
// just for clear
childComponent.getAndClearChanges();
// add to useful properties only those formElement properties that didn't get overridden at runtime (so form element value is still used)
boolean templateValuesRemoved = false;
Iterator<Entry<String, Object>> formElementPropertyIterator = formElementProperties.content.entrySet().iterator();
while (formElementPropertyIterator.hasNext()) {
Entry<String, Object> fePropEntry = formElementPropertyIterator.next();
if (runtimeProperties.content.containsKey(fePropEntry.getKey())) {
// it has a non-default runtime value; so template value will be ignored/not sent
if (!templateValuesRemoved) {
// otherwise it's unmodifiable
formElementProperties.content = new HashMap<String, Object>(formElementProperties.content);
templateValuesRemoved = true;
}
formElementProperties.content.remove(fePropEntry.getKey());
}
}
removeRecordDependentProperties(runtimeProperties);
removeRecordDependentProperties(formElementProperties);
IWebFormUI parent = childComponent.findParent(IWebFormUI.class);
final FormElementContext formElementContext = new FormElementContext(fe, new ServoyDataConverterContext(parent.getController()), null);
componentPropertyType.writeTemplateJSONContent(writer, formElementValue, forFoundsetTypedPropertyName, formElementContext, new IModelWriter() {
@Override
public void writeComponentModel() throws JSONException {
writer.object();
DataConversion dataConversion = new DataConversion();
JSONUtils.writeData(FormElementToJSON.INSTANCE, writer, formElementProperties.content, formElementProperties.contentType, dataConversion, formElementContext);
// always use full to JSON converter here; second arg. is null due to that
childComponent.writeProperties(JSONUtils.FullValueToJSONConverter.INSTANCE, null, writer, runtimeProperties, dataConversion);
JSONUtils.writeClientConversions(writer, dataConversion);
writer.endObject();
}
}, recordBasedProperties, false);
if (forFoundsetTypedPropertyName != null)
recordBasedProperties.clearChanged();
writeWholeViewportToJSON(writer);
writer.endObject();
return writer;
}
Aggregations