Code Monkey home page Code Monkey logo

multicolumnwizard's People

Contributors

amenk avatar andreasisaak avatar antoinedavid avatar aschempp avatar ausi avatar aybee avatar backbone87 avatar baumannsven avatar bytehead avatar creatingo avatar davidmaack avatar discordier avatar fritzmg avatar garyee avatar kahl-dev avatar kapalla avatar lindesbs avatar may17 avatar mediabakery avatar menatwork-dev avatar psi-4ward avatar richardhj avatar stefanheimes avatar svenmeierhans avatar toflar avatar tristanlins avatar zonky2 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

multicolumnwizard's Issues

Copy button

If I click the copy button, all fields are cleared. Is it possible to maintain those informations ?

Thx

JS copy-HOOK

Ich bastel gerade ein AutocompleterTextfield was natürlich auch mit den MultiColumnWizard funktionieren soll.
Da ich den Autocompleter bei jeder Änderung der Zeilen neu initialisieren muss, benötige ich einen HOOK.

Neue Javascriptdatei anbei.

Die "Klasse" MultiColumnWizard definiert ein leeres Array execHOOK.

In meiner Javascript-Datei fülle ich das mit dem Callback
@MultiColumnWizard.execHOOK.push(function(){ initAutocompleterTextfields(); });@

Diese Funktion ruft der MultiColumnWizard dann nach jeder Aktion auf.

--- Originally created by Christoph Wiechert on 26.10.2011 20:43.

maxCount nicht konsequent

1.) Bei Festlegung einer maximalen Zeilenanzahl über 'maxCount' scheint bei der Befüllung des DC bis zur Zeilenanzahl(maxCount) alles in Ordnung. Nach Speicherung des DC besteht plötzlich die Möglichkeit eine weitere Zeile hinzuzufügen (maxCount+1).

2.) Versucht man nun zeilenweise zu löschen, so erscheint das PLUS-Symbol auch bei Unterschreitung des maxCount nicht mehr und ist erst nach Speicherung wieder verfügbar.

--- Originally created by André Kirchner on 13.10.2011 11:15.

Letzte Zeile nur leeren (3.0)

In der aktuellen 3.0er Version wird beim löschen der letzten Zeile nicht einfach nur der Inhalt geleert (wie es in 2.0 von Psi programmiert wurde), es wird komplett alles gelöscht. Danach ist es nicht mehr möglich neue Inhalte anzulegen, der Wizard ist einfach gelöscht.

submitOnChange fehlerhaft

Im prepareForWidget Aufruf fehlt die strTable, damit der autosubmit JS valide gefuellt werden kann.

$objWidget = new $strClass($this->prepareForWidget($arrField,$arrField['name'],$arrField['value'],'',$this->strTable));

--- Originally created by Stefan Lindecke on 29.09.2011 11:05.

Tinymce wird nicht geladen

Moin,

der TinyMCE wird leider nicht in die MCW Felder geladen. Wird dies überhaupt unterstützt?

Ausgangssitutation sind folgende 2 Screenshots:

http://www.borowiakziehe.de/tl_files/mcw/code.png

http://www.borowiakziehe.de/tl_files/mcw/be.png

            $GLOBALS['TL_DCA']['tl_content']['fields']['multiSRC']['eval']['columnFields'] = array
            (
                'img' => array
                (
                        'label'                 => &$GLOBALS['TL_LANG']['tl_content']['m17GalleryPicture'],
                        'exclude'               => true,
                        'inputType'             => 'filepicker4ward',
                        'eval'                  => array('style'=>'width:180px')
                ),
                'alt' => array
                (
                        'label'                 => &$GLOBALS['TL_LANG']['tl_content']['alt'],
                        'exclude'               => true,
                        'inputType'             => 'text',
                        'eval'                  => array('style'=>'width:180px')
                ),
                'caption' => array
                (
                        'label'                 => &$GLOBALS['TL_LANG']['tl_content']['caption'],
                        'exclude'               => true,
                        'inputType'             => 'text',
                        'eval'                  => array('style'=>'width:180px')
                ),
                'href' => array
                (
                    'label'                 => &$GLOBALS['TL_LANG']['tl_content']['caption'],
                    'exclude'               => true,
                    'inputType'             => 'textarea',
                    'eval'                  => array('style'=>'width:180px', 'rte'=>'tinyMCE')
                )
            );```

callbacks gehen nicht

MultiColumnWizard.addOperationClickCallback('copy', function(){alert('a'); });
wird nicht ausgeführt, wahrscheinlich wegen operation.removeEvents('click');

Helper Funktionen funktionieren nicht

Huhu!

Die Helper-Funktionen müssten noch angepasst werden, weil die Daten nicht gleich wie bei meinem MultiSelectWizard gespeichert werden.

Das wäre z.B. die korrekte Variante für die getByKey:

    /**
     * Static helper method to get all the data from a certain key for all the rows
     * `param string
     * `param string
     * `return array
     */
    public static function getByKey($strSerialized, $strKey)
    {
        $arrData = deserialize($strSerialized, true);
        $arrReturnData = array();

        foreach($arrData as $rowKey => $rowData)
        {
            $arrReturnData[] = $rowData[$strKey];
        }

        return $arrReturnData;      
    }

Die getFilteredByKey, habe ich nicht getestet aber ich tippe mal auf:

    /**
     * Static helper method to get all the data from a certain key for all the rows that match a certain other row key
     * `param string
     * `param string
     * `param array
     * @return array
     */
    public static function getFilteredByKey($strSerialized, $strKey, $arrConditions)
    {
        $arrData = deserialize($strSerialized);
        $intCountConditions = count($arrConditions);

        $arrReturnData = array();

        foreach($arrData as $rowKey => $rowData)
        {
            $intMeetCondition = 0;

            // check data for every filter
            foreach($arrConditions as $column => $value)
            {
                if($rowData[$column] == $value)
                {
                    $intMeetCondition++;
                }
            }

            // check if the value meets ALL conditions (AND condition)
            if($intMeetCondition == $intCountConditions)
            {
                $arrReturnData[] = $rowData[$strKey];
            }
        }

        return $arrReturnData;                
    }

--- Originally created by Yanick Witschi on 07.09.2011 20:55.

Datumsfelder werden nicht richtig übernommen

Heyho,

ich versuche derzeit über save_callback die Eingabe im mcw in eine andere Tabelle zu schreiben und per load_callback beim Aufruf wieder einzutragen. Das wegschreiben klappt, nur beim Laden des Datumsangaben bekomme ich falsche Werte.

Mein save_callback:

    public function saveDates($varValue, DataContainer $dc){

      $varValue = deserialize($varValue,true);          

      //delete all dates from event-id
      $this->Database->prepare('DELETE FROM tl_ser_eventdates WHERE pid=?')->execute($dc->id);

      foreach($varValue as $value)
      {              
          $this->Database->prepare('INSERT INTO tl_ser_eventdates SET tstamp=?, pid=?, startdate=?')->execute(time(),$dc->id,$value['startdate']);              
      }

      return '';

    }

Mein load_callback:

    public function loadDates($varValue, DataContainer $dc)
    {
        $objDates = $this->Database->prepare('SELECT * FROM tl_ser_eventdates WHERE pid=?')->execute($dc->id);
        return $objDates->fetchEach('startdate');
    }

Mein field:

    'datetime' => array
    (
        'label'                   => &$GLOBALS['TL_LANG']['tl_ser_events']['datetime'],
        'exclude'                 => true,
        'inputType'               => 'multiColumnWizard',
        'save_callback'           => array(array('tl_ser_events', 'saveDates')),
        'load_callback'           => array(array('tl_ser_events', 'loadDates')),
        'eval'                    => array
                        (
                        'buttons'             => array('up' => false, 'down' => false),
                        'doNotSaveEmpty'      => true,
                        'columnFields'        => array                                
                            (                                
                            'startdate'       => array
                                (
                                'label'       => &$GLOBALS['TL_LANG']['tl_ser_events']['startdate'],
                                'exclude'     => true,
                                'inputType'   => 'text',
                                'eval'        => array('mandatory'=>true, 'maxlength'=>10, 'tl_class' => 'w50 wizard', 'rgxp'=>'date', 'doNotCopy'=>true, 'datepicker'=>true)
                                )
                            )
                        )
    )

In meiner db ist die spalte startdate ein int(10) und dort steht auch der timestamp drin, also z.B. 1338336000. Rufe ich aber die Seite auf, so wird im Eingabefeld des mcw nur 01-01-1970 eingetragen.

An welcher Stelle habe ich einen Fehler?

Danke :-)

VG
Patrick [codepiX]

Wizard funktioniert im FF nicht

Irgendwie fehlt das preventDefault() oder sowas. Beim Firefox (Chrome geht witzigerweise) werde ich beim Klick aufs "+" auf den entsprechenden Link weitergeleitet und krieg dann n 404 Not Found.

Kann das jemand bestätigen? Den Fehler konnte ich aber nicht finden, deshalb mach ich mal n Issue und hoffe auf Hilfe :S

Copy / Neue Zeile in FF 10.0.2 funktioniert nicht

Beim ersten Klick auf copy (Reihe kopieren) lädt die Maske neu und alle Feldwerte eingaben im mulitColumnWizard werden
gelöscht. Es wird keine neue Reihe angelegt.
Erst beim 2. Click wird eine neue Reihe angelegt, aber Eingaben werden wieder alle gelöscht.
Dieses verhalten zeigt sich nur im Firefox. IE und Chrome funktionieren einwandfrei.

Neue-Zeile Button

Wäre schön wenn man einen "neue Zeile" Button hätte um nicht jedesmal die Inhalte löschen zu müssen.

Style Definition für Wizard wird nicht übernommen

Im eval-Array für das Feld können Styles angegeben werden:

    'inputType'                 => 'multiColumnWizard',
    'eval'      => array
    (
        'style'=>'width:100%;', ................................

Diese werden aber nicht übernommen: siehe Zeile 244 in MultiColumnWizard

Kann folgendermaßen gelöst werden:

    $style = '';
    if (strlen($this->style)) {
        $style = ' style="' . $this->style . '"';
    }

    $return .= '<table cellspacing="0" ' . $style . 'rel="maxCount....................

--- Originally created by Cliff Parnitzky on 11.08.2011 11:38.

Gruppierung von Elementen

Moin,

entweder ich hab das mit der Gruppierung nicht verstanden oder es ist ein Fehler.

Ich habe 10 Elemente und möchte diese in zwei spalten jeweils aufbauen. Hierfür wäre die Gruppierung geeignet da die Labels dadurch überhalb der Inputfelder stehen und nicht im table head.

Jetzt kommt bei einigen die Frage warum ich das überhaupt will? Ganz einfach ich hab einen Slider gebaut und will die config in einem blob speichern. Wenn ich die Buttons des MultiColumnWizard deaktiviere klappt das auch ganz gut.

Nun zu dem Problem. Gruppiere ich nun 2 elemente jeweils mit row_1, row_2 usw. wird nur das erste label ausgegeben. Die anderen sind leer.

Ich möchte nicht ausschließen das mein Ansatz hier der falsche ist und es sich um einen Benutzerfehler handelt. Falls das so ist, wäre es schön wenn man die Option hätte die labels entweder im table head oder überhalb der Felder auszugeben.

vg joe

select-felder lassen sich nach kopieren nicht verändern

Hallo,

leider lassen sich select-felder nach dem kopieren nicht mehr verändern. Erst wenn man einmal zwischen speichert, kann der Wert wieder verändert werden.

Mein select wird mit einem options_callback aus der DB befüllt, mit einem save_callback in eine andere Tabelle geschrieben und mit einem load_callback wird das mcw wieder geschrieben.

VG
Patrick

Verwendung von foreinKey bei SELECT wirft Fehler

Verwendung von foreinKey bei SELECT wirft Fehler

Fatal error: Call to a member function execute() on a non-object in /DATA/webroot/contao210/system/modules/multicolumnwizard/MultiColumnWizard.php on line 487

Da fehlt ein $this->import('Database');

DCA:

        'alerts' => array
        (
            'label'                   => array('Benachrichtigungen','Hier können Sie Benachrichtigungen definieren.'),
            'inputType'               => 'multiColumnWizard',
            'eval'                    => array
            (
                'style'=>'width:100%;',
                'columnsData' => array
                (
                    'action' => array
                    (
                        'label'                   => array('Action'),
                        'inputType'               => 'select',
                        'options'                 => array('TIMEOUT')
                    ),
                    'cycles' => array
                    (
                        'label'                   => array('within Cycles'),
                        'inputType'               => 'text',
                        'eval'                    => array('style'=>'width:80px;')
                    ),
                    'alert' => array
                    (
                        'label'                   => array('Notification'),
                        'inputType'               => 'select',
                        'foreignKey'              => 'tl_moni4ward_alert.title'
                    )
                )
            )
        )

--- Originally created by Christoph Wiechert on 10.08.2011 21:40.

FB::log() existiert nicht

Im Extension Repository ist eine Version welche auf Zeile 223 den erwähnten Befehl enthält. Den gibt's aber nicht...

--- Originally created by Andreas Schempp on 10.08.2011 16:00.

save_callback in columnFields funktioniert nicht

Die save_callback-Funktionalität zeigt innerhalb der columnFields keine Funktionalität. Zum einen werden weder der aktuelle Wert, noch der DataContainer übergeben, noch nimmt das Feld den Ergebniswert einer save_callback-Funktion an. Eine automatisierte Befüllung von columnFields ist daher nicht möglich.

Getestet mit:
`
'parent_feld' => array
(
'label' => &$GLOBALS['TL_LANG']['tabelle']['parent_feld'],
'exclude' => true,
'inputType' => 'multiColumnWizard',
'eval' => array
(
'maxCount' => 3,
'columnFields' => array
(
'child_feld' => array
(
'label' => &$GLOBALS['TL_LANG']['tabelle']['child_feld'],
'exclude' => true,
'inputType' => 'text',
'save_callback' => array(array('klasse','funktion_01'))
)
}
}
}

class klasse extends Backend
{
public function funktion_01($strValue,DataContainer $dc)
{
return time();
}
}
`

--- Originally created by André Kirchner on 20.09.2011 13:46.

Support für Spaltenbeschreibung

Bisher wird für die einzelnen Spalten nur der Titel verwendet, die Beschreibung aber ignoriert.

$GLOBALS['TL_LANG']['tl_irgendwas']['spalte'] = array('Ich bin der Spaltentitel', 'Ich bin die Beschreibung');

Das 2. Feld in der Sprachvariable wird komplett ignoriert.
Sinnvoll wäre vermutlich, das 2. Feld als Title-Attribut zu übernehmen.

<span title="Ich bin die Beschreibung">Ich bin der Spaltentitel</span>

Alternativ könnte auch ein kleines Fragezeichen (als Grafik) noch dahinter stehen, damit man sieht, aha, da gibt es noch mehr Informationen.

<span title="Ich bin die Beschreibung">Ich bin der Spaltentitel<sup>(?)</sup></span>

Oft muss oder möchte ich die einzelnen Spalten beschreiben und schreibe es dann in die Allgemeine Beschreibung für den Wizard, da muss man dann aber immer so viel lesen, weil die Beschreibung dann natürlich aufgebläht wird.

Use keyboard shortcut to copy a row

It would be very convenient if I can use a keyboard shortcut, for example Ctrl + Shift + Arrow down, for creating a new row copy.
For now this operation is only availiable with a mouse.

uploadable Interface für Widgets die selbiges implementieren

Hallo,

ich baue gerade für einen Kunden eine Erweiterung in der ich auf den MultiColumnWizard zurückgreife.
Dieser benötigt die Möglichkeit schnell und unkompliziert zu einem Datensatz viele Bilder erfassen zu können,
daher habe ich mir ein "normales" File-Upload Widget gebastelt und dieses in den MCW eingebunden.

Leider sind der DataContainer.php ja nicht bekannt welche Widgets im MCW enthalten sind
und somit setzt diese das Backend-Formular nicht auf den enctype "multipart/form-data" da der MCW
nicht das uploadable Interface implementiert.

Wäre es möglich dies für künftige Versionen standardmäßig zu implementieren damit solche
Erweiterung auch Update-Safe wärenß Denn aktuell muss ich natürlich den MCW modifizieren.

--- Originally created by Benny Born on 29.11.2011 12:36.

Integration in Contao 3?

Ich habe da eine ganz andere Frage: Könnte man MultiColumnWizard von dir aus in den Contao 3 Core integrieren? Wenn ja, dann frage ich mal Leo an, denn die Erweiterung ist für Entwickler sehr nützlich und sollte meines erachtens in den Core.

Assoc arrays und interne array Sortierung

Wer gut, wenn man dem MCW auch assoziative Arrays geben könnte (geht zur Zeit nicht) und die Sortierung nicht über die Indexe sondern über die interne Array Sortierung bewerkstelligt wird:

$a = array();
$a[1] = "blub";
$a[0] = "bla";

Solange einem die Keys egal sind, spielt das keine Rolle, aber kommen wir zum Kern des Tickets:
Die Möglichkeit ein Feld des MCWs als Schlüssel zu definieren:
Bei folgendem MCW Layout:
Wert (val) | Label (label) | Standard (default)

Könnte man dann val gleich als Key definieren und anstatt folgendem Beispieleingabe:

$a = array(
  array(
    "val" => "v1",
    "label" => "label1",
    "default" => 1
  ),
  array(
    "val" => "v2",
    "label" => "label2",
    "default" => ""
  )
);

bekommt man direkt

$a = array(
  "v1" => array(
    "label" => "label1",
    "default" => 1
  ),
  "v2" => array(
    "label" => "label2",
    "default" => ""
  )
);

Exception with DB access on "virtual" fields

Das Widget versucht in die Datenbank zu schreiben, was bei "virtuellen" Feldern (die via save_callback immer "null" zurückgeben) einen Fehler verursacht. Das ist nur der Fall, wenn kein JS beim Hinzufügen/Löschen/Sortieren verwendet wird.

Don't output empty cell in table headers if columnPos option is set

At line 358 of MultiColumnWizard.php file we have:

            elseif ($arrField['eval']['columnPos'])
            {
                $arrHeaderItems[$arrField['eval']['columnPos']] = '<td></td>';
            }

As I understand, if we use columnPos for field it will not be showing in table in it's own column. But, as you can see from code, empty cell shows in header.

So, next code should be like this:

            elseif ($arrField['eval']['columnPos'])
            {
                $arrHeaderItems[$arrField['eval']['columnPos']] = '';
            }

validator Funktion fehlt

in der nochmal durch die Fields gegangen wird, damit deren validitaet kontrolliert wird.

--- Originally created by Stefan Lindecke on 04.08.2011 20:07.

ForeignKey-Definition als "source"

Die Version 1.0.0 erwartet einen Schlüssel "source", welche dieselbe Funktion wie ein "foreignKey" in Contao hat. Warum benennt ihr den nicht gleich soß

--- Originally created by Andreas Schempp on 10.08.2011 16:02.

Problem mit numerischen Spaltennamen

Ich verwende in meinem MultiColumnWizard keine Namen für die Spalten.

                'columnFields'          => array
                (
                    array
                    (
                        'label'         => &$GLOBALS['TL_LANG']['xxx']['technical_data_0'],
                        'inputType'     => 'text',
                        'eval'          => array('style'=>'width:120px'),
                    ),
                    array
                    (
                        'label'         => &$GLOBALS['TL_LANG']['xxx']['technical_data_1'],
...

Lösung:

        changeNamerecursive: function(arrEl, first, level)
        {
            arrEl.each(function(el){
                if (el.name 

![](= undefined && el.name )= null && el.name 

![](= '' ){
                    var name = el.name.substring(0, el.name.indexOf('['));
                    el.name = el.name.replace(new RegExp(name+'\[[0-9]+\]', 'ig'), name+'[' + level + ']');
                }
                if (el.getProperty('for') )= undefined && el.getProperty('for') 

![](= null && el.getProperty('for') )= '' ){
                    var name = el.getProperty('for').substring(0, el.getProperty('for').indexOf('['));
                    el.setProperty('for', el.getProperty('for').replace(new RegExp(name+'\[[0-9]+\]', 'ig'), name+'[' + level + ']'));
                }
                if (first.id 

![](= undefined && first.id )= null && first.id != '' ){
                    var name = first.id.substring(0, first.id.indexOf('['));
                    el.id = first.id.replace(new RegExp(name+'\[[0-9]+\]', 'ig'), name+'[' + level + ']');
                }

                if (el.getChildren().length > 0)
                    MultiSelect.changeNamerecursive(el.getChildren(), first, level);

            })
        },

--- Originally created by Andreas Schempp on 21.09.2011 10:39.

Anbindung an catalog

Als eigenstaendiger CatalogFieldType

--- Originally created by Stefan Lindecke on 05.08.2011 06:49.

Javascript Fehler bei verschachtelten MCW Elementen

Moin,

hab gerade festgestellt das wenn man mcw Elemente verschachtelt, die Buttons des ersten Elements nicht mehr via Javascript reagieren. Die Debugger Console gibt folgendes zurück:

Uncaught TypeError: Cannot call method 'getElements' of null multicolumnwizard_be.js:1

Habe das ganze gefixed und stelle es gleich als Pull Request zur Verfügung.

Folgenden DCA Code habe ich dafür verwendet:

$GLOBALS['TL_DCA']['tl_content']['fields']['testcase'] => array
        (
            'label'         => &$GLOBALS['TL_LANG']['tl_theme']['templateSelection'],
            'exclude'       => true,
            'inputType'         => 'multiColumnWizard',
            'eval'          => array
            (
                'columnFields' => array
                (
                    'ts_client_os' => array
                    (
                        'label'                 => &$GLOBALS['TL_LANG']['tl_theme']['ts_client_os'],
                        'exclude'               => true,
                        'inputType'             => 'select',
                        'options'               => array
                        (
                            'option1'       => 'Option 1',
                            'option2'       => 'Option 2',
                        ),
                        'eval'          => array('style' => 'width:250px', 'includeBlankOption'=>true)
                    ),
                    'ts_client_browser' => array
                    (
                        'label'                 => &$GLOBALS['TL_LANG']['tl_theme']['ts_client_browser'],
                        'exclude'               => true,
                        'inputType'             => 'multiColumnWizard',
                        'eval'          => array('columnFields'=>array(
                            'test' => array
                                        (
                                            'label'                 => &$GLOBALS['TL_LANG']['tl_theme']['test'],
                                            'exclude'               => true,
                                            'inputType'             => 'text',
                                            'eval'          => array('style'=>'width:180px')
                                        ),
                            )
                        )
                    ),
                )
            )
        );

Datepicker geht nicht

MCW: 3.0.0
Contao: 2.11.2

Wenn man ein Datum im Datepicker anklickt wird dieses nicht ins Textfeld übernommen

function generateDiv: $arrItem statt $arrItems ?

Zeile 863, die Variable $arrItem ist nicht definiert in der foreach Schleife.
Vermutlich soll es $arrItems heißen wie der letzte Übergabeparamerter?

als so:

foreach ($arrItems as $itemKey => $itemValue)

Ajax-Reload für Bedingungen

Wenn man dem Widget "'submitOnChange'=>true" gibt, wird die Seite neu geladen und man kann so mittels Callbacks die Spalten von anderen abhängig machen.
Es wäre schick, wenn dafür nicht die ganze Seite geladen werden müsste, sondern der MultiColumnWizard irgend einen Reload mittels Ajax unterstützen würde.

--- Originally created by Yanick Witschi on 17.08.2011 14:34.

eval mit mutliple

Damit man entscheiden kann, ob man eine dynamische Liste oder nur ein einzelnes Element hat.

wenn multiple im eval-Field false ist, dann kommen auch keine ActionButtons

--- Originally created by Stefan Lindecke on 04.08.2011 11:28.

pagePicker funktioniert nicht mehr

Mit der aktuellen Git-Version funktioniert der pagePicker nicht mehr.

<img width="16" height="21" onclick="Backend.pickPage('ctrl_')" style="vertical-align:top; cursor:pointer;" alt="Seitenwähler (benötigt JavaScript)" src="system/themes/default/images/pickpage.gif">

Das "ctrl_" ist wieder leer.

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.