2017 © Pedro Peláez
 

library utility

Riesenia Utility Classes

image

riesenia/utility

Riesenia Utility Classes

  • Sunday, July 22, 2018
  • by riesenia
  • Repository
  • 1 Watchers
  • 3 Stars
  • 1,414 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 4 Forks
  • 0 Open issues
  • 41 Versions
  • 20 % Grown

The README.md

Riesenia Utility Classes

Build Status Latest Version Total Downloads Software License, (*1)

This library provides a range of utility classes., (*2)

Installation

Install the latest version using composer require riesenia/utility, (*3)

Or add to your composer.json file as a requirement:, (*4)

{
    "require": {
        "riesenia/utility": "~3.0"
    }
}

Note: if you use PHP 5.4 - 5.6 use 1.* version of this library., (*5)

Kendo

Helpers simplifying usage of Kendo UI components., (*6)

Table

use Riesenia\Utility\Kendo\Table;

$table = Table::create('myTableId');

// datasource can be accessed directly
$table->dataSource->addTransport('read', ['dataType' => 'json', 'url' => 'URL']);

// ... but addTransport can also be called directly on the table object
$table->addTransport('update', ['dataType' => 'json', 'url' => 'URL']);

// columns can have various types and additional options can be set
$table->addColumn('name', 'Product name')
    ->addColumn('price', 'Product price', 'price', ['class' => 'green'])
    ->addColumn('active', 'Is active?', 'checkbox')
    ->addColumn('stock', 'Stock', 'number');

// checkboxes for batch operations can be added
$table->addCheckboxes();

// class for table row can be added using 'addRowClass' method
$table->addRowClass('#: active ? "active" : "not-active" #');

// additional model options can be set using 'model' key
$table->addColumn('name', 'Product name', null, ['model' => ['editable' => false]]);

// you can use any custom column rendering class
// as long as it extends Riesenia\Utility\Kendo\Table\Column\Base
$table->addColumn('custom_field', 'Title', '\\Custom\\Rendering\\Class');

// link is built-in option
$table->addColumn('...', '...', '...', ['link' => 'URL']);

// any link attributes can be set
$table->addColumn('...', '...', '...', ['link' => ['href' => 'URL', 'title' => 'TITLE']]);

// the whole template can be overridden
$table->addColumn('...', '...', '...', ['template' => '# if (field) { # yes # } else { # no # } #']);

// it is possible to hide columns under certain table width
$table->addColumn('...', '...', '...', ['display' => 700]);

// actions are usually icons with links
// icons are bootstrap classes without glyphicon prefix
$table->addAction(null, [
    'icon' => 'music',
    'link' => 'URL',
    'title' => 'Play!'
]);

// or predifined edit or delete operation
$table->addAction('delete');

// you can use any custom column action class
// as long as it extends Riesenia\Utility\Kendo\Table\Action\Base
$table->addAction('\\Custom\\Action\\Class');

// generally used classes can be aliased, so previous example is equivalent to
Table::alias('alias_name', '\\Custom\\Action\\Class');
$table->addAction('alias_name');

// condition is built-in option
$table->addAction('...', ['condition' => 'count > 0']);

// set text for no results (will be added as first colspaned row)
$table->setNoResults('NO RESULTS!');

// html element (div)
echo $table;

// generated javascript
echo '';

Tree

use Riesenia\Utility\Kendo\Tree;

$tree = Tree::create('myTreeId');

// datasource can be accessed directly
$tree->dataSource->addTransport('read', ['dataType' => 'json', 'url' => 'URL']);

// ... but addTransport can also be called directly on the tree object
$tree->addTransport('delete', ['dataType' => 'json', 'url' => 'URL']);

// add hasChildren field (to allow tree expanding), default field name is 'hasChildren'
// but any field name can be passed (do not use 'children' as field name)
$tree->hasChildren();

// html element (div)
echo $tree;

// generated javascript
echo '';

Window

use Riesenia\Utility\Kendo\Window;

$window = Window::create('myWindowId');

// html element (div)
echo $window;

// generated javascript
echo '';

// method for opening window is automatically defined
echo '';

Tabber

use Riesenia\Utility\Kendo\Tabber;

$tabber = Tabber::create('myTabberId');

// adding remote tab
$tabber->addRemoteTab('First tab', 'URL');

// active tab is set using third parameter
$tabber->addRemoteTab('Second tab', 'URL', true);

// html element (div & ul)
echo $tabber;

// generated javascript
echo '';

Upload

use Riesenia\Utility\Kendo\Upload;

$upload = Upload::create('myUploadId');

// optionally set any attribute of the input
$upload->addAttribute('name', 'NAME');

// html element (input type file)
echo $upload;

// generated javascript
echo '';

Select

use Riesenia\Utility\Kendo\Select;

$select = Select::create('mySelectId');

// datasource can be accessed directly
$select->dataSource->addTransport('read', ['dataType' => 'json', 'url' => 'URL']);

// ... but addTransport can also be called directly on the select object
$select->addTransport('read', ['dataType' => 'json', 'url' => 'URL']);

// optionally set any attribute of the input
$select->addAttribute('name', 'NAME');

// html element (input)
echo $select;

// generated javascript
echo '';

ListView

use Riesenia\Utility\Kendo\ListView;

$listView = ListView::create('myListViewId');

// datasource can be accessed directly
$listView->dataSource->addTransport('read', ['dataType' => 'json', 'url' => 'URL']);

// ... but addTransport can also be called directly on the listView object
$listView->addTransport('destroy', ['dataType' => 'json', 'url' => 'URL']);

// template can be set by id attribute
$listView->setTemplateById('ID');

// html element (div)
echo $listView;

// generated javascript
echo '';

Date / DateTime

use Riesenia\Utility\Kendo\DateTime;

$dateTime = DateTime::create('myDateTimeId');

// range can be set between two elements (two fields with ids 'from' and 'to')
DateTime::create('from')->rangeTo('to');
DateTime::create('to')->rangeFrom('from');

// optionally set any attribute of the input
$dateTime->addAttribute('name', 'NAME');

// html element (input)
// hidden input with same name is added automatically to provide MySQL datetime format
echo $dateTime;

// generated javascript
echo '';

Traits

Various traits providing useful methods., (*7)

ParseDecimalTrait

Adds a protected _parseDecimal() method that transforms input to float replacing spaces, commas, etc., (*8)

Condition

Condition (query) parsers., (*9)

QueryEvaluator

Returns array that can be passed to CakePHP Query builder as a condition., (*10)

use Riesenia\Utility\Condition\QueryEvaluator;

// available fields and operators are defined during consstruction
$evaluator = new QueryEvaluator([
    'pid' => [
        'field' => 'id',
        'operators' => ['=', 'NOT', 'IN', 'NOTIN']
    ],
    'name' => [
        'field' => 'name',
        'operators' => ['=', 'NOT', 'CONTAINS']
    ],
    'price' => [
        'field' => 'unit_price',
        'operators' => ['>=', '>', '<', '<=']
    ]
]);

// simple conditions
$evaluator->parse('price >= 10'); // ['unit_price >=' => '10']

// use AND / OR operators
$evaluator->parse('pid IN 2, 3 AND price >= 10'); // ['AND' => [['id IN' => ['2', '3']], ['unit_price >=' => '10']]]

// use parenthesis for complex conditions
$evaluator->parse('pid IN 2, 3 AND ((price >= 10 OR name = x) OR name CONTAINS y)'); // ... see tests

// throws custom exception for incorrect query
use Riesenia\Utility\Condition\QueryEvaluatorException;

try {
    $evaluator->parse('(pid = 56');
} catch(QueryEvaluatorException $e) {
    if ($e->getCode() == QueryEvaluatorException::MISSING_CLOSING_PARENTHESIS) { // true
        echo $e->getAttributes()['position']; // 0
    }
}

QueryEvaluatorCallable

Returns function that evaluates all attributes of passed array / ArrayAccess returning boolean result., (*11)

use Riesenia\Utility\Condition\QueryEvaluatorCallable;

// using configuration from previous example
$evaluator = new QueryEvaluatorCallable([...]);

$condition = $evaluator->parse('pid IN 2, 3 AND price >= 10');

$condition(['id' => 2, 'unit_price' => 7]); // true
$condition(['id' => 4, 'unit_price' => 7]); // false
$condition(['unit_price' => 4]); // false

QueryEvaluatorCart

Returns function that evaluates aggregates condition for riesenia/cart package., (*12)

QueryEvaluatorTwofold

Allows passing prefixed condition., (*13)

use Riesenia\Utility\Condition\QueryEvaluatorTwofold;

// using configuration from previous example
$evaluator = new QueryEvaluatorTwofold([
    'P1' => [
        'pid' => [
            'field' => 'id',
            'operators' => ['=', 'NOT', 'IN', 'NOTIN']
        ],
        'name' => [
            'field' => 'name',
            'operators' => ['=', 'NOT', 'CONTAINS']
        ],
        'price' => [
            'field' => 'unit_price',
            'operators' => ['>=', '>', '<', '<=']
        ]
    ],
    'P2' => [
        'pid' => [
            'field' => 'id',
            'operators' => ['=', 'NOT', 'IN', 'NOTIN']
        ],
        'name' => [
            'field' => 'name',
            'operators' => ['=', 'NOT', 'CONTAINS']
        ],
        'price' => [
            'field' => 'unit_price',
            'operators' => ['>=', '>', '<', '<=']
        ]
    ]
]);

// example
$evaluator->parse('P1.pid IN 2, 3 AND P1.price >= P2.price'); // ['AND' => [['P1.id IN' => ['2', '3']], ['P1.unit_price >= P2.unit_price']]]

The Versions

22/07 2018

dev-master

9999999-dev

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

22/07 2018
25/01 2018

v3.0.0

3.0.0.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

11/01 2018

1.3.1.x-dev

1.3.1.9999999-dev

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

11/01 2018

v1.3.2

1.3.2.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

11/01 2018

v1.3.1

1.3.1.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

11/01 2018

v2.0.1

2.0.1.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

23/10 2017

v2.0.0

2.0.0.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

18/09 2017

v1.3.0

1.3.0.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

18/09 2017

dev-twofold

dev-twofold

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

10/05 2017

v1.2.8

1.2.8.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

10/04 2017

v1.2.7

1.2.7.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

22/02 2017

v1.2.6

1.2.6.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

22/02 2017

v1.2.5

1.2.5.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

21/02 2017

v1.2.4

1.2.4.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

15/02 2017

v1.2.3

1.2.3.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

05/01 2017

v1.2.2

1.2.2.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

12/11 2016

v1.2.1

1.2.1.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

01/11 2016

v1.2.0

1.2.0.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

29/09 2016

v1.1.11

1.1.11.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

01/09 2016

v1.1.10

1.1.10.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

14/08 2016

v1.1.9

1.1.9.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

13/08 2016

v1.1.8

1.1.8.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

13/08 2016

v1.1.7

1.1.7.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

03/08 2016

v1.1.6

1.1.6.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

25/07 2016

v1.1.5

1.1.5.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

25/07 2016

v1.1.4

1.1.4.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

22/07 2016

v1.1.3

1.1.3.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

18/07 2016

v1.1.2

1.1.2.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

13/07 2016

v1.1.1

1.1.1.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

12/07 2016

v1.1.0

1.1.0.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

30/06 2016

v1.0.9

1.0.9.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

06/04 2016

v1.0.8

1.0.8.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

06/04 2016

v1.0.7

1.0.7.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

22/03 2016

v1.0.6

1.0.6.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

22/03 2016

v1.0.5

1.0.5.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

21/03 2016

v1.0.4

1.0.4.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

21/03 2016

v1.0.3

1.0.3.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

18/03 2016

v1.0.2

1.0.2.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

29/12 2015

v1.0.1

1.0.1.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

22/12 2015

v1.0.0

1.0.0.0

Riesenia Utility Classes

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy