rutile
Version:
Factory automation for Mobile Enterprise.
147 lines (109 loc) • 3.2 kB
JavaScript
// type : extkey
var self = exports;
var changeHandler = function(){};
exports.putEventListener = function(event,callback){
if( event === 'change' ){ changeHandler = callback; }
};
// * * * * * * * * * * * * * * * * * * * * * * *
var listeners = [];
exports.listen = function(eventName,callback){
listeners.push({ name:eventName,callback:callback });
};
// * * * * * * * * * * * * * * * * * * * * * * *
var args = arguments[0] || {};
var segment = args.segment;
var entity = args.entity;
var orig_color = $.SelectedItemName.color;
var curr_color = $.SelectedItemName.color;
var edited_color = '#d10404';
var orig_model; // also used as a initialization checker
var prev_model;
var curr_model;
var editable = true;
var extkeyHandler = function(){};
exports.setExtkeyHandler = function(handler){
extkeyHandler = handler;
};
function openExtkey(e){
if( !editable ){ return; }
extkeyHandler(e);
}
// * you should tell me your featuring field
exports.listenEntitySelect = function(picked_model,featureField){
if( !orig_model ){
orig_model = picked_model;
prev_model = picked_model;
curr_model = picked_model;
}
if( picked_model.primaryKey != curr_model.primaryKey ){
prev_model = curr_model;
curr_model = picked_model;
curr_color = edited_color;
}
if( curr_model.primaryKey == orig_model.primaryKey ){
curr_color = orig_color;
}
$.SelectedItemName.text = curr_model.entity[featureField] + " ("+curr_model.primaryKey+")";
$.SelectedItemName.color = curr_color;
for( var i=0; i<listeners.length; i++ ){
var listener = listeners[i];
if( listener.name == "entitySelected" ){
listener.callback(picked_model);
}
}
changeHandler(curr_model);
};
// * * * * * * * * * * * * * * * * * * * * * * *
//
// TODO: can I run without expand:2?
// * requires expand level more than 2
//
// * you should tell me your featuring field
exports.setValue = function(new_model,featureField){
if( !new_model ){
new_model = {entity:{}};
}
if( !orig_model ){
orig_model = new_model;
prev_model = new_model;
curr_model = new_model;
}
prev_model = curr_model;
curr_model = new_model;
if( !curr_model.entity[featureField] ){
showHintTexts();
}else{
$.SelectedItemName.text = curr_model.entity[featureField] + " ("+curr_model.primaryKey+")";
}
};
exports.getValue = function(){
return curr_model.primaryKey;
};
exports.getModel = function(){
return curr_model;
};
// hintText
var hintTexts = [];
var showHintTexts = function(){
$.SelectedItemName.text = hintTexts.join(' ');
$.SelectedItemName.color = '#aaa';
};
var hideHintTexts = function(){
$.SelectedItemName.hintText = '';
};
exports.setHintTexts = function(texts){
hintTexts = texts;
};
// enable and disable editing
exports.enableEditing = function(){
editable = true;
$.ClearButton.getView().visible = true;
};
exports.disableEditing = function(){
editable = false;
$.ClearButton.getView().visible = false;
};
// clear field
exports.setClearButtonHandler = function(handler){
$.ClearButton.setButtonHandler(handler);
};