Monday, April 21, 2014

JavaScript Brightness

/**
 * http://www.sitepoint.com/javascript-generate-lighter-darker-color/
 */

function colorLuminance(hex, lum) {
    // Validate hex string
    hex = String(hex).replace(/[^0-9a-f]/gi, "");
    if (hex.length < 6) {
        hex = hex.replace(/(.)/g, '$1$1');
    }
    lum = lum || 0;
    // Convert to decimal and change luminosity
    var rgb = '#', c;
    for (var i = 0; i < 3; ++i) {
        c = parseInt(hex.substr(i * 2, 2), 16);
        c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16);
        rgb += ('00' + c).substr(c.length);
    }
    return rgb;
}

Penggunaan

colorLuminance('#aabbaa', 0.5); // lighter
colorLuminance('#aabbaa', -0.5); // darker

Lihat Demo

Labels: ,

Friday, April 4, 2014

PHP Konversi Array Menjadi Objek/Objek Menjadi Array

1. Array ke Objek

Fungsi

function array_to_object($array) {
    if(is_array($array)) {
        return (object) array_map(__FUNCTION__, $array);
    } else {
        return $array;
    }
}

Contoh Kasus

Sebelum dikonversi…

$test = array(
    'A' => 'Test A',
    'B' => 'Test B',
    'C' => array(
        'CA' => 'Test CA',
        'CB' => array(
            'CBA' => 'Test CBA'
        )
    ),
    'D' => 'Test D'
);

// Pemanggilan...
echo $test['A']; // Hasil => `Test A`
echo $test['C']['CB']; // Hasil => `Test CB`
echo $test['C']['CB']['CBA']; // Hasil => `Test CBA`

Sesudah dikonversi…

...

$object_test = array_to_object($test);

// Pemanggilan...
echo $object_test->A; // Hasil => `Test A`
echo $object_test->C->CB; // Hasil => `Test CB`
echo $object_test->C->CB->CBA; // Hasil => `Test CBA`

2. Objek ke Array

Fungsi

function object_to_array($object) {
    if(is_object($object)) {
        $object = get_object_vars($object);
    }
    if(is_array($object)) {
        return array_map(__FUNCTION__, $object);
    } else {
        return $object;
    }
}

Contoh Kasus

Sebelum dikonversi…

$test = new stdClass;
$test->A = 'Test A';
$test->B = 'Test B';
$test->C = new stdClass;
$test->C->CA = 'Test CA';
$test->C->CB = new stdClass;
$test->C->CB->CBA = 'Test CBA';
$test->D = 'Test D';

// Pemanggilan
echo $test->A; // Hasil => `Test A`

Sesudah dikonversi…

...

$array_test = object_to_array($test);

// Pemanggilan
echo $array_test['A']; // Hasil => `Test A`

Labels: , ,

PHP Konversi Array Menjadi HTML List

PHP

function array_to_list($array, $list_type = 'ul') {
    $output = '<' . $list_type . '>';
    foreach($array as $key => $values) {
        if(is_array($values)) {
            $output .= '<li><a href="#">' . $key . '</a>' . array_to_list($values, $list_type) . '</li>';
        } else {
            $output .= '<li><a href="#' . $values . '">' . $key . '</a></li>';
        }
    }
    return $output . '</' . $list_type . '>';
}

Penggunaan

Ubah array $test menjadi elemen HTML daftar:

// Testing...
$test = array(
    'A' => 'list-A',
    'B' => 'list-B',
    'C' => 'list-C',
    'D' => array(
        'AA' => 'list-AA',
        'AB' => 'list-AB',
        'AC' => 'list-AC',
        'AD' => array(
            'ADA' => 'list-ADA',
            'ADB' => 'list-ADB',
            'ADC' => 'list-ADC'
        ),
        'AE' => 'list-AE'
    ),
    'E' => 'list-E'
);

echo array_to_list($test, 'ol');

Akan menghasilkan ini:

Lihat Demo

Labels: , ,

Tuesday, April 1, 2014

Range Slider Kustom Sederhana

Simplest JavaScript Custom Range Slider

Dapat digunakan sebagai alternatif jQuery UI Slider atau plugin-plugin sejenis yang memiliki ukuran berkas cukup besar. Terkadang Saya memerlukan sesuatu yang sejenis dengan itu, tetapi dengan fitur yang lebih sederhana. Asalkan bisa digunakan untuk memperbaharui nilai dengan cara menggeser-geser dragger maka itu sudah cukup. Jadi Saya membuat ini…

Labels: ,