Thursday, November 20, 2014

Simple JQuery Grid Plugin

Grid implemented in js file:

jQuery.fn.Grid = function(options) {
    if(options == undefined || options.data == undefined) return;

    var html = "";
    var realColumnsNames = [];
    var headerColumnsNames = [];
    var columns = [];
    html += '<table id="table">';
    html += '<thead id="tableHead">';
    html += '<tr id="tableHeadTr">';
    if(options.columns == undefined || options.columns.length == 0) {
        for (var objName in options.data[0]) {
            html += '<th id="' + objName + '">' + objName + '</th>';
            realColumnsNames.push(objName);
        }
    }
    else {
        for (var i = 0; i < options.columns.length; i++) {
            objName = options.columns[i];
            html += '<th id="' + objName + '">' + objName + '</th>';
        }
        for (var objName in options.data[0]) {
            realColumnsNames.push(objName);

        }
    }
        html += '</tr>';
        html += '</thead>';

        $.each(options.data, function (index, value) {
            html += "<tr class='tableRow'>";
            for (var i = 0; i < realColumnsNames.length; i++) {
                html += "<td>" + value[realColumnsNames[i]] + "</td>";
            }
            html += "</tr>";
        })

        html += '</table>';

        this[0].innerHTML = html;
};

And Usage in HTML:

 <body>

        <div id="Grid"></div>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script src="js/Grid.js"></script>  
        <script>
            var data = JSON.parse('[{"Name" : "Name", "Surname" : "SName"},' +
                                    '{"Name" : "Name", "Surname" : "SName"}, ' +
                                    '{"Name" : "Name", "Surname" : "SName"},' +
                                    '{"Name" : "Name", "Surname" : "SName"}]');

            var options = {
                data: data,
                columns: ['First Name', 'Second Name']
            };

            $('#Grid').Grid(options);
        </script>
    </body>

Wednesday, July 16, 2014

ASP.NET MVC CACHING with TIME STAMP EXAMPLE

CACHE MANAGER:

using System;
using System.Runtime.Caching;
 
namespace Quasar.Bll
{
    public class CacheManager : ICacheProvider
    {
      private ObjectCache Cache { get { return MemoryCache.Default; } }
 
      public object Get(string key)
      {
          return Cache[key];
      }
 

      public void Set(string key, object data, int cacheTime)
      {
       var policy = new CacheItemPolicy {
                     AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(cacheTime)
                                        };
 
       Cache.Add(new CacheItem(key, data), policy);
      }
 
      public bool IsSet(string key)
      {
          return (Cache[key] != null);
      }
 
      public void Invalidate(string key)
      {
          Cache.Remove(key);
      }
 
   }
}


CACHE USAGE in BLL:

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Quasar.Bll.Models;

namespace Quasar.Bll
{
    public class ProductsBusinessObject
    {
        public List<ProductSearchResult> GetProductData(string searchText)
        {
            var cache = new CacheManager();

            var products = cache.Get(searchText) as List<ProductSearchResult>;

            if (products != null)
            {
                return products;
            }

            var rawData = new Dal.ProductsDao().GetProductsData(searchText);

            var searchedProducts = from prod in rawData
                select
                    new ProductSearchResult
                    {
                       Breadcrumb = prod.Categories,
                       LastUpdated = prod.LastUpdated,
                       Price = float.Parse(prod.Price.ToString()),
                       ProductImage = prod.ProductMainImageUrl,
                       ProductLink = prod.ProductLink,
                       ProductTitle = prod.ProductTitle,                       
                       Provider = prod.SiteNameToCrawle,
                       ProviderLogo = ProvidersLogoManager.GetProviderLogo(prod.SiteNameToCrawle)
                    };

            var result = searchedProducts.ToList();

            cache.Set(searchText, result, 1);

            return result;
        }
    }
}

Tuesday, May 27, 2014

Managing Resources with ASP.NET MVC and Self Hosting

In Self Hosting ASP.NET MVC application we have 2 options to manage resources :

- Files System
- Embedded Resources

Manage resources on File System just like IIS do it.
Get Css example. In order to bring JS or Image, just change contentType:

Controller:

 public class ActiveDirectoryAuthenticationController : ResourcesController
 {        
        public ActionResult Index()
        {         
            return View();
        }    
 }


ResourcesController


public class ResourcesControllerController
{
    public HttpResponseBase GetResource(string resourceId)
    {
         Response.Clear();
         Response.ContentType = "text/css";
         Response.Write(Resources.ResourceManager.GetObject(resourceId));
         Response.End();
         return Response;
    }        
}

CSHTML:

<a href="@Url.Action("GetResource", "Resources", new { resourceId = some.css})"></a>


Resource File: