Giter Club home page Giter Club logo

laravel-nova-nested-form's Introduction

Latest Stable Version Total Downloads Latest Unstable Version License Monthly Downloads Daily Downloads

Nova Nested Form

This package allows you to include your nested relationships' forms into a parent form.

Installation

composer require yassi/nova-nested-form

Contributions

As I did not anticipate so many people would use that package (which is awesome) and simply do not have enough time to update/enhance this package more regularly on my own, I am looking for other contributors to help me with the maintenance and feature requests. Don't hesitate to contact me if you're interested!

Update to 3.0

The afterFill and beforeFill methods are no longer available.

Attach a new relationship form to a resource

Simply add a NestedForm into your fields. The first parameter must be an existing NovaResource class and the second parameter (optional) must be an existing HasOneOrMany relationship in your model.

namespace App\Nova;

use Laravel\Nova\Fields\ID;
use Illuminate\Http\Request;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Fields\Gravatar;
use Laravel\Nova\Fields\Password;
// Add use statement here.
use Yassi\NestedForm\NestedForm;

class User extends Resource
{
    ...
    public function fields(Request $request)
    {
        return [
            ID::make()->sortable(),

            Gravatar::make(),

            Text::make('Name')
                ->sortable()
                ->rules('required', 'max:255'),

            Text::make('Email')
                ->sortable()
                ->rules('required', 'email', 'max:254')
                ->creationRules('unique:users,email')
                ->updateRules('unique:users,email,{{resourceId}}'),

            Password::make('Password')
                ->onlyOnForms()
                ->creationRules('required', 'string', 'min:6')
                ->updateRules('nullable', 'string', 'min:6'),

            // Add NestedForm here.
            NestedForm::make('Posts'),
        ];
    }

Choose when to display the form

For instance, if the nested form should only be available if the value of the "has_comments" attirbute is true, you can use:

class Post extends Resource
{
    ...
    public function fields(Request $request)
    {
        return [
            Boolean::make('Has Comments'),
            NestedForm::make('Comments')->displayIf(function ($nestedForm, $request) {
               return [
                    [ 'attribute' => 'has_comments', 'is' => true ]
               ];
        ];
    }
})

The displayIf method is excepted to return an array of array as you may want to add several conditions.

class Post extends Resource
{
    ...
    public function fields(Request $request)
    {
        return [
            Boolean::make('Has Comments'),
            Text::make('Title'),
            Text::make('Subtitle')->nullable(),
            Number::make('Number of comments allowed'),
            NestedForm::make('Comments')->displayIf(function ($nestedForm, $request) {
                return [
                    [ 'attribute' => 'has_comments', 'is' => true ],
                    [ 'attribute' => 'title', 'isNotNull' => true ],
                    [ 'attribute' => 'subtitle', 'isNull' => true ],
                    [ 'attribute' => 'title', 'includes' => 'My' ],
                    [ 'attribute' => 'number_of_comments_allowed', 'moreThanOrEqual' => 1 ],

                    // Integration for nova booleanGroup field
                    [ 'attribute' => 'my_multiple_checkbox', 'booleanGroup' => 'the_checkbox_key_to_target' ],
                ];
            })
        ];
    }
}

The package will then add those conditions and dynamically update your form as you fill the fields. The available rules are:

  • is
  • isNot
  • isNull
  • isNotNull
  • isMoreThan
  • isMoreThanOrEqual
  • isLessThan
  • isLessThanOrEqual
  • includes
  • booleanGroup

Add a minimum or a maximum number of children

For instance, if you want every user to have at least 3 posts and at most 5 posts, simply use:

NestedForm::make('Posts')->min(3)->max(5),

Please note that the package automatically detects whether the relationship excepts many children or a single child, and sets the maximum value accordingly.

When creating a new user, 3 blank posts will be displayed. If you reach the maximum number of posts, the "Add a new post" button will disappear.

Set the default open/collapse behavior

If you want the nested forms to be opened by default, simply use:

NestedForm::make('Posts')->open(true),

Modify the default heading

You can modify the default heading using the heading() method. You can use the helper method wrapIndex() to add the current child index to your header.

NestedForm::make('Posts')->heading(NestedForm::wrapIndex() . ' // Post'),

You can also add any attribute of the current child into your heading using the helper method wrapAttribute().

NestedForm::make('Posts')->heading(NestedForm::wrapIndex() . ' // ' . NestedForm::wrapAttribute('title', 'My default title')),

Modify the index separator

You can modify the default index separator using the separator() method when you have nested forms (e.g. 1. Post, 1.1. Comment, 1.1.1. Like).

NestedForm::make('Posts')->separator('\'),

laravel-nova-nested-form's People

Contributors

303k avatar alberto-bottarini avatar andriipalko avatar atmonshi avatar dependabot[bot] avatar duckzland avatar gazben avatar jangidgirish avatar jeffreydevreede avatar joseballester avatar maxkorlaar avatar noahnxt avatar pindab0ter avatar thibauddauce avatar yassilah avatar zippoxer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

laravel-nova-nested-form's Issues

No query results for model [App\Models\...]

Hi,

I'm using Laravel 5.8, Nova 2.0 and already in the dev-laravel-5.8 branch.

In my ProductSet model, there is a hasMany relation to ProductPrices. It works fine when loading all the prices, however when I save I get an error below:

No query results for model [App\Models\ProductSet]

Screenshot 2019-04-30 at 12 06 57

BelongsTo field throws "Trying to get property of non-object" error.

I've been working on implementing this in a new project I'm working on and so far it's been great! However, I'm running in an issue when trying to add a nested form which uses a BelongsTo field.

The specific error I'm getting is happening happening within the index function of laravel/nova/src/Http/Controllers/AssociatableController.php, specifically at line 23. As far as I can tell, the $field variable is returning null because the Nova isn't able to find the resource.

I've been digging around a bit and I believe the issue is being cause by an incorrectly formatted API call to the /nova-api/RESOURCE/associatable endpoint. When I load the resource through a nested form, it tries to call the API at /nova-api/admission-referral-informations/associatable/nested:referralInformation[county] (which throws a 500 error), but when I load the resource as a standard Nova relationship field, it calls the API at /nova-api/admission-referral-informations/associatable/county (which works).

So basically the nested form uses nested:referralInformation[county] in the URL, when it should actually just be using county. I'll keep digging around to see if I can fix it on my own, but please let me know if you have a better idea of what's going on/if you need more info.

Thanks!

Nest second time?

Hi, first of all great package! I was wondering is there a posibility for nesting a second time? like
NestedForm::make('Posts.Tags'), and the tags to appear below each post?

Cheers

Relations deleted when updating model in same request

When the model is updated in the same request as it is created, for example when using Events and having queue_driver = sync.

This comes from the fact that fillAttributeFromRequest is ran more than twice. (First time aattaching a ::saved event, second after the model is savedand thereforeremoveUntouched` is also ran twice.

You can replicate this by attaching the following code to a model used in a nestedform:

    protected static function boot()
    {
        parent::boot();
        static::saved(function($model) {
            $model->update(['created_at' => now()]);
        });
    }

issue to use the package

After install the package, I have problems with add the NestedFormTrait to App\Nova\Resource class.
image
image

Validation isn't showing

When a the form has invalid data I see in the console that errors have been returned.
Errors on the regular fields are shown but the errors on the NestedForms aren't shown.

I'm running Nova v1.3.2 and Nova Nested Form v2.0.2

Issues with MorphMany relationships

I've got a notes model that uses MorphMany so I can add notes to multiple resources. In Nova I've hidden the notes resource from the sidebar (because it doesn't make sense to make a note without going to the resource you intend to make a note for), so all note management is done via MorphMany fields.

When attempting to create a new resource (for example, details of an item we've purchased), I can't add a note to the resource using the NestedForm field, because:

errors: {notes[notable_type]: ["The notable type field is required."]} (notable being the morphTo relation in my model, so notable_type would be something like App\PurchasedItem). If I remove the note, I can save the new asset just fine.

If I create a new note using Laravel's MorphMany field (that is, view the details of a PurchasedItem, click the button to create a note, and add one), the note adds fine, but I can't edit the resource. Trying to do so gives me this toast error:

Call to member function buildMorphableQuery() on null

Any clues regarding this?

Validation isn't showing (hasMany relationship)

Morning mate,
as for this one
I'm not able to see the validation error messages when I try to create the model without respecting the rules.

Resource:
NestedForm::make('HasManyRelation')->rules('required', 'min:1')->open(true)

Error in console:
{"message":"The given data was invalid.","errors":{"hasmanyrelation":["The hasmanyrelation field is required."]}}

HasMany relation not saving

The foreign key value is not setup on save new item or on update(add new item), i have tested with HasMany Nova field, but it's not working with NetstedForm field
Resource
image

Model
image

Error on save / update
image

Conditional nested forms

Hello,

First of all nice package!
I was wondering if conditional nested forms will be implemented soon? It's something that I really need because I have a model (Animal Status) with a morphTo relationship (to Reserved, Adopted etc.) and it would be nice if the user could select and create the morphTo relation inside the Animal Status resource.

Proposal: when deleting a model also delete its childrens

First of all kudos to you for this plugin, it definitely does the work and helped me a lot! ๐ŸŽ‰

While making some tests I noticed that when I delete a Model from the index its children aren't deleted as well.
I was thinking about adding a method to actually "bind" the children to the parent model and create a weak relation.

E.g. NestedForm::make('Children')->weakRealtion()

Doing so would allow us to delete all the children of a model upon deletion

What you think about this @yassipad ?

Show by default and limit min/max

I have the following user story:

A member can have zero or many memberships. When creating a new member 99% of the time they will only ever get assigned one membership.

It would be amazing if for a nested form field:

  • We could choose expanded or collapsed by default
  • We could choose the number of rows to display
  • Minimum number of rows allowed
  • Max number of rows allowed
  • Disable the add more button (globally or also if we hit the maximum number of rows after clicking add)
  • If the number of rows is restricted (e.g. shows 1 and always only 1 row) but isn't filled in it is ignored when creating the model. (Would be useful if you want to add it later but don't want to make the user click delete button)

Argument 1 passed to Yassi\\NestedForm\\NestedForm::runNestedOperation() must be of the type array, object given, called in /var/www/app/vendor/yassi/nova-nested-form/src/Traits/FillsSubAttributes.php on line 217

            NestedForm::make('Files')
                ->min(1)
                ->max(1)
                ->open(true)
                ->rules('required'),
    public function files() {
        return $this->morphMany('App\File', 'fileable');
    }

image

{
    "message": "Argument 1 passed to Yassi\\NestedForm\\NestedForm::runNestedOperation() must be of the type array, object given, called in /var/www/app/vendor/yassi/nova-nested-form/src/Traits/FillsSubAttributes.php on line 217",
    "exception": "Symfony\\Component\\Debug\\Exception\\FatalThrowableError",
    "file": "/var/www/app/vendor/yassi/nova-nested-form/src/Traits/FillsSubAttributes.php",
    "line": 246,
    "trace": [
        {
            "file": "/var/www/app/vendor/yassi/nova-nested-form/src/Traits/FillsSubAttributes.php",
            "line": 217,
            "function": "runNestedOperation",
            "class": "Yassi\\NestedForm\\NestedForm",
            "type": "->"
        },
        {
            "file": "/var/www/app/vendor/yassi/nova-nested-form/src/Traits/FillsSubAttributes.php",
            "line": 62,
            "function": "runNestedOperations",
            "class": "Yassi\\NestedForm\\NestedForm",
            "type": "->"
        },
        {
            "file": "/var/www/app/vendor/yassi/nova-nested-form/src/Traits/FillsSubAttributes.php",
            "line": 73,
            "function": "fillAttributeFromRequest",
            "class": "Yassi\\NestedForm\\NestedForm",
            "type": "->"
        },

Nova 2.0 BadMethodCallException

Hi , I am getting the message:
"Call to undefined method Illuminate\Database\Eloquent\Relations\BelongsTo::getForeignKey()"

this happens after updating to nova 2.0 .

this my code :

use Yassi\NestedForm\NestedForm;

NestedForm::make('All Prices', 'prices', ServicesPrices::class)
                ->min(1)
                ->open(true)
                ->heading('price for : {{index}} - {{price}} $')
                ->separator('-'),

any advice ?

[Bug] - Delete row

I want to delete some row, but always delete last row instead. Look at my ss below (before delete)

image

This is ss after delete,,
image

Second level nest not associated with parent

I have something similar to this setup with a Customer, Account, and User resources.

Customer:

// ...
 NestedForm::make('Accounts')
                ->hideWhenUpdating()
                ->open(true)
                ->heading('{{index}} Account')
// ... 

Account:

// ...
NestedForm::make('Users')
                ->hideWhenUpdating()
                ->heading('{{index}} User')
// ...

Customer is a oneToMany relationship with Accounts and Accounts is a ManyToMany relationship with Users. I'm able to create all three in the Customer form and the Account is associated with the Customer. But the User is not associated with the Account. Is this setup possible?

Also UI bug (maybe?), when I add a new user which has an index of 1.1, the form is collapsed no matter what I set for NestedForm::make('Users')->open()

Translation issue

Hi, i am having trouble with the translations.

Let's say my resource is "Post". Which key should i add to my /resources/lang/en/assets.php

Thanks!

hide BelongsTo from children

The problem is:
we creating parent model with children resources, children resource has belongsTo to parent model to better navigation in admin panel, so with nested field we must choose parent model in nested field while creating parent model, obviously it's not created yet and we cant create child nested model. In case if we didn't select parent model it shows error because it's required if we have belongsTo relation in resource.

it works only if we remove belongsTo from children model to parent, i think need to hide it in nested field

Nested relations asks for required fields of parent

Hi,

I'm using Laravel 5.8 (so also the 5.8 branch of this package). It seems like I cannot get this nova package to work.

This is my question model, including the nested answer model:
screencapture-127-0-0-1-nova-resources-questions-13-edit-2019-03-31-15_55_47

Every time on validation I get:
Capture

This is my Nova/Question

<?php

namespace App\Nova;

use Laravel\Nova\Fields\ID;
use Illuminate\Http\Request;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Fields\BelongsTo;
use Laravel\Nova\Fields\HasMany;
use Laravel\Nova\Fields\Select;
use Jackabox\DuplicateField\DuplicateField;
use Yassi\NestedForm\NestedForm;

class Question extends Resource
{
    /**
     * The model the resource corresponds to.
     *
     * @var string
     */
    public static $model = 'App\Question';

    /**
     * The single value that should be used to represent the resource when being displayed.
     *
     * @var string
     */
    public static $title = 'title';

    /**
     * The columns that should be searched.
     *
     * @var array
     */
    public static $search = [
        'id', 'title', 'description', 'own_web_id',
    ];

    /**
     * Get the fields displayed by the resource.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return array
     */
    public function fields(Request $request)
    {
        return [
            ID::make()->sortable(),

            Select::make('type')->options([
                '0' => 'Multiple choice',
                '1' => 'Open',
            ])
            ->displayUsingLabels()
            ->sortable()
            ->rules('required'),

            Select::make('status')->options([
                '0' => 'Not really in use yet',
            ])
            ->displayUsingLabels()
            ->sortable()
            ->rules('required'),

            Text::make('title')
            ->sortable()
            ->rules('required', 'max:255'),

            Text::make('description')
            ->rules('required', 'max:255')
            ->hideFromIndex(),

            Text::make('thank_you')
            ->rules('required', 'max:255')
            ->hideFromIndex(),

            Text::make('own_web_id')
            ->onlyOnIndex(),

            BelongsTo::make('Campaign')
            ->rules('required'),

            BelongsTo::make('Follow up', 'follow_up_question', 'App\Nova\Question')
            ->searchable()
            ->nullable(),

            HasMany::make('Answers'),

            DuplicateField::make('Duplicate')
            ->withMeta([
                'resource' => 'questions', // resource url
                'model' => 'App\Question', // model path
                'id' => $this->id, // id of record
                'relations' => [] // an array of any relations to load (nullable).
            ]),

            NestedForm::make('Answers'),
        ];
    }

    /**
     * Get the cards available for the request.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return array
     */
    public function cards(Request $request)
    {
        return [];
    }

    /**
     * Get the filters available for the resource.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return array
     */
    public function filters(Request $request)
    {
        return [];
    }

    /**
     * Get the lenses available for the resource.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return array
     */
    public function lenses(Request $request)
    {
        return [];
    }

    /**
     * Get the actions available for the resource.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return array
     */
    public function actions(Request $request)
    {
        return [];
    }
}

So how am I able to ignore the required fields from the parent?

Issue with Trix fields in related items

Not sure when this started happening, but when updating related items that have a "Trix" field type, upon saving they are getting overwritten with values like this: "79497f58-f13b-4ca5-9e98-a32be3bb3aa9"
Looks like it might have something to do with the fact that Trix fields do something with attaching files, but I can't tell why this is happening exactly.

Add sorting to nested forms

This isn't an issue but a recommended feature. It would be very useful to add draggable sorting to nested fields. Then, if a relationship weight field exists on the nested field, it is set to the index order.

For example, if a location has many users, and users are shown nested as:

  1. Jane
  2. John
    then the index 1 would be stored for Jane in a user.location_weight field (if exists) and 2 would be stored for John. Thanks

HasMany not saving data

from user form, I like to nest the profiles form(nested), able to view the form but not saving the data. no response seen.

image
But bill is not saving

Populate relationships

Hey! I have one question. I know that by default laravel nova has ability to update fields by catching events emitted by Nova.$emit('field.attribute-value', 'random-value') but i wonder is there a way to communicate with your nested component. I mean i want to have a template which fetches data from server and then populate it in the creation form. Fill all properties and relationships? can my custom field fill relationships in your component?

Thanks in advance! Have a great day

BelongsTo / HasOne models are not created, no exception

Am I doing something wrong? When I submit, I get a error reponse (below), but the fields mapped for customer_credentials are actually belonging to customer and in telescope I can see the following exception but also a valid query that doesn't create the entry:

Exception

Type | Yassi\NestedForm\Exceptions\NestedValidationException
-- | --
Location | /home/vagrant/laravel/vendor/yassi/nova-nested-form/src/Traits/FillsSubAttributes.php:253

Query

insert into
  `customers` (
    `name`,
    `enabled`,
    `email`,
    `updated_at`,
    `created_at`
  )
values
  ("customer", 0, "name", "2019-04-04 12:45:10", "2019-04-04 12:45:10")
class Customer extends Model
{
    public function customer_credentials()
    {
        return $this->hasOne(CustomerCredentials::class);
    }
}
class CustomerCredentials extends Model
{
    public function customer() {
        return $this->belongsTo(Customer::class);
    }
}
class Customer extends Resource
{
    public function fields(Request $request)
    {
        return [
            ID::make('ID')
                ->rules('required')
                ->onlyOnDetail()
                ->sortable()
            ,
            Text::make('Name')
                ->rules('required')
                ->sortable()
            ,
            Text::make('Email')
                ->rules('required')
                ->sortable()
            ,
            NestedForm::make('Credentials', 'customer_credentials', CustomerCredentials::class)
                ->open(true)
        ];
    }
{
	"messages": "The given data was invalid.",
	"errors": {
		"customer_credentials[name]": ["The name field is required."],
		"customer_credentials[enabled]": ["The enabled field is required."],
		"customer_credentials[email]": ["The email field is required."]
	}
}

Changing the hasOne to belongsTo doesn't make a difference.

EDIT: I am also using yassi/nova-nested-form:dev-laravel-5.8

BelongsToId is not populated

When creating a new resource relationship on a 'belongs-to-field' the BelongsToId property is not set. Resulting in always having to select the correct relation. Is this expected behavior?

min(1) saves my model, but it shouldn't?

Hey I am trying to restrict the user to add at least 1 record of the nested form type.. but when i use it it just saves the model? min(1) is what i am trying. is this the right way to do it?

Feature: polymorphic relations

It would be very convenient to have such an opportunity.

Example:

class File extends Resource {

    public function fields(Request $request) {
        return [
            NestedForm::make('Fileable')->types([
                User::class,
            ])
        ];
    }
class File extends Model {

    public function fileable() {
        return $this->morphTo();
    }
class CreateFilesTable extends Migration {

    public function up() {
        Schema::create('files', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->morphs('fileable');
            $table->timestamps();
        });
    }

Many to Many

Does this package support Many to Many Relations?

just not working

when i add nested form like

NestedForm::make('Orders')

i see just 404 in devtools:

Request URL: http://host.test/nova-api/offers?search=&filters=&orderBy=&orderByDirection=desc&perPage=25&trashed=&page=1&viaResource=&viaResourceId=&viaRelationship=&relationshipType=
Request Method: GET
Status Code: 404 Not Found

if i remove nested form the url above works as it should be.

afterFill callback rises error: Call to a member function each() on array

I have used the documented afterFill callback

->afterFill(function ($request, $model, $attribute, $requestAttribute, $touched) {
    $touched->each(function ($model) {
        if ($model->wasRecentlyCreated) {
            // do something
        }
    });
})

it says: Call to a member function each() on array
I'm using Laravel 5.8 and nova 2.0.3

Seems $touched attribute is an array instead of being a collection.

Proposed UX change

I was playing around the html/css. Do you think this is a little better? I wasn't a huge fan of not using the primary color or the small size on the button.

As soon as you add a membership the notice no relationships would disappear. I just think it would be useful to have a header as the small button might be confusing to some users.

screenshot 2018-11-04 01 04 50

NovaDependencyContainer

Unfortunately it's not working with the package NovaDependencyContainer.

I use that dependency-container to show certain attributes, when something is selected in the form. But when I use NestedForms and I select something in the select-box, nothing happens.

Is there a workaround? Would be great to use both in the same Nova model.

Issues when used with other fields.

Hello @yassipad - and thank you for your hard work!:)

I'm attempting to use this to - obviously - create some relationships on the fly.

However, the relationships i'm trying to use need to be using different fields (like davidpiesse/nova-toggle for example which toggles on/off based on a previously selected values);

Now after having a look at what your package is doing -- do you think there's anyway i could make this work ?

I realise you're adding a 'nested' ID and and more attributes -- but get i can your input on this ?

Enhancement: show message for nested validations

Nova 2.0.1

            NestedForm::make('Files')
                ->min(1)
                ->max(1)
                ->open(true)
                ->rules('required'),

image

If I click Create button without add new file - validation messages don't shows.

Backend work correct:

Status Code: 422 Unprocessable Entity

{"message":"The given data was invalid.","errors":{"files":["The files field is required."]}}

But if I click Add new a File - validation message displayed:
image

Deleting nested item not working

Hey there. I seem to be unable to delete any nested item when editing a resource. It disappears, but as soon as I update the resource, it comes back.

If I am in the detail view and try to delete it through the nova relationship list it works as expected. Anyone experiencing the same?

This is the code in my nova resource (Solution). SolutionHighlights has a BelongsTo relationship with Solution.

NestedForm::make('SolutionHighlights')
                ->open(true)
                ->heading('{{index}}. {{title}}'),

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.