forked from verdnatura/hedera-web
Backup
This commit is contained in:
parent
e178c74f25
commit
f6603ccc13
|
@ -16,7 +16,7 @@
|
||||||
</db-model>
|
</db-model>
|
||||||
</vn-group>
|
</vn-group>
|
||||||
<h1 id="title">
|
<h1 id="title">
|
||||||
<t>Addresses</t>
|
_Addresses
|
||||||
</h1>
|
</h1>
|
||||||
<div id="actions">
|
<div id="actions">
|
||||||
<htk-bar-button
|
<htk-bar-button
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
</db-form>
|
</db-form>
|
||||||
</vn-group>
|
</vn-group>
|
||||||
<h1 id="title">
|
<h1 id="title">
|
||||||
<t>AddEditAddress</t>
|
_AddEditAddress
|
||||||
</h1>
|
</h1>
|
||||||
<div id="actions">
|
<div id="actions">
|
||||||
<htk-bar-button
|
<htk-bar-button
|
||||||
|
@ -35,23 +35,23 @@
|
||||||
<div id="main" class="address">
|
<div id="main" class="address">
|
||||||
<div class="card form">
|
<div class="card form">
|
||||||
<div>
|
<div>
|
||||||
<label><t>Name</t></label>
|
<label>_Name</label>
|
||||||
<htk-entry lot="iter" name="consignee"/>
|
<htk-entry lot="iter" name="consignee"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Address</t></label>
|
<label>_Address</label>
|
||||||
<htk-entry lot="iter" name="name"/>
|
<htk-entry lot="iter" name="name"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>City</t></label>
|
<label>_City</label>
|
||||||
<htk-entry lot="iter" name="city"/>
|
<htk-entry lot="iter" name="city"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>ZipCode</t></label>
|
<label>_ZipCode</label>
|
||||||
<htk-entry lot="iter" name="zip_code"/>
|
<htk-entry lot="iter" name="zip_code"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Country</t></label>
|
<label>_Country</label>
|
||||||
<htk-combo>
|
<htk-combo>
|
||||||
<vn-param
|
<vn-param
|
||||||
id="country"
|
id="country"
|
||||||
|
@ -66,7 +66,7 @@
|
||||||
</htk-combo>
|
</htk-combo>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Province</t></label>
|
<label>_Province</label>
|
||||||
<htk-combo lot="iter" name="province_id">
|
<htk-combo lot="iter" name="province_id">
|
||||||
<db-model property="model" lot="iter">
|
<db-model property="model" lot="iter">
|
||||||
SELECT province_id, name FROM vn2008.province
|
SELECT province_id, name FROM vn2008.province
|
||||||
|
|
|
@ -6,7 +6,6 @@ Hedera.Conf = new Class
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
this.$('user-model').setInfo ('c', 'customer_view', 'hedera');
|
this.$('user-model').setInfo ('c', 'customer_view', 'hedera');
|
||||||
this.$('addresses').setInfo ('a', 'address_view', 'hedera');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
,onPassChangeClick: function ()
|
,onPassChangeClick: function ()
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
</db-form>
|
</db-form>
|
||||||
</vn-group>
|
</vn-group>
|
||||||
<h1 id="title">
|
<h1 id="title">
|
||||||
<t>Configuration</t>
|
_Configuration
|
||||||
</h1>
|
</h1>
|
||||||
<div id="actions">
|
<div id="actions">
|
||||||
<htk-bar-button
|
<htk-bar-button
|
||||||
|
@ -31,15 +31,15 @@
|
||||||
<div id="main" class="conf">
|
<div id="main" class="conf">
|
||||||
<div class="card form">
|
<div class="card form">
|
||||||
<div>
|
<div>
|
||||||
<label for="user-name"><t>Username</t></label>
|
<label for="user-name">_Username</label>
|
||||||
<htk-text lot="user" name="name"/>
|
<htk-text lot="user" name="name"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label for="email"><t>Email</t></label>
|
<label for="email">_Email</label>
|
||||||
<htk-entry lot="user" name="email"></htk-entry>
|
<htk-entry lot="user" name="email"></htk-entry>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label for="mail"><t>Receive invoices by email</t></label>
|
<label for="mail">_Receive invoices by email</label>
|
||||||
<htk-check lot="user" name="mail"/>
|
<htk-check lot="user" name="mail"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -64,10 +64,10 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="button-bar">
|
<div class="button-bar">
|
||||||
<button class="thin" on-click="onPassModifyClick">
|
<button class="thin" on-click="onPassModifyClick">
|
||||||
<t>Modify</t>
|
_Modify
|
||||||
</button>
|
</button>
|
||||||
<button class="thin" on-click="onPassInfoClick">
|
<button class="thin" on-click="onPassInfoClick">
|
||||||
<t>Info</t>
|
_Info
|
||||||
</button>
|
</button>
|
||||||
<div class="clear"/>
|
<div class="clear"/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -78,28 +78,23 @@
|
||||||
modal="true">
|
modal="true">
|
||||||
<div property="child-node" class="htk-dialog pass-info">
|
<div property="child-node" class="htk-dialog pass-info">
|
||||||
<h3>
|
<h3>
|
||||||
<t>Password requirements</t>
|
_Password requirements
|
||||||
</h3>
|
</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<htk-text lot="password-form" name="length"/>
|
<htk-text lot="password-form" name="length"/> <t>characters long</t>
|
||||||
<t>characters long</t>
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<htk-text lot="password-form" name="nAlpha"/>
|
<htk-text lot="password-form" name="nAlpha"/> <t>alphabetic characters</t>
|
||||||
<t>alphabetic characters</t>
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<htk-text lot="password-form" name="nUpper"/>
|
<htk-text lot="password-form" name="nUpper"/> <t>capital letters</t>
|
||||||
<t>capital letters</t>
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<htk-text lot="password-form" name="nDigits"/>
|
<htk-text lot="password-form" name="nDigits"/> <t>digits</t>
|
||||||
<t>digits</t>
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<htk-text lot="password-form" name="nPunct"/>
|
<htk-text lot="password-form" name="nPunct"/> <t>symbols</t>
|
||||||
<t>symbols</t>
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,95 +1,95 @@
|
||||||
<vn>
|
<vn>
|
||||||
<h1 id="title">
|
<h1 id="title">
|
||||||
<t>About</t>
|
_About
|
||||||
</h1>
|
</h1>
|
||||||
<div id="main" class="about">
|
<div id="main" class="about">
|
||||||
<div class="cols">
|
<div class="cols">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h1>
|
<h1>
|
||||||
<t>QualityAndVariety</t>
|
_QualityAndVariety
|
||||||
</h1>
|
</h1>
|
||||||
<p><t>MaximumFreshness</t></p>
|
<p>_MaximumFreshness</p>
|
||||||
<h3><t>SquareMeters</t></h3>
|
<h3>_SquareMeters</h3>
|
||||||
<img src="forms/cms/about/image/store.png" alt="store"/>
|
<img src="forms/cms/about/image/store.png" alt="store"/>
|
||||||
<h3><t>AboutRealms</t></h3>
|
<h3>_AboutRealms</h3>
|
||||||
<p><t>AboutLocation</t></p>
|
<p>_AboutLocation</p>
|
||||||
<img src="forms/cms/about/image/trailer.png" alt="trailer"/>
|
<img src="forms/cms/about/image/trailer.png" alt="trailer"/>
|
||||||
<p>
|
<p>
|
||||||
<img src="forms/cms/about/image/dealer.png" alt="dealer"/>
|
<img src="forms/cms/about/image/dealer.png" alt="dealer"/>
|
||||||
<t>PurchaseThroughWeb</t>
|
_PurchaseThroughWeb
|
||||||
</p>
|
</p>
|
||||||
<img src="forms/cms/about/image/palletizing.png" alt="palletizing"/>
|
<img src="forms/cms/about/image/palletizing.png" alt="palletizing"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h1>
|
<h1>
|
||||||
<t>WhatMakeUsDifferent</t>
|
_WhatMakeUsDifferent
|
||||||
</h1>
|
</h1>
|
||||||
<p><t>DesignVariety</t></p>
|
<p>_DesignVariety</p>
|
||||||
<img src="forms/cms/about/image/differentiates_us.png" alt="differentiates_us"/>
|
<img src="forms/cms/about/image/differentiates_us.png" alt="differentiates_us"/>
|
||||||
<p><t>AdaptToYourNeeds</t></p>
|
<p>_AdaptToYourNeeds</p>
|
||||||
<h3><t>TheBestQuality</t></h3>
|
<h3>_TheBestQuality</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h1>
|
<h1>
|
||||||
<t>AtYourService</t>
|
_AtYourService
|
||||||
</h1>
|
</h1>
|
||||||
<h2><t>BuyersAndTraders</t></h2>
|
<h2>_BuyersAndTraders</h2>
|
||||||
<img src="forms/cms/about/image/commercial.png" alt="commercial"/>
|
<img src="forms/cms/about/image/commercial.png" alt="commercial"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h1>
|
<h1>
|
||||||
<t>Verdnatura training</t>
|
_Verdnatura training
|
||||||
</h1>
|
</h1>
|
||||||
<p><t>GoodTraining</t></p>
|
<p>_GoodTraining</p>
|
||||||
<img src="forms/cms/about/image/training.png" alt="training"/>
|
<img src="forms/cms/about/image/training.png" alt="training"/>
|
||||||
<p><t>SpecialTrainingPrices</t></p>
|
<p>_SpecialTrainingPrices</p>
|
||||||
<img src="forms/cms/about/image/courses.png" alt="courses"/>
|
<img src="forms/cms/about/image/courses.png" alt="courses"/>
|
||||||
<h2><t>YoutubeChannel</t></h2>
|
<h2>_YoutubeChannel</h2>
|
||||||
<img src="forms/cms/about/image/youtube.png" alt="youtube"/>
|
<img src="forms/cms/about/image/youtube.png" alt="youtube"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h1>
|
<h1>
|
||||||
<t>HowWeWork</t>
|
_HowWeWork
|
||||||
</h1>
|
</h1>
|
||||||
<p><t>AalsmeerAuction</t></p>
|
<p>_AalsmeerAuction</p>
|
||||||
<img src="forms/cms/about/image/auction.png" alt="auction"/>
|
<img src="forms/cms/about/image/auction.png" alt="auction"/>
|
||||||
<p><t>BeforeAuction</t></p>
|
<p>_BeforeAuction</p>
|
||||||
<img src="forms/cms/about/image/producers.png" alt="producers"/>
|
<img src="forms/cms/about/image/producers.png" alt="producers"/>
|
||||||
<p><t>DirectlyFromProviders</t></p>
|
<p>_DirectlyFromProviders</p>
|
||||||
<p><t>GoodsDischarge</t></p>
|
<p>_GoodsDischarge</p>
|
||||||
<img src="forms/cms/about/image/goods_transport.png" alt="goods_transport"/>
|
<img src="forms/cms/about/image/goods_transport.png" alt="goods_transport"/>
|
||||||
<h2>
|
<h2>
|
||||||
<t>FirstQualityControl</t>
|
_FirstQualityControl
|
||||||
<img src="forms/cms/about/image/glass.png" alt="glass"/>
|
<img src="forms/cms/about/image/glass.png" alt="glass"/>
|
||||||
</h2>
|
</h2>
|
||||||
<img src="forms/cms/about/image/goods_receive.png" alt="goods_receive"/>
|
<img src="forms/cms/about/image/goods_receive.png" alt="goods_receive"/>
|
||||||
<p><t>GoodsTravel</t></p>
|
<p>_GoodsTravel</p>
|
||||||
<img src="forms/cms/about/image/2_control.png" alt="2_control"/>
|
<img src="forms/cms/about/image/2_control.png" alt="2_control"/>
|
||||||
<p><t>GoodsReception</t></p>
|
<p>_GoodsReception</p>
|
||||||
<h2>
|
<h2>
|
||||||
<t>SecondQualityControl</t>
|
_SecondQualityControl
|
||||||
<img src="forms/cms/about/image/glass.png" alt="glass"/>
|
<img src="forms/cms/about/image/glass.png" alt="glass"/>
|
||||||
</h2>
|
</h2>
|
||||||
<p><t>CustomerOrders</t></p>
|
<p>_CustomerOrders</p>
|
||||||
<img src="forms/cms/about/image/web.png" alt="web"/>
|
<img src="forms/cms/about/image/web.png" alt="web"/>
|
||||||
<p><t>AfterOrder</t></p>
|
<p>_AfterOrder</p>
|
||||||
<img src="forms/cms/about/image/4_control.png" alt="4_control"/>
|
<img src="forms/cms/about/image/4_control.png" alt="4_control"/>
|
||||||
<h2>
|
<h2>
|
||||||
<t>ThirdQualityControl</t>
|
_ThirdQualityControl
|
||||||
<img src="forms/cms/about/image/glass.png" alt="glass"/>
|
<img src="forms/cms/about/image/glass.png" alt="glass"/>
|
||||||
</h2>
|
</h2>
|
||||||
<p><t>BuyerControl</t></p>
|
<p>_BuyerControl</p>
|
||||||
<h2>
|
<h2>
|
||||||
<t>FourthQualityControl</t>
|
_FourthQualityControl
|
||||||
<img src="forms/cms/about/image/glass.png" alt="glass"/>
|
<img src="forms/cms/about/image/glass.png" alt="glass"/>
|
||||||
</h2>
|
</h2>
|
||||||
<p><t>EmbeddedSection</t></p>
|
<p>_EmbeddedSection</p>
|
||||||
<img src="forms/cms/about/image/fit.png" alt="fit"/>
|
<img src="forms/cms/about/image/fit.png" alt="fit"/>
|
||||||
<p><t>AfterEmbedAgency</t></p>
|
<p>_AfterEmbedAgency</p>
|
||||||
<img src="forms/cms/about/image/agencies.png" alt="agencies"/>
|
<img src="forms/cms/about/image/agencies.png" alt="agencies"/>
|
||||||
<p><t>FreshnessGuaranteed</t></p>
|
<p>_FreshnessGuaranteed</p>
|
||||||
<p class="summary">
|
<p class="summary">
|
||||||
<t>AboutSummary</t>
|
_AboutSummary
|
||||||
<img src="image/logo.svg" alt="Verdnatura"/>
|
<img src="image/logo.svg" alt="Verdnatura"/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<vn>
|
<vn>
|
||||||
<h1 id="title">
|
<h1 id="title">
|
||||||
<t>IWantCustomer</t>
|
_IWantCustomer
|
||||||
</h1>
|
</h1>
|
||||||
<div id="main" class="contact">
|
<div id="main" class="contact">
|
||||||
<form
|
<form
|
||||||
|
@ -8,45 +8,45 @@
|
||||||
<input type="hidden" name="srv" value="json:misc/contact"/>
|
<input type="hidden" name="srv" value="json:misc/contact"/>
|
||||||
<div class="card form">
|
<div class="card form">
|
||||||
<p>
|
<p>
|
||||||
<t>FillFormData</t>
|
_FillFormData
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<t>OrCallUs</t>
|
_OrCallUs
|
||||||
</p>
|
</p>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Name</t></label>
|
<label>_Name</label>
|
||||||
<input type="text" name="name"/>
|
<input type="text" name="name"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>City</t></label>
|
<label>_City</label>
|
||||||
<input type="text" name="city"/>
|
<input type="text" name="city"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>PC</t></label>
|
<label>_PC</label>
|
||||||
<input type="text" name="pc"/>
|
<input type="text" name="pc"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Phone</t></label>
|
<label>_Phone</label>
|
||||||
<input type="text" name="phone"/>
|
<input type="text" name="phone"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>EMail</t></label>
|
<label>_EMail</label>
|
||||||
<input type="text" name="email"/>
|
<input type="text" name="email"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Message</t></label>
|
<label>_Message</label>
|
||||||
<textarea name="message"/>
|
<textarea name="message"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group captcha">
|
<div class="form-group captcha">
|
||||||
<label><t>Anti-Spam</t></label>
|
<label>_Anti-Spam</label>
|
||||||
<input type="text" name="captcha"/>
|
<input type="text" name="captcha"/>
|
||||||
<img alt="Captcha" id="captcha-img"/>
|
<img alt="Captcha" id="captcha-img"/>
|
||||||
</div>
|
</div>
|
||||||
<p class="mandatory-message">
|
<p class="mandatory-message">
|
||||||
<t>AllFieldsMandatory</t>
|
_AllFieldsMandatory
|
||||||
</p>
|
</p>
|
||||||
<button class="thin">
|
<button class="thin">
|
||||||
<t>Send</t>
|
_Send
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -539,6 +539,13 @@ Vn.Filter = new Class
|
||||||
this._label.nodeValue = _('Loading...');
|
this._label.nodeValue = _('Loading...');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
,_destroy: function ()
|
||||||
|
{
|
||||||
|
this._select.unref ();
|
||||||
|
this._modelLot.unref ();
|
||||||
|
this.parent ();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -218,13 +218,12 @@
|
||||||
<div id="filters" class="filters">
|
<div id="filters" class="filters">
|
||||||
<h2><t>Filter by</t></h2>
|
<h2><t>Filter by</t></h2>
|
||||||
<vn-filter
|
<vn-filter
|
||||||
lot="params"
|
|
||||||
name="type"
|
name="type"
|
||||||
|
lot="params"
|
||||||
placeholder="_Family">
|
placeholder="_Family">
|
||||||
<db-model
|
<db-model
|
||||||
id="types"
|
id="types"
|
||||||
property="model"
|
property="model"
|
||||||
conn="conn"
|
|
||||||
lot="params"
|
lot="params"
|
||||||
result-index="1"
|
result-index="1"
|
||||||
on-status-changed="refreshTitle">
|
on-status-changed="refreshTitle">
|
||||||
|
@ -240,8 +239,8 @@
|
||||||
</vn-filter>
|
</vn-filter>
|
||||||
<vn-filter
|
<vn-filter
|
||||||
id="test"
|
id="test"
|
||||||
lot="params"
|
|
||||||
name="color"
|
name="color"
|
||||||
|
lot="params"
|
||||||
placeholder="_Color"
|
placeholder="_Color"
|
||||||
filter="filter">
|
filter="filter">
|
||||||
<db-model property="model" auto-load="false" result-index="1">
|
<db-model property="model" auto-load="false" result-index="1">
|
||||||
|
@ -257,8 +256,8 @@
|
||||||
</db-model>
|
</db-model>
|
||||||
</vn-filter>
|
</vn-filter>
|
||||||
<vn-filter
|
<vn-filter
|
||||||
lot="params"
|
|
||||||
name="producer"
|
name="producer"
|
||||||
|
lot="params"
|
||||||
placeholder="_Producer"
|
placeholder="_Producer"
|
||||||
filter="filter">
|
filter="filter">
|
||||||
<db-model property="model" auto-load="false" result-index="1">
|
<db-model property="model" auto-load="false" result-index="1">
|
||||||
|
@ -273,8 +272,8 @@
|
||||||
</db-model>
|
</db-model>
|
||||||
</vn-filter>
|
</vn-filter>
|
||||||
<vn-filter
|
<vn-filter
|
||||||
lot="params"
|
|
||||||
name="origin"
|
name="origin"
|
||||||
|
lot="params"
|
||||||
placeholder="_Origin"
|
placeholder="_Origin"
|
||||||
filter="filter">
|
filter="filter">
|
||||||
<db-model property="model" auto-load="false" result-index="1">
|
<db-model property="model" auto-load="false" result-index="1">
|
||||||
|
@ -290,8 +289,8 @@
|
||||||
</db-model>
|
</db-model>
|
||||||
</vn-filter>
|
</vn-filter>
|
||||||
<vn-filter
|
<vn-filter
|
||||||
lot="params"
|
|
||||||
name="category"
|
name="category"
|
||||||
|
lot="params"
|
||||||
placeholder="_Category"
|
placeholder="_Category"
|
||||||
filter="filter">
|
filter="filter">
|
||||||
<db-model property="model" auto-load="false" result-index="1">
|
<db-model property="model" auto-load="false" result-index="1">
|
||||||
|
|
|
@ -171,7 +171,7 @@ Hedera.Checkout = new Class
|
||||||
|
|
||||||
if (row != -1)
|
if (row != -1)
|
||||||
{
|
{
|
||||||
var builder = this.$('repeater').getBuilder (row);
|
var builder = this.$('repeater').getScope (row);
|
||||||
|
|
||||||
this.selectedNode = builder.$('address');
|
this.selectedNode = builder.$('address');
|
||||||
Vn.Node.addClass (this.selectedNode, 'selected');
|
Vn.Node.addClass (this.selectedNode, 'selected');
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
</db-model>
|
</db-model>
|
||||||
</vn-group>
|
</vn-group>
|
||||||
<h1 id="title">
|
<h1 id="title">
|
||||||
<t>ConfigureOrder</t>
|
_ConfigureOrder
|
||||||
</h1>
|
</h1>
|
||||||
<div id="actions">
|
<div id="actions">
|
||||||
<htk-bar-button
|
<htk-bar-button
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
node="assistant-node"/>
|
node="assistant-node"/>
|
||||||
<div id="assistant-node">
|
<div id="assistant-node">
|
||||||
<div id="method-step">
|
<div id="method-step">
|
||||||
<h2><t>DeliveryOrPickupQuestion</t></h2>
|
<h2>_DeliveryOrPickupQuestion</h2>
|
||||||
<div class="answers radio">
|
<div class="answers radio">
|
||||||
<htk-radio-group
|
<htk-radio-group
|
||||||
id="rg-method"
|
id="rg-method"
|
||||||
|
@ -48,21 +48,21 @@
|
||||||
name="method"
|
name="method"
|
||||||
on-changed="onFieldChange"/>
|
on-changed="onFieldChange"/>
|
||||||
<div>
|
<div>
|
||||||
<htk-radio radio-group="rg-method" value="AGENCY"/>
|
<htk-radio radio-group="rg-method" id="r-agency" value="AGENCY"/>
|
||||||
<label><t>ReceiveThroughtAgency</t></label>
|
<label for="r-agency">_ReceiveThroughtAgency</label>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<htk-radio radio-group="rg-method" value="DELIVERY"/>
|
<htk-radio radio-group="rg-method" id="r-delivery" value="DELIVERY"/>
|
||||||
<label><t>ReceiveThroughtRoute</t></label>
|
<label for="r-delivery">_ReceiveThroughtRoute</label>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<htk-radio radio-group="rg-method" value="PICKUP"/>
|
<htk-radio radio-group="rg-method" id="r-pickup" value="PICKUP"/>
|
||||||
<label><t>PickupInStore</t></label>
|
<label for="r-pickup">_PickupInStore</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="date-step">
|
<div id="date-step">
|
||||||
<h2 id="date-question"><t>OrderDateDeliveryQuestion</t></h2>
|
<h2 id="date-question">_OrderDateDeliveryQuestion</h2>
|
||||||
<div class="answers">
|
<div class="answers">
|
||||||
<htk-calendar
|
<htk-calendar
|
||||||
id="calendar"
|
id="calendar"
|
||||||
|
@ -70,11 +70,11 @@
|
||||||
lot="lot"
|
lot="lot"
|
||||||
name="date"
|
name="date"
|
||||||
restrict-func="calendarRestrict"
|
restrict-func="calendarRestrict"
|
||||||
on-changed="onFieldChange"/>
|
on-pick="onFieldChange"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="address-step">
|
<div id="address-step">
|
||||||
<h2><t>AddressQuestion</t></h2>
|
<h2>_AddressQuestion</h2>
|
||||||
<db-form id="address-form" model="addresses"/>
|
<db-form id="address-form" model="addresses"/>
|
||||||
<div class="answers target">
|
<div class="answers target">
|
||||||
<htk-repeater
|
<htk-repeater
|
||||||
|
@ -103,7 +103,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="agency-step">
|
<div id="agency-step">
|
||||||
<h2><t>AgencyQuestion</t></h2>
|
<h2>_AgencyQuestion</h2>
|
||||||
<div class="answers target">
|
<div class="answers target">
|
||||||
<htk-combo
|
<htk-combo
|
||||||
id="agency-combo"
|
id="agency-combo"
|
||||||
|
@ -114,7 +114,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="pickup-step">
|
<div id="pickup-step">
|
||||||
<h2><t>PickupWarehouseQuestion</t></h2>
|
<h2>_PickupWarehouseQuestion</h2>
|
||||||
<div class="answers target">
|
<div class="answers target">
|
||||||
<htk-combo
|
<htk-combo
|
||||||
id="warehouse-combo"
|
id="warehouse-combo"
|
||||||
|
@ -125,57 +125,52 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="confirm-agency-step" class="confirm">
|
<div id="confirm-agency-step" class="confirm">
|
||||||
<h2><t>ConfirmToAccessCatalog</t></h2>
|
<h2>_ConfirmToAccessCatalog</h2>
|
||||||
<div class="answers target">
|
<div class="answers target">
|
||||||
<p>
|
<p>
|
||||||
<t>Arrival</t>
|
<t>Arrival</t> <htk-text format="%D" lot="lot" name="date"/>
|
||||||
<htk-text format="%D" lot="lot" name="date"/>
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<htk-text lot="address-form" name="name"/>
|
<htk-text lot="address-form" name="name"/>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<t>Agency</t>
|
<t>Agency</t> <htk-text lot="agency-combo" name="description"/>
|
||||||
<htk-text lot="agency-combo" name="description"/>
|
|
||||||
</p>
|
</p>
|
||||||
<button id="confirm-agency" class="thin" on-click="onConfirmClick">
|
<button id="confirm-agency" class="thin" on-click="onConfirmClick">
|
||||||
<t>Confirm</t>
|
_Confirm
|
||||||
</button>
|
</button>
|
||||||
<div class="clear"/>
|
<div class="clear"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="confirm-delivery-step" class="confirm">
|
<div id="confirm-delivery-step" class="confirm">
|
||||||
<h2><t>ConfirmToAccessCatalog</t></h2>
|
<h2>_ConfirmToAccessCatalog</h2>
|
||||||
<div class="answers target">
|
<div class="answers target">
|
||||||
<p>
|
<p>
|
||||||
<t>Arrival</t>
|
<t>Arrival</t> <htk-text format="%D" lot="lot" name="date"/>
|
||||||
<htk-text format="%D" lot="lot" name="date"/>
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<htk-text lot="address-form" name="name"/>
|
<htk-text lot="address-form" name="name"/>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<t>ReceiveThroughtRoute</t>
|
_ReceiveThroughtRoute
|
||||||
</p>
|
</p>
|
||||||
<button id="confirm-delivery" class="thin" on-click="onConfirmClick">
|
<button id="confirm-delivery" class="thin" on-click="onConfirmClick">
|
||||||
<t>Confirm</t>
|
_Confirm
|
||||||
</button>
|
</button>
|
||||||
<div class="clear"/>
|
<div class="clear"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="confirm-pickup-step" class="confirm">
|
<div id="confirm-pickup-step" class="confirm">
|
||||||
<h2><t>ConfirmToAccessCatalog</t></h2>
|
<h2>_ConfirmToAccessCatalog</h2>
|
||||||
<div class="answers target">
|
<div class="answers target">
|
||||||
<p>
|
<p>
|
||||||
<t>Pickup</t>
|
<t>Pickup</t> <htk-text format="%D" lot="lot" name="date"/>
|
||||||
<htk-text format="%D" lot="lot" name="date"/>
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<t>Warehouse</t>
|
<t>Warehouse</t> <htk-text lot="warehouse-combo" name="description"/>
|
||||||
<htk-text lot="warehouse-combo" name="description"/>
|
|
||||||
</p>
|
</p>
|
||||||
<button id="confirm-pickup" class="thin" on-click="onConfirmClick">
|
<button id="confirm-pickup" class="thin" on-click="onConfirmClick">
|
||||||
<t>Confirm</t>
|
_Confirm
|
||||||
</button>
|
</button>
|
||||||
<div class="clear"/>
|
<div class="clear"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<vn-param lot="iter" name="text" on-changed="onBodyChange"/>
|
<vn-param lot="iter" name="text" on-changed="onBodyChange"/>
|
||||||
</vn-group>
|
</vn-group>
|
||||||
<h1 id="title">
|
<h1 id="title">
|
||||||
<t>AddEditNew</t>
|
_AddEditNew
|
||||||
</h1>
|
</h1>
|
||||||
<div id="actions">
|
<div id="actions">
|
||||||
<htk-bar-button
|
<htk-bar-button
|
||||||
|
@ -29,11 +29,11 @@
|
||||||
<div id="main" class="new">
|
<div id="main" class="new">
|
||||||
<div class="card form">
|
<div class="card form">
|
||||||
<div>
|
<div>
|
||||||
<label><t>Title</t></label>
|
<label>_Title</label>
|
||||||
<htk-entry lot="iter" name="title"/>
|
<htk-entry lot="iter" name="title"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Tag</t></label>
|
<label>_Tag</label>
|
||||||
<htk-combo lot="iter" name="tag">
|
<htk-combo lot="iter" name="tag">
|
||||||
<db-model property="model">
|
<db-model property="model">
|
||||||
SELECT name, description FROM news_tag
|
SELECT name, description FROM news_tag
|
||||||
|
@ -42,11 +42,11 @@
|
||||||
</htk-combo>
|
</htk-combo>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Priority</t></label>
|
<label>_Priority</label>
|
||||||
<htk-entry form="iter" column="priority"/>
|
<htk-entry form="iter" column="priority"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>NewBody</t></label>
|
<label>_NewBody</label>
|
||||||
<textarea id="html-editor"/>
|
<textarea id="html-editor"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<vn>
|
<vn>
|
||||||
<h1 id="title">
|
<h1 id="title">
|
||||||
<t>NewsManagement</t>
|
_NewsManagement
|
||||||
</h1>
|
</h1>
|
||||||
<div id="actions">
|
<div id="actions">
|
||||||
<htk-bar-button
|
<htk-bar-button
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<vn>
|
<vn>
|
||||||
<h1 id="title">
|
<h1 id="title">
|
||||||
<t>Preview</t>
|
_Preview
|
||||||
</h1>
|
</h1>
|
||||||
<div id="actions">
|
<div id="actions">
|
||||||
<htk-bar-button
|
<htk-bar-button
|
||||||
|
|
|
@ -5,19 +5,15 @@ Hedera.ItemsForm = new Class
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
this.$('warehouse').value = 7;
|
this.$('lot').assign ({
|
||||||
this.$('realm').value = null;
|
warehouse: 7,
|
||||||
|
realm: null
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
,onPreviewClick: function ()
|
,onShowClick: function ()
|
||||||
{
|
{
|
||||||
var batch = new Sql.Batch ();
|
this.gui.openReport ('items-report', this.$('lot').params);
|
||||||
batch.addValues ({
|
|
||||||
'warehouse': this.$('warehouse').value
|
|
||||||
,'realm': this.$('realm').value
|
|
||||||
,'rate': this.$('rate').value
|
|
||||||
});
|
|
||||||
this.gui.openReport ('items-report', batch);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<vn>
|
<vn>
|
||||||
<vn-lot id="lot"/>
|
<vn-lot id="lot"/>
|
||||||
<h1 id="title">
|
<h1 id="title">
|
||||||
<t>Item list</t>
|
_Item list
|
||||||
</h1>
|
</h1>
|
||||||
<div id="actions" class="action-bar">
|
<div id="actions" class="action-bar">
|
||||||
<htk-bar-button
|
<htk-bar-button
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
<div id="main" class="items">
|
<div id="main" class="items">
|
||||||
<div class="card form">
|
<div class="card form">
|
||||||
<div>
|
<div>
|
||||||
<label><t>Store</t></label>
|
<label>_Store</label>
|
||||||
<htk-combo lot="lot" name="warehouse">
|
<htk-combo lot="lot" name="warehouse">
|
||||||
<db-model property="model">
|
<db-model property="model">
|
||||||
SELECT id, name FROM vn2008.warehouse
|
SELECT id, name FROM vn2008.warehouse
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
</htk-combo>
|
</htk-combo>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Realm</t></label>
|
<label>_Realm</label>
|
||||||
<htk-combo lot="lot" name="realm" not-null="false">
|
<htk-combo lot="lot" name="realm" not-null="false">
|
||||||
<db-model property="model">
|
<db-model property="model">
|
||||||
SELECT id, reino FROM vn2008.reinos
|
SELECT id, reino FROM vn2008.reinos
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
</htk-combo>
|
</htk-combo>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Rate</t></label>
|
<label>_Rate</label>
|
||||||
<select id="rate">
|
<select id="rate">
|
||||||
<option>3</option>
|
<option>3</option>
|
||||||
<option>2</option>
|
<option>2</option>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
</vn-lot-query>
|
</vn-lot-query>
|
||||||
<vn-lot id="lot"/>
|
<vn-lot id="lot"/>
|
||||||
<h1 id="title">
|
<h1 id="title">
|
||||||
<t>Shelves</t>
|
_Shelves
|
||||||
</h1>
|
</h1>
|
||||||
<div id="actions">
|
<div id="actions">
|
||||||
<htk-bar-button
|
<htk-bar-button
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<div id="main" class="shelves">
|
<div id="main" class="shelves">
|
||||||
<div class="card form">
|
<div class="card form">
|
||||||
<div>
|
<div>
|
||||||
<label><t>Configuration</t></label>
|
<label>_Configuration</label>
|
||||||
<htk-combo
|
<htk-combo
|
||||||
id="config"
|
id="config"
|
||||||
placeholder="_Select config"
|
placeholder="_Select config"
|
||||||
|
@ -33,11 +33,11 @@
|
||||||
</htk-combo>
|
</htk-combo>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Date</t></label>
|
<label>_Date</label>
|
||||||
<htk-date-chooser lot="lot" name="date"/>
|
<htk-date-chooser lot="lot" name="date"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Reign</t></label>
|
<label>_Reign</label>
|
||||||
<htk-combo lot="lot" name="realm">
|
<htk-combo lot="lot" name="realm">
|
||||||
<db-model property="model">
|
<db-model property="model">
|
||||||
SELECT id, reino FROM vn2008.reinos
|
SELECT id, reino FROM vn2008.reinos
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
</htk-combo>
|
</htk-combo>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Family</t></label>
|
<label>_Family</label>
|
||||||
<htk-combo lot="lot" name="family">
|
<htk-combo lot="lot" name="family">
|
||||||
<db-model property="model" lot="lot">
|
<db-model property="model" lot="lot">
|
||||||
SELECT tipo_id, Tipo FROM vn2008.Tipos
|
SELECT tipo_id, Tipo FROM vn2008.Tipos
|
||||||
|
@ -55,7 +55,7 @@
|
||||||
</htk-combo>
|
</htk-combo>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Store</t></label>
|
<label>_Store</label>
|
||||||
<htk-combo lot="lot" name="warehouse">
|
<htk-combo lot="lot" name="warehouse">
|
||||||
<db-model property="model">
|
<db-model property="model">
|
||||||
SELECT id, name FROM vn2008.warehouse
|
SELECT id, name FROM vn2008.warehouse
|
||||||
|
@ -64,7 +64,7 @@
|
||||||
</htk-combo>
|
</htk-combo>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Shelf</t></label>
|
<label>_Shelf</label>
|
||||||
<htk-combo lot="lot" name="shelf">
|
<htk-combo lot="lot" name="shelf">
|
||||||
<db-model property="model">
|
<db-model property="model">
|
||||||
SELECT id, name FROM shelf
|
SELECT id, name FROM shelf
|
||||||
|
@ -72,27 +72,27 @@
|
||||||
</htk-combo>
|
</htk-combo>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Name prefix</t></label>
|
<label>_Name prefix</label>
|
||||||
<htk-entry lot="lot" name="namePrefix"/>
|
<htk-entry lot="lot" name="namePrefix"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Limit amount per item</t></label>
|
<label>_Limit amount per item</label>
|
||||||
<htk-entry lot="lot" name="maxAmount"/>
|
<htk-entry lot="lot" name="maxAmount"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Title</t></label>
|
<label>_Title</label>
|
||||||
<htk-entry lot="lot" name="reportTitle"/>
|
<htk-entry lot="lot" name="reportTitle"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Show packing</t></label>
|
<label>_Show packing</label>
|
||||||
<htk-check lot="lot" name="showPacking"/>
|
<htk-check lot="lot" name="showPacking"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Stack different items</t></label>
|
<label>_Stack different items</label>
|
||||||
<htk-check lot="lot" name="stack"/>
|
<htk-check lot="lot" name="stack"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><t>Use ids instead of names</t></label>
|
<label>_Use ids instead of names</label>
|
||||||
<htk-check lot="lot" name="useIds"/>
|
<htk-check lot="lot" name="useIds"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,7 +3,7 @@ var Gui = require ('./gui');
|
||||||
|
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Htk.Component
|
Extends: Vn.Component
|
||||||
,Properties: {
|
,Properties: {
|
||||||
gui:
|
gui:
|
||||||
{
|
{
|
||||||
|
@ -35,15 +35,17 @@ module.exports = new Class
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var builder = new Vn.Builder ();
|
var builder = new Vn.Builder ();
|
||||||
builder.signalData = this;
|
builder.compileFile ('forms/'+ this.formInfo.path +'/ui.xml');
|
||||||
builder.add ('conn', this.conn);
|
|
||||||
builder.add ('hash', this.hash);
|
|
||||||
builder.loadXml ('forms/'+ this.formInfo.path +'/ui.xml');
|
|
||||||
|
|
||||||
var res = this.builder = builder.load ();
|
var extraObjects = {
|
||||||
this._node = res.$('main');
|
conn: this.conn,
|
||||||
|
hash: this.hash
|
||||||
|
};
|
||||||
|
var scope = builder.load (this.doc, this, null, extraObjects);
|
||||||
|
this.scope = scope;
|
||||||
|
this._node = this.$('main');
|
||||||
|
|
||||||
var paramsLot = res.$('params');
|
var paramsLot = this.$('params');
|
||||||
|
|
||||||
if (paramsLot)
|
if (paramsLot)
|
||||||
{
|
{
|
||||||
|
@ -51,14 +53,14 @@ module.exports = new Class
|
||||||
this.params = paramsLot;
|
this.params = paramsLot;
|
||||||
}
|
}
|
||||||
|
|
||||||
res.link ();
|
scope.link ();
|
||||||
|
|
||||||
var models = res.getByTagName ('db-model');
|
var models = scope.getByTagName ('db-model');
|
||||||
|
|
||||||
for (var i = 0; i < models.length; i++)
|
for (var i = 0; i < models.length; i++)
|
||||||
models[i].conn = this.conn;
|
models[i].conn = this.conn;
|
||||||
|
|
||||||
var queries = res.getByTagName ('db-query');
|
var queries = scope.getByTagName ('db-query');
|
||||||
|
|
||||||
for (var i = 0; i < queries.length; i++)
|
for (var i = 0; i < queries.length; i++)
|
||||||
queries[i].conn = this.conn;
|
queries[i].conn = this.conn;
|
||||||
|
@ -66,8 +68,8 @@ module.exports = new Class
|
||||||
if (this.node)
|
if (this.node)
|
||||||
{
|
{
|
||||||
this.gui.setForm (this.node);
|
this.gui.setForm (this.node);
|
||||||
this.gui.setTitle (res.$('title'));
|
this.gui.setTitle (scope.$('title'));
|
||||||
this.gui.setActions (res.$('actions'));
|
this.gui.setActions (scope.$('actions'));
|
||||||
this.activate ();
|
this.activate ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,17 +84,17 @@ module.exports = new Class
|
||||||
if (this.node)
|
if (this.node)
|
||||||
{
|
{
|
||||||
this.deactivate ();
|
this.deactivate ();
|
||||||
this.builder.unref ();
|
this.scope.unref ();
|
||||||
this.gui.setTitle (null);
|
this.gui.setTitle (null);
|
||||||
this.gui.setActions (null);
|
this.gui.setActions (null);
|
||||||
this.gui.setForm (null);
|
this.gui.setForm (null);
|
||||||
this.node = null;
|
this.node = null;
|
||||||
this.params = null;
|
this.params = null;
|
||||||
}
|
}
|
||||||
if (this.builder)
|
if (this.scope)
|
||||||
{
|
{
|
||||||
this.builder.unref ();
|
this.scope.unref ();
|
||||||
this.builder = null;
|
this.scope = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ require ('./gui.css');
|
||||||
*/
|
*/
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Htk.Component,
|
Extends: Vn.Component,
|
||||||
Properties:
|
Properties:
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -54,7 +54,7 @@ module.exports = new Class
|
||||||
|
|
||||||
,initialize: function (props)
|
,initialize: function (props)
|
||||||
{
|
{
|
||||||
this.builderInitString (Tpl);
|
this.loadTemplateFromString (Tpl);
|
||||||
this.loadingCount = 0;
|
this.loadingCount = 0;
|
||||||
|
|
||||||
this.$('background').onclick = function () {};
|
this.$('background').onclick = function () {};
|
||||||
|
|
|
@ -8,7 +8,7 @@ require ('./login.css');
|
||||||
*/
|
*/
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Htk.Component,
|
Extends: Vn.Component,
|
||||||
Properties:
|
Properties:
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +31,7 @@ module.exports = new Class
|
||||||
,initialize: function (props)
|
,initialize: function (props)
|
||||||
{
|
{
|
||||||
this.parent (props);
|
this.parent (props);
|
||||||
this.builderInitString (Tpl);
|
this.loadTemplateFromString (Tpl);
|
||||||
|
|
||||||
this.$('social-bar').conn = this._conn;
|
this.$('social-bar').conn = this._conn;
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
/* page-break-after: always;*/
|
/* page-break-after: always;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Widgets */
|
/* Components */
|
||||||
|
|
||||||
.report .htk-grid
|
.report .htk-grid
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Htk.Component
|
Extends: Vn.Component
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
|
@ -46,12 +46,13 @@ module.exports = new Class
|
||||||
,renderReport: function ()
|
,renderReport: function ()
|
||||||
{
|
{
|
||||||
var builder = new Vn.Builder ();
|
var builder = new Vn.Builder ();
|
||||||
builder.signalData = this;
|
builder.compileFile ('reports/'+ this.info.path +'/ui.xml');
|
||||||
builder.add ('hash', this.hash);
|
|
||||||
builder.add ('conn', this.conn);
|
|
||||||
builder.loadXml ('reports/'+ this.info.path +'/ui.xml');
|
|
||||||
|
|
||||||
var res = this.builderResultInit (builder);
|
var extraObjects = {
|
||||||
this.body.appendChild (res.$('report'));
|
conn: this.conn,
|
||||||
|
hash: this.hash
|
||||||
|
};
|
||||||
|
this.loadScope (builder, null, extraObjects);
|
||||||
|
this.body.appendChild (this.$('report'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Htk.Widget
|
Extends: Vn.Component
|
||||||
,Tag: 'htk-social-bar'
|
,Tag: 'htk-social-bar'
|
||||||
,Properties:
|
,Properties:
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
|
|
||||||
var Widget = require ('./widget');
|
|
||||||
var Assistant = require ('./assistant');
|
var Assistant = require ('./assistant');
|
||||||
|
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Widget
|
Extends: Vn.Component
|
||||||
,Tag: 'htk-assistant-bar'
|
,Tag: 'htk-assistant-bar'
|
||||||
,Properties:
|
,Properties:
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
|
|
||||||
var NodeBuilder = require ('./node-builder');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a grid column. This is an abstract class and should not be
|
* Represents a grid column. This is an abstract class and should not be
|
||||||
* instantiated directly.
|
* instantiated directly.
|
||||||
*/
|
*/
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: NodeBuilder
|
Extends: Vn.NodeBuilder
|
||||||
,Tag: 'htk-column'
|
,Tag: 'htk-column'
|
||||||
,Properties:
|
,Properties:
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
|
|
||||||
var Widget = require ('./widget');
|
|
||||||
|
|
||||||
module.exports = new Class
|
|
||||||
({
|
|
||||||
Extends: Widget
|
|
||||||
|
|
||||||
,builder: null
|
|
||||||
|
|
||||||
,builderInit: function (path)
|
|
||||||
{
|
|
||||||
var builder = new Vn.Builder ();
|
|
||||||
builder.signalData = this;
|
|
||||||
builder.loadXml (path, this.doc);
|
|
||||||
this.builderResultInit (builder);
|
|
||||||
}
|
|
||||||
|
|
||||||
,builderInitString: function (xmlString)
|
|
||||||
{
|
|
||||||
var builder = new Vn.Builder ();
|
|
||||||
builder.signalData = this;
|
|
||||||
builder.loadFromString (xmlString, this.doc);
|
|
||||||
this.builderResultInit (builder);
|
|
||||||
}
|
|
||||||
|
|
||||||
,builderResultInit: function (builder)
|
|
||||||
{
|
|
||||||
var res = this.builder = builder.load ();
|
|
||||||
this._node = res.$('main');
|
|
||||||
res.link ();
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets an object from the builder associated to this component.
|
|
||||||
*
|
|
||||||
* @param {string} objectId The object identifier
|
|
||||||
* @return {Object} The object, or %null if not found
|
|
||||||
*/
|
|
||||||
,$: function (id)
|
|
||||||
{
|
|
||||||
if (this.builder)
|
|
||||||
return this.builder.getById (id);
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
,_destroy: function ()
|
|
||||||
{
|
|
||||||
if (this.builder)
|
|
||||||
this.builder.unref ();
|
|
||||||
|
|
||||||
this.parent ();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
|
|
||||||
var Widget = require ('./widget');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base class for graphical fields.
|
* Base class for graphical fields.
|
||||||
*/
|
*/
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Widget
|
Extends: Vn.Component
|
||||||
,Implements: Vn.ParamIface
|
,Implements: Vn.ParamIface
|
||||||
,Tag: 'htk-field'
|
,Tag: 'htk-field'
|
||||||
,Properties:
|
,Properties:
|
||||||
|
|
|
@ -12,7 +12,7 @@ module.exports = new Class
|
||||||
{
|
{
|
||||||
this._restrictFunc = x;
|
this._restrictFunc = x;
|
||||||
}
|
}
|
||||||
,get: function (x)
|
,get: function ()
|
||||||
{
|
{
|
||||||
return this._restrictFunc;
|
return this._restrictFunc;
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,8 @@ module.exports = new Class
|
||||||
for (var j = 0; j < len; j++)
|
for (var j = 0; j < len; j++)
|
||||||
{
|
{
|
||||||
var td = this.createElement ('td');
|
var td = this.createElement ('td');
|
||||||
td.addEventListener ('click', this.dayClicked.bind (this, td, i*len+j));
|
td.addEventListener ('click',
|
||||||
|
this.dayClicked.bind (this, td, i * len + j));
|
||||||
tr.appendChild (td);
|
tr.appendChild (td);
|
||||||
|
|
||||||
var div = this.createElement ('div');
|
var div = this.createElement ('div');
|
||||||
|
@ -226,7 +227,7 @@ module.exports = new Class
|
||||||
this.selectedCell = cellIndex;
|
this.selectedCell = cellIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
,putValue: function (value)
|
,putValue: function ()
|
||||||
{
|
{
|
||||||
this.goToSelectedMonth ();
|
this.goToSelectedMonth ();
|
||||||
}
|
}
|
||||||
|
@ -240,6 +241,7 @@ module.exports = new Class
|
||||||
this.selectCell (cellIndex);
|
this.selectCell (cellIndex);
|
||||||
|
|
||||||
var newDate = new Date (this.year, this.month, cell.day);
|
var newDate = new Date (this.year, this.month, cell.day);
|
||||||
|
this.emit ('pick', newDate);
|
||||||
this.valueChanged (newDate);
|
this.valueChanged (newDate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,9 +21,31 @@ module.exports = new Class
|
||||||
return this._format;
|
return this._format;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Input entry associated to the label.
|
||||||
|
*/
|
||||||
|
,for:
|
||||||
|
{
|
||||||
|
type: Vn.Component
|
||||||
|
,set: function (x)
|
||||||
|
{
|
||||||
|
this._for = x;
|
||||||
|
this.node.htmlFor = x.htmlId;
|
||||||
|
}
|
||||||
|
,get: function ()
|
||||||
|
{
|
||||||
|
return this._for;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
,_format: null
|
,_format: null
|
||||||
|
,_for: null
|
||||||
|
|
||||||
|
,appendChild: function (child)
|
||||||
|
{
|
||||||
|
this.node.appendChild (child);
|
||||||
|
}
|
||||||
|
|
||||||
,render: function ()
|
,render: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,11 +32,17 @@ module.exports = new Class
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
,_radioGroup: null
|
,initialize: function (props)
|
||||||
|
{
|
||||||
|
Object.assign (this, {
|
||||||
|
_radioGroup: null
|
||||||
|
});
|
||||||
|
this.parent (props);
|
||||||
|
}
|
||||||
|
|
||||||
,render: function ()
|
,render: function ()
|
||||||
{
|
{
|
||||||
var radio = this.doc.createElement ('input');
|
var radio = this.createRoot ('input');
|
||||||
radio.type = 'radio';
|
radio.type = 'radio';
|
||||||
radio.name = '';
|
radio.name = '';
|
||||||
radio.checked = false;
|
radio.checked = false;
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
|
|
||||||
var Widget = require ('./widget');
|
|
||||||
|
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Widget
|
Extends: Vn.Component
|
||||||
,Tag: 'htk-grid'
|
,Tag: 'htk-grid'
|
||||||
,Child: 'model'
|
,Child: 'model'
|
||||||
,Properties:
|
,Properties:
|
||||||
|
|
|
@ -3,10 +3,7 @@ require ('db/db');
|
||||||
require ('./style.css');
|
require ('./style.css');
|
||||||
|
|
||||||
Htk = module.exports = {
|
Htk = module.exports = {
|
||||||
NodeBuilder : require ('./node-builder')
|
Popup : require ('./popup')
|
||||||
,Widget : require ('./widget')
|
|
||||||
,Component : require ('./component')
|
|
||||||
,Popup : require ('./popup')
|
|
||||||
,Dialog : require ('./dialog')
|
,Dialog : require ('./dialog')
|
||||||
,Toast : require ('./toast')
|
,Toast : require ('./toast')
|
||||||
,Repeater : require ('./repeater')
|
,Repeater : require ('./repeater')
|
||||||
|
@ -51,4 +48,3 @@ var Fields = {
|
||||||
|
|
||||||
for (var field in Fields)
|
for (var field in Fields)
|
||||||
Htk[field] = Fields[field];
|
Htk[field] = Fields[field];
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
|
|
||||||
var Widget = require ('./widget');
|
|
||||||
|
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Widget
|
Extends: Vn.Component
|
||||||
,Tag: 'htk-icon'
|
,Tag: 'htk-icon'
|
||||||
,Properties:
|
,Properties:
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
|
|
||||||
var Component = require ('./component');
|
|
||||||
var Toast = require ('./toast');
|
var Toast = require ('./toast');
|
||||||
var Tpl = require ('./image-editor.xml');
|
var Tpl = require ('./image-editor.xml');
|
||||||
|
|
||||||
|
@ -9,7 +8,7 @@ var Tpl = require ('./image-editor.xml');
|
||||||
*/
|
*/
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Component
|
Extends: Vn.Component
|
||||||
,Properties:
|
,Properties:
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -23,7 +22,7 @@ module.exports = new Class
|
||||||
|
|
||||||
,initialize: function (props)
|
,initialize: function (props)
|
||||||
{
|
{
|
||||||
this.builderInitString (Tpl);
|
this.loadTemplateFromString (Tpl);
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
this.$('form').onsubmit = function ()
|
this.$('form').onsubmit = function ()
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
|
|
||||||
var Widget = require ('./widget');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to handle popups.
|
* Class to handle popups.
|
||||||
*/
|
*/
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Widget
|
Extends: Vn.Component
|
||||||
,Tag: 'htk-popup'
|
,Tag: 'htk-popup'
|
||||||
,Properties:
|
,Properties:
|
||||||
{
|
{
|
||||||
|
@ -15,7 +12,7 @@ module.exports = new Class
|
||||||
*/
|
*/
|
||||||
child:
|
child:
|
||||||
{
|
{
|
||||||
type: Widget
|
type: Vn.Component
|
||||||
,set: function (x)
|
,set: function (x)
|
||||||
{
|
{
|
||||||
this._child = x;
|
this._child = x;
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
|
|
||||||
var Widget = require ('./widget');
|
|
||||||
|
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Widget
|
Extends: Vn.Component
|
||||||
,Tag: 'htk-repeater'
|
,Tag: 'htk-repeater'
|
||||||
,Child: 'model'
|
,Child: 'model'
|
||||||
,Properties:
|
,Properties:
|
||||||
|
@ -74,6 +72,7 @@ module.exports = new Class
|
||||||
|
|
||||||
,_builder: null
|
,_builder: null
|
||||||
,_formId: 'form'
|
,_formId: 'form'
|
||||||
|
,_parentScope: null
|
||||||
|
|
||||||
,render: function ()
|
,render: function ()
|
||||||
{
|
{
|
||||||
|
@ -84,14 +83,14 @@ module.exports = new Class
|
||||||
div.appendChild (this._container);
|
div.appendChild (this._container);
|
||||||
}
|
}
|
||||||
|
|
||||||
,loadXml: function (builderResult, node)
|
,loadXml: function (scope, node)
|
||||||
{
|
{
|
||||||
this.parent (builderResult, node);
|
this.parent (scope, node);
|
||||||
|
|
||||||
var builder = this._builder = new Vn.Builder ();
|
var builder = this._builder = new Vn.Builder ();
|
||||||
builder.setParent (builderResult);
|
builder.compileNode (node.firstElementChild);
|
||||||
builder.loadXmlFromNode (node.firstElementChild);
|
|
||||||
|
|
||||||
|
this._parentScope = scope;
|
||||||
this._onModelChange ();
|
this._onModelChange ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,9 +99,9 @@ module.exports = new Class
|
||||||
return this._container.childNodes[index];
|
return this._container.childNodes[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
,getBuilder: function (index)
|
,getScope: function (index)
|
||||||
{
|
{
|
||||||
return this._childsData[index].builder;
|
return this._childsData[index].scope;
|
||||||
}
|
}
|
||||||
|
|
||||||
,getForm: function (index)
|
,getForm: function (index)
|
||||||
|
@ -117,19 +116,21 @@ module.exports = new Class
|
||||||
row: index
|
row: index
|
||||||
});
|
});
|
||||||
|
|
||||||
this._builder.add (this._formId, set);
|
var extraObjects = {};
|
||||||
var res = this._builder.load ();
|
extraObjects[this._formId] = set;
|
||||||
res.link ();
|
|
||||||
|
var scope = this._builder.load (this.doc, null, this._parentScope, extraObjects);
|
||||||
|
scope.link ();
|
||||||
|
|
||||||
this._childsData.push ({
|
this._childsData.push ({
|
||||||
builder: res,
|
scope: scope,
|
||||||
set: set
|
set: set
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this._renderer)
|
if (this._renderer)
|
||||||
this._renderer (res, set);
|
this._renderer (scope, set);
|
||||||
|
|
||||||
return res.getMain ();
|
return scope.getMain ();
|
||||||
}
|
}
|
||||||
|
|
||||||
,_onModelChange: function ()
|
,_onModelChange: function ()
|
||||||
|
@ -235,7 +236,7 @@ module.exports = new Class
|
||||||
{
|
{
|
||||||
var childData = this._childsData[index];
|
var childData = this._childsData[index];
|
||||||
childData.set.unref ();
|
childData.set.unref ();
|
||||||
childData.builder.unref ();
|
childData.scope.unref ();
|
||||||
}
|
}
|
||||||
|
|
||||||
,_destroy: function ()
|
,_destroy: function ()
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
|
|
||||||
var Widget = require ('./widget');
|
|
||||||
|
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Widget
|
Extends: Vn.Component
|
||||||
,Tag: 'htk-spinner'
|
,Tag: 'htk-spinner'
|
||||||
|
|
||||||
,_started: false
|
,_started: false
|
||||||
|
|
|
@ -1,88 +0,0 @@
|
||||||
|
|
||||||
var NodeBuilder = require ('./node-builder');
|
|
||||||
|
|
||||||
var nativeEvents = {
|
|
||||||
'click' : 1
|
|
||||||
,'mousedown' : 1
|
|
||||||
,'focusout' : 1
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = new Class
|
|
||||||
({
|
|
||||||
Extends: NodeBuilder
|
|
||||||
,Properties:
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Main HTML node that represents the widget
|
|
||||||
*/
|
|
||||||
node:
|
|
||||||
{
|
|
||||||
type: Object
|
|
||||||
,get: function ()
|
|
||||||
{
|
|
||||||
this.renderBase ();
|
|
||||||
return this._node;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
* CSS classes to be appendend to the node classes.
|
|
||||||
*/
|
|
||||||
class:
|
|
||||||
{
|
|
||||||
type: String
|
|
||||||
,set: function (x)
|
|
||||||
{
|
|
||||||
this._cssClass = x;
|
|
||||||
this._refreshClass ();
|
|
||||||
}
|
|
||||||
,get: function ()
|
|
||||||
{
|
|
||||||
return this._node.className;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
,_node: null
|
|
||||||
|
|
||||||
,initialize: function (props)
|
|
||||||
{
|
|
||||||
this.doc = document;
|
|
||||||
this.renderBase ();
|
|
||||||
this.parent (props);
|
|
||||||
}
|
|
||||||
|
|
||||||
,on: function (id, callback, instance)
|
|
||||||
{
|
|
||||||
if (nativeEvents[id])
|
|
||||||
this.node.addEventListener (id,
|
|
||||||
callback.bind (instance, this));
|
|
||||||
else
|
|
||||||
this.parent (id, callback, instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
,createRoot: function (tagName)
|
|
||||||
{
|
|
||||||
return this._node = this.createElement (tagName);
|
|
||||||
}
|
|
||||||
|
|
||||||
,renderBase: function ()
|
|
||||||
{
|
|
||||||
if (this._node)
|
|
||||||
return;
|
|
||||||
|
|
||||||
this.render ();
|
|
||||||
this._refreshClass ();
|
|
||||||
}
|
|
||||||
|
|
||||||
,_refreshClass: function ()
|
|
||||||
{
|
|
||||||
if (this._node && this._cssClass)
|
|
||||||
this._node.className = this._cssClass +' '+ this._node.className;
|
|
||||||
}
|
|
||||||
|
|
||||||
,remove: function ()
|
|
||||||
{
|
|
||||||
Vn.Node.remove (this._node);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
545
js/vn/builder.js
545
js/vn/builder.js
|
@ -1,7 +1,16 @@
|
||||||
|
|
||||||
var VnObject = require ('./object');
|
var VnObject = require ('./object');
|
||||||
|
var Component = require ('./component');
|
||||||
var Type = require ('./type');
|
var Type = require ('./type');
|
||||||
|
|
||||||
|
var specialAttrs = {
|
||||||
|
id : 1,
|
||||||
|
property : 1
|
||||||
|
};
|
||||||
|
var objectAttrs = {
|
||||||
|
for : 1
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a object from a XML specification.
|
* Creates a object from a XML specification.
|
||||||
*/
|
*/
|
||||||
|
@ -11,91 +20,49 @@ module.exports = new Class
|
||||||
,_addedMap: {}
|
,_addedMap: {}
|
||||||
,_contexts: null
|
,_contexts: null
|
||||||
|
|
||||||
,add: function (id, object)
|
|
||||||
{
|
|
||||||
this._addedMap[id] = object;
|
|
||||||
}
|
|
||||||
|
|
||||||
,setParent: function (parentResult)
|
|
||||||
{
|
|
||||||
this._parentResult = parentResult;
|
|
||||||
|
|
||||||
if (parentResult && !this.signalData)
|
|
||||||
this.signalData = parentResult.builder.signalData;
|
|
||||||
}
|
|
||||||
|
|
||||||
,getMain: function (result)
|
|
||||||
{
|
|
||||||
return result.objects[this._mainContext];
|
|
||||||
}
|
|
||||||
|
|
||||||
,getById: function (result, objectId)
|
|
||||||
{
|
|
||||||
var index = this._contextMap[objectId];
|
|
||||||
|
|
||||||
if (index !== undefined)
|
|
||||||
return result.objects[index];
|
|
||||||
|
|
||||||
var object = this._addedMap[objectId];
|
|
||||||
|
|
||||||
if (object !== undefined)
|
|
||||||
return object;
|
|
||||||
|
|
||||||
if (this._parentResult)
|
|
||||||
return this._parentResult.getById (objectId);
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
,getByTagName: function (result, tagName)
|
|
||||||
{
|
|
||||||
var tags = this._tags[tagName];
|
|
||||||
|
|
||||||
if (tags)
|
|
||||||
{
|
|
||||||
var arr = new Array (tags.length);
|
|
||||||
|
|
||||||
for (var i = 0; i < tags.length; i++)
|
|
||||||
arr[i] = result.objects[tags[i]];
|
|
||||||
|
|
||||||
return arr;
|
|
||||||
}
|
|
||||||
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compiles an XML file.
|
* Compiles an XML file.
|
||||||
*
|
*
|
||||||
* @path String The XML path
|
* @param {String} path The XML path
|
||||||
* @dstDocument Document The document used to create the nodes
|
* @return {Boolean} %true on success, %false othersise
|
||||||
* @return %true on success, %false othersise
|
|
||||||
*/
|
*/
|
||||||
,loadXml: function (path, dstDocument)
|
,compileFile: function (path)
|
||||||
{
|
{
|
||||||
this._path = path;
|
this._path = path;
|
||||||
return this.loadFromXmlDoc (Vn.getXml (path), dstDocument);
|
return this.compileDocument (Vn.getXml (path));
|
||||||
}
|
}
|
||||||
|
|
||||||
,loadFromString: function (xmlString, dstDocument)
|
/**
|
||||||
|
* Compiles an XML string.
|
||||||
|
*
|
||||||
|
* @param {String} xmlString The XML string
|
||||||
|
* @return {Boolean} %true on success, %false othersise
|
||||||
|
*/
|
||||||
|
,compileString: function (xmlString)
|
||||||
{
|
{
|
||||||
var parser = new DOMParser ();
|
var parser = new DOMParser ();
|
||||||
var xmlDoc = parser.parseFromString (xmlString, 'text/xml');
|
var doc = parser.parseFromString (xmlString, 'text/xml');
|
||||||
return this.loadFromXmlDoc (xmlDoc, dstDocument);
|
return this.compileDocument (doc);
|
||||||
}
|
}
|
||||||
|
|
||||||
,loadFromXmlDoc: function (xmlDoc, dstDocument)
|
/**
|
||||||
|
* Compiles a XML document.
|
||||||
|
*
|
||||||
|
* @param {Document} doc The DOM document
|
||||||
|
* @return {Boolean} %true on success, %false othersise
|
||||||
|
*/
|
||||||
|
,compileDocument: function (doc)
|
||||||
{
|
{
|
||||||
if (!xmlDoc)
|
if (!doc)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
this._compileInit (dstDocument);
|
this._compileInit ();
|
||||||
|
|
||||||
var docElement = xmlDoc.documentElement;
|
var docElement = doc.documentElement;
|
||||||
|
|
||||||
if (docElement.tagName !== 'vn')
|
if (docElement.tagName !== 'vn')
|
||||||
{
|
{
|
||||||
this._showError ('Malformed XML');
|
this._showError ('The toplevel tag should be named \'vn\'');
|
||||||
this._contexts = null;
|
this._contexts = null;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -113,116 +80,81 @@ module.exports = new Class
|
||||||
/**
|
/**
|
||||||
* Compiles a single DOM node.
|
* Compiles a single DOM node.
|
||||||
*
|
*
|
||||||
* @path Node The DOM node
|
* @param {Node} path The DOM node
|
||||||
* @dstDocument Document The document used to create the nodes
|
* @return {Boolean} %true on success, %false othersise
|
||||||
* @return %true on success, %false othersise
|
|
||||||
*/
|
*/
|
||||||
,loadXmlFromNode: function (node, dstDocument)
|
,compileNode: function (node)
|
||||||
{
|
{
|
||||||
this._compileInit (dstDocument);
|
this._compileInit ();
|
||||||
this._mainContext = this._compileNode (node).id;
|
this._mainContext = this._compileNode (node).id;
|
||||||
this._compileEnd ();
|
this._compileEnd ();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
,load: function ()
|
/**
|
||||||
|
* Creates a new scope from a compiled XML tree.
|
||||||
|
*
|
||||||
|
* @param {Document} dstDocument The document used to create the nodes
|
||||||
|
* @param {Object} signalData The object where to bind methods
|
||||||
|
* @param {Scope} parentScope The parent scope or %null for no parent
|
||||||
|
* @return {Scope} The created scope
|
||||||
|
*/
|
||||||
|
,load: function (dstDocument, signalData, parentScope, extraObjects)
|
||||||
{
|
{
|
||||||
if (this._contexts === null)
|
if (this._contexts === null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
this._doc = dstDocument || document;
|
||||||
|
|
||||||
var contexts = this._contexts;
|
var contexts = this._contexts;
|
||||||
var len = contexts.length;
|
var len = contexts.length;
|
||||||
var objects = new Array (len);
|
var objects = new Array (len);
|
||||||
|
var scope = new Scope (this, objects, signalData, parentScope, extraObjects)
|
||||||
|
|
||||||
for (var i = 0; i < len; i++)
|
for (var i = 0; i < len; i++)
|
||||||
{
|
{
|
||||||
var context = contexts[i];
|
var context = contexts[i];
|
||||||
|
|
||||||
if (context.tagName)
|
if (context.tagName)
|
||||||
objects[i] = this.elementInstantiate (context);
|
objects[i] = this.elementInstantiate (context, scope);
|
||||||
else if (context.klass)
|
else if (context.klass)
|
||||||
objects[i] = this.objectInstantiate (context);
|
objects[i] = this.objectInstantiate (context, scope);
|
||||||
else
|
else
|
||||||
objects[i] = this.textInstantiate (context);
|
objects[i] = this.textInstantiate (context, scope);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new BuilderResult (this, objects);
|
return scope;
|
||||||
}
|
}
|
||||||
|
|
||||||
,link: function (result)
|
,_compileInit: function ()
|
||||||
{
|
|
||||||
var objects = result.objects;
|
|
||||||
|
|
||||||
for (var i = this._links.length - 1; i >= 0; i--)
|
|
||||||
{
|
|
||||||
var l = this._links[i];
|
|
||||||
var addedObject = this._addedMap[l.objectId];
|
|
||||||
|
|
||||||
if (addedObject)
|
|
||||||
{
|
|
||||||
if (l.prop)
|
|
||||||
objects[l.context.id][l.prop] = addedObject;
|
|
||||||
else
|
|
||||||
objects[l.context.id].appendChild (addedObject);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
this._showError ('Referenced unexistent object with id \'%s\'',
|
|
||||||
l.objectId);
|
|
||||||
}
|
|
||||||
|
|
||||||
var contexts = this._contexts;
|
|
||||||
for (var i = 0; i < contexts.length; i++)
|
|
||||||
{
|
|
||||||
var context = contexts[i];
|
|
||||||
var object = objects[i];
|
|
||||||
|
|
||||||
if (context.tagName)
|
|
||||||
this.elementLink (context, object, objects, result);
|
|
||||||
else if (context.klass)
|
|
||||||
this.objectLink (context, object, objects, result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
,_compileInit: function (dstDocument)
|
|
||||||
{
|
{
|
||||||
this._path = null;
|
this._path = null;
|
||||||
this._tags = {};
|
this._tags = {};
|
||||||
this._contexts = [];
|
this._contexts = [];
|
||||||
this._contextMap = {};
|
this._contextMap = {};
|
||||||
this._links = [];
|
this._objectLinks = [];
|
||||||
this._mainContext = null;
|
this._mainContext = null;
|
||||||
this._doc = dstDocument ? dstDocument : document;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
,_compileEnd: function ()
|
,_compileEnd: function ()
|
||||||
{
|
{
|
||||||
for (var i = this._links.length - 1; i >= 0; i--)
|
var links = this._objectLinks;
|
||||||
{
|
|
||||||
var l = this._links[i];
|
|
||||||
var contextId = this._contextMap[l.objectId];
|
|
||||||
|
|
||||||
if (contextId != undefined)
|
for (var i = links.length - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
if (l.prop)
|
var link = links[i];
|
||||||
l.context.objectProps[l.prop] = contextId;
|
var context = link.context;
|
||||||
|
var contextId = this._contextMap[link.objectId];
|
||||||
|
|
||||||
|
if (contextId == undefined)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (link.prop)
|
||||||
|
context.objectProps[link.prop] = contextId;
|
||||||
else
|
else
|
||||||
l.context.childs.push (contextId);
|
context.childs.push (contextId);
|
||||||
|
|
||||||
this._links.splice (i, 1);
|
links.splice (i, 1);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var object = this._addedMap[l.objectId];
|
|
||||||
|
|
||||||
if (!object && this._parentResult)
|
|
||||||
object = this._parentResult.getById (l.objectId);
|
|
||||||
|
|
||||||
if (object)
|
|
||||||
{
|
|
||||||
l.context.props[l.prop] = object;
|
|
||||||
this._links.splice (i, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -230,8 +162,9 @@ module.exports = new Class
|
||||||
{
|
{
|
||||||
var context = null;
|
var context = null;
|
||||||
var tagName = null;
|
var tagName = null;
|
||||||
|
var isElement = node.nodeType === Node.ELEMENT_NODE;
|
||||||
|
|
||||||
if (node.nodeType === Node.ELEMENT_NODE)
|
if (isElement)
|
||||||
tagName = node.tagName.toLowerCase ();
|
tagName = node.tagName.toLowerCase ();
|
||||||
else if (node.nodeType !== Node.TEXT_NODE
|
else if (node.nodeType !== Node.TEXT_NODE
|
||||||
|| /^[\n\r\t]*$/.test (node.textContent))
|
|| /^[\n\r\t]*$/.test (node.textContent))
|
||||||
|
@ -244,12 +177,15 @@ module.exports = new Class
|
||||||
|
|
||||||
context.id = this._contexts.length;
|
context.id = this._contexts.length;
|
||||||
|
|
||||||
if (tagName)
|
if (isElement)
|
||||||
{
|
{
|
||||||
var nodeId = node.getAttribute ('id');
|
var nodeId = node.getAttribute ('id');
|
||||||
|
|
||||||
if (nodeId)
|
if (nodeId)
|
||||||
|
{
|
||||||
this._contextMap[nodeId] = context.id;
|
this._contextMap[nodeId] = context.id;
|
||||||
|
context.nodeId = nodeId;
|
||||||
|
}
|
||||||
|
|
||||||
var tags = this._tags[tagName];
|
var tags = this._tags[tagName];
|
||||||
|
|
||||||
|
@ -263,24 +199,52 @@ module.exports = new Class
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
,link: function (scope)
|
||||||
* Creates a text node context.
|
|
||||||
*/
|
|
||||||
,textCompile: function (node, tagName)
|
|
||||||
{
|
{
|
||||||
if (!tagName)
|
var objects = scope.objects;
|
||||||
var text = node.textContent;
|
var links = this._objectLinks;
|
||||||
else if (tagName === 't')
|
|
||||||
var text = _(node.firstChild.textContent);
|
|
||||||
else
|
|
||||||
return null;
|
|
||||||
|
|
||||||
return {text: text};
|
for (var i = links.length - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
var link = links[i];
|
||||||
|
var object = objects[link.context.id];
|
||||||
|
var objectRef = scope.$(link.objectId);
|
||||||
|
|
||||||
|
if (objectRef == null)
|
||||||
|
{
|
||||||
|
this._showError ('Referenced unexistent object with id \'%s\'',
|
||||||
|
link.objectId);
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
,textInstantiate: function (context)
|
if (link.prop)
|
||||||
|
object[link.prop] = objectRef;
|
||||||
|
else
|
||||||
|
object.appendChild (objectRef);
|
||||||
|
}
|
||||||
|
|
||||||
|
var contexts = this._contexts;
|
||||||
|
for (var i = 0; i < contexts.length; i++)
|
||||||
{
|
{
|
||||||
return this._doc.createTextNode (context.text);
|
var context = contexts[i];
|
||||||
|
var object = objects[i];
|
||||||
|
|
||||||
|
if (context.tagName)
|
||||||
|
this.elementLink (context, object, objects, scope);
|
||||||
|
else if (context.klass)
|
||||||
|
this.objectLink (context, object, objects, scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < contexts.length; i++)
|
||||||
|
{
|
||||||
|
var context = contexts[i];
|
||||||
|
var object = objects[i];
|
||||||
|
|
||||||
|
if (context.tagName)
|
||||||
|
this.elementConnect (context, object, objects, scope);
|
||||||
|
else if (context.klass)
|
||||||
|
this.objectConnect (context, object, objects, scope);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -295,6 +259,7 @@ module.exports = new Class
|
||||||
|
|
||||||
var props = {};
|
var props = {};
|
||||||
var objectProps = {};
|
var objectProps = {};
|
||||||
|
var funcProps = {};
|
||||||
var childs = [];
|
var childs = [];
|
||||||
var events = {};
|
var events = {};
|
||||||
|
|
||||||
|
@ -302,6 +267,7 @@ module.exports = new Class
|
||||||
klass: klass,
|
klass: klass,
|
||||||
props: props,
|
props: props,
|
||||||
objectProps: objectProps,
|
objectProps: objectProps,
|
||||||
|
funcProps: funcProps,
|
||||||
childs: childs,
|
childs: childs,
|
||||||
events: events,
|
events: events,
|
||||||
custom: null
|
custom: null
|
||||||
|
@ -315,13 +281,8 @@ module.exports = new Class
|
||||||
var value = a[i].nodeValue;
|
var value = a[i].nodeValue;
|
||||||
|
|
||||||
if (this._isEvent (attribute))
|
if (this._isEvent (attribute))
|
||||||
{
|
events[attribute.substr (3)] = value;
|
||||||
var handler = this._getMethod (value)
|
else if (!specialAttrs[attribute])
|
||||||
|
|
||||||
if (handler)
|
|
||||||
events[attribute.substr (3)] = handler;
|
|
||||||
}
|
|
||||||
else if (!/^(id|property)$/.test (attribute))
|
|
||||||
{
|
{
|
||||||
this.propCompile (context, klass, props,
|
this.propCompile (context, klass, props,
|
||||||
node, attribute, value);
|
node, attribute, value);
|
||||||
|
@ -342,7 +303,7 @@ module.exports = new Class
|
||||||
|
|
||||||
if (childTagName === 'pointer')
|
if (childTagName === 'pointer')
|
||||||
{
|
{
|
||||||
this._addLink (context, null, child.getAttribute ('object'));
|
this.objectAddLink (context, null, child.getAttribute ('object'));
|
||||||
}
|
}
|
||||||
else if (childTagName === 'custom')
|
else if (childTagName === 'custom')
|
||||||
{
|
{
|
||||||
|
@ -388,6 +349,8 @@ module.exports = new Class
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var propError = false;
|
||||||
|
|
||||||
switch (propInfo.type)
|
switch (propInfo.type)
|
||||||
{
|
{
|
||||||
case null:
|
case null:
|
||||||
|
@ -403,8 +366,7 @@ module.exports = new Class
|
||||||
newValue = this._translateValue (value);
|
newValue = this._translateValue (value);
|
||||||
break;
|
break;
|
||||||
case Function:
|
case Function:
|
||||||
var method = this._getMethod (value);
|
context.funcProps[propName] = value;
|
||||||
newValue = method ? method.bind (this.signalData) : null;
|
|
||||||
break;
|
break;
|
||||||
case Type:
|
case Type:
|
||||||
newValue = window[value];
|
newValue = window[value];
|
||||||
|
@ -414,26 +376,41 @@ module.exports = new Class
|
||||||
newValue = propInfo.enumType[value];
|
newValue = propInfo.enumType[value];
|
||||||
else if (propInfo.type instanceof Function)
|
else if (propInfo.type instanceof Function)
|
||||||
isLink = true;
|
isLink = true;
|
||||||
|
else
|
||||||
|
propError = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isLink)
|
if (isLink)
|
||||||
this._addLink (context, propName, value);
|
this.objectAddLink (context, propName, value);
|
||||||
else if (newValue !== null && newValue !== undefined)
|
else if (newValue != null)
|
||||||
props[propName] = newValue;
|
props[propName] = newValue;
|
||||||
else
|
else if (propError)
|
||||||
this._showError ('Attribute \'%s\' invalid for tag \'%s\'',
|
this._showError ('Attribute \'%s\' invalid for tag \'%s\'',
|
||||||
attribute, node.tagName);
|
attribute, node.tagName);
|
||||||
}
|
}
|
||||||
|
|
||||||
,objectInstantiate: function (context)
|
,objectAddLink: function (context, prop, objectId)
|
||||||
{
|
{
|
||||||
return new context.klass ();
|
this._objectLinks.push ({
|
||||||
|
context: context
|
||||||
|
,prop: prop
|
||||||
|
,objectId: objectId
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
,objectLink: function (context, object, objects, res)
|
,objectInstantiate: function (context, scope)
|
||||||
{
|
{
|
||||||
|
var object = new context.klass ();
|
||||||
object.setProperties (context.props);
|
object.setProperties (context.props);
|
||||||
|
|
||||||
|
if (context.nodeId && object instanceof Component)
|
||||||
|
object.htmlId = scope.getHtmlId (context.nodeId);
|
||||||
|
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
|
,objectLink: function (context, object, objects, scope)
|
||||||
|
{
|
||||||
var objectProps = context.objectProps;
|
var objectProps = context.objectProps;
|
||||||
for (var prop in objectProps)
|
for (var prop in objectProps)
|
||||||
object[prop] = objects[objectProps[prop]];
|
object[prop] = objects[objectProps[prop]];
|
||||||
|
@ -442,12 +419,29 @@ module.exports = new Class
|
||||||
for (var i = 0; i < childs.length; i++)
|
for (var i = 0; i < childs.length; i++)
|
||||||
object.appendChild (objects[childs[i]]);
|
object.appendChild (objects[childs[i]]);
|
||||||
|
|
||||||
|
if (context.custom)
|
||||||
|
object.loadXml (scope, context.custom);
|
||||||
|
}
|
||||||
|
|
||||||
|
,objectConnect: function (context, object, objects, scope)
|
||||||
|
{
|
||||||
|
var funcProps = context.funcProps;
|
||||||
|
for (var prop in funcProps)
|
||||||
|
{
|
||||||
|
var method = scope.getMethod (funcProps[prop], true);
|
||||||
|
|
||||||
|
if (method)
|
||||||
|
object[prop] = method;
|
||||||
|
}
|
||||||
|
|
||||||
var events = context.events;
|
var events = context.events;
|
||||||
for (var event in events)
|
for (var event in events)
|
||||||
object.on (event, events[event], this.signalData);
|
{
|
||||||
|
var method = scope.getMethod (events[event]);
|
||||||
|
|
||||||
if (context.custom)
|
if (method)
|
||||||
object.loadXml (res, context.custom);
|
object.on (event, method, scope.signalData);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -455,10 +449,10 @@ module.exports = new Class
|
||||||
*/
|
*/
|
||||||
,elementCompile: function (node, tagName)
|
,elementCompile: function (node, tagName)
|
||||||
{
|
{
|
||||||
var attributes = {};
|
var props = {};
|
||||||
|
var objectProps = {};
|
||||||
var childs = [];
|
var childs = [];
|
||||||
var events = {};
|
var events = {};
|
||||||
var handler;
|
|
||||||
|
|
||||||
var a = node.attributes;
|
var a = node.attributes;
|
||||||
|
|
||||||
|
@ -468,14 +462,11 @@ module.exports = new Class
|
||||||
var value = a[i].nodeValue;
|
var value = a[i].nodeValue;
|
||||||
|
|
||||||
if (this._isEvent (attribute))
|
if (this._isEvent (attribute))
|
||||||
{
|
events[attribute.substr (3)] = value;
|
||||||
var handler = this._getMethod (value);
|
else if (objectAttrs[attribute])
|
||||||
|
objectProps[attribute] = value;
|
||||||
if (handler)
|
else if (!specialAttrs[attribute])
|
||||||
events[attribute.substr (3)] = handler;
|
props[attribute] = this._translateValue (value);
|
||||||
}
|
|
||||||
else if (attribute !== 'id')
|
|
||||||
attributes[attribute] = this._translateValue (value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var childContext;
|
var childContext;
|
||||||
|
@ -488,38 +479,90 @@ module.exports = new Class
|
||||||
|
|
||||||
return {
|
return {
|
||||||
tagName: tagName,
|
tagName: tagName,
|
||||||
attributes: attributes,
|
props: props,
|
||||||
|
objectProps: objectProps,
|
||||||
childs: childs,
|
childs: childs,
|
||||||
events: events
|
events: events
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
,elementInstantiate: function (context)
|
,elementInstantiate: function (context, scope)
|
||||||
{
|
{
|
||||||
return this._doc.createElement (context.tagName);
|
var object = this._doc.createElement (context.tagName);
|
||||||
|
|
||||||
|
var props = context.props;
|
||||||
|
for (var prop in props)
|
||||||
|
object.setAttribute (prop, props[prop]);
|
||||||
|
|
||||||
|
if (context.nodeId)
|
||||||
|
object.setAttribute ('id', scope.getHtmlId (context.nodeId));
|
||||||
|
|
||||||
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
,elementLink: function (context, object, objects)
|
,elementLink: function (context, object, objects, scope)
|
||||||
{
|
{
|
||||||
var attributes = context.attributes;
|
var props = context.objectProps;
|
||||||
for (var attribute in attributes)
|
for (var prop in props)
|
||||||
object.setAttribute (attribute, attributes[attribute]);
|
{
|
||||||
|
var objectValue = scope.$(props[prop]);
|
||||||
|
var htmlId;
|
||||||
|
|
||||||
|
if (objectValue instanceof Component)
|
||||||
|
htmlId = objectValue.htmlId;
|
||||||
|
if (objectValue instanceof Node)
|
||||||
|
htmlId = objectValue.id;
|
||||||
|
|
||||||
|
object.setAttribute (prop, htmlId);
|
||||||
|
}
|
||||||
|
|
||||||
var childs = context.childs;
|
var childs = context.childs;
|
||||||
for (var i = 0; i < childs.length; i++)
|
for (var i = 0; i < childs.length; i++)
|
||||||
{
|
{
|
||||||
var child = objects[childs[i]];
|
var child = objects[childs[i]];
|
||||||
|
|
||||||
if (child instanceof Htk.Widget)
|
if (child instanceof Component)
|
||||||
child = child.node;
|
child = child.node;
|
||||||
if (child instanceof Node)
|
if (child instanceof Node)
|
||||||
object.appendChild (child);
|
object.appendChild (child);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
,elementConnect: function (context, object, objects, scope)
|
||||||
|
{
|
||||||
var events = context.events;
|
var events = context.events;
|
||||||
for (var event in events)
|
for (var event in events)
|
||||||
object.addEventListener (event,
|
{
|
||||||
events[event].bind (this.signalData));
|
var method = scope.getMethod (events[event], true);
|
||||||
|
|
||||||
|
if (method)
|
||||||
|
object.addEventListener (event, method);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a text node context.
|
||||||
|
*/
|
||||||
|
,textCompile: function (node, tagName)
|
||||||
|
{
|
||||||
|
if (!tagName)
|
||||||
|
{
|
||||||
|
var text = node.textContent;
|
||||||
|
|
||||||
|
if (/^[\s]*\\?_.*/.test (text))
|
||||||
|
text = _(text.trim ().substr (1));
|
||||||
|
}
|
||||||
|
else if (tagName === 't')
|
||||||
|
var text = _(node.firstChild.textContent);
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return {text: text};
|
||||||
|
}
|
||||||
|
|
||||||
|
,textInstantiate: function (context)
|
||||||
|
{
|
||||||
|
return this._doc.createTextNode (context.text);
|
||||||
}
|
}
|
||||||
|
|
||||||
,_showError: function (error)
|
,_showError: function (error)
|
||||||
|
@ -533,15 +576,6 @@ module.exports = new Class
|
||||||
console.warn.apply (console, logArgs);
|
console.warn.apply (console, logArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
,_addLink: function (context, prop, objectId)
|
|
||||||
{
|
|
||||||
this._links.push ({
|
|
||||||
context: context
|
|
||||||
,prop: prop
|
|
||||||
,objectId: objectId
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
,_translateValue: function (value)
|
,_translateValue: function (value)
|
||||||
{
|
{
|
||||||
var chr = value.charAt (0);
|
var chr = value.charAt (0);
|
||||||
|
@ -554,19 +588,6 @@ module.exports = new Class
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
,_getMethod: function (value)
|
|
||||||
{
|
|
||||||
if (this.signalData)
|
|
||||||
var method = this.signalData[value];
|
|
||||||
else
|
|
||||||
var method = window[value];
|
|
||||||
|
|
||||||
if (method === undefined)
|
|
||||||
this._showError ('Function \'%s\' not found', value);
|
|
||||||
|
|
||||||
return method;
|
|
||||||
}
|
|
||||||
|
|
||||||
,_isEvent: function (attribute)
|
,_isEvent: function (attribute)
|
||||||
{
|
{
|
||||||
return /^on-\w+/.test (attribute);
|
return /^on-\w+/.test (attribute);
|
||||||
|
@ -576,16 +597,54 @@ module.exports = new Class
|
||||||
{
|
{
|
||||||
return token.charAt(1).toUpperCase ();
|
return token.charAt(1).toUpperCase ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
,getMain: function (result)
|
||||||
|
{
|
||||||
|
return result.objects[this._mainContext];
|
||||||
|
}
|
||||||
|
|
||||||
|
,getById: function (objectId)
|
||||||
|
{
|
||||||
|
return this._contextMap[objectId];
|
||||||
|
}
|
||||||
|
|
||||||
|
,getByTagName: function (result, tagName)
|
||||||
|
{
|
||||||
|
var tags = this._tags[tagName];
|
||||||
|
|
||||||
|
if (tags)
|
||||||
|
{
|
||||||
|
var arr = new Array (tags.length);
|
||||||
|
|
||||||
|
for (var i = 0; i < tags.length; i++)
|
||||||
|
arr[i] = result.objects[tags[i]];
|
||||||
|
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var BuilderResult = new Class
|
var scopeUid = 0;
|
||||||
|
|
||||||
|
var Scope = new Class
|
||||||
({
|
({
|
||||||
Extends: VnObject
|
Extends: VnObject
|
||||||
|
|
||||||
,initialize: function (builder, objects)
|
,initialize: function (builder, objects, signalData, parentScope, extraObjects)
|
||||||
{
|
{
|
||||||
this.builder = builder;
|
this.builder = builder;
|
||||||
this.objects = objects;
|
this.objects = objects;
|
||||||
|
this.signalData = signalData;
|
||||||
|
this.parentScope = parentScope;
|
||||||
|
this.uid = ++scopeUid;
|
||||||
|
this.extraObjects = extraObjects;
|
||||||
|
|
||||||
|
if (!signalData && parentScope)
|
||||||
|
this.signalData = parentScope.signalData;
|
||||||
|
|
||||||
|
this.parent ();
|
||||||
}
|
}
|
||||||
|
|
||||||
,getMain: function ()
|
,getMain: function ()
|
||||||
|
@ -593,14 +652,37 @@ var BuilderResult = new Class
|
||||||
return this.builder.getMain (this);
|
return this.builder.getMain (this);
|
||||||
}
|
}
|
||||||
|
|
||||||
,$: function (objectId)
|
/**
|
||||||
|
* Fetchs an element by it's identifier.
|
||||||
|
*
|
||||||
|
* @param {String} id The node identifier
|
||||||
|
*/
|
||||||
|
,$: function (id)
|
||||||
{
|
{
|
||||||
return this.builder.getById (this, objectId);
|
var object;
|
||||||
|
var index = this.builder.getById (id);
|
||||||
|
|
||||||
|
if (index !== undefined)
|
||||||
|
object = this.objects[index];
|
||||||
|
else
|
||||||
|
{
|
||||||
|
object = this.extraObjects[id];
|
||||||
|
|
||||||
|
if (object === undefined && this.parentScope)
|
||||||
|
object = this.parentScope.getById (id);
|
||||||
}
|
}
|
||||||
|
|
||||||
,getById: function (objectId)
|
return object ? object : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetchs an element by it's identifier.
|
||||||
|
*
|
||||||
|
* @param {String} id The node identifier
|
||||||
|
*/
|
||||||
|
,getById: function (id)
|
||||||
{
|
{
|
||||||
return this.builder.getById (this, objectId);
|
return this.$(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
,getByTagName: function (tagName)
|
,getByTagName: function (tagName)
|
||||||
|
@ -613,15 +695,40 @@ var BuilderResult = new Class
|
||||||
this.builder.link (this);
|
this.builder.link (this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
,getMethod: function (value, binded)
|
||||||
|
{
|
||||||
|
if (this.signalData)
|
||||||
|
{
|
||||||
|
var method = this.signalData[value];
|
||||||
|
|
||||||
|
if (method && binded)
|
||||||
|
method = method.bind (this.signalData);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
var method = window[value];
|
||||||
|
|
||||||
|
if (method === undefined)
|
||||||
|
this.builder._showError ('Function \'%s\' not found', value);
|
||||||
|
|
||||||
|
return method;
|
||||||
|
}
|
||||||
|
|
||||||
|
,getHtmlId: function (nodeId)
|
||||||
|
{
|
||||||
|
return 'vn-'+ this.uid +'-'+ nodeId;
|
||||||
|
}
|
||||||
|
|
||||||
,_destroy: function ()
|
,_destroy: function ()
|
||||||
{
|
{
|
||||||
var objects = this.objects;
|
var objects = this.objects;
|
||||||
|
|
||||||
for (var i = objects.length; i--;)
|
for (var i = objects.length; i--;)
|
||||||
if (objects[i] instanceof VnObject)
|
if (objects[i] instanceof VnObject)
|
||||||
|
{
|
||||||
objects[i].unref ();
|
objects[i].unref ();
|
||||||
|
objects[i].disconnectByInstance (this.builder.signalData);
|
||||||
|
}
|
||||||
|
|
||||||
this.parent ();
|
this.parent ();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,157 @@
|
||||||
|
|
||||||
|
var NodeBuilder = require ('./node-builder');
|
||||||
|
|
||||||
|
var nativeEvents = {
|
||||||
|
click : 1
|
||||||
|
,mousedown : 1
|
||||||
|
,focusout : 1
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = new Class
|
||||||
|
({
|
||||||
|
Extends: NodeBuilder
|
||||||
|
,Properties:
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Main HTML node that represents the component
|
||||||
|
*/
|
||||||
|
node:
|
||||||
|
{
|
||||||
|
type: Object
|
||||||
|
,get: function ()
|
||||||
|
{
|
||||||
|
this.renderBase ();
|
||||||
|
return this._node;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* CSS classes to be appendend to the node classes.
|
||||||
|
*/
|
||||||
|
class:
|
||||||
|
{
|
||||||
|
type: String
|
||||||
|
,set: function (x)
|
||||||
|
{
|
||||||
|
this._cssClass = x;
|
||||||
|
this._refreshClass ();
|
||||||
|
}
|
||||||
|
,get: function ()
|
||||||
|
{
|
||||||
|
return this._node.className;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* The HTML id of the element.
|
||||||
|
*/
|
||||||
|
htmlId:
|
||||||
|
{
|
||||||
|
type: String
|
||||||
|
,set: function (x)
|
||||||
|
{
|
||||||
|
this._htmlId = x;
|
||||||
|
|
||||||
|
if (this._node)
|
||||||
|
this._node.id = x;
|
||||||
|
}
|
||||||
|
,get: function ()
|
||||||
|
{
|
||||||
|
return this._htmlId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
,_node: null
|
||||||
|
,scope: null
|
||||||
|
|
||||||
|
,initialize: function (props)
|
||||||
|
{
|
||||||
|
this.doc = document;
|
||||||
|
this.renderBase ();
|
||||||
|
this.parent (props);
|
||||||
|
}
|
||||||
|
|
||||||
|
,on: function (id, callback, instance)
|
||||||
|
{
|
||||||
|
if (nativeEvents[id])
|
||||||
|
this.node.addEventListener (id,
|
||||||
|
callback.bind (instance, this));
|
||||||
|
else
|
||||||
|
this.parent (id, callback, instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
,createRoot: function (tagName)
|
||||||
|
{
|
||||||
|
this._node = this.createElement (tagName);
|
||||||
|
|
||||||
|
if (this.htmlId)
|
||||||
|
this._node.id = this.htmlId;
|
||||||
|
|
||||||
|
return this._node;
|
||||||
|
}
|
||||||
|
|
||||||
|
,renderBase: function ()
|
||||||
|
{
|
||||||
|
if (this._node)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.render ();
|
||||||
|
this._refreshClass ();
|
||||||
|
}
|
||||||
|
|
||||||
|
,_refreshClass: function ()
|
||||||
|
{
|
||||||
|
if (this._node && this._cssClass)
|
||||||
|
this._node.className = this._cssClass +' '+ this._node.className;
|
||||||
|
}
|
||||||
|
|
||||||
|
,remove: function ()
|
||||||
|
{
|
||||||
|
Vn.Node.remove (this._node);
|
||||||
|
}
|
||||||
|
|
||||||
|
,loadTemplateFromFile: function (path)
|
||||||
|
{
|
||||||
|
var builder = new Vn.Builder ();
|
||||||
|
builder.compileFile (path);
|
||||||
|
this.loadScope (builder);
|
||||||
|
}
|
||||||
|
|
||||||
|
,loadTemplateFromString: function (xmlString)
|
||||||
|
{
|
||||||
|
var builder = new Vn.Builder ();
|
||||||
|
builder.compileString (xmlString);
|
||||||
|
this.loadScope (builder);
|
||||||
|
}
|
||||||
|
|
||||||
|
,loadScope: function (builder, parentScope, extraObjects)
|
||||||
|
{
|
||||||
|
var scope = builder.load (this.doc, this, parentScope, extraObjects);
|
||||||
|
this.scope = scope;
|
||||||
|
this._node = this.$('main');
|
||||||
|
scope.link ();
|
||||||
|
return scope;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets an object from the scope associated to this component.
|
||||||
|
*
|
||||||
|
* @param {String} id The object identifier
|
||||||
|
* @return {Object} The object, or %null if not found
|
||||||
|
*/
|
||||||
|
,$: function (id)
|
||||||
|
{
|
||||||
|
if (this.scope)
|
||||||
|
return this.scope.$(id);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
,_destroy: function ()
|
||||||
|
{
|
||||||
|
if (this.builder)
|
||||||
|
this.builder.unref ();
|
||||||
|
|
||||||
|
this.parent ();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
|
@ -78,7 +78,10 @@ module.exports = new Class
|
||||||
,rowChanged: function ()
|
,rowChanged: function ()
|
||||||
{
|
{
|
||||||
this._rowLock = true;
|
this._rowLock = true;
|
||||||
this.params = this._model.getObject (this._row);
|
|
||||||
|
var row = this._model.getObject (this._row);
|
||||||
|
this.params = row != null ? row : {};
|
||||||
|
|
||||||
this._rowLock = false;
|
this._rowLock = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
|
|
||||||
|
var VnObject = require ('./object');
|
||||||
|
|
||||||
module.exports = new Class
|
module.exports = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Object
|
Extends: VnObject
|
||||||
|
|
||||||
,doc: null
|
,doc: null
|
||||||
|
|
||||||
|
@ -23,4 +25,3 @@ module.exports = new Class
|
||||||
|
|
||||||
,render: function () {}
|
,render: function () {}
|
||||||
});
|
});
|
||||||
|
|
|
@ -71,7 +71,7 @@ module.exports = new Class
|
||||||
* Called from @Vn.Builder when it finds a custom tag as a child of the
|
* Called from @Vn.Builder when it finds a custom tag as a child of the
|
||||||
* element.
|
* element.
|
||||||
*
|
*
|
||||||
* @param {Vn.Builder} builder The builder instance
|
* @param {Vn.Scope} scope The scope instance
|
||||||
* @param {Node} node The custom tag child nodes
|
* @param {Node} node The custom tag child nodes
|
||||||
*/
|
*/
|
||||||
,loadXml: function () {}
|
,loadXml: function () {}
|
||||||
|
|
|
@ -28,7 +28,9 @@ Vn = module.exports = {
|
||||||
,Iterator : require ('./iterator')
|
,Iterator : require ('./iterator')
|
||||||
,Form : require ('./form')
|
,Form : require ('./form')
|
||||||
,Node : require ('./node')
|
,Node : require ('./node')
|
||||||
|
,NodeBuilder : require ('./node-builder')
|
||||||
,Builder : require ('./builder')
|
,Builder : require ('./builder')
|
||||||
|
,Component : require ('./component')
|
||||||
,JsonException : require ('./json-exception')
|
,JsonException : require ('./json-exception')
|
||||||
,JsonConnection : require ('./json-connection')
|
,JsonConnection : require ('./json-connection')
|
||||||
|
|
||||||
|
|
|
@ -72,4 +72,3 @@ class App extends \Vn\Lib\App
|
||||||
return parent::getConfigFile ();
|
return parent::getConfigFile ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,8 @@ class DbSessionHandler implements \SessionHandlerInterface
|
||||||
|
|
||||||
function read ($sessionId)
|
function read ($sessionId)
|
||||||
{
|
{
|
||||||
$this->db->query ('DO GET_LOCK(#, 10)', [$sessionId]);
|
|
||||||
$sessionData = $this->db->getValue (
|
$sessionData = $this->db->getValue (
|
||||||
'SELECT data FROM userSession WHERE ssid = # FOR UPDATE', [$sessionId]);
|
'SELECT data FROM userSession WHERE ssid = #', [$sessionId]);
|
||||||
return isset ($sessionData) ? $sessionData : '';
|
return isset ($sessionData) ? $sessionData : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +36,6 @@ class DbSessionHandler implements \SessionHandlerInterface
|
||||||
ON DUPLICATE KEY UPDATE
|
ON DUPLICATE KEY UPDATE
|
||||||
data = VALUES(data), lastUpdate = VALUES(lastUpdate)',
|
data = VALUES(data), lastUpdate = VALUES(lastUpdate)',
|
||||||
[$sessionId, $sessionData]);
|
[$sessionId, $sessionData]);
|
||||||
$this->db->query ('DO RELEASE_LOCK(#)', [$sessionId]);
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -286,7 +286,7 @@ abstract class Service
|
||||||
$version = $package->version;
|
$version = $package->version;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
$version = "0.0.0";
|
$version = '0.0.0';
|
||||||
|
|
||||||
apc_store ("$appName.version", $version);
|
apc_store ("$appName.version", $version);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue