public static ModuleMember BackendApiService(WebApiMetadata api) => MODULE(new[] { "src", "services" }, ID(api.ServiceName, "Service"), () => { IMPORT.DEFAULT("axios", out var @axios).FROM("axios"); EXPORT.CLASS(ID(api.ServiceName, "Service"), () => { api.ApiMethods.ForEach(apiMethod => { var methodUrl = api.GetMethodUrl(apiMethod); //TODO: separate language-specific parts of fluent code DSL //For instance, 'PUBLIC' and 'PRIVATE' are not defined in JavaScript, and 'IMPORT' is not defined in C# PUBLIC.STATIC.FUNCTION(apiMethod.Name, () => { var arguments = apiMethod.Signature.Parameters.Select((parameter, index) => { PARAMETER(parameter.Name, out var @param); return(@param); }).ToList(); FINAL("data", out var @data, INITOBJECT(() => { arguments.ForEach(arg => KEY(arg.Name, arg)); })); DO.RETURN(@axios .DOT("post").INVOKE(ANY(methodUrl), @data) .DOT("then").INVOKE(LAMBDA(@result => DO.RETURN(@result.DOT("data")) )) .DOT("catch").INVOKE(LAMBDA(@err => { USE("console").DOT("log").INVOKE(@err); })) ); });
void CreateDatatable() { dt.Columns.Add("Reservation ID"); dt.Columns.Add("Amount(DH)"); dt.Columns.Add("Date of Reservation"); dt.Columns.Add("Model car Name"); dt.Columns.Add("Rental days"); dataGridReservation.DataSource = dt; IMPORT.Focus(); }
private void WriteImports() { IMPORT.MODULE("babel-polyfill"); IMPORT.TUPLE("app", out _appVariable, "h", out var @h).FROM("hyperapp"); IMPORT.TUPLE("Form", out _formVariable).FROM("./components/form"); foreach (var api in _metadata.BackendApis) { var suffixedServiceName = api.ServiceName.AppendSuffixFragments("Service"); IMPORT .TUPLE(suffixedServiceName.ToString(CasingStyle.Pascal), out var @service) .FROM($"./services/{suffixedServiceName.ToString(CasingStyle.Kebab)}"); _metaPageExtension.ServiceVarByType.Add(api.InterfaceType, @service); } }