It is very unpleasant that $(window).width() or $(window).outerWidth() does not return actual view port width scroll bar width. Especially when trying to match the window width to the CSS media queries. |
Currently if you have a media query for responsive design with the CSS like: |
@media screen and (max-width: 1600px) { body {background: red;} } |
When the background color is actually applied to the document by the browser, jQuery tells the window width is less than 1600px (1600 - scrollbar width). But you know its not the expected result. |
This is very unpleasant situation cases where there are some mobile-specific stuff that needs to be done in both, CSS and JS. And they would need to be done at the exactly same width of the document/window. |
However, plain JavaScript returns 1600 as the window width when asked using below code snippet: |
window.innerWidth |
Friday, June 8, 2018
$(window).width() AND $(window).outerWidth() excluding the scrollbar width > Window and viewport width in CSS and Javascript
Thursday, June 7, 2018
MySQL > Create Function > Call MySQL Function > Execution MySQL Function > MysQL Show Listed Functions
Use of MySQL function will make our coding easier. Function can contain some business logic. |
So I will create MySQL function first using below query: |
DELIMITER // DROP FUNCTION IF EXISTS MyFunction; CREATE FUNCTION MyFunction(p1 INT) RETURNS VARCHAR(50) BEGIN DECLARE v1 VARCHAR(50) DEFAULT ""; SELECT concat(name,'-',roll) INTO v1 FROM table1 WHERE id = p1; RETURN v1; END; // |
So our MySQL function created, now we will list our available MySQL functions using below query: |
SHOW FUNCTION STATUS |
Now we will select/execute MySQL function using below query |
select *,MyFunction(id) as 'function' from table1; |
Which will results like below screenshot: |
|
Monday, May 7, 2018
JQuery Custom Popup Example
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Custom Popup</title> <meta name="viewport" content="user-scalable=yes, initial-scale=1, maximum-scale=1,minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi"/> <script src="//ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <script src="custom-popup.js?v=<?= time() ?>"></script> <script type="text/javascript"> $(document).ready(function () { console.log(CustomPopup.getAvailableOptions()); var body = $(document.body), html = body.find(".move-container").clone(true); // to get or check initial config of CustomPopup just console log below // CustomPopup.getAvailableOptions() // and all available events shown in "triggers" array // so what you need to do popup.trigger("close") to close popup body.find(".open-popup-html").click(function() { CustomPopup.fromHTML($("<div>Are you sure want to delete?</div>")); }); body.find(".open-popup-url").click(function() { CustomPopup.fromURL("popup.php", {id: 0}, { // you also can set all below function and variables // as html data attribute onOpen: function(p) { console.log("POPUP OPENED"); // disabling popup p.trigger("disable"); setTimeout(function() { // enabling popup p.trigger("enable"); }, 2000); }, onClose: function(p) { console.log("POPUP CLOSED"); }, onSubmit: function(p) { p.trigger("show-loading"); console.log("POPUP SUBMITTED"); // return false will not close popup immediately // you have to close manually by popup.trigger("close") setTimeout(function() { p.trigger("close-loading"); setTimeout(function() { p.trigger("close"); }, 2000); }, 2000); return false; }, popupTitle: "POPUP TITLE", yesText: "YES TEXT", noText: "NO TEXT", showTitle: true, showClose: true, popupClass: "some-class", beforeSend: function(xhr) { xhr.setRequestHeader('X-Test-Header1.1', 'test-value1'); xhr.setRequestHeader('X-Test-Header2.1', 'test-value2'); }, xhrFail: function(jqXHR, textStatus, errorThrown) { console.log(jqXHR); console.log(textStatus); console.log(errorThrown); } }); }); }); function formSubmitted() { alert("POPUP SUBMITTED"); } </script> </head> <body> <button class="open-popup-html">Open popup from HTML</button><br/> <button class="open-popup-url">Open popup from URL</button><br/> <button type="button" data-popup-url="popup.php" class="my-popup-opener" data-popup-class="" data-yes-text="Save" data-on-submit="formSubmitted" data-popup-title="MY POPUP" data-on-open="formOpened" data-no-text="Close" data-show-title="1"> Open Popup On Click Html Element (.my-popup-opener) </button> </body> </html> |
|
On popup submit there will be an overlay shown above. |
You can download full source code from here |
Saturday, May 5, 2018
JQuery TreeView Example And Stylish Select DropDown
Create TreeView example: Here container is the boundary within tree dropdown will contains. If you open this tree view in popup, container will be popup body. |
var tree = $("div.tree-inside-this-div").treeView({ json: r, openAll: 0, noText: "Select...", change: function (value) { console.log(value); }, value: "1.1.2.2.3.2", container: $(document.body) }); |
To set specific value or to select desired tree node: |
tree.value("100"); |
You can put a attribute named "selected": true to auto select node when create tree. |
"children": [ { "id": "1.1.2.2.3.2.4.1", "text": "Label - 4.1", "selected": true }, { "id": "1.1.2.2.3.2.4.2", "text": "Label - 4.2" } ] |
|
You can also convert select to stylish dropdown: |
$(document.body).find("select").selectView(); |
|
You also can use this tree view for custom action menu using below command $(document.body).find("select.action_menu").actionView({ actionWidth: 140 }); |
|
And finally you download source code from here. |
Saturday, April 21, 2018
Grails on Groovy > @Transactional does not rollback on checked exceptions
We’re using the Spring Framework in most of our grails applications to manage database transaction. |
One of the big advantages is the the declarative transaction handling using the @Transactional attribute. |
import org.springframework.transaction.Transactional; @Transactional public class MyService { List exec () { } } |
That simple annoation on class managed by a Spring ApplicationContext causes all method calls onto that service to be bound to a transaction. The transaction is committed after the method call has left the service again and it’s rollbacked for the case an exception is thrown |
But be careful: Only unchecked exceptions (that is, subclasses of java.lang.RuntimeException) are rollbacked by default. For the case, a checked exception is thrown, the transaction will be committed! |
And that customization can be done very easily by just adding the parameter rollBackFor to the @Transactional attribute: |
import org.springframework.transaction.Transactional; @Transactional(rollbackFor = Exception.class) public class MyService { List exec () { } } |
Friday, April 20, 2018
Extending from Laravel 5 core - SqlServerConnection | Extending The Connection Class In Laravel
The first thing the ConnectionFactory::createConnection() method does is to check if the db.connection.{$driver} alias is bound, and if so, it returns that connection object. If it is not bound, it returns the base connection object (Illuminate\Database\MySqlServerConnection for the mysql driver) |
Therefore, all you need to do to use your own custom connection is to bind the db.connection.mysql alias to your custom MySqlServerConnection class |
You can create a new service provider in which to do this, or you can just add the line to your existing AppServiceProvider |
<?php namespace App\Providers; use Illuminate\Contracts\Events\Dispatcher as DispatcherContract; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; class AppServiceProvider extends ServiceProvider { public function boot(DispatcherContract $events) { parent::boot($events); } public function register() { $this->app->bind('db.connection.mysql', \App\Database\MySqlConnection::class); } } |
Remember that there may be two methods in any ServiceProvider, first call "register" method of each ServiceProvider listed and after that "boot" method called each ServiceProvider listed in "config/app.php" in providers section. |
<?php return [ 'providers' => [ App\Providers\EventServiceProvider::class, App\Providers\AppServiceProvider::class ] ]; |
You have to create a MySQL connection class \App\Database\MySqlConnection |
<?php namespace App\Database; use Illuminate\Database\MySqlConnection as ParentMySqlConnection; class MySqlConnection extends ParentMySqlConnection { public function select($query, $bindings = [], $useReadPdo = true) { return parent::select($query, $bindings, $useReadPdo); } } |
So its completed, MySqlConnection is now extended with our own connection class. |
So you can now anything do with your custom connection class. |
Thursday, April 19, 2018
How to get current time in milliseconds in PHP | Converting microtime() to milliseconds/seconds
The short answer is |
$milliseconds = round(microtime(true) * 1000); |
Use microtime(). This function returns a string separated by a space. The first part is the fractional part of seconds, the second part is the integral part. Pass in true to get as a number: |
var_dump(microtime()); // string(21) "0.89115400 1283846202" var_dump(microtime(true)); // float(1283846202.89) |
64 bits platforms only! |
function milliseconds() { $mt = explode(' ', microtime()); return ((int)$mt[1]) * 1000 + ((int)round($mt[0] * 1000)); } |
Subscribe to:
Posts (Atom)