(X) Hide this
    • Login
    • Join
      • Say No Bots Generate New Image
        By clicking 'Register' you accept the terms of use .

Windows Store apps with XAML and HTML: Using Typescript in Windows Store apps

(1 votes)
Andrea Boschin
>
Andrea Boschin
Joined Nov 17, 2009
Articles:   91
Comments:   9
More Articles
7 comments   /   posted on Apr 30, 2013
Categories:   Windows 8



I'm pretty sure you agree with me when I say that Javascript is and hard bet for real world applications. No matter it you are very skilled with this expressive language, the danger of introducing bugs is always behind the corner, and too often these are so subtle to result difficult to discover and they become evident only when we get to the production stage. This is mostly because Javascript does ot have a strong type checking, so you can write code that does unwanted assignment from numeric to string or viceversa, but also because it isn't a real object oriented language, so to emulate these paradigms you have to rely on complex structures that make the code very hardly maintainable. These are the primary reasons that gave the start to the new Typescript language project.

Typescript, What's it?

As the names suggests, Typescript is something that wants to handle mainly the type checking. It is born for the use inside the modern browsers, where Javascript is usually the King, so this has led to some important choices. First of all the requirement that is able to run without a new interpreter installed into the browser, just because people today very harldy accept to download and install some kind of plugin.

So, the choice of the development team, headed by Anders Heilsberg, the father of C#,  was to create a compiler able to take Typescript and convert to plain Javascript which is cross-browser. But the very smart choice made, during the planning phase, was to make Typescript a superset of Javascript itself. Indeed, if you take a Javascript code and cut and paste it in a Typescript file, it simply compiles without any error.  The compiler is able to take this Javascript, infer types and automatically apply a strong type checking which harden the code without any additional effort from the developer. Then if you need some more complex structure, like interfaces, enumerators and classes, you can easily decorate your code with Typescript's specific constructs and opt in for a complete object oriented programming language.

Going deeply in the syntax of typescript is out of the scope of this article, but to illustrate the power of this language here is a short snippet of code:  

   1: class Animal {
   2:     constructor(public name: string) { }
   3:     move(meters: number) {
   4:         alert(this.name + " moved " + meters + "m.");
   5:     }
   6: }
   7:  
   8: class Snake extends Animal {
   9:     constructor(name: string) { super(name); }
  10:     move() {
  11:         alert("Slithering...");
  12:         super.move(5);
  13:     }
  14: }
  15:  
  16: class Horse extends Animal {
  17:     constructor(name: string) { super(name); }
  18:     move() {
  19:         alert("Galloping...");
  20:         super.move(45);
  21:     }
  22: }
  23:  
  24: var sam = new Snake("Sammy the Python");
  25: var tom: Animal = new Horse("Tommy the Palomino");
  26:  
  27: sam.move();
  28: tom.move(34);

The snippets, taken from the Typescript's samples, shows the full set of object oriented tools that make the code much more readable and maintainable. It will be requires a number of articles to illustrate all the wonderful features of this language but, as I already said, it is not matter for this article. At the moment there is a question we need to answer before: What does it has to do with Windows Store apps?

Typescript for the Windows Store apps?

Since I've said that the Typescript compiler is able to generate plain Javascript, supported by all the existing browsers, is it reasonable to thinks that it should work for every platform where Javascript is the elective language.

And this is really true! In facts, one of the most popular examples of Typescript is made to run on node.js that is a server side engine based on Javascript. Windows Store apps can be written in Javascript so is it possible to use Typescript in this scenario. Unfortunately it is only partly true.

imageI try to explain. Typescript bases its support to third party libraries, on a special "declaration" file. This file is made to make available the types defined by an external library to the Typescript compiler. Thanks to these "d" files, the developer can reference the types of the external library and is supported by Visual Studio, with intellisense, and by the compiler to check the correspondence between a call to a method and its signature.

In the source code of the Typescript project, you can download two important files: winjs.d.ts and winrt.d.ts. Into these files are reported a number of declarations to support the usage of both WinJS library and the Windows.* namespace inside the WinRT core. So, the first step to work with TypeScript in a Windows Store app, just after the project is created is to download these files an add them to the project. I usually use a "Script > typings > library" folder structure, so when I add othe typings from nuget they fall automatically inside the same folder. Watch at the figure on the side.

In the same folder, you see also a jquery.d.ts file that is in place to show how you can add other libraries. For this purpose I suggest to open the nuget references and search for "DefinitelyTyped". All the packages outpu of this search are an impostant base for every Typescript developments, since they contains definition for a huge number of Javascript libraries, most of them also useful in a WinJS environment.

The references to these files have to be added to each typescript source where they need to be used. To simplify this operation, and to have a place to put additional definitions manually (I'll speak about this in a few), you can add a "win.d.ts" file as follow:

   1: /// <reference path="typings/winrt/winrt.d.ts" />
   2: /// <reference path="typings/winjs/winjs.d.ts" />
   3:  
   4: declare var msSetImmediate: (expression: any) => void;

Thanks to this file you can simply add a reference to it and all the referenced libraries are automatically available, together with the other additional declarations like the msSetImmediate in the snippet.

Once these files are in place, you can start creating new "ts" files, but you have to be aware that they are compiled only when you save the file. To solve this problem and support the build together with the other project files you have to unload the project, open the project file (use the "unload project" action in context menu, then again in search for Edit *.jsproj" after the project has been unloaded) and add the following sections:

   1: <ItemGroup>
   2:   <AvailableItemName Include="TypeScriptCompile" />
   3: </ItemGroup>
   4: <ItemGroup>
   5:   <TypeScriptCompile Include="$(ProjectDir)\**\*.ts" Exclude="$(ProjectDir)\**\*.d.ts" />
   6: </ItemGroup>
   7: <Target Name="BeforeBuild">
   8:   <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\tsc&quot; -target ES5 @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
   9: </Target>
  10: <Target Name="AfterBuild">
  11: </Target>

Thanks to these sections, you have to add to the very low end of the project file, the compilation task also includes all the *.ts files and excludes the "*.d.ts" that do not have to be compiled together with source code. After reloading the project I suggest to manually delete the "bin" folder because it may contains some spurious files generated by previous compilations. These may generate unwanted errors. Now the project is ready and you can try to compile and see the "Build succeded" message on the bottom left corner.

Let's start coding...

Ok, once the project is ready, it is time to chill your enthusiasm. The very first thing you may try is to convert a page file, like the default.js" to a full typescript file. I've also tried this same action and I had to note that this is not always possible. The problem here is that the winjs and winrt definition files, we have added to the project, are far to be complete and these cause a number of compilation errors. To work around to these errors you have to manually add the declarations to the winjs and winrt definition files. Unfortunately, future updates of these files, may override your changes. So, the better is to take advantage of a Typescript compiler feature that is able to merge the content of namespaces and types defined in different files. You can add your additional definitions in the "win.d.ts" and have them merged with definitions in the regular files.

   1: /// <reference path="typings/winrt/winrt.d.ts" />
   2: /// <reference path="typings/winjs/winjs.d.ts" />
   3:  
   4: declare var msSetImmediate: (expression: any) => void;
   5:  
   6: module WinJS
   7: {
   8:     export module Binding
   9:     {
  10:         export var optimizeBindingReferences: bool;
  11:     }
  12: }
  13:  
  14: interface ActivatedEventListener
  15:     extends Event
  16: {
  17:     detail: any;
  18:     setPromise(promise: any): void;
  19: }

In this snippet I've added the definitions for the missing points that appear in the default.js of the blank project. Thanks to these definitions you can now convert the file to a full typescript source as follow:

   1: /// <reference path="../Scripts/win.d.ts" />
   2: /// <reference path="../Scripts/utils.ts" />
   3:  
   4: (function ()
   5: {
   6:     "use strict";
   7:  
   8:     WinJS.Binding.optimizeBindingReferences = true;
   9:  
  10:     var app = WinJS.Application;
  11:     var activation = Windows.ApplicationModel.Activation;
  12:  
  13:     app.onactivated = (args: ActivatedEventListener) =>
  14:     {
  15:         if (args.detail.kind === activation.ActivationKind.launch)
  16:         {
  17:             if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated)
  18:             { } 
  19:             else
  20:             { }
  21:  
  22:             args.setPromise(WinJS.UI.processAll());
  23:         }
  24:     };
  25:  
  26:     app.oncheckpoint = (args) =>
  27:     {
  28:  
  29:     };
  30:  
  31:     app.start();
  32: })();

I suspect that handling this kind of errors is not matter for rookie Typescript developers. They may become fastly something that is hard to understand and time consuming. So you have to be very careful with this approach and take in serious consideration another alternative. Use typescript only for the object model and the business logic and continue to use Javascript for the page files.

Writing logic with Typescript

It may seems silly, but your business logic and domain model are the places where Typescript may give the best contribute. Infact you can easily model your domain with a real object oriented and type checked language, and finally convert them to javascript to reference in pages. In the following snippet I've added a DataService class and a number of classes used to describe and deserialize the response of the USGS Earthquake service:

   1: /// <reference path="win.d.ts" />
   2:  
   3: module utils
   4: {
   5:     export class DataService
   6:     {
   7:         static USGSUri: string = 'http://earthquake.usgs.gov/earthquakes/feed/geojson/2.5/week';
   8:  
   9:         static getPastWeekEvents(): WinJS.Promise
  10:         {
  11:             return WinJS.xhr(
  12:                 {
  13:                     url: DataService.USGSUri,
  14:                     data: null, headers: null, type: null, user: null, password: null, responseType: null
  15:                 }).then(
  16:                     (request) =>
  17:                     {
  18:                         var data: EarthquakeResponse = <EarthquakeResponse>JSON.parse(request.response);
  19:                         var result: Earthquake[] = [];
  20:  
  21:                         for (var i = 0; i < data.features.length; i++)
  22:                         {
  23:                             var item = data.features[i];
  24:  
  25:                             if (data.features[i].properties.mag < 0)
  26:                                 data.features[i].properties.mag = -data.features[i].properties.mag;
  27:  
  28:                             var eq: Earthquake = new Earthquake();
  29:                             eq.id = item.id;
  30:                             eq.magnitude = Math.round(item.properties.mag);
  31:                             eq.description = item.properties.place;
  32:                             // other properties...
  33:  
  34:                             result.push(eq);
  35:                         }
  36:  
  37:                         return result;
  38:                     });
  39:         }
  40:     }
  41:  
  42:     export class EarthquakeResponse
  43:     {
  44:         features: EarthquakeItem[];
  45:     }
  46:  
  47:     export class EarthquakeItem
  48:     {
  49:         id: string;
  50:         type: string;
  51:         properties: EarthquakeDetail;
  52:         geometry: EarthquakeGeometry;
  53:     }
  54:  
  55:     export class EarthquakeDetail
  56:     {
  57:         mag: number;
  58:         place: string;
  59:         time: number;
  60:         updated: number;
  61:         tz: number;
  62:         url: string;
  63:         felt: string;
  64:         cdi: string;
  65:         mmi: string;
  66:         alert: string;
  67:         status: string;
  68:         tsunami: string;
  69:         sig: string;
  70:         net: string;
  71:         code: string;
  72:         ids: string;
  73:         sources: string;
  74:         types: string;
  75:     }
  76:  
  77:     export class EarthquakeGeometry
  78:     {
  79:         type: string;
  80:         coordinates: number[];
  81:     }
  82:  
  83:     export class Earthquake
  84:     {
  85:         id: string;
  86:         description: string;
  87:         uri: string;
  88:         uTCDate: Date;
  89:         localDate: Date;
  90:         epicenterDate: Date;
  91:         magnitude: number;
  92:         elevation: number;
  93:         latitude: number;
  94:         longitude: number;
  95:         level: number;
  96:     }
  97: }
  98:  

The code I've provided here exposes a method to download a feed, deserializes it and then extract the information in a known type that is useful for binding to the user interface. It supports the WinJS promises as explained in the previous article. It is a good example of how Typescript can make stronger your code. Here is how to use the compiled output, you have to ensure is part of the project adding the "utils.js" to the solution:

   1: utils.DataService.getPastWeekEvents()
   2:     .then((eqs) =>
   3:         {
   4:             // bind earthquakes to the interface here...
   5:         });

Once you get in touch with Typescript I'm pretty sure you will be very enthusiast of the support it does to you while coding. I hope that Microsoft adds as soon as possible a regular and complete suppor to this smart language, but for the moment you can start to take advantage of it right now.


Subscribe

Comments

  • mh

    Re: Windows Store apps with XAML and HTML: Using Typescript in Windows Store apps


    posted by mh on May 06, 2013 11:45
    You say "i know exactly what you are talking about". But Javascript is not java, ok?
  • -_-

    Re: Windows Store apps with XAML and HTML: Using Typescript in Windows Store apps


    posted by on Nov 11, 2014 15:55

    I'm overbearing of you, creator of this enter! Definitely, there are hardly numerous persons who is capable to give such a property capacity as best essay service on review4students.com or sheet manuscript. In appendage, sum your bearings could be helpful for pr axis of my existence.
  • kilin

    Re: Windows Store apps with XAML and HTML: Using Typescript in Windows Store apps


    posted by kilin on Jan 16, 2015 08:19
    This document is to provide an external library type typescript compiler defined by the producer. Endorsed plus typing troubadour from their NuGet automatically fall within the same folder.
    about us
  • jeparaonline

    Re: Windows Store apps with XAML and HTML: Using Typescript in Windows Store apps


    posted by jeparaonline on Feb 18, 2015 17:46
    Kami toko onlien menjual produk Mebel Jepara yang menawarkan produk produk mebel asli jepara memang sudah dikenal hingga mancanegara, jepara selalu menjaga kualitas produk furniture dengan sangat teliti Mebel Jepara Mulai dengan produk produk minimalis yang sqangat elegant hingga produk klasik modern yang sekarang sedang trend di beberapa tahun terakhir, produk klasik modern kami meliputi Mulai dengan produk produk minimalis yang sqangat elegant hingga produk klasik modern yang sekarang sedang trend di beberapa tahun terakhir, produk klasik modern kami meliputi Kursi Tamu Jati dengan model klasik modern juga tersedia mebel minimalis khas mebel jepara yang di buat dengan menggunakan material kayu perhutani pilihan, kayu perhutani dipilih karena memang kualitasnya yang jauh dari kayu kebun, produk Mebel Jepara Minimalis dengan model simple elagant kami tawarkan dengan harga yang cukup kompetitif, semuanya tergantung akan banyaknya bahan yang digunakan juga tingkat kerumitan produk dengan Mebel Jati yang tentunya tidak mengurangi kualitas dari produk dengan model simple elagant kami tawarkan dengan harga yang cukup kompetitif, semuanya tergantung akan banyaknya bahan yang digunakan juga tingkat kerumitan produk dengan Mebel Jepara Murah dengan model simple elagant kami tawarkan dengan harga yang cukup kompetitif, semuanya tergantung akan banyaknya bahan yang digunakan juga tingkat kerumitan produk dengan yang kami tawarkan. Kami selalu berupaya dengan menawarkan produk produk Mebel Jati Jepara dengan desain terbaru, dikarenakan setiap produk kami mempunyai keistimewaan tersendiri yang berbeda dengan produk mebel lainnya, yaitu tingkat kualitas kehalusan finishing juga kuaslitas ukiran yang khas Mebel Jepara Murah kami selalu terjaga kualitas dan pamornya. yang menawarkan produk produk mebel asli jepara memang sudah dikenal hingga mancanegara, jepara selalu menjaga kualitas produk furniture dengan sangat teliti Mebel Jati Mulai dengan produk produk minimalis yang sqangat elegant hingga produk klasik modern. memang sedang marak saat ini, oleh karena itu kami pun berusaha semaksimal mungkin untuk memberikan pelayanan yang lebih baik untuk anda konsumen konsumen setia kami Cv. Karya Priboemi Jepara. Mebel Jepara Minimalis dalam hal ini saya ada rekomendasi untuk anda Kami juga mempunyai banyak produk galleri yang dapat anda jadikan patokan untuk anda tempatkan di ruang tamu rumah anda, produk produk tersebuat dapat anda lihat disini Kursi Tamu Jati Minimalis asli produk Cv. Karya Priboemi Jepara yang dapat anda pesan secara custom atau biasa disebut pesanan sesuai keinginan anda, itu semua kami produksi menggunakan material kayu mahoni perhutani dan kayu Furniture Jati Jepara dengan label Cv. Karya Priboemi Jepara yang sudah dikenal baik dalam maupun luar negri, anda tidak perlu khawatir akan kualitas dari setiap produk kami, beragam model Kursi Tamu Jati Murah kami sudah mulai membuka pemesanan dengan anda cukup dengan santai diruamh, anda tinggal menyodorkan bagaimana produk mebel yang anda inginkan, anda dp maka kami akan kerjakan, untuk lama proses tergantung tingkat kerumitan produk pesanan, itu smua bisasa kami tawarkan secara Furniture Jepara dengan kekuatan kontruksi pengrajin mebel jepara asli, yang memang sudah profesional dalam proses pembuatan kontruksi, pengrajin profesional iru semua ada di perusahaan kami Mebel Jati Jepara, kontruksi tersebuat bisa anda pakai hingga puluhan tahun, karena kualitas kami di atas produk produk lain, yang banyak di jual di pasaran kontruksi tersebuat bisa anda pakai hingga puluhan tahun, karena kualitas kami di atas produk produk lain, yang banyak di jual di pasaran Mebel Jepara Online tentunya sangat kokoh. Kami juga mempunyai banyak katalog produk meja muali dari meja makan ukiran jepara, meja makan klasik modern elegant yang tentunya sangat mewah untuk anda tempatkan di ruang makan rumah mewah anda, juga tak ketinggalan, kami juga menawarkan produk mebel Meja Makan asli desain Cv. Karya Priboemi Jepara, yang tentunya mempunyai kualitas diatas rata rata standart export, pamor produk mebel dari Furniture Jati jepara memang masih banyak dikagumi oleh masyarakat luas, dikarenakan tenaga tenaga mebel jepara mempunyai pengalaman yang lebih baik ketimbang tenaga mebel di luar sana, bahkan produk  Mebel Jepara Murah dsekarang sudah banyak di copy, salah satunya negri china, malaysia yang merekrut tenaga di jepara untuk mengajarkan kepada warganya di sana. yang menawarkan produk produk mebel asli jepara memang sudah dikenal hingga mancanegara, jepara selalu menjaga kualitas produk furniture dengan sangat teliti Furniture Jepara Mulai dengan produk produk minimalis yang sqangat elegant hingga produk klasik modern. memang sedang marak saat ini, oleh karena itu kami pun berusaha semaksimal mungkin untuk memberikan pelayanan yang lebih baik untuk anda konsumen konsumen setia kami Cv. Karya Priboemi Jepara. Furniture Jepara dalam hal ini saya ada rekomendasi untuk anda dan anda juga dapat memilih warna di menu dan tak ketinggalan kami juga menawarnak produk Mulai dengan produk produk minimalis yang sqangat elegant hingga produk klasik modern. menjadi brand ambrossador di beberapa tahun terakhgir, maraknya rumah berdesain minimalis modern membuat produk ini sangat laku di pasaran, untuk katalognya anda dapat melihat katalog produknya disini Kamar Set Jati Minimalis juga bisa disini untuk katalog produk ruang tamu dengan desain minimalis, anda bisa mengirimkan gambar desain yang anda inginkan, atau anda juga bisa lihat katalog kami disini Mulai dengan produk produk minimalis yang sqangat elegant hingga produk klasik modern. Kursi Tamu Klasik kota kami sangat terkenal dengan produk produk etnik khas dari jawa yang terbuat dengan menggunakan material kayu jati yang di ukir dengan ukiran khas mebel jepara yang membuatnya begitu mendunia hingga sekarang, anda pasti akan tercengan jika sudah melihat produk yang satu ini Gebyok Jati Mulai dengan produk produk minimalis yang sqangat elegant hingga produk klasik modern. meja makan dengan desain klasik minimalis semuanya ada di jepara, kami selaku salah satu perusahaan Mebel Jepara di jepara selalu berupaya membuat desain baru agar bisa tetap bersaing, salah satu produk hasil desain kami adalah sebagai berikut. Mulai dengan produk produk minimalis yang sqangat elegant hingga produk klasik modern. Meja Makan Jati Minimalis kota jepara juga terkenal dengan produsen tempat tidur yang cantik elok dan elegant yang tentunya produk itu sendiri diproses dengan sangat terkontrol, untuk katalog produknya anda bisa langsung tengok disini Tempat Tidur yang menawarkan produk produk mebel asli jepara memang sudah dikenal hingga mancanegara, jepara selalu menjaga kualitas produk furniture dengan sangat teliti Mebel Jepara Minimalis Mulai dengan produk produk minimalis yang sqangat elegant hingga produk klasik modern. untuk katalog produk dengan desain klasik ataupun minimalis seperti meja makan ataupun yang lainnya anda juga bisa memilihnya di kolom produk dengan menu kategory Mulai dengan produk produk minimalis yang sqangat elegant hingga produk klasik modern. Meja Makan Jati produk produk kami tentunya mempunyai nilai tersendiri yang tentunya berkualitas tinggi, karena kami proses dengan melalui kontol yang sangat teliti. Seperti produk produk kursi tamu misalnya, untuk membuat Kursi Tamu Minimalis kami memakai bahan dengan kualitas grade A jadi anda tidak perlu ragu lagi akan kualitas dari produk produk mebel yang kami tawarkan kepada anda. Ada lagi produk yang tak kalah larisnya yang ada di jepara yaitu Tempat Tidur Minimalis , produk ini merupakan produk paling penting yang harus ada dalam suatu hunian rumah. Apapun bentuk / model dari tempat tidur tersebut, yang terpenting adalah kita nyaman saat beristirahat tentunya. Selain menjual tempat tidur dalam satuan, kami juga menerima pemesanan produk untuk ruang kamar berupa set kamar tidur. Kamar Set Minimalis itu sendiri nantinya akan terdiri dari tempat tidur lemari pakaian dua nakas dan meja rias, anda juga bisa memesannya terpisah. yang menawarkan produk produk mebel asli jepara memang sudah dikenal hingga mancanegara, jepara selalu menjaga kualitas produk furniture dengan sangat teliti Mebel Jepara Murah Mulai dengan produk produk minimalis yang sqangat elegant hingga produk klasik modern. yang menawarkan produk produk mebel asli jepara memang sudah dikenal hingga mancanegara, jepara selalu menjaga kualitas produk furniture dengan sangat teliti Mulai dengan produk produk minimalis yang sqangat elegant hingga produk klasik modern. Mebel Jepara Murah selalu menjadi daya tarik tersendiri untuk turis asing yang ingin membuat usaha furniture, banyak sekali turis asling berbondong bondong ke jepara untuk memulai bisnisnya, tidak hanya itu banyak juga turis asing yang ingin mengisi rumahnya dengan membeli produk produk seperti tempat tidur kursi tamu meja makan yang asli dan khas Mebel Jepara Murah kami juga menyediakan produk lain yang tak kalah pamornya di beberapa tahun terakhir, produk ini tentunya memiliki ciri khas tersendiri. Pada produk ini kayu jati kami olah sedemikian hingga menjadi produk Meja Makan Jati Murah yang mewah dengan keaslian aksen ukiran khas mebel jepara jual mebel jati harga murah asli mebel jepara, kami menawarkan harga standart furniture jepara dengan kualitas yang tentunya terbaik Penerapan ruang yang akan anda isi Toko Mebel Online mebel harus anda perhatikan terlebih dahulu sebelum membelinya, dalam hal ini saya ada rekomendasi untuk anda untuk berkonsultasi terlebih dahulu dengan pakarnya, anda bisa langsung menuju untuk saat ini mebel jepara memang sudah sangat berkembang, jepara terkenal hingga ke mancanegara sebagai pusat industri mebel terbesar di dunia, produk produknya sudah banyak yang di export ke mancanegara, salah satunya italy Mebel Minimalis Kami menyediakan layanan online untuk pemesanan Mebel Jepara Online dengan sistem online. Ada juga produk unggulan lain seperti tempat tidur, meja makan, set meja makan dan banyak lainnya. Oleh karena itu mulai dari lima tahun terakhir kami sudah mengembangkan untuk pembelian produk furniture dengan menawarkannya di Mebel Jepara Murah memang sedang marak saat ini, oleh karena itu kami pun berusaha semaksimal mungkin untuk memberikan pelayanan yang lebih baik untuk anda konsumen konsumen setia kami Cv. Karya Priboemi Jepara. Toko Mebel Jepara dalam hal ini saya ada rekomendasi untuk anda. salah satunya negri china, malaysia yang merekrut tenaga di jepara untuk mengajarkan kepada warganya di sana. yang menawarkan produk produk mebel asli jepara memang sudah dikenal hingga mancanegara, jepara selalu menjaga kualitas produk furniture dengan sangat teliti Tempat Tidur salah satunya negri china, malaysia yang merekrut tenaga di jepara untuk mengajarkan kepada warganya di sana. yang menawarkan produk produk mebel asli jepara memang sudah dikenal hingga mancanegara, jepara selalu menjaga kualitas produk furniture dengan sangat teliti Kamar Set Minimalis salah satunya negri china, malaysia yang merekrut tenaga di jepara untuk mengajarkan kepada warganya di sana. yang menawarkan produk produk mebel asli jepara memang sudah dikenal hingga mancanegara, jepara selalu menjaga kualitas produk furniture dengan sangat teliti Lemari Pakaian Jati salah satunya negri china, malaysia yang merekrut tenaga di jepara untuk mengajarkan kepada warganya di sana. yang menawarkan produk produk mebel asli jepara memang sudah dikenal hingga mancanegara, jepara selalu menjaga kualitas produk furniture dengan sangat teliti Meja Makan Jati salah satunya negri china, malaysia yang merekrut tenaga di jepara untuk mengajarkan kepada warganya di sana. yang menawarkan produk produk mebel asli jepara memang sudah dikenal hingga mancanegara, jepara selalu menjaga kualitas produk furniture dengan sangat teliti Toko Mebel Mebel Jati jual mebel jati harga murah asli mebel jepara, kami menawarkan harga standart furniture jepara dengan kualitas yang tentunya terbaik Furniture Jati berkualitas asli produk mebel jepara yang dibuat oleh tangan tangan ahli pengrajin mebel jepara yang ada di perusahaan kami Mebel Jepara mulai dari meja makan jati, tempat tidur minimalis, meja makan jati, kursi tamu murah, kamar set minimalis semuanya tersedia termasuk gapura pintu gebyok jati, juga Kursi Tamu Jati Minimalis banyak sekali kami menawarkan produk mebel jati yang kami gunakan sebagai bahan baku, juga tersedia bahan kayu mahoni untuk mebel dengan pewarnaan cat duco Meja Makan Jati Minimalis hasil karya Cv. Karya Priboemi Jepara yang sudah dikenal hingga mancanegara salah satunya adalah pintu gebyok. produk ini sangat tenar dan etnik jawanya masih melekat pada produk Mebel Jepara Murah Ada juga produk unggulan lain seperti tempat tidur, meja makan, set meja makan dan banyak lainnya. Oleh karena itu mulai dari lima tahun terakhir kami sudah mengembangkan untuk pembelian produk furniture dengan menawarkannya di Mebel Jepara yang sangat cantik dengan keaslian ukiran khas mebel jepara yang terukir rapih dan halus di setip sudutnya. Ada juga produk unggulan lain seperti tempat tidur, meja makan, set meja makan dan banyak lainnya. Oleh karena itu mulai dari lima tahun terakhir kami sudah mengembangkan untuk pembelian produk furniture dengan menawarkannya di Mebel Jepara Murah mebel harus anda perhatikan terlebih dahulu sebelum membelinya, dalam hal ini saya ada rekomendasi untuk anda untuk berkonsultasi terlebih dahulu dengan pakarnya, anda bisa langsung menuju untuk saat ini mebel jepara memang sudah sangat berkembang, jepara terkenal hingga ke mancanegara sebagai pusat industri mebel terbesar di dunia, produk produknya sudah banyak yang di export ke mancanegara, salah satunya italy Mebel Jepara
  • MarcoBet

    Re: Windows Store apps with XAML and HTML: Using Typescript in Windows Store apps


    posted by MarcoBet on Apr 02, 2015 05:07

    That is very interesting Smile I love reading and I Cipto Junaedy always searching for informative information like this Jadwal MotoGP 2015. This is exactly what I was looking for Cara Upload Video ke Youtube.  Really this system so amazing. Cipto Junaedy  so happy to browsing this BBM Untuk Android Versi Terbaru. Simply fill out a quick and easy application, and you'll be on your way to getting your new Cara Membuat Email  and Cara Instal Windows 7 avoiding Thanks for sharing this great article . Don't forget for reading the articles about Jinpoker.com Agen Judi Poker Online dan Domino Online Indonesia Terpercaya. And I encourage you to bookmark the following page if Cahayapoker.com Agen Judi Poker Dan Domino Uang Asli Online Terpercaya Indonesia considered important ... Regards ituDewa.net Agen Judi Poker Domino QQ Ceme Online Indonesia

    | Nusantarapoker.com Agen Texas Poker Dan Domino Online Tanpa Robot Terpercaya
  • alikhan

    Re: Windows Store apps with XAML and HTML: Using Typescript in Windows Store apps


    posted by alikhan on Apr 24, 2015 09:44
    Really impressed! Everything is very open and very clear clarification of issues. It contains truly facts. Your website is very valuable. Thanks for sharing. It's late finding this act. At least, it's a thing to be familiar with that there are such events exist. I agree with your Blog and I will be back to inspect it more in the future so please keep up your act.Make money station

Add Comment

Login to comment:
  *      *       

From this series