Thứ Năm, 2 tháng 8, 2018

Waching daily Aug 2 2018

>> Tune into this week's Xamarin Show,

where I have my good friend, Aaron,

back on from Syncfusion.

>> Yes.

>> To talk about the amazing iOS controls,

charts and graphs that integrate into

your application. So tune in.

>> Welcome back, everyone to The Xamarin Show.

I am your host, James Montemagno,

and today, I have my good friend,

Aaron, back from Syncfusion. How is it going, Aaron?

>> Hey, I am doing pretty good. How are you?

>> Yeah, I am doing great.

We had you on recently to talk

about how Syncfusion makes awesome,

ridiculous, controls for Xamarin forms.

>> However, you wanted

to come back and talk a little bit about

the native side of things with

their traditional approach on Xamarin, iOS and Android.

>> Correct. So, I have a very similar app

to what I showed you before. Same concept.

I just did switch it up a little bit and

use one different control,

but it is going to be this time,

the Kanban and the diagram control.

So, for those who watched the previous video,

I showed a prototype app for controlling a robot toy.

So, I'll show that again,

just slightly different for Xamarin.iOS.

>> Yes. So, people that maybe are

brand new to Syncfusion,

maybe never heard of Syncfusion before.

Can you give them the 101 overview of what Syncfusion is?

>> So, Syncfusion is a now 17-year-old company

that's been building controls

for .NET from various different platforms.

So, we support web, we support

desktop, we support mobile.

So, the general gist is that we provide

a tool kit to simplify development.

>> Any kind of type of control

that you can possibly imagine.

>> Exactly.

>> Often, I am always thinking about the bar charts,

and graphs, and crazy things,

seems like that that was the bread and butter,

if you will, of bread and

margarine of the entire Syncfusion.

But really, even in the last video,

we showed this kind of really optimized list view

and a very cool diagram chart.

There is all sorts of stuff.

>> Absolutely. So, most people

do think of those kinds of controls,

maybe when they think of a third party control vendor,

grids, charts, and things like that,

but there is a lot more.

So, we have Document Viewers, we have PDF Viewer,

we have Document Editor,

we have the Combat Control,

we have Dragon Drop support for things like that,

we have Gantt controls,

we have Radial Menus,

we have Buttons, we have Gauges.

We have everything in between and as well as

all those kind of old school,

boring, line of business type controls.

>> The stuff that you need because

who does not like charts and

graphs and awesome stuff

inside their application is what you need.

>> Yes.

>> Every application needs

a little bit more bar chart in their lives,

as I like to say. So, cool.

Awesome. I have been using Syncfusion for over a decade,

like I mentioned on the previous video,

which I will put in the show notes below,

so make sure you check out that video

for the Xamarin.Forms goodness.

But I am really excited to have you on because I have

been doing a lot of the Xamarin.Forms

stuff and you wanted to show iOS,

specifically, developers and even

just building your native

Xamarin.iOS applications and what Synfusion has to offer.

>> Yes, absolutely. So one

of the reasons we want to show this because it is also

kind of plays into what is

unique about Syncfusion is that we

want to make things really simple.

We want there to be a consistent look

and feel in terms of our own controls,

but also what our customers are able to do.

So, if one of our customers wants to

build an application across multiple platforms,

they probably wanted to be

very consistent in terms of look and feel.

And so really what I am showing today, like I said,

it is going to be very similar to the last demonstration.

It just kind of bring that home,

kind of show you that you can create

the same thing regardless of which approach you take.

>> Got it.

>> So, real quick.

So this is the Syncfusion website.

One of the things that I also want to talk about is,

everything that I am going to show today is available

for free and one of two different ways.

So there is, as you can see right here

on the "Home Page", a "Free Trial" link.

>>Big button "Free Trial". Get it.

>> So that gives you access to everything.

So that is over 800 controls

for all platforms including Xamarin,

Xamarin.Forms, Xamarin.iOS, and Xamarin.Android.

And then, there is also our "Committee License".

So we also do support

any developers and students and

things like that with our "Committee License".

That gives you the access to everything we offer.

So all of those controls for

free as long as you are a company that

makes a million dollars or less in revenue per

year or are five developers or less as well.

>> Perfect. Then there is pricing tier for anything.

>> Yes, absolutely. Before we get into the course,

let us talking about how do we get access to everything.

>> Yes, how do you get started?

>> So, here we have our "Documentation" page.

So you can find this by going to

"help.syncfusion.com" or from our main site,

you can just go to "Learning Support"

and it is under "Documentation".

And so from here, you just

need to find the platform that you are working with.

So in this case, we are dealing with

Xamarin.iOS as what we would be focusing on

since we do not have all the time in the world to go

over everything and the Android side

as well since it is mostly the same.

Again, the idea here is basically

the same regardless of which approach you take.

So, when we get into this,

the first thing you want to do is figure out how to get

access to our Xamarin control.

So there is a couple of different ways.

You can download the assemblies directly to your machine.

So, you can download directly to your Mac, for example,

and that will be the same thing that you

would get if you were doing a free trial for

example you would be downloading them to your machine

or you can just get the NuGet Packages.

So we do have a NuGet feed, so you can do it this way.

It is just up to you and your specific approach.

>> That makes it nice and easy to get

the updates automatically.

>> Absolutely. And so,

now what we are going to do is we're going to

talk about the actual app.

So first, I am going to show

the "Getting Started" here for

the first control that we are going to be looking at and

then I am actually going to show you the apps

that you can kind of visualize it.

>> Perfect.

>> And we will move from there. So for

all of the controls in our documentation,

you will always have a "Getting Started" page.

So you have this list of everything

that is available on the platform.

Then, you click on that control and then,

you get this "Getting Started" page.

>> It is nice. You go and you can see

the control that you want to

get and then go right to this doc,

learn how to load it,

learn how to use it.

>> Absolutely.

>> Very, very beautiful document.

>> Yes. Thank you. So there is

a lot of pictures as well, a lot of screen shots.

And so, the first thing you want to

make sure you do is read it.

You always got to read documentation

or otherwise it is not very use.

And if you read, it will tell you things

like what you need to do for

additional steps in order to get a control

to actually work or to come up.

Sometimes, there are additional steps.

So you just will make sure you read the documentation

and make sure you catch all that.

Another thing that is important here is also,

there is sometimes an overview of the control.

So sometimes there are some concepts that need to

be explained and we will get into that later.

But, just basically, this is what you need to start with

for the first control where we are going

to be looking at, which is the Kanban.

Just a few simple lines of code is all

that is needed to get that up and running.

>> Is it Kanban, Canban?

>> Yeah, I'm not sure.

I will just alternate between the two.

>> That is what I like to do. A lot

of podcasts that I recorded or like

that where the podcast and do not know how

to pronounce anything correctly at all.

So, very cool. So what is a Kanban board?

Maybe, at a higher level since we are

going to be using it, I guess.

Why would someone want to use this specific control?

>> So, at a high level,

it is essentially a very interactive way

of organizing data.

So it is a very visual and very,

like I said, interactive way of visualizing things.

So that you essentially have these cards on

a grid and this grid is mainly comprised of columns.

And in these cards, you can

drag from one column to another,

and using that kind of interaction,

you can create workflows,

you can assign things to other resources,

you can assign tasks to people or task to departments,

however you wanted to configure that.

So, that is what we

are going to be using to, in this case,

give commands or actually set up a mission structure for

our robot toy which will then be

given commands based off of that for it.

So speaking of, let us go ahead and take a look at that.

There we go. So, I'm going to go ahead

and run the application.

>> First, it was a Visual Studio for

Mac here and then our iOS simulator.

>> Here's our iOS simulator.

So this is the Kanban control or the Kanban control.

So you can see here this is you do

have the ability to scroll

left and right depending how many columns you have.

There's no limit on how many columns you can create.

In this case I just have two.

You can see up here I have available missions

and accepted missions.

Again, for anyone who saw

this the previous administration

is the same exact concept.

The only thing is that the

interaction here is kind of reverse.

So before you got

all the missions set for you automatically.

You had to get rid of the ones you didn't want to.

Here, you have to move the ones that you want into

position in order to choose or to build

out your mission scenario here.

So this is essentially

the basic interaction you get with the Kanban.

You have these cards and you can move things around.

>> Is order reordering just magically, or I mean,

what's kind of the flow of I

add some cards and then magically things happen.

>> There is some magic.

>> Okay.

>> But there is actually some configuration

that has to be done with the Kanban control.

>> Okay we'll at-

>> We'll look into that, yes.

>> Okay.

>> So essentially once you choose

your missions in this app what happens is you

click accept at the bottom and

then it builds out a diagram builder.

>> Oh, cool. So these are the ones that we put

only in the accepted column.

These are the things that I want the

little toy robot to do.

>> Exactly. So then the idea

from here is that now you've built out

your scenario and so you could then

get to create a-using a flowchart,

you get to essentially give the

little robot its commands.

So you can imagine this being moved

10 feet this way or target this.

>> Target right, target left, target this.

>> Yeah, shoot this missile here.

Whatever you want it to be.

So once we get to this point,

there's a little bit more configuration that goes on

here because there's a lot of objects on the screen,

each one of them is configurable.

So we'll get into that. All right.

So that's the app in a nutshell,

so let's go ahead take a look at how this was done.

>> Sure.

>> So the way I chose to do this I

actually didn't really use the iOS designer much at all.

The only thing that I use that for,

so if we look at my storyboard,

the only thing I used that for was essentially

to link up my segues between views.

So I had to set up a navigation controller to kind of be

the route view and

then from there I kind of connected everything else.

But beyond that as you can see

here just three simple views really too.

That's the only thing that was used for.

Everything has its own code.

>> Build your own diagram inside of-

>> Yeah, exactly. So everything else is done in the code.

So we're going to start by looking at

the main view controller as I've named it here.

So what we've got is

a couple of fields that were created.

So we've got two observable collections to

hold the initial set of data so the initial set of

missions and then the ones that we are

ultimately accepting and passing over to our diagram.

>> Perfect. So you're using observablecollection for

a specific reason instead of a list

that way it kind of like updates

when you get notification.

>> Yeah. So part of the reason is because it's also

copy and pasted from the previous project,

which was also kind of the idea of showing this.

Reusable code is something that everyone loves.

So this was really just a way

of showing that if you needed

to support more than one platform

or more than one approach,

it's easy to do if you've already built it one way.

>> Yeah, because here mission type

and view models if we look at

your code structure actually it seems like that's

in a .NET standard library right.

You saw the android in here.

>> Yes.

>> Even though we're showing iOS but you

have view models and you can reuse some code there.

>> Yes, absolutely.

>> Oh, very cool.

>> Yeah but yet to your point, yeah, these

could probably could have just been lists.

>> Very cool.

>> So we're moving on from there

we create our Kanban control.

So just in this case one line.

So we create new instance of that and then we start

to configure it onto the view.

So the first thing that I did was I calculated

the size of the view balance

and then I did some basic math here.

So I subtracted 40.

>> Yeah.

>> I don't know what units those are. Pixels I'll say.

>> Yeah.

>> Then that way to give myself

room for the button at the bottom.

>> Perfect.

>> So based on that we also calculate where

the position of the button

should be should be at the bottom of that.

Got a view bound and then put it there.

So that's essentially what's going on here.

So you can see some of the math

that's going on to create the-

>> The button on the bottom.

>> Yeah, the Kanban button and the button.

So from there we

actually get to set up the Kanban control.

>> Got it okay. So.

>> The important stuff.

>> Yeah, the important stuff. So we

give the Kanban an item source.

So it has that initial set of data for

the first cars that are set up.

Then we get to set up the columns

that are inside of the Kanban control.

So the first thing you need to do is to

tell the Kanban control

which field from your data is going to

be the column mapping path.

So where is it going to figure out where these cars go.

>> Okay.

>> So in this is we have a field called Category,

so we mapped to that.

So you'll see that down here in

these several lines of code we've actually

created manually the columns themselves.

So I've managed to create

an available missions column and I've

managed to create an accepted missions column.

>> Got it.

>> But, if you look at what I've commented out here,

we can also let the Kanban control do it on its own.

So I can look at your item source,

it can look at your data,

figure out what all the different options

are and just automatically create those columns for you.

>> Very cool.

>> So yeah. It's up to you

depending how your data is structured.

So then really the last thing that's in here

is handling what happens when you drag and drop.

So there's really only one event that I'm handling in

this case and that's drag

and so what happens when you actually drop.

So there's a couple of different scenarios here.

So what happens if you drag within

the same column we are just moving,

changing the index value of

that item within that same column.

>> Got it.

>> Then for the other two scenarios

here is what happens if you move from one column

to the other and then back and forth so we add or we

remove or we just change index values.

>> So you have a source which

is where it started and then

target where it ends and you figure you want to do.

>> So you can grab your source column of variables,

so you can get the title, you can get

the the index value.

So you can do a lot with those are those values.

>> Very cool.

>> Yeah, and that's pretty much it.

>> Like really not that much code.

So that's all you need. That's it.

That's the whole code for the whole thing.

Yeah. So that's the entire Kanban control.

Nothing else is needed. Then what

we saw in the simulator,

let me bring that up again is

rendered just from that- those little bits of code.

>> Do you get a bunch of things for

free here because I didn't- I don't see any code

for like this items count or I don't

see like there's all of that arrow thing.

What are these arrow things?

These are what allow you to collapse

the columns so that you do you get all that for free.

It is customizable so there is

a template you can access to change that,

but it just comes with it.

So there's no additional set up for any of that.

>> How does it know what to render

inside this little card.

>> Yes. So inside of the card

the card itself is also a template

that's pretty much set up for you,

and one of the things that I did

to get them to look the way they do is,

if we go into my model here in the,

in the shared solution.

I have a mission type model.

This was carried over from the previous project.

What I did was I had it inherit from Kanban model.

>> Oh, cool.

>> So the Kanban control does have a model defined within

it that gives you some basic fields and

they are already mapped to those card widgets.

>> Wow, cool. So you don't have to worry

about building- it just does it for you.

>> Yeah.

You don't have to do any kind of

binding or anything like that.

You just set up the fields and you're good to go.

It supports a lot, so it gives you support

for the title description tags,

images all that's built in.

>> Very cool.

>> Yeah. So, from there,

we get to move onto our diagram control.

So, there is a button here and that button

is essentially moving us over to diagram control.

>> Got it. Makes sense.

>> So, once we get to the diagram view,

then this actually was

literally "Copy" and "Paste" from the previous project.

>> Because that one we did in Code Behind.

What I'm thinking of saying Fusion,

if I'm developing Xamarin.Forms app or Xamarin.iOS app,

really there's the designer views,

there is the Code Behind views

and there's the XAML views,

and it seems as if

the Code Behind views are

the same names and the same property.

Is that correct or is it very similar?

>> They are exactly the same.

So, there are very, very few

tweaks that had to be made here.

I think I had changed maybe

the names of some of the collections,

and maybe I had to add this in there.

>> And add it to the iOS view

instead of the Xamarin.Forms view. Very cool.

>> For those who haven't seen

that, what's happening here,

is we are again

creating an instance of the diagram control,

we're setting up its view bounds,

and then we are handling a couple of events.

So, we have a node clicked and a user node clicked.

So, this is where we get into what I mentioned before,

with the concepts of

different objects in some of these controls.

So, if we go into the "Diagram Control,

"Getting Started", there is

a section here called Basic Building Blocks in Diagram.

>> Got it. To learn a little bit about what you're doing.

>> Right. So, the view is comprised of the diagram.

And inside the diagram, we have nodes,

which are the main shapes that you interact with.

Between nodes are connectors,

and those are configurable,

there are different styles you can choose from.

On a node, are multiple ports that you can create,

and each port allows you to

connect multiple connectors to a single node.

So, you can have one on the side,

on the top, on the corners, wherever you want.

And then, annotations are

the blocks of text that go inside of nodes.

>> Got it.

>> So, all these things you need to account

for when you're creating a diagram,

because it will change how

you represent data but depending how you set these up.

>> Cool.

>> So, what we're doing in the code here,

is essentially handling the creation of each of those.

So, when we bring in our initial set of data,

we're going through and we're

picking out each item and creating a node out of it.

So, nodes are very similar to the cards

in a Kanban and that they're preset.

There's already a default template

there, that you don't have to buy anything.

>> I see I have a shape type of a ellipsis,

so I can have a rectangle.

>> Yeah and you can even draw your own shapes.

If you wanted to create

a new graphics item, is draw it out.

You can do that and set that as your shape.

We can also create new annotation.

So, when you create a new node you get to add

a default set of text that you can put in there.

And one thing I didn't show you

was that when you do that,

by default it is editable.

So, if a user double clicks on an annotation,

they get a- there you go.

>> Policy and editor right away.

>> You can change text and do that.

So, one of the things that you

can also do when

you create a node is, of course, control that.

So, you can set it up so that users cannot resize,

rotate, or edit what's inside of the node.

>> They are in control.

>> Yes. So, once we create the nodes,

then we're also handling the creation of new nodes,

after the initial ones based off that initial data set.

>> Every time you hit that "Plus" button.

>> Right. So, every time we hit that "Plus" button.

So, that also gets us into,

so this is where we create that's

handling adding new nodes, which are a different size.

We also calculate the offset,

so that they're not created right on top of each other.

So, we have to figure out

where the original one is and then

move our controls off to the side of it.

Then here, you can see we've chosen

a different shape for them as well.

In addition to shapes, one of the things I didn't

do was do anything with colors,

but you can also

select different colors or

create nodes with different colors.

You can randomize that, you can assign it to

different node types, however you want to do it.

Then, what we're doing after that,

or in between that is,

when we're also creating the new nodes,

we're also going ahead

and creating connectors between them.

So, whenever we create these nodes,

we want to make sure that they're connected to

the previous node and that it was created from.

>> "Source and target" very similar

to the come on board, where things are moving around.

>> Absolutely. So, very simple to handle that.

Pretty easy to understand there.

Also, since we are creating the connection,

so you can see how it can customize them.

We can change the width of the stroke,

we can change the brush type.

We saw the color. We can change the type of segment,

so it can be the step line,

it can be a curved line,

it can be dotted line as well.

>> Got it.

>> Then down here, we have our different actions

that happen when you

click on those "Plus" and "Minus" buttons.

So, we have the "Delete" node and

we have an "Add" node button.

Then, that brings us to the handles themselves.

So, those little "Plus" and "Minus" buttons,

those are user handles.

And just like with ports,

you can have them on all corners

and all sides of the nodes.

So, you can have up to seven,

applied to a node.

Here, I'm just using two.

You can see here, we simply create- in this case,

I'm just creating two button images.

So, an image for the

"Plus" sign an image from the "Minus" sign.

So, what we do, is when we add the user handle,

we give it a name,

we select "Position" relative to the node,

and then we pass through that image.

>> Nice!

>> And that's it.

>> That's it. Not too bad at all.

Again, like almost just about 100 lines of code,

but the entire thing is done for you.

You don't have to worry about the dragging and dropping,

you just writing what you want to happen at that point.

>> Exactly.

>> Very cool.

>> One thing that was mentioned in

the previous session as well is,

with the "Diagram Control",

it's not just a free form flow diagram.

It does support automatic lay out.

So, if you want to create

an organizational chart for example,

if you do something hierarchical,

you can give it a data set

and just have it figure it out.

>> Done.

>> And do it. So, you just got to set

your parent/child relationships and that's it.

So, you can do mind maps, you can do org charts,

you can do flowcharts as well automatically,

and you can pick and

choose which nodes the users can edit.

So, you can have an automatic lay up,

but the users can still edit different parts of it.

>> Nice! Now, those

are just two of the controls that we show,

but can we see them on

the Website or something like that too?

>> Yes. Yes we can.

>>When you go there, and see what else because,

I can imagine this application,

I might want to have some charts or graphs of like,

was it success or what was it

failure, things like that, right?

>> On the website, as we mentioned,

in addition to the free trials,

you can also just look at demos of all the products.

So, there's a view demo section here that lets you see

the controls for all of our platforms.

Mostly the web is visible on the website.

But when we get to mobile and desktop,

we have some sample apps.

For Xamarin, we have a Google Play

or an Android application.

>> On Google Play?

>> On Google Play and in iOS

application on the App Store.

So, you can download that, and that gives you access

to all the controls that we currently have for Xamarin,

and you'll be able to see them for

Xamarin.Forms, iOS and android.

You will get to see all of the features laid out in

very nicely designed example.

So, my example here wasn't

designed, I didn't design anything.

>> Looks pretty good. Actually, what you did is you

just use what was built

in and it actually looks pretty great.

I mean, imagine if you were building

a Com on Board by yourself.

Right? It takes so much time and energy

to imagine how did I do that? Right?

>> Yeah. That's one of the things that's great about it,

is that you can create something like

that without really putting too much effort into it.

If you did put effort into it,

our sample browser shows you what it can look like.

So, you can add more animations,

you can add more images and things like that.

If you visit our site,

click on these links or just go to

the App Store so you can download that.

>> Anything else you want to show off really

quick or you think you've got it all.

>> I think I got it all.

>> Awesome. It's been awesome.

I love seeing the worlds of how we can,

no matter what type of

application we're building whether it's a Xamarin.Forms,

Xamarin Native, VP and web,

you share these great controls everywhere.

>> Absolutely.

>> Thanks for coming on,and showing it off.

>> Thank you for having me.

>> Absolutely. Well thanks everyone for tuning in.

Check out Syncfusion@syncfusion.com.

We'll have all of the links in the show notes below.

Thanks again, of course, for tuning in,

and don't forget to subscribe,

where you can get notifications each and every episode.

So, make sure you hit that subscribe button

over there, down over there.

Ding that bell and become part of the notification squad,

so you get updated every time a new episode is released.

So, until next time.

I'm James Montemagno, and this has been The Xamarin Show.

For more infomation >> Advanced Controls for Xamarin.iOS with Syncfusion | The Xamarin Show - Duration: 23:31.

-------------------------------------------

Are you ready for the weekend? August 2nd - Duration: 4:06.

For more infomation >> Are you ready for the weekend? August 2nd - Duration: 4:06.

-------------------------------------------

4 Cities Suing President Donald Trump For 'Violating The Constitution' | Velshi & Ruhle | MSNBC - Duration: 3:34.

For more infomation >> 4 Cities Suing President Donald Trump For 'Violating The Constitution' | Velshi & Ruhle | MSNBC - Duration: 3:34.

-------------------------------------------

For Evil Spirit - Duration: 10:21.

For more infomation >> For Evil Spirit - Duration: 10:21.

-------------------------------------------

👩👹"BEAUTY AND THE BEAST" / FAIRY TALES FOR BEDTIME / READING BOOK - Duration: 12:50.

Once upon a time there was a very rich man who lived with his three daughters.

The two older daughters laughed at anyone who did not dress as well as they did.

If the two of them were not resting at home, they were out shopping for as many fine dresses

and hats as they could carry home.

The youngest daughter, Beauty, loved to read.

"Your nose is always in a book," her two older sisters said.

They laughed.

"No one will want you!

Look at your hair.

You look like a servant girl!"

Beauty did not know why they were so mean.

But she said nothing.

One day, the father got some bad news.

He had spent all of his money on a ship that he sent out to sea for trade.

Now he learned the ship was gone!

Everything on it was lost.

All at once, the rich father became as poor as poor could be.

The family could no longer stay in their big house.

The fine house, its fine tables and chairs, and all of their fine things, had to be sold.

One day, the father got some very bad news.

All the father had left was a little hut, deep in the woods.

So that is where he and his three daughters had to move.

Living in the hut in the woods was hard work.

Each day a fire had to be started, meals cooked, the place cleaned up, the garden tended, and

things needed fixing when they broke.

Now that the family was poor, you might think the two older sisters would help out.

Think again.

"She looks like such a mess," they said, turning up their noses at Beauty.

"She might as well serve us."

And so Beauty did all the hard work.

The sisters slept late, took naps, and showed up for meals.

"She looks such a mess," they said, turning up their noses.

Then – good news! – the father's ship came to shore!

"My daughters!" said the happy father.

"I am going to town.

Tell me what fine gift I can bring back for you."

"Bring me the best dress from the best shop in town," said the oldest sister.

"I want one just like it," said the middle sister.

"And you, Beauty?" he said.

"All I want, Father," she said, "is a rose."

"Can you believe her?" said the eldest sister.

"What a fool!" said the middle sister.

And they both laughed.

"Girls!" said the father.

"If that is what Beauty wants, that is what I will bring for her."

"All I want, Father," said she, "is a rose."

The father was on his way home when he thought, "Oh my!

I forgot all about the rose for Beauty!"

All at once, the sky turned black.

"Dear, me!

A storm is coming!"

A moment later, heavy dark rains fell down hard from the sky.

Soaking wet, the father saw a blink of light far away.

He went closer to the light.

Maybe it was a place he could stay for the night.

When he got up close, he saw that it was a large palace with candles in all its windows.

Very odd, but the front door was open.

So, the father stepped inside.

"Hello?" he said.

No answer.

There, before him, was a great feast on a long table.

"Hello?" he said again.

Still no answer.

He dared not touch any food on the table.

The father sat down in front of the fire to warm himself.

He waited.

But no one came.

"I suppose it would be all right if I stayed the night," said the father.

"And maybe just one bite."

He took a quick bite from the feast.

Then he found a bedroom and fell fast asleep.

"Hello?" he said.

No answer.

The next morning the table was laid again, but this time with breakfast.

Again - most odd! - no one was there.

"I suppose I should leave now," said the father.

On the way out, he passed a rose garden.

"Ah, I was to bring Beauty a rose!" he remembered.

"I will take just one."

And he picked a rose for Beauty.

Just then, a loud stomp came up from behind.

Roared a voice - "You took my rose!"

The father spun around.

There before him was an awful, huge monster.

"I…

I'm sorry!" he said.

"I didn't know."

"How could you not know?"

roared the Beast.

"You will pay for this!

You will die!"

The father fell on his knees.

"Please!" he begged.

"Do not kill me!

I only picked the rose for one of my daughters."

"You will pay for this!" the Beast yelled.

"You will die!"

"You have daughters?" said the Beast.

"Well.

If one of them will come stay here in your place, I will let you go free.

She must stay here forever.

In three months, if none of them will come in your place, you must return yourself and

take your punishment."

When the father got home, Beauty could tell something was wrong.

"What is it, Father?" she said.

"Oh, nothing," he said.

But she knew that was not true.

At last, the father told his girls what the Beast had said.

"This all happened because I asked you to bring home a rose for me!" said Beauty.

"I will go there in your place.

Or else, you will die there."

"No, I cannot allow that!" said the father.

"I am old.

I do not have much more time to live.

You are young.

You must not do this for me!"

But Beauty would not change her mind.

And so two days later, the father took Beauty to the castle where the Beast lived.

"I will go there in your place.

Or else, you will die there."

"This is your daughter?" said the Beast, looking at Beauty.

"Yes, I am," she said.

"I will stay here for my father.

And that means he is free to go.

That is what you said."

"Yes," said the Beast.

At the Beast's palace, the days were long.

There was no one for Beauty to talk to, and no books to read.

Every night at nine, the Beast would come for dinner.

She would say nothing.

After all, it is not easy to be a prisoner, even if you are at a palace.

The Beast would only grunt.

Then one time at dinner the Beast made a little joke, and she smiled.

Another time, he said something clever, and she looked him in the eye.

After that, he would ask her about her day, and she would tell him.

The days were long and there was no one for Beauty to talk to.

One day, Beauty came to a part of the palace she had not seen before.

Over a door was a sign, "Beauty's Room."

The door was open.

Inside the room were shelves of books from the floor to the ceiling.

There was a piano, and a cabinet of fine dresses just her size.

Now there was much to talk about at dinner!

The Beast was glad that Beauty found the room and liked her surprise.

One night, at the end of dinner, Beast said, "Beauty, I love you.

Will you marry me?"

Beauty did not know what to say.

"Beast, I have come to like it better here," she said.

"Talking to you can be the best part of the day.

But please understand.

I don't want you to marry you."

Many times, the Beast asked her the same question.

And each time Beauty shook her head and said the same thing.

One night, the Beast said, "Beauty, if you will not marry me, what can I do to make you

happy?"

"If you must know," she said, "it would be to see my father.

I miss him so much!"

"Beast, I have come to like it better here," she said.

"Talking to you can be the best part of the day.

But please understand.

I don't want to marry you."

The next night, the Beast gave Beauty two magical gifts - a mirror and a ring.

"If you want to see your father," he said, "just ask the magic mirror to take you to

him.

When you are ready to come back, turn the ring on your finger three times.

Ask the mirror to bring you back here.

But please do not be gone for more than one week.

For I will die of grief!"

Beauty was glad to agree.

When she got back to her room, she looked in the magic mirror.

She asked the mirror to take her to him.

And there he was in bed right before her.

Yet he looked so sick, it was as if he may die!

"But do not be gone for more than one week.

Or I will die of grief!"

Such joy her father felt when he looked up and saw Beauty!

For much of what made him sick was knowing that Beauty was stuck in the palace, all because

of him.

Beauty stayed by her father's bed for many hours.

She told him that things were not quite so bad at the Beast's palace.

She had all the books she could want to read.

She had music to play, and many fine dresses to wear.

"The Beast is really not so bad," she said, "when you get to know him.

He can be good to talk to."

Beauty looked around.

"Where are my sisters?"

"Married," said her father.

"Did they marry good men?" she said.

"They had money," said the father.

"But I do not know if your sisters are happy."

For the eldest sister had married a handsome man who thought of no one but himself.

And the middle sister had married a man who was very clever.

But he used his sharp wit to hurt everyone around him, and most of all his wife.

Beauty looked around.

"Where are my sisters?" she said.

When the sisters came to the house and saw Beauty dressed so well and talking about how

kind and good the Beast was to her, they burned with anger.

Beauty told them she must stay no more than one week.

And the two sisters came up with a plan.

The sisters petted Beauty and said such nice things to her they had never said before.

When she told them she must go soon, they cried.

They said she must not leave!

There was still so much left they wanted to do with her.

And what did it matter anyway, just a few more days?

So Beauty stayed.

One night she had a dream about the Beast.

In her dream, the Beast lay sick and dying.

When Beauty woke up, she asked the magic mirror to show her the Beast.

And there he was in the mirror, lying in the rose garden, looking so sick he would die.

At once, she turned the magic ring three times.

"Take me back to the Beast!" she said.

In a moment she was sitting next to the poor, sick Beast, who could only gasp for air.

In her dream, the Beast lay sick and dying.

"You came back!" said the Beast in a thick voice.

"I am sorry that I am late!" said Beauty.

"I could not bear it that you may not come back to me.

And now, I fear it is too late."

His eyes closed.

"No!" cried Beauty.

"Do not leave me!"

Just then, she knew in her heart what was true.

"I love you!" she cried out.

"Please come back!

Come back and I will be your wife.

I will!"

Tears rolled down her cheeks.

Just then, the Beast opened his eyes.

"Beauty!" he said.

"You did it!"

In a flash, the Beast was changed to a handsome prince!

Beauty did not know what to think.

"Ah, Beauty!" he said.

And the Beast told her his story.

Years ago when he was a prince, an evil fairy had put a spell on him.

He must stay a beast forever, until a maiden grew to love him when he still looked like

a Beast.

Now she had been the one to break the spell!

And so Beauty and her prince, formerly the Beast, were married.

And they lived happily ever after.

Không có nhận xét nào:

Đăng nhận xét